diff options
-rw-r--r-- | gnu/build/linux-boot.scm | 8 | ||||
-rw-r--r-- | gnu/packages/admin.scm | 6 | ||||
-rw-r--r-- | gnu/packages/benchmark.scm | 4 | ||||
-rw-r--r-- | gnu/packages/commencement.scm | 4 | ||||
-rw-r--r-- | gnu/packages/debian.scm | 4 | ||||
-rw-r--r-- | gnu/packages/disk.scm | 12 | ||||
-rw-r--r-- | gnu/packages/dns.scm | 4 | ||||
-rw-r--r-- | gnu/packages/golang.scm | 13 | ||||
-rw-r--r-- | gnu/packages/linux.scm | 22 | ||||
-rw-r--r-- | gnu/packages/mail.scm | 4 | ||||
-rw-r--r-- | gnu/packages/python-xyz.scm | 35 | ||||
-rw-r--r-- | gnu/packages/shells.scm | 4 | ||||
-rw-r--r-- | gnu/packages/ssh.scm | 4 | ||||
-rw-r--r-- | gnu/packages/tex.scm | 3 | ||||
-rw-r--r-- | gnu/packages/video.scm | 74 | ||||
-rw-r--r-- | gnu/packages/web.scm | 34 | ||||
-rw-r--r-- | gnu/services/rsync.scm | 1 | ||||
-rw-r--r-- | gnu/services/vnc.scm | 2 | ||||
-rw-r--r-- | guix/scripts/locate.scm | 24 |
19 files changed, 216 insertions, 46 deletions
diff --git a/gnu/build/linux-boot.scm b/gnu/build/linux-boot.scm index 84726363c0..548e28a1c9 100644 --- a/gnu/build/linux-boot.scm +++ b/gnu/build/linux-boot.scm @@ -611,10 +611,6 @@ upon error." the root file system...\n" root-delay) (sleep root-delay))) - ;; Prepare the real root file system under /root. - (unless (file-exists? "/root") - (mkdir "/root")) - (when (procedure? pre-mount) ;; Do whatever actions are needed before mounting the root file ;; system--e.g., installing device mappings. Error out when the @@ -631,6 +627,10 @@ the root file system...\n" root-delay) (false-if-exception ; failure is not fatal (resume-if-hibernated (find-long-option "resume" args)))) + ;; Prepare the real root file system under /root. + (unless (file-exists? "/root") + (mkdir "/root")) + (setenv "EXT2FS_NO_MTAB_OK" "1") ;; Mount the root file system. diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 17225863d7..60bf87bf68 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -6006,7 +6006,7 @@ Discover other RouterOS devices or @command{mactelnetd} hosts. (define-public bfs (package (name "bfs") - (version "3.0.2") + (version "3.0.4") (source (origin (method git-fetch) (uri (git-reference @@ -6015,7 +6015,7 @@ Discover other RouterOS devices or @command{mactelnetd} hosts. (file-name (git-file-name name version)) (sha256 (base32 - "055qn2bhnyk9k96w8aviz7v4wip9hwsv7ak1m3yygm1x3fhdyhyz")))) + "0n2y9m81278j85m8vk242m9nsxdcw62rxsar4hzwszs6p5cjz5ny")))) (build-system gnu-build-system) (arguments (list #:make-flags #~(list (string-append "CC=" @@ -6035,6 +6035,6 @@ Discover other RouterOS devices or @command{mactelnetd} hosts. (description "Bfs is a variant of the UNIX @command{find} command that operates breadth-first rather than depth-first. It is otherwise compatible with many -versions of command{find}, including POSIX, GNU, and *BSD find.") +versions of @command{find}, including POSIX, GNU, and *BSD find.") (home-page "https://tavianator.com/projects/bfs.html") (license license:bsd-0))) diff --git a/gnu/packages/benchmark.scm b/gnu/packages/benchmark.scm index 08fece6e91..2b3ab0c112 100644 --- a/gnu/packages/benchmark.scm +++ b/gnu/packages/benchmark.scm @@ -79,14 +79,14 @@ (define-public fio (package (name "fio") - (version "3.35") + (version "3.36") (source (origin (method url-fetch) (uri (string-append "https://brick.kernel.dk/snaps/" "fio-" version ".tar.bz2")) (sha256 (base32 - "0dvxv771hzb72zs995wsq3i1kryv8vfzkndd79i0w2v7ssxnldb3")))) + "0ppg2rn57diz2mvbbps4cjxd903zn380hdkdsrbzal4l513w32h0")))) (build-system gnu-build-system) (arguments (list #:modules diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index 03fecd6d9b..9124f0e2e0 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -2922,7 +2922,7 @@ memoized as a function of '%current-system'." ;; store path has no dependencies. Actually, the really-final libc is ;; built just below; the only difference is that this one uses the ;; bootstrap Bash. - (let ((libc (libc-for-target))) + (let ((libc (libc-for-target (%current-system)))) (package (inherit libc) (name "glibc-intermediate") @@ -3096,7 +3096,7 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" (define/system-dependent glibc-final ;; The final glibc, which embeds the statically-linked Bash built above. ;; Use 'package/inherit' so we get the 'replacement' of 'glibc', if any. - (let ((libc (libc-for-target))) + (let ((libc (libc-for-target (%current-system)))) (package/inherit libc (name "glibc") (source (bootstrap-origin (package-source libc))) diff --git a/gnu/packages/debian.scm b/gnu/packages/debian.scm index 6e40096199..728f2cc845 100644 --- a/gnu/packages/debian.scm +++ b/gnu/packages/debian.scm @@ -341,7 +341,7 @@ distributions such as Debian and Trisquel.") (define-public dpkg (package (name "dpkg") - (version "1.22.0") + (version "1.22.1") (source (origin (method git-fetch) @@ -350,7 +350,7 @@ distributions such as Debian and Trisquel.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1p7f2mgrn2iy0xfysxfq4pjbbhbhb2rp649bsik0x25jrck4if83")))) + (base32 "1s6dzcczmpkr9pla25idymfdjz10gck0kphpp0vqbp92vmfskipg")))) (build-system gnu-build-system) (arguments (list #:modules diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm index 113455eee5..754c70897c 100644 --- a/gnu/packages/disk.scm +++ b/gnu/packages/disk.scm @@ -1651,7 +1651,7 @@ gone and to help you to clean it up.") (define-public nwipe (package (name "nwipe") - (version "0.34") + (version "0.35") (source (origin (method git-fetch) @@ -1660,7 +1660,7 @@ gone and to help you to clean it up.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1frwjgz4mpzwr9sigr693crmxsjl08wcikh6ik7dm0x40l1kqqpd")))) + (base32 "1bj20y52qzz2ja56yf1pxqjg3lsda35c2k5hcj3lqm69jpsla2wq")))) (build-system gnu-build-system) (arguments (list #:phases @@ -1674,7 +1674,13 @@ gone and to help you to clean it up.") "sbin/hdparm" "sbin/smartctl"))))))))) (inputs - (list bash-minimal dmidecode hdparm ncurses parted smartmontools)) + (list bash-minimal + dmidecode + hdparm + libconfig + ncurses + parted + smartmontools)) (native-inputs (list autoconf automake libtool pkg-config)) (home-page "https://github.com/martijnvanbrummelen/nwipe") diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm index 33715d6b19..73a2fac54b 100644 --- a/gnu/packages/dns.scm +++ b/gnu/packages/dns.scm @@ -844,7 +844,7 @@ Extensions} (DNSSEC).") (define-public knot (package (name "knot") - (version "3.3.1") + (version "3.3.2") (source (origin (method git-fetch) @@ -853,7 +853,7 @@ Extensions} (DNSSEC).") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0l29809wcpx4q1d87539799c4mai0vvfkzkbmrba186mn47p3lsd")) + (base32 "17zdpk6wf0cf90dp4cls35si8ywjsqjrmgssw2gmb1y0zfyp19vq")) (modules '((guix build utils))) (snippet '(begin diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index ead9622d8c..5e9211026b 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -5617,7 +5617,8 @@ values.") (patches (search-patches "go-gopkg-in-yaml-v3-32bit.patch")))) (build-system go-build-system) (arguments - '(#:import-path "gopkg.in/yaml.v3")) + `(#:tests? ,(not (target-ppc32?)) ; Test killed with quit: ran too long (11m0s). + #:import-path "gopkg.in/yaml.v3")) (native-inputs (list go-gopkg-in-check-v1)) (home-page "https://gopkg.in/yaml.v3") @@ -8324,7 +8325,15 @@ colorized or SGR defined output to the standard output.") (build-system go-build-system) (arguments '(#:import-path "github.com/google/go-cmp/cmp" - #:unpack-path "github.com/google/go-cmp")) + #:unpack-path "github.com/google/go-cmp" + #:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key inputs #:allow-other-keys #:rest args) + (unless + ;; The tests fail when run with gccgo. + (false-if-exception (search-input-file inputs "/bin/gccgo")) + (apply (assoc-ref %standard-phases 'check) args))))))) (synopsis "Determine equality of values in Go") (description "This package is intended to be a more powerful and safer diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 2c2164d83c..be5a6b0008 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -1125,6 +1125,12 @@ Linux kernel. It has been modified to remove all non-free binary blobs.") "aarch64-linux" "powerpc64le-linux" "riscv64-linux") #:configuration-file kernel-config)) +(define-public linux-libre-version linux-libre-6.6-version) +(define-public linux-libre-gnu-revision linux-libre-6.6-gnu-revision) +(define-public linux-libre-pristine-source linux-libre-6.6-pristine-source) +(define-public linux-libre-source linux-libre-6.6-source) +(define-public linux-libre linux-libre-6.6) + (define-public linux-libre-6.5 (make-linux-libre* linux-libre-6.5-version linux-libre-6.5-gnu-revision @@ -1133,12 +1139,6 @@ Linux kernel. It has been modified to remove all non-free binary blobs.") "aarch64-linux" "powerpc64le-linux" "riscv64-linux") #:configuration-file kernel-config)) -(define-public linux-libre-version linux-libre-6.5-version) -(define-public linux-libre-gnu-revision linux-libre-6.5-gnu-revision) -(define-public linux-libre-pristine-source linux-libre-6.5-pristine-source) -(define-public linux-libre-source linux-libre-6.5-source) -(define-public linux-libre linux-libre-6.5) - (define-public linux-libre-6.1 (make-linux-libre* linux-libre-6.1-version linux-libre-6.1-gnu-revision @@ -1370,9 +1370,9 @@ Linux kernel. It has been modified to remove all non-free binary blobs.") (define-public linux-libre-with-bpf (let ((base-linux-libre (make-linux-libre* - linux-libre-6.5-version - linux-libre-6.5-gnu-revision - linux-libre-6.5-source + linux-libre-6.6-version + linux-libre-6.6-gnu-revision + linux-libre-6.6-source '("x86_64-linux" "i686-linux" "armhf-linux" "aarch64-linux" "powerpc64le-linux" "riscv64-linux") #:extra-version "bpf" @@ -9841,7 +9841,7 @@ kernel side implementation.") (define-public erofs-utils (package (name "erofs-utils") - (version "1.7") + (version "1.7.1") (source (origin (method git-fetch) @@ -9850,7 +9850,7 @@ kernel side implementation.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0bi8n1kb263v1gvis21pa9dxsf3p96d1nasm21icmv3rd9g2xh6p")))) + (base32 "1mvybd06cswxj0nzk9ph1pkb9mrs8lvcbn6cgsp7z3wl6jai9d6d")))) (build-system gnu-build-system) (inputs (list lz4 diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index b49b045197..1676acf2f9 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -3192,14 +3192,14 @@ from the Cyrus IMAP project.") (define-public opensmtpd (package (name "opensmtpd") - (version "7.4.0p0") + (version "7.4.0p1") (source (origin (method url-fetch) (uri (string-append "https://www.opensmtpd.org/archives/" "opensmtpd-" version ".tar.gz")) (sha256 - (base32 "0x731hi7i01mxaz07p1l5q3gwmyl422h404yc61ya4aa8g1wr0f1")))) + (base32 "1dbhvf73z9qi9pzj4h58bgnzsafiwpmy7n17rba83q8rjkna50ly")))) (build-system gnu-build-system) (inputs ;; OpenSMTPd bundled (a subset of) libasr and libtls, which we use. See diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 5a017b76d0..746ecccc5a 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -145,6 +145,7 @@ ;;; Copyright © c4droid <c4droid@foxmail.com> ;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2023 Attila Lendvai <attila@lendvai.name> +;;; Copyright © 2023 Troy Figiel <troy@troyfigiel.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -2955,6 +2956,40 @@ abstractions to different hardware devices, and a suite of utilities for sending and receiving messages on a CAN bus.") (license license:lgpl3+))) +(define-public python-canmatrix + (package + (name "python-canmatrix") + (version "1.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "canmatrix" version)) + (sha256 + (base32 "046dzmggfm6h0fvfvwrblvih0blhc70ma0pqxzry3cphc08jvsrg")) + ;; The test suite uder ./test is a legacy test suite. The new test + ;; suite is defined under src/canmatrix/tests. + (modules '((guix build utils))) + (snippet '(delete-file-recursively "test")))) + (build-system python-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "pytest"))))))) + (propagated-inputs (list python-attrs python-click python-future + python-six)) + (native-inputs (list python-lxml python-pytest python-xlrd python-xlwt)) + (home-page "https://github.com/ebroecker/canmatrix") + (synopsis "@acronym{CAN, Controller Area Network} matrices in Python") + (description + "This package implements a @acronym{CAN, Controller Area Network} matrix +object in Python which describes the CAN-communication and its needed objects +such as board units, frames, signals, and values. It also includes two +command-line tools (@command{canconvert} and @command{cancompare}) for +converting and comparing CAN databases.") + (license license:bsd-2))) + (define-public python-canopen (package (name "python-canopen") diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm index 9e6bf6693f..27f4ef0dca 100644 --- a/gnu/packages/shells.scm +++ b/gnu/packages/shells.scm @@ -789,7 +789,7 @@ The OpenBSD Korn Shell is a cleaned up and enhanced ksh.") (define-public loksh (package (name "loksh") - (version "7.3") + (version "7.4") (source (origin (method git-fetch) (uri (git-reference @@ -801,7 +801,7 @@ The OpenBSD Korn Shell is a cleaned up and enhanced ksh.") (file-name (git-file-name name version)) (sha256 (base32 - "1miydvb79wagckchinp189l8i81f08lqajg5jngn77m4x4gwjf3n")))) + "0arbncmgs3wzkwlqzp5za8rwh9px2r5mn3i979rabc4cms1bs0l1")))) (build-system meson-build-system) (inputs (list ncurses)) (native-inputs (list pkg-config)) diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm index 2434a563c2..47089b197d 100644 --- a/gnu/packages/ssh.scm +++ b/gnu/packages/ssh.scm @@ -198,7 +198,7 @@ a server that supports the SSH-2 protocol.") (define-public openssh (package (name "openssh") - (version "9.4p1") + (version "9.5p1") (source (origin (method url-fetch) @@ -206,7 +206,7 @@ a server that supports the SSH-2 protocol.") "openssh-" version ".tar.gz")) (patches (search-patches "openssh-trust-guix-store-directory.patch")) (sha256 - (base32 "11bahrik5qi337m954g5479f63cxnxdch076ng7668fvi28gs21n")))) + (base32 "0sq8hqk6f0x6djgvqawjbwwxpwd8r1nzjahqfl7m9yx7kfvyf9ph")))) (build-system gnu-build-system) (arguments (list diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm index b5da339353..0d76710daa 100644 --- a/gnu/packages/tex.scm +++ b/gnu/packages/tex.scm @@ -742,7 +742,8 @@ and should be preferred to it whenever a package would otherwise depend on (("srcdir/tests/pprecA-0.ind pprecA-0.ind1 \\|\\| exit 1") "srcdir/tests/pprecA-0.ind pprecA-0.ind1 || exit 77"))))) '()) - #$@(if (target-arm32?) + #$@(if (or (target-arm32?) + (target-ppc32?)) `((add-after 'unpack 'skip-faulty-test (lambda _ ;; Skip this faulty test on armhf-linux: diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index e9b2a17851..2822cdf4bf 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -117,6 +117,7 @@ #:use-module (gnu packages base) #:use-module (gnu packages bash) #:use-module (gnu packages bison) + #:use-module (gnu packages bittorrent) #:use-module (gnu packages boost) #:use-module (gnu packages cdrom) #:use-module (gnu packages check) @@ -196,6 +197,7 @@ #:use-module (gnu packages sqlite) #:use-module (gnu packages ssh) #:use-module (gnu packages swig) + #:use-module (gnu packages terminals) #:use-module (gnu packages texinfo) #:use-module (gnu packages textutils) #:use-module (gnu packages tls) @@ -211,6 +213,78 @@ #:use-module (gnu packages xml) #:use-module (gnu packages xorg)) +(define-public ani-cli + (package + (name "ani-cli") + (version "4.6") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pystardust/ani-cli") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1ni9pzjb5qh87iz7c8252bx79qadr1qx6jnkqvvjcqrchh7q473a")))) + (build-system gnu-build-system) + (arguments + (list + #:tests? #f ;no test suite + #:phases + #~(modify-phases %standard-phases + (delete 'configure) ;nothing to configure + (delete 'build) ;nothing to build + (replace 'install + (lambda _ + (install-file "ani-cli" (string-append #$output "/bin")) + (install-file "ani-cli.1" + (string-append #$output "/share/man/man1")))) + (add-after 'install 'wrap + (lambda* (#:key inputs #:allow-other-keys) + (define (bin command) + (dirname (search-input-file + inputs (string-append "bin/" command)))) + (wrap-program (string-append #$output "/bin/ani-cli") + `("PATH" ":" prefix + ,(map bin (list "aria2c" + "curl" + "ffmpeg" + "fzf" + "grep" + "mpv" + "sed" + "tput" + "uname" + "yt-dlp"))))))))) + (inputs (list aria2 + bash-minimal + coreutils + curl + ffmpeg + fzf + grep + mpv + ncurses + sed + yt-dlp)) + (native-search-paths + ;; This was copied from the curl package. + (list (search-path-specification + (variable "CURL_CA_BUNDLE") + (file-type 'regular) + (separator #f) ;single entry + (files '("etc/ssl/certs/ca-certificates.crt"))))) + (home-page "https://github.com/pystardust/ani-cli") + (synopsis "Browse and watch anime from the command line") + (description + "ani-cli is a @acronym{CLI, command-line interface} to browse and watch +anime by streaming videos from @uref{https://allanime.to,All Anime}. + +There are different features such as episode browsing, history tracking, +streaming at multiple resolutions, and much more, depending on what programs the +user has installed.") + (license license:gpl3+))) + (define-public transcode (package (name "transcode") diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index e4a99429cd..4a4252138b 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -186,6 +186,7 @@ #:use-module (gnu packages qt) #:use-module (gnu packages re2c) #:use-module (gnu packages readline) + #:use-module (gnu packages sdl) #:use-module (gnu packages search) #:use-module (gnu packages serialization) #:use-module (gnu packages skribilo) @@ -5715,6 +5716,39 @@ project.") written in C. It is developed as part of the NetSurf project.") (license license:expat))) +(define-public libnsfb + (package + (name "libnsfb") + (version "0.2.2") + (source + (origin + (method url-fetch) + (uri (string-append "https://download.netsurf-browser.org/libs/releases/" + name "-" version "-src.tar.gz")) + (sha256 + (base32 "16m3kv8x8mlic4z73h2s3z8lqmyp0z8i30x95lzr1pslxfinqi5y")))) + (build-system gnu-build-system) + (native-inputs + (list netsurf-buildsystem pkg-config)) + (inputs + ;; SDL is needed to accept any (keyboard, mouse) input. Don't propagate it + ;; to satisfy libnsfb.pc: netsurf is the only user and not worth the pain. + (list sdl)) + (arguments netsurf-buildsystem-arguments) + (home-page "https://www.netsurf-browser.org/projects/libnsfb/") + (synopsis "Framebuffer display abstraction library") + (description + "LibNSFB is a framebuffer abstraction library, written in C. It is +developed as part of the NetSurf project and is intended to be suitable for use +in other projects too. + +The overall idea of the library is to provide a generic abstraction to a linear +section of memory which corresponds to a visible array of pixel elements on a +display device. Different colour depths are supported and the library provides +routines for tasks such as drawing onto the framebuffer and rectangle copy +operations.") + (license license:expat))) + (define-public libnsgif (package (name "libnsgif") diff --git a/gnu/services/rsync.scm b/gnu/services/rsync.scm index 42e4d0247e..e85dd50934 100644 --- a/gnu/services/rsync.scm +++ b/gnu/services/rsync.scm @@ -291,6 +291,7 @@ please use 'modules' instead~%"))) (make-socket-address AF_INET6 IN6ADDR_ANY #$port-number))) '())) + #:service-name-stem "rsync" #:user #$user #:group #$group) (make-forkexec-constructor #$rsync-command diff --git a/gnu/services/vnc.scm b/gnu/services/vnc.scm index f90bd7258f..8b9ad0b179 100644 --- a/gnu/services/vnc.scm +++ b/gnu/services/vnc.scm @@ -149,7 +149,7 @@ CONFIG, a <xvnc-configuration> object." (xvnc display-number geometry depth port ipv4? ipv6? password-file xdmcp? inetd? frame-rate security-types localhost? log-level extra-options) #~(list #$(file-append xvnc "/bin/Xvnc") - #$(format #f ":~a" display-number) + #$@(if inetd? '() (list (format #f ":~a" display-number))) "-geometry" #$geometry "-depth" #$(number->string depth) #$@(if inetd? diff --git a/guix/scripts/locate.scm b/guix/scripts/locate.scm index 92af3509bf..963ff2bf57 100644 --- a/guix/scripts/locate.scm +++ b/guix/scripts/locate.scm @@ -114,14 +114,24 @@ alter table Packages add column output text; "))) +;; XXX: missing in guile-sqlite3@0.1.3 +(define SQLITE_BUSY 5) + (define (call-with-database file proc) - (let ((db (sqlite-open file))) - (dynamic-wind - (lambda () #t) - (lambda () - (ensure-latest-database-schema db) - (proc db)) - (lambda () (sqlite-close db))))) + (catch 'sqlite-error + (lambda () + (let ((db (sqlite-open file))) + (dynamic-wind + (lambda () #t) + (lambda () + (ensure-latest-database-schema db) + (proc db)) + (lambda () (sqlite-close db))))) + (lambda (key who code errmsg) + (if (= code SQLITE_BUSY) + (leave (G_ "~a: database is locked by another process~%") + file) + (throw key who code errmsg))))) (define (ensure-latest-database-schema db) "Ensure DB follows the latest known version of the schema." |