diff options
51 files changed, 1660 insertions, 839 deletions
diff --git a/.dir-locals.el b/.dir-locals.el index c63262848c..d18e6ba760 100644 --- a/.dir-locals.el +++ b/.dir-locals.el @@ -43,7 +43,7 @@ (eval . (put 'eval-when 'scheme-indent-function 1)) (eval . (put 'call-with-prompt 'scheme-indent-function 1)) (eval . (put 'test-assert 'scheme-indent-function 1)) - (eval . (put 'test-assertm 'scheme-indent-function 2)) + (eval . (put 'test-assertm 'scheme-indent-function 1)) (eval . (put 'test-equalm 'scheme-indent-function 1)) (eval . (put 'test-equal 'scheme-indent-function 1)) (eval . (put 'test-eq 'scheme-indent-function 1)) diff --git a/Makefile.am b/Makefile.am index 310a231259..fb11e94d3f 100644 --- a/Makefile.am +++ b/Makefile.am @@ -184,6 +184,7 @@ MODULES = \ guix/build-system/texlive.scm \ guix/build-system/tree-sitter.scm \ guix/build-system/trivial.scm \ + guix/build-system/zig.scm \ guix/ftp-client.scm \ guix/http-client.scm \ guix/gnupg.scm \ @@ -270,6 +271,7 @@ MODULES = \ guix/build/graft.scm \ guix/build/bournish.scm \ guix/build/qt-utils.scm \ + guix/build/zig-build-system.scm \ guix/build/make-bootstrap.scm \ guix/search-paths.scm \ guix/packages.scm \ diff --git a/doc/guix.texi b/doc/guix.texi index 6b6d166290..60d3ab3336 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -8533,9 +8533,81 @@ support of the Mercurial version control system. Return a fixed-output derivation that fetches @var{ref}, a @code{<hg-reference>} object. The output is expected to have recursive hash @var{hash} of type @var{hash-algo} (a symbol). Use @var{name} as -the file name, or a generic name if @code{#false}. +the file name, or a generic name if @code{#f}. +@end deffn + +@deftp {Data Type} hg-reference +This data type represents a Mercurial reference for @code{hg-fetch} to +retrieve. + +@table @asis +@item @code{url} +The URL of the Mercurial repository to clone. + +@item @code{revision} +This string denotes revision to fetch specified as a number. +@end table +@end deftp + +For Subversion repositories, the module @code{(guix svn-download)} +defines the @code{svn-fetch} origin method and @code{svn-reference} data +type for support of the Subversion version control system. + +@deffn {Procedure} svn-fetch ref hash-algo hash [name] +Return a fixed-output derivation that fetches @var{ref}, a +@code{<svn-reference>} object. The output is expected to have recursive +hash @var{hash} of type @var{hash-algo} (a symbol). Use @var{name} as +the file name, or a generic name if @code{#f}. @end deffn +@deftp {Data Type} svn-reference +This data type represents a Subversion reference for @code{svn-fetch} to +retrieve. + +@table @asis +@item @code{url} +The URL of the Subversion repository to clone. + +@item @code{revision} +This string denotes revision to fetch specified as a number. + +@item @code{recursive?} (default: @code{#f}) +This Boolean indicates whether to recursively fetch Subversion +``externals''. + +@item @code{user-name} (default: @code{#f}) +The name of an account that has read-access to the repository, if the +repository isn't public. + +@item @code{password} (default: @code{#f}) +Password to access the Subversion repository, if required. +@end table +@end deftp + +For Bazaar repositories, the module @code{(guix bzr-download)} +defines the @code{bzr-fetch} origin method and @code{bzr-reference} data +type for support of the Bazaar version control system. + +@deffn {Procedure} bzr-fetch ref hash-algo hash [name] +Return a fixed-output derivation that fetches @var{ref}, a +@code{<bzr-reference>} object. The output is expected to have recursive +hash @var{hash} of type @var{hash-algo} (a symbol). Use @var{name} as +the file name, or a generic name if @code{#f}. +@end deffn + +@deftp {Data Type} bzr-reference +This data type represents a Bazaar reference for @code{bzr-fetch} to +retrieve. + +@table @asis +@item @code{url} +The URL of the Bazaar repository to clone. + +@item @code{revision} +This string denotes revision to fetch specified as a number. +@end table +@end deftp + @node Defining Package Variants @section Defining Package Variants @@ -10147,6 +10219,27 @@ Python package is used to run the script can be specified with the @code{#:python} parameter. @end defvar +@defvar zig-build-system +This variable is exported by @code{(guix build-system zig)}. It implements +the build procedures for the @uref{https://ziglang.org/, Zig} +build system (@command{zig build} command). + +Selecting this build system adds @code{zig} to the package inputs, in +addition to the packages of @code{gnu-build-system}. + +There is no @code{configure} phase because Zig packages typically do not +need to be configured. The @code{#:zig-build-flags} parameter is a list of +flags that are passed to the @code{zig} command during the build. The +@code{#:zig-test-flags} parameter is a list of flags that are passed to the +@code{zig test} command during the @code{check} phase. The default compiler +package can be overridden with the @code{#:zig} argument. + +The optional @code{zig-release-type} parameter declares the type of release. +Possible values are: @code{safe}, @code{fast}, or @code{small}. The default +value is @code{#f}, which causes the release flag to be omitted from the +@code{zig} command. That results in a @code{debug} build. +@end defvar + @defvar scons-build-system This variable is exported by @code{(guix build-system scons)}. It implements the build procedure used by the SCons software construction diff --git a/etc/snippets/yas/scheme-mode/guix-package b/etc/snippets/yas/scheme-mode/guix-package index 724a392f81..3bb6307659 100644 --- a/etc/snippets/yas/scheme-mode/guix-package +++ b/etc/snippets/yas/scheme-mode/guix-package @@ -43,8 +43,9 @@ "scons-build-system" "texlive-build-system" "trivial-build-system" - "waf-build-system")}) + "waf-build-system" + "zig-build-system")}) (home-page "$4") (synopsis "$5") (description "$6") - (license $7)))
\ No newline at end of file + (license $7))) diff --git a/gnu/build/linux-modules.scm b/gnu/build/linux-modules.scm index 3b1f512663..12cb9c4ba6 100644 --- a/gnu/build/linux-modules.scm +++ b/gnu/build/linux-modules.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2014, 2016, 2018, 2019, 2022 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2018 Danny Milosavljevic <dannym@scratchpost.org> +;;; Copyright © 2023 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -208,7 +209,7 @@ modules that can be postloaded, of the soft dependencies of module FILE." (string-take filename extension) filename))) -(define (dot-ko name compression) +(define* (dot-ko name #:optional compression) (let ((suffix (match compression ('xz ".ko.xz") ('gzip ".ko.gz") diff --git a/gnu/home/services.scm b/gnu/home/services.scm index 8d53f2f4d3..282fed74c1 100644 --- a/gnu/home/services.scm +++ b/gnu/home/services.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2021-2023 Andrew Tropin <andrew@trop.in> ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz> ;;; Copyright © 2022-2023 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2023 Carlo Zancanaro <carlo@zancanaro.id.au> ;;; ;;; This file is part of GNU Guix. ;;; @@ -412,20 +413,29 @@ activation."))) #~(begin (use-modules (guix i18n) (guix diagnostics)) + + (define (claim-first-run file) + (catch #t + (lambda () + ;; This incantation raises an error if FILE already exists, and + ;; creates it otherwise. + (close-fdes + (open-fdes file (logior O_CREAT O_EXCL O_CLOEXEC))) + #t) + (const #f))) + #$%initialize-gettext (let* ((xdg-runtime-dir (or (getenv "XDG_RUNTIME_DIR") (format #f "/run/user/~a" (getuid)))) (flag-file-path (string-append - xdg-runtime-dir "/on-first-login-executed")) - (touch (lambda (file-name) - (call-with-output-file file-name (const #t))))) + xdg-runtime-dir "/on-first-login-executed"))) ;; XDG_RUNTIME_DIR dissapears on logout, that means such trick ;; allows to launch on-first-login script on first login only ;; after complete logout/reboot. (if (file-exists? xdg-runtime-dir) - (unless (file-exists? flag-file-path) - (begin #$@gexps (touch flag-file-path))) + (when (claim-first-run flag-file-path) + (begin #$@gexps)) ;GEXPS can be empty, hence 'begin' ;; TRANSLATORS: 'on-first-login' is the name of a service and ;; shouldn't be translated (warning (G_ "XDG_RUNTIME_DIR doesn't exists, on-first-login script diff --git a/gnu/local.mk b/gnu/local.mk index 73f10b5e3c..388043d4d6 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1032,9 +1032,7 @@ dist_patch_DATA = \ %D%/packages/patches/collectd-5.11.0-noinstallvar.patch \ %D%/packages/patches/combinatorial-blas-awpm.patch \ %D%/packages/patches/combinatorial-blas-io-fix.patch \ - %D%/packages/patches/connman-CVE-2022-32292.patch \ - %D%/packages/patches/connman-CVE-2022-32293-pt1.patch \ - %D%/packages/patches/connman-CVE-2022-32293-pt2.patch \ + %D%/packages/patches/connman-add-missing-libppp-compat.h.patch \ %D%/packages/patches/containerd-create-pid-file.patch \ %D%/packages/patches/converseen-hide-updates-checks.patch \ %D%/packages/patches/converseen-hide-non-free-pointers.patch \ @@ -2028,6 +2026,7 @@ dist_patch_DATA = \ %D%/packages/patches/texinfo-5-perl-compat.patch \ %D%/packages/patches/telegram-desktop-allow-disable-libtgvoip.patch \ %D%/packages/patches/telegram-purple-adjust-test.patch \ + %D%/packages/patches/teuchos-remove-duplicate-using.patch \ %D%/packages/patches/texi2html-document-encoding.patch \ %D%/packages/patches/texi2html-i18n.patch \ %D%/packages/patches/thefuck-test-environ.patch \ @@ -2038,6 +2037,7 @@ dist_patch_DATA = \ %D%/packages/patches/tla2tools-build-xml.patch \ %D%/packages/patches/tlf-support-hamlib-4.2+.patch \ %D%/packages/patches/tofi-32bit-compat.patch \ + %D%/packages/patches/tpetra-remove-duplicate-using.patch \ %D%/packages/patches/transcode-ffmpeg.patch \ %D%/packages/patches/trytond-add-egg-modules-to-path.patch \ %D%/packages/patches/trytond-add-guix_trytond_path.patch \ @@ -2061,7 +2061,6 @@ dist_patch_DATA = \ %D%/packages/patches/ungoogled-chromium-RUNPATH.patch \ %D%/packages/patches/ungoogled-chromium-system-ffmpeg.patch \ %D%/packages/patches/ungoogled-chromium-system-nspr.patch \ - %D%/packages/patches/unison-fix-ocaml-4.08.patch \ %D%/packages/patches/unknown-horizons-python-3.8-distro.patch \ %D%/packages/patches/unzip-CVE-2014-8139.patch \ %D%/packages/patches/unzip-CVE-2014-8140.patch \ diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index a8d4269fbb..8f72b0eeae 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -1479,14 +1479,18 @@ connection alive.") (("^RELEASEVER=.*") (format #f "RELEASEVER=~a\n" ,bind-release-version))))) ,@(if (%current-target-system) - '((add-before 'configure 'fix-bind-cross-compilation + `((add-before 'configure 'fix-bind-cross-compilation (lambda _ (substitute* "configure" (("--host=\\$host") "--host=$host_alias")) ;; BIND needs a native compiler because the DHCP ;; build system uses the built 'gen' executable. - (setenv "BUILD_CC" "gcc")))) + (setenv "BUILD_CC" "gcc") + ;; powerpc-linux needs to be told to use -latomic. + ,@(if (target-ppc32?) + `((setenv "LIBS" "-latomic")) + '())))) '()) (add-before 'configure 'update-config-scripts (lambda* (#:key native-inputs inputs #:allow-other-keys) @@ -1549,7 +1553,6 @@ connection alive.") (coreutils (assoc-ref inputs "coreutils*")) (inetutils (assoc-ref inputs "inetutils")) (grep (assoc-ref inputs "grep*")) - (net-tools (assoc-ref inputs "net-tools")) (sed (assoc-ref inputs "sed*"))) (substitute* "client/scripts/linux" (("/sbin/ip") @@ -1565,16 +1568,16 @@ connection alive.") ,(map (lambda (dir) (string-append dir "/bin:" dir "/sbin")) - (list inetutils net-tools coreutils grep sed)))))))))) + (list inetutils coreutils grep sed)))))))))) (native-inputs (list config perl file)) (inputs `(("inetutils" ,inetutils) ("bash" ,bash-minimal) - ,@(if (target-hurd?) '() - `(("net-tools" ,net-tools) - ("iproute" ,iproute))) + ,@(if (target-hurd?) + '() + `(("iproute" ,iproute))) ;; isc-dhcp bundles a copy of BIND, which has proved vulnerable ;; in the past. Use a BIND-VERSION of our choosing instead. diff --git a/gnu/packages/apl.scm b/gnu/packages/apl.scm index 6a8d97848b..afe02736ad 100644 --- a/gnu/packages/apl.scm +++ b/gnu/packages/apl.scm @@ -28,8 +28,11 @@ #:use-module (guix packages) #:use-module (guix build-system gnu) #:use-module (guix build-system trivial) + #:use-module (gnu packages bash) + #:use-module (gnu packages compression) #:use-module (gnu packages fontutils) #:use-module (gnu packages gettext) + #:use-module (gnu packages java) #:use-module (gnu packages maths) #:use-module (gnu packages pcre) #:use-module (gnu packages readline) @@ -120,3 +123,86 @@ single line drawing characters, as well as the full Unicode APL range, including both uppercase and lowercase underscored alphabets, as-of-yet unused symbols, and almost all Latin-1 accented letters.") (license license:unlicense)))) + +(define-public dzaima-apl + (package + (name "dzaima-apl") + (version "0.2.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/dzaima/APL.git") + (commit (string-append "v" version)))) + (sha256 + (base32 "1hnrq0mlff6b9c9129afphcnmzd05wdyyfs905n421diyd5xa0il")) + (file-name (git-file-name name version)))) + (build-system gnu-build-system) + (inputs (list bash-minimal openjdk18)) + (native-inputs (list `(,openjdk18 "jdk") zip)) + (arguments + (list + #:imported-modules `(,@%gnu-build-system-modules + (guix build ant-build-system)) + #:modules `((guix build gnu-build-system) + ((guix build ant-build-system) #:prefix ant:) + (guix build utils) + (ice-9 ftw) + (ice-9 regex) + (srfi srfi-26)) + #:phases + `(modify-phases %standard-phases + (delete 'configure) + (replace 'build + (lambda* (#:key inputs #:allow-other-keys) + (let* ((javac (search-input-file inputs "/bin/javac")) + (jar (search-input-file inputs "/bin/jar"))) + (mkdir-p "src/build") + (apply invoke javac "-encoding" "UTF-8" "-d" "src/build" + (let ((files '())) + (ftw "src/APL/" + (lambda (filename statinfo flags) + (if (string-match ".*\\.java" filename) + (set! files (cons filename files))) + #t)) + files)) + (with-directory-excursion "src/build" + (invoke jar "--create" "--verbose" + "--file=dzaima-apl.jar" + "--main-class=APL.Main" + "APL"))))) + (delete 'check) ;; Upstream implements no tests + (replace 'install + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (share (string-append out "/share/java")) + (wrapper (string-append bin "/dzaima-apl"))) + (mkdir-p share) + (mkdir-p bin) + (install-file "src/build/dzaima-apl.jar" share) + (with-output-to-file wrapper + (lambda _ + (display (string-append + "#!" (search-input-file inputs "/bin/sh") "\n" + (search-input-file inputs "/bin/java") + " -jar " share "/dzaima-apl.jar \"$@\"")))) + (chmod wrapper #o555)))) + (add-after 'install 'reorder-jar-content + (lambda* (#:key outputs #:allow-other-keys) + (apply (assoc-ref ant:%standard-phases 'reorder-jar-content) + #:outputs (list outputs)))) + (add-after 'reorder-jar-content 'generate-jar-indices + (lambda* (#:key outputs #:allow-other-keys) + (apply (assoc-ref ant:%standard-phases 'generate-jar-indices) + #:outputs (list outputs)))) + (add-after 'generate-jar-indices 'reorder-jar-content + (lambda* (#:key outputs #:allow-other-keys) + (apply (assoc-ref ant:%standard-phases 'reorder-jar-content) + #:outputs (list outputs))))))) + (home-page "https://github.com/dzaima/APL") + (synopsis "Implementation of the APL programming language in Java") + (description + "This package provides an implementation of APL in Java, extended from +Dyalog APL.") + (license license:expat))) diff --git a/gnu/packages/connman.scm b/gnu/packages/connman.scm index 80869f890e..2696e4c751 100644 --- a/gnu/packages/connman.scm +++ b/gnu/packages/connman.scm @@ -46,17 +46,16 @@ (define-public connman (package (name "connman") - (version "1.41") + (version "1.42") (source (origin (method url-fetch) (uri (string-append "mirror://kernel.org/linux/network/connman/" "connman-" version ".tar.xz")) (sha256 - (base32 "12g5ilcnymx6i45z3359yds3cgd2dfqjyncfm92hqlymzps41yvr")) - (patches (search-patches "connman-CVE-2022-32292.patch" - "connman-CVE-2022-32293-pt1.patch" - "connman-CVE-2022-32293-pt2.patch")))) + (base32 "1an24caah35chc1c48p67ln8kpj9fr7slg5fklpfz0f0dzjbmrm3")) + (patches + (search-patches "connman-add-missing-libppp-compat.h.patch")))) (build-system gnu-build-system) (arguments (list #:configure-flags diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index bb8c25f9b5..e996b4100b 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -70,7 +70,7 @@ ;;; Copyright © 2020 Jérémy Korwin-Zmijowski <jeremy@korwin-zmijowski.fr> ;;; Copyright © 2020 Alberto Eleuterio Flores Guerrero <barbanegra+guix@posteo.mx> ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> -;;; Copyright © 2020, 2022 pinoaffe <pinoaffe@gmail.com> +;;; Copyright © 2020, 2022, 2023 pinoaffe <pinoaffe@gmail.com> ;;; Copyright © 2020, 2021, 2022 Vinicius Monego <monego@posteo.net> ;;; Copyright © 2020 Ryan Desfosses <rdes@protonmail.com> ;;; Copyright © 2020 Marcin Karpezo <sirmacik@wioo.waw.pl> @@ -212,6 +212,7 @@ #:use-module (gnu packages lesstif) #:use-module (gnu packages llvm) #:use-module (gnu packages image) + #:use-module (gnu packages image-viewers) #:use-module (gnu packages linux) #:use-module (gnu packages libevent) #:use-module (gnu packages lisp) @@ -4946,6 +4947,54 @@ written in the Go programming language.") directly inside Emacs. It requires a Google Map Static API key to function.") (license license:gpl3+)))) +(define-public emacs-nominatim + (let ((revision "0") + (commit "f814e16f8f4e2cfd633f52b29699a009ab704fbf")) + (package + (name "emacs-nominatim") + (version (git-version "0.9.3" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://codeberg.org/emacs-weirdware/nominatim") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "19nw2iy8fxy6mfd4nwrdfa23a74a1b644400xx0900fwn6ihjhpl")))) + (build-system emacs-build-system) + (home-page "https://codeberg.org/emacs-weirdware/nominatim") + (synopsis "Forward and reverse geocode using Nominatim inside Emacs") + (description "This is an Emacs library which lets you forward and +reverse geocode using Nominatim, a component of OpenStreetMap.") + (license license:gpl3+)))) + +(define-public emacs-org-street + (let ((revision "0") + (commit "17913afe01504ee0cbcf83abaca18c5c618f9b33")) + (package + (name "emacs-org-street") + (version (git-version "0.7.1" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://codeberg.org/emacs-weirdware/org-street") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1a5mnnvs4yxrw4s71z9ap65xi0fc1ki1qprif5jxn8apswjlmiw1")))) + (build-system emacs-build-system) + (propagated-inputs (list emacs-nominatim)) + (home-page "https://codeberg.org/emacs-weirdware/org-street") + (synopsis "(Reverse) Geocoding for Emacs Org files") + (description "Org Street is an extension for Org Mode for turning the +names of places into a LOCATION property containing their address. Given some +freeform text approximately describing a location, it geocodes it with +OpenStreetMap’s Nominatim API to determine a canonical location. If Nominatim +returns multiple locations, a list is displayed to choose from.") + (license license:gpl3+)))) + (define-public emacs-graphviz-dot-mode (package (name "emacs-graphviz-dot-mode") @@ -26782,6 +26831,39 @@ feeding them to package.el library.") @end itemize") (license license:gpl3+)))) +(define-public emacs-sxiv + (package + (name "emacs-sxiv") + (version "0.4.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://tildegit.org/contrapunctus/sxiv") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0gimq172pp143jckfhhyw319n3vpjvlkadm0vhypycas9i89mcg0")))) + (inputs (list sxiv)) + (propagated-inputs (list emacs-dash)) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'set-sxiv-path + (lambda* (#:key inputs #:allow-other-keys) + (emacs-substitute-sexps "sxiv.el" + (":command + (append" + `(list ,(string-append (assoc-ref inputs "sxiv") + "/bin/sxiv"))))))))) + (build-system emacs-build-system) + (home-page "https://tildegit.org/contrapunctus/sxiv") + (synopsis "Launch sxiv from Emacs with Dired integration") + (description "This package integrates sxiv into Dired. It adds a command +to start sxiv from a Dired buffer, allowing you to mark or unmark image files +in said buffer using sxiv.") + (license license:unlicense))) + (define-public emacs-mu4e-conversation (let ((commit "98110bb9c300fc9866dee8e0023355f9f79c9b96") (revision "5")) @@ -29193,7 +29275,7 @@ tabulated-lists).") (define-public emacs-eat (package (name "emacs-eat") - (version "0.9") + (version "0.9.2") (source (origin (method git-fetch) @@ -29203,7 +29285,7 @@ tabulated-lists).") (file-name (git-file-name name version)) (sha256 (base32 - "0d0p1yrd6n409m2szn3k9d82913kjzp24j11lksp85328qhav9g7")) + "1mw3iwid2iky0kwpn90bbswx8m4kkni5zdjc75clzhzzygh340sd")) (modules '((guix build utils))) (snippet #~(begin @@ -29607,26 +29689,30 @@ opposed to character-based).") (license license:gpl1+)))) (define-public emacs-disk-usage - (package - (name "emacs-disk-usage") - (version "1.3.3") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://gitlab.com/Ambrevar/emacs-disk-usage") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0hv2gsd8k5fbjgckgiyisq4rn1i7y4rchbjy8kmixjv6mx563bll")))) - (build-system emacs-build-system) - (home-page "https://gitlab.com/Ambrevar/emacs-disk-usage") - (synopsis "Sort and browse disk usage listings with Emacs") - (description "Disk Usage is a file system analyzer: it offers a tabulated + ;; Use a recent commit as the last release is missing changes from 2020 + ;; onwards + (let ((commit "b0d803f2cec3afc2937840f9ba66e3f903d6c415") + (revision "0")) + (package + (name "emacs-disk-usage") + (version (git-version "1.3.3" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/Ambrevar/emacs-disk-usage") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0vl79knb2snp2gzmcdasncgcc44rq99kmfnvwhfpm0wk21nxhc1m")))) + (build-system emacs-build-system) + (home-page "https://gitlab.com/Ambrevar/emacs-disk-usage") + (synopsis "Sort and browse disk usage listings with Emacs") + (description "Disk Usage is a file system analyzer: it offers a tabulated view of file listings sorted by size. Directory sizes are computed recursively. The results are cached for speed.") - (license license:gpl3+))) + (license license:gpl3+)))) (define-public emacs-orgit (package @@ -37000,6 +37086,40 @@ dict.org) from within Emacs.") to the @url{https://multitran.com} online dictionary.") (license license:gpl3+))) +(define-public emacs-lexic + (let ((commit "f9b3de4d9c2dd1ce5022383e1a504b87bf7d1b09") + (revision "0")) + (package + (name "emacs-lexic") + (version (git-version "0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://git.tecosaur.net/tec/lexic") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "02iz8dh18gb1q97v8ghcd3lavkf28sqbrk0bx6jzzryp69ickk4h")))) + (build-system emacs-build-system) + (inputs (list sdcv)) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'set-sdcv-path + (lambda* (#:key inputs outputs #:allow-other-keys) + (emacs-substitute-variables "lexic.el" + ("lexic-program-path" + (string-append (assoc-ref inputs "sdcv") + "/bin/sdcv")))))))) + (home-page "https://git.tecosaur.net/tec/lexic") + (synopsis "Find out more about words using Stardict dictionaries") + (description "This provides a major mode to view the output of +dictionary tools, and utilities that perform searches and nicely format the +results. Currently tied to sdcv, but this is intended to be changed in the +future.") + (license license:gpl3+)))) + (define-public emacs-blacken (package (name "emacs-blacken") @@ -38262,6 +38382,24 @@ In particular, it saves and restores project files and window configurations across sessions.") (license license:gpl3+)))) +(define-public emacs-poke-mode + (package + (name "emacs-poke-mode") + (version "3.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/poke-mode-" version + ".tar")) + (sha256 + (base32 "1lirhws5d8l16qs5ddrvvz0f9xfl004q9yp333pdgsmcpk3ww7sr")))) + (build-system emacs-build-system) + (home-page "https://elpa.gnu.org/packages/poke-mode.html") + (synopsis "Major mode for editing GNU poke programs") + (description + "This package provides a major mode for editing GNU poke programs.") + (license license:gpl3+))) + (define-public emacs-vcard-mode ;; Use the latest commit, as there are no tagged releases. (let ((commit "ab1a2885a5720d7fb02d9b6583ee908ba2260b78") diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm index 80fd9ac141..b43e058af4 100644 --- a/gnu/packages/engineering.scm +++ b/gnu/packages/engineering.scm @@ -3253,18 +3253,21 @@ program that can perform mesh processing tasks in batch mode, without a GUI.") (delete-file "libpoke/pvm-vm1.c") (delete-file "libpoke/pvm-vm2.c"))))) (build-system gnu-build-system) - ;; The GUI, which we elide, requires tcl and tk. (native-inputs (list bison dejagnu flex libtool pkg-config)) ;; FIXME: Enable NBD support by adding `libnbd' (currently unpackaged). - (inputs (list json-c libgc readline libtextstyle)) + (inputs (list libgc readline libtextstyle)) (arguments - ;; To build the GUI, add the `--enable-gui' configure flag. - ;; To enable the "hyperlink server", add the `--enable-hserver' flag. - `(#:configure-flags - '("--enable-mi" - "--disable-static" - ;; The emacs files are provided in emacs-poke. - "--with-lispdir=/tmp/share/emacs"))) + (list + #:imported-modules `((guix build emacs-build-system) + (guix build emacs-utils) + ,@%gnu-build-system-modules) + #:modules '((guix build gnu-build-system) + ((guix build emacs-build-system) #:prefix emacs:) + (guix build utils)) + #:configure-flags + #~(list "--disable-static" + (string-append "--with-lispdir=" + (emacs:elpa-directory #$output))))) (home-page "https://www.gnu.org/software/poke/#documentation") (synopsis "Editing of arbitrary binary data") (description "GNU poke is an interactive, extensible editor for binary data. @@ -3274,22 +3277,9 @@ data structures and to operate on them.") (license license:gpl3+))) (define-public emacs-poke - (package - (inherit poke) - (name "emacs-poke") - (build-system emacs-build-system) - (arguments - (list - #:phases - #~(modify-phases %standard-phases - (add-before 'expand-load-path 'change-working-directory - (lambda _ (chdir "etc")))))) - (inputs '()) - (native-inputs '()) - (synopsis "GNU Poke major modes for Emacs") - (description - "This package provides two Emacs major modes for working with GNU Poke: -@code{Poke Ras mode} and @code{Poke Map mode}."))) + ;; The 'emacs-poke' name may eventually refer to 'poke' from ELPA, which is + ;; a different beast. + (deprecated-package "emacs-poke" poke)) (define-public pcb2gcode (package diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm index 200d51d153..4f3415232c 100644 --- a/gnu/packages/finance.scm +++ b/gnu/packages/finance.scm @@ -142,7 +142,7 @@ ;; <https://bitcoincore.org/en/lifecycle/#schedule>. (package (name "bitcoin-core") - (version "25.0") + (version "25.1") (source (origin (method url-fetch) (uri @@ -150,7 +150,7 @@ version "/bitcoin-" version ".tar.gz")) (sha256 (base32 - "1hpbw6diyla75a6jrwsis9c5pnhpnnxwbznsik1s1fd35ks7rxjx")))) + "1jcq2686x6f1g8xk91h3qfw89v1klw931wbpbcvc5a6zv2cabhmy")))) (build-system gnu-build-system) (native-inputs (list autoconf diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm index 1b08985bcd..d82636444a 100644 --- a/gnu/packages/firmware.scm +++ b/gnu/packages/firmware.scm @@ -105,7 +105,8 @@ "ath9k-htc-firmware-gcc-compat.patch")))) (build-system gnu-build-system) (arguments - '(#:phases + '(#:target #f ; Package produces firmware. + #:phases (modify-phases %standard-phases (add-before 'configure 'pre-configure (lambda* (#:key inputs native-inputs #:allow-other-keys) @@ -333,6 +334,7 @@ automatic, safe and reliable. It is used by tools such as GNOME Software.") `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out") "/lib/firmware/b43-open")) + #:target #f ; Package produces firmware. #:tests? #f ;no tests #:phases (modify-phases %standard-phases (delete 'configure)))) diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm index a529f325a2..4254408e0f 100644 --- a/gnu/packages/fonts.scm +++ b/gnu/packages/fonts.scm @@ -580,6 +580,10 @@ The unified Libertinus family consists of: (outputs (list "out" "pcf-8bit" "otb")) (arguments `(#:tests? #f ; no test target in tarball + #:modules + ((guix build gnu-build-system) + (guix build utils) + (ice-9 match)) #:phases (modify-phases %standard-phases (add-after 'build 'build-more-bits @@ -601,7 +605,16 @@ The unified Libertinus family consists of: (lambda* (#:key make-flags outputs #:allow-other-keys) (let ((otb (assoc-ref outputs "otb"))) (apply invoke "make" "install-otb" (string-append "prefix=" otb) - make-flags))))))) + make-flags)))) + (add-after 'install 'install-documentation + ;; There's no way to decypher the cryptic file names without this. + (lambda* (#:key outputs #:allow-other-keys) + (for-each (match-lambda + ((name . directory) + (install-file "README" + (string-append directory "/share/doc/" + ,name "-" ,version)))) + outputs)))))) (native-inputs (list bdftopcf font-util mkfontdir pkg-config python)) (home-page "https://terminus-font.sourceforge.net/") diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm index abb79711da..5bfdea1b27 100644 --- a/gnu/packages/fontutils.scm +++ b/gnu/packages/fontutils.scm @@ -1499,6 +1499,37 @@ resolution.") (license license:gpl2+) (home-page "https://potrace.sourceforge.net/"))) +(define-public psftools + (package + (name "psftools") + (version "1.1.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://www.seasip.info/Unix/PSF/" + "psftools-" version ".tar.gz")) + (sha256 + (base32 "1lv6kvrcbspyh7a0hlji84wbmw6xh87r3iaafq3khp88kgh1irri")))) + (build-system gnu-build-system) + (arguments + (list + #:configure-flags #~(list "--disable-static"))) + (home-page "https://www.seasip.info/Unix/PSF/") + (synopsis + "Convert PSF fixed-width bitmap (console) fonts from/to other formats") + (description + "@acronym{PSF, PC Screen Font} is the simple monospaced bitmap font format +used by the Linux kernel for console fonts. The PSF Tools convert between PSF +and many other font formats, similar to what the NetPBM package does for images. + +It includes converters for a good number of common bitmap font formats such as +@file{.BDF}, @file{.FNT}, and @file{.FON} files, Berkeley vfonts, classic +Amstrad/Sinclair/Hercules/BBC Micro soft fonts, and raw (DOS-style) fonts. + +It also supports less traditional formats such as PBM/XBM images, plain text +(for rudimentary editing), and C header files.") + (license license:gpl2+))) + (define-public libotf (package (name "libotf") diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 865ff3b9d7..2ffe8dfef2 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -8276,7 +8276,7 @@ users.") (name "network-manager") ;; Note: NetworkManager still follows the odd/even major version number ;; for development/stable releases scheme; be sure to use a stable one. - (version "1.42.6") + (version "1.44.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/NetworkManager/" @@ -8286,7 +8286,7 @@ users.") "network-manager-meson.patch")) (sha256 (base32 - "0y82xl84dyhdkyl98y86wspiq9iy5jz23bjzc3mvrijsfz1qlf4c")))) + "17zvg63jjbqdw8xyc6narirvvbbv7micbn0j7dmq0bqqgmihkjpd")))) (build-system meson-build-system) (outputs '("out" "doc")) ; 8 MiB of gtk-doc HTML @@ -8308,6 +8308,7 @@ users.") "-Ddhcpcanon=no" "-Dcrypto=gnutls" "-Diwd=true" + "-Dnm_cloud_setup=false" "-Dlibaudit=yes" "-Dqt=false" "-Ddocs=true" @@ -8317,19 +8318,12 @@ users.") #$output "/lib/udev") (string-append "-Ddbus_conf_dir=" #$output "/etc/dbus-1/system.d") - + (string-append "-Dmodprobe=" (search-input-file %build-inputs + "bin/modprobe")) (string-append "-Ddhclient=" (search-input-file %build-inputs - "/sbin/dhclient"))) + "sbin/dhclient"))) #:phases #~(modify-phases %standard-phases - (add-after 'unpack 'patch-modprobe-path - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "src/libnm-platform/nm-platform-utils.c" - ;; The modprobe command location is not configurable (see: - ;; https://gitlab.freedesktop.org/NetworkManager/ - ;; NetworkManager/-/issues/1257). - (("/sbin/modprobe") - (search-input-file inputs "bin/modprobe"))))) (add-after 'unpack 'patch-dlopen-call-to-libjansson.so (lambda* (#:key inputs #:allow-other-keys) (substitute* "src/libnm-glib-aux/nm-json-aux.c" diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index dadb5f3796..d237bf689c 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -1528,6 +1528,12 @@ channels.") "-DEXIV2_ENABLE_BMFF=ON") #:phases (modify-phases %standard-phases + (add-after 'unpack 'patch-gcc-reference + (lambda _ + ;; _GLIBCXX_ASSERTIONS brings reference to GCC. + (substitute* "cmake/compilerFlags.cmake" + (("add_compile_options[(]-Wp,-D_GLIBCXX_ASSERTIONS[)]") + "")))) (add-after 'install 'delete-static-libraries (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 6cd9540da3..9a0610528e 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -526,7 +526,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." ;; The "longterm" kernels — the older releases with long-term upstream support. ;; Here are the support timelines: ;; <https://www.kernel.org/category/releases.html> -(define-public linux-libre-6.1-version "6.1.57") +(define-public linux-libre-6.1-version "6.1.58") (define-public linux-libre-6.1-gnu-revision "gnu") (define deblob-scripts-6.1 (linux-libre-deblob-scripts @@ -536,7 +536,7 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (base32 "1c73516nbhnz0cxjz38b5794dxygb8sznv9idiibw7ablmjbhd11"))) (define-public linux-libre-6.1-pristine-source (let ((version linux-libre-6.1-version) - (hash (base32 "1ccidrxswblxw9yaa45y6ds16pc7647f6fz36xxxhljivhyzxszr"))) + (hash (base32 "1b913ina3rcw4dx2s7n37kynv8rqsmrqa2ialsib6h7nsb9px66f"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-6.1))) @@ -9448,7 +9448,7 @@ tools for managing PipeWire.") (define-public ell (package (name "ell") - (version "0.57") + (version "0.59") (source (origin (method git-fetch) (uri (git-reference @@ -9457,7 +9457,7 @@ tools for managing PipeWire.") (file-name (git-file-name name version)) (sha256 (base32 - "1vpzz0z6q0d3h41aqajaw0dlpkdnmjcppmlwbb558hvj40q5dpzm")))) + "11xlkdvw7pyd9idq1zsnl946dry9aksnz29wbpzxqjc97xhhd5xq")))) (build-system gnu-build-system) (arguments ;; Tests launch dbus-daemon instances that all try to bind to @@ -9466,7 +9466,7 @@ tools for managing PipeWire.") (inputs (list dbus)) (native-inputs - (list autoconf automake libtool pkg-config)) + (list autoconf automake libtool pkg-config procps)) (home-page "https://01.org/ell") (synopsis "Embedded Linux Library") (description "The Embedded Linux* Library (ELL) provides core, low-level @@ -10509,6 +10509,46 @@ against the several transient execution CVEs that were published since early random programs using differential testing.") (license license:bsd-4))) +(define-public ipvsadm + (package + (name "ipvsadm") + (version "1.31") + (source + (origin + (method url-fetch) + (uri (string-append "https://kernel.org/pub/linux/utils/kernel" + "/ipvsadm/ipvsadm-" version ".tar.xz")) + (sha256 + (base32 "1nyzpv1hx75k9lh0vfxfhc0p2fpqaqb38xpvs8sn88m1nljmw2hs")))) + (build-system gnu-build-system) + (native-inputs (list linux-libre-headers pkg-config which)) + (inputs (list libnl popt)) + (arguments + (list #:tests? #f + #:parallel-build? #f ;build fails randomly with '-j' + #:make-flags + #~(list (string-join + (list "CFLAGS=" + (string-append "-I" + #$(this-package-input "libnl") + "/include/libnl3") + (string-append "-L" #$(this-package-input "libnl") + "/lib") + "-fPIC") + " ") + (string-append "CC=" #$(cc-for-target)) + (string-append "SBIN=" #$output "/sbin") + (string-append "INIT=" #$output "/etc/init.d") + (string-append "MANDIR=" #$output "/share/man")) + #:phases #~(modify-phases %standard-phases + (delete 'configure)))) + (home-page "http://www.linuxvirtualserver.org/software/ipvs.html") + (synopsis "IP virtual server administration utility") + (description "@code{ipvsadm(8)} is used to set up, maintain or inspect the +virtual server table in the Linux kernel. The Linux Virtual Server can be used +to build scalable network services based on a cluster of two or more nodes.") + (license license:gpl2+))) + (define-public ryzen-smu (package (name "ryzen-smu") diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index feac9fdbed..e7b603f59d 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -40,6 +40,7 @@ ;;; Copyright © 2023 Roman Scherer <roman@burningswell.com> ;;; Copyright © 2023 ykonai <mail@ykonai.net> ;;; Copyright © 2023 Gabriel Hondet <gabriel.hondet@cominety.net> +;;; Copyright © 2023 Raven Hallsby <karl@hallsby.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -73,6 +74,7 @@ #:use-module (guix build-system asdf) #:use-module (guix build-system gnu) #:use-module (guix build-system trivial) + #:use-module (guix build-system emacs) #:use-module (gnu packages audio) #:use-module (gnu packages base) #:use-module (gnu packages c) @@ -2173,6 +2175,48 @@ from other CLXes around the net.") (define-public ecl-clx (sbcl-package->ecl-package sbcl-clx)) +(define-public sbcl-cl-wayland + (let ((commit "a92a5084b64102f538ab90212e99c7863e5338ae") + (revision "0")) + (package + (name "sbcl-cl-wayland") + (version (git-version "0.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/sdilts/cl-wayland") + (commit commit))) + (file-name (git-file-name "cl-wayland" version)) + (sha256 + (base32 "1r4fn9dc0dz2b30k8z243yacx1y5z21qk4zh2ildj7ak51qx53zf")))) + (build-system asdf-build-system/sbcl) + (arguments + (list #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'fix-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "wayland-server-core.lisp" + (("libwayland-server.so") + (search-input-file inputs + "/lib/libwayland-server.so")))))))) + (inputs + (list sbcl-cffi + sbcl-closer-mop + wayland)) + (home-page "https://github.com/sdilts/cl-wayland") + (synopsis "Common Lisp FFI bindings for libwayland") + (description + "This package provides Common Lisp FFI bindings for libwayland, +primarily for the mahogany window manager.") + (license license:bsd-3)))) + +(define-public cl-wayland + (sbcl-package->cl-source-package sbcl-cl-wayland)) + +(define-public ecl-cl-wayland + (sbcl-package->ecl-package sbcl-cl-wayland)) + (define-public sbcl-clx-truetype (let ((commit "c6e10a918d46632324d5863a8ed067a83fc26de8") (revision "1")) @@ -26063,65 +26107,51 @@ extra features like type inference.") (sbcl-package->cl-source-package sbcl-nclasses)) (define-public sbcl-prompter - (package - (name "sbcl-prompter") - (version "0.1.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/atlas-engineer/prompter") - (commit version))) - (file-name (git-file-name "prompter" version)) - (sha256 - (base32 - "1489qg99n5bpl9b88pq3smnw5l9hrq08sbnabvavv3jcd4pzpsqf")) - (modules '((guix build utils))) - (snippet - `(begin - (delete-file-recursively "nasdf") - #t)))) - (build-system asdf-build-system/sbcl) - (inputs - (list - sbcl-alexandria - sbcl-calispel - sbcl-cl-containers - sbcl-cl-str - sbcl-closer-mop - sbcl-lparallel - sbcl-moptilities - sbcl-nclasses - sbcl-serapeum - sbcl-trivial-package-local-nicknames)) - (native-inputs - (list sbcl-lisp-unit2 - sbcl-nasdf)) - (home-page "https://github.com/atlas-engineer/prompter") - (synopsis "Live-narrowing, fuzzy-matching, extensible prompt framework") - (description - "This prompter library is heavily inspired by Emacs' minibuffer and + (let ((commit "b40a13af6ba4bd5c73c17e94dd2cbc2901bbd02f") + (revision "0")) + (package + (name "sbcl-prompter") + (version (git-version "0.1.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/atlas-engineer/prompter") + (commit commit))) + (file-name (git-file-name "cl-prompter" version)) + (sha256 + (base32 + "1gg69rq2v9wcr7kj9fvd2i38r28fsgqqw6zs71m46krmr1gmfh4q")) + (modules '((guix build utils))) + (snippet + `(begin + (delete-file-recursively "nasdf") + #t)))) + (build-system asdf-build-system/sbcl) + (inputs + (list + sbcl-alexandria + sbcl-calispel + sbcl-cl-containers + sbcl-cl-str + sbcl-closer-mop + sbcl-lparallel + sbcl-moptilities + sbcl-nclasses + sbcl-serapeum + sbcl-trivial-package-local-nicknames)) + (native-inputs + (list sbcl-lisp-unit2 + sbcl-nasdf)) + (home-page "https://github.com/atlas-engineer/prompter") + (synopsis "Live-narrowing, fuzzy-matching, extensible prompt framework") + (description + "This prompter library is heavily inspired by Emacs' minibuffer and Helm (@url{https://emacs-helm.github.io/helm/}). It only deals with the -backend side of things, it does not handle any display. - -Non-exhaustive list of features: - -@itemize -@item Asynchronous suggestion computation. -@item Multiple sources. -@item Multiple return actions. -@item Customizable matching and sorting. -@item Multiple attributes to match and display (also known as 'multiple column -display'). -@item Customizable initialization and cleanup functions. -@item Notifications sent when suggestion list is updated. -@item Per-source history. -@item Resumable prompters. -@item Marks actions (event-driven on marks change). -@item Current suggestion actions (event-driven on current suggestion change). -@item Automatically return the prompt when narrowed down to a single suggestion. -@end itemize\n") - (license license:bsd-3))) +backend side of things, it does not handle any display. Features include +asynchronous suggestion computation, multiple sources, actions and resumable +prompters.") + (license license:bsd-3)))) (define-public cl-prompter (sbcl-package->cl-source-package sbcl-prompter)) @@ -26752,6 +26782,48 @@ instead of #'FOO. (define-public ecl-nkeymaps (sbcl-package->ecl-package sbcl-nkeymaps)) +(define-public sbcl-xkbcommon + (let ((commit "aa9513d93f42d7816f88dd1bd8bd21375e7d7512") + (revision "0")) + (package + (name "sbcl-xkbcommon") + (version (git-version "0.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/sdilts/cl-xkbcommon") + (commit commit))) + (file-name (git-file-name "cl-xkbcommon" version)) + (sha256 + (base32 "02zdbkh7yliw9vg8i8wx2xgcpfni0fr4z0w19kkxvaib8xm9rx1q")))) + (build-system asdf-build-system/sbcl) + (arguments + (list #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'fix-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "xkbcommon.lisp" + (("libxkbcommon.so.0") + (search-input-file inputs "/lib/libxkbcommon.so")))))))) + (native-inputs + (list pkg-config)) + (inputs + (list libxkbcommon + sbcl-cffi)) + (home-page "https://github.com/sdilts/cl-xkbcommon") + (synopsis "Common Lisp FFI bindings for xkbcommon") + (description + "This package provides Common Lisp FFI bindings for xkbcommon +(libxkbcommon) using cffi-grovel.") + (license license:expat)))) + +(define-public cl-xkbcommon + (sbcl-package->cl-source-package sbcl-xkbcommon)) + +(define-public ecl-xkbcommon + (sbcl-package->ecl-package sbcl-xkbcommon)) + (define-public sbcl-njson (package (name "sbcl-njson") @@ -27485,6 +27557,54 @@ definition.") (define-public ecl-slot-extra-options (sbcl-package->ecl-package sbcl-slot-extra-options)) +(define-public sbcl-slite + (let ((commit "942a95330592d30be5ac02fb1b697fb14ccbf1af") + (revision "0")) + (package + (name "sbcl-slite") + (version (git-version "1.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tdrhq/slite/") + (commit commit))) + (file-name (git-file-name "slite" version)) + (sha256 + (base32 "0b4c4vs1zlhcvr9flv8bx76v9hrwc9qmazmp60407q7cghn0k8zk")))) + (build-system asdf-build-system/sbcl) + (inputs + (list sbcl-cl-str + sbcl-fiveam + sbcl-parachute + sbcl-lisp-unit2)) + (home-page "https://github.com/tdrhq/slite") + (synopsis "Common Lisp system for Slite ") + (description + "This package provides the Common Lisp part of the emacs-slite test runner.") + (license license:asl2.0)))) + +(define-public cl-slite + (sbcl-package->cl-source-package sbcl-slite)) + +(define-public ecl-slite + (sbcl-package->ecl-package sbcl-slite)) + +(define-public emacs-slite + (package + (inherit sbcl-slite) + (name "emacs-slite") + (build-system emacs-build-system) + (synopsis "SLIme-based TEst runner for FiveAM and Parachute Tests") + (description + "Slite interactively runs your Common Lisp tests (currently only FiveAM +and Parachute are supported). It allows you to see the summary of test +failures, jump to test definitions, rerun tests with debugger all from inside +Emacs. + +In order to work, this also requires the slite Common Lisp system to be +present. See the code@{*cl-slite packages}."))) + (define-public sbcl-parseq (package (name "sbcl-parseq") diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm index daff67f7f2..cd551f4e02 100644 --- a/gnu/packages/llvm.scm +++ b/gnu/packages/llvm.scm @@ -85,19 +85,32 @@ "Return the LLVM target name that corresponds to SYSTEM, a system type such as \"x86_64-linux\"." ;; See the 'lib/Target' directory of LLVM for a list of supported targets. + (match (system->llvm-target-arch system) + ("RISCV64" "RISCV") + ("X86_64" "X86") + (x x))) + +(define* (system->llvm-target-arch #:optional + (system (or (and=> (%current-target-system) + gnu-triplet->nix-system) + (%current-system)))) + "Return the LLVM target arch name that corresponds to SYSTEM, a system type such +as \"x86_64-linux\"." + ;; See the 'cmake/config-ix.cmake' file of LLVM for a list of supported targets arch. + ;; start with # Determine the native architecture. (letrec-syntax ((matches (syntax-rules (=>) ((_ (system-prefix => target) rest ...) (if (string-prefix? system-prefix system) target (matches rest ...))) ((_) - (error "LLVM target for system is unknown" system))))) + (error "LLVM target arch for system is unknown" system))))) (matches ("aarch64" => "AArch64") ("armhf" => "ARM") ("mips64el" => "Mips") ("powerpc" => "PowerPC") - ("riscv" => "RISCV") - ("x86_64" => "X86") + ("riscv64" => "RISCV64") + ("x86_64" => "X86_64") ("i686" => "X86") ("i586" => "X86")))) @@ -598,7 +611,7 @@ output), and Binutils.") #$(string-append "-DLLVM_DEFAULT_TARGET_TRIPLE=" (%current-target-system)) #$(string-append "-DLLVM_TARGET_ARCH=" - (system->llvm-target)) + (system->llvm-target-arch)) #$(string-append "-DLLVM_TARGETS_TO_BUILD=" (system->llvm-target))) '()) @@ -658,7 +671,7 @@ of programming tools as well as libraries with equivalent functionality.") #$(string-append "-DLLVM_DEFAULT_TARGET_TRIPLE=" (%current-target-system)) #$(string-append "-DLLVM_TARGET_ARCH=" - (system->llvm-target)) + (system->llvm-target-arch)) #$(string-append "-DLLVM_TARGETS_TO_BUILD=" (system->llvm-target))) '()) @@ -901,7 +914,7 @@ Library.") #$(string-append "-DLLVM_DEFAULT_TARGET_TRIPLE=" (%current-target-system)) #$(string-append "-DLLVM_TARGET_ARCH=" - (system->llvm-target)) + (system->llvm-target-arch)) #$(string-append "-DLLVM_TARGETS_TO_BUILD=" (system->llvm-target))) #~()) diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 683acd96e1..5c904fc094 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -5283,7 +5283,7 @@ package contains a library with common configuration options.") (install-file "../AMD/Doc/License.txt" (string-append #$output "/share/doc/" #$name "-" #$version))))))) - (inputs (list suitesparse-config)) + (propagated-inputs (list suitesparse-config)) (native-inputs (list gfortran (texlive-updmap.cfg '()))) (home-page "https://people.engr.tamu.edu/davis/suitesparse.html") (synopsis "Sparse matrix ordering for Cholesky factorization") @@ -5317,7 +5317,7 @@ to Cholesky factorization (or for LU factorization with diagonal pivoting).") (install-file "../BTF/Doc/License.txt" (string-append #$output "/share/doc/" #$name "-" #$version))))))) - (inputs (list suitesparse-config)) + (propagated-inputs (list suitesparse-config)) (home-page "https://people.engr.tamu.edu/davis/suitesparse.html") (synopsis "Library for permuting matrices into block upper triangular form") (description "BTF (Block Triangular Form) is a C library for permuting a @@ -5359,7 +5359,7 @@ matrix into block upper triangular form.") (install-file "../CAMD/Doc/License.txt" (string-append #$output "/share/doc/" #$name "-" #$version))))))) - (inputs (list suitesparse-config)) + (propagated-inputs (list suitesparse-config)) (native-inputs (list (texlive-updmap.cfg '()))) (home-page "https://people.engr.tamu.edu/davis/suitesparse.html") (synopsis "Sparse matrix ordering for Cholesky factorization with constraints") @@ -5395,7 +5395,7 @@ ordering.") (install-file "../COLAMD/Doc/License.txt" (string-append #$output "/share/doc/" #$name "-" #$version))))))) - (inputs (list suitesparse-config)) + (propagated-inputs (list suitesparse-config)) (home-page "https://people.engr.tamu.edu/davis/suitesparse.html") (synopsis "Column Approximate Minimum Degree Ordering") (description "COLAMD is library for computing a permutation vector for a @@ -5428,7 +5428,7 @@ matrix with which the LU factorization becomes sparser.") (install-file "../CCOLAMD/Doc/License.txt" (string-append #$output "/share/doc/" #$name "-" #$version))))))) - (inputs (list suitesparse-config)) + (propagated-inputs (list suitesparse-config)) (home-page "https://people.engr.tamu.edu/davis/suitesparse.html") (synopsis "Column Approximate Minimum Degree Ordering with constraints") (description "CCOLAMD is library for computing a permutation vector for a @@ -5457,9 +5457,7 @@ COLAMD which has the the option to apply constraints to the ordering.") all "target_link_libraries(GKlib PUBLIC" " ${SUITESPARSE_CONFIG_LIBRARIES} m)\n"))))))))) - (inputs - (modify-inputs (package-inputs gklib) - (prepend suitesparse-config))))) + (propagated-inputs (list suitesparse-config)))) (define-public metis-suitesparse (package/inherit metis-5.2 @@ -5561,8 +5559,8 @@ target_link_libraries(CHOLMOD_static PRIVATE ${METIS_LIBRARY} ${GKLIB_LIBRARY})" suitesparse-amd suitesparse-camd suitesparse-ccolamd - suitesparse-colamd - suitesparse-config)) + suitesparse-colamd)) + (propagated-inputs (list suitesparse-config)) (native-inputs (list (texlive-updmap.cfg '()))) (home-page "https://people.engr.tamu.edu/davis/suitesparse.html") (synopsis "Library for solving sparse symmetric positive definite linear @@ -5599,7 +5597,7 @@ and other related operations.") "/share/doc/" #$name "-" #$version))) (install-file "../CXSparse/Doc/License.txt" out) (install-file "../CXSparse/Doc/lesser.txt" out))))))) - (inputs (list suitesparse-config)) + (propagated-inputs (list suitesparse-config)) (home-page "https://people.engr.tamu.edu/davis/suitesparse.html") (synopsis "Concise eXtended Sparse Matrix Package") (description "CXSparse is a collection of sparse matrix algorithms for @@ -5655,13 +5653,14 @@ direct methods on both real and complex matrices.") (string-append #$output "/share/doc/" #$name "-" #$version))))))) (inputs - (list suitesparse-amd - suitesparse-btf - suitesparse-camd + (list suitesparse-camd suitesparse-ccolamd - suitesparse-cholmod suitesparse-colamd suitesparse-config)) + (propagated-inputs + (list suitesparse-amd + suitesparse-btf + suitesparse-cholmod)) (native-inputs (list (texlive-updmap.cfg '()))) (home-page "https://people.engr.tamu.edu/davis/suitesparse.html") (synopsis "Routines for solving sparse linear problems with a LU factorization") @@ -5712,9 +5711,8 @@ for real and complex matrices.") (install-file "../LDL/Doc/License.txt" (string-append #$output "/share/doc/" #$name "-" #$version))))))) - (inputs - (list suitesparse-amd - suitesparse-config)) + (inputs (list suitesparse-amd)) + (propagated-inputs (list suitesparse-config)) (native-inputs (list (texlive-updmap.cfg '()))) (home-page "https://people.engr.tamu.edu/davis/suitesparse.html") (synopsis "LDL' factorization method for sparse, symmetric matrices") @@ -5754,7 +5752,7 @@ code.") "/share/doc/" #$name "-" #$version))) (install-file "../RBio/Doc/License.txt" out) (install-file "../RBio/Doc/gpl.txt" out))))))) - (inputs (list suitesparse-config)) + (propagated-inputs (list suitesparse-config)) (home-page "https://people.engr.tamu.edu/davis/suitesparse.html") (synopsis "Library for the Rutherford/Boeing sparse matrix format") (description "This package provides the C library of RBio. It can be used @@ -5803,7 +5801,7 @@ for reading and writing sparse matrices in the Rutherford/Boeing format.") (install-file "../Mongoose/Doc/License.txt" (string-append #$output "/share/doc/" #$name "-" #$version))))))) - (inputs (list suitesparse-config)) + (propagated-inputs (list suitesparse-config)) (native-inputs (list texlive-epstopdf (texlive-updmap.cfg @@ -5872,12 +5870,8 @@ edge cuts using a coarsening and refinement framework.") (install-file "../SPEX/Doc/SPEX_UserGuide.pdf" (string-append #$output "/share/doc/" #$name "-" #$version))))))) - (inputs - (list gmp - mpfr - suitesparse-amd - suitesparse-colamd - suitesparse-config)) + (inputs (list suitesparse-amd suitesparse-colamd)) + (propagated-inputs (list gmp mpfr suitesparse-config)) (native-inputs (list (texlive-updmap.cfg (list texlive-paralist @@ -5950,14 +5944,13 @@ LU factorization for solving unsymmetric sparse linear systems.") (install-file "../SPQR/Doc/License.txt" (string-append #$output "/share/doc/" #$name "-" #$version))))))) - (inputs - (list openblas - suitesparse-amd - suitesparse-camd - suitesparse-ccolamd - suitesparse-cholmod - suitesparse-colamd - suitesparse-config)) + (inputs (list openblas + suitesparse-amd + suitesparse-camd + suitesparse-ccolamd + suitesparse-colamd + suitesparse-config)) + (propagated-inputs (list suitesparse-cholmod)) (native-inputs (list (texlive-updmap.cfg (list texlive-epsf)))) @@ -6016,13 +6009,13 @@ matrices.") #$name "-" #$version))) (install-file "../UMFPACK/Doc/License.txt" outdir) (install-file "../UMFPACK/Doc/gpl.txt" outdir))))))) - (inputs - (list openblas - suitesparse-amd - suitesparse-camd - suitesparse-ccolamd - suitesparse-cholmod - suitesparse-colamd + (inputs (list openblas + suitesparse-camd + suitesparse-ccolamd + suitesparse-cholmod + suitesparse-colamd)) + (propagated-inputs + (list suitesparse-amd suitesparse-config)) (native-inputs (list (texlive-updmap.cfg @@ -6432,13 +6425,13 @@ revised simplex and the branch-and-bound methods.") (string-replace-substring version "." "-"))))) (file-name (git-file-name "trilinos" version)) (sha256 - (base32 "0fnwlhzsh85qj38cq3igbs8nm1b2jdgr2z734sapmyyzsy21mkgp")))) + (base32 "0fnwlhzsh85qj38cq3igbs8nm1b2jdgr2z734sapmyyzsy21mkgp")) + (patches + (search-patches "teuchos-remove-duplicate-using.patch" + "tpetra-remove-duplicate-using.patch")))) (build-system cmake-build-system) (native-inputs (list - ;; The build fails with the current gcc. - ;; Use the version from when Trilinos was added. - gcc-7 gfortran ;; Trilinos's repository contains several C-shell scripts, but adding ;; tcsh to the native inputs does not result in the check phase running diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm index ba8e99065c..c669b6f139 100644 --- a/gnu/packages/messaging.scm +++ b/gnu/packages/messaging.scm @@ -3381,7 +3381,7 @@ Weechat communicate over the Matrix protocol.") (define-public weechat-wee-slack (package (name "weechat-wee-slack") - (version "2.9.1") + (version "2.10.1") (source (origin (method git-fetch) @@ -3391,7 +3391,7 @@ Weechat communicate over the Matrix protocol.") (file-name (git-file-name name version)) (sha256 (base32 - "1zhiwbljh4rgbj8i9rrcimi9v3a7g1nm7v2m2f754rnddck9343z")))) + "0ykzmn4q592ih9d6m5ks2dzbxkz3mj81sxwsn9g2vzsxj7w3p2r7")))) (build-system python-build-system) (arguments `(#:phases @@ -3416,9 +3416,9 @@ Weechat communicate over the Matrix protocol.") (when tests? (invoke "pytest"))))))) (inputs - (list python-mock python-websocket-client)) + (list python-websocket-client)) (native-inputs - (list python-pytest)) + (list python-mock python-pytest)) (home-page "https://github.com/wee-slack/wee-slack") (synopsis "Weechat Slack script") (description "@code{weechat-wee-slack} is a WeeChat native client for diff --git a/gnu/packages/ncdu.scm b/gnu/packages/ncdu.scm index 4ff6d676f7..ffc9ac8ad6 100644 --- a/gnu/packages/ncdu.scm +++ b/gnu/packages/ncdu.scm @@ -36,14 +36,14 @@ ;; yet, so we'll keep both for just a little longer. (package (name "ncdu") - (version "1.18.1") + (version "1.19") (source (origin (method url-fetch) (uri (string-append "https://dev.yorhel.nl/download/ncdu-" version ".tar.gz")) (sha256 (base32 - "01946cqp5z38srbpq08d75f1n0cgpfyn8h8ppbaawnnq57ms23vw")))) + "0zdidd4rhik5j0qdrdg1yh9094jlw496q07vqx90gphc30ck0dih")))) (build-system gnu-build-system) (inputs (list ncurses)) (synopsis "Ncurses-based disk usage analyzer") @@ -53,9 +53,7 @@ run on a remote server where you don't have an entire graphical setup, but have to do with a simple SSH connection. ncdu aims to be fast, simple and easy to use, and should be able to run in any minimal POSIX-like environment with ncurses installed.") - (license (x11-style - (string-append "https://g.blicky.net/ncdu.git/plain/COPYING?id=v" - version))) + (license (x11-style "file://COPYING")) (home-page "https://dev.yorhel.nl/ncdu"))) (define-public ncdu diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index 7a29bafb01..86309e4ab3 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -3970,7 +3970,7 @@ powerful route filtering syntax and an easy-to-use configuration interface.") (define-public iwd (package (name "iwd") - (version "2.7") + (version "2.8") (source (origin (method git-fetch) (uri (git-reference @@ -3979,7 +3979,7 @@ powerful route filtering syntax and an easy-to-use configuration interface.") (file-name (git-file-name name version)) (sha256 (base32 - "0xn0db37x0nrvwlw0r4w6q3yk57ijqh9zxd15wf3qqvs01hqkk2j")))) + "0bpksqyaqr624bj7zm9hi22rnp6wnjbngx4q08l7lbd0r7r93vcb")))) (build-system gnu-build-system) (inputs (list dbus ell (package-source ell) readline)) @@ -4024,7 +4024,7 @@ powerful route filtering syntax and an easy-to-use configuration interface.") ;; Don't try to 'mkdir /var'. (("\\$\\(MKDIR_P\\) -m 700") "true"))))))) (home-page "https://git.kernel.org/pub/scm/network/wireless/iwd.git/") - (synopsis "Internet Wireless Daemon") + (synopsis "iNet Wireless Daemon") (description "iwd is a wireless daemon for Linux that aims to replace WPA Supplicant. It optimizes resource utilization by not depending on any external libraries and instead utilizing features provided by the Linux kernel to the diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm index 8543505dbb..7993dbaa73 100644 --- a/gnu/packages/ocaml.scm +++ b/gnu/packages/ocaml.scm @@ -1359,7 +1359,7 @@ libpanel, librsvg and quartz.") (define-public unison (package (name "unison") - (version "2.51.2") + (version "2.53.3") (source (origin (method git-fetch) (uri (git-reference @@ -1368,52 +1368,18 @@ libpanel, librsvg and quartz.") (file-name (git-file-name name version)) (sha256 (base32 - "1bykiyc0dc5pkw8x370qkg2kygq9pq7yqzsgczd3y13b6ivm4sdq")) - (patches (search-patches "unison-fix-ocaml-4.08.patch")))) - (build-system gnu-build-system) - (outputs '("out" - "doc")) ; 1.9 MiB of documentation - (native-inputs - `(("ocaml" ,ocaml-4.09) - ;; For documentation - ("ghostscript" ,ghostscript) - ("texlive" ,(texlive-updmap.cfg)) - ("hevea" ,hevea) - ("lynx" ,lynx) - ("which" ,which))) - (arguments - `(#:parallel-build? #f - #:parallel-tests? #f - #:test-target "selftest" - #:tests? #f ; Tests require writing to $HOME. - ; If some $HOME is provided, they fail with the message - ; "Fatal error: Skipping some tests -- remove me!" - #:phases + "05ihxk1yynw08586i06w19xab9r24h9hr6v9bknqm98qrlshm92w")))) + (build-system dune-build-system) + (propagated-inputs (list lablgtk3 zlib)) + (native-inputs (list ghostscript (texlive-updmap.cfg '()) hevea lynx which)) + (arguments + `(#:phases (modify-phases %standard-phases - (delete 'configure) - (add-before 'install 'prepare-install - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin"))) - (mkdir-p bin) - (setenv "HOME" out) ; forces correct INSTALLDIR in Makefile - #t))) - (add-after 'install 'install-fsmonitor - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin"))) - ;; 'unison-fsmonitor' is used in "unison -repeat watch" mode. - (install-file "src/unison-fsmonitor" bin) - #t))) (add-after 'install 'install-doc (lambda* (#:key outputs #:allow-other-keys) - (let ((doc (string-append (assoc-ref outputs "doc") + (let ((doc (string-append (assoc-ref outputs "out") "/share/doc/unison"))) (mkdir-p doc) - ;; Remove an '\n' that prevents the doc to be generated - ;; correctly with newer hevea. - (substitute* "doc/local.tex" - (("----SNIP----.*") "----SNIP----")) ;; This file needs write-permissions, because it's ;; overwritten by 'docs' during documentation generation. (chmod "src/strings.ml" #o600) diff --git a/gnu/packages/patches/connman-CVE-2022-32292.patch b/gnu/packages/patches/connman-CVE-2022-32292.patch deleted file mode 100644 index cbe30742e1..0000000000 --- a/gnu/packages/patches/connman-CVE-2022-32292.patch +++ /dev/null @@ -1,34 +0,0 @@ -https://git.kernel.org/pub/scm/network/connman/connman.git/patch/?id=d1a5ede5d255bde8ef707f8441b997563b9312bd - -From d1a5ede5d255bde8ef707f8441b997563b9312bd Mon Sep 17 00:00:00 2001 -From: Nathan Crandall <ncrandall@tesla.com> -Date: Tue, 12 Jul 2022 08:56:34 +0200 -Subject: gweb: Fix OOB write in received_data() - -There is a mismatch of handling binary vs. C-string data with memchr -and strlen, resulting in pos, count, and bytes_read to become out of -sync and result in a heap overflow. Instead, do not treat the buffer -as an ASCII C-string. We calculate the count based on the return value -of memchr, instead of strlen. - -Fixes: CVE-2022-32292 ---- - gweb/gweb.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/gweb/gweb.c b/gweb/gweb.c -index 12fcb1d8..13c6c5f2 100644 ---- a/gweb/gweb.c -+++ b/gweb/gweb.c -@@ -918,7 +918,7 @@ static gboolean received_data(GIOChannel *channel, GIOCondition cond, - } - - *pos = '\0'; -- count = strlen((char *) ptr); -+ count = pos - ptr; - if (count > 0 && ptr[count - 1] == '\r') { - ptr[--count] = '\0'; - bytes_read--; --- -cgit - diff --git a/gnu/packages/patches/connman-CVE-2022-32293-pt1.patch b/gnu/packages/patches/connman-CVE-2022-32293-pt1.patch deleted file mode 100644 index c4d1aec31b..0000000000 --- a/gnu/packages/patches/connman-CVE-2022-32293-pt1.patch +++ /dev/null @@ -1,140 +0,0 @@ -https://git.kernel.org/pub/scm/network/connman/connman.git/patch/?id=72343929836de80727a27d6744c869dff045757c - -From 72343929836de80727a27d6744c869dff045757c Mon Sep 17 00:00:00 2001 -From: Daniel Wagner <wagi@monom.org> -Date: Tue, 5 Jul 2022 08:32:12 +0200 -Subject: wispr: Add reference counter to portal context - -Track the connman_wispr_portal_context live time via a -refcounter. This only adds the infrastructure to do proper reference -counting. - -Fixes: CVE-2022-32293 ---- - src/wispr.c | 52 ++++++++++++++++++++++++++++++++++++++++++---------- - 1 file changed, 42 insertions(+), 10 deletions(-) - -diff --git a/src/wispr.c b/src/wispr.c -index a07896ca..bde7e63b 100644 ---- a/src/wispr.c -+++ b/src/wispr.c -@@ -56,6 +56,7 @@ struct wispr_route { - }; - - struct connman_wispr_portal_context { -+ int refcount; - struct connman_service *service; - enum connman_ipconfig_type type; - struct connman_wispr_portal *wispr_portal; -@@ -97,6 +98,11 @@ static char *online_check_ipv4_url = NULL; - static char *online_check_ipv6_url = NULL; - static bool enable_online_to_ready_transition = false; - -+#define wispr_portal_context_ref(wp_context) \ -+ wispr_portal_context_ref_debug(wp_context, __FILE__, __LINE__, __func__) -+#define wispr_portal_context_unref(wp_context) \ -+ wispr_portal_context_unref_debug(wp_context, __FILE__, __LINE__, __func__) -+ - static void connman_wispr_message_init(struct connman_wispr_message *msg) - { - DBG(""); -@@ -162,9 +168,6 @@ static void free_connman_wispr_portal_context( - { - DBG("context %p", wp_context); - -- if (!wp_context) -- return; -- - if (wp_context->wispr_portal) { - if (wp_context->wispr_portal->ipv4_context == wp_context) - wp_context->wispr_portal->ipv4_context = NULL; -@@ -201,9 +204,38 @@ static void free_connman_wispr_portal_context( - g_free(wp_context); - } - -+static struct connman_wispr_portal_context * -+wispr_portal_context_ref_debug(struct connman_wispr_portal_context *wp_context, -+ const char *file, int line, const char *caller) -+{ -+ DBG("%p ref %d by %s:%d:%s()", wp_context, -+ wp_context->refcount + 1, file, line, caller); -+ -+ __sync_fetch_and_add(&wp_context->refcount, 1); -+ -+ return wp_context; -+} -+ -+static void wispr_portal_context_unref_debug( -+ struct connman_wispr_portal_context *wp_context, -+ const char *file, int line, const char *caller) -+{ -+ if (!wp_context) -+ return; -+ -+ DBG("%p ref %d by %s:%d:%s()", wp_context, -+ wp_context->refcount - 1, file, line, caller); -+ -+ if (__sync_fetch_and_sub(&wp_context->refcount, 1) != 1) -+ return; -+ -+ free_connman_wispr_portal_context(wp_context); -+} -+ - static struct connman_wispr_portal_context *create_wispr_portal_context(void) - { -- return g_try_new0(struct connman_wispr_portal_context, 1); -+ return wispr_portal_context_ref( -+ g_new0(struct connman_wispr_portal_context, 1)); - } - - static void free_connman_wispr_portal(gpointer data) -@@ -215,8 +247,8 @@ static void free_connman_wispr_portal(gpointer data) - if (!wispr_portal) - return; - -- free_connman_wispr_portal_context(wispr_portal->ipv4_context); -- free_connman_wispr_portal_context(wispr_portal->ipv6_context); -+ wispr_portal_context_unref(wispr_portal->ipv4_context); -+ wispr_portal_context_unref(wispr_portal->ipv6_context); - - g_free(wispr_portal); - } -@@ -452,7 +484,7 @@ static void portal_manage_status(GWebResult *result, - connman_info("Client-Timezone: %s", str); - - if (!enable_online_to_ready_transition) -- free_connman_wispr_portal_context(wp_context); -+ wispr_portal_context_unref(wp_context); - - __connman_service_ipconfig_indicate_state(service, - CONNMAN_SERVICE_STATE_ONLINE, type); -@@ -616,7 +648,7 @@ static void wispr_portal_request_wispr_login(struct connman_service *service, - return; - } - -- free_connman_wispr_portal_context(wp_context); -+ wispr_portal_context_unref(wp_context); - return; - } - -@@ -952,7 +984,7 @@ static int wispr_portal_detect(struct connman_wispr_portal_context *wp_context) - - if (wp_context->token == 0) { - err = -EINVAL; -- free_connman_wispr_portal_context(wp_context); -+ wispr_portal_context_unref(wp_context); - } - } else if (wp_context->timeout == 0) { - wp_context->timeout = g_idle_add(no_proxy_callback, wp_context); -@@ -1001,7 +1033,7 @@ int __connman_wispr_start(struct connman_service *service, - - /* If there is already an existing context, we wipe it */ - if (wp_context) -- free_connman_wispr_portal_context(wp_context); -+ wispr_portal_context_unref(wp_context); - - wp_context = create_wispr_portal_context(); - if (!wp_context) --- -cgit - diff --git a/gnu/packages/patches/connman-CVE-2022-32293-pt2.patch b/gnu/packages/patches/connman-CVE-2022-32293-pt2.patch deleted file mode 100644 index 556e69e397..0000000000 --- a/gnu/packages/patches/connman-CVE-2022-32293-pt2.patch +++ /dev/null @@ -1,173 +0,0 @@ -https://git.kernel.org/pub/scm/network/connman/connman.git/patch/?id=416bfaff988882c553c672e5bfc2d4f648d29e8a - -From 416bfaff988882c553c672e5bfc2d4f648d29e8a Mon Sep 17 00:00:00 2001 -From: Daniel Wagner <wagi@monom.org> -Date: Tue, 5 Jul 2022 09:11:09 +0200 -Subject: wispr: Update portal context references - -Maintain proper portal context references to avoid UAF. - -Fixes: CVE-2022-32293 ---- - src/wispr.c | 34 ++++++++++++++++++++++------------ - 1 file changed, 22 insertions(+), 12 deletions(-) - -diff --git a/src/wispr.c b/src/wispr.c -index bde7e63b..84bed33f 100644 ---- a/src/wispr.c -+++ b/src/wispr.c -@@ -105,8 +105,6 @@ static bool enable_online_to_ready_transition = false; - - static void connman_wispr_message_init(struct connman_wispr_message *msg) - { -- DBG(""); -- - msg->has_error = false; - msg->current_element = NULL; - -@@ -166,8 +164,6 @@ static void free_wispr_routes(struct connman_wispr_portal_context *wp_context) - static void free_connman_wispr_portal_context( - struct connman_wispr_portal_context *wp_context) - { -- DBG("context %p", wp_context); -- - if (wp_context->wispr_portal) { - if (wp_context->wispr_portal->ipv4_context == wp_context) - wp_context->wispr_portal->ipv4_context = NULL; -@@ -483,9 +479,6 @@ static void portal_manage_status(GWebResult *result, - &str)) - connman_info("Client-Timezone: %s", str); - -- if (!enable_online_to_ready_transition) -- wispr_portal_context_unref(wp_context); -- - __connman_service_ipconfig_indicate_state(service, - CONNMAN_SERVICE_STATE_ONLINE, type); - -@@ -546,14 +539,17 @@ static void wispr_portal_request_portal( - { - DBG(""); - -+ wispr_portal_context_ref(wp_context); - wp_context->request_id = g_web_request_get(wp_context->web, - wp_context->status_url, - wispr_portal_web_result, - wispr_route_request, - wp_context); - -- if (wp_context->request_id == 0) -+ if (wp_context->request_id == 0) { - wispr_portal_error(wp_context); -+ wispr_portal_context_unref(wp_context); -+ } - } - - static bool wispr_input(const guint8 **data, gsize *length, -@@ -618,13 +614,15 @@ static void wispr_portal_browser_reply_cb(struct connman_service *service, - return; - - if (!authentication_done) { -- wispr_portal_error(wp_context); - free_wispr_routes(wp_context); -+ wispr_portal_error(wp_context); -+ wispr_portal_context_unref(wp_context); - return; - } - - /* Restarting the test */ - __connman_service_wispr_start(service, wp_context->type); -+ wispr_portal_context_unref(wp_context); - } - - static void wispr_portal_request_wispr_login(struct connman_service *service, -@@ -700,11 +698,13 @@ static bool wispr_manage_message(GWebResult *result, - - wp_context->wispr_result = CONNMAN_WISPR_RESULT_LOGIN; - -+ wispr_portal_context_ref(wp_context); - if (__connman_agent_request_login_input(wp_context->service, - wispr_portal_request_wispr_login, -- wp_context) != -EINPROGRESS) -+ wp_context) != -EINPROGRESS) { - wispr_portal_error(wp_context); -- else -+ wispr_portal_context_unref(wp_context); -+ } else - return true; - - break; -@@ -753,6 +753,7 @@ static bool wispr_portal_web_result(GWebResult *result, gpointer user_data) - if (length > 0) { - g_web_parser_feed_data(wp_context->wispr_parser, - chunk, length); -+ wispr_portal_context_unref(wp_context); - return true; - } - -@@ -770,6 +771,7 @@ static bool wispr_portal_web_result(GWebResult *result, gpointer user_data) - - switch (status) { - case 000: -+ wispr_portal_context_ref(wp_context); - __connman_agent_request_browser(wp_context->service, - wispr_portal_browser_reply_cb, - wp_context->status_url, wp_context); -@@ -781,11 +783,14 @@ static bool wispr_portal_web_result(GWebResult *result, gpointer user_data) - if (g_web_result_get_header(result, "X-ConnMan-Status", - &str)) { - portal_manage_status(result, wp_context); -+ wispr_portal_context_unref(wp_context); - return false; -- } else -+ } else { -+ wispr_portal_context_ref(wp_context); - __connman_agent_request_browser(wp_context->service, - wispr_portal_browser_reply_cb, - wp_context->redirect_url, wp_context); -+ } - - break; - case 300: -@@ -798,6 +803,7 @@ static bool wispr_portal_web_result(GWebResult *result, gpointer user_data) - !g_web_result_get_header(result, "Location", - &redirect)) { - -+ wispr_portal_context_ref(wp_context); - __connman_agent_request_browser(wp_context->service, - wispr_portal_browser_reply_cb, - wp_context->status_url, wp_context); -@@ -808,6 +814,7 @@ static bool wispr_portal_web_result(GWebResult *result, gpointer user_data) - - wp_context->redirect_url = g_strdup(redirect); - -+ wispr_portal_context_ref(wp_context); - wp_context->request_id = g_web_request_get(wp_context->web, - redirect, wispr_portal_web_result, - wispr_route_request, wp_context); -@@ -820,6 +827,7 @@ static bool wispr_portal_web_result(GWebResult *result, gpointer user_data) - - break; - case 505: -+ wispr_portal_context_ref(wp_context); - __connman_agent_request_browser(wp_context->service, - wispr_portal_browser_reply_cb, - wp_context->status_url, wp_context); -@@ -832,6 +840,7 @@ static bool wispr_portal_web_result(GWebResult *result, gpointer user_data) - wp_context->request_id = 0; - done: - wp_context->wispr_msg.message_type = -1; -+ wispr_portal_context_unref(wp_context); - return false; - } - -@@ -890,6 +899,7 @@ static void proxy_callback(const char *proxy, void *user_data) - xml_wispr_parser_callback, wp_context); - - wispr_portal_request_portal(wp_context); -+ wispr_portal_context_unref(wp_context); - } - - static gboolean no_proxy_callback(gpointer user_data) --- -cgit - diff --git a/gnu/packages/patches/connman-add-missing-libppp-compat.h.patch b/gnu/packages/patches/connman-add-missing-libppp-compat.h.patch new file mode 100644 index 0000000000..4432c161fd --- /dev/null +++ b/gnu/packages/patches/connman-add-missing-libppp-compat.h.patch @@ -0,0 +1,140 @@ +From: Tobias Geerinckx-Rice <me@tobias.gr> +Date: Sun Sep 24 02:00:00 2023 +0200 +Subject: connman: Add missing libppp-compat.h. + +This file was taken verbatim from upstream commit +a48864a2e5d2a725dfc6eef567108bc13b43857f. Its absence was since +fixed in upstream commit 09c1bbfd55647b18b5bbbb99ef2b6d902465ca16. + +--- +diff -Naur a/scripts/libppp-compat.h b/scripts/libppp-compat.h +--- a/scripts/libppp-compat.h 1970-01-01 01:00:00.000000000 +0100 ++++ b/scripts/libppp-compat.h 2023-09-29 00:45:18.726709659 +0200 +@@ -0,0 +1,127 @@ ++/* Copyright (C) Eivind Naess, eivnaes@yahoo.com */ ++/* SPDX-License-Identifier: GPL-2.0-or-later */ ++ ++#ifndef __LIBPPP_COMPAT_H__ ++#define __LIBPPP_COMPAT_H__ ++ ++/* Define USE_EAPTLS compile with EAP TLS support against older pppd headers, ++ * pppd >= 2.5.0 use PPP_WITH_EAPTLS and is defined in pppdconf.h */ ++#define USE_EAPTLS 1 ++ ++/* Define INET6 to compile with IPv6 support against older pppd headers, ++ * pppd >= 2.5.0 use PPP_WITH_IPV6CP and is defined in pppdconf.h */ ++#define INET6 1 ++ ++/* PPP < 2.5.0 defines and exports VERSION which overlaps with current package VERSION define. ++ * this silly macro magic is to work around that. */ ++#undef VERSION ++#include <pppd/pppd.h> ++ ++#ifndef PPPD_VERSION ++#define PPPD_VERSION VERSION ++#endif ++ ++#include <pppd/fsm.h> ++#include <pppd/ccp.h> ++#include <pppd/eui64.h> ++#include <pppd/ipcp.h> ++#include <pppd/ipv6cp.h> ++#include <pppd/eap.h> ++#include <pppd/upap.h> ++ ++#ifdef HAVE_PPPD_CHAP_H ++#include <pppd/chap.h> ++#endif ++ ++#ifdef HAVE_PPPD_CHAP_NEW_H ++#include <pppd/chap-new.h> ++#endif ++ ++#ifdef HAVE_PPPD_CHAP_MS_H ++#include <pppd/chap_ms.h> ++#endif ++ ++#ifndef PPP_PROTO_CHAP ++#define PPP_PROTO_CHAP 0xc223 ++#endif ++ ++#ifndef PPP_PROTO_EAP ++#define PPP_PROTO_EAP 0xc227 ++#endif ++ ++ ++#if WITH_PPP_VERSION < PPP_VERSION(2,5,0) ++ ++static inline bool ++debug_on (void) ++{ ++ return debug; ++} ++ ++static inline const char ++*ppp_ipparam (void) ++{ ++ return ipparam; ++} ++ ++static inline int ++ppp_ifunit (void) ++{ ++ return ifunit; ++} ++ ++static inline const char * ++ppp_ifname (void) ++{ ++ return ifname; ++} ++ ++static inline int ++ppp_get_mtu (int idx) ++{ ++ return netif_get_mtu(idx); ++} ++ ++typedef enum ppp_notify ++{ ++ NF_PID_CHANGE, ++ NF_PHASE_CHANGE, ++ NF_EXIT, ++ NF_SIGNALED, ++ NF_IP_UP, ++ NF_IP_DOWN, ++ NF_IPV6_UP, ++ NF_IPV6_DOWN, ++ NF_AUTH_UP, ++ NF_LINK_DOWN, ++ NF_FORK, ++ NF_MAX_NOTIFY ++} ppp_notify_t; ++ ++typedef void (ppp_notify_fn) (void *ctx, int arg); ++ ++static inline void ++ppp_add_notify (ppp_notify_t type, ppp_notify_fn *func, void *ctx) ++{ ++ struct notifier **list[NF_MAX_NOTIFY] = { ++ [NF_PID_CHANGE ] = &pidchange, ++ [NF_PHASE_CHANGE] = &phasechange, ++ [NF_EXIT ] = &exitnotify, ++ [NF_SIGNALED ] = &sigreceived, ++ [NF_IP_UP ] = &ip_up_notifier, ++ [NF_IP_DOWN ] = &ip_down_notifier, ++ [NF_IPV6_UP ] = &ipv6_up_notifier, ++ [NF_IPV6_DOWN ] = &ipv6_down_notifier, ++ [NF_AUTH_UP ] = &auth_up_notifier, ++ [NF_LINK_DOWN ] = &link_down_notifier, ++ [NF_FORK ] = &fork_notifier, ++ }; ++ ++ struct notifier **notify = list[type]; ++ if (notify) { ++ add_notifier(notify, func, ctx); ++ } ++} ++ ++#endif /* #if WITH_PPP_VERSION < PPP_VERSION(2,5,0) */ ++#endif /* #if__LIBPPP_COMPAT_H__ */ diff --git a/gnu/packages/patches/teuchos-remove-duplicate-using.patch b/gnu/packages/patches/teuchos-remove-duplicate-using.patch new file mode 100644 index 0000000000..55cd3f6fc3 --- /dev/null +++ b/gnu/packages/patches/teuchos-remove-duplicate-using.patch @@ -0,0 +1,34 @@ +commit e27d9ae98502626d8407045a4e082797682ba56b +Author: Christian Glusa <caglusa@sandia.gov> +Date: Fri Jul 3 18:02:27 2020 -0600 + + Teuchos Comm test: remove duplicate 'using ...' + +diff --git a/packages/teuchos/comm/test/Comm/reduce.cpp b/packages/teuchos/comm/test/Comm/reduce.cpp +index c05ebc0dc34..eac1975ef83 100644 +--- a/packages/teuchos/comm/test/Comm/reduce.cpp ++++ b/packages/teuchos/comm/test/Comm/reduce.cpp +@@ -53,9 +53,6 @@ bool + testReduceSum (bool& success, std::ostream& out, + const int root, const Teuchos::Comm<int>& comm) + { +-#ifdef HAVE_TEUCHOS_MPI +- using Teuchos::MpiComm; +-#endif // HAVE_TEUCHOS_MPI + using Teuchos::reduce; + using Teuchos::TypeNameTraits; + using std::endl; +diff --git a/packages/teuchos/comm/test/Comm/scatter.cpp b/packages/teuchos/comm/test/Comm/scatter.cpp +index 0ca961d2846..001009029c4 100644 +--- a/packages/teuchos/comm/test/Comm/scatter.cpp ++++ b/packages/teuchos/comm/test/Comm/scatter.cpp +@@ -53,9 +53,6 @@ bool + testScatter (bool& success, std::ostream& out, + const int root, const Teuchos::Comm<int>& comm) + { +-#ifdef HAVE_TEUCHOS_MPI +- using Teuchos::MpiComm; +-#endif // HAVE_TEUCHOS_MPI + using Teuchos::scatter; + using Teuchos::TypeNameTraits; + using std::endl; diff --git a/gnu/packages/patches/tpetra-remove-duplicate-using.patch b/gnu/packages/patches/tpetra-remove-duplicate-using.patch new file mode 100644 index 0000000000..e9cb2c6472 --- /dev/null +++ b/gnu/packages/patches/tpetra-remove-duplicate-using.patch @@ -0,0 +1,18 @@ +commit 919ceb0acbf4c6bc4f463433504a338c643612c2 +Author: Karen D. Devine <kddevin@sandia.gov> +Date: Tue Feb 2 13:49:13 2021 -0700 + + tpetra: removed duplicate using statement #8673 + +diff --git a/packages/tpetra/core/src/Tpetra_Details_FixedHashTable_def.hpp b/packages/tpetra/core/src/Tpetra_Details_FixedHashTable_def.hpp +index a76f78c41a8..69d4dc46d03 100644 +--- a/packages/tpetra/core/src/Tpetra_Details_FixedHashTable_def.hpp ++++ b/packages/tpetra/core/src/Tpetra_Details_FixedHashTable_def.hpp +@@ -1094,7 +1094,6 @@ init (const keys_type& keys, + + // Allocate the array of (key,value) pairs. Don't fill it with + // zeros, because we will fill it with actual data below. +- using Kokkos::ViewAllocateWithoutInitializing; + typedef typename val_type::non_const_type nonconst_val_type; + nonconst_val_type val (ViewAllocateWithoutInitializing ("Tpetra::FixedHashTable::pairs"), + theNumKeys); diff --git a/gnu/packages/patches/unison-fix-ocaml-4.08.patch b/gnu/packages/patches/unison-fix-ocaml-4.08.patch deleted file mode 100644 index 811f590721..0000000000 --- a/gnu/packages/patches/unison-fix-ocaml-4.08.patch +++ /dev/null @@ -1,81 +0,0 @@ -This patch is taken from the opam repository: -https://github.com/ocaml/opam-repository/blob/master/packages/unison/unison.2.51.2/files/ocaml48.patch - -It fixes compatibility with changes introduced in OCaml 4.08. - -diff --git a/src/Makefile.OCaml b/src/Makefile.OCaml -index 7cefa2e..378fc8b 100644 ---- a/src/Makefile.OCaml -+++ b/src/Makefile.OCaml -@@ -272,7 +272,7 @@ endif - - # Gtk GUI - ifeq ($(UISTYLE), gtk) -- CAMLFLAGS+=-I +lablgtk -+ CAMLFLAGS+=-I $(LABLGTKLIB) - OCAMLOBJS+=pixmaps.cmo uigtk.cmo linkgtk.cmo - OCAMLLIBS+=lablgtk.cma - endif -@@ -282,7 +282,7 @@ OCAMLFIND := $(shell command -v ocamlfind 2> /dev/null) - - ifeq ($(UISTYLE), gtk2) - ifndef OCAMLFIND -- CAMLFLAGS+=-I +lablgtk2 -+ CAMLFLAGS+=-I $(LABLGTK2LIB) - else - CAMLFLAGS+=$(shell $(OCAMLFIND) query -i-format lablgtk2 ) - endif -diff --git a/src/files.ml b/src/files.ml -index 5ff1881..1d1fbcc 100644 ---- a/src/files.ml -+++ b/src/files.ml -@@ -734,7 +734,7 @@ let get_files_in_directory dir = - with End_of_file -> - dirh.System.closedir () - end; -- Sort.list (<) !files -+ List.sort String.compare !files - - let ls dir pattern = - Util.convertUnixErrorsToTransient -diff --git a/src/recon.ml b/src/recon.ml -index 2c619bb..2412c18 100644 ---- a/src/recon.ml -+++ b/src/recon.ml -@@ -661,8 +661,8 @@ let rec reconcile - - (* Sorts the paths so that they will be displayed in order *) - let sortPaths pathUpdatesList = -- Sort.list -- (fun (p1, _) (p2, _) -> Path.compare p1 p2 <= 0) -+ List.sort -+ Path.compare - pathUpdatesList - - let rec enterPath p1 p2 t = -diff --git a/src/system/system_generic.ml b/src/system/system_generic.ml -index 453027d..c2288b8 100755 ---- a/src/system/system_generic.ml -+++ b/src/system/system_generic.ml -@@ -47,7 +47,7 @@ let open_out_gen = open_out_gen - let chmod = Unix.chmod - let chown = Unix.chown - let utimes = Unix.utimes --let link = Unix.link -+let link s d = Unix.link s d - let openfile = Unix.openfile - let opendir f = - let h = Unix.opendir f in -diff --git a/src/uigtk2.ml b/src/uigtk2.ml -index fbc5d8f..4e82cc2 100644 ---- a/src/uigtk2.ml -+++ b/src/uigtk2.ml -@@ -94,7 +94,7 @@ let icon = - let icon = - let p = GdkPixbuf.create ~width:48 ~height:48 ~has_alpha:true () in - Gpointer.blit -- (Gpointer.region_of_string Pixmaps.icon_data) (GdkPixbuf.get_pixels p); -+ (Gpointer.region_of_bytes Pixmaps.icon_data) (GdkPixbuf.get_pixels p); - p - - let leftPtrWatch = diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index 42edafb25b..8d5af5bd46 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -4384,7 +4384,7 @@ applications.") (build-system python-build-system) (arguments '(#:tests? #f)) ;no tests (propagated-inputs - (list python-flask-restful)) + (list python-flask-restful python-six)) (home-page "https://github.com/rantav/flask-restful-swagger") (synopsis "Extract Swagger specs from Flask-Restful projects") (description "This package lets you extract Swagger API documentation diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 34cfc07307..29ac11df95 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -1290,6 +1290,31 @@ different units.") scatter plots, histograms and heatmaps in the terminal using braille dots.") (license license:expat))) +(define-public python-portpicker + (package + (name "python-portpicker") + (version "1.6.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "portpicker" version)) + (sha256 + (base32 "1yiisk4h8qliwf99khz3lszrpjf6km76fbhzg01fwrbgz7b7yl5x")))) + (build-system pyproject-build-system) + (arguments + (list + #:test-flags + ;; This fails because portserver ends up in bin, not site-packages + '(list "--ignore=src/tests/portserver_test.py"))) + (propagated-inputs (list python-psutil)) + (native-inputs (list python-pytest net-tools)) + (home-page "https://github.com/google/python_portpicker") + (synopsis "Choose unique available network ports") + (description + "This package provides a library to choose unique available network +ports.") + (license license:asl2.0))) + (define-public python-mdx-gh-links (package (name "python-mdx-gh-links") @@ -33957,6 +33982,23 @@ functions markdown-compliant strings.") (license license:expat))) +(define-public python-yattag + (package + (name "python-yattag") + (version "1.15.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "yattag" version)) + (sha256 + (base32 "05p4dgdp8wwvnsvcv7n4zn8k602w345kw4vq67s9d792w55sa3wn")))) + (build-system python-build-system) + (synopsis "HTML or XML generator for Python") + (description + "Yattag is a Python library for generating HTML or XML in a pythonic way.") + (home-page "https://www.yattag.org/") + (license license:lgpl2.1))) + (define-public python-zbarlight (package (name "python-zbarlight") diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm index 8e0b7dc9b0..a85762c352 100644 --- a/gnu/packages/radio.scm +++ b/gnu/packages/radio.scm @@ -80,6 +80,7 @@ #:use-module (gnu packages multiprecision) #:use-module (gnu packages ncurses) #:use-module (gnu packages networking) + #:use-module (gnu packages openstack) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages popt) @@ -87,6 +88,7 @@ #:use-module (gnu packages protobuf) #:use-module (gnu packages pretty-print) #:use-module (gnu packages python) + #:use-module (gnu packages python-check) #:use-module (gnu packages python-science) #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) @@ -102,6 +104,7 @@ #:use-module (gnu packages texinfo) #:use-module (gnu packages tls) #:use-module (gnu packages video) + #:use-module (gnu packages wxwidgets) #:use-module (gnu packages xiph) #:use-module (gnu packages xml) #:use-module (gnu packages xorg) @@ -1197,7 +1200,7 @@ satellites.") (define-public gqrx (package (name "gqrx") - (version "2.17") + (version "2.17.2") (source (origin (method git-fetch) @@ -1206,7 +1209,7 @@ satellites.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0gg2i4x4z9ggliflpb00434q28831qfrxr0dv7d83ahagy428z22")))) + (base32 "1psfbwdgac4wkl6vjdk092rmwbd7228l0d3l5p9ab48d6vyrn2kp")))) (build-system qt-build-system) (native-inputs (list pkg-config)) @@ -2335,7 +2338,7 @@ defined radio with support for rtl-sdr.") (define-public csdr (package (name "csdr") - (version "0.18.1") + (version "0.18.2") (source (origin (method git-fetch) @@ -2344,7 +2347,7 @@ defined radio with support for rtl-sdr.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1vgl7d03khdql45jq5xxayqfhb5sasxhjmrl621gyk1k8kxaqs8a")))) + (base32 "0j5d64na47w1j1sprwj41d9dzvs2x7xwyp0pbl439g686iwp7m9d")))) (build-system cmake-build-system) (native-inputs (list pkg-config)) @@ -3088,6 +3091,53 @@ For example, it can decode the telemetry and images sent by some meteorological satellites.") (license license:gpl3))) +(define-public chirp + (let ((commit "f59b5b254c33be55c73368d6ab036eaadd9e5e76") + (revision "1")) + (package + (name "chirp") + (version (git-version "0.4.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/kk7ds/chirp") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1s2qwz00nxqqfrs87ayjbdqg5i8mxf5xgxmqpincsn8rjxgw1s7x")))) + (build-system python-build-system) + (native-inputs + (list python-mock + python-mox3 + python-pep8 + python-pytest + python-pytest-mock + python-pyyaml + python-tox)) + (inputs + (list python-future + python-importlib-resources + python-pyserial + python-requests + python-six + python-wxpython + python-yattag)) + (arguments + (list ;; FIXME: How to run the tests? The default way crashes. + #:tests? #f + #:phases + #~(modify-phases %standard-phases + (add-after 'build 'set-home-for-tests + (lambda _ + (setenv "HOME" "/tmp")))))) + (synopsis "Cross-radio programming tool") + (description "Chirp is a cross-radio programming tool. It supports a +growing list of radios across several manufacturers and allows transferring of +memory contents between them.") + (home-page "https://chirp.danplanet.com") + (license license:gpl3+)))) + (define-public qdmr (package (name "qdmr") diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm index c8b8d03521..89a79cee2d 100644 --- a/gnu/packages/samba.scm +++ b/gnu/packages/samba.scm @@ -467,34 +467,30 @@ key-value pair databases and a real LDAP database.") (define-public ppp (package (name "ppp") - (version "2.4.9") + (version "2.5.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/ppp-project/ppp") - (commit version))) + (commit (string-append "ppp-" version)))) (file-name (git-file-name name version)) (sha256 (base32 - "1bhhksdclsnkw54a517ndrw55q5zljjbh9pcqz1z4a2z2flxpsgk")))) + "1pkvaxi5318lvsadspj603wdkxah01vgjhywri7rv249p249vfr7")))) (build-system gnu-build-system) (arguments - (list #:tests? #f ;; No "check" target - #:make-flags #~(list (string-append "CC=" #$(cc-for-target))) - #:phases - #~(modify-phases %standard-phases - (add-before 'configure 'patch-Makefile - (lambda* (#:key inputs #:allow-other-keys) - (let ((openssl (assoc-ref inputs "openssl")) - (libpcap (assoc-ref inputs "libpcap"))) - (substitute* "pppd/Makefile.linux" - (("/usr/include/openssl") - (string-append openssl "/include")) - (("-DPPP_FILTER") - (string-append "-DPPP_FILTER -I" libpcap "/include"))) - (substitute* "pppd/pppcrypt.h" - (("des\\.h") "openssl/des.h"))) - #t))))) + (list #:tests? #f ; no tests + #:configure-flags + #~(list (string-append "CC=" #$(cc-for-target)) + (string-append "--with-openssl=" + (assoc-ref %build-inputs "openssl"))) + #:make-flags #~(list "V=1") ; better build logs + #:phases + #~(modify-phases %standard-phases + (add-before 'bootstrap 'no-/bin/sh + (lambda _ (delete-file "autogen.sh")))))) + (native-inputs + (list autoconf automake libtool)) (inputs (list libpcap openssl)) (synopsis "Implementation of the Point-to-Point Protocol") diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm index 3a5d5ef59b..2434a563c2 100644 --- a/gnu/packages/ssh.scm +++ b/gnu/packages/ssh.scm @@ -473,32 +473,30 @@ with optional @acronym{TLS, Transport-Level Security} to protect credentials.") "1pax8sqlvcc7ammsxd9r53yx4m2hg1827wfz6f4rrwjx9q9lnbl7")))) (build-system gnu-build-system) (arguments - '(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-FHS-file-names - (lambda _ - (substitute* "scripts/mosh.pl" - (("/bin/sh") - (which "sh"))) - #t)) - (add-after 'install 'wrap - (lambda* (#:key outputs #:allow-other-keys) - ;; Make sure 'mosh' can find 'mosh-client' and - ;; 'mosh-server'. - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin"))) - (wrap-program (string-append bin "/mosh") - `("PATH" ":" prefix (,bin))))))))) + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-FHS-file-names + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "scripts/mosh.pl" + (("/bin/sh" shell) + (search-input-file inputs shell))))) + (add-after 'install 'wrap + (lambda _ + ;; Make sure 'mosh' can find 'mosh-client' and 'mosh-server'. + (let ((bin (string-append #$output "/bin"))) + (wrap-program (string-append bin "/mosh") + `("PATH" ":" prefix (,bin))))))))) (native-inputs (list pkg-config)) (inputs - `(("openssl" ,openssl) - ("perl" ,perl) - ("perl-io-tty" ,perl-io-tty) - ("zlib" ,zlib) - ("ncurses" ,ncurses) - ("protobuf" ,protobuf) - ("boost-headers" ,boost))) + (list boost + ncurses + openssl + perl + perl-io-tty + protobuf + zlib)) (home-page "https://mosh.org/") (synopsis "Remote shell tolerant to intermittent connectivity") (description diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm index 989fd00e61..c5cecfa6db 100644 --- a/gnu/packages/terminals.scm +++ b/gnu/packages/terminals.scm @@ -77,6 +77,7 @@ #:use-module (gnu packages crates-io) #:use-module (gnu packages crates-graphics) #:use-module (gnu packages crypto) + #:use-module (gnu packages curl) #:use-module (gnu packages dlang) #:use-module (gnu packages docbook) #:use-module (gnu packages fontutils) @@ -1385,30 +1386,20 @@ comfortably in a pager or editor. (define-public eternalterminal (package (name "eternalterminal") - (version "6.0.13") + (version "6.2.4") (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/MisterTea/EternalTerminal") - (commit (string-append "et-v" version)))) - (file-name (git-file-name name version)) + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/MisterTea/EternalTerminal") + (commit (string-append "et-v" version)))) + (file-name (git-file-name name version)) (sha256 - (base32 "0sb1hypg2276y8c2a5vivrkcxp70swddvhnd9h273if3kv6j879r")))) + (base32 "13vhr701j85ga37d53339bxgrf9fqa6z1zcp6s3ly5bb8p7lyvzm")))) (build-system cmake-build-system) (arguments - '(#:configure-flags '("-DBUILD_TEST=ON") - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'insert-googletests - (lambda* (#:key inputs #:allow-other-keys) - (let ((tests (assoc-ref inputs "googletest"))) - (copy-recursively tests "external/googletest")) - #t))))) - (inputs - (list gflags libsodium protobuf)) - (native-inputs - `(("googletest" ,(package-source googletest)))) + '(#:configure-flags '("-DBUILD_TEST=ON" "-DDISABLE_VCPKG=1"))) + (inputs (list libsodium protobuf openssl zlib curl)) (home-page "https://mistertea.github.io/EternalTerminal/") (synopsis "Remote shell that reconnects without interrupting the session") (description "@dfn{Eternal Terminal} (ET) is a remote shell that diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm index 61484bfd86..d62c00dcff 100644 --- a/gnu/packages/tls.scm +++ b/gnu/packages/tls.scm @@ -200,6 +200,7 @@ living in the same process.") (package (name "gnutls") (version "3.7.7") + (replacement gnutls-3.8.1) (source (origin (method url-fetch) ;; Note: Releases are no longer on ftp.gnu.org since the @@ -303,6 +304,22 @@ required structures.") (define-deprecated/public-alias gnutls-latest gnutls) +;; Replacement for gnutls@3.7.7 to address GNUTLS-SA-2020-07-14 / +;; CVE-2023-0361 +(define-public gnutls-3.8.1 + (package + (inherit gnutls) + (version "3.8.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnupg/gnutls/v" + (version-major+minor version) + "/gnutls-" version ".tar.xz")) + (patches (search-patches "gnutls-skip-trust-store-test.patch")) + (sha256 + (base32 + "1742jiigwsfhx7nj5rz7dwqr8d46npsph6b68j7siar0mqarx2xs")))))) + (define-public gnutls/dane ;; GnuTLS with build libgnutls-dane, implementing DNS-based ;; Authentication of Named Entities. This is required for GNS functionality diff --git a/gnu/packages/tree-sitter.scm b/gnu/packages/tree-sitter.scm index 009f2edeef..41257d42f1 100644 --- a/gnu/packages/tree-sitter.scm +++ b/gnu/packages/tree-sitter.scm @@ -98,16 +98,16 @@ Tree-sitter parsing library.") (define-public tree-sitter (package (name "tree-sitter") - (version "0.20.8") + (version "0.20.10") ;untagged (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/tree-sitter/tree-sitter") - (commit (string-append "v" version)))) + (commit "0e4ff0bb27edf37b76fc7d35aa768b02cf4392ad"))) (file-name (git-file-name name version)) (sha256 (base32 - "10w17lfn9asqrk612xivkx26lc620s3nnm30hhlyqd4bj19k7gyv")) + "1bai4gdhf8w5p1i9np2kl2ms0jq6rgq98qpiipipzayb9jjjlxcy")) (modules '((guix build utils))) (snippet #~(begin ;; Remove bundled ICU parts @@ -175,6 +175,7 @@ This package includes the @code{libtree-sitter} runtime library.") ;; good compromise compared to maintaining two different sets of ;; grammars (Guix packages vs test fixtures). "--skip=tests::corpus_test" + "--skip=tests::github_issue_test" "--skip=tests::highlight_test" "--skip=tests::node_test" "--skip=tests::parser_test" @@ -196,6 +197,7 @@ This package includes the @code{libtree-sitter} runtime library.") ("rust-dirs" ,rust-dirs-3) ("rust-html-escape" ,rust-html-escape-0.2) ("rust-libloading" ,rust-libloading-0.7) + ("rust-path-slash" ,rust-path-slash-0.2) ("rust-rand" ,rust-rand-0.8) ("rust-rustc-hash" ,rust-rustc-hash-1) ("rust-semver" ,rust-semver-1) @@ -315,17 +317,35 @@ which will be used as a snippet in origin." "0.19.0")) (define-public tree-sitter-javascript - (tree-sitter-grammar - "javascript" "JavaScript(JSX)" - "175yrk382n2di0c2xn4gpv8y4n83x1lg4hqn04vabf0yqynlkq67" - "0.20.0" - #:commit "rust-0.20.0")) + ;; Commit required by tree-sitter-typescript 0.20.3. + (let ((commit "f772967f7b7bc7c28f845be2420a38472b16a8ee") + (revision "22")) + (tree-sitter-grammar + "javascript" "JavaScript(JSX)" + "0vp7z57scpbcvyxpya06lnpz9f5kjdb66wjlkrp684xwjjgq1wxd" + (git-version "0.20.0" revision commit) + #:commit commit + #:get-cleanup-snippet + (lambda (grammar-directories) + #~(begin + (use-modules (guix build utils)) + (delete-file "tree-sitter-javascript.wasm") + (delete-file "binding.gyp") + (delete-file-recursively "bindings") + (for-each + (lambda (lang) + (with-directory-excursion lang + (delete-file "src/grammar.json") + (delete-file "src/node-types.json") + (delete-file "src/parser.c") + (delete-file-recursively "src/tree_sitter"))) + '#$grammar-directories)))))) (define-public tree-sitter-typescript (tree-sitter-grammar "typescript" "TypeScript and TSX" - "07fl9d968lal0aqj4f0n16p3n94cjkgfp54wynfr8gbdkjss5v5x" - "0.20.1" + "08k785q3cy8byrb3zrg93mfidnj1pcx1ggm1xhd8rgmfs2v6jns5" + "0.20.3" #:inputs (list tree-sitter-javascript) #:grammar-directories '("typescript" "tsx"))) @@ -349,19 +369,15 @@ which will be used as a snippet in origin." (define-public tree-sitter-c (tree-sitter-grammar "c" "C" - "1w03r4l773ki4iq2xxsc2pqxf3pjsbybq3xq4glmnsihgylibn8v" - "0.20.2")) + "00mhz2rz98pxssgyhm0iymgcb8cbv8slsf3nmfgyjhfchpmb9n6z" + "0.20.6")) (define-public tree-sitter-cpp - ;; There are a lot of additions, the last tag was placed more than 1 year ago - (let ((commit "56cec4c2eb5d6af3d2942e69e35db15ae2433740") - (revision "0")) - (tree-sitter-grammar - "cpp" "C++" - "0c5iwg9j6naivvr18glfp095x32nfl9hbw0q02rhh1b59fkpjs09" - (git-version "0.20.0" revision commit) - #:commit commit - #:inputs (list tree-sitter-c)))) + (tree-sitter-grammar + "cpp" "C++" + "0fsb6la0da3azh7m9p1w3w079bpg6074dy8jisjw1yq1w1r9grxy" + "0.20.3" + #:inputs (list tree-sitter-c))) (define-public tree-sitter-cmake (tree-sitter-grammar @@ -374,14 +390,14 @@ which will be used as a snippet in origin." ;; No tags at all, version in the source code is 0.19.0 (let ((commit "b20eaa75565243c50be5e35e253d8beb58f45d56") (revision "0")) - (tree-sitter-grammar - "elixir" "Elixir" - "1i0c0xki3sv24649p0ws7xs2jagbwg7z7baz1960239bj94nl487" - (git-version "0.19.0" revision commit) - #:article "an" - #:repository-url "https://github.com/elixir-lang/tree-sitter-elixir" - #:commit commit - #:license (list license:asl2.0 license:expat)))) + (tree-sitter-grammar + "elixir" "Elixir" + "1i0c0xki3sv24649p0ws7xs2jagbwg7z7baz1960239bj94nl487" + (git-version "0.19.0" revision commit) + #:article "an" + #:repository-url "https://github.com/elixir-lang/tree-sitter-elixir" + #:commit commit + #:license (list license:asl2.0 license:expat)))) (define-public tree-sitter-heex (tree-sitter-grammar @@ -393,14 +409,14 @@ which will be used as a snippet in origin." (define-public tree-sitter-bash (tree-sitter-grammar "bash" "Bash" - "18c030bb65r50i6z37iy7jb9z9i8i36y7b08dbc9bchdifqsijs5" - "0.19.0")) + "01sjympivwhr037c0gdx5fqw8fvzchq4fd4m8wlr8mdw50di0ag2" + "0.20.4")) (define-public tree-sitter-c-sharp (tree-sitter-grammar "c-sharp" "C#" - "054fmpf47cwh59gbg00sc0nl237ba4rnxi73miz39yqzcs87055r" - "0.19.1")) + "0lijbi5q49g50ji00p2lb45rvd76h07sif3xjl9b31yyxwillr6l" + "0.20.0")) (define-public tree-sitter-dockerfile (tree-sitter-grammar @@ -425,14 +441,10 @@ which will be used as a snippet in origin." #:repository-url "https://github.com/camdencheek/tree-sitter-go-mod.git")) (define-public tree-sitter-go - ;; There are a lot of additions, the last tag was placed more than 1 year ago - (let ((commit "64457ea6b73ef5422ed1687178d4545c3e91334a") - (revision "0")) - (tree-sitter-grammar - "go" "Go" - "16d32m78y8jricba9xav35c9y0k2r29irj5xyqgq24323yln9jnz" - (git-version "0.19.1" revision commit) - #:commit commit))) + (tree-sitter-grammar + "go" "Go" + "0wlhwcdlaj74japyn8wjza0fbwckqwbqv8iyyqdk0a5jf047rdqv" + "0.20.0")) (define-public tree-sitter-haskell ;; There are a lot of additions, the last tag was placed more than 4 years ago @@ -483,14 +495,10 @@ which will be used as a snippet in origin." #:commit commit))) (define-public tree-sitter-python - ;; There are a lot of additions, the last tag was placed a while ago - (let ((commit "9e53981ec31b789ee26162ea335de71f02186003") - (revision "0")) - (tree-sitter-grammar - "python" "Python" - "1lv3pgb7h2a0f121897r0lwc228rjwb77y3a6g3ghifx1rgbwvqg" - (git-version "0.20.0" revision commit) - #:commit commit))) + (tree-sitter-grammar + "python" "Python" + "1sxz3npk3mq86abcnghfjs38nzahx7nrn3wdh8f8940hy71d0pvi" + "0.20.4")) (define-public tree-sitter-r ;; No tags @@ -515,8 +523,8 @@ which will be used as a snippet in origin." (define-public tree-sitter-rust (tree-sitter-grammar "rust" "Rust" - "149jhy01mqvavwa8jlxb8bnn7sxpfq2x1w35si6zn60b7kqjlx8f" - "0.20.3")) + "1pk4mb3gh62xk0qlhxa8ihhxvnf7grrcchwg2xv99yy6yb3yh26b" + "0.20.4")) (define-public tree-sitter-clojure (tree-sitter-grammar diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm index 779164c53f..ea4601a5d0 100644 --- a/gnu/packages/virtualization.scm +++ b/gnu/packages/virtualization.scm @@ -30,6 +30,7 @@ ;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com> ;;; Copyright © 2023 Juliana Sims <juli@incana.org> ;;; Copyright © 2023 Ahmad Draidi <a.r.draidi@redscript.org> +;;; Copyright © 2023 Sharlatan Hellseher <sharlatanus@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -65,6 +66,7 @@ #:use-module (gnu packages compression) #:use-module (gnu packages containers) #:use-module (gnu packages cross-base) + #:use-module (gnu packages crypto) #:use-module (gnu packages cryptsetup) #:use-module (gnu packages curl) #:use-module (gnu packages cyrus-sasl) @@ -79,8 +81,8 @@ #:use-module (gnu packages fonts) #:use-module (gnu packages fontutils) #:use-module (gnu packages freedesktop) - #:use-module (gnu packages gettext) #:use-module (gnu packages gcc) + #:use-module (gnu packages gettext) #:use-module (gnu packages gl) #:use-module (gnu packages glib) #:use-module (gnu packages gnome) @@ -113,17 +115,17 @@ #:use-module (gnu packages pkg-config) #:use-module (gnu packages polkit) #:use-module (gnu packages protobuf) + #:use-module (gnu packages pulseaudio) #:use-module (gnu packages python) #:use-module (gnu packages python-build) #:use-module (gnu packages python-check) #:use-module (gnu packages python-crypto) #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) - #:use-module (gnu packages pulseaudio) #:use-module (gnu packages readline) #:use-module (gnu packages rsync) - #:use-module (gnu packages selinux) #:use-module (gnu packages sdl) + #:use-module (gnu packages selinux) #:use-module (gnu packages sphinx) #:use-module (gnu packages spice) #:use-module (gnu packages ssh) @@ -135,6 +137,7 @@ #:use-module (gnu packages xdisorg) #:use-module (gnu packages xml) #:use-module (gnu packages xorg) + #:use-module ((guix licenses) #:prefix license:) #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (guix build-system go) @@ -142,9 +145,8 @@ #:use-module (guix build-system python) #:use-module (guix build-system trivial) #:use-module (guix download) - #:use-module (guix git-download) #:use-module (guix gexp) - #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix git-download) #:use-module (guix packages) #:use-module (guix utils) #:use-module (srfi srfi-1) @@ -1722,6 +1724,156 @@ manages Xen and LXC (Linux containers). It presents a summary view of running domains, their live performance and resource utilization statistics.") (license license:gpl2+))) +(define-public vmware-open-vm-tools + (package + (name "vmware-open-vm-tools") + (version "12.3.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/vmware/open-vm-tools") + (commit (string-append "stable-" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1hbimhady0v1kd45azknl1lgzgldhgdjd7bj540rn3y4cai5cnk1")))) + (build-system gnu-build-system) + (arguments + (list + #:configure-flags + #~(list "--with-fuse=fuse3" + "--without-kernel-modules" + "--without-x" + (string-append + "--with-udev-rules-dir=" #$output "/lib/udev/rules.d")) + ;; TODO: Add iproute2 dbus which commands wrap. + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "open-vm-tools"))) + (replace 'bootstrap + (lambda _ + (system* "autoreconf" "-if"))) + (add-after 'bootstrap 'patch-paths + (lambda _ + (substitute* "Makefile.am" + (("/etc/vmware-tools/") + (string-append #$output "/etc/vmware-tools/"))) + (substitute* "scripts/Makefile.am" + (("/etc/vmware-tools") + (string-append #$output "/etc/vmware-tools")) + (("/usr/bin") + (string-append #$output "/bin"))) + (substitute* "services/vmtoolsd/Makefile.am" + (("/etc/vmware-tools") + (string-append #$output "/etc/vmware-tools")) + (("\\$\\(PAM_PREFIX\\)") + (string-append #$output "/$(PAM_PREFIX)"))) + (substitute* "vgauth/service/Makefile.am" + (("/etc/vmware-tools/vgauth/schemas") + (string-append #$output "/etc/vmware-tools/vgauth/schemas")) + (("etc/vmware-tools/vgauth.conf") + (string-append #$output "/etc/vmware-tools/vgauth.conf"))) + (substitute* "vmhgfs-fuse/config.c" + (("/bin/fusermount3") + (string-append + #$(this-package-input "fuse") "/bin/fusermount3"))) + ;; XXX: This part might need more testing with shutdown and halt + ;; commands provided by Shepherd. + (substitute* "lib/system/systemLinux.c" + (("/sbin/shutdown") + (string-append + #$(this-package-input "shepherd") "/sbin/shutdown")) + (("/bin/reboot") + (string-append + #$(this-package-input "shepherd") "/sbin/reboot"))) + (substitute* "services/plugins/vix/foundryToolsDaemon.c" + (("/bin/mount") + (string-append + #$(this-package-input "util-linux") "/bin/mount")) + (("/usr/bin/vmhgfs-fuse") + (string-append #$output "/bin/vmhgfs-fuse")))))))) + (native-inputs + (list `(,glib "bin") ; for glib-genmarshal + autoconf + automake + libltdl + libtool + pkg-config)) + (inputs + (list eudev + fuse + glib + xmlsec + libmspack + ;; libdnet ; Not packed + libtirpc + libxcrypt + libxml2 + linux-pam + openssl + procps + rpcsvc-proto + shepherd ;for 'halt' and 'reboot', invoked from VMWare host. + util-linux + xmlsec)) + (home-page "https://github.com/vmware/open-vm-tools") + (synopsis "Tools for VMWare guest VM to enhance host-guest integration") + (description + "@code{open-vm-tools} is a set of services and modules that enable several +features in VMware products for better management of, and seamless user +interactions with, guests. + +@code{open-vm-tools} enables the following features in VMware products: + +@itemize +@item The ability to perform virtual machine power operations gracefully. +@item Execution of VMware provided or user configured scripts in guests during +various power operations. +@item The ability to run programs, commands and file system operation in guests +to enhance guest automation. +@item Authentication for guest operations. +@item Periodic collection of network, disk, and memory usage information from +the guest. +@item Generation of heartbeat from guests to hosts so VMware's HA solution can +determine guests' availability. +@item Clock synchronization between guests and hosts or client desktops. +@item Quiescing guest file systems to allow hosts to capture +file-system-consistent guest snapshots. +@item Execution of pre-freeze and post-thaw scripts while quiescing guest file +systems. +@item The ability to customize guest operating systems immediately after +powering on virtual machines. +@item Enabling shared folders between host and guest file systems on VMware +Workstation and VMware Fusion. +@item Copying and pasting text, graphics, and files between guests and hosts or +client desktops. +@end itemize") + (license license:gpl2))) + +(define-public vmware-open-vm-tools-gtk + (package/inherit vmware-open-vm-tools + (name "vmware-open-vm-tools-gtk") + (inputs + (modify-inputs (package-inputs vmware-open-vm-tools) + (prepend gdk-pixbuf-xlib + gtk+ + gtkmm-3 + libdrm + libx11 + libxext + libxi + libxinerama + libxrandr + libxrender + libxtst))) + (arguments + (substitute-keyword-arguments (package-arguments vmware-open-vm-tools) + ((#:configure-flags flags) + #~(delete "--without-x" #$flags)))) + (description "This package provides a GTK+ support for @code{open-vm-tools}."))) + (define-public criu (package (name "criu") diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm index a56399341a..553b733a6b 100644 --- a/gnu/packages/xdisorg.scm +++ b/gnu/packages/xdisorg.scm @@ -783,7 +783,8 @@ and Matrox.") (arguments `(#:configure-flags '("--disable-static") - ,@(if (and (target-riscv64?) + ,@(if (and (or (target-riscv64?) + (target-aarch64?)) (%current-target-system)) `(#:phases (modify-phases %standard-phases @@ -798,7 +799,8 @@ and Matrox.") '("config.guess" "config.sub")))))) '()))) (native-inputs - (if (and (target-riscv64?) + (if (and (or (target-riscv64?) + (target-aarch64?)) (%current-target-system)) (list config) '())) @@ -3248,7 +3250,7 @@ using @command{dmenu}.") (define-public fuzzel (package (name "fuzzel") - (version "1.9.1") + (version "1.9.2") (home-page "https://codeberg.org/dnkl/fuzzel") (source (origin (method git-fetch) @@ -3256,7 +3258,7 @@ using @command{dmenu}.") (file-name (git-file-name name version)) (sha256 (base32 - "0k65nl2yifxnb95nv6nnikqxdanng2baw7gl47ji1av3gsdx3bsm")))) + "1pmxqdr00x9qbg0h23q3kywhd06qna0f6r5kfa8a1v7x2n1gylsz")))) (build-system meson-build-system) (arguments (list #:build-type "release" diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm index 66ba88f773..f65ffa7476 100644 --- a/gnu/packages/xorg.scm +++ b/gnu/packages/xorg.scm @@ -970,9 +970,9 @@ rendering commands to the X server.") (uri (string-append "mirror://xorg/individual/app/iceauth-" version - ".tar.bz2")) + ".tar.xz")) (sha256 - (base32 "1ik0mdidmyvy48hn8p2hwvf3535rf3m96hhf0mvcqrbj44x23vp6")))) + (base32 "01cc816fvdkkfcnqnyvgcshcip2jzjivwa8hzdvsz0snak5xzf9c")))) (build-system gnu-build-system) (inputs (list libice)) diff --git a/gnu/packages/zig-xyz.scm b/gnu/packages/zig-xyz.scm index fd42c21638..200b5c9940 100644 --- a/gnu/packages/zig-xyz.scm +++ b/gnu/packages/zig-xyz.scm @@ -1,5 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2022 Maya Tomasek <maya.tomasek@disroot.org> +;;; Copyright © 2023 Ekaitz Zarraga <ekaitz@elenq.tech> +;;; Copyright © 2023 Felix Lechner <felix.lechner@lease-up.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -21,10 +23,76 @@ #:use-module (guix git-download) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix build-system gnu) + #:use-module (guix build-system zig) #:use-module (guix gexp) #:use-module (gnu packages) - #:use-module (gnu packages zig) - #:use-module (gnu packages python)) + #:use-module (gnu packages freedesktop) + #:use-module (gnu packages man) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages python) + #:use-module (gnu packages wm) + #:use-module (gnu packages xdisorg) + #:use-module (gnu packages xorg) + #:use-module (gnu packages zig)) + +(define-public river + (package + (name "river") + (version "0.2.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/riverwm/river") + (commit (string-append "v" version)) + (recursive? #t))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1nvhqs6wwisf8ama7y1y3q3nf2jm9sh5bn46z8kyds8cikm0x1vh")))) + (build-system zig-build-system) + (arguments + (list + #:zig-build-flags #~(list "-Dxwayland") ;experimental xwayland support + #:zig-release-type "safe")) + (native-inputs (list libevdev + libxkbcommon + pkg-config + pixman + scdoc + wayland + wayland-protocols + wlroots)) + (home-page "https://github.com/riverwm/river") + (synopsis "Dynamic tiling Wayland compositor") + (description + "River is a dynamic tiling Wayland compositor with flexible +runtime configuration. It can run nested in an X11/Wayland session or also +directly from a tty using KMS/DRM.") + (license license:gpl3))) + +(define-public tigerbeetle + (package + (name "tigerbeetle") + (version "0.13.35") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tigerbeetledb/tigerbeetle") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0x8msknvq8s6vnlczq5fxmaiqvig2sbcv60c3x8zbgr28dsqpmll")))) + (build-system zig-build-system) + (arguments + (list + #:zig zig-0.9 + #:zig-release-type "safe")) + (synopsis "Distributed financial accounting database") + (description "TigerBeetle is a financial accounting database designed for +mission-critical safety and performance for financial services.") + (home-page "https://github.com/tigerbeetledb/tigerbeetle") + (license license:asl2.0))) (define-public zig-zls (package diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm index 99889e3072..0508a4282c 100644 --- a/gnu/services/networking.scm +++ b/gnu/services/networking.scm @@ -1813,7 +1813,10 @@ table inet filter { ct state { established, related } accept # allow from loopback - iifname lo accept + iif lo accept + # drop connections to lo not coming from lo + iif != lo ip daddr 127.0.0.1/8 drop + iif != lo ip6 daddr ::1/128 drop # allow icmp ip protocol icmp accept diff --git a/guix/build-system/zig.scm b/guix/build-system/zig.scm new file mode 100644 index 0000000000..16b8a712cc --- /dev/null +++ b/guix/build-system/zig.scm @@ -0,0 +1,124 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2023 Ekaitz Zarraga <ekaitz@elenq.tech> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (guix build-system zig) + #:use-module (guix search-paths) + #:use-module (guix store) + #:use-module (guix utils) + #:use-module (guix gexp) + #:use-module (guix monads) + #:use-module (guix packages) + #:use-module (guix build-system) + #:use-module (guix build-system gnu) + #:use-module (ice-9 match) + #:use-module (srfi srfi-26) + #:export (zig-build-system)) + + +(define (default-zig) + "Return the default zig package." + ;; Lazily resolve the binding to avoid a circular dependency. + (let ((zig (resolve-interface '(gnu packages zig)))) + (module-ref zig 'zig))) + +(define %zig-build-system-modules + ;; Build-side modules imported by default. + `((guix build zig-build-system) + (guix build syscalls) + ,@%gnu-build-system-modules)) + +(define* (zig-build name inputs + #:key + source + (tests? #t) + (test-target #f) + (zig-build-flags ''()) + (zig-test-flags ''()) + (zig-release-type #f) + (phases '%standard-phases) + (outputs '("out")) + (search-paths '()) + (system (%current-system)) + (guile #f) + (imported-modules %zig-build-system-modules) + (modules '((guix build zig-build-system) + (guix build utils)))) + "Build SOURCE using Zig, and with INPUTS." + (define builder + (with-imported-modules imported-modules + #~(begin + (use-modules #$@(sexp->gexp modules)) + (zig-build #:name #$name + #:source #+source + #:system #$system + #:test-target #$test-target + #:zig-build-flags #$zig-build-flags + #:zig-test-flags #$zig-test-flags + #:zig-release-type #$zig-release-type + #:tests? #$tests? + #:phases #$phases + #:outputs #$(outputs->gexp outputs) + #:search-paths '#$(sexp->gexp + (map search-path-specification->sexp + search-paths)) + #:inputs #$(input-tuples->gexp inputs))))) + + (mlet %store-monad ((guile (package->derivation (or guile (default-guile)) + system #:graft? #f))) + (gexp->derivation name builder + #:system system + #:guile-for-build guile))) + +(define* (lower name + #:key source inputs native-inputs outputs system target + (zig (default-zig)) + #:allow-other-keys + #:rest arguments) + "Return a bag for NAME." + + (define private-keywords + '(#:target #:zig #:inputs #:native-inputs #:outputs)) + + ;; TODO: support cross-compilation + ;; It's as simple as adding some build flags to `zig-build-flags` + ;; -Dtarget=aarch64-linux-musl, for example. + (and (not target) + (bag + (name name) + (system system) + (target target) + (host-inputs `(,@(if source + `(("source" ,source)) + '()) + ,@inputs + + ;; Keep the standard inputs of 'gnu-build-system' + ;; TODO: do we need this? + ,@(standard-packages))) + (build-inputs `(("zig" ,zig) + ,@native-inputs)) + (outputs outputs) + (build zig-build) + (arguments (strip-keyword-arguments private-keywords arguments))))) + +(define zig-build-system + (build-system + (name 'zig) + (description + "Zig build system, to build Zig packages") + (lower lower))) diff --git a/guix/build/zig-build-system.scm b/guix/build/zig-build-system.scm new file mode 100644 index 0000000000..d414ebfb17 --- /dev/null +++ b/guix/build/zig-build-system.scm @@ -0,0 +1,100 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2023 Ekaitz Zarraga <ekaitz@elenq.tech> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (guix build zig-build-system) + #:use-module ((guix build gnu-build-system) #:prefix gnu:) + #:use-module (guix build utils) + #:use-module (ice-9 popen) + #:use-module (ice-9 rdelim) + #:use-module (ice-9 ftw) + #:use-module (ice-9 format) + #:use-module (ice-9 match) + #:use-module (rnrs io ports) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) + #:export (%standard-phases + zig-build)) + +;; Interesting guide here: +;; https://github.com/riverwm/river/blob/master/PACKAGING.md +(define global-cache-dir "zig-cache") + +(define* (set-cc #:rest args) + ;; TODO: Zig needs the gcc-toolchain in order to find the libc. + ;; we need to think about how to solve this in the build system + ;; directly: --libc + (setenv "CC" "gcc")) + +(define* (set-zig-global-cache-dir #:rest args) + (setenv "ZIG_GLOBAL_CACHE_DIR" global-cache-dir)) + +(define* (build #:key + zig-build-flags + zig-release-type ;; "safe", "fast" or "small" empty for a + ;; debug build" + #:allow-other-keys) + "Build a given Zig package." + + (setenv "DESTDIR" "out") + (let ((call `("zig" "build" + "--prefix" "" ;; Don't add /usr + "--prefix-lib-dir" "lib" + "--prefix-exe-dir" "bin" + "--prefix-include-dir" "include" + ,@(if zig-release-type + (list (string-append "-Drelease-" zig-release-type)) + '()) + ,@zig-build-flags))) + (format #t "running: ~s~%" call) + (apply invoke call))) + +(define* (check #:key tests? + zig-test-flags + #:allow-other-keys) + "Run all the tests" + (when tests? + (let ((old-destdir (getenv "DESTDIR"))) + (setenv "DESTDIR" "test-out") ;; Avoid colisions with the build output + (let ((call `("zig" "build" "test" + ,@zig-test-flags))) + (format #t "running: ~s~%" call) + (apply invoke call)) + (if old-destdir + (setenv "DESTDIR" old-destdir) + (unsetenv "DESTDIR"))))) + +(define* (install #:key inputs outputs #:allow-other-keys) + "Install a given Zig package." + (let ((out (assoc-ref outputs "out"))) + (copy-recursively "out" out))) + +(define %standard-phases + (modify-phases gnu:%standard-phases + (delete 'bootstrap) + (delete 'configure) + (add-before 'build 'set-zig-global-cache-dir set-zig-global-cache-dir) + (add-before 'build 'set-cc set-cc) + (replace 'build build) + (replace 'check check) + (replace 'install install))) + + +(define* (zig-build #:key inputs (phases %standard-phases) + #:allow-other-keys #:rest args) + "Build the given Zig package, applying all of PHASES in order." + (apply gnu:gnu-build #:inputs inputs #:phases phases args)) diff --git a/guix/scripts/locate.scm b/guix/scripts/locate.scm index 5f3e28797f..ae64f46896 100644 --- a/guix/scripts/locate.scm +++ b/guix/scripts/locate.scm @@ -196,10 +196,15 @@ SELECT version FROM SchemaVersion ORDER BY version DESC LIMIT 1;" ;; System-wide database file name. (string-append %localstatedir "/cache/guix/locate/db.sqlite")) -(define (suitable-database create?) +(define (file-age stat) + "Return the age of the file denoted by STAT in seconds." + (- (current-time) (stat:mtime stat))) + +(define (suitable-database create? age-update-threshold) "Return a suitable database file. When CREATE? is true, the returned database will be opened for writing; otherwise, return the most recent one, -user or system." +user or system. Do not return the system database if it is older than +AGE-UPDATE-THRESHOLD seconds." (if (zero? (getuid)) system-database-file (if create? @@ -207,10 +212,13 @@ user or system." (let ((system (stat system-database-file #f)) (user (stat user-database-file #f))) (if user - (if (and system (> (stat:mtime system) (stat:mtime user))) + (if (and system + (> (stat:mtime system) (stat:mtime user)) + (< (file-age system) age-update-threshold)) system-database-file user-database-file) - (if system + (if (and system + (< (file-age system) age-update-threshold)) system-database-file user-database-file)))))) @@ -595,10 +603,6 @@ Locate FILE and return the list of packages that contain it.\n")) ;; database. (* 9 30 (* 24 60 60))) - (define (file-age stat) - ;; Return true if TIME denotes an "old" time. - (- (current-time) (stat:mtime stat))) - (with-error-handling (let* ((opts (parse-command-line args %options (list %default-options) @@ -610,7 +614,7 @@ Locate FILE and return the list of packages that contain it.\n")) (clear? (assoc-ref opts 'clear?)) (update? (assoc-ref opts 'update?)) (glob? (assoc-ref opts 'glob?)) - (database ((assoc-ref opts 'database) update?)) + (database ((assoc-ref opts 'database) update? age-update-threshold)) (method (assoc-ref opts 'method)) (files (reverse (filter-map (match-lambda (('argument . arg) arg) diff --git a/tests/guix-system.sh b/tests/guix-system.sh index adc0c44a6f..29e490c3d4 100644 --- a/tests/guix-system.sh +++ b/tests/guix-system.sh @@ -346,6 +346,10 @@ for example in gnu/system/examples/*.tmpl; do # The Raspberry Pi templates 'linux-libre-arm64-generic', which is # an ARM-only package. options="--system=aarch64-linux";; + *plasma*) + # Some architectures do not support all the packages Plasma + # depends on so restrict to x86_64-linux. + options="--system=x86_64-linux";; *vm-image*) # The VM image tries to build 'current-guix' as per 'guix pull'. # Skip it. diff --git a/tests/pack.scm b/tests/pack.scm index cf249f861b..8fdaed0168 100644 --- a/tests/pack.scm +++ b/tests/pack.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2017-2021, 2023 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2021, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; @@ -46,12 +46,6 @@ ;; Globally disable grafts because they can trigger early builds. (%graft? #f) -(define-syntax-rule (test-assertm name store exp) - (test-assert name - (let ((guile (package-derivation store %bootstrap-guile))) - (run-with-store store exp - #:guile-for-build guile)))) - (define %gzip-compressor ;; Compressor that uses the bootstrap 'gzip'. ((@ (guix scripts pack) compressor) "gzip" @@ -82,8 +76,14 @@ ;; dependencies may be already there, or we can get substitutes or build them ;; quite inexpensively; see <https://bugs.gnu.org/32184>. (with-external-store store + (define-syntax-rule (test-assertm name exp) + (test-assert name + (let ((guile (package-derivation store %bootstrap-guile))) + (run-with-store store exp + #:guile-for-build guile)))) + (unless store (test-skip 1)) - (test-assertm "self-contained-tarball" store + (test-assertm "self-contained-tarball" (mlet* %store-monad ((guile (set-guile-for-build (default-guile))) (profile -> (profile @@ -136,7 +136,7 @@ (built-derivations (list check)))) (unless store (test-skip 1)) - (test-assertm "self-contained-tarball + localstatedir" store + (test-assertm "self-contained-tarball + localstatedir" (mlet* %store-monad ((guile (set-guile-for-build (default-guile))) (profile -> (profile @@ -159,7 +159,7 @@ (built-derivations (list check)))) (unless store (test-skip 1)) - (test-assertm "self-contained-tarball + localstatedir, UTF-8 file names" store + (test-assertm "self-contained-tarball + localstatedir, UTF-8 file names" (mlet* %store-monad ((guile (set-guile-for-build (default-guile))) (tree (interned-file-tree @@ -210,7 +210,7 @@ (built-derivations (list check)))) (unless store (test-skip 1)) - (test-assertm "docker-image + localstatedir" store + (test-assertm "docker-image + localstatedir" (mlet* %store-monad ((guile (set-guile-for-build (default-guile))) (profile -> (profile @@ -250,7 +250,7 @@ (built-derivations (list check)))) (unless store (test-skip 1)) - (test-assertm "squashfs-image + localstatedir" store + (test-assertm "squashfs-image + localstatedir" (mlet* %store-monad ((guile (set-guile-for-build (default-guile))) (profile -> (profile @@ -289,7 +289,7 @@ (built-derivations (list check)))) (unless store (test-skip 1)) - (test-assertm "deb archive with symlinks and control files" store + (test-assertm "deb archive with symlinks and control files" (mlet* %store-monad ((guile (set-guile-for-build (default-guile))) (profile -> (profile @@ -378,7 +378,7 @@ (built-derivations (list check)))) (unless store (test-skip 1)) - (test-assertm "rpm archive can be installed/uninstalled" store + (test-assertm "rpm archive can be installed/uninstalled" (mlet* %store-monad ((guile (set-guile-for-build (default-guile))) (profile -> (profile |