aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/guix.texi53
-rwxr-xr-xetc/teams.scm1
-rw-r--r--gnu/build/image.scm14
-rw-r--r--gnu/compression.scm3
-rw-r--r--gnu/local.mk87
-rw-r--r--gnu/packages/acl.scm15
-rw-r--r--gnu/packages/admin.scm152
-rw-r--r--gnu/packages/android.scm2
-rw-r--r--gnu/packages/animation.scm8
-rw-r--r--gnu/packages/apl.scm2
-rw-r--r--gnu/packages/apr.scm40
-rw-r--r--gnu/packages/audio.scm96
-rw-r--r--gnu/packages/aux-files/python/sitecustomize.py2
-rw-r--r--gnu/packages/axoloti.scm6
-rw-r--r--gnu/packages/backup.scm7
-rw-r--r--gnu/packages/base.scm406
-rw-r--r--gnu/packages/bdw-gc.scm4
-rw-r--r--gnu/packages/benchmark.scm3
-rw-r--r--gnu/packages/bioinformatics.scm227
-rw-r--r--gnu/packages/bittorrent.scm3
-rw-r--r--gnu/packages/boost.scm35
-rw-r--r--gnu/packages/bootloaders.scm14
-rw-r--r--gnu/packages/bqn.scm2
-rw-r--r--gnu/packages/build-tools.scm18
-rw-r--r--gnu/packages/calendar.scm6
-rw-r--r--gnu/packages/cdrom.scm33
-rw-r--r--gnu/packages/check.scm116
-rw-r--r--gnu/packages/chicken.scm7
-rw-r--r--gnu/packages/chromium.scm1
-rw-r--r--gnu/packages/ci.scm4
-rw-r--r--gnu/packages/code.scm42
-rw-r--r--gnu/packages/commencement.scm466
-rw-r--r--gnu/packages/compression.scm12
-rw-r--r--gnu/packages/connman.scm28
-rw-r--r--gnu/packages/cpp.scm2
-rw-r--r--gnu/packages/cross-base.scm49
-rw-r--r--gnu/packages/crypto.scm24
-rw-r--r--gnu/packages/cryptsetup.scm140
-rw-r--r--gnu/packages/cups.scm72
-rw-r--r--gnu/packages/curl.scm43
-rw-r--r--gnu/packages/cyrus-sasl.scm3
-rw-r--r--gnu/packages/databases.scm93
-rw-r--r--gnu/packages/dbm.scm151
-rw-r--r--gnu/packages/debian.scm2
-rw-r--r--gnu/packages/debug.scm4
-rw-r--r--gnu/packages/dezyne.scm2
-rw-r--r--gnu/packages/dictionaries.scm39
-rw-r--r--gnu/packages/disk.scm53
-rw-r--r--gnu/packages/djvu.scm11
-rw-r--r--gnu/packages/dns.scm3
-rw-r--r--gnu/packages/docbook.scm1105
-rw-r--r--gnu/packages/docker.scm2
-rw-r--r--gnu/packages/documentation.scm7
-rw-r--r--gnu/packages/ebook.scm3
-rw-r--r--gnu/packages/elf.scm23
-rw-r--r--gnu/packages/emacs-xyz.scm36
-rw-r--r--gnu/packages/embedded.scm21
-rw-r--r--gnu/packages/emulators.scm9
-rw-r--r--gnu/packages/enchant.scm36
-rw-r--r--gnu/packages/engineering.scm82
-rw-r--r--gnu/packages/esolangs.scm2
-rw-r--r--gnu/packages/file-systems.scm1
-rw-r--r--gnu/packages/file.scm5
-rw-r--r--gnu/packages/finance.scm4
-rw-r--r--gnu/packages/firmware.scm2
-rw-r--r--gnu/packages/fonts.scm96
-rw-r--r--gnu/packages/fontutils.scm100
-rw-r--r--gnu/packages/freedesktop.scm269
-rw-r--r--gnu/packages/game-development.scm6
-rw-r--r--gnu/packages/games.scm84
-rw-r--r--gnu/packages/gawk.scm12
-rw-r--r--gnu/packages/gcc.scm267
-rw-r--r--gnu/packages/gd.scm65
-rw-r--r--gnu/packages/gdb.scm2
-rw-r--r--gnu/packages/genealogy.scm7
-rw-r--r--gnu/packages/genimage.scm2
-rw-r--r--gnu/packages/geo.scm72
-rw-r--r--gnu/packages/gettext.scm7
-rw-r--r--gnu/packages/ghostscript.scm42
-rw-r--r--gnu/packages/gimp.scm2
-rw-r--r--gnu/packages/glib.scm27
-rw-r--r--gnu/packages/gnome.scm89
-rw-r--r--gnu/packages/gnucash.scm2
-rw-r--r--gnu/packages/gnupg.scm170
-rw-r--r--gnu/packages/gnustep.scm29
-rw-r--r--gnu/packages/gnuzilla.scm8
-rw-r--r--gnu/packages/gps.scm4
-rw-r--r--gnu/packages/graph.scm4
-rw-r--r--gnu/packages/graphics.scm134
-rw-r--r--gnu/packages/graphviz.scm2
-rw-r--r--gnu/packages/groff.scm15
-rw-r--r--gnu/packages/gtk.scm219
-rw-r--r--gnu/packages/guile-wm.scm3
-rw-r--r--gnu/packages/guile-xyz.scm59
-rw-r--r--gnu/packages/guile.scm33
-rw-r--r--gnu/packages/haskell-apps.scm4
-rw-r--r--gnu/packages/haskell.scm26
-rw-r--r--gnu/packages/hurd.scm122
-rw-r--r--gnu/packages/ibus.scm14
-rw-r--r--gnu/packages/image-processing.scm55
-rw-r--r--gnu/packages/image.scm46
-rw-r--r--gnu/packages/imagemagick.scm135
-rw-r--r--gnu/packages/inkscape.scm276
-rw-r--r--gnu/packages/instrumentation.scm2
-rw-r--r--gnu/packages/java.scm375
-rw-r--r--gnu/packages/jemalloc.scm2
-rw-r--r--gnu/packages/julia.scm4
-rw-r--r--gnu/packages/kawa.scm6
-rw-r--r--gnu/packages/kde-plasma.scm2
-rw-r--r--gnu/packages/kde.scm4
-rw-r--r--gnu/packages/language.scm2
-rw-r--r--gnu/packages/ld-wrapper.in27
-rw-r--r--gnu/packages/libunistring.scm4
-rw-r--r--gnu/packages/license.scm3
-rw-r--r--gnu/packages/linux.scm264
-rw-r--r--gnu/packages/llvm.scm50
-rw-r--r--gnu/packages/lua.scm41
-rw-r--r--gnu/packages/lxqt.scm4
-rw-r--r--gnu/packages/machine-learning.scm4
-rw-r--r--gnu/packages/mail.scm29
-rw-r--r--gnu/packages/make-bootstrap.scm58
-rw-r--r--gnu/packages/man.scm17
-rw-r--r--gnu/packages/mate.scm17
-rw-r--r--gnu/packages/maths.scm51
-rw-r--r--gnu/packages/messaging.scm242
-rw-r--r--gnu/packages/moreutils.scm6
-rw-r--r--gnu/packages/mpd.scm11
-rw-r--r--gnu/packages/mpi.scm2
-rw-r--r--gnu/packages/multiprecision.scm90
-rw-r--r--gnu/packages/music.scm78
-rw-r--r--gnu/packages/nettle.scm4
-rw-r--r--gnu/packages/networking.scm52
-rw-r--r--gnu/packages/node.scm5
-rw-r--r--gnu/packages/nss.scm5
-rw-r--r--gnu/packages/ocaml.scm2
-rw-r--r--gnu/packages/ocr.scm1
-rw-r--r--gnu/packages/openldap.scm6
-rw-r--r--gnu/packages/openstack.scm13
-rw-r--r--gnu/packages/orange.scm4
-rw-r--r--gnu/packages/package-management.scm26
-rw-r--r--gnu/packages/password-utils.scm16
-rw-r--r--gnu/packages/patches/atf-execute-with-shell.patch39
-rw-r--r--gnu/packages/patches/autotrace-pkg-config.patch123
-rw-r--r--gnu/packages/patches/clang-13-remove-crypt-interceptors.patch214
-rw-r--r--gnu/packages/patches/clang-14-remove-crypt-interceptors.patch214
-rw-r--r--gnu/packages/patches/clang-16-remove-crypt-interceptors.patch222
-rw-r--r--gnu/packages/patches/clang-runtime-13-glibc-2.36-compat.patch50
-rw-r--r--gnu/packages/patches/clang-runtime-14-glibc-2.36-compat.patch50
-rw-r--r--gnu/packages/patches/clang-runtime-9-glibc-2.36-compat.patch50
-rw-r--r--gnu/packages/patches/date-ignore-zonenow.patch13
-rw-r--r--gnu/packages/patches/dblatex-inkscape-1.0.patch39
-rw-r--r--gnu/packages/patches/diffutils-fix-signal-processing.patch58
-rw-r--r--gnu/packages/patches/docbook-utils-documentation-edits.patch102
-rw-r--r--gnu/packages/patches/docbook-utils-escape-characters.patch36
-rw-r--r--gnu/packages/patches/docbook-utils-remove-jade-sp.patch216
-rw-r--r--gnu/packages/patches/docbook-utils-respect-refentry-for-name.patch36
-rw-r--r--gnu/packages/patches/docbook-utils-source-date-epoch.patch31
-rw-r--r--gnu/packages/patches/docbook-utils-use-date-element.patch63
-rw-r--r--gnu/packages/patches/docbook-xsl-nonrecursive-string-subst.patch40
-rw-r--r--gnu/packages/patches/docbook-xsl-support-old-url.patch17
-rw-r--r--gnu/packages/patches/docbook2x-filename-handling.patch44
-rw-r--r--gnu/packages/patches/docbook2x-fix-synopsis.patch26
-rw-r--r--gnu/packages/patches/docbook2x-manpage-typo.patch26
-rw-r--r--gnu/packages/patches/docbook2x-preprocessor-declaration.patch91
-rw-r--r--gnu/packages/patches/docbook2x-static-datadir-evaluation.patch21
-rw-r--r--gnu/packages/patches/ffmpeg-4-binutils-2.41.patch76
-rw-r--r--gnu/packages/patches/ffmpeg-remove-compressed_ten_bit_format.patch43
-rw-r--r--gnu/packages/patches/file-32bit-time.patch40
-rw-r--r--gnu/packages/patches/gcc-10-libsanitizer-no-crypt.patch134
-rw-r--r--gnu/packages/patches/gcc-12-libsanitizer-no-crypt.patch134
-rw-r--r--gnu/packages/patches/gcc-13-libsanitizer-no-crypt.patch140
-rw-r--r--gnu/packages/patches/gcc-13.2.0-libstdc++-docbook-xsl-uri.patch50
-rw-r--r--gnu/packages/patches/gcc-13.2.0-libstdc++-info-install-fix.patch70
-rw-r--r--gnu/packages/patches/gcc-5.5.0-libstdc++-xmlcatalog.patch402
-rw-r--r--gnu/packages/patches/gcc-7-libsanitizer-fsconfig-command.patch32
-rw-r--r--gnu/packages/patches/gd-Revert-fix-303-gdlib.pc.patch179
-rw-r--r--gnu/packages/patches/ghc-9-StgCRunAsm-only-when-needed.patch33
-rw-r--r--gnu/packages/patches/ghc-9.2-glibc-2.33-link-order.patch35
-rw-r--r--gnu/packages/patches/ghc-testsuite-recomp015-execstack.patch10
-rw-r--r--gnu/packages/patches/glib-gerror-null-format.patch137
-rw-r--r--gnu/packages/patches/glib-networking-disable-connection-tls1.2-test.patch18
-rw-r--r--gnu/packages/patches/glibc-2.37-versioned-locpath.patch90
-rw-r--r--gnu/packages/patches/glibc-2.38-ldd-x86_64.patch8
-rw-r--r--gnu/packages/patches/glibc-2.39-bootstrap-system.patch69
-rw-r--r--gnu/packages/patches/glibc-bootstrap-system.patch27
-rw-r--r--gnu/packages/patches/glibc-versioned-locpath.patch35
-rw-r--r--gnu/packages/patches/gnumach-support-noide.patch25
-rw-r--r--gnu/packages/patches/gnutls-cross.patch82
-rw-r--r--gnu/packages/patches/hurd-add-without-rump-configure-option.patch82
-rw-r--r--gnu/packages/patches/hurd-fix-rumpdisk-build.patch41
-rw-r--r--gnu/packages/patches/hurd-fix-types-of-read-write-and-readables-methods-2.patch155
-rw-r--r--gnu/packages/patches/hurd-fix-types-of-read-write-and-readables-methods.patch891
-rw-r--r--gnu/packages/patches/imagemagick-CVE-2020-27829.patch27
-rw-r--r--gnu/packages/patches/imagemagick-ReadDCMImage-fix.patch26
-rw-r--r--gnu/packages/patches/imagemagick-ReadDCMPixels-fix.patch35
-rw-r--r--gnu/packages/patches/imagemagick-WriteTHUMBNAILImage-fix.patch25
-rw-r--r--gnu/packages/patches/inkscape-poppler-compat.patch45
-rw-r--r--gnu/packages/patches/libsepol-versioned-docbook.patch56
-rw-r--r--gnu/packages/patches/openjdk-10-char-reproducibility.patch12
-rw-r--r--gnu/packages/patches/openjdk-10-classlist-reproducibility.patch27
-rw-r--r--gnu/packages/patches/openjdk-10-corba-reproducibility.patch12
-rw-r--r--gnu/packages/patches/openjdk-10-jar-reproducibility.patch103
-rw-r--r--gnu/packages/patches/openjdk-10-jtask-reproducibility.patch53
-rw-r--r--gnu/packages/patches/openjdk-10-module-reproducibility.patch305
-rw-r--r--gnu/packages/patches/openjdk-10-module3-reproducibility.patch34
-rw-r--r--gnu/packages/patches/openjdk-10-module4-reproducibility.patch14
-rw-r--r--gnu/packages/patches/openjdk-11-classlist-reproducibility.patch11
-rw-r--r--gnu/packages/patches/openjdk-13-classlist-reproducibility.patch11
-rw-r--r--gnu/packages/patches/openjdk-15-jtask-reproducibility.patch40
-rw-r--r--gnu/packages/patches/openjdk-9-classlist-reproducibility.patch31
-rw-r--r--gnu/packages/patches/openjdk-9-idlj-reproducibility.patch37
-rw-r--r--gnu/packages/patches/openjdk-9-jar-reproducibility.patch107
-rw-r--r--gnu/packages/patches/openjdk-9-module-reproducibility.patch297
-rw-r--r--gnu/packages/patches/openjdk-9-module2-reproducibility.patch125
-rw-r--r--gnu/packages/patches/openjdk-9-module3-reproducibility.patch36
-rw-r--r--gnu/packages/patches/pstoedit-fix-gcc12.patch12
-rw-r--r--gnu/packages/patches/pstoedit-fix-plainC.patch47
-rw-r--r--gnu/packages/patches/pstoedit-pkglibdir.patch19
-rw-r--r--gnu/packages/patches/python-3-reproducible-build.patch30
-rw-r--r--gnu/packages/patches/python-matplotlib-fix-legend-loc-best-test.patch84
-rw-r--r--gnu/packages/patches/python-pillow-use-zlib-1.3.patch21
-rw-r--r--gnu/packages/patches/sdl-libx11-1.6.patch13
-rw-r--r--gnu/packages/patches/sway-add-libinput-config-accel.patch49
-rw-r--r--gnu/packages/patches/webrtc-audio-processing-big-endian.patch93
-rw-r--r--gnu/packages/patches/zig-do-not-link-against-librt.patch10
-rw-r--r--gnu/packages/patchutils.scm2
-rw-r--r--gnu/packages/pciutils.scm18
-rw-r--r--gnu/packages/pcre.scm4
-rw-r--r--gnu/packages/pdf.scm21
-rw-r--r--gnu/packages/perl.scm19
-rw-r--r--gnu/packages/phabricator.scm3
-rw-r--r--gnu/packages/photo.scm10
-rw-r--r--gnu/packages/piet.scm20
-rw-r--r--gnu/packages/pkg-config.scm271
-rw-r--r--gnu/packages/plan9.scm5
-rw-r--r--gnu/packages/plotutils.scm2
-rw-r--r--gnu/packages/polkit.scm1
-rw-r--r--gnu/packages/presentation.scm4
-rw-r--r--gnu/packages/python-web.scm2
-rw-r--r--gnu/packages/python-xyz.scm37
-rw-r--r--gnu/packages/python.scm31
-rw-r--r--gnu/packages/qt.scm6
-rw-r--r--gnu/packages/racket.scm2
-rw-r--r--gnu/packages/radio.scm1
-rw-r--r--gnu/packages/raspberry-pi.scm5
-rw-r--r--gnu/packages/ratpoison.scm2
-rw-r--r--gnu/packages/rednotebook.scm6
-rw-r--r--gnu/packages/rpm.scm3
-rw-r--r--gnu/packages/ruby.scm21
-rw-r--r--gnu/packages/rust.scm688
-rw-r--r--gnu/packages/samba.scm28
-rw-r--r--gnu/packages/sawfish.scm4
-rw-r--r--gnu/packages/scheme.scm2
-rw-r--r--gnu/packages/screen.scm8
-rw-r--r--gnu/packages/sdl.scm178
-rw-r--r--gnu/packages/search.scm3
-rw-r--r--gnu/packages/security-token.scm12
-rw-r--r--gnu/packages/selinux.scm15
-rw-r--r--gnu/packages/shells.scm3
-rw-r--r--gnu/packages/shellutils.scm2
-rw-r--r--gnu/packages/simh.scm2
-rw-r--r--gnu/packages/skarnet.scm3
-rw-r--r--gnu/packages/speech.scm3
-rw-r--r--gnu/packages/sphinx.scm12
-rw-r--r--gnu/packages/spice.scm3
-rw-r--r--gnu/packages/ssh.scm4
-rw-r--r--gnu/packages/sssd.scm8
-rw-r--r--gnu/packages/stb.scm2
-rw-r--r--gnu/packages/storage.scm2
-rw-r--r--gnu/packages/suckless.scm3
-rw-r--r--gnu/packages/syncthing.scm4
-rw-r--r--gnu/packages/syndication.scm9
-rw-r--r--gnu/packages/task-management.scm21
-rw-r--r--gnu/packages/telegram.scm4
-rw-r--r--gnu/packages/terminals.scm2
-rw-r--r--gnu/packages/tex.scm4
-rw-r--r--gnu/packages/texinfo.scm9
-rw-r--r--gnu/packages/text-editors.scm12
-rw-r--r--gnu/packages/time.scm9
-rw-r--r--gnu/packages/tls.scm77
-rw-r--r--gnu/packages/tor-browsers.scm2
-rw-r--r--gnu/packages/tryton.scm9
-rw-r--r--gnu/packages/version-control.scm1076
-rw-r--r--gnu/packages/video.scm107
-rw-r--r--gnu/packages/virtualization.scm53
-rw-r--r--gnu/packages/vnc.scm2
-rw-r--r--gnu/packages/vpn.scm6
-rw-r--r--gnu/packages/web-browsers.scm30
-rw-r--r--gnu/packages/web.scm63
-rw-r--r--gnu/packages/wget.scm9
-rw-r--r--gnu/packages/wm.scm22
-rw-r--r--gnu/packages/wordnet.scm6
-rw-r--r--gnu/packages/xdisorg.scm68
-rw-r--r--gnu/packages/xfce.scm4
-rw-r--r--gnu/packages/xiph.scm4
-rw-r--r--gnu/packages/xml.scm106
-rw-r--r--gnu/packages/xorg.scm39
-rw-r--r--gnu/packages/zig.scm6
-rw-r--r--guix/build-system/agda.scm3
-rw-r--r--guix/build-system/android-ndk.scm2
-rw-r--r--guix/build-system/ant.scm2
-rw-r--r--guix/build-system/asdf.scm2
-rw-r--r--guix/build-system/cargo.scm2
-rw-r--r--guix/build-system/chicken.scm2
-rw-r--r--guix/build-system/cmake.scm7
-rw-r--r--guix/build-system/copy.scm2
-rw-r--r--guix/build-system/dub.scm2
-rw-r--r--guix/build-system/elm.scm2
-rw-r--r--guix/build-system/emacs.scm2
-rw-r--r--guix/build-system/font.scm4
-rw-r--r--guix/build-system/glib-or-gtk.scm2
-rw-r--r--guix/build-system/gnu.scm52
-rw-r--r--guix/build-system/go.scm6
-rw-r--r--guix/build-system/guile.scm4
-rw-r--r--guix/build-system/haskell.scm2
-rw-r--r--guix/build-system/julia.scm2
-rw-r--r--guix/build-system/linux-module.scm2
-rw-r--r--guix/build-system/maven.scm2
-rw-r--r--guix/build-system/minify.scm2
-rw-r--r--guix/build-system/mix.scm9
-rw-r--r--guix/build-system/node.scm2
-rw-r--r--guix/build-system/ocaml.scm2
-rw-r--r--guix/build-system/perl.scm2
-rw-r--r--guix/build-system/pyproject.scm8
-rw-r--r--guix/build-system/python.scm11
-rw-r--r--guix/build-system/qt.scm17
-rw-r--r--guix/build-system/r.scm2
-rw-r--r--guix/build-system/rakudo.scm2
-rw-r--r--guix/build-system/rebar.scm2
-rw-r--r--guix/build-system/renpy.scm2
-rw-r--r--guix/build-system/ruby.scm2
-rw-r--r--guix/build-system/scons.scm2
-rw-r--r--guix/build-system/texlive.scm2
-rw-r--r--guix/build-system/waf.scm2
-rw-r--r--guix/build-system/zig.scm2
-rw-r--r--guix/build/agda-build-system.scm3
-rw-r--r--guix/build/cargo-build-system.scm6
-rw-r--r--guix/build/copy-build-system.scm18
-rw-r--r--guix/build/font-build-system.scm6
-rw-r--r--guix/build/gnu-build-system.scm114
-rw-r--r--guix/build/go-build-system.scm20
-rw-r--r--guix/build/utils.scm60
-rw-r--r--guix/git-download.scm10
-rw-r--r--guix/grafts.scm15
-rw-r--r--guix/import/crate.scm22
-rw-r--r--guix/import/utils.scm12
-rw-r--r--guix/man-db.scm47
-rw-r--r--guix/packages.scm98
-rw-r--r--guix/profiles.scm41
-rw-r--r--guix/scripts/refresh.scm2
-rw-r--r--guix/search-paths.scm49
-rw-r--r--guix/ui.scm2
-rw-r--r--tests/build-utils.scm12
-rw-r--r--tests/crate.scm77
-rw-r--r--tests/go.scm2
-rw-r--r--tests/modules.scm8
-rw-r--r--tests/profiles.scm7
357 files changed, 11218 insertions, 7520 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index 22caa984ad..da696447c5 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -9211,6 +9211,9 @@ install all files but those matching the exclusion filters.
If both inclusions and exclusions are specified, the exclusions are done
on top of the inclusions.
@end itemize
+@item When a package has multiple outputs, the @code{#:output} argument
+can be used to specify which output label the files should be installed
+to.
@end itemize
In all cases, the paths relative to @var{source} are preserved within
@var{target}.
@@ -9227,6 +9230,9 @@ e.g., install @file{foo/sub/file} to @file{share/my-app/sub/file}.
@file{share/my-app/sub/file}.
@item @code{("foo/sub" "share/my-app" #:include ("file"))}: Install @file{foo/sub/file} to
@file{share/my-app/file}.
+@item @code{("foo/doc" "share/my-app/doc" #:output "doc")}: Install
+@file{"foo/doc"} to @file{"share/my-app/doc"} within the @code{"doc"}
+output.
@end itemize
@end defvar
@@ -10521,12 +10527,18 @@ Make @var{file} writable for its owner.
@deffn {Procedure} copy-recursively source destination @
[#:log (current-output-port)] [#:follow-symlinks? #f] @
[#:copy-file copy-file] [#:keep-mtime? #f] [#:keep-permissions? #t]
+ [#:select? (const #t)]
Copy @var{source} directory to @var{destination}. Follow symlinks if
@var{follow-symlinks?} is true; otherwise, just preserve them. Call
-@var{copy-file} to copy regular files. When @var{keep-mtime?} is true,
-keep the modification time of the files in @var{source} on those of
-@var{destination}. When @var{keep-permissions?} is true, preserve file
-permissions. Write verbose output to the @var{log} port.
+@var{copy-file} to copy regular files. Call @var{select?}, taking two
+arguments, @var{file} and @var{stat}, for each entry in @var{source},
+where @var{file} is the entry's absolute file name and @var{stat} is the
+result of @code{lstat} (or @code{stat} if @var{follow-symlinks?} is
+true); exclude entries for which @var{select?} does not return true.
+When @var{keep-mtime?} is true, keep the modification time of the files
+in @var{source} on those of @var{destination}.
+When @var{keep-permissions?} is true, preserve file permissions. Write
+verbose output to the @var{log} port.
@end deffn
@deffn {Procedure} delete-file-recursively dir [#:follow-mounts? #f]
@@ -10973,17 +10985,14 @@ contain a list of @file{catalog.xml} files (not directories), which are
to be found in @file{xml} sub-directories---nothing less. The search
path specification looks like this:
+@c This is defined at (guix search-paths) as $XML_CATALOG_FILES.
@lisp
-(package
- (name "libxml2")
- ;; some fields omitted
- (native-search-paths
- (list (search-path-specification
- (variable "XML_CATALOG_FILES")
- (separator " ")
- (files '("xml"))
- (file-pattern "^catalog\\.xml$")
- (file-type 'regular)))))
+(search-path-specification
+ (variable "XML_CATALOG_FILES")
+ (separator " ")
+ (files '("xml"))
+ (file-pattern "^catalog\\.xml$")
+ (file-type 'regular))
@end lisp
Worry not, search path specifications are usually not this tricky.
@@ -11019,15 +11028,16 @@ The type of file being matched---@code{'directory} or @code{'regular},
though it can be any symbol returned by @code{stat:type} (@pxref{File
System, @code{stat},, guile, GNU Guile Reference Manual}).
-In the libxml2 example above, we would match regular files; in the
-Python example, we would match directories.
+In the @env{XML_CATALOG_FILES} example above, we would match regular
+files; in the Python example, we would match directories.
@item @code{file-pattern} (default: @code{#f})
This must be either @code{#f} or a regular expression specifying
files to be matched @emph{within} the sub-directories specified by the
@code{files} field.
-Again, the libxml2 example shows a situation where this is needed.
+Again, the @env{XML_CATALOG_FILES} example shows a situation where this
+is needed.
@end table
@end deftp
@@ -11035,6 +11045,15 @@ Some search paths are not tied by a single package but to many packages.
To reduce duplications, some of them are pre-defined in @code{(guix
search-paths)}.
+@defvar $SGML_CATALOG_FILES
+@defvarx $XML_CATALOG_FILES
+These two search paths indicate where the
+@url{https://www.oasis-open.org/specs/a401.htm,TR9401 catalog}@footnote{
+Alternatively known as SGML catalog.} or
+@url{https://www.oasis-open.org/committees/download.php/14809/xml-catalogs.html,
+XML catalog} files can be found.
+@end defvar
+
@defvar $SSL_CERT_DIR
@defvarx $SSL_CERT_FILE
These two search paths indicate where X.509 certificates can be found
diff --git a/etc/teams.scm b/etc/teams.scm
index d537e83efc..0655a069b9 100755
--- a/etc/teams.scm
+++ b/etc/teams.scm
@@ -444,6 +444,7 @@ asdf-build-system."
"gnu/packages/cross-base.scm"
"gnu/packages/gcc.scm"
"gnu/packages/guile.scm"
+ "gnu/packages/ld-wrapper.in"
"gnu/packages/make-bootstrap.scm"
"guix/build/gnu-build-system.scm"
"guix/build/utils.scm"
diff --git a/gnu/build/image.scm b/gnu/build/image.scm
index 49dc01c0d1..6ca0a428e0 100644
--- a/gnu/build/image.scm
+++ b/gnu/build/image.scm
@@ -328,18 +328,16 @@ GRUB configuration and OS-DRV as the stuff in it."
"-volume_date" "all_file_dates" "=1"
`(,@(if compression?
- '(;; ‘zisofs’ compression reduces the total image size by
- ;; ~60%.
+ '(;; ‘zisofs’ compression reduces the total image size by ~60%.
"-zisofs" "level=9:block_size=128k" ; highest compression
;; It's transparent to our Linux-Libre kernel but not to
- ;; GRUB. Don't compress the kernel, initrd, and other
- ;; files read by grub.cfg, as well as common
- ;; already-compressed file names.
+ ;; GRUB. Don't compress the kernel, initrd, and other files
+ ;; read by grub.cfg, as well as common already-compressed
+ ;; file names.
"-find" "/" "-type" "f"
;; XXX Even after "--" above, and despite documentation
- ;; claiming otherwise, "-or" is stolen by grub-mkrescue
- ;; which then chokes on it (as ‘-o …’) and dies. Don't use
- ;; "-or".
+ ;; claiming otherwise, "-or" is stolen by grub-mkrescue which
+ ;; then chokes on it (as ‘-o …’) and dies. Don't use "-or".
"-not" "-wholename" "/boot/*"
"-not" "-wholename" "/System/*"
"-not" "-name" "unicode.pf2"
diff --git a/gnu/compression.scm b/gnu/compression.scm
index 0418e80a15..6e48de5979 100644
--- a/gnu/compression.scm
+++ b/gnu/compression.scm
@@ -56,7 +56,8 @@
;; The default level 3 compresses better than gzip in a
;; fraction of the time, while the highest level 19
;; (de)compresses more slowly and worse than xz.
- #~(list #+(file-append zstd "/bin/zstd") "-3"))
+ #~(list #+(file-append zstd "/bin/zstd") "-3"
+ (format #f "--threads=~a" (parallel-job-count))))
(compressor "none" "" #f)))
(define (lookup-compressor name)
diff --git a/gnu/local.mk b/gnu/local.mk
index 2e0c6a5d3c..a605103300 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -11,7 +11,7 @@
# Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
# Copyright © 2016, 2017, 2018, 2019 Alex Vong <alexvong1995@gmail.com>
# Copyright © 2016-2023 Efraim Flashner <efraim@flashner.co.il>
-# Copyright © 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+# Copyright © 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
# Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
# Copyright © 2017, 2018, 2023, 2024 Clément Lassieur <clement@lassieur.org>
# Copyright © 2017, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
@@ -951,6 +951,7 @@ dist_patch_DATA = \
%D%/packages/patches/asli-use-system-libs.patch \
%D%/packages/patches/aspell-CVE-2019-25051.patch \
%D%/packages/patches/aspell-default-dict-dir.patch \
+ %D%/packages/patches/atf-execute-with-shell.patch \
%D%/packages/patches/ath9k-htc-firmware-binutils.patch \
%D%/packages/patches/ath9k-htc-firmware-gcc.patch \
%D%/packages/patches/ath9k-htc-firmware-gcc-compat.patch \
@@ -970,6 +971,7 @@ dist_patch_DATA = \
%D%/packages/patches/audiofile-hurd.patch \
%D%/packages/patches/audiofile-function-signature.patch \
%D%/packages/patches/automake-skip-amhello-tests.patch \
+ %D%/packages/patches/autotrace-pkg-config.patch \
%D%/packages/patches/avahi-localstatedir.patch \
%D%/packages/patches/avalon-toolkit-rdkit-fixes.patch \
%D%/packages/patches/avidemux-install-to-lib.patch \
@@ -1043,14 +1045,20 @@ dist_patch_DATA = \
%D%/packages/patches/clang-11.0-libc-search-path.patch \
%D%/packages/patches/clang-12.0-libc-search-path.patch \
%D%/packages/patches/clang-13.0-libc-search-path.patch \
+ %D%/packages/patches/clang-13-remove-crypt-interceptors.patch \
%D%/packages/patches/clang-14.0-libc-search-path.patch \
+ %D%/packages/patches/clang-14-remove-crypt-interceptors.patch \
%D%/packages/patches/clang-15.0-libc-search-path.patch \
%D%/packages/patches/clang-16.0-libc-search-path.patch \
+ %D%/packages/patches/clang-16-remove-crypt-interceptors.patch \
%D%/packages/patches/clang-17.0-libc-search-path.patch \
%D%/packages/patches/clang-17.0-link-dsymutil-latomic.patch \
%D%/packages/patches/clang-18.0-libc-search-path.patch \
%D%/packages/patches/clang-runtime-asan-build-fixes.patch \
%D%/packages/patches/clang-runtime-esan-build-fixes.patch \
+ %D%/packages/patches/clang-runtime-13-glibc-2.36-compat.patch \
+ %D%/packages/patches/clang-runtime-14-glibc-2.36-compat.patch \
+ %D%/packages/patches/clang-runtime-9-glibc-2.36-compat.patch \
%D%/packages/patches/clang-runtime-9-libsanitizer-mode-field.patch \
%D%/packages/patches/clang-runtime-3.5-libsanitizer-mode-field.patch \
%D%/packages/patches/clang-runtime-3.7-fix-build-with-python3.patch \
@@ -1091,10 +1099,12 @@ dist_patch_DATA = \
%D%/packages/patches/cvs-CVE-2017-12836.patch \
%D%/packages/patches/d-feet-drop-unused-meson-argument.patch \
%D%/packages/patches/dante-non-darwin.patch \
+ %D%/packages/patches/date-ignore-zonenow.patch \
%D%/packages/patches/date-output-pkg-config-files.patch \
%D%/packages/patches/datefudge-gettimeofday.patch \
%D%/packages/patches/dbacl-include-locale.h.patch \
- %D%/packages/patches/dbacl-icheck-multiple-definitions.patch \
+ %D%/packages/patches/dbacl-icheck-multiple-definitions.patch \
+ %D%/packages/patches/dblatex-inkscape-1.0.patch \
%D%/packages/patches/dbus-helper-search-path.patch \
%D%/packages/patches/dbus-c++-gcc-compat.patch \
%D%/packages/patches/dbus-c++-threading-mutex.patch \
@@ -1103,11 +1113,19 @@ dist_patch_DATA = \
%D%/packages/patches/debops-debops-defaults-fall-back-to-less.patch \
%D%/packages/patches/dee-vapi.patch \
%D%/packages/patches/dfu-programmer-fix-libusb.patch \
- %D%/packages/patches/diffutils-fix-signal-processing.patch \
%D%/packages/patches/directfb-davinci-glibc-228-compat.patch \
%D%/packages/patches/dkimproxy-add-ipv6-support.patch \
- %D%/packages/patches/docbook-xsl-nonrecursive-string-subst.patch \
- %D%/packages/patches/docbook-xsl-support-old-url.patch \
+ %D%/packages/patches/docbook-utils-documentation-edits.patch \
+ %D%/packages/patches/docbook-utils-escape-characters.patch \
+ %D%/packages/patches/docbook-utils-remove-jade-sp.patch \
+ %D%/packages/patches/docbook-utils-respect-refentry-for-name.patch \
+ %D%/packages/patches/docbook-utils-source-date-epoch.patch \
+ %D%/packages/patches/docbook-utils-use-date-element.patch \
+ %D%/packages/patches/docbook2x-filename-handling.patch \
+ %D%/packages/patches/docbook2x-fix-synopsis.patch \
+ %D%/packages/patches/docbook2x-manpage-typo.patch \
+ %D%/packages/patches/docbook2x-preprocessor-declaration.patch \
+ %D%/packages/patches/docbook2x-static-datadir-evaluation.patch \
%D%/packages/patches/doc++-include-directives.patch \
%D%/packages/patches/doc++-segfault-fix.patch \
%D%/packages/patches/dovecot-opensslv3.patch \
@@ -1202,11 +1220,14 @@ dist_patch_DATA = \
%D%/packages/patches/ffmpeg-jami-pipewiregrab-source-filter.patch \
%D%/packages/patches/ffmpeg-jami-remove-mjpeg-log.patch \
%D%/packages/patches/ffmpeg-jami-screen-sharing-x11-fix.patch \
+ %D%/packages/patches/ffmpeg-remove-compressed_ten_bit_format.patch \
+ %D%/packages/patches/ffmpeg-4-binutils-2.41.patch \
%D%/packages/patches/fifengine-boost-compat.patch \
%D%/packages/patches/fifengine-python-3.9-compat.patch \
%D%/packages/patches/fifengine-swig-compat.patch \
%D%/packages/patches/fifo-map-fix-flags-for-gcc.patch \
%D%/packages/patches/fifo-map-remove-catch.hpp.patch \
+ %D%/packages/patches/file-32bit-time.patch \
%D%/packages/patches/findutils-localstatedir.patch \
%D%/packages/patches/firebird-riscv64-support-pt1.patch \
%D%/packages/patches/firebird-riscv64-support-pt2.patch \
@@ -1267,6 +1288,7 @@ dist_patch_DATA = \
%D%/packages/patches/gcc-6-fix-isl-includes.patch \
%D%/packages/patches/gcc-6-fix-buffer-size.patch \
%D%/packages/patches/gcc-6-libsanitizer-mode-size.patch \
+ %D%/packages/patches/gcc-7-libsanitizer-fsconfig-command.patch \
%D%/packages/patches/gcc-7-libsanitizer-mode-size.patch \
%D%/packages/patches/gcc-libvtv-runpath.patch \
%D%/packages/patches/gcc-strmov-store-file-names.patch \
@@ -1278,6 +1300,7 @@ dist_patch_DATA = \
%D%/packages/patches/gcc-5-fix-powerpc64le-build.patch \
%D%/packages/patches/gcc-5-source-date-epoch-1.patch \
%D%/packages/patches/gcc-5-source-date-epoch-2.patch \
+ %D%/packages/patches/gcc-5.5.0-libstdc++-xmlcatalog.patch \
%D%/packages/patches/gcc-6-arm-none-eabi-multilib.patch \
%D%/packages/patches/gcc-6-cross-environment-variables.patch \
%D%/packages/patches/gcc-6-source-date-epoch-1.patch \
@@ -1292,15 +1315,18 @@ dist_patch_DATA = \
%D%/packages/patches/gcc-9-strmov-store-file-names.patch \
%D%/packages/patches/gcc-12-strmov-store-file-names.patch \
%D%/packages/patches/gcc-10-cross-environment-variables.patch \
+ %D%/packages/patches/gcc-10-libsanitizer-no-crypt.patch \
%D%/packages/patches/gcc-11-libstdc++-hurd-libpthread.patch \
%D%/packages/patches/gcc-12-cross-environment-variables.patch \
- %D%/packages/patches/gcc-10-tree-sra-union-handling.patch \
%D%/packages/patches/gcc-11-libstdc++-powerpc.patch \
+ %D%/packages/patches/gcc-12-libsanitizer-no-crypt.patch \
+ %D%/packages/patches/gcc-13-libsanitizer-no-crypt.patch \
+ %D%/packages/patches/gcc-13.2.0-libstdc++-docbook-xsl-uri.patch \
+ %D%/packages/patches/gcc-13.2.0-libstdc++-info-install-fix.patch \
%D%/packages/patches/gcc-13-cross-system-header-dir.patch \
%D%/packages/patches/gcolor3-update-libportal-usage.patch \
%D%/packages/patches/gd-fix-tests-on-i686.patch \
%D%/packages/patches/gd-brect-bounds.patch \
- %D%/packages/patches/gd-Revert-fix-303-gdlib.pc.patch \
%D%/packages/patches/gdm-default-session.patch \
%D%/packages/patches/gdm-elogind-support.patch \
%D%/packages/patches/gdm-remove-hardcoded-xwayland-path.patch \
@@ -1312,10 +1338,11 @@ dist_patch_DATA = \
%D%/packages/patches/geoclue-config.patch \
%D%/packages/patches/gettext-libunicode-update.patch \
%D%/packages/patches/ghc-8.0-fall-back-to-madv_dontneed.patch \
- %D%/packages/patches/ghc-9.2-glibc-2.33-link-order.patch \
+ %D%/packages/patches/ghc-9-StgCRunAsm-only-when-needed.patch \
%D%/packages/patches/ghc-9.2-grep-warnings.patch \
%D%/packages/patches/ghc-testsuite-dlopen-pie.patch \
%D%/packages/patches/ghc-testsuite-grep-compat.patch \
+ %D%/packages/patches/ghc-testsuite-recomp015-execstack.patch \
%D%/packages/patches/ghc-basement-fix-32bit.patch \
%D%/packages/patches/ghc-bytestring-handle-ghc9.patch \
%D%/packages/patches/ghc-language-haskell-extract-ghc-8.10.patch \
@@ -1330,6 +1357,9 @@ dist_patch_DATA = \
%D%/packages/patches/git-filter-repo-generate-doc.patch \
%D%/packages/patches/gklib-suitesparse.patch \
%D%/packages/patches/glib-appinfo-watch.patch \
+ %D%/packages/patches/glib-gerror-null-format.patch \
+ %D%/packages/patches/glib-networking-disable-connection-tls1.2-test.patch \
+ %D%/packages/patches/glib-networking-gnutls-binding.patch \
%D%/packages/patches/glib-skip-failing-test.patch \
%D%/packages/patches/glibc-2.33-riscv64-miscompilation.patch \
%D%/packages/patches/glibc-CVE-2019-7309.patch \
@@ -1342,6 +1372,7 @@ dist_patch_DATA = \
%D%/packages/patches/glibc-bootstrap-system-2.2.5.patch \
%D%/packages/patches/glibc-bootstrap-system-2.16.0.patch \
%D%/packages/patches/glibc-bootstrap-system.patch \
+ %D%/packages/patches/glibc-2.39-bootstrap-system.patch \
%D%/packages/patches/glibc-cross-objcopy.patch \
%D%/packages/patches/glibc-cross-objdump.patch \
%D%/packages/patches/glibc-dl-cache.patch \
@@ -1351,6 +1382,7 @@ dist_patch_DATA = \
%D%/packages/patches/glibc-2.37-hurd-clock_t_centiseconds.patch \
%D%/packages/patches/glibc-2.37-hurd-local-clock_gettime_MONOTONIC.patch \
%D%/packages/patches/glibc-2.37-versioned-locpath.patch \
+ %D%/packages/patches/glibc-2.38-ldd-x86_64.patch \
%D%/packages/patches/glibc-hurd-clock_t_centiseconds.patch \
%D%/packages/patches/glibc-hurd-getauxval.patch \
%D%/packages/patches/glibc-hurd-gettyent.patch \
@@ -1378,11 +1410,9 @@ dist_patch_DATA = \
%D%/packages/patches/gnome-settings-daemon-gc.patch \
%D%/packages/patches/gnome-session-support-elogind.patch \
%D%/packages/patches/gnome-tweaks-search-paths.patch \
- %D%/packages/patches/gnumach-support-noide.patch \
%D%/packages/patches/gnupg-default-pinentry.patch \
%D%/packages/patches/gnupg-1-build-with-gcc10.patch \
%D%/packages/patches/gnutls-skip-trust-store-test.patch \
- %D%/packages/patches/gnutls-cross.patch \
%D%/packages/patches/gobject-introspection-absolute-shlib-path.patch \
%D%/packages/patches/gobject-introspection-absolute-shlib-path-1.72.patch \
%D%/packages/patches/gobject-introspection-cc.patch \
@@ -1461,11 +1491,7 @@ dist_patch_DATA = \
%D%/packages/patches/htslib-for-stringtie.patch \
%D%/packages/patches/hubbub-sort-entities.patch \
%D%/packages/patches/hueplusplus-mbedtls.patch \
- %D%/packages/patches/hurd-add-without-rump-configure-option.patch \
- %D%/packages/patches/hurd-fix-rumpdisk-build.patch \
%D%/packages/patches/hurd-rumpdisk-no-hd.patch \
- %D%/packages/patches/hurd-fix-types-of-read-write-and-readables-methods-2.patch \
- %D%/packages/patches/hurd-fix-types-of-read-write-and-readables-methods.patch \
%D%/packages/patches/hwloc-1-test-btrfs.patch \
%D%/packages/patches/i7z-gcc-10.patch \
%D%/packages/patches/icecat-makeicecat.patch \
@@ -1483,11 +1509,6 @@ dist_patch_DATA = \
%D%/packages/patches/idris-test-ffi008.patch \
%D%/packages/patches/igraph-fix-varargs-integer-size.patch \
%D%/packages/patches/ilmbase-fix-tests.patch \
- %D%/packages/patches/imagemagick-CVE-2020-27829.patch \
- %D%/packages/patches/imagemagick-ReadDCMImage-fix.patch \
- %D%/packages/patches/imagemagick-ReadDCMPixels-fix.patch \
- %D%/packages/patches/imagemagick-WriteTHUMBNAILImage-fix.patch \
- %D%/packages/patches/inkscape-poppler-compat.patch \
%D%/packages/patches/instead-use-games-path.patch \
%D%/packages/patches/intltool-perl-compatibility.patch \
%D%/packages/patches/irrlicht-use-system-libs.patch \
@@ -1623,6 +1644,8 @@ dist_patch_DATA = \
%D%/packages/patches/libphonenumber-reproducible-build.patch \
%D%/packages/patches/libqalculate-3.8.0-libcurl-ssl-fix.patch \
%D%/packages/patches/libquicktime-ffmpeg.patch \
+ %D%/packages/patches/librecad-support-for-boost-1.76.patch \
+ %D%/packages/patches/libsepol-versioned-docbook.patch \
%D%/packages/patches/libtar-CVE-2013-4420.patch \
%D%/packages/patches/libtgvoip-disable-sse2.patch \
%D%/packages/patches/libtgvoip-disable-webrtc.patch \
@@ -1775,9 +1798,25 @@ dist_patch_DATA = \
%D%/packages/patches/openjdk-currency-time-bomb2.patch \
%D%/packages/patches/openjdk-9-pointer-comparison.patch \
%D%/packages/patches/openjdk-9-setsignalhandler.patch \
+ %D%/packages/patches/openjdk-9-classlist-reproducibility.patch \
+ %D%/packages/patches/openjdk-9-idlj-reproducibility.patch \
+ %D%/packages/patches/openjdk-9-jar-reproducibility.patch \
+ %D%/packages/patches/openjdk-9-module-reproducibility.patch \
+ %D%/packages/patches/openjdk-9-module2-reproducibility.patch \
+ %D%/packages/patches/openjdk-9-module3-reproducibility.patch \
+ %D%/packages/patches/openjdk-10-char-reproducibility.patch \
+ %D%/packages/patches/openjdk-10-classlist-reproducibility.patch \
+ %D%/packages/patches/openjdk-10-corba-reproducibility.patch \
%D%/packages/patches/openjdk-10-idlj-reproducibility.patch \
+ %D%/packages/patches/openjdk-10-jar-reproducibility.patch \
+ %D%/packages/patches/openjdk-10-jtask-reproducibility.patch \
+ %D%/packages/patches/openjdk-10-module-reproducibility.patch \
+ %D%/packages/patches/openjdk-10-module3-reproducibility.patch \
+ %D%/packages/patches/openjdk-10-module4-reproducibility.patch \
%D%/packages/patches/openjdk-10-pointer-comparison.patch \
%D%/packages/patches/openjdk-10-setsignalhandler.patch \
+ %D%/packages/patches/openjdk-11-classlist-reproducibility.patch \
+ %D%/packages/patches/openjdk-13-classlist-reproducibility.patch \
%D%/packages/patches/openjdk-15-xcursor-no-dynamic.patch \
%D%/packages/patches/openjdk-21-fix-rpath.patch \
%D%/packages/patches/openmpi-mtl-priorities.patch \
@@ -1823,7 +1862,9 @@ dist_patch_DATA = \
%D%/packages/patches/python-docrepr-fix-tests.patch \
%D%/packages/patches/python-feedparser-missing-import.patch \
%D%/packages/patches/python-louvain-fix-test.patch \
+ %D%/packages/patches/python-matplotlib-fix-legend-loc-best-test.patch \
%D%/packages/patches/python-random2-getrandbits-test.patch \
+ %D%/packages/patches/python-pillow-use-zlib-1.3.patch \
%D%/packages/patches/python-pyreadstat-link-libiconv.patch \
%D%/packages/patches/python-pyls-black-41.patch \
%D%/packages/patches/python-pypdf-annotate-tests-appropriately.patch \
@@ -1896,6 +1937,9 @@ dist_patch_DATA = \
%D%/packages/patches/psm-disable-memory-stats.patch \
%D%/packages/patches/psm-ldflags.patch \
%D%/packages/patches/psm-repro.patch \
+ %D%/packages/patches/pstoedit-fix-gcc12.patch \
+ %D%/packages/patches/pstoedit-fix-plainC.patch \
+ %D%/packages/patches/pstoedit-pkglibdir.patch \
%D%/packages/patches/pulseaudio-fix-mult-test.patch \
%D%/packages/patches/pulseaudio-longer-test-timeout.patch \
%D%/packages/patches/pulseview-qt515-compat.patch \
@@ -1918,6 +1962,7 @@ dist_patch_DATA = \
%D%/packages/patches/python-3-search-paths.patch \
%D%/packages/patches/python-3-fix-tests.patch \
%D%/packages/patches/python-3-hurd-configure.patch \
+ %D%/packages/patches/python-3-reproducible-build.patch \
%D%/packages/patches/python-aionotify-0.2.0-py3.8.patch \
%D%/packages/patches/python-argcomplete-1.11.1-fish31.patch \
%D%/packages/patches/python-cross-compile.patch \
@@ -2050,7 +2095,6 @@ dist_patch_DATA = \
%D%/packages/patches/scons-test-environment.patch \
%D%/packages/patches/screen-hurd-path-max.patch \
%D%/packages/patches/scsh-nonstring-search-path.patch \
- %D%/packages/patches/sdl-libx11-1.6.patch \
%D%/packages/patches/seed-webkit.patch \
%D%/packages/patches/sendgmail-accept-ignored-gsuite-flag.patch \
%D%/packages/patches/sendgmail-remove-domain-restriction.patch \
@@ -2079,6 +2123,7 @@ dist_patch_DATA = \
%D%/packages/patches/superlu-dist-awpm-grid.patch \
%D%/packages/patches/superlu-dist-scotchmetis.patch \
%D%/packages/patches/supertux-unbundle-squirrel.patch \
+ %D%/packages/patches/sway-add-libinput-config-accel.patch \
%D%/packages/patches/swig-support-gcc-12.patch \
%D%/packages/patches/swish-e-search.patch \
%D%/packages/patches/swish-e-format-security.patch \
@@ -2196,7 +2241,6 @@ dist_patch_DATA = \
%D%/packages/patches/wcstools-extend-makefiles.patch \
%D%/packages/patches/wdl-link-libs-and-fix-jnetlib.patch \
%D%/packages/patches/webkitgtk-adjust-bubblewrap-paths.patch \
- %D%/packages/patches/webrtc-audio-processing-big-endian.patch \
%D%/packages/patches/webrtc-for-telegram-desktop-unbundle-libsrtp.patch \
%D%/packages/patches/websocketpp-fix-for-cmake-3.15.patch \
%D%/packages/patches/wlroots-hwdata-fallback.patch \
@@ -2240,7 +2284,6 @@ dist_patch_DATA = \
%D%/packages/patches/yggdrasil-extra-config.patch \
%D%/packages/patches/zathura-use-struct-initializers.patch \
%D%/packages/patches/zig-0.9-riscv-support.patch \
- %D%/packages/patches/zig-do-not-link-against-librt.patch \
%D%/packages/patches/zig-use-baseline-cpu-by-default.patch \
%D%/packages/patches/zig-use-system-paths.patch \
%D%/packages/patches/zsh-egrep-failing-test.patch \
diff --git a/gnu/packages/acl.scm b/gnu/packages/acl.scm
index eb20fdd549..bc37572252 100644
--- a/gnu/packages/acl.scm
+++ b/gnu/packages/acl.scm
@@ -52,7 +52,7 @@
(build-system gnu-build-system)
(arguments
`(#:modules ((ice-9 ftw)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:configure-flags '("--disable-static")
#:tests? ,(not (or (%current-target-system)
(target-hurd?)))
@@ -66,13 +66,11 @@
(ftw "." (lambda (file stat flag)
(unless (<= early-1980 (stat:mtime stat))
(utime file early-1980 early-1980))
- #t))
- #t)))
+ #t)))))
(add-after 'build 'patch-exec-bin-sh
(lambda _
(substitute* "test/run"
- (("/bin/sh") (which "sh")))
- #t))
+ (("/bin/sh") (which "sh")))))
(add-before 'check 'patch-tests
(lambda _
;; The coreutils do not have an ACL bit to remove from their
@@ -84,12 +82,9 @@
(substitute* "Makefile.in"
((".*test/misc\\.test.*") "")
((".*test/cp\\.test.*") "")
- ((".*test/setfacl-X\\.test.*") ""))
- #t)))))
+ ((".*test/setfacl-X\\.test.*") "")))))))
(inputs (list attr))
- (native-inputs
- `(("gettext" ,gettext-minimal)
- ("perl" ,perl)))
+ (native-inputs (list gettext-minimal perl))
(home-page "https://savannah.nongnu.org/projects/acl")
(synopsis
"Library and tools for manipulating access control lists")
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index b60857b264..b677fde4f2 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -404,7 +404,7 @@ interface and is based on GNU Guile.")
(replace "guile-fibers"
(this-package-native-input "guile-fibers"))))))
-(define-public shepherd shepherd-0.9)
+(define-public shepherd shepherd-0.10)
(define-public guile2.2-shepherd
(package
@@ -521,9 +521,10 @@ inspired by @command{vi}.")
(list "bin/readlink"
"sbin/sfdisk")))))))))))
(inputs
- (list coreutils ; for readlink
+ (list bash-minimal ;for wrap-program
+ coreutils ;for readlink
python
- util-linux)) ; sfdisk for growpart
+ util-linux)) ;sfdisk for growpart
(home-page "https://launchpad.net/cloud-utils")
(synopsis "Set of utilities for cloud computing environments")
(description
@@ -617,7 +618,7 @@ services.")
"daemonize runs a command as a Unix daemon. It will close all open file
descriptors, change working directory of the process to the root filesystem,
reset its umask, run in the background, ignore I/O signals, handle
-@code{SIGCLD}, etc. Most programs that are designed to be run as daemons do
+@code{SIGCHLD}, etc. Most programs that are designed to be run as daemons do
that work for themselves. However, you’ll occasionally run across one that
does not. When you must run a daemon program that does not properly make
itself into a true Unix daemon, you can use daemonize to force it to run as a
@@ -639,7 +640,7 @@ true daemon.")
"0m1fd7l85ckb7bq4c5c3g257bkjglm8gq7x42pkmpp87fkknc94n"))))
(build-system cmake-build-system)
(arguments '(#:tests? #f)) ; There are no tests.
- (native-inputs `(("gettext" ,gettext-minimal)))
+ (native-inputs (list gettext-minimal))
(home-page "https://projects.gw-computing.net/projects/dfc")
(synopsis "Display file system space usage using graphs and colors")
(description
@@ -951,45 +952,48 @@ re-executing them as necessary.")
(define-public inetutils
(package
(name "inetutils")
- (version "2.3")
+ (version "2.5")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/inetutils/inetutils-"
version ".tar.gz"))
(sha256
(base32
- "1dj4ilxy1wrfxhxc85iya3x28h1mhjpqc5nv862xcq3ww2gqkv8w"))))
+ "0q1257ci22g2jbdiqs00mharc1lqkbibdlkhj23f3si6qjxkn17s"))))
(build-system gnu-build-system)
(arguments
- `(#:configure-flags '("--localstatedir=/var"
-
- ;; Make sure 'PATH_PROCNET_DEV' gets defined when
- ;; cross-compiling (by default it does not.)
- ,@(if (%current-target-system)
- '("--with-path-procnet-dev=/proc/net/dev")
- '())
- ,@(if (target-hurd?)
- '("--disable-rcp"
- "--disable-rexec"
- "--disable-rexecd"
- "--disable-rlogin"
- "--disable-rlogind"
- "--disable-rsh"
- "--disable-rshd"
- "--disable-uucpd"
- "--disable-whois")
- '()))
- ;; Make sure that canonical "coreutils" package is not referred.
- #:make-flags
- (list (string-append "CPPFLAGS=-DPATHDEF_CP=\\\""
- (search-input-file %build-inputs "bin/cp")
- "\\\""))
- ;; On some systems, 'libls.sh' may fail with an error such as:
- ;; "Failed to tell switch -a apart from -A".
- #:parallel-tests? #f))
+ (list
+ #:configure-flags
+ #~(list "--localstatedir=/var"
+
+ ;; Make sure 'PATH_PROCNET_DEV' gets defined when
+ ;; cross-compiling (by default it does not.)
+ #$@(if (%current-target-system)
+ '("--with-path-procnet-dev=/proc/net/dev")
+ '())
+ #$@(if (target-hurd?)
+ '("--disable-rcp"
+ "--disable-rexec"
+ "--disable-rexecd"
+ "--disable-rlogin"
+ "--disable-rlogind"
+ "--disable-rsh"
+ "--disable-rshd"
+ "--disable-uucpd"
+ "--disable-whois")
+ '()))
+ ;; Make sure that canonical "coreutils" package is not referred.
+ #:make-flags
+ #~(list (string-append "CPPFLAGS=-DPATHDEF_CP=\\\""
+ (search-input-file %build-inputs "bin/cp")
+ "\\\""))
+ ;; On some systems, 'libls.sh' may fail with an error such as:
+ ;; "Failed to tell switch -a apart from -A".
+ #:parallel-tests? #f))
(inputs
(list coreutils
shadow ;for login (used in telnetd and rlogind)
+ libxcrypt
ncurses
readline)) ;for 'ftp'
(native-inputs
@@ -1040,9 +1044,7 @@ hostname.")
,@(if (%current-target-system)
'((add-before 'configure 'set-runtime-shell
(lambda* (#:key inputs #:allow-other-keys)
- (let ((shell (string-append
- (assoc-ref inputs "bash")
- "/bin/bash")))
+ (let ((shell (search-input-file inputs "/bin/bash")))
(setenv "RUNTIME_SHELL" shell)
(substitute* "configure.ac"
(("\\$SHELL")
@@ -1073,12 +1075,13 @@ hostname.")
(delete-file (string-append bin "/groups"))
(for-each delete-file (find-files man "^groups\\."))))))))
(inputs
- `(,@(if (target-hurd?)
- '()
- `(("linux-pam" ,linux-pam)))
- ,@(if (%current-target-system)
- `(("bash" ,bash-minimal))
- '())))
+ (append (if (target-hurd?)
+ '()
+ (list linux-pam))
+ (if (%current-target-system)
+ (list bash-minimal)
+ '())
+ (list libxcrypt)))
(home-page "https://github.com/shadow-maint/shadow")
(synopsis "Authentication-related tools such as passwd, su, and login")
(description
@@ -1786,8 +1789,7 @@ by bandwidth they use.")
(substitute* (list "lib/App/ClusterSSH/Config.pm"
"t/15config.t")
(("xterm")
- (which "xterm")))
- #t))
+ (which "xterm")))))
(add-before 'check 'delete-failing-tests
(lambda _
;; This checks whether all code is nicely formatted. The above
@@ -1795,8 +1797,7 @@ by bandwidth they use.")
(delete-file "t/perltidy.t")
;; Update the manifest so t/manifest.t happily passes.
(substitute* "MANIFEST"
- (("t/perltidy.t\n") ""))
- #t))
+ (("t/perltidy.t\n") ""))))
(add-after 'install 'augment-library-path
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@@ -1821,8 +1822,7 @@ by bandwidth they use.")
"perl-try-tiny"
"perl-x11-protocol"
"perl-x11-protocol-other")))))))
- (find-files "." ".*")))
- #t))))))
+ (find-files "." ".*")))))))))
(native-inputs
(list perl-cpan-changes
perl-file-slurp
@@ -1837,7 +1837,8 @@ by bandwidth they use.")
perl-test-trap
perltidy))
(inputs
- (list perl-exception-class
+ (list bash-minimal ;for wrap-program
+ perl-exception-class
perl-sort-naturally
perl-tk
perl-try-tiny
@@ -1926,10 +1927,10 @@ realms/domains like Active Directory or IPA.")
(wrap-program program
`("PERL5LIB" ":" prefix
(,(string-append out "/lib/perl5/site_perl")))))
- (find-files "." ".*")))
- #t))))))
+ (find-files "." ".*")))))))))
(native-inputs
(list perl-module-build perl-test-pod perl-test-pod-coverage))
+ (inputs (list bash-minimal)) ;for wrap-program
(home-page "https://metacpan.org/pod/distribution/File-Rename/rename.PL")
(synopsis "Perl extension for renaming multiple files")
(description
@@ -2318,10 +2319,14 @@ command.")
(native-inputs
;; For icons.
(modify-inputs (package-native-inputs wpa-supplicant)
- (prepend imagemagick inkscape/stable)))
+ (prepend imagemagick/stable
+ inkscape/stable)))
(build-system qt-build-system)
(arguments
(list
+ ;; Make sure the (rarely updated) package 'imagemagick/stable'
+ ;; does not end up in the closure.
+ #:disallowed-references (list imagemagick/stable)
#:test-target "check"
#:phases
#~(modify-phases %standard-phases
@@ -3438,7 +3443,8 @@ rules is done with the @code{auditctl} utility.")
;; Nmap can't cope with out-of-source building.
#:out-of-source? #f))
(inputs
- (list libpcap
+ (list bash-minimal ;for wrap-program
+ libpcap
lua
openssl-3.0
pcre
@@ -3474,26 +3480,26 @@ results (ndiff), and a packet generation and response analysis tool (nping).")
"dstat-skip-devices-without-io.patch"))))
(build-system gnu-build-system)
(arguments
- `(#:tests? #f ; no make check
- #:make-flags
- (list (string-append "prefix=" (assoc-ref %outputs "out")))
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'fix-python3-DeprecationWarning
- (lambda _
- (substitute* "dstat"
- (("collections") "collections.abc"))
- #t))
- (delete 'configure) ; no configure script
- (add-after 'install 'wrap
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (wrap-program (string-append out "/bin/dstat")
- `("GUIX_PYTHONPATH" ":" prefix (,(getenv "GUIX_PYTHONPATH"))))
- #t))))))
+ (list
+ #:tests? #f ; no make check
+ #:make-flags
+ #~(list (string-append "prefix=" #$output))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'fix-python3-DeprecationWarning
+ (lambda _
+ (substitute* "dstat"
+ (("collections") "collections.abc"))))
+ (delete 'configure) ; no configure script
+ (add-after 'install 'wrap
+ (lambda _
+ (wrap-program (string-append #$output "/bin/dstat")
+ `("GUIX_PYTHONPATH" ":" prefix
+ (,(getenv "GUIX_PYTHONPATH")))))))))
(inputs
- `(("python" ,python-wrapper)
- ("python-six" ,python-six)))
+ (list bash-minimal ;for wrap-program
+ python-wrapper
+ python-six))
(synopsis "Versatile resource statistics tool")
(description "Dstat is a versatile replacement for @command{vmstat},
@command{iostat}, @command{netstat}, and @command{ifstat}. Dstat overcomes
@@ -4313,7 +4319,7 @@ hard-coded.")
autoconf-archive
automake
`(,glib "bin") ; for glib-genmarshal, etc.
- gtk-doc
+ gtk-doc/stable
pkg-config))
(inputs
(list dbus-glib libevdev libxml2 upower xz))
diff --git a/gnu/packages/android.scm b/gnu/packages/android.scm
index b6f37732b4..11e05dced9 100644
--- a/gnu/packages/android.scm
+++ b/gnu/packages/android.scm
@@ -532,7 +532,7 @@ that is safe to use for user space. It also includes
"LDFLAGS=-L . -lpcre")
#:phases
(modify-phases %standard-phases
- (add-after 'unpack-core 'patch-HOST
+ (add-after 'unpack 'patch-HOST
(lambda _
;; gettid duplicates otherwise.
(substitute* "src/procattr.c"
diff --git a/gnu/packages/animation.scm b/gnu/packages/animation.scm
index 3bcf1cc8f0..61d9b91e6c 100644
--- a/gnu/packages/animation.scm
+++ b/gnu/packages/animation.scm
@@ -34,6 +34,7 @@
#:use-module (gnu packages algebra)
#:use-module (gnu packages assembly)
#:use-module (gnu packages autotools)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages boost)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
@@ -191,7 +192,7 @@ for tweening, preventing the need to hand-draw each frame.")
(wrap-program (string-append #$output "/bin/synfigstudio")
`("XDG_DATA_DIRS" ":" prefix (,gtk-share)))))))))
(inputs
- (list gtkmm-3 gtk+ libsigc++ synfig))
+ (list bash-minimal gtkmm-3 gtk+ libsigc++ synfig))
(native-inputs
(list pkg-config intltool))
(home-page "https://www.synfig.org")
@@ -410,7 +411,8 @@ language.")
qt)))
#t))))))
(inputs
- `(("qt" ,qtbase-5)
+ `(("bash" ,bash-minimal)
+ ("qt" ,qtbase-5)
("qtmultimedia-5" ,qtmultimedia-5)
("libsndfile" ,libsndfile)))
(native-inputs
@@ -440,7 +442,7 @@ waveform until they line up with the proper sounds.")
"0b1nwiwyg01087q318vymg4si76dw41ykxbn2zwd6dqbxzbpr1dh"))))
(build-system gnu-build-system)
(inputs
- (list qtbase-5 qtxmlpatterns qtmultimedia-5 qtsvg-5))
+ (list bash-minimal qtbase-5 qtxmlpatterns qtmultimedia-5 qtsvg-5))
(arguments
(list
#:phases
diff --git a/gnu/packages/apl.scm b/gnu/packages/apl.scm
index 0b56c8b088..1c1cd200a9 100644
--- a/gnu/packages/apl.scm
+++ b/gnu/packages/apl.scm
@@ -142,7 +142,7 @@ symbols, and almost all Latin-1 accented letters.")
(native-inputs (list `(,openjdk18 "jdk") zip))
(arguments
(list
- #:imported-modules `(,@%gnu-build-system-modules
+ #:imported-modules `(,@%default-gnu-imported-modules
(guix build ant-build-system))
#:modules `((guix build gnu-build-system)
((guix build ant-build-system) #:prefix ant:)
diff --git a/gnu/packages/apr.scm b/gnu/packages/apr.scm
index aac3822eae..390eadc43a 100644
--- a/gnu/packages/apr.scm
+++ b/gnu/packages/apr.scm
@@ -26,6 +26,7 @@
#:use-module (guix utils)
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
+ #:use-module (gnu packages crypto)
#:use-module (gnu packages perl)
#:use-module (gnu packages xml)
#:use-module (gnu packages autotools))
@@ -33,14 +34,14 @@
(define-public apr
(package
(name "apr")
- (version "1.7.0")
+ (version "1.7.4")
(source (origin
(method url-fetch)
(uri (string-append "mirror://apache/apr/apr-"
version ".tar.bz2"))
(sha256
(base32
- "1spp6r2a3xcl5yajm9safhzyilsdzgagc2dadif8x6z9nbq4iqg2"))
+ "0xsmqgjiyw3s6va5dm86djnjzg9r0qc1zsldwz4sd8pkhglqsr7w"))
(patches
(search-patches "apr-skip-getservbyname-test.patch"))
(patch-flags '("-p0"))))
@@ -51,16 +52,25 @@
;; Thus, build sequentially.
`(#:parallel-build? #f
#:parallel-tests? #f
- ,@(if (target-ppc32?)
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch-sources
- (lambda* (#:key inputs native-inputs #:allow-other-keys)
- (invoke "patch" "-p1" "--force" "--input"
- (assoc-ref (or native-inputs inputs)
- "atomics-patch"))))))
- '())))
- (inputs (list perl libltdl))
+ #:phases
+ (modify-phases %standard-phases
+ ,@(if (target-ppc32?)
+ `((add-after 'unpack 'patch-sources
+ (lambda* (#:key inputs native-inputs #:allow-other-keys)
+ (invoke "patch" "-p1" "--force" "--input"
+ (assoc-ref (or native-inputs inputs)
+ "atomics-patch")))))
+ '())
+ (add-after 'install 'patch-libxcrypt-reference
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (define out (assoc-ref outputs "out"))
+ (define libxcrypt
+ (dirname (search-input-file inputs "/lib/libcrypt.so.1")))
+ (substitute* (list (string-append out "/bin/apr-1-config")
+ (string-append out "/lib/pkgconfig/apr-1.pc"))
+ (("-lcrypt")
+ (string-append "-L" libxcrypt " -lcrypt"))))))))
+ (inputs (list perl libltdl libxcrypt))
(native-inputs
`(,@(if (target-ppc32?)
`(("atomics-patch"
@@ -81,17 +91,17 @@ around or take advantage of platform-specific deficiencies or features.")
(define-public apr-util
(package
(name "apr-util")
- (version "1.6.1")
+ (version "1.6.3")
(source (origin
(method url-fetch)
(uri (string-append "mirror://apache/apr/apr-util-"
version ".tar.bz2"))
(sha256
(base32
- "0nq3s1yn13vplgl6qfm09f7n0wm08malff9s59bqf9nid9xjzqfk"))))
+ "1dbjjwyfqvq7xa7xsxq2rv0clkwsmna2j12575n34ih7f7ipc454"))))
(build-system gnu-build-system)
(inputs
- (list apr))
+ (list apr libxcrypt))
(propagated-inputs
(list expat))
(arguments
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 1a88698165..a6a7a2a49e 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -11,7 +11,7 @@
;;; Copyright © 2016–2023 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018, 2020 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2018 okapi <okapi@firemail.cc>
-;;; Copyright © 2018, 2020, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2018, 2020, 2022, 2023, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2018 Brett Gilio <brettg@gnu.org>
;;; Copyright © 2018, 2019, 2022 Marius Bakke <marius@gnu.org>
@@ -69,6 +69,7 @@
#:use-module (gnu packages avahi)
#:use-module (gnu packages backup)
#:use-module (gnu packages base)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages bison)
#:use-module (gnu packages boost)
#:use-module (gnu packages build-tools)
@@ -299,55 +300,18 @@ displays a histogram of the roundtrip time jitter.")
(define-public webrtc-audio-processing
(package
(name "webrtc-audio-processing")
- (version "0.3.1")
+ (version "1.3")
(source
(origin
(method url-fetch)
(uri
(string-append "http://freedesktop.org/software/pulseaudio/"
- name "/" name "-" version ".tar.xz"))
+ name "/" name "-" version ".tar.gz"))
(sha256
- (base32 "1gsx7k77blfy171b6g3m0k0s0072v6jcawhmx1kjs9w5zlwdkzd0"))))
- (build-system gnu-build-system)
- (arguments
- ;; TODO: Move this to a snippet/patch or remove with the upgrade to 1.0.
- (if (or (target-riscv64?)
- (target-powerpc?))
- (list
- #:phases
- #~(modify-phases %standard-phases
- (add-after 'unpack 'patch-source
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((patch-file
- #$(local-file
- (search-patch
- "webrtc-audio-processing-big-endian.patch"))))
- (invoke "patch" "--force" "-p1" "-i" patch-file)
- (substitute* "webrtc/typedefs.h"
- (("defined\\(__aarch64__\\)" all)
- (string-append
- ;; powerpc-linux
- "(defined(__PPC__) && __SIZEOF_SIZE_T__ == 4)\n"
- "#define WEBRTC_ARCH_32_BITS\n"
- "#define WEBRTC_ARCH_BIG_ENDIAN\n"
- ;; powerpc64-linux
- "#elif (defined(__PPC64__) && defined(_BIG_ENDIAN))\n"
- "#define WEBRTC_ARCH_64_BITS\n"
- "#define WEBRTC_ARCH_BIG_ENDIAN\n"
- ;; aarch64-linux
- "#elif " all
- ;; riscv64-linux
- " || (defined(__riscv) && __riscv_xlen == 64)"
- ;; powerpc64le-linux
- " || (defined(__PPC64__) && defined(_LITTLE_ENDIAN))"))))))))
- '()))
- (native-inputs
- (if (or (target-riscv64?)
- (target-powerpc?))
- (list
- (local-file (search-patch "webrtc-audio-processing-big-endian.patch"))
- patch)
- '()))
+ (base32 "0xfvq5lxg612vfzk3zk6896zcb4cgrrb7fq76w9h40magz0jymcm"))))
+ (build-system meson-build-system)
+ (native-inputs (list pkg-config))
+ (inputs (list abseil-cpp))
(synopsis "WebRTC's Audio Processing Library")
(description "WebRTC-Audio-Processing library based on Google's
implementation of WebRTC.")
@@ -2653,6 +2617,7 @@ synchronous execution of all clients, and low latency operation.")
prefix (,(getenv "GUIX_PYTHONPATH")))))))))
(inputs
(list alsa-lib
+ bash-minimal
dbus
expat
libsamplerate
@@ -3313,7 +3278,7 @@ lv2-c++-tools.")
(define-public openal
(package
(name "openal")
- (version "1.22.2")
+ (version "1.23.1")
(source (origin
(method url-fetch)
(uri (string-append
@@ -3321,30 +3286,27 @@ lv2-c++-tools.")
version ".tar.bz2"))
(sha256
(base32
- "081xgkma2a19dscwx21xdpklh8gq399w4f1fx737qsx7rnawr55f"))))
+ "08avhhfd96x4c18p8ys3va85nhx31xgpa3bz1ckmfkjc2f4lnvvr"))))
(build-system cmake-build-system)
(arguments
- `(#:tests? #f ; no check target
- #:phases
- (modify-phases %standard-phases
- (add-after
- 'unpack 'use-full-library-paths
- (lambda* (#:key inputs #:allow-other-keys)
- (substitute* "alc/backends/pulseaudio.cpp"
- (("#define PALIB \"libpulse\\.so\\.0\"")
- (string-append "#define PALIB \""
- (assoc-ref inputs "pulseaudio")
- "/lib/libpulse.so.0"
- "\"")))
- (substitute* "alc/backends/alsa.cpp"
- (("LoadLib\\(\"libasound\\.so\\.2\"\\)")
- (string-append "LoadLib(\""
- (assoc-ref inputs "alsa-lib")
- "/lib/libasound.so.2"
- "\")")))
- #t)))))
- (inputs
- (list alsa-lib pulseaudio))
+ (list
+ #:tests? #f ; no check target
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'use-full-library-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "alc/backends/pulseaudio.cpp"
+ (("#define PALIB \"libpulse\\.so\\.0\"")
+ (string-append "#define PALIB \""
+ (search-input-file inputs "lib/libpulse.so.0")
+ "\"")))
+ (substitute* "alc/backends/alsa.cpp"
+ (("LoadLib\\(\"libasound\\.so\\.2\"\\)")
+ (string-append "LoadLib(\""
+ (search-input-file inputs "lib/libasound.so.2")
+ "/lib/libasound.so.2"
+ "\")"))))))))
+ (inputs (list alsa-lib pulseaudio))
(synopsis "3D audio API")
(description
"OpenAL provides capabilities for playing audio in a virtual 3D
diff --git a/gnu/packages/aux-files/python/sitecustomize.py b/gnu/packages/aux-files/python/sitecustomize.py
index e2348e0356..82ea91104d 100644
--- a/gnu/packages/aux-files/python/sitecustomize.py
+++ b/gnu/packages/aux-files/python/sitecustomize.py
@@ -37,7 +37,7 @@ import sys
major_minor = '{}.{}'.format(*sys.version_info)
site_packages_prefix = os.path.join(
'lib', 'python' + major_minor, 'site-packages')
-python_site = os.path.join(sys.prefix, site_packages_prefix)
+python_site = os.path.normpath(os.path.join(sys.prefix, site_packages_prefix))
try:
all_sites_raw = os.environ['GUIX_PYTHONPATH'].split(os.path.pathsep)
diff --git a/gnu/packages/axoloti.scm b/gnu/packages/axoloti.scm
index ebd2e37d5c..ca3202dc3d 100644
--- a/gnu/packages/axoloti.scm
+++ b/gnu/packages/axoloti.scm
@@ -227,8 +227,8 @@ runtime.")
(sxml simple)
(sxml xpath)
(sxml transform))
- #:imported-modules `((guix build ant-build-system)
- ,@%gnu-build-system-modules)
+ #:imported-modules `((guix build ant-build-system)
+ ,@%default-gnu-imported-modules)
#:phases
#~(modify-phases %standard-phases
(delete 'configure)
@@ -380,7 +380,7 @@ patcher application.")))
(sxml xpath)
(sxml transform))
#:imported-modules ((guix build ant-build-system)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'make-git-checkout-writable
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 5e74439bff..325a490a94 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -844,7 +844,7 @@ NTFS volumes using @code{ntfs-3g}, preserving NTFS-specific attributes.")
"1kbxa1irszp2zw8hd5qzqnrrzb4vxfivs1vn64yxnj0lak1jjzvb"))))
(arguments
`(#:modules ((ice-9 match) (ice-9 rdelim)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:phases
;; This mostly mirrors the steps taken in the install.sh that ships
;; with dirvish, but simplified because we aren't prompting interactively
@@ -920,10 +920,9 @@ NTFS volumes using @code{ntfs-3g}, preserving NTFS-specific attributes.")
;; Write out executables
(for-each write-pl executables)
;; Write out man pages
- (for-each write-man man-pages)
- #t))))))
+ (for-each write-man man-pages)))))))
(inputs
- (list perl rsync perl-libtime-period perl-libtime-parsedate))
+ (list bash-minimal perl rsync perl-libtime-period perl-libtime-parsedate))
(home-page "http://dirvish.org/")
(synopsis "Fast, disk based, rotating network backup system")
(description
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index 1213aa5b20..d8b18599b0 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -1,12 +1,12 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012-2023 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012-2024 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2019 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2014, 2015, 2016, 2018 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
;;; Copyright © 2014, 2015 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
;;; Copyright © 2016, 2017, 2019-2023 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2016, 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2016, 2020, 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2016, 2018 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
;;; Copyright © 2017, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
@@ -23,6 +23,7 @@
;;; Copyright © 2022 zamfofex <zamfofex@twdb.moe>
;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
;;; Copyright © 2023 Josselin Poiret <dev@jpoiret.xyz>
+;;; Copyright © 2024 Zheng Junjie <873216071@qq.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -80,6 +81,10 @@
libc-utf8-locales-for-target
make-ld-wrapper
libiconv-if-needed
+
+ ;; Beware: the following should not be used the top level to avoid
+ ;; introducing circular module dependencies.
+ canonical-package
%final-inputs))
;;; Commentary:
@@ -111,20 +116,22 @@ command-line arguments, multiple languages, and so on.")
(define-public grep
(package
(name "grep")
- (version "3.8")
+ (version "3.11")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/grep/grep-"
version ".tar.xz"))
(sha256
(base32
- "10n3mc9n1xmg85hpxyr4wiqzfp27ffxzwhvkv021j27vnk0pr3a9"))
+ "1avf4x8skxbqrjp5j2qr9sp5vlf8jkw2i5bdn51fl3cxx3fsxchx"))
(patches (search-patches "grep-timing-sensitive-test.patch"))))
(build-system gnu-build-system)
(native-inputs (list perl)) ;some of the tests require it
- (inputs (list pcre))
+ (inputs (list pcre2))
(arguments
- `(#:phases
+ `(#:configure-flags
+ (list "--enable-perl-regexp")
+ #:phases
(modify-phases %standard-phases
(add-after 'install 'fix-egrep-and-fgrep
;; Patch 'egrep' and 'fgrep' to execute 'grep' via its
@@ -294,15 +301,14 @@ differences.")
(define-public diffutils
(package
(name "diffutils")
- (version "3.8")
+ (version "3.10")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/diffutils/diffutils-"
version ".tar.xz"))
(sha256
(base32
- "1v4g8gi0lgakqa7iix8s4fq7lq6l92vw3rjd9wfd2rhjng8xggd6"))
- (patches (search-patches "diffutils-fix-signal-processing.patch"))))
+ "17nhkdn5a2z6pwcmjs4jas2plg066hbdz06y5vhypr14qwyfkrch"))))
(build-system gnu-build-system)
(arguments
(list
@@ -414,10 +420,6 @@ used to apply commands with arbitrarily long arguments.")
" test-renameatu"
" test-utimensat")))
'())
- ,@(if (not (target-64bit?))
- ;; Not all software is ready for 64bit time_t.
- '(#:configure-flags (list "--disable-year2038"))
- '())
#:phases (modify-phases %standard-phases
(add-before 'build 'patch-shell-references
(lambda _
@@ -520,14 +522,14 @@ standard.")
(define-public gnu-make
(package
(name "make")
- (version "4.3")
+ (version "4.4.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/make/make-" version
".tar.gz"))
(sha256
(base32
- "06cfqzpqsvdnsxbysl5p2fgdgxgl9y4p7scpnrfa8z2zgkjdspz0"))
+ "1cwgcmwdn7gqn5da2ia91gkyiqs9birr10sy5ykpkaxzcwfzn5nx"))
(patches (search-patches "make-impure-dirs.patch"))))
(build-system gnu-build-system)
(native-inputs (list pkg-config)) ;to detect Guile
@@ -586,54 +588,49 @@ change. GNU make offers many powerful extensions over the standard utility.")
(define-public binutils
(package
(name "binutils")
- (version "2.38")
+ (version "2.41")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://gnu/binutils/binutils-"
version ".tar.bz2"))
(sha256
- (base32 "1y0fb4qgxaxfyf81x9fqq9w5609mkah0b7wm1f7ab9kpy0fcf3h7"))
+ (base32 "02xkm9xgcrqhln742636nm43yzrpjkhqj0z64h03gf7pab0bxi54"))
(patches (search-patches "binutils-loongson-workaround.patch"))))
(build-system gnu-build-system)
(arguments
- `(#:out-of-source? #t ;recommended in the README
- #:configure-flags '(;; Add `-static-libgcc' to not retain a dependency
- ;; on GCC when bootstrapping.
- "LDFLAGS=-static-libgcc"
-
- ;; Turn on --enable-new-dtags by default to make the
- ;; linker set RUNPATH instead of RPATH on binaries.
- ;; This is important because RUNPATH can be overriden
- ;; using LD_LIBRARY_PATH at runtime.
- "--enable-new-dtags"
-
- ;; Don't search under /usr/lib & co.
- "--with-lib-path=/no-ld-lib-path"
-
- ;; Install BFD. It ends up in a hidden directory,
- ;; but it's here.
- "--enable-install-libbfd"
-
- ;; Make sure 'ar' and 'ranlib' produce archives in a
- ;; deterministic fashion.
- "--enable-deterministic-archives"
-
- "--enable-64-bit-bfd"
- "--enable-compressed-debug-sections=all"
- "--enable-lto"
- "--enable-separate-code"
- "--enable-threads")
- ;; XXX: binutils 2.38 was released without generated manuals:
- ;; <https://sourceware.org/bugzilla/show_bug.cgi?id=28909>. To avoid
- ;; a circular dependency on texinfo, prevent the build system from
- ;; creating the manuals by calling "true" instead of "makeinfo" ...
- #:make-flags '("MAKEINFO=true")))
-
- ;; ... and "hide" this package such that users who install binutils get
- ;; the version with documentation defined below.
- (properties '((hidden? . #t)))
-
+ (list #:out-of-source? #t ;recommended in the README
+ #:configure-flags #~'(;; Add `-static-libgcc' to not retain a dependency
+ ;; on GCC when bootstrapping.
+ "LDFLAGS=-static-libgcc"
+
+ ;; Turn on --enable-new-dtags by default to make the
+ ;; linker set RUNPATH instead of RPATH on binaries.
+ ;; This is important because RUNPATH can be overriden
+ ;; using LD_LIBRARY_PATH at runtime.
+ "--enable-new-dtags"
+
+ ;; Don't search under /usr/lib & co.
+ "--with-lib-path=/no-ld-lib-path"
+
+ ;; Install BFD. It ends up in a hidden directory,
+ ;; but it's here.
+ "--enable-install-libbfd"
+
+ ;; Make sure 'ar' and 'ranlib' produce archives in a
+ ;; deterministic fashion.
+ "--enable-deterministic-archives"
+
+ "--enable-64-bit-bfd"
+ "--enable-compressed-debug-sections=all"
+ "--enable-lto"
+ "--enable-separate-code"
+ "--enable-threads")
+
+ ;; For some reason, the build machinery insists on rebuilding .info
+ ;; files, even though they're already provided by the tarball.
+ #:make-flags #~'("MAKEINFO=true")))
+ (native-inputs (list bison)) ;needed to build 'gprofng'
(synopsis "Binary utilities: bfd gas gprof ld")
(description
"GNU Binutils is a collection of tools for working with binary files.
@@ -645,16 +642,6 @@ included.")
(license gpl3+)
(home-page "https://www.gnu.org/software/binutils/")))
-(define-public binutils+documentation
- (package/inherit binutils
- (native-inputs
- (list texinfo))
- (arguments
- (substitute-keyword-arguments (package-arguments binutils)
- ((#:make-flags flags ''())
- ''())))
- (properties '())))
-
;; FIXME: ath9k-firmware-htc-binutils.patch do not apply on 2.34 because of a
;; big refactoring of xtensa-modules.c (commit 567607c11fbf7105 upstream).
;; Keep this version around until the patch is updated.
@@ -672,32 +659,34 @@ included.")
(patches '())))
(arguments
(substitute-keyword-arguments (package-arguments binutils)
- ((#:make-flags _ ''()) ''())))
+ ((#:make-flags _ #~'()) #~'())))
+ (native-inputs '())
(properties '())))
(define-public binutils-gold
- (package/inherit binutils+documentation
+ (package/inherit binutils
(name "binutils-gold")
(arguments
(substitute-keyword-arguments (package-arguments binutils)
((#:configure-flags flags)
- `(cons* "--enable-gold=default"
- (delete "LDFLAGS=-static-libgcc" ,flags)))
+ #~(cons* "--enable-gold=default"
+ (delete "LDFLAGS=-static-libgcc" #$flags)))
((#:phases phases '%standard-phases)
- `(modify-phases ,phases
+ #~(modify-phases #$phases
(add-after 'patch-source-shebangs 'patch-more-shebangs
(lambda _
(substitute* "gold/Makefile.in"
(("/bin/sh") (which "sh")))))
;; Multiple failing tests on some architectures in the gold testsuite.
- ,@(if (or (target-arm?)
- (target-ppc32?))
- '((add-after 'unpack 'skip-gold-testsuite
- (lambda _
- (substitute* "gold/Makefile.in"
- ((" testsuite") " ")))))
- '())))))
- (native-inputs (list bc))))
+ #$@(if (or (target-arm?)
+ (target-ppc32?))
+ #~((add-after 'unpack 'skip-gold-testsuite
+ (lambda _
+ (substitute* "gold/Makefile.in"
+ ((" testsuite") " ")))))
+ #~())))))
+ (native-inputs (modify-inputs (package-native-inputs binutils)
+ (append bc)))))
(define* (make-ld-wrapper name #:key
(target (const #f))
@@ -794,27 +783,25 @@ the store.")
;; version 2.28, GNU/Hurd used a different glibc branch.
(package
(name "glibc")
- (version "2.35")
- (replacement glibc/fixed)
+ (version "2.39")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/glibc/glibc-" version ".tar.xz"))
(sha256
(base32
- "0bpm1kfi09dxl4c6aanc5c9951fmf6ckkzay60cx7k37dcpp68si"))
+ "09nrwb0ksbah9k35jchd28xxp2hidilqdgz7b8v5f30pz1yd8yzp"))
(patches (search-patches "glibc-ldd-powerpc.patch"
- "glibc-ldd-x86_64.patch"
+ "glibc-2.38-ldd-x86_64.patch"
"glibc-dl-cache.patch"
- "glibc-versioned-locpath.patch"
- "glibc-allow-kernel-2.6.32.patch"
+ "glibc-2.37-versioned-locpath.patch"
+ ;; "glibc-allow-kernel-2.6.32.patch"
"glibc-reinstate-prlimit64-fallback.patch"
"glibc-supported-locales.patch"
- "glibc-cross-objdump.patch"
- "glibc-cross-objcopy.patch" ;must come 2nd
- "glibc-hurd-clock_t_centiseconds.patch"
- "glibc-hurd-clock_gettime_monotonic.patch"
+ "glibc-2.37-hurd-clock_t_centiseconds.patch"
+ "glibc-2.37-hurd-local-clock_gettime_MONOTONIC.patch"
"glibc-hurd-mach-print.patch"
- "glibc-hurd-gettyent.patch"))))
+ "glibc-hurd-gettyent.patch"
+ "glibc-hurd-getauxval.patch"))))
(build-system gnu-build-system)
;; Glibc's <limits.h> refers to <linux/limit.h>, for instance, so glibc
@@ -965,19 +952,13 @@ the store.")
;; and as such, it is useful to have these ".a" files in
;; OUT in addition to STATIC.
- ;; XXX: It might be better to determine whether a static
- ;; library is empty by some criterion (such as their file
- ;; size equaling eight bytes) rather than hardcoding them
- ;; by name.
-
- ;; XXX: We forgot librt.a for the current version! In
- ;; the meantime, gcc-toolchain provides it, but remove
- ;; that fix once librt.a is added here.
- (define empty-static-libraries
- '("libpthread.a" "libdl.a" "libutil.a" "libanl.a"))
(define (empty-static-library? file)
- (any (lambda (s)
- (string=? file s)) empty-static-libraries))
+ ;; Return true if FILE is an 'ar' archive with nothing
+ ;; beyond the header.
+ (let ((file (string-append (assoc-ref outputs "out")
+ "/lib/" file)))
+ (and (ar-file? file)
+ (= (stat:size (stat file)) 8))))
(define (static-library? file)
;; Return true if FILE is a static library. The
@@ -1020,14 +1001,41 @@ the store.")
(map (cut string-append slib "/" <>)
files))))))
+ (add-after 'install 'install-utf8-c-locale
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Install the C.UTF-8 locale so there's always a UTF-8
+ ;; locale around.
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (locale (string-append out "/lib/locale/"
+ ,(package-version
+ this-package))))
+ (mkdir-p locale)
+
+ ;; FIXME: When cross-compiling, attempt to use
+ ;; 'localedef' from the same libc version.
+ (invoke ,(if (%current-target-system)
+ "true"
+ '(string-append bin "/localedef"))
+ "--no-archive" "--prefix" locale
+ "-i" "C" "-f" "UTF-8"
+ (string-append locale "/C.UTF-8")))))
+
,@(if (target-hurd?)
'((add-after 'install 'augment-libc.so
(lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out")))
+ (let ((out (assoc-ref outputs "out")))
(substitute* (string-append out "/lib/libc.so")
(("/[^ ]+/lib/libc.so.0.3")
(string-append out "/lib/libc.so.0.3"
- " libmachuser.so libhurduser.so")))))))
+ " libmachuser.so libhurduser.so"))))))
+ (add-after 'install 'create-machine-symlink
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out"))
+ (cpu "i386"))
+ (symlink cpu
+ (string-append out
+ "/include/mach/machine"))))))
'()))))
(inputs `(("static-bash" ,static-bash)))
@@ -1091,9 +1099,44 @@ with the Linux kernel.")
;; Below are old libc versions, which we use mostly to build locale data in
;; the old format (which the new libc cannot cope with.)
-(define-public glibc-2.33
+(define-public glibc-2.35
(package
(inherit glibc)
+ (version "2.35")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/glibc/glibc-" version ".tar.xz"))
+ (sha256
+ (base32
+ "0bpm1kfi09dxl4c6aanc5c9951fmf6ckkzay60cx7k37dcpp68si"))
+ (patches (search-patches "glibc-ldd-powerpc.patch"
+ "glibc-ldd-x86_64.patch"
+ "glibc-dl-cache.patch"
+ "glibc-versioned-locpath.patch"
+ "glibc-allow-kernel-2.6.32.patch"
+ "glibc-reinstate-prlimit64-fallback.patch"
+ "glibc-supported-locales.patch"
+ "glibc-cross-objdump.patch"
+ "glibc-cross-objcopy.patch" ;must come 2nd
+ "glibc-hurd-clock_t_centiseconds.patch"
+ "glibc-hurd-clock_gettime_monotonic.patch"
+ "glibc-hurd-mach-print.patch"
+ "glibc-hurd-gettyent.patch"))))
+ (arguments
+ (substitute-keyword-arguments (package-arguments glibc)
+ ((#:configure-flags flags #~'())
+ #~(cons* "--enable-crypt"
+ #$flags))
+ ((#:phases phases)
+ ;; The C.UTF-8 fails to build in glibc 2.35:
+ ;; <https://sourceware.org/bugzilla/show_bug.cgi?id=28861>.
+ ;; It is missing altogether in versions earlier than 2.35.
+ `(modify-phases ,phases
+ (delete 'install-utf8-c-locale)))))))
+
+(define-public glibc-2.33
+ (package
+ (inherit glibc-2.35)
(name "glibc")
(version "2.33")
(source (origin
@@ -1104,23 +1147,25 @@ with the Linux kernel.")
"1zvp0qdfbdyqrzydz18d9zg3n5ygy8ps7cmny1bvsp8h1q05c99f"))
(patches
(cons (search-patch "glibc-2.33-riscv64-miscompilation.patch")
- ;; Remove a patch that's become irrelevant and that does not
- ;; apply to this version.
- (remove (lambda (patch)
- (string=? (basename patch)
- "glibc-hurd-clock_gettime_monotonic.patch"))
- (origin-patches (package-source glibc)))))))
+ ;; Remove patches that are irrelevant or do not apply to
+ ;; this version.
+ (remove
+ (lambda (patch)
+ (member (basename patch)
+ '("glibc-2.35-CVE-2023-4911.patch"
+ "glibc-hurd-clock_gettime_monotonic.patch")))
+ (origin-patches (package-source glibc-2.35)))))))
(arguments
- (substitute-keyword-arguments (package-arguments glibc)
+ (substitute-keyword-arguments (package-arguments glibc-2.35)
((#:configure-flags flags ''())
;; There are undefined references to pthread symbols while linking
;; 'support/links-dso-program.cc'. Since this isn't needed here, turn
;; off C++ tests.
- `(cons "libc_cv_cxx_link_ok=no" ,flags))))))
+ #~(cons "libc_cv_cxx_link_ok=no" #$flags))))))
(define-public glibc-2.32
(package
- (inherit glibc)
+ (inherit glibc-2.35)
(version "2.32")
(source (origin
(inherit (package-source glibc))
@@ -1175,7 +1220,7 @@ with the Linux kernel.")
(define-public glibc-2.31
(package
- (inherit glibc)
+ (inherit glibc-2.35)
(version "2.31")
(source (origin
(inherit (package-source glibc))
@@ -1304,7 +1349,7 @@ to the @code{share/locale} sub-directory of this package.")
,@modules))
((#:imported-modules modules '())
`((gnu build locale)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
((#:phases phases)
`(modify-phases ,phases
(replace 'build
@@ -1338,6 +1383,7 @@ to the @code{share/locale} sub-directory of this package.")
normalized)))))
locales))))
(delete 'install)
+ (delete 'install-utf8-c-locale)
(delete 'move-static-libs)))
((#:configure-flags flags)
`(append ,flags
@@ -1352,51 +1398,64 @@ to the @code{share/locale} sub-directory of this package.")
(define %default-utf8-locales
;; These are the locales commonly used for tests---e.g., in Guile's i18n
;; tests.
- '("de_DE" "el_GR" "en_US" "fr_FR" "tr_TR"))
+ '("C" "de_DE" "el_GR" "en_US" "fr_FR" "tr_TR"))
+
(define*-public (make-glibc-utf8-locales glibc #:key
(locales %default-utf8-locales)
(name "glibc-utf8-locales"))
- (define default-locales? (equal? locales %default-utf8-locales))
+ (define default-locales?
+ (equal? locales %default-utf8-locales))
+
(package
(name name)
(version (package-version glibc))
(source #f)
(build-system trivial-build-system)
(arguments
- `(#:modules ((guix build utils))
- #:builder (begin
- (use-modules (guix build utils))
-
- (let* ((libc (assoc-ref %build-inputs "glibc"))
- (gzip (assoc-ref %build-inputs "gzip"))
- (out (assoc-ref %outputs "out"))
- (localedir (string-append out "/lib/locale/"
- ,(version-major+minor version))))
- ;; 'localedef' needs 'gzip'.
- (setenv "PATH" (string-append libc "/bin:" gzip "/bin"))
-
- (mkdir-p localedir)
- (for-each (lambda (locale)
- (define file
- ;; Use the "normalized codeset" by
- ;; default--e.g., "en_US.utf8".
- (string-append localedir "/" locale ".utf8"))
-
- (invoke "localedef" "--no-archive"
- "--prefix" localedir
- "-i" locale
- "-f" "UTF-8" file)
-
- ;; For backward compatibility with Guix
- ;; <= 0.8.3, add "xx_YY.UTF-8".
- (symlink (string-append locale ".utf8")
- (string-append localedir "/"
- locale ".UTF-8")))
- ',locales)
- #t))))
- (native-inputs
- `(("glibc" ,glibc)
- ("gzip" ,gzip)))
+ (list #:modules '((guix build utils))
+ #:builder
+ #~(begin
+ (use-modules (guix build utils))
+
+ (let* ((libc (dirname
+ (search-input-file %build-inputs
+ "/bin/localedef")))
+ (gzip (dirname
+ (search-input-file %build-inputs
+ "/bin/gzip")))
+ (out #$output)
+ (localedir (string-append out "/lib/locale/"
+ #$(version-major+minor
+ (package-version this-package)))))
+ ;; 'localedef' needs 'gzip'.
+ (setenv "PATH" (string-append libc ":" gzip ""))
+
+ (mkdir-p localedir)
+ (for-each (lambda (locale)
+ (define file
+ ;; Use the "normalized codeset" by
+ ;; default--e.g., "en_US.utf8".
+ (string-append localedir "/" locale ".utf8"))
+
+ (invoke "localedef" "--no-archive"
+ "--prefix" localedir
+ "-i" locale
+ "-f" "UTF-8" file)
+
+ ;; For backward compatibility with Guix
+ ;; <= 0.8.3, add "xx_YY.UTF-8".
+ (symlink (string-append locale ".utf8")
+ (string-append localedir "/"
+ locale ".UTF-8")))
+
+ ;; The C.UTF-8 locale was introduced in 2.35 but it
+ ;; fails to build there:
+ ;; <https://sourceware.org/bugzilla/show_bug.cgi?id=28861>.
+ '#$(if (version>? (package-version this-package)
+ "2.35")
+ locales
+ (delete "C" locales)))))))
+ (native-inputs (list glibc gzip))
(synopsis (if default-locales?
(P_ "Small sample of UTF-8 locales")
(P_ "Customized sample of UTF-8 locales")))
@@ -1458,27 +1517,7 @@ variety of options. It is an alternative to the shell \"type\" built-in
command.")
(license gpl3+))) ; some files are under GPLv2+
-(define-public glibc/hurd
- (package/inherit glibc
- (name "glibc-hurd")
- (version "2.37")
- (source (origin
- (method url-fetch)
- (uri (string-append "mirror://gnu/glibc/glibc-" version ".tar.xz"))
- (sha256
- (base32
- "0hqsp4dzrjx0iga6jv0magjw26dh82pxlmk8yis5v0d127qyymr2"))
- (patches (search-patches "glibc-ldd-powerpc.patch"
- "glibc-dl-cache.patch"
- "glibc-2.37-versioned-locpath.patch"
- "glibc-reinstate-prlimit64-fallback.patch"
- "glibc-supported-locales.patch"
- "glibc-2.37-hurd-clock_t_centiseconds.patch"
- "glibc-2.37-hurd-local-clock_gettime_MONOTONIC.patch"
- "glibc-hurd-mach-print.patch"
- "glibc-hurd-gettyent.patch"
- "glibc-hurd-getauxval.patch"))))
- (supported-systems %hurd-systems)))
+(define-public glibc/hurd glibc)
(define-public glibc/hurd-headers
(package/inherit glibc/hurd
@@ -1544,16 +1583,21 @@ command.")
(define* (libc-utf8-locales-for-target #:optional
(target (or (%current-target-system)
(%current-system))))
- (if (target-hurd? target)
- glibc-utf8-locales/hurd
- glibc-utf8-locales))
+ "Return the glibc UTF-8 locale package for TARGET."
+ ;; Note: To avoid circular dependencies (such as: texinfo ->
+ ;; glibc-utf8-locales -> glibc -> texinfo), refer to
+ ;; 'glibc-utf8-locales-final' via 'canonical-package'.
+ (canonical-package
+ (if (target-hurd? target)
+ glibc-utf8-locales/hurd
+ glibc-utf8-locales)))
(define-public tzdata
(package
(name "tzdata")
;; This package should be kept in sync with python-pytz and python-tzdata
;; in (gnu packages time).
- (version "2022a")
+ (version "2023d")
(source (origin
(method url-fetch)
(uri (string-append
@@ -1561,7 +1605,7 @@ command.")
version ".tar.gz"))
(sha256
(base32
- "0r0nhwpk9nyxj5kkvjy58nr5d85568m04dcb69c4y3zmykczyzzg"))))
+ "1wq858ip55ijnlrffnnadq7vw0x93ywxghgfxh68r2qa1fbj3jnv"))))
(build-system gnu-build-system)
(arguments
(list #:tests? #f
@@ -1629,7 +1673,7 @@ command.")
version ".tar.gz"))
(sha256
(base32
- "1iysv8fdkm79k8wh8jizmjmq075q4qjhk090vxjy57my6dz5wmzq")))))
+ "07hn7hn2klw4dfyr673ril2nrk18198hbfv25gljsvc833hzk9g9")))))
(home-page "https://www.iana.org/time-zones")
(synopsis "Database of current and historical time zones")
(description "The Time Zone Database (often called tz or zoneinfo)
@@ -1686,12 +1730,18 @@ package needs iconv ,@(libiconv-if-needed) should be added."
(list libiconv)
'()))
-(define-public (canonical-package package)
+;;; Beware: canonical-package should not be used at the top level, to avoid
+;;; eagerly resolving (gnu packages commencement), which would introduce
+;;; circular module dependencies.
+(define (canonical-package package)
;; Avoid circular dependency by lazily resolving 'commencement'.
(let* ((iface (resolve-interface '(gnu packages commencement)))
(proc (module-ref iface 'canonical-package)))
(proc package)))
+;;; Beware: %final-inputs should not be used at the top level, to avoid
+;;; eagerly resolving (gnu packages commencement), which would introduce
+;;; circular module dependencies.
(define* (%final-inputs #:optional (system (%current-system)))
"Return the list of \"final inputs\"."
;; Avoid circular dependency by lazily resolving 'commencement'.
diff --git a/gnu/packages/bdw-gc.scm b/gnu/packages/bdw-gc.scm
index 5ff4649716..8eed98d1fd 100644
--- a/gnu/packages/bdw-gc.scm
+++ b/gnu/packages/bdw-gc.scm
@@ -34,7 +34,7 @@
(define-public libgc
(package
(name "libgc")
- (version "8.2.2")
+ (version "8.2.4")
(source (origin
(method url-fetch)
(uri (list (string-append "https://github.com/ivmai/bdwgc/releases"
@@ -44,7 +44,7 @@
"/gc-" version ".tar.gz")))
(sha256
(base32
- "181ni2rn9qjbl4ilqdjrd1a4h8siv5bgmzqgg4595q32n2y0f0gk"))))
+ "1hlgqkg9arc8sqf7wamvzmp3shb3np5z0h5v0qqksh3pw3dkq39x"))))
(build-system gnu-build-system)
(arguments
(append
diff --git a/gnu/packages/benchmark.scm b/gnu/packages/benchmark.scm
index 2b3ab0c112..1f2d5eb0a7 100644
--- a/gnu/packages/benchmark.scm
+++ b/gnu/packages/benchmark.scm
@@ -90,7 +90,7 @@
(build-system gnu-build-system)
(arguments
(list #:modules
- `(,@%gnu-build-system-modules
+ `(,@%default-gnu-modules
(ice-9 textual-ports))
#:test-target "test"
#:configure-flags
@@ -663,7 +663,6 @@ its features are:
python-wrapper
which
;; For documentation
- libxml2 ;for XML_CATALOG_FILES
libxslt
docbook-xml
docbook-xsl))
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 448ea5d6de..f4eeecb985 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -12,7 +12,7 @@
;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com>
;;; Copyright © 2018-2023 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de>
-;;; Copyright © 2019, 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2019, 2020, 2021, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2019 Brian Leung <bkleung89@gmail.com>
;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
@@ -83,6 +83,7 @@
#:use-module (gnu packages cran)
#:use-module (gnu packages crates-io)
#:use-module (gnu packages curl)
+ #:use-module (gnu packages docbook)
#:use-module (gnu packages documentation)
#:use-module (gnu packages databases)
#:use-module (gnu packages datastructures)
@@ -1571,7 +1572,8 @@ different from MFE computed with random sequences.")
"Ribotaper_ORF_find.sh"
"Ribotaper.sh")))))))
(inputs
- (list bedtools-2.18
+ (list bash-minimal
+ bedtools-2.18
samtools-0.1
r-minimal
r-foreach
@@ -2915,7 +2917,7 @@ files.")
`("PERL5LIB" ":" prefix (,path))))
(find-files bin "\\.pl$")))))))))
(inputs
- (list perl-module-build perl-data-stag perl-libwww perl-uri))
+ (list bash-minimal perl-module-build perl-data-stag perl-libwww perl-uri))
(native-inputs
(list perl-test-most))
(home-page "https://metacpan.org/release/BioPerl")
@@ -5697,7 +5699,8 @@ apart transcripts derived from paralogous genes.")
(wrap-program (string-append bin "/RepeatMasker")
`("PERL5LIB" ":" prefix (,path ,share)))))))))
(inputs
- (list perl
+ (list bash-minimal
+ perl
perl-text-soundex
python
python-h5py
@@ -5912,8 +5915,7 @@ and utility programs for sequence analysis.")
(substitute* "rchive.go"
;; This go library does not have any license.
(("github.com/fiam/gounidecode/unidecode")
- "golang.org/rainycape/unidecode"))
- #t))))
+ "golang.org/rainycape/unidecode"))))))
(build-system perl-build-system)
(arguments
`(#:phases
@@ -5926,8 +5928,7 @@ and utility programs for sequence analysis.")
;; Ignore errors about missing xtract.Linux and rchive.Linux.
(substitute* "pm-refresh"
(("cat \\\"\\$target")
- "grep ^[[:digit:]] \"$target"))
- #t))
+ "grep ^[[:digit:]] \"$target"))))
(replace 'install
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((bin (string-append (assoc-ref outputs "out") "/bin"))
@@ -5943,8 +5944,7 @@ and utility programs for sequence analysis.")
(symlink (string-append edirect-go "/bin/xtract.Linux")
(string-append bin "/xtract"))
(symlink (string-append edirect-go "/bin/rchive.Linux")
- (string-append bin "/rchive")))
- #t))
+ (string-append bin "/rchive")))))
(add-after 'install 'wrap-program
(lambda* (#:key outputs #:allow-other-keys)
;; Make sure everything can run in a pure environment.
@@ -5961,16 +5961,15 @@ and utility programs for sequence analysis.")
,(dirname (which "grep"))
,(dirname (which "perl"))
,(dirname (which "uname"))))))
- (find-files out ".")))
- #t))
+ (find-files out ".")))))
(add-after 'wrap-program 'check
(lambda* (#:key outputs #:allow-other-keys)
(invoke (string-append (assoc-ref outputs "out")
"/bin/edirect.pl")
- "-filter" "-help")
- #t)))))
+ "-filter" "-help"))))))
(inputs
- (list edirect-go-programs
+ (list bash-minimal
+ edirect-go-programs
perl-html-parser
perl-encode-locale
perl-file-listing
@@ -8228,8 +8227,7 @@ selection, etc.).")
(("^rm -f mafft-distance mafft-distance.exe") ")#")
;; do not install MAN pages in libexec folder
(("^\t\\$\\(INSTALL\\) -m 644 \\$\\(MANPAGES\\) \
-\\$\\(DESTDIR\\)\\$\\(LIBDIR\\)") "#"))
- #t))
+\\$\\(DESTDIR\\)\\$\\(LIBDIR\\)") "#"))))
(add-after 'enter-dir 'patch-paths
(lambda* (#:key inputs #:allow-other-keys)
(substitute* '("pairash.c"
@@ -8237,8 +8235,7 @@ selection, etc.).")
(("perl") (which "perl"))
(("([\"`| ])awk" _ prefix)
(string-append prefix (which "awk")))
- (("grep") (which "grep")))
- #t))
+ (("grep") (which "grep")))))
(delete 'configure)
(add-after 'install 'wrap-programs
(lambda* (#:key inputs outputs #:allow-other-keys)
@@ -8251,7 +8248,7 @@ selection, etc.).")
`("PATH" ":" prefix (,path))))
(find-files bin))))))))
(inputs
- (list perl ruby gawk grep coreutils))
+ (list bash-minimal perl ruby gawk grep coreutils))
(home-page "https://mafft.cbrc.jp/alignment/software/")
(synopsis "Multiple sequence alignment program")
(description
@@ -8675,8 +8672,7 @@ predicts the locations of structural units in the sequences.")
(snippet
'(begin
;; remove pre-built scripts
- (delete-file-recursively "src/BUILD/")
- #t))))
+ (delete-file-recursively "src/BUILD/")))))
(build-system gnu-build-system)
(arguments
`(#:test-target "test"
@@ -8691,13 +8687,11 @@ predicts the locations of structural units in the sequences.")
(string-append
"INSTALLDIR=" (assoc-ref outputs "out") "/bin\n"))
(("-llapack -lblas")
- "-lopenblas"))
- #t))
+ "-lopenblas"))))
(add-before 'install 'make-install-directory
;; The install directory is not created during 'make install'.
(lambda* (#:key outputs #:allow-other-keys)
- (mkdir-p (string-append (assoc-ref outputs "out") "/bin"))
- #t))
+ (mkdir-p (string-append (assoc-ref outputs "out") "/bin"))))
(add-after 'install 'wrap-programs
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((path (getenv "PATH"))
@@ -8707,15 +8701,16 @@ predicts the locations of structural units in the sequences.")
(wrap-script script #:guile guile
`("PATH" ":" prefix (,path))))
(cons (string-append out "/bin/proteinortho")
- (find-files out "\\.(pl|py)$"))))
- #t)))))
+ (find-files out "\\.(pl|py)$")))))))))
(inputs
- `(("guile" ,guile-3.0) ; for wrap-script
- ("diamond" ,diamond)
- ("perl" ,perl)
- ("python" ,python-wrapper)
- ("blast+" ,blast+)
- ("openblas" ,openblas)))
+ (list bash-minimal
+ guile-3.0 ; for wrap-script
+ diamond
+ perl
+ python-wrapper
+ blast+
+ lapack
+ openblas))
(native-inputs
(list which))
(home-page "https://www.bioinf.uni-leipzig.de/Software/proteinortho")
@@ -8789,8 +8784,7 @@ partial genes, and identifies translation initiation sites.")
(for-each (lambda (file)
(display file)(display "\n")
(invoke "perl" file))
- (find-files "t" ".*\\.t$"))
- #t))
+ (find-files "t" ".*\\.t$"))))
(replace 'install
;; There is no 'install' target in the Makefile.
(lambda* (#:key outputs #:allow-other-keys)
@@ -8801,8 +8795,7 @@ partial genes, and identifies translation initiation sites.")
(mkdir-p bin)
(mkdir-p perl)
(copy-recursively "bin" bin)
- (copy-recursively "lib" perl)
- #t)))
+ (copy-recursively "lib" perl))))
(add-after 'install 'wrap-programs
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@@ -8828,39 +8821,39 @@ partial genes, and identifies translation initiation sites.")
(,(string-append r-site-lib ":" out "/site-library/"))))
(wrap-program file
`("PATH" ":" prefix
- (,(string-append coreutils-path ":" out "/bin"))))))
- #t)))))
+ (,(string-append coreutils-path ":" out "/bin")))))))))))
(native-inputs
(list perl-env-path perl-test-files perl-test-most perl-test-output))
(inputs
- `(("perl-array-utils" ,perl-array-utils)
- ("bioperl" ,bioperl-minimal)
- ("perl-digest-md5-file" ,perl-digest-md5-file)
- ("perl-exception-class" ,perl-exception-class)
- ("perl-file-find-rule" ,perl-file-find-rule)
- ("perl-file-grep" ,perl-file-grep)
- ("perl-file-slurper" ,perl-file-slurper)
- ("perl-file-which" ,perl-file-which)
- ("perl-graph" ,perl-graph)
- ("perl-graph-readwrite" ,perl-graph-readwrite)
- ("perl-log-log4perl" ,perl-log-log4perl)
- ("perl-moose" ,perl-moose)
- ("perl-perlio-utf8_strict" ,perl-perlio-utf8_strict)
- ("perl-text-csv" ,perl-text-csv)
- ("bedtools" ,bedtools)
- ("cd-hit" ,cd-hit)
- ("blast+" ,blast+)
- ("mcl" ,mcl)
- ("parallel" ,parallel)
- ("prank" ,prank)
- ("mafft" ,mafft)
- ("fasttree" ,fasttree)
- ("grep" ,grep)
- ("sed" ,sed)
- ("gawk" ,gawk)
- ("r-minimal" ,r-minimal)
- ("r-ggplot2" ,r-ggplot2)
- ("coreutils" ,coreutils)))
+ (list bash-minimal
+ perl-array-utils
+ bioperl-minimal
+ perl-digest-md5-file
+ perl-exception-class
+ perl-file-find-rule
+ perl-file-grep
+ perl-file-slurper
+ perl-file-which
+ perl-graph
+ perl-graph-readwrite
+ perl-log-log4perl
+ perl-moose
+ perl-perlio-utf8_strict
+ perl-text-csv
+ bedtools
+ cd-hit
+ blast+
+ mcl
+ parallel
+ prank
+ mafft
+ fasttree
+ grep
+ sed
+ gawk
+ r-minimal
+ r-ggplot2
+ coreutils))
(home-page "https://sanger-pathogens.github.io/Roary/")
(synopsis "High speed stand-alone pan genome pipeline")
(description
@@ -8992,7 +8985,7 @@ phylogenies.")
"rsem-run-ebseq"
"rsem-run-prsem-testing-procedure"))))))))
(inputs
- (list boost r-minimal perl htslib-1.3 zlib))
+ (list bash-minimal boost r-minimal perl htslib-1.3 zlib))
(home-page "https://deweylab.biostat.wisc.edu/rsem/")
(synopsis "Estimate gene expression levels from RNA-Seq data")
(description
@@ -12618,7 +12611,8 @@ data. It also generates basic statistics for your sequences.")
(when tests?
(invoke "make" "check")))))))
(inputs
- (list boost
+ (list bash-minimal
+ boost
htslib
python
python-biopython
@@ -12909,8 +12903,7 @@ secondary structure and comparative analysis in R.")
;; its R expression ‘1.10.1 >= 1.3.4’ evaluates to false.
(lambda _
(substitute* "configure"
- (("1\\.3\\.4") "0.0.0"))
- #t))
+ (("1\\.3\\.4") "0.0.0"))))
(add-after 'install 'wrap-executable
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@@ -12922,14 +12915,14 @@ secondary structure and comparative analysis in R.")
(wrap-program (string-append out "/bin/rcas-web")
`("GUILE_LOAD_PATH" ":" = (,path))
`("GUILE_LOAD_COMPILED_PATH" ":" = (,path))
- `("R_LIBS_SITE" ":" = (,(getenv "R_LIBS_SITE")))))
- #t)))))
+ `("R_LIBS_SITE" ":" = (,(getenv "R_LIBS_SITE"))))))))))
(inputs
- `(("r-minimal" ,r-minimal)
- ("r-rcas" ,r-rcas)
- ("guile" ,guile-2.2)
- ("guile-json" ,guile-json-1)
- ("guile-redis" ,guile2.2-redis)))
+ (list bash-minimal
+ r-minimal
+ r-rcas
+ guile-2.2
+ guile-json-1
+ guile2.2-redis))
(native-inputs
(list pkg-config))
(home-page "https://github.com/BIMSBbioinfo/rcas-web")
@@ -16331,29 +16324,35 @@ Thus the per-base error rate is similar to the raw input reads.")
(base32 "1bbsn5f5x8wlspg4pbibqz6m5vin8c19nl224f3z3km0pkc97rwv"))))
(build-system qt-build-system)
(arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'configure
- (lambda _
- (invoke "qmake" "Bandage.pro")))
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (substitute* "tests/bandage_command_line_tests.sh"
- (("^bandagepath=.*")
- (string-append "bandagepath=" (getcwd) "/Bandage\n")))
- (with-directory-excursion "tests"
- (setenv "XDG_RUNTIME_DIR" (getcwd))
- (invoke "./bandage_command_line_tests.sh")))
- #t))
- (replace 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (install-file "Bandage" (string-append out "/bin"))
- #t))))))
+ (list
+ ;; TODO: Once <https://issues.guix.gnu.org/47475> is fixed,
+ ;; consider uncommenting the following:
+ ;;
+ ;; Prevent the (rarely updated) imagemagick/stable package from
+ ;; ending up in the closure.
+ ;; #:disallowed-references (list imagemagick/stable)
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'configure
+ (lambda _
+ (invoke "qmake" "Bandage.pro")))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (substitute* "tests/bandage_command_line_tests.sh"
+ (("^bandagepath=.*")
+ (string-append "bandagepath=" (getcwd) "/Bandage\n")))
+ (with-directory-excursion "tests"
+ (setenv "XDG_RUNTIME_DIR" (getcwd))
+ (invoke "./bandage_command_line_tests.sh")))))
+ (replace 'install
+ (lambda _
+ (install-file "Bandage" (string-append #$output "/bin")))))))
(inputs
(list qtbase-5 qtsvg-5))
(native-inputs
+ ;; imagemagick/stable cannot be used here, as it will end up in
+ ;; the closure. See <https://issues.guix.gnu.org/47475>.
(list imagemagick))
(home-page "https://rrwick.github.io/Bandage/")
(synopsis
@@ -18323,7 +18322,8 @@ datasets.")
(add-after 'register 'remove-libraries
(lambda* (#:key outputs #:allow-other-keys)
(delete-file-recursively (string-append (assoc-ref outputs "out") "/lib")))))))
- (inputs (list prodigal
+ (inputs (list bash-minimal
+ prodigal
bwa
samtools
minimap2
@@ -18467,7 +18467,8 @@ phase + query phase).")
(substitute* "scripts/read_info_histograms.sh"
(("awk") (which "gawk"))))))))
(inputs
- (list gawk ;for read_info_histograms.sh
+ (list bash-minimal
+ gawk ;for read_info_histograms.sh
python-wrapper ;required for histogram.py
zlib))
(home-page "https://github.com/rrwick/Filtlong/")
@@ -18540,7 +18541,8 @@ choosing which reads pass the filter.")
`("PERL5LIB" ":" prefix (,perl5lib))))
(find-files scripts "\\.pl"))))))))
(inputs
- (list guile-3.0 ;for wrappers
+ (list bash-minimal
+ guile-3.0 ;for wrappers
eigen
hdf5
htslib
@@ -18891,7 +18893,8 @@ includes a command line tool and an analysis pipeline.")
(wrap-program (string-append bin "/draw_fusions.R")
`("R_LIBS_SITE" ":" prefix (,(getenv "R_LIBS_SITE"))))))))))
(inputs
- (list htslib
+ (list bash-minimal
+ htslib
r-minimal
r-circlize
r-genomicalignments
@@ -22004,9 +22007,9 @@ single-cell data named @url{https://github.com/PMBio/cardelino, cardelino}.")
`(#:make-flags '("GUILE_AUTO_COMPILE=0") ; to prevent guild warnings
#:modules (((guix build guile-build-system)
#:select (target-guile-effective-version))
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:imported-modules ((guix build guile-build-system)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:phases
(modify-phases %standard-phases
(add-after 'patch-source-shebangs 'patch-more-source-shebangs
@@ -22027,9 +22030,9 @@ single-cell data named @url{https://github.com/PMBio/cardelino, cardelino}.")
(,(string-append out "/lib/guile/" effective-version "/site-ccache")
,(getenv "GUILE_LOAD_COMPILED_PATH"))))))))))
(inputs
- `(("bash" ,bash-minimal)
- ("guile" ,guile-3.0)
- ("guile-libyaml" ,guile-libyaml)))
+ (list bash-minimal
+ guile-3.0
+ guile-libyaml))
(native-inputs
(list pkg-config
lzip
@@ -22271,9 +22274,8 @@ module capable of computing base-level alignments for very large sequences.")
"-DGDCM_DOCUMENTATION:BOOL=ON"
"-DGDCM_PDF_DOCUMENTATION:BOOL=OFF"
(string-append "-DGDCM_INSTALL_DOC_DIR="
- #$output:doc "/share/doc/" #$name)
- "-DGDCM_BUILD_DOCBOOK_MANPAGES:BOOL=OFF"))) ; TODO: need ‘xsl-ns’
- (native-inputs (list doxygen graphviz))
+ #$output:doc "/share/doc/" #$name))))
+ (native-inputs (list docbook-xsl doxygen graphviz libxslt))
(home-page "https://gdcm.sourceforge.net/wiki/index.php/Main_Page")
(synopsis "Grassroots DICOM library")
(description
@@ -22378,7 +22380,8 @@ sum test, etc).")
python-tqdm))
;; Used by rpy2
(inputs
- (list r-minimal ;for R_LIBS_SITE
+ (list bash-minimal
+ r-minimal ;for R_LIBS_SITE
r-apeglm ;for runDE
r-deseq2 ;for runDE
r-drimseq ;for runDS
diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm
index d53f717f0d..54130a42cd 100644
--- a/gnu/packages/bittorrent.scm
+++ b/gnu/packages/bittorrent.scm
@@ -150,7 +150,8 @@
;; its own icons in pure environments.
`("GDK_PIXBUF_MODULE_FILE" =
(,(getenv "GDK_PIXBUF_MODULE_FILE")))))))))
- (inputs (list curl
+ (inputs (list bash-minimal
+ curl
(list glib "bin")
gtkmm
libappindicator
diff --git a/gnu/packages/boost.scm b/gnu/packages/boost.scm
index 71999709ed..70774617f0 100644
--- a/gnu/packages/boost.scm
+++ b/gnu/packages/boost.scm
@@ -67,7 +67,7 @@
(define-public boost
(package
(name "boost")
- (version "1.80.0")
+ (version "1.83.0")
(source (origin
(method url-fetch)
(uri (string-append "https://boostorg.jfrog.io/artifactory/main/release/"
@@ -75,33 +75,12 @@
(version-with-underscores version) ".tar.bz2"))
(patches
(list (boost-patch
- ;; Boost.Filesystem directory iterators may fail to
- ;; construct for a network share on Windows prior to 10:
- ;; https://github.com/boostorg/filesystem/pull/246,
- ;; https://github.com/boostorg/filesystem/issues/245
- "0001-filesystem-win-fix-dir-it-net-share.patch" version
- "067hhylqkzzdbqzc1hkbpaqmvz248lxqrdhb2yi6iq9qabsik3lk")
- (boost-patch
- ;; In Boost.Filesystem on Windows, weakly_canonical fails
- ;; to process paths that start with the "\\?\" prefix:
- ;; https://github.com/boostorg/filesystem/issues/247
- "0002-filesystem-fix-weakly-canonical-long-paths.patch" version
- "00w3albf8527glclx85p5b2ml3vr06xpwwmfyzg005v1cp8avcpi")
- (boost-patch
- ;; Boost.Unordered containers are not in a valid state
- ;; after moving:
- ;; https://github.com/boostorg/unordered/issues/139
- "0003-unordered-valid-after-move.patch" version
- "0dw839w22cawqawfpsx7j7v9y0x2vn66m732iidpxvdxbjn2kzva")
- (boost-patch
- ;; Fixed a missing include on POSIX systems that don't
- ;; support *at APIs:
- ;; https://github.com/boostorg/filesystem/issues/250
- "0004-filesystem-posix-fix-no-at-apis-missing-include.patch" version
- "09k8k3b1306jkjls12wfghj820n828j6aaxzmcr0wpnjhp8fzi1v")))
+ "0001-unordered-fix-copy-assign.patch" version
+ "09j61m5xh7099k5na9i43x5rra51znf7vm2nyh89yqpizcll9q66")))
+ (patch-flags '("-p2"))
(sha256
(base32
- "1h00qp4z5k6lfz310xjwsmqs8fwxi6ngas51169cafz4h9fmc68y"))))
+ "13iviiwk1srpw9dmiwabkxv56v0pl0zggjp8zxy1419k5zzfsy34"))))
(build-system gnu-build-system)
(inputs
(append
@@ -114,9 +93,9 @@
(arguments
(list
#:imported-modules `((guix build python-build-system)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:modules `(((guix build python-build-system) #:select (python-version))
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:tests? #f
#:configure-flags
#~(let ((icu (dirname (dirname (search-input-file
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index cfe8046731..6c8bb068c3 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -2,7 +2,7 @@
;;; Copyright © 2013-2019, 2021, 2023 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015, 2018 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2016, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2016, 2020, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2016-2018, 2021-2023 Marius Bakke <marius@gnu.org>
;;; Copyright © 2016, 2017 Danny Milosavljevic <dannym@scratchpost.org>
;;; Copyright © 2016, 2017 David Craven <david@craven.ch>
@@ -1017,7 +1017,7 @@ U-Boot must be used."
,@modules))
((#:imported-modules imported-modules '())
`((guix build kconfig)
- ,@%gnu-build-system-modules
+ ,@%default-gnu-imported-modules
,@imported-modules))
((#:test-target _ "test")
"test")
@@ -1873,9 +1873,9 @@ order to add a suitable bootloader menu entry.")
;;
;; TODO: Bump this timestamp at each modifications of the package (not only
;; for updates) by running: date +%s.
- (let ((timestamp "1678285400")
- (commit "9e1f7a3659071004f4b8c76f2593da6287f0d575")
- (revision "1"))
+ (let ((timestamp "1706118389")
+ (commit "de8a0821c7bc737e724fa3dfb6d89dc36f591d7a")
+ (revision "2"))
(package
(name "ipxe")
(version (git-version "1.21.1" revision commit))
@@ -1887,7 +1887,7 @@ order to add a suitable bootloader menu entry.")
(file-name (git-file-name name version))
(sha256
(base32
- "1fp4bgwzy923m11dkkhk9dik7al7shzmmpqhp339z786z8bjzmkb"))))
+ "0xiffdmf8hpmsw7nm9wp10wd0rs4avm2m3q5ncx0r5zfykannlbd"))))
(build-system gnu-build-system)
(arguments
(list
@@ -1898,7 +1898,7 @@ order to add a suitable bootloader menu entry.")
(ice-9 regex)
(rnrs bytevectors))
#:imported-modules `((guix base32)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:make-flags
;; XXX: 'BUILD_ID' is used to determine when another ROM in the
;; system contains identical code in order to save space within the
diff --git a/gnu/packages/bqn.scm b/gnu/packages/bqn.scm
index 4d03385d21..fd090ad433 100644
--- a/gnu/packages/bqn.scm
+++ b/gnu/packages/bqn.scm
@@ -52,7 +52,7 @@
(build-system gnu-build-system)
(arguments
(list
- #:imported-modules `(,@%gnu-build-system-modules
+ #:imported-modules `(,@%default-gnu-imported-modules
(guix build ant-build-system))
#:modules `((guix build gnu-build-system)
((guix build ant-build-system)
diff --git a/gnu/packages/build-tools.scm b/gnu/packages/build-tools.scm
index 74e28f0e98..3cbae67a8c 100644
--- a/gnu/packages/build-tools.scm
+++ b/gnu/packages/build-tools.scm
@@ -293,8 +293,7 @@ files and generates build instructions for the Ninja build system.")
(define-public meson
(package
(name "meson")
- (replacement meson/newer)
- (version "1.1.0")
+ (version "1.1.1")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/mesonbuild/meson/"
@@ -302,7 +301,7 @@ files and generates build instructions for the Ninja build system.")
version ".tar.gz"))
(sha256
(base32
- "17w2zymmvrffhfpqsaj7qcbjwgv9iaawcpzhz2gnhlvcrm26qqfr"))))
+ "073vf8059nzs6p5aaqr5wva4pgl81540szdb5yw9yhyajwgm8jyh"))))
(build-system python-build-system)
(arguments
(list #:tests? #f ;disabled to avoid extra dependencies
@@ -330,19 +329,6 @@ files}, are written in a custom domain-specific language (@dfn{DSL}) that
resembles Python.")
(license license:asl2.0)))
-(define-public meson/newer
- (package
- (inherit meson)
- (version "1.1.1")
- (source (origin
- (method url-fetch)
- (uri (string-append "https://github.com/mesonbuild/meson/"
- "releases/download/" version "/meson-"
- version ".tar.gz"))
- (sha256
- (base32
- "073vf8059nzs6p5aaqr5wva4pgl81540szdb5yw9yhyajwgm8jyh"))))))
-
(define-public meson-python
(package
(name "meson-python")
diff --git a/gnu/packages/calendar.scm b/gnu/packages/calendar.scm
index a71da5ad0e..05c00df082 100644
--- a/gnu/packages/calendar.scm
+++ b/gnu/packages/calendar.scm
@@ -42,6 +42,7 @@
#:use-module (gnu packages admin)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages check)
#:use-module (gnu packages dav)
#:use-module (gnu packages docbook)
@@ -84,7 +85,8 @@
(patches
;; Install pkg-config files
;; https://github.com/HowardHinnant/date/pull/538
- (search-patches "date-output-pkg-config-files.patch"))))
+ (search-patches "date-ignore-zonenow.patch"
+ "date-output-pkg-config-files.patch"))))
(inputs (list tzdata))
(build-system cmake-build-system)
(arguments
@@ -270,7 +272,7 @@ interface} named 'ikhal'.")
(list "bin/cm2rem.tcl"
"bin/tkremind"))))))))
(inputs
- (list inetutils tcl tcllib tk))
+ (list bash-minimal inetutils tcl tcllib tk))
(home-page "https://dianne.skoll.ca/projects/remind/")
(synopsis "Sophisticated calendar and alarm program")
(description
diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm
index d473ab41ed..ef02787465 100644
--- a/gnu/packages/cdrom.scm
+++ b/gnu/packages/cdrom.scm
@@ -45,6 +45,7 @@
#:use-module (gnu packages acl)
#:use-module (gnu packages audio)
#:use-module (gnu packages autotools)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages bison)
#:use-module (gnu packages compression)
#:use-module (gnu packages flex)
@@ -180,8 +181,7 @@ libcdio.")
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(out-bin (string-append out "/bin")))
- (install-file "frontend/grub-mkrescue-sed.sh" out-bin)
- #t)))
+ (install-file "frontend/grub-mkrescue-sed.sh" out-bin))))
(add-after 'install 'move-gui-to-separate-output
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
@@ -195,10 +195,9 @@ libcdio.")
"/share/info/xorriso-tcltk.info"
"/share/man/man1/xorriso-tcltk.1"))
(wrap-program (string-append gui "/bin/xorriso-tcltk")
- `("PATH" ":" prefix (,(string-append out "/bin"))))
- #t))))))
+ `("PATH" ":" prefix (,(string-append out "/bin"))))))))))
(inputs
- (list acl readline tk zlib))
+ (list acl bash-minimal readline tk zlib))
(home-page "https://www.gnu.org/software/xorriso/")
(synopsis "Create, manipulate, burn ISO-9660 file systems")
(description
@@ -547,6 +546,7 @@ capacity is user-selectable.")
(inputs ; TODO package bundled wxvillalib
`(("wxwidgets" ,wxwidgets)
("wssvg" ,wxsvg)
+ ("bash" ,bash-minimal) ; for wrap-program
("dbus" ,dbus)
("cdrtools" ,cdrtools)
("dvd+rw-tools" ,dvd+rw-tools)
@@ -648,8 +648,7 @@ from an audio CD.")
'(begin
(substitute* "Makefile"
(("/usr/bin/install")
- "install"))
- #t))))
+ "install"))))))
(build-system gnu-build-system)
(arguments
'(#:phases
@@ -664,8 +663,7 @@ from an audio CD.")
(("^sysconfdir = .*$")
(string-append "sysconfdir = "
(assoc-ref outputs "out")
- "/etc/\n")))
- #t))
+ "/etc/\n")))))
(add-after 'install 'wrap
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((wget (assoc-ref inputs "wget"))
@@ -698,11 +696,11 @@ from an audio CD.")
(for-each wrap
(find-files (string-append out "/bin")
- ".*")))
- #t)))
+ ".*"))))))
#:tests? #f)) ; no test target
- (inputs (list wget
+ (inputs (list bash-minimal
+ wget
which
cdparanoia
cd-discid
@@ -796,7 +794,8 @@ information is written to standard error.")
"wavpack"))))))))))
(native-inputs (list intltool pkg-config))
;; TODO: Add the necessary packages for Musepack encoding.
- (inputs `(("gtk+-2" ,gtk+-2)
+ (inputs `(("bash" ,bash-minimal) ; for wrap-program
+ ("gtk+-2" ,gtk+-2)
("glib" ,glib)
("libcddb" ,libcddb)
("cdparanoia" ,cdparanoia)
@@ -1045,7 +1044,7 @@ drive and disc (including CD-ROMs and DVD-ROMs).")
(native-inputs
(list pkg-config intltool))
(inputs
- (list python python-pygobject cdemu-daemon))
+ (list bash-minimal python python-pygobject cdemu-daemon))
(arguments
;; No tests.
`(#:tests? #f
@@ -1054,15 +1053,13 @@ drive and disc (including CD-ROMs and DVD-ROMs).")
(add-after 'install 'patch-shebang
(lambda* (#:key outputs #:allow-other-keys)
(patch-shebang (string-append (assoc-ref outputs "out")
- "/bin/cdemu"))
- #t))
+ "/bin/cdemu"))))
(add-after 'patch-shebang 'wrap-program
(lambda* (#:key outputs #:allow-other-keys)
(let ((prog (string-append (assoc-ref outputs "out")
"/bin/cdemu")))
(wrap-program prog
- `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH"))))
- #t))))))
+ `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH"))))))))))
(home-page "https://cdemu.sourceforge.io/")
(synopsis "Command-line client for controlling cdemu-daemon")
(description "CDEmu client is a simple command-line client for controlling
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index fc13f544a1..9855b1796f 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -35,7 +35,7 @@
;;; Copyright © 2020 Josh Marshall <joshua.r.marshall.1991@gmail.com>
;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
;;; Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org>
-;;; Copyright © 2020, 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2020, 2021, 2022, 2023, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2021 Hugo Lecomte <hugo.lecomte@inria.fr>
;;; Copyright © 2022 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2022, 2023 David Elsing <david.elsing@posteo.net>
@@ -75,8 +75,10 @@
#:use-module (gnu packages bash)
#:use-module (gnu packages cmake)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages gdb)
#:use-module (gnu packages linux)
#:use-module (gnu packages llvm)
+ #:use-module (gnu packages lua)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
#:use-module (gnu packages golang)
@@ -93,6 +95,7 @@
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages python-science)
+ #:use-module (gnu packages sqlite)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages time)
#:use-module (gnu packages xml)
@@ -116,6 +119,44 @@
#:use-module (ice-9 match)
#:use-module (srfi srfi-1))
+(define-public atf
+ (package
+ (name "atf")
+ (version "0.21")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/freebsd/atf")
+ (commit (string-append name "-" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0jwzz6g9jdi5f8v10y0wf3hq73vxyv5qqhkh832ddsj36gn8rlcz"))
+ (patches (search-patches "atf-execute-with-shell.patch"))))
+ (build-system gnu-build-system)
+ (arguments
+ (list #:configure-flags
+ #~(list (string-append "ATF_SHELL="
+ #$(this-package-input "bash-minimal")
+ "/bin/sh"))))
+ (native-inputs (list autoconf automake libtool))
+ (inputs (list bash-minimal))
+ (home-page "https://github.com/freebsd/atf")
+ (synopsis "C/C++ Automated Testing Framework libraries")
+ (description "ATF, or Automated Testing Framework, is a collection of
+libraries to write test programs in C, C++ and POSIX shell.
+
+The ATF libraries offer a simple API. The API is orthogonal through the
+various bindings, allowing developers to quickly learn how to write test
+programs in different languages.
+
+ATF-based test programs offer a consistent end-user command-line interface to
+allow both humans and automation to run the tests.
+
+ATF-based test programs rely on an execution engine to be run and this
+execution engine is not shipped with ATF. Kyua is the engine of choice.")
+ (license (list license:bsd-2 license:bsd-3))))
+
(define-public pict
(package
(name "pict")
@@ -862,6 +903,73 @@ has been designed to be fast, light and unintrusive.")
"This package provides a simple and limited unit-test framework for C++.")
(license license:boost1.0))))
+(define-public kyua
+ (package
+ (name "kyua")
+ (version "0.13")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/freebsd/kyua")
+ (commit (string-append name "-" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1jzdal9smhmivj18683a5gy8jd2p1dbni7kcpaxq4g9jgjdidcrq"))))
+ (build-system gnu-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'patch-paths
+ (lambda _
+ (substitute* '("Makefile.am"
+ "utils/process/isolation_test.cpp"
+ "utils/stacktrace_test.cpp"
+ "integration/utils.sh"
+ "integration/cmd_test_test.sh")
+ (("/bin/sh")
+ ;; The 'local-kyua' generated script in Makefile.am is used
+ ;; to run the built kyua binary for tests.
+ (which "sh")))))
+ (add-after 'unpack 'fix-to_absolute-test
+ ;; This test checks for the existence of /bin and /bin/ls.
+ (lambda _
+ (substitute* "utils/fs/path_test.cpp"
+ (("chdir\\(\"/bin\")")
+ (format #f "chdir(~s)" (dirname (which "ls"))))
+ (("\"/bin/ls\"")
+ (string-append "\"" (which "ls") "\"")))))
+ (add-before 'check 'prepare-for-tests
+ (lambda _
+ ;; The test suite expects HOME to be writable.
+ (setenv "HOME" "/tmp")
+ ;; Generate the autom4te-generated testsuite script, which
+ ;; contains a '/bin/sh' shebang.
+ (invoke "make" "bootstrap/testsuite")
+ (substitute* "bootstrap/testsuite"
+ (("/bin/sh")
+ (which "sh")))))
+ (add-after 'unpack 'disable-problematic-tests
+ (lambda _
+ ;; The stacktrace tests expect core files to be dumped to the
+ ;; current directory, which doesn't happen with our kernel
+ ;; configuration (see:
+ ;; https://github.com/freebsd/kyua/issues/214).
+ (substitute* "utils/Kyuafile"
+ ((".*atf_test_program.*stacktrace_test.*")
+ "")))))))
+ (native-inputs (list autoconf automake gdb pkg-config))
+ (inputs (list atf lutok sqlite))
+ (home-page "https://github.com/freebsd/kyua")
+ (synopsis "Testing framework for infrastructure software")
+ (description "Kyua is a testing framework for infrastructure software.
+Kyua is lightweight and simple, and integrates well with various build systems
+and continuous integration frameworks. Kyua features an expressive test suite
+definition language, a safe runtime engine for test suites and a powerful
+report generation engine.")
+ (license license:bsd-3)))
+
(define-public python-gixy
;; The 0.1.20 release is missing some important fixes.
;; XXX: Commit 'e9008dcbd11f43ccac109b0cf2bf98a94e76b449' breaks tests
@@ -3291,7 +3399,11 @@ allowing you to declaratively define \"match\" rules.")
(sha256
(base32 "0sxb3835nly1jxn071f59fwbdzmqi74j040r81fanxyw3s1azw0i"))))
(arguments
- `(#:tests? #f)) ; It's run after build automatically.
+ (list
+ #:tests? #f ; It's run after build automatically.
+ ;; Fix 'Version:' setting in .pc file. See:
+ ;; <https://github.com/unittest-cpp/unittest-cpp/pull/188>
+ #:configure-flags #~(list (string-append "-DPACKAGE_VERSION=" #$version))))
(build-system cmake-build-system)
(home-page "https://github.com/unittest-cpp/unittest-cpp")
(synopsis "Lightweight unit testing framework for C++")
diff --git a/gnu/packages/chicken.scm b/gnu/packages/chicken.scm
index 8f5e8ce98d..3743ae3e2a 100644
--- a/gnu/packages/chicken.scm
+++ b/gnu/packages/chicken.scm
@@ -26,7 +26,6 @@
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix svn-download)
- #:use-module (gnu packages commencement)
#:use-module ((guix licenses)
#:prefix license:))
@@ -68,7 +67,11 @@
(variable "CHICKEN_REPOSITORY_PATH")
;; TODO extract binary version into a module level definition.
(files (list "var/lib/chicken/11")))))
- (propagated-inputs (list gcc-toolchain))
+ ;; Reference gcc-toolchain lazily to avoid circular module dependency
+ ;; problems.
+ (propagated-inputs (list (module-ref (resolve-interface
+ '(gnu packages commencement))
+ 'gcc-toolchain)))
(home-page "https://www.call-cc.org/")
(synopsis "R5RS Scheme implementation that compiles native code via C")
(description
diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm
index bc49e24f0e..9c01f05fff 100644
--- a/gnu/packages/chromium.scm
+++ b/gnu/packages/chromium.scm
@@ -869,6 +869,7 @@
(inputs
(list alsa-lib
at-spi2-core
+ bash-minimal
cups
curl
dbus
diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm
index 3908128361..84dc08a085 100644
--- a/gnu/packages/ci.scm
+++ b/gnu/packages/ci.scm
@@ -34,6 +34,7 @@
#:use-module ((guix search-paths) #:select ($SSL_CERT_DIR))
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages boost)
#:use-module (gnu packages check)
#:use-module (gnu packages docbook)
@@ -135,7 +136,8 @@
`("GUILE_LOAD_COMPILED_PATH" ":" prefix
,objs))))))))
(inputs
- (list guile-3.0-latest
+ (list bash-minimal
+ guile-3.0-latest
guile-avahi
guile-fibers
guile-gcrypt
diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm
index d6ac8178f3..83305c33d1 100644
--- a/gnu/packages/code.scm
+++ b/gnu/packages/code.scm
@@ -224,22 +224,6 @@ highlighting your own code that seemed comprehensible when you wrote it.")
(substitute* "globash/globash.in"
(("/bin/echo")
(search-input-file inputs "bin/echo")))))
- (add-after 'post-install 'install-plugins
- (lambda _
- (with-directory-excursion "plugin-factory"
- (invoke "make" "install"))))
- (add-before 'install 'dont-install-to-/var
- (lambda _
- (substitute* "gozilla/Makefile"
- (("DESTDIR\\)\\$\\{localstatedir\\}")
- "TMPDIR)"))))
- (add-after 'install-plugins 'wrap-program
- (lambda _
- (wrap-program
- (string-append #$output
- "/share/gtags/script/pygments_parser.py")
- `("GUIX_PYTHONPATH" ":" prefix
- (,(getenv "GUIX_PYTHONPATH"))))))
(add-after 'install 'post-install
(lambda _
;; Install the plugin files in the right place.
@@ -257,7 +241,23 @@ highlighting your own code that seemed comprehensible when you wrote it.")
(rename-file (string-append data "/gtags.vim")
(string-append vim "/gtags.vim"))
(rename-file (string-append data "/gtags-cscope.vim")
- (string-append vim "/gtags-cscope.vim"))))))))
+ (string-append vim "/gtags-cscope.vim")))))
+ (add-after 'post-install 'install-plugins
+ (lambda _
+ (with-directory-excursion "plugin-factory"
+ (invoke "make" "install"))))
+ (add-before 'install 'dont-install-to-/var
+ (lambda _
+ (substitute* "gozilla/Makefile"
+ (("DESTDIR\\)\\$\\{localstatedir\\}")
+ "TMPDIR)"))))
+ (add-after 'install-plugins 'wrap-program
+ (lambda _
+ (wrap-program
+ (string-append #$output
+ "/share/gtags/script/pygments_parser.py")
+ `("GUIX_PYTHONPATH" ":" prefix
+ (,(getenv "GUIX_PYTHONPATH")))))))))
(inputs
(list bash-minimal ; for wrap-program
coreutils
@@ -348,7 +348,8 @@ COCOMO model or user-provided parameters.")
(base32 "0j7qwc5n1y05jl3rq83mf1d0pavkz9z0waqi8dxblkgw4pwwnjyv"))))
(build-system gnu-build-system)
(inputs
- (list coreutils
+ (list bash-minimal
+ coreutils
perl
perl-algorithm-diff
perl-digest-md5
@@ -574,9 +575,8 @@ expressions, and its ability to generate emacs-style TAGS files.")
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(wrap-program (string-append out "/bin/geninfo")
- `("PERL5LIB" ":" prefix (,(getenv "PERL5LIB")))))
- #t)))))
- (inputs (list perl perl-io-compress perl-json))
+ `("PERL5LIB" ":" prefix (,(getenv "PERL5LIB"))))))))))
+ (inputs (list bash-minimal perl perl-io-compress perl-json))
(home-page "https://ltp.sourceforge.net/coverage/lcov.php")
(synopsis "Code coverage tool that enhances GNU gcov")
(description "LCOV is an extension of @command{gcov}, a tool part of the
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index b4d236c35b..2c2035535a 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -1,19 +1,20 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012-2023 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012-2024 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2014, 2015, 2017 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2017, 2018, 2019, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2018, 2019, 2020, 2021, 2022, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2018, 2019, 2020, 2021, 2022, 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2019-2022 Marius Bakke <marius@gnu.org>
;;; Copyright © 2020, 2022 Timothy Sample <samplet@ngyro.com>
;;; Copyright © 2020 Guy Fleury Iteriteka <gfleury@disroot.org>
;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2021 Chris Marusich <cmmarusich@gmail.com>
;;; Copyright © 2021 Julien Lepiller <julien@lepiller.eu>
-;;; Copyright © 2022 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2022 Ekaitz Zarraga <ekaitz@elenq.tech>
+;;; Copyright © 2021 Pierre Langlois <pierre.langlois@gmx.com>
+;;; Copyright © 2022, 2024 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2022, 2023 Ekaitz Zarraga <ekaitz@elenq.tech>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -57,6 +58,7 @@
#:use-module (gnu packages xml)
#:use-module (guix gexp)
#:use-module (guix packages)
+ #:use-module (guix platform)
#:use-module ((guix store) #:select (%store-monad))
#:use-module (guix monads)
#:use-module (guix download)
@@ -68,8 +70,7 @@
#:use-module (guix utils)
#:use-module (srfi srfi-1)
#:use-module (ice-9 vlist)
- #:use-module (ice-9 match)
- #:export (make-gcc-toolchain))
+ #:use-module (ice-9 match))
;;; Commentary:
;;;
@@ -145,7 +146,7 @@ the checkout from TARBALL, a tarball containing said checkout.
#:tests? #f
#:guile ,%bootstrap-guile
#:imported-modules ((guix build gnu-bootstrap)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:phases
(begin
(use-modules (guix build gnu-bootstrap))
@@ -185,7 +186,7 @@ pure Scheme to Tar and decompression in one easy step.")
#:tests? #f
#:guile ,%bootstrap-guile
#:imported-modules ((guix build gnu-bootstrap)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:phases
(begin
(use-modules (guix build gnu-bootstrap))
@@ -214,7 +215,7 @@ pure Scheme to Tar and decompression in one easy step.")
#:tests? #f
#:guile ,%bootstrap-guile
#:imported-modules ((guix build gnu-bootstrap)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:phases
(begin
(use-modules (guix build gnu-bootstrap))
@@ -302,97 +303,24 @@ pure Scheme to Tar and decompression in one easy step.")
("bootar" ,bootar)
("guile" ,%bootstrap-guile)))
-(define bootstrap-seeds
- (package
- (name "bootstrap-seeds")
- (version "1.0.0")
- (source (origin
- (method url-fetch)
- (uri (list
- (string-append "mirror://gnu/guix/mirror/"
- "bootstrap-seeds-" version ".tar.gz")
- (string-append
- "https://lilypond.org/janneke/guix/20220501/"
- "bootstrap-seeds-" version ".tar.gz")))
- (sha256
- (base32
- "0scz2bx8fd8c821h6y1j3x6ywgxxns7iinyn9z32dnkiacfdcpfn"))))
- (native-inputs (list bootar))
- (build-system trivial-build-system)
- (arguments
- (list #:guile %bootstrap-guile
- #:modules '((guix build utils))
- #:builder
- #~(begin
- (use-modules (guix build utils))
- (let ((source #$(package-source this-package))
- (tar #$(this-package-native-input "bootar"))
- (out #$output))
- (setenv "PATH" (string-append tar "/bin:"))
- (invoke "tar" "xvf" source)
- (mkdir-p out)
- (copy-recursively "bootstrap-seeds" out)))))
- (home-page "https://github.com/oriansj/bootstrap-seeds")
- (synopsis "The initial bootstrap seeds: 357-byte hex0 and kaem shell")
- (description
- "This package provides pre-built binaries of the bootstrap seeds. It
-contains a hex0-seed and an optional kaem-minimal shell. The size of the hex0
-seeds are for knight: 250 bytes, x86-linux: 357 bytes, x86_64-linux: 431
-bytes, and aarch64-linux 526 bytes. These can be used to build stage0: hex0,
-hex1, hex2, M1, and M2-Planet.")
- (license license:gpl3+)))
-
(define stage0-posix
;; The initial bootstrap package: no binary inputs except those from
;; `bootstrap-seeds, for x86 a 357 byte binary seed: `x86/hex0-seed'.
- (let* ((mescc-tools-version "1.4.0")
- (m2-planet-version "1.9.0")
- (mescc-tools
- (origin
- (method url-fetch)
- (uri (list
- (string-append
- "mirror://gnu/guix/mirror/"
- "mescc-tools-" mescc-tools-version ".tar.gz")
- (string-append
- "https://lilypond.org/janneke/guix/20220502/"
- "mescc-tools-" mescc-tools-version ".tar.gz")))
- (sha256
- (base32
- "1xi6f48pf5bhajhfis189gpizxij7nbp1vzvsb1aafhz4skkiqvg"))))
- (m2-planet
- (origin
- (method url-fetch)
- (uri (list
- (string-append
- "mirror://gnu/guix/mirror/"
- "M2-Planet-" m2-planet-version ".tar.gz")
- (string-append
- "https://lilypond.org/janneke/guix/20220502/"
- "M2-Planet-" m2-planet-version ".tar.gz")))
- (sha256
- (base32
- "1xrn69sc5nz4hwaishqyrcidp1ncxwib9zswl45x378ddz3mmk7g")))))
(package
(name "stage0-posix")
- (version "1.4")
+ (version "1.6.0")
(source (origin
(method url-fetch)
- (uri (list
- (string-append "mirror://gnu/guix/mirror/"
- "stage0-posix-" version ".tar.gz")
- (string-append
- "https://lilypond.org/janneke/guix/20220502/"
- "stage0-posix-" version ".tar.gz")))
+ (uri (string-append
+ "https://github.com/oriansj/" name "/releases/download/"
+ "Release_" version "/" name "-" version ".tar.gz"))
(sha256
(base32
- "1ammifkj33205qrpfm84yb1c99lwgbn4jsl1hd08aab8c9ffz6p4"))))
+ "0p06wn95y6xbp2kcd81h2fm3wxvldd1qqyxgav0farl34xlzyq4j"))))
(supported-systems '("i686-linux" "x86_64-linux"
"aarch64-linux"
"riscv64-linux"))
- (native-inputs
- `(("bootstrap-seeds" ,bootstrap-seeds)
- ,@(%boot-gash-inputs)))
+ (native-inputs (%boot-gash-inputs))
(build-system trivial-build-system)
(arguments
(list
@@ -401,9 +329,7 @@ hex1, hex2, M1, and M2-Planet.")
#:builder
#~(begin
(use-modules (guix build utils))
- (let* ((bootstrap-seeds #$(this-package-native-input
- "bootstrap-seeds"))
- (source #$(package-source this-package))
+ (let* ((source #$(package-source this-package))
(tar #$(this-package-native-input "bootar"))
(bash #$(this-package-native-input "bash"))
(coreutils #$(this-package-native-input "coreutils"))
@@ -422,32 +348,18 @@ hex1, hex2, M1, and M2-Planet.")
"riscv64")
(else
(error "stage0-posix: system not supported" target))))
- (kaem (string-append "../bootstrap-seeds/POSIX/"
+ (kaem (string-append "bootstrap-seeds/POSIX/"
stage0-cpu "/kaem-optional-seed")))
(setenv "PATH" (string-append tar "/bin:"
coreutils "/bin:"
bash "/bin"))
(invoke "tar" "xvf" source)
(chdir (string-append "stage0-posix-" #$version))
- (copy-recursively bootstrap-seeds "bootstrap-seeds")
- (invoke "tar" "xvf" #$mescc-tools)
- (rmdir "mescc-tools")
- (symlink (string-append "mescc-tools-" #$mescc-tools-version)
- "mescc-tools")
- (invoke "tar" "xvf" #$m2-planet)
- (rmdir "M2-Planet")
- (symlink (string-append "M2-Planet-" #$m2-planet-version)
- "M2-Planet")
- (rmdir "M2libc")
- (symlink "M2-Planet/M2libc" "M2libc")
(mkdir-p bindir)
- (with-directory-excursion stage0-cpu
- (with-output-to-file "mes-m2.kaem"
- (lambda _ (display "")))
- (with-output-to-file "mescc-tools-extra.kaem"
- (lambda _ (display "")))
- (invoke kaem "kaem.run"))
- (with-directory-excursion "bin"
+ ;; Keep the same capitalization between the file name and the folder.
+ (rename-file "kaem.aarch64" "kaem.AArch64")
+ (invoke kaem (string-append "kaem." stage0-cpu))
+ (with-directory-excursion (string-append stage0-cpu "/bin")
(install-file "hex2" bindir)
(install-file "M1" bindir)
(install-file "blood-elf" bindir)
@@ -460,13 +372,14 @@ hex1, hex2, M1, and M2-Planet.")
the bootstrap-seeds, the stage0-posix package first builds hex0 and then all
the way up: hex1, catm, hex2, M0, cc_x86, M1, M2, get_machine (that's all of
MesCC-Tools), and finally M2-Planet.")
- (license license:gpl3+))))
+ (license license:gpl3+)))
+
(define mes-boot
(package
(inherit mes)
(name "mes-boot")
- (version "0.24.2")
+ (version "0.25.1")
(source (origin
(method url-fetch)
(uri (list (string-append "mirror://gnu/mes/"
@@ -475,10 +388,10 @@ MesCC-Tools), and finally M2-Planet.")
"mes-" version ".tar.gz")))
(sha256
(base32
- "0vp8v88zszh1imm3dvdfi3m8cywshdj7xcrsq4cgmss69s2y1nkx"))))
+ "03np6h4qx94givjdvq2rmhvab38y5f91254n0avg4vq2j0cx78in"))))
(inputs '())
(propagated-inputs '())
- (supported-systems '("i686-linux" "x86_64-linux"))
+ (supported-systems '("i686-linux" "x86_64-linux" "riscv64-linux"))
(native-inputs
`(("m2-planet" ,stage0-posix)
("nyacc-source" ,(bootstrap-origin
@@ -507,9 +420,17 @@ MesCC-Tools), and finally M2-Planet.")
dir "/nyacc-1.00.2/module"))
(invoke "gash" "configure.sh"
(string-append "--prefix=" out)
- "--host=i686-linux-gnu"))))
+ (string-append "--host="
+ #$(cond
+ ((target-x86-64?) "i686-linux-gnu")
+ (#t (platform-system->target
+ (%current-system)))))))))
(replace 'build
(lambda _
+ ;; TODO: GUILE_LOAD_PATH is leaking. We need to clean it.
+ (substitute* "kaem.run"
+ (("cp bin/mes-m2 bin/mes" all)
+ (string-append "GUILE_LOAD_PATH=/fubar\n" all)))
(invoke "gash" "bootstrap.sh")))
(delete 'check)
(replace 'install
@@ -558,7 +479,7 @@ MesCC-Tools), and finally M2-Planet.")
(package
(inherit tcc)
(name "tcc-boot0")
- (version "0.9.26-1136-g5bba73cc")
+ (version "0.9.26-1149-g46a75d0c")
(source (origin
(method url-fetch)
(uri (list
@@ -568,9 +489,9 @@ MesCC-Tools), and finally M2-Planet.")
"tcc-" version ".tar.gz")))
(sha256
(base32
- "1y2f04qwdqg7dgxiscbf0ibybx2gclniwbbcsxpayazzii2cvji3"))))
+ "068x3r55fnz7pdxb6q01s8s26pb4kpxm61q8mwsa4cf6389cxxpl"))))
(build-system gnu-build-system)
- (supported-systems '("i686-linux" "x86_64-linux"))
+ (supported-systems '("i686-linux" "x86_64-linux" "riscv64-linux"))
(inputs '())
(propagated-inputs '())
(native-inputs
@@ -605,6 +526,7 @@ MesCC-Tools), and finally M2-Planet.")
(setenv "prefix" out)
(setenv "GUILE_LOAD_PATH"
(string-append dir "/nyacc-1.00.2/module"))
+ (setenv "ONE_SOURCE" "true")
(invoke "sh" "configure"
"--cc=mescc"
(string-append "--prefix=" out)
@@ -937,27 +859,28 @@ MesCC-Tools), and finally M2-Planet.")
(native-inputs (%boot-tcc-inputs))
(supported-systems '("i686-linux" "x86_64-linux"))
(arguments
- `(#:implicit-inputs? #f
- #:guile ,%bootstrap-guile
- #:tests? #f ; runtest: command not found
- #:parallel-build? #f
- #:strip-binaries? #f ; no strip yet
- #:configure-flags
- (let ((cppflags (string-append " -D __GLIBC_MINOR__=6"
- " -D MES_BOOTSTRAP=1"))
- (bash (assoc-ref %build-inputs "bash")))
- `(,(string-append "CONFIG_SHELL=" bash "/bin/sh")
- ,(string-append "CPPFLAGS=" cppflags)
- "AR=tcc -ar"
- "CXX=false"
- "RANLIB=true"
- ,(string-append "CC=tcc" cppflags)
- "--disable-nls"
- "--disable-shared"
- "--disable-werror"
- "--build=i686-unknown-linux-gnu"
- "--host=i686-unknown-linux-gnu"
- "--with-sysroot=/"))))))
+ (list #:implicit-inputs? #f
+ #:guile %bootstrap-guile
+ #:tests? #f ; runtest: command not found
+ #:parallel-build? #f
+ #:strip-binaries? #f ; no strip yet
+ #:configure-flags
+ #~(let ((cppflags (string-append
+ " -D __GLIBC_MINOR__=6"
+ " -D MES_BOOTSTRAP=1"))
+ (bash (assoc-ref %build-inputs "bash")))
+ `(,(string-append "CONFIG_SHELL=" bash "/bin/sh")
+ ,(string-append "CPPFLAGS=" cppflags)
+ "AR=tcc -ar"
+ "CXX=false"
+ "RANLIB=true"
+ ,(string-append "CC=tcc" cppflags)
+ "--disable-nls"
+ "--disable-shared"
+ "--disable-werror"
+ "--build=i686-unknown-linux-gnu"
+ "--host=i686-unknown-linux-gnu"
+ "--with-sysroot=/"))))))
(define gcc-core-mesboot0
;; Gcc-2.95.3 is the most recent GCC that is supported by what the Mes C
@@ -1266,14 +1189,13 @@ ac_cv_c_float_format='IEEE (little-endian)'
(arguments
(substitute-keyword-arguments (package-arguments binutils-mesboot0)
((#:configure-flags configure-flags)
- '(let ((out (assoc-ref %outputs "out")))
- `("--disable-nls"
- "--disable-shared"
- "--disable-werror"
- "--build=i686-unknown-linux-gnu"
- "--host=i686-unknown-linux-gnu"
- "--with-sysroot=/"
- ,(string-append "--prefix=" out))))))))
+ #~(let ((out (assoc-ref %outputs "out")))
+ `("--disable-nls" "--disable-shared"
+ "--disable-werror"
+ "--build=i686-unknown-linux-gnu"
+ "--host=i686-unknown-linux-gnu"
+ "--with-sysroot=/"
+ ,(string-append "--prefix=" out))))))))
(define gnu-make-mesboot
(package
@@ -1926,6 +1848,11 @@ exec " gcc "/bin/" program
(let ((pkg (mesboot-package "grep-mesboot" grep)))
(package
(inherit pkg)
+ (arguments
+ (substitute-keyword-arguments
+ (strip-keyword-arguments
+ '(#:configure-flags)
+ (package-arguments pkg))))
(native-inputs
`(("sed" ,sed-mesboot)
,@(package-native-inputs pkg))))))
@@ -2088,10 +2015,7 @@ exec " gcc "/bin/" program
,@(%bootstrap-inputs+toolchain)))
(arguments
`(#:implicit-inputs? #f
- ;; Ignore test failure in gnulib for armhf/aarch64.
- #:tests? ,(not (target-arm?))
#:guile ,%bootstrap-guile
-
;; The build system assumes we have done a mistake when time_t is 32-bit
;; on a 64-bit system. Ignore that for our bootstrap toolchain.
,@(substitute-keyword-arguments (package-arguments findutils)
@@ -2108,17 +2032,24 @@ exec " gcc "/bin/" program
,flags))
((#:phases phases '%standard-phases)
`(modify-phases ,phases
- ;; 'test-fnmatch' fails when using glibc-mesboot@2.16, due
- ;; to incorrect handling of the [:alpha:] regexp character
- ;; class. Ignore it.
- ,@(if (member (%current-system)
- '("x86_64-linux" "i686-linux"))
- '((add-before 'check 'skip-fnmatch-test
- (lambda _
- (substitute* "gnulib-tests/Makefile"
- (("^XFAIL_TESTS =")
- "XFAIL_TESTS = test-fnmatch ")))))
- '()))))))))
+ (add-before 'check 'skip-problematic-tests
+ (lambda _
+ ,(match (%current-system)
+ ;; 'test-fnmatch' fails when using glibc-mesboot@2.16, due
+ ;; to incorrect handling of the [:alpha:] regexp character
+ ;; class. Ignore it.
+ ((or "x86_64-linux" "i686-linux")
+ '(substitute* "gnulib-tests/Makefile"
+ (("^XFAIL_TESTS =")
+ "XFAIL_TESTS = test-fnmatch ")))
+ (_
+ ;; XXX: The pthread tests are known to fail at least on
+ ;; ARM; skip them.
+ '(substitute* "gnulib-tests/Makefile"
+ (("test-pthread\\$\\(EXEEXT\\)") "")
+ (("test-pthread-thread\\$\\(EXEEXT\\)") "")
+ (("test-pthread_sigmask1\\$\\(EXEEXT\\)") "")
+ (("test-pthread_sigmask2\\$\\(EXEEXT\\)") "")))))))))))))
(define file
(package
@@ -2244,32 +2175,40 @@ exec " gcc "/bin/" program
(source (bootstrap-origin (package-source binutils)))
(name "binutils-cross-boot0")
(arguments
- `(#:guile ,%bootstrap-guile
- #:implicit-inputs? #f
-
- #:modules ((guix build gnu-build-system)
- (guix build utils)
- (ice-9 ftw)) ; for 'scandir'
- #:phases (modify-phases %standard-phases
- (add-after 'install 'add-symlinks
- (lambda* (#:key outputs #:allow-other-keys)
- ;; The cross-gcc invokes 'as', 'ld', etc, without the
- ;; triplet prefix, so add symlinks.
- (let ((out (assoc-ref outputs "out"))
- (triplet-prefix (string-append ,(boot-triplet) "-")))
- (define (has-triplet-prefix? name)
- (string-prefix? triplet-prefix name))
- (define (remove-triplet-prefix name)
- (substring name (string-length triplet-prefix)))
- (with-directory-excursion (string-append out "/bin")
- (for-each (lambda (name)
- (symlink name (remove-triplet-prefix name)))
- (scandir "." has-triplet-prefix?)))))))
-
- ,@(substitute-keyword-arguments (package-arguments binutils)
- ((#:configure-flags cf)
- `(cons ,(string-append "--target=" (boot-triplet))
- ,cf)))))
+ (append (list #:guile %bootstrap-guile
+ #:implicit-inputs? #f
+
+ #:modules '((guix build gnu-build-system)
+ (guix build utils)
+ (ice-9 ftw)) ; for 'scandir'
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'install 'add-symlinks
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; The cross-gcc invokes 'as', 'ld', etc, without the
+ ;; triplet prefix, so add symlinks.
+ (let ((out (assoc-ref outputs "out"))
+ (triplet-prefix (string-append #$(boot-triplet)
+ "-")))
+ (define (has-triplet-prefix? name)
+ (string-prefix? triplet-prefix name))
+ (define (remove-triplet-prefix name)
+ (substring name
+ (string-length triplet-prefix)))
+
+ (with-directory-excursion (string-append out "/bin")
+ (for-each (lambda (name)
+ (symlink name
+ (remove-triplet-prefix name)))
+ (scandir "."
+ has-triplet-prefix?))))))))
+ (substitute-keyword-arguments (package-arguments binutils)
+ ((#:configure-flags cf)
+ #~(append (list #$(string-append "--target="
+ (boot-triplet))
+ "--disable-gprofng") ;requires Bison
+ #$cf)))))
+ (native-inputs '()) ;no Bison
(inputs (%boot0-inputs))))
(define libstdc++-boot0
@@ -2665,7 +2604,7 @@ memoized as a function of '%current-system'."
(package
(inherit gnumach-headers)
(name "gnumach-headers-boot0")
- (version "1.8+git20221224")
+ (version "1.8+git20230410")
(source
(origin
(inherit (package-source gnumach-headers))
@@ -2678,7 +2617,7 @@ memoized as a function of '%current-system'."
"gnumach-" version ".tar.gz"))
(sha256
(base32
- "0vb19ynvrxz302snqxkd0wgizwa5fw2x06a4zjsllqb9ijbq9mc8")))))))
+ "1s09256g2ny46idrn8frzs7r51la9ni45bmglmswlsmz9ii7dpi4")))))))
(native-inputs (list autoconf-boot0 automake-boot0 texinfo-boot0))
(arguments
(substitute-keyword-arguments (package-arguments gnumach-headers)
@@ -2717,18 +2656,18 @@ memoized as a function of '%current-system'."
gnumach-headers-boot0))
(inputs (list flex-boot0 gnumach-headers-boot0))
(arguments
- (list
- #:configure-flags
- #~(list (string-append "LDFLAGS=-Wl,-rpath="
- #$(this-package-native-input "flex")
- "/lib/")))))))
+ (substitute-keyword-arguments (package-arguments mig)
+ ((#:configure-flags flags '())
+ #~(list (string-append "LDFLAGS=-Wl,-rpath="
+ #$(this-package-native-input "flex")
+ "/lib/"))))))))
(define hurd-headers-boot0
(with-boot0
(package
(inherit hurd-headers)
(name "hurd-headers-boot0")
- (version "0.9.git20230216")
+ (version "0.9.git20230520")
(source
(origin
(inherit (package-source hurd-headers))
@@ -2741,7 +2680,7 @@ memoized as a function of '%current-system'."
"hurd-v" version ".tar.gz"))
(sha256
(base32
- "1f75nlkcl00dqnnrbrj1frvzs2qibfpygj3gwywqi85aldjl48y7")))))))
+ "0ybmx7bhy21zv1if2hfdspn13zn68vki1na72sw2jj87gj8przna")))))))
(native-inputs
(list autoconf-boot0 automake-boot0 mig-boot0))
(inputs '()))))
@@ -2822,6 +2761,7 @@ memoized as a function of '%current-system'."
;; pthreads, which is missing on non-x86 platforms at this stage.
;; Python 3.6 technically supports being built without threading
;; support, but requires additional patches.
+ (name "python-boot0")
(version "3.5.9")
(source (bootstrap-origin
(origin
@@ -3140,27 +3080,6 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
("gcc" ,gcc-boot0-wrapped)
,@(fold alist-delete (%boot1-inputs) '("libc" "gcc" "linux-libre-headers"))))
-(define binutils-final
- (package
- (inherit binutils)
- (source (bootstrap-origin (package-source binutils)))
- (arguments
- `(#:guile ,%bootstrap-guile
- #:implicit-inputs? #f
- #:allowed-references
- ,@(match (%current-system)
- ((? target-powerpc?)
- `(("out" ,glibc-final ,static-bash-for-glibc)))
- (_
- `(("out" ,glibc-final))))
- ,@(package-arguments binutils)))
- (inputs
- (match (%current-system)
- ((? target-powerpc?)
- `(("bash" ,static-bash-for-glibc)
- ,@(%boot2-inputs)))
- (_ (%boot2-inputs))))))
-
(define libstdc++
;; Intermediate libstdc++ that will allow us to build the final GCC
;; (remember that GCC-BOOT0 cannot build libstdc++.)
@@ -3190,6 +3109,36 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
(inputs (%boot2-inputs))
(synopsis "GNU C++ standard library (intermediate)"))))
+(define binutils-final
+ (package
+ (inherit binutils)
+ (source (bootstrap-origin (package-source binutils)))
+ (arguments
+ (append (list #:guile %bootstrap-guile
+ #:implicit-inputs? #f
+ #:allowed-references `("out" ,glibc-final
+ ,(this-package-native-input
+ "libstdc++")
+ ,@(if (target-powerpc? (%current-system))
+ (list static-bash-for-glibc)
+ '())))
+ (substitute-keyword-arguments (package-arguments binutils)
+ ((#:configure-flags flags #~'())
+ ;; For gprofng, tell the build system where to look for libstdc++.
+ #~(append #$flags
+ (list (string-append "LDFLAGS=-L"
+ #$(this-package-native-input
+ "libstdc++")
+ "/lib")))))))
+ (native-inputs (list bison-boot0
+ libstdc++)) ;for gprofng
+ (inputs
+ (match (%current-system)
+ ((? target-powerpc?)
+ `(("bash" ,static-bash-for-glibc)
+ ,@(%boot2-inputs)))
+ (_ (%boot2-inputs))))))
+
(define zlib-final
;; Zlib used by GCC-FINAL.
(package
@@ -3236,7 +3185,7 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
;; Additional modules for the libstdc++ phase below.
#:modules `((srfi srfi-1)
(srfi srfi-26)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
(substitute-keyword-arguments (package-arguments gcc)
((#:make-flags flags)
@@ -3348,8 +3297,18 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
(define-public guile-final
;; This package must be public because other modules refer to it. However,
;; mark it as hidden so that 'fold-packages' ignores it.
- (with-boot4 (hidden-package
- (package-with-bootstrap-guile guile-3.0/pinned))))
+ (let ((parent (with-boot4 (hidden-package
+ (package-with-bootstrap-guile guile-3.0/pinned)))))
+ (package
+ (inherit parent)
+ (inputs
+ (modify-inputs (package-inputs parent)
+ (delete "libxcrypt")))
+ (arguments
+ (substitute-keyword-arguments (package-arguments parent)
+ ((#:phases phases #~%standard-phases)
+ #~(modify-phases #$phases
+ (delete 'add-libxcrypt-reference-pkgconfig))))))))
(define-public glibc-utf8-locales-final
;; Now that we have GUILE-FINAL, build the UTF-8 locales. They are needed
@@ -3389,27 +3348,21 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
#:guile guile-final
#:bash bash-final))
-(define (%boot5-inputs)
- ;; Now with UTF-8 locales. Remember that the bootstrap binaries were built
- ;; with an older libc, which cannot load the new locale format. See
- ;; <https://lists.gnu.org/archive/html/guix-devel/2015-08/msg00737.html>.
- `(("locales" ,(if (target-hurd?)
- glibc-utf8-locales-final/hurd
- glibc-utf8-locales-final))
- ,@(%boot4-inputs)))
+;; There used to be a "stage 5" including a variant of the
+;; 'glibc-utf8-locales' package. This is no longer necessary since 'glibc'
+;; embeds the "C.UTF-8" locale, but these aliases are kept for convenience.
+(define %boot5-inputs %boot4-inputs)
+(define with-boot5 with-boot4)
-(define with-boot5
- (package-with-explicit-inputs %boot5-inputs))
-
-(define gnu-make-final
- ;; The final GNU Make, which uses the final Guile.
+(define (make-gnu-make-final)
+ "Compute the final GNU Make, which uses the final Guile."
+ ;; Avoid a circular dependency by creating a new bootstrap pkg-config
+ ;; variant.
(let ((pkg-config (package
- (inherit %pkg-config) ;the native pkg-config
- (inputs `(("guile" ,guile-final)
- ,@(%boot5-inputs)))
- (arguments
- `(#:implicit-inputs? #f
- ,@(package-arguments pkg-config))))))
+ ;; Refer to %pkgconf-as-pkg-config instead of
+ ;; pkgconf-as-pkg-config to ensure native package is
+ ;; used.
+ (inherit (with-boot5 %pkgconf-as-pkg-config)))))
(package
(inherit (package-with-bootstrap-guile gnu-make))
(inputs `(("guile" ,guile-final)
@@ -3419,7 +3372,6 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
`(#:implicit-inputs? #f
,@(package-arguments gnu-make))))))
-
(define coreutils-final
;; The final Coreutils. Treat them specially because some packages, such as
;; Findutils, keep a reference to the Coreutils they were built with.
@@ -3438,7 +3390,11 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
;; built before gzip.
(let ((grep (with-boot5 (package-with-bootstrap-guile grep))))
(package/inherit grep
- (inputs (alist-delete "pcre" (package-inputs grep)))
+ (arguments (substitute-keyword-arguments
+ (strip-keyword-arguments
+ '(#:configure-flags)
+ (package-arguments grep))))
+ (inputs (alist-delete "pcre2" (package-inputs grep)))
(native-inputs `(("perl" ,perl-boot0))))))
(define xz-final
@@ -3484,21 +3440,23 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
("diffutils" ,diffutils)
("patch" ,patch)
("findutils" ,findutils)
- ("gawk" ,gawk)))
+ ("gawk" ,(package/inherit gawk
+ (native-inputs
+ (list (if (target-hurd?)
+ glibc-utf8-locales-final/hurd
+ glibc-utf8-locales-final)))))
+ ("zstd" ,zstd)))
("sed" ,sed-final)
("grep" ,grep-final)
("xz" ,xz-final)
("coreutils" ,coreutils-final)
- ("make" ,gnu-make-final)
+ ("make" ,(make-gnu-make-final))
("bash" ,bash-final)
("ld-wrapper" ,ld-wrapper)
("binutils" ,binutils-final)
("gcc" ,gcc-final)
("libc" ,glibc-final)
- ("libc:static" ,glibc-final "static")
- ("locales" ,(if (target-hurd? (%current-system))
- glibc-utf8-locales-final/hurd
- glibc-utf8-locales-final)))))))
+ ("libc:static" ,glibc-final "static"))))))
(define-public canonical-package
(let ((name->package (mlambda (system)
@@ -3509,6 +3467,10 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
package result))))
vlist-null
`(("guile" ,guile-final)
+ ("glibc-utf8-locales"
+ ,(if (target-hurd? system)
+ glibc-utf8-locales-final/hurd
+ glibc-utf8-locales-final))
,@(%final-inputs system))))))
(lambda (package)
"Return the 'canonical' variant of PACKAGE---i.e., if PACKAGE is one of
@@ -3574,15 +3536,7 @@ COREUTILS-FINAL vs. COREUTILS, etc."
"libc-debug")))
(union-build (assoc-ref %outputs "static")
(list (assoc-ref %build-inputs
- "libc-static")))
- ;; XXX Remove once an empty librt.a is added to
- ;; libc:out.
- (copy-file
- (string-append (assoc-ref %outputs "out")
- "/lib/libpthread.a")
- (string-append (assoc-ref %outputs "out")
- "/lib/librt.a"))
- #t))))
+ "libc-static")))))))
(native-search-paths
(append (package-native-search-paths gcc)
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index 02a20e5c62..36fd25051d 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -106,7 +106,7 @@
(define-public zlib
(package
(name "zlib")
- (version "1.2.13")
+ (version "1.3")
(source
(origin
(method url-fetch)
@@ -116,7 +116,7 @@
version "/zlib-" version ".tar.gz")))
(sha256
(base32
- "0c5b8vw40dy178xlpddw65q9gf1h2186jcc3p4swinwggbllv8mk"))))
+ "0gjrz8p70mgkic7mxjh1vqwws4x8z7hq2fhbackvqg81jb1a82zz"))))
(build-system gnu-build-system)
(outputs '("out" "static"))
(arguments
@@ -251,14 +251,14 @@ adding and extracting files to/from a tar archive.")
(define-public gzip
(package
(name "gzip")
- (version "1.12")
+ (version "1.13")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/gzip/gzip-"
version ".tar.xz"))
(sha256
(base32
- "0mhrx5wk9gazmxdw7vmbpg036yzqqhsww6h12kwf2dzn37jh6pnf"))))
+ "0mx0j7765l4cyj3hyvlks2s3izdyzaqf3hknamjwc5yv6mlynm3l"))))
(build-system gnu-build-system)
(synopsis "General file (de)compression (using lzw)")
(arguments
@@ -494,7 +494,7 @@ compressed with pbzip2 can be decompressed with bzip2).")
(define-public xz
(package
(name "xz")
- (version "5.2.8")
+ (version "5.4.5")
(source (origin
(method url-fetch)
(uri (list (string-append "http://tukaani.org/xz/xz-" version
@@ -503,7 +503,7 @@ compressed with pbzip2 can be decompressed with bzip2).")
version ".tar.gz")))
(sha256
(base32
- "0z9056ydsy76ib5cl1z60jkcqgr0x12d3lw1p2qnlcwi1fgxlp7c"))))
+ "1mmpwl4kg1vs6n653gkaldyn43dpbjh8gpk7sk0gps5f6jwr0p0k"))))
(build-system gnu-build-system)
(arguments
`(#:phases
diff --git a/gnu/packages/connman.scm b/gnu/packages/connman.scm
index 2696e4c751..a13b6d199e 100644
--- a/gnu/packages/connman.scm
+++ b/gnu/packages/connman.scm
@@ -30,6 +30,7 @@
#:use-module (gnu packages)
#:use-module (gnu packages admin)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages enlightenment)
#:use-module (gnu packages glib)
#:use-module (gnu packages linux)
@@ -118,13 +119,13 @@ sharing) to clients via USB, ethernet, WiFi, cellular and Bluetooth.")
(name "econnman")
(version "1.1")
(source
- (origin
- (method url-fetch)
- (uri (string-append "https://download.enlightenment.org/rel/apps/"
- "econnman/econnman-" version ".tar.gz"))
- (sha256
- (base32
- "057pwwavlvrrq26bncqnfrf449zzaim0zq717xv86av4n940gwv0"))))
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://download.enlightenment.org/rel/apps/"
+ "econnman/econnman-" version ".tar.gz"))
+ (sha256
+ (base32
+ "057pwwavlvrrq26bncqnfrf449zzaim0zq717xv86av4n940gwv0"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags '("--localstatedir=/var")
@@ -138,14 +139,15 @@ sharing) to clients via USB, ethernet, WiFi, cellular and Bluetooth.")
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin/econnman-bin")))
(wrap-program bin
- `("GUIX_PYTHONPATH" ":" prefix (,(getenv "GUIX_PYTHONPATH"))))
- #t))))))
+ `("GUIX_PYTHONPATH" ":" prefix
+ (,(getenv "GUIX_PYTHONPATH"))))))))))
(native-inputs (list pkg-config))
(inputs
- `(("efl" ,efl)
- ("python" ,python-wrapper)
- ("python-dbus" ,python-dbus)
- ("python-efl" ,python-efl)))
+ (list bash-minimal ;for wrap-program
+ efl
+ python-wrapper
+ python-dbus
+ python-efl))
(home-page "https://www.enlightenment.org")
(synopsis "Connman User Interface written using the EFL")
(description
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index a2a3eb226e..94c3302b1b 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -2136,7 +2136,7 @@ pointers, containers, compiler building blocks, etc.")
(arguments
`(#:test-target "test"
#:imported-modules ((guix build copy-build-system)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:modules (((guix build copy-build-system) #:prefix copy:)
(guix build gnu-build-system)
(guix build utils))
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index 2cc5f52e47..6ee313a6f6 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013-2018, 2020, 2023 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013-2018, 2020, 2023-2024 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2016, 2019, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
@@ -80,9 +80,9 @@
(name (string-append (package-name p) "-cross-" target))
(arguments
(substitute-keyword-arguments (package-arguments p)
- ((#:configure-flags flags ''())
- `(cons ,(string-append "--target=" target)
- ,flags))))))
+ ((#:configure-flags flags #~'())
+ #~(cons #$(string-append "--target=" target)
+ #$flags))))))
(define (contains-keyword? args)
"Check if ARGS contains a keyword object."
@@ -127,7 +127,7 @@
;; to pick up native libs instead of target ones. In
;; practice the RUNPATH of target libs only refers to
;; target libs, not native libs, so this is safe.
- `(cons "--with-sysroot=/" ,flags)))))))
+ #~(cons "--with-sysroot=/" #$flags)))))))
;; For xtensa-ath9k-elf, apply Qualcomm's patch.
(cross (cond ((string=? target "xtensa-ath9k-elf")
@@ -231,8 +231,7 @@ base compiler and using LIBC (which may be either a libc package or #f.)"
(remove
(lambda (flag)
- (or (and #$libc
- (string-prefix? "--enable-languages" flag))
+ (or (string-prefix? "--enable-languages" flag)
(and #$libc
#$(target-avr? target)
(string-prefix? "--with-native-system-header-dir"
@@ -359,7 +358,7 @@ target that libc."
(arguments
`(#:implicit-inputs? #f
#:imported-modules ((gnu build cross-toolchain)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:modules ((guix build gnu-build-system)
(guix build utils)
(gnu build cross-toolchain)
@@ -717,15 +716,43 @@ returned."
(setenv "CROSS_LIBRARY_PATH"
(string-append kernel "/lib")) ; for Hurd's libihash
#t)))
+ (add-before 'configure 'add-cross-binutils-to-PATH
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; Add BINUTILS/TARGET/bin to $PATH so that 'gcc
+ ;; -print-prog-name=objdump' returns the correct name. See
+ ;; <https://inbox.sourceware.org/libc-alpha/d72f5f6f-cc3a-bd89-0800-ffb068928e0f@linaro.org/t/>.
+ (define cross-objdump
+ (search-input-file
+ inputs
+ (string-append ,target "/bin/objdump")))
+
+ (define cross-binutils
+ (dirname cross-objdump))
+
+ (format #t "adding '~a' to the front of 'PATH'~%"
+ cross-binutils)
+ (setenv "PATH" (string-append cross-binutils ":"
+ (getenv "PATH")))))
+
+ ;; This phase would require running 'localedef' built for
+ ;; TARGET, which is impossible by definition.
+ (delete 'install-utf8-c-locale)
+
,@(if (target-hurd? target)
'((add-after 'install 'augment-libc.so
(lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out")))
+ (let ((out (assoc-ref outputs "out")))
(substitute* (string-append out "/lib/libc.so")
(("/[^ ]+/lib/libc.so.0.3")
(string-append out "/lib/libc.so.0.3"
- " libmachuser.so libhurduser.so"))))
- #t)))
+ " libmachuser.so libhurduser.so"))))))
+ (add-after 'install 'create-machine-symlink
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out"))
+ (cpu "i386"))
+ (symlink cpu
+ (string-append out
+ "/include/mach/machine"))))))
'())))))
;; Shadow the native "kernel-headers" because glibc's recipe expects the
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index 2491abcce1..a79b393059 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -49,6 +49,7 @@
#:use-module (gnu packages aidc)
#:use-module (gnu packages attr)
#:use-module (gnu packages autotools)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages boost)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
@@ -489,7 +490,8 @@ total number of shares generated.")
(build-system gnu-build-system)
(native-inputs (list sudo)) ;presence needed for 'check' phase
(inputs
- `(("zsh" ,zsh)
+ `(("bash" ,bash-minimal) ; for wrap-program
+ ("zsh" ,zsh)
("gnupg" ,gnupg)
("cryptsetup" ,cryptsetup)
("e2fsprogs" ,e2fsprogs) ;for mkfs.ext4
@@ -1647,22 +1649,16 @@ checksum tool based on the BLAKE3 cryptographic hash function.")
(version "4.4.36")
(source
(origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/besser82/libxcrypt")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
+ (method url-fetch)
+ (uri
+ (string-append
+ "https://github.com/besser82/libxcrypt/releases/download/v" version
+ "/libxcrypt-" version ".tar.xz"))
(sha256
- (base32 "1yhpjjjv38y14nrj15bkndq824v42plndgi3k8mmc04grj1fbnjf"))))
+ (base32 "0hw9zphnbzgys5k7ja37iqmwmlyn0y417qr6xqmdw08axv5g9qg5"))))
(build-system gnu-build-system)
(native-inputs
- (list autoconf
- automake
- libtool
- perl
- pkg-config
- python-3
- python-passlib))
+ (list perl))
(synopsis
"Extended crypt library for descrypt, md5crypt, bcrypt, and others")
(description
diff --git a/gnu/packages/cryptsetup.scm b/gnu/packages/cryptsetup.scm
index 3bdc68ae5a..44f9c77984 100644
--- a/gnu/packages/cryptsetup.scm
+++ b/gnu/packages/cryptsetup.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2019–2021 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2024 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -23,6 +24,7 @@
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
+ #:use-module (guix gexp)
#:use-module (guix utils)
#:use-module (gnu packages)
#:use-module (gnu packages gnupg)
@@ -30,12 +32,13 @@
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages popt)
#:use-module (gnu packages linux)
+ #:use-module (gnu packages ruby)
#:use-module (gnu packages web))
(define-public cryptsetup
(package
(name "cryptsetup")
- (version "2.3.7")
+ (version "2.6.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://kernel.org/linux/utils/cryptsetup/v"
@@ -43,23 +46,34 @@
"/cryptsetup-" version ".tar.xz"))
(sha256
(base32
- "1a97rvi6arsj8dikh1qsvixx9rizm89k155q2ypifqlqllr530v1"))))
+ "14s6vbb9llpgnhmv0badxxzhi73jp4vyvp8swk4bjah7l5jys3a1"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
- (list
- ;; Argon2 is always enabled, this just selects the (faster) full version.
- "--enable-libargon2"
- ;; The default is OpenSSL which provides better PBKDF performance.
- "--with-crypto_backend=gcrypt"
- ;; GRUB 2.06 supports LUKS2, but does it reliably support all set-ups…?
- "--with-default-luks-format=LUKS1"
- ;; libgcrypt is not found otherwise when cross-compiling.
- ;; <https://issues.guix.gnu.org/63864>
- (string-append "--with-libgcrypt-prefix="
- (assoc-ref %build-inputs "libgcrypt")))))
+ (append
+ (if (assoc-ref %build-inputs "ruby-asciidoctor")
+ '()
+ (list "--disable-asciidoc"))
+ (list
+ ;; Argon2 is always enabled, this just selects the (faster) full version.
+ "--enable-libargon2"
+ ;; The default is OpenSSL which provides better PBKDF performance.
+ "--with-crypto_backend=gcrypt"
+ ;; GRUB 2.06 supports LUKS2, but does it reliably support all set-ups…?
+ "--with-default-luks-format=LUKS1"
+ ;; External tokens would need an env variable to work on Guix, and we
+ ;; don't have users for it yet.
+ "--disable-external-tokens"
+ "--disable-ssh-token"
+ ;; libgcrypt is not found otherwise when cross-compiling.
+ ;; <https://issues.guix.gnu.org/63864>
+ (string-append "--with-libgcrypt-prefix="
+ (assoc-ref %build-inputs "libgcrypt"))))))
(native-inputs
- (list pkg-config))
+ (append (list pkg-config)
+ (if (supported-package? ruby-asciidoctor)
+ (list ruby-asciidoctor)
+ '())))
(inputs
(list argon2
json-c
@@ -86,6 +100,13 @@ block integrity kernel modules.")
(license license:gpl2)
(home-page "https://gitlab.com/cryptsetup/cryptsetup")))
+(define-public (libcryptsetup-propagated-inputs)
+ (list argon2
+ json-c
+ libgcrypt
+ lvm2
+ `(,util-linux "lib")))
+
(define (static-library library)
"Return a variant of package LIBRARY that provides static libraries ('.a'
files). This assumes LIBRARY uses Libtool."
@@ -94,9 +115,9 @@ files). This assumes LIBRARY uses Libtool."
(name (string-append (package-name library) "-static"))
(arguments
(substitute-keyword-arguments (package-arguments library)
- ((#:configure-flags flags ''())
- `(append '("--disable-shared" "--enable-static")
- ,flags))))))
+ ((#:configure-flags flags #~'())
+ #~(append '("--disable-shared" "--enable-static")
+ #$flags))))))
(define-public cryptsetup-static
;; Stripped-down statically-linked 'cryptsetup' command for use in initrds.
@@ -104,56 +125,59 @@ files). This assumes LIBRARY uses Libtool."
(inherit cryptsetup)
(name "cryptsetup-static")
(arguments
- '(#:configure-flags '("--disable-shared"
- "--enable-static-cryptsetup"
-
- "--disable-veritysetup"
- "--disable-cryptsetup-reencrypt"
- "--disable-integritysetup"
-
- ;; The default is OpenSSL which provides better PBKDF performance.
- "--with-crypto_backend=gcrypt"
-
- "--disable-blkid"
- ;; 'libdevmapper.a' pulls in libpthread, libudev and libm.
- "LIBS=-ludev -pthread -lm")
-
- #:allowed-references () ;this should be self-contained
-
- #:modules ((ice-9 ftw)
- (ice-9 match)
- (guix build utils)
- (guix build gnu-build-system))
+ (substitute-keyword-arguments (package-arguments cryptsetup)
+ ((#:configure-flags flags ''())
+ `(cons* "--disable-shared"
+ "--enable-static-cryptsetup"
- #:phases (modify-phases %standard-phases
- (add-after 'install 'remove-cruft
- (lambda* (#:key outputs #:allow-other-keys)
- ;; Remove everything except the 'cryptsetup' command.
- (let ((out (assoc-ref outputs "out")))
- (with-directory-excursion out
- (let ((dirs (scandir "."
- (match-lambda
- ((or "." "..") #f)
- (_ #t)))))
- (for-each delete-file-recursively
- (delete "sbin" dirs))
- (for-each (lambda (file)
- (rename-file (string-append file
- ".static")
- file)
- (remove-store-references file))
- '("sbin/cryptsetup"))
- #t))))))))
+ "--disable-veritysetup"
+ "--disable-integritysetup"
+ ;; Bypass broken pkg-config paths for the static output of
+ ;; util-linux. Only blkid is located through pkg-config, not
+ ;; uuid.
+ (format #f "BLKID_CFLAGS=-I~a"
+ (search-input-directory %build-inputs "include/blkid"))
+ (format #f "BLKID_LIBS=-L~a -lblkid"
+ (dirname (search-input-file %build-inputs "lib/libblkid.a")))
+ ,flags))
+ ((#:allowed-references refs '())
+ '())
+ ((#:modules modules '())
+ '((ice-9 ftw)
+ (ice-9 match)
+ (guix build utils)
+ (guix build gnu-build-system)))
+ ((#:phases phases #~%standard-phases)
+ #~(modify-phases #$phases
+ (add-after 'install 'remove-cruft
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Remove everything except the 'cryptsetup' command.
+ (let ((out (assoc-ref outputs "out")))
+ (with-directory-excursion out
+ (let ((dirs (scandir "."
+ (match-lambda
+ ((or "." "..") #f)
+ (_ #t)))))
+ (for-each delete-file-recursively
+ (delete "sbin" dirs))
+ (for-each (lambda (file)
+ (rename-file (string-append file
+ ".static")
+ file)
+ (remove-store-references file))
+ '("sbin/cryptsetup"))
+ #t)))))))))
(inputs
(let ((libgcrypt-static
(package
(inherit (static-library libgcrypt))
(propagated-inputs
`(("libgpg-error-host" ,(static-library libgpg-error)))))))
- `(("json-c" ,json-c-0.13)
+ `(("argon2" ,(static-library argon2))
+ ("json-c" ,(static-library json-c-0.13))
("libgcrypt" ,libgcrypt-static)
("lvm2" ,lvm2-static)
("util-linux" ,util-linux "static")
("util-linux" ,util-linux "lib")
- ("popt" ,popt))))
+ ("popt" ,(static-library popt)))))
(synopsis "Hard disk encryption tool (statically linked)")))
diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm
index 3b86b7f610..68343cb66a 100644
--- a/gnu/packages/cups.scm
+++ b/gnu/packages/cups.scm
@@ -1,13 +1,13 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2019, 2021 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2015, 2016, 2017, 2019, 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015, 2016, 2017, 2019, 2021, 2023 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015-2018, 2023 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2017 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2017–2022 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2021, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2021, 2023, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
;;;
;;; This file is part of GNU Guix.
@@ -31,7 +31,9 @@
#:use-module (gnu packages autotools)
#:use-module (gnu packages avahi)
#:use-module (gnu packages base)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages crypto)
#:use-module (gnu packages fonts) ; font-dejavu
#:use-module (gnu packages fontutils)
#:use-module (gnu packages ghostscript)
@@ -42,6 +44,7 @@
#:use-module (gnu packages linux)
#:use-module (gnu packages pdf)
#:use-module (gnu packages perl)
+ #:use-module (gnu packages photo)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages polkit)
#:use-module (gnu packages pretty-print)
@@ -128,7 +131,7 @@ driver is known to work with these printers:
(define-public cups-filters
(package
(name "cups-filters")
- (version "1.28.15")
+ (version "1.28.16")
(source
(origin
(method url-fetch)
@@ -136,7 +139,7 @@ driver is known to work with these printers:
(string-append "https://openprinting.org/download/cups-filters/"
"cups-filters-" version ".tar.xz"))
(sha256
- (base32 "12s7s2jgnh4q7ws7r2is6xp3pqq818jhnm4vpyzyywmvkxvfq1x9"))
+ (base32 "1h4s35xkbxhxpid39yaiy0gmaj3lck8lhzfdfl3h58hxfpx0nh1s"))
(modules '((guix build utils)))
(snippet
;; Install backends, banners and filters to cups-filters output
@@ -179,7 +182,11 @@ driver is known to work with these printers:
(assoc-ref %build-inputs "bash")
"/bin/bash")
(string-append "--with-rcdir="
- #$output "/etc/rc.d"))
+ #$output "/etc/rc.d")
+ ;; QPDF headers include C++17 libraries such as
+ ;; std::string_view.
+ "CFLAGS=-std=gnu17"
+ "CXXFLAGS=-std=gnu++17")
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'patch-foomatic-hardcoded-file-names
@@ -199,9 +206,11 @@ driver is known to work with these printers:
(wrap-program file
`("PATH" ":" prefix
(,(string-append
+ #$(this-package-input "coreutils") "/bin:"
#$(this-package-input "ghostscript-with-cups")
"/bin:"
- #$(this-package-input "grep") "/bin")))))
+ #$(this-package-input "grep") "/bin:"
+ #$(this-package-input "sed") "/bin")))))
(find-files (string-append #$output
"/lib/cups/filter"))))))))
(native-inputs
@@ -212,21 +221,25 @@ driver is known to work with these printers:
pkg-config)))
(inputs
(list avahi
+ bash-minimal
+ coreutils
+ cups-minimal
+ dbus
+ font-dejavu ;also needed by test suite
fontconfig
freetype
- font-dejavu ; also needed by test suite
ghostscript/cups
+ glib
grep
ijs
- dbus
lcms
+ libexif
libjpeg-turbo
libpng
libtiff
- glib
- qpdf
poppler
- cups-minimal))
+ qpdf
+ sed))
(home-page "https://wiki.linuxfoundation.org/openprinting/cups-filters")
(synopsis "OpenPrinting CUPS filters and backends")
(description
@@ -249,8 +262,7 @@ filters for the PDF-centric printing workflow introduced by OpenPrinting.")
(define-public cups-minimal
(package
(name "cups-minimal")
- (version "2.4.2")
- (replacement cups-minimal/fixed)
+ (version "2.4.7")
(source
(origin
(method git-fetch)
@@ -260,7 +272,7 @@ filters for the PDF-centric printing workflow introduced by OpenPrinting.")
;; Avoid NAME confusion: these are the complete CUPS sources.
(file-name (git-file-name "cups" version))
(sha256
- (base32 "01nn6ij7kpf2vzikinn7mk4crjx4ab8m4pplvsccc8gg30a2q9y9"))))
+ (base32 "0cj3gs7ki9v0drj19l326s8f1kxrpq7jkzrdfdk7ykrlk7sj645f"))))
(build-system gnu-build-system)
(arguments
(list #:configure-flags
@@ -323,7 +335,7 @@ filters for the PDF-centric printing workflow introduced by OpenPrinting.")
(if (%current-target-system)
(list this-package)
'())))
- (inputs (list zlib gnutls))
+ (inputs (list zlib gnutls libxcrypt))
(home-page "https://openprinting.github.io/cups")
(synopsis "The Common Unix Printing System")
(description
@@ -340,20 +352,6 @@ applications''. These must be installed separately.")
;; CUPS is Apache 2.0 with exceptions, see the NOTICE file.
(license license:asl2.0)))
-(define cups-minimal/fixed
- (package
- (inherit cups-minimal)
- (version "2.4.7")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/OpenPrinting/cups")
- (commit (string-append "v" version))))
- (file-name (git-file-name "cups" version))
- (sha256
- (base32 "0cj3gs7ki9v0drj19l326s8f1kxrpq7jkzrdfdk7ykrlk7sj645f"))))))
-
(define-public cups
(package/inherit cups-minimal
(name "cups")
@@ -565,7 +563,7 @@ should only be used as part of the Guix cups-pk-helper service.")
(arguments
(list
#:imported-modules `((guix build python-build-system)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:modules '((guix build gnu-build-system)
(guix build utils)
((guix build python-build-system) #:prefix python:))
@@ -847,7 +845,11 @@ printer/driver specific, but spooler-independent PPD file.")
#:tests? #f ;no tests
#:make-flags '("CC=gcc")))
(inputs
- (list coreutils sed ghostscript foomatic-filters)) ;for 'foomatic-rip'
+ (list bash-minimal
+ coreutils
+ sed
+ ghostscript
+ foomatic-filters)) ;for 'foomatic-rip'
(native-inputs
(list bc groff))
;; The domain has expired and no one has meaningfully taken up the torch.
@@ -884,7 +886,7 @@ HP@tie{}LaserJet, and possibly other printers. See @file{README} for details.")
(arguments
(list #:modules
`((srfi srfi-26)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:configure-flags
#~(list "--disable-static"
(string-append "--prefix=" #$output)
@@ -945,7 +947,7 @@ language.")
(arguments
`(#:modules
((srfi srfi-26)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:make-flags
(list (string-append "CUPSDRV="
(assoc-ref %outputs "out") "/share/cups/drv")
@@ -995,14 +997,14 @@ obtained and installed separately.")
(define-public python-pycups
(package
(name "python-pycups")
- (version "1.9.74")
+ (version "2.0.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pycups" version ".tar.bz2"))
(sha256
(base32
- "1ffp7sswhdsfpy88zg0cc8kl04wygkjs01rlm9f0spbwk8jhy2c6"))))
+ "140c7073bkhx8w9qpaynllhynkkg0rzj3a4wjh9fnj15yvjlqhsp"))))
(build-system python-build-system)
(arguments
'(;; Tests require CUPS to be running
diff --git a/gnu/packages/curl.scm b/gnu/packages/curl.scm
index 3a6776be59..c2c5fa345c 100644
--- a/gnu/packages/curl.scm
+++ b/gnu/packages/curl.scm
@@ -66,34 +66,18 @@
(define-public curl
(package
(name "curl")
- (version "8.5.0")
+ (version "8.6.0")
(source (origin
(method url-fetch)
(uri (string-append "https://curl.se/download/curl-"
version ".tar.xz"))
(sha256
(base32
- "1sqfflilf7mcz1g03lazyr6v6pf1rsrzprrknsir10hdwawqvas2"))
+ "05fv468yjrb7qwrxmfprxkrcckbkij0myql0vwwnalgr3bcmbk9w"))
(patches (search-patches "curl-use-ssl-cert-env.patch"))))
- (build-system gnu-build-system)
(outputs '("out"
"doc")) ;1.2 MiB of man3 pages
- (inputs
- (list gnutls libidn mit-krb5 `(,nghttp2 "lib") zlib))
- (native-inputs
- (list nghttp2 perl pkg-config python-minimal-wrapper))
- (native-search-paths
- ;; These variables are introduced by curl-use-ssl-cert-env.patch.
- (list $SSL_CERT_DIR
- $SSL_CERT_FILE
- ;; Note: This search path is respected by the `curl` command-line
- ;; tool only. Patching libcurl to read it too would bring no
- ;; advantages and require maintaining a more complex patch.
- (search-path-specification
- (variable "CURL_CA_BUNDLE")
- (file-type 'regular)
- (separator #f) ;single entry
- (files '("etc/ssl/certs/ca-certificates.crt")))))
+ (build-system gnu-build-system)
(arguments
(list
#:disallowed-references '("doc")
@@ -104,6 +88,7 @@
(search-input-file
%build-inputs "lib/libgssrpc.so"))))
"--disable-static")
+ #:test-target "test-nonflaky" ;avoid tests marked as "flaky"
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'do-not-record-configure-flags
@@ -162,6 +147,22 @@
(display "1501\n" port)
(close port)))))
#~()))))
+ (native-inputs
+ (list nghttp2 perl pkg-config python-minimal-wrapper))
+ (inputs
+ (list gnutls libidn libpsl mit-krb5 `(,nghttp2 "lib") zlib))
+ (native-search-paths
+ ;; These variables are introduced by curl-use-ssl-cert-env.patch.
+ (list $SSL_CERT_DIR
+ $SSL_CERT_FILE
+ ;; Note: This search path is respected by the `curl` command-line
+ ;; tool only. Patching libcurl to read it too would bring no
+ ;; advantages and require maintaining a more complex patch.
+ (search-path-specification
+ (variable "CURL_CA_BUNDLE")
+ (file-type 'regular)
+ (separator #f) ;single entry
+ (files '("etc/ssl/certs/ca-certificates.crt")))))
(synopsis "Command line tool for transferring data with URL syntax")
(description
"curl is a command line tool for transferring data with URL syntax,
@@ -246,9 +247,9 @@ not offer a replacement for libcurl.")
(arguments
`(#:modules (((guix build guile-build-system)
#:select (target-guile-effective-version))
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:imported-modules ((guix build guile-build-system)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:configure-flags (list (string-append
"--with-guilesitedir="
(assoc-ref %outputs "out")
diff --git a/gnu/packages/cyrus-sasl.scm b/gnu/packages/cyrus-sasl.scm
index 70d579c127..ef408f2dd7 100644
--- a/gnu/packages/cyrus-sasl.scm
+++ b/gnu/packages/cyrus-sasl.scm
@@ -23,6 +23,7 @@
(define-module (gnu packages cyrus-sasl)
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
+ #:use-module (gnu packages crypto)
#:use-module (gnu packages dbm)
#:use-module (gnu packages kerberos)
#:use-module (gnu packages tls)
@@ -45,7 +46,7 @@
(base32
"135kbgyfpa1mwqp5dm223yr6ddzi4vjm7cr414d7rmhys2mwdkvw"))))
(build-system gnu-build-system)
- (inputs (list gdbm mit-krb5 openssl))
+ (inputs (list gdbm libxcrypt mit-krb5 openssl))
(arguments
(list
#:configure-flags #~(list (string-append "--with-plugindir="
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 238ba34053..c8b95fb5fa 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -254,11 +254,10 @@ persistent, single-file databases with support for secondary indexes.")
,(string-append (assoc-ref inputs "postgresql")
"/bin")
;; For getsocket.
- ,(string-append out "/bin")))))
- #t)))
+ ,(string-append out "/bin"))))))))
#:test-target "test"))
(inputs
- (list postgresql util-linux))
+ (list bash-minimal postgresql util-linux))
(native-inputs
;; For tests.
(list ruby which))
@@ -942,12 +941,12 @@ auto-completion and syntax highlighting.")
,(string-append coreutils "/bin")
,(string-append grep "/bin")
,(string-append ps "/bin")
- ,(string-append sed "/bin"))))
- #t))))))
+ ,(string-append sed "/bin"))))))))))
(native-inputs
(list bison perl pkg-config))
(inputs
- (list boost-for-mysql
+ (list bash-minimal
+ boost-for-mysql
coreutils
gawk
grep
@@ -1900,8 +1899,7 @@ for example from a shell script.")
(add-before 'check 'set-check-environment
(lambda _
(setenv "TZ" "UTC")
- (setenv "HOME" "/tmp")
- #t))
+ (setenv "HOME" "/tmp")))
(add-after 'install 'wrap-program
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@@ -1910,8 +1908,7 @@ for example from a shell script.")
`("PERL5LIB" ":" prefix
(,(string-append out "/lib/perl5/site_perl"
":"
- path)))))
- #t)))))
+ path))))))))))
(native-inputs
(list perl-capture-tiny
perl-io-pager
@@ -1928,38 +1925,39 @@ for example from a shell script.")
perl-test-nowarnings
perl-test-warn))
(inputs
- `(("perl-class-xsaccessor" ,perl-class-xsaccessor)
- ("perl-clone" ,perl-clone)
- ("perl-config-gitlike" ,perl-config-gitlike)
- ("perl-datetime" ,perl-datetime)
- ("perl-datetime-timezone" ,perl-datetime-timezone)
- ("perl-dbd-mysql" ,perl-dbd-mysql)
- ("perl-dbd-pg" ,perl-dbd-pg)
- ("perl-dbd-sqlite" ,perl-dbd-sqlite)
- ("perl-dbi" ,perl-dbi)
- ("perl-devel-stacktrace" ,perl-devel-stacktrace)
- ("perl-encode-locale" ,perl-encode-locale)
- ("perl-hash-merge" ,perl-hash-merge)
- ("perl-ipc-run3" ,perl-ipc-run3)
- ("perl-ipc-system-simple" ,perl-ipc-system-simple)
- ("perl-libintl-perl" ,perl-libintl-perl)
- ("perl-list-moreutils" ,perl-list-moreutils)
- ("perl-moo" ,perl-moo)
- ("perl-mysql-config" ,perl-mysql-config)
- ("perl-namespace-autoclean" ,perl-namespace-autoclean)
- ("perl-path-class" ,perl-path-class)
- ("perl-perlio-utf8_strict" ,perl-perlio-utf8_strict)
- ("perl-string-formatter" ,perl-string-formatter)
- ("perl-string-shellquote" ,perl-string-shellquote)
- ("perl-sub-exporter" ,perl-sub-exporter)
- ("perl-template-tiny" ,perl-template-tiny)
- ("perl-template-toolkit" ,perl-template-toolkit)
- ("perl-throwable" ,perl-throwable)
- ("perl-try-tiny" ,perl-try-tiny)
- ("perl-type-tiny" ,perl-type-tiny)
- ("perl-type-tiny-xs" ,perl-type-tiny-xs)
- ("perl-uri" ,perl-uri)
- ("perl-uri-db" ,perl-uri-db)))
+ (list bash-minimal
+ perl-class-xsaccessor
+ perl-clone
+ perl-config-gitlike
+ perl-datetime
+ perl-datetime-timezone
+ perl-dbd-mysql
+ perl-dbd-pg
+ perl-dbd-sqlite
+ perl-dbi
+ perl-devel-stacktrace
+ perl-encode-locale
+ perl-hash-merge
+ perl-ipc-run3
+ perl-ipc-system-simple
+ perl-libintl-perl
+ perl-list-moreutils
+ perl-moo
+ perl-mysql-config
+ perl-namespace-autoclean
+ perl-path-class
+ perl-perlio-utf8_strict
+ perl-string-formatter
+ perl-string-shellquote
+ perl-sub-exporter
+ perl-template-tiny
+ perl-template-toolkit
+ perl-throwable
+ perl-try-tiny
+ perl-type-tiny
+ perl-type-tiny-xs
+ perl-uri
+ perl-uri-db))
(home-page "https://sqitch.org/")
(synopsis "Database change management tool")
(description
@@ -2019,10 +2017,9 @@ changes.")
(invoke "./configure"
(string-append "--prefix=" out))))))))
(native-inputs
- (list ;; TODO: Build the documentation.
- ;; ("docbook-xsl" ,docbook-xsl)
- ;; ("libxml2" ,libxml2)
- ;; ("libxslt" ,libxslt)
+ (list docbook-xsl
+ libxcrypt
+ libxslt
python ;for the Waf build system
which))
(home-page "https://tdb.samba.org/")
@@ -4461,8 +4458,8 @@ is designed to have a low barrier to entry.")
,(map (lambda (output)
(string-append output sitedir))
(list python out))))))))))
- (native-inputs
- (list python-pytest))
+ (native-inputs (list python-pytest))
+ (inputs (list bash-minimal))
(home-page "https://github.com/andialbrecht/sqlparse")
(synopsis "Non-validating SQL parser")
(description "Sqlparse is a non-validating SQL parser for Python. It
diff --git a/gnu/packages/dbm.scm b/gnu/packages/dbm.scm
index 19a1b503cf..7c36d30a34 100644
--- a/gnu/packages/dbm.scm
+++ b/gnu/packages/dbm.scm
@@ -6,7 +6,7 @@
;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
;;; Copyright © 2021 Leo Le Bouter <lle-bout@zaclys.net>
-;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
+;;; Copyright © 2021, 2022 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2021 LuHui <luhux76@gmail.com>
;;;
;;; This file is part of GNU Guix.
@@ -30,6 +30,7 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
+ #:use-module (guix gexp)
#:use-module (guix build-system gnu)
#:use-module (guix utils)
#:use-module (ice-9 match))
@@ -39,6 +40,29 @@
;;; This module has been separated from (gnu packages databases) to reduce the
;;; number of module references for core packages.
+(define bdb-snippet
+ ;; Remove some bundled and generated files. Some of the old
+ ;; Autotools files are too old for some architectures
+ ;; (e.g. aarch64 and powerpc64le).
+ #~(begin
+ (for-each delete-file-recursively
+ '("dist/configure"
+ "dist/config.sub"
+ "dist/config.guess"
+ "dist/install-sh"
+ "dist/ltmain.sh"
+ "dist/aclocal/libtool.m4"
+ "dist/aclocal/ltoptions.m4"
+ "dist/aclocal/ltsugar.m4"
+ "dist/aclocal/ltversion.m4"
+ "dist/aclocal/lt~obsolete.m4"))
+ (substitute* "dist/configure.ac"
+ ;; Placate 'automake'.
+ (("AC_DEFINE\\(DB_WIN32\\)")
+ "AC_DEFINE(DB_WIN32, [], [Description])")
+ (("AC_DEFINE\\(HAVE_SYSTEM_INCLUDE_FILES\\)")
+ "AC_DEFINE(HAVE_SYSTEM_INCLUDE_FILES, [], [Description])"))))
+
(define-public bdb-4.8
(package
(name "bdb")
@@ -52,78 +76,65 @@
(sha256
(base32
"0ampbl2f0hb1nix195kz1syrqqxpmvnvnfvphambj7xjrl3iljg0"))
- (patches (search-patches "bdb-5.3-atomics-on-gcc-9.patch"))))
+ (patches (search-patches "bdb-5.3-atomics-on-gcc-9.patch"))
+ (modules '((guix build utils)
+ (srfi srfi-1)))
+ (snippet bdb-snippet)))
(build-system gnu-build-system)
(outputs '("out" ; programs, libraries, headers
"doc")) ; 94 MiB of HTML docs
(arguments
- `(#:tests? #f ; no check target available
- #:disallowed-references ("doc")
- #:phases
- (modify-phases %standard-phases
- ;; The configure script is too old to recognise aarch64 and
- ;; powerpc64le as valid architectures. The trick below works
- ;; for "--build", but not for "--host", so update config.sub.
- ,@(if (and (%current-target-system)
- (or (target-ppc64le? (%current-target-system))
- (target-aarch64? (%current-target-system))
- (target-riscv64? (%current-target-system))))
- `((add-after 'unpack 'update-config.sub
- (lambda* (#:key native-inputs #:allow-other-keys)
- (delete-file "dist/config.sub")
- (symlink
- (search-input-file native-inputs "/bin/config.sub")
- "dist/config.sub"))))
- '())
- (replace 'configure
- (lambda* (#:key target outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out"))
- (doc (assoc-ref outputs "doc")))
- ;; '--docdir' is not honored, so we need to patch.
- (substitute* "dist/Makefile.in"
- (("docdir[[:blank:]]*=.*")
- (string-append "docdir = " doc "/share/doc/bdb")))
-
- (chdir "build_unix")
- (invoke "../dist/configure"
- (string-append "--prefix=" out)
- (string-append "CONFIG_SHELL=" (which "bash"))
- (string-append "SHELL=" (which "bash"))
-
- ;; Bdb's config script doesn't recognize very many
- ;; architectures, and is a dependant on the 'config'
- ;; package, so we manually define the build target.
- ,@(match (%current-system)
- ("aarch64-linux"
- '("--build=aarch64-unknown-linux-gnu"))
- ("powerpc64le-linux"
- '("--build=powerpc64le-unknown-linux-gnu"))
- ("riscv64-linux"
- '("--build=riscv64-unknown-linux-gnu"))
- (_ '()))
+ (list #:tests? #f ; no check target available
+ #:disallowed-references '("doc")
+ #:out-of-source? #true
+ #:configure-flags
+ #~(list
+ ;; Remove 7 MiB of .a files.
+ "--disable-static"
- ,@(if (%current-target-system) ; cross building
- '((string-append "--host=" target))
- '())
+ ;; The compatibility mode is needed by some packages,
+ ;; notably iproute2.
+ "--enable-compat185"
- ;; Remove 7 MiB of .a files.
- "--disable-static"
-
- ;; The compatibility mode is needed by some packages,
- ;; notably iproute2.
- "--enable-compat185"
-
- ;; The following flag is needed so that the inclusion
- ;; of db_cxx.h into C++ files works; it leads to
- ;; HAVE_CXX_STDHEADERS being defined in db_cxx.h.
- "--enable-cxx")))))))
- (native-inputs
- (if (and (%current-target-system)
- (or (target-ppc64le? (%current-target-system))
- (target-aarch64? (%current-target-system))
- (target-riscv64? (%current-target-system))))
- `(("config" ,config)) ; for config.sub
- '()))
+ ;; The following flag is needed so that the inclusion
+ ;; of db_cxx.h into C++ files works; it leads to
+ ;; HAVE_CXX_STDHEADERS being defined in db_cxx.h.
+ "--enable-cxx")
+ #:phases
+ #~(modify-phases %standard-phases
+ (replace 'bootstrap
+ (lambda* (#:key inputs native-inputs outputs
+ #:allow-other-keys #:rest arguments)
+ (with-directory-excursion "dist"
+ (for-each (lambda (x)
+ (install-file x "aclocal"))
+ (find-files "aclocal_java"))
+ (apply (assq-ref %standard-phases 'bootstrap) arguments)
+ (let ((automake-files (search-input-directory
+ (or native-inputs inputs)
+ "share/automake-1.16")))
+ (define (replace file)
+ (symlink (string-append automake-files "/" file) file))
+ (for-each replace '("config.sub" "config.guess"
+ "install-sh"))))))
+ (add-before 'configure 'pre-configure
+ (lambda _
+ (chdir "dist")
+ ;; '--docdir' is not honored, so we need to patch.
+ (substitute* "Makefile.in"
+ (("docdir[[:blank:]]*=.*")
+ (string-append "docdir = " #$output:doc
+ "/share/doc/bdb")))
+ ;; Replace __EDIT_DB_VERSION__... by actual version numbers.
+ ;; s_config is responsible for this, but also runs autoconf
+ ;; again, so patch out the autoconf bits.
+ (substitute* "s_config"
+ (("^.*(aclocal|autoconf|autoheader|config\\.hin).*$") "")
+ (("^.*auto4mte.*$") "")
+ (("rm (.*) configure") "")
+ (("chmod (.*) config.guess(.*)$") ""))
+ (invoke "sh" "s_config"))))))
+ (native-inputs (list autoconf automake libtool))
(synopsis "Berkeley database")
(description
"Berkeley DB is an embeddable database allowing developers the choice of
@@ -138,7 +149,7 @@ SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
(name "bdb")
(version "5.3.28")
(source (origin
- (method url-fetch)
+ (inherit (package-source bdb-4.8))
(uri (string-append "https://download.oracle.com/berkeley-db/db-"
version ".tar.gz"))
(sha256
@@ -152,12 +163,14 @@ SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
(name "bdb")
(version "6.2.32")
(source (origin
+ (inherit (package-source bdb-4.8))
(method url-fetch)
(uri (string-append "https://download.oracle.com/berkeley-db/db-"
version ".tar.gz"))
(sha256
(base32
- "1yx8wzhch5wwh016nh0kfxvknjkafv6ybkqh6nh7lxx50jqf5id9"))))
+ "1yx8wzhch5wwh016nh0kfxvknjkafv6ybkqh6nh7lxx50jqf5id9"))
+ (patches '())))
;; Starting with version 6, BDB is distributed under AGPL3. Many individual
;; files are covered by the 3-clause BSD license.
(license (list license:agpl3+ license:bsd-3))))
diff --git a/gnu/packages/debian.scm b/gnu/packages/debian.scm
index a88fb04feb..8b5aacc340 100644
--- a/gnu/packages/debian.scm
+++ b/gnu/packages/debian.scm
@@ -422,7 +422,7 @@ distributions such as Debian and Trisquel.")
(arguments
(list #:modules
`((srfi srfi-71)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:phases
#~(modify-phases %standard-phases
(add-before 'bootstrap 'patch-version
diff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scm
index 6d4567acc4..1c6baee452 100644
--- a/gnu/packages/debug.scm
+++ b/gnu/packages/debug.scm
@@ -141,6 +141,7 @@ program to exhibit a bug.")
(native-inputs (list flex))
(inputs
`(("astyle" ,astyle)
+ ("bash" ,bash-minimal) ; for wrap-program
("llvm" ,llvm-9)
("clang" ,clang-9)
("indent" ,indent)
@@ -640,7 +641,8 @@ input. Zzuf's behaviour is deterministic, making it easy to reproduce bugs.")
automake
autoconf))
(inputs
- (list readline))
+ (list bash-minimal
+ readline))
(propagated-inputs
(list python-pygobject))
(home-page "https://github.com/scanmem/scanmem")
diff --git a/gnu/packages/dezyne.scm b/gnu/packages/dezyne.scm
index 7ea2c155aa..247f587267 100644
--- a/gnu/packages/dezyne.scm
+++ b/gnu/packages/dezyne.scm
@@ -56,7 +56,7 @@
(arguments
(list
#:modules `((ice-9 popen)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:phases
#~(modify-phases %standard-phases
(add-before 'configure 'setenv
diff --git a/gnu/packages/dictionaries.scm b/gnu/packages/dictionaries.scm
index 9f493d91ad..8adacf6d6c 100644
--- a/gnu/packages/dictionaries.scm
+++ b/gnu/packages/dictionaries.scm
@@ -38,6 +38,7 @@
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages curl)
#:use-module (gnu packages emacs)
#:use-module (gnu packages flex)
@@ -242,14 +243,14 @@ and a Python library.")
(name "translate-shell")
(version "0.9.7.1")
(source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url"https://github.com/soimort/translate-shell")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "0jfrypcz963pfvwwaz2i0xvwp2909ldzp15v68mgd2mbqkqw9d90"))))
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url"https://github.com/soimort/translate-shell")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0jfrypcz963pfvwwaz2i0xvwp2909ldzp15v68mgd2mbqkqw9d90"))))
(build-system gnu-build-system)
(arguments
`(#:phases
@@ -267,11 +268,11 @@ and a Python library.")
(fribidi (assoc-ref inputs "fribidi"))
(rlwrap (assoc-ref inputs "rlwrap")))
(wrap-program bin
- `("PATH" ":" prefix
- (,(string-append out "/bin:"
- curl "/bin:"
- fribidi "/bin:"
- rlwrap "/bin")))))))
+ `("PATH" ":" prefix
+ (,(string-append out "/bin:"
+ curl "/bin:"
+ fribidi "/bin:"
+ rlwrap "/bin")))))))
(add-after 'unpack 'emacs-make-autoloads
(assoc-ref emacs:%standard-phases 'make-autoloads))
(add-after 'install 'emacs-install
@@ -280,18 +281,18 @@ and a Python library.")
(assoc-ref emacs:%standard-phases 'build)))
#:make-flags (list (string-append "PREFIX=" %output)
"NETWORK_ACCESS=no test")
- #:imported-modules (,@%gnu-build-system-modules
- (guix build emacs-build-system)
- (guix build emacs-utils))
+ #:imported-modules (,@%default-gnu-imported-modules
+ (guix build emacs-build-system)
+ (guix build emacs-utils))
#:modules ((guix build gnu-build-system)
((guix build emacs-build-system) #:prefix emacs:)
(guix build utils))
#:test-target "test"))
(inputs
- (list curl fribidi rlwrap))
+ (list bash-minimal curl fribidi rlwrap))
(native-inputs
- `(("emacs" ,emacs-minimal)
- ("util-linux" ,util-linux))) ; hexdump, for the test
+ (list emacs-minimal
+ util-linux)) ; hexdump, for the test
(home-page "https://www.soimort.org/translate-shell/")
(synopsis "Translations from the command line")
(description
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index 10d546b918..8be3501f8e 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -273,8 +273,6 @@ tmpfs/ramfs filesystems.")
#~(modify-phases %standard-phases
(add-after 'unpack 'fix-locales-and-python
(lambda _
- (substitute* "tests/t0251-gpt-unicode.sh"
- (("C.UTF-8") "en_US.utf8")) ;not in Glibc locales
(substitute* "tests/msdos-overlap"
(("/usr/bin/python") (which "python"))))))))
(inputs
@@ -954,7 +952,7 @@ Duperemove can also take input from the @command{fdupes} program.")
"0lfjrpv3z4h0knd3v94fijrw2zjba51mrp3mjqx2c98wr428l26f"))))
(build-system python-build-system)
(inputs
- (list w3m))
+ (list bash-minimal w3m))
(native-inputs
(list which
;; For tests.
@@ -973,8 +971,7 @@ Duperemove can also take input from the @command{fdupes} program.")
(w3mimgdisplay (string-append w3m
"/libexec/w3m/w3mimgdisplay")))
(wrap-program ranger
- `("W3MIMGDISPLAY_PATH" ":" prefix (,w3mimgdisplay)))
- #t)))
+ `("W3MIMGDISPLAY_PATH" ":" prefix (,w3mimgdisplay))))))
(replace 'check
;; The default check phase simply prints 'Ran 0 tests in 0.000s'.
(lambda* (#:key test-target #:allow-other-keys)
@@ -1042,12 +1039,13 @@ and its highly optimized now for efficient performance.")
(native-inputs
(list pkg-config swig python-3)) ; used to generate the Python bindings
(inputs
- `(("cryptsetup" ,cryptsetup)
- ("nss" ,nss)
- ("libblkid" ,util-linux "lib")
- ("lvm2" ,lvm2) ; for "-ldevmapper"
- ("glib" ,glib)
- ("gpgme" ,gpgme)))
+ (append
+ (cons cryptsetup (libcryptsetup-propagated-inputs))
+ (cons lvm2 (libdevmapper-propagated-inputs))
+ (list nss
+ (list util-linux "lib")
+ glib
+ gpgme)))
(arguments
`(#:tests? #f ; not sure how tests are supposed to pass, even when run manually
#:phases
@@ -1203,22 +1201,23 @@ to create devices with respective mappings for the ATARAID sets discovered.")
python-wrapper
util-linux))
(inputs
- (list btrfs-progs
- cryptsetup
- dosfstools
- dmraid
- eudev
- glib
- kmod
- libbytesize
- libyaml
- lvm2
- mdadm
- ndctl
- nss
- parted
- volume-key
- xfsprogs))
+ (append
+ (cons cryptsetup (libcryptsetup-propagated-inputs))
+ (list btrfs-progs
+ dosfstools
+ dmraid
+ eudev
+ glib
+ kmod
+ libbytesize
+ libyaml
+ lvm2
+ mdadm
+ ndctl
+ nss
+ parted
+ volume-key
+ xfsprogs)))
(home-page "https://github.com/storaged-project/libblockdev")
(synopsis "Library for manipulating block devices")
(description
diff --git a/gnu/packages/djvu.scm b/gnu/packages/djvu.scm
index 743fc7e284..01b1dbaf43 100644
--- a/gnu/packages/djvu.scm
+++ b/gnu/packages/djvu.scm
@@ -31,6 +31,7 @@
#:use-module (guix build-system python)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages gawk)
@@ -309,7 +310,7 @@ and white.")
`(#:modules ((guix build gnu-build-system)
((guix build python-build-system) #:prefix python:)
(guix build utils))
- #:imported-modules (,@%gnu-build-system-modules
+ #:imported-modules (,@%default-gnu-imported-modules
(guix build python-build-system))
#:test-target "test"
#:phases
@@ -346,7 +347,8 @@ and white.")
`("PATH" ":" prefix (,(string-append djvulibre "/bin"))))))))))
(native-inputs (list python-nose))
(inputs
- (list djvulibre
+ (list bash-minimal
+ djvulibre
minidjvu
python-gamera
python-pillow
@@ -380,7 +382,8 @@ and background layers of images, which can then be encoded into a DjVu file.")
(native-inputs
(list libxml2 python-nose python-pillow))
(inputs
- (list djvulibre
+ (list bash-minimal
+ djvulibre
ocrad
python-djvulibre
python-future
@@ -395,7 +398,7 @@ and background layers of images, which can then be encoded into a DjVu file.")
#:modules '((guix build gnu-build-system)
((guix build python-build-system) #:prefix python:)
(guix build utils))
- #:imported-modules `(,@%gnu-build-system-modules
+ #:imported-modules `(,@%default-gnu-imported-modules
(guix build python-build-system))
#:test-target "test"
#:phases
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index 36d3eb8b7e..802030b783 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -1045,7 +1045,8 @@ synthesis, and on-the-fly re-configuration.")
python-sphinx-rtd-theme
texinfo))
(inputs
- `(("fstrm" ,fstrm)
+ `(("bash" ,bash-minimal) ;for wrap-program
+ ("fstrm" ,fstrm)
("gnutls" ,gnutls)
("knot:lib" ,knot "lib")
("libuv" ,libuv)
diff --git a/gnu/packages/docbook.scm b/gnu/packages/docbook.scm
index c47d3db2c0..02cea45e97 100644
--- a/gnu/packages/docbook.scm
+++ b/gnu/packages/docbook.scm
@@ -27,8 +27,10 @@
(define-module (gnu packages docbook)
#:use-module (gnu packages)
+ #:use-module (gnu packages autotools)
#:use-module (gnu packages bash)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages groff)
#:use-module (gnu packages imagemagick)
#:use-module (gnu packages inkscape)
#:use-module (gnu packages tex)
@@ -36,31 +38,33 @@
#:use-module (gnu packages perl)
#:use-module (gnu packages python)
#:use-module (gnu packages base)
+ #:use-module (gnu packages web)
#:use-module (gnu packages web-browsers)
+ #:use-module (gnu packages xfig)
#:use-module (gnu packages xml)
#:use-module (guix gexp)
+ #:use-module (guix search-paths)
#:use-module (guix utils)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
- #:use-module ((guix build utils) #:select (alist-replace))
#:use-module (guix build-system copy)
#:use-module (guix build-system gnu)
- #:use-module (guix build-system trivial)
- #:use-module (guix build-system python))
+ #:use-module (guix build-system python)
+ #:use-module (srfi srfi-26))
-(define-public docbook-xml
+;; The fetch-plan, install-plan and phases for docbook-xml tend to vary
+;; between releases therefore we use a “template” package for the
+;; transformations that are common to these packages.
+(define* (docbook-xml-package source version)
+ "Return a package for a docbook-xml package version @var{version} and
+downloading from @var{source}, where @var{version} is a string and
+@var{source} is a @code{<origin>} record."
(package
(name "docbook-xml")
- (version "5.1")
- (source (origin
- (method url-fetch)
- (uri (string-append "https://docbook.org/xml/" version
- "/docbook-v" version "-os.zip"))
- (sha256
- (base32
- "0zqy9prj9wam9dn7v3mgr7ld1axqxdhgrmv06dviwg00ahv43wxk"))))
+ (version version)
+ (source source)
(build-system copy-build-system)
(arguments
(list
@@ -71,23 +75,27 @@
#~(modify-phases %standard-phases
(add-after 'unpack 'fix-permissions
(lambda _
- ;; XXX: These files do not need 0755 permission.
+ ;; These files do not need 0755 permission.
(for-each (cut chmod <> #o644) (find-files "."))))
(add-before 'install 'patch-catalog-xml
(lambda* (#:key inputs #:allow-other-keys)
(let ((xsltproc (search-input-file inputs "/bin/xsltproc"))
- (dtd-path (string-append #$output "/xml/dtd/docbook")))
- (invoke xsltproc "--nonet" "--noout"
- "--stringparam" "prefix" dtd-path
- "--output" "catalog.xml.new"
- #$(local-file
- (search-auxiliary-file "xml/patch-catalog-xml.xsl"))
- "catalog.xml")
- (rename-file "catalog.xml.new" "catalog.xml"))))
- (replace 'install
- (lambda _
- (let ((dtd-path (string-append #$output "/xml/dtd/docbook")))
- (copy-recursively "." dtd-path)))))))
+ (xslt-file #$(local-file
+ (search-auxiliary-file
+ "xml/patch-catalog-xml.xsl")))
+ ;; Avoid profile conflicts by installing to a
+ ;; versioned path.
+ (dest-path
+ (format #f "~a/xml/docbook/~a" #$output #$version)))
+ (for-each
+ (lambda (catalog)
+ (let ((catalog* (string-append catalog ".new")))
+ (invoke xsltproc "--nonet" "--novalid" "--noout"
+ "--stringparam" "prefix" dest-path
+ "--output" catalog*
+ xslt-file catalog)
+ (rename-file catalog* catalog)))
+ (find-files "." "catalog\\.xml$"))))))))
(native-inputs (list libxslt unzip))
(home-page "https://docbook.org")
(synopsis "DocBook XML DTDs for document authoring")
@@ -97,95 +105,241 @@ suited to books and papers about computer hardware and software (though it is
by no means limited to these applications.) This package provides XML DTDs.")
(license (license:x11-style "" "See file headers."))))
+(define-public docbook-xml-5.1
+ (let* ((version "5.1")
+ (source (origin
+ (method url-fetch/zipbomb)
+ (uri (string-append "https://docbook.org/xml/" version
+ "/docbook-v" version "-os.zip"))
+ (sha256
+ (base32
+ "0zqy9prj9wam9dn7v3mgr7ld1axqxdhgrmv06dviwg00ahv43wxk"))
+ (modules '((guix build utils)))
+ (snippet
+ ;; The .zip release mistakenly uses '5.1CR4' instead of
+ ;; '5.1' as intended by <https://docbook.org/xml/5.1/catalog.xml>.
+ #~(substitute* "schemas/catalog.xml"
+ (("5\\.1CR4") #$version)))))
+ (template (docbook-xml-package source version)))
+ (package
+ (inherit template)
+ (arguments
+ (let ((dest-dir (format #f "xml/docbook/~a/" version)))
+ (substitute-keyword-arguments (package-arguments template)
+ ;; XXX: A default value must be provided otherwise this
+ ;; substitution has no effect.
+ ((#:install-plan _ #f)
+ #~`(("schemas/" #$dest-dir)))))))))
+
+(define-public docbook-xml-5.0.1
+ (let* ((version "5.0.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://docbook.org/xml/" version
+ "/docbook-" version ".zip"))
+ (sha256
+ (base32
+ "1iz3hq1lqgnshvlz4j9gvh4jy1ml74qf90vqf2ikbq0h4i2xzybs"))))
+ (template (docbook-xml-package source version)))
+ (package
+ (inherit template)
+ (arguments
+ (let ((dest-dir (format #f "xml/docbook/~a/" version)))
+ (substitute-keyword-arguments (package-arguments template)
+ ((#:install-plan _ #f)
+ #~`(("catalog.xml" #$dest-dir)
+ ("docbook.nvdl" #$dest-dir)
+ ("dtd" #$dest-dir)
+ ("rng" #$dest-dir)
+ ("sch" #$dest-dir)
+ ("xsd" #$dest-dir)))))))))
+
+;; XXX: docbook-xml-4.x versions use the same #:install-plan but since the
+;; paths are versioned we can't use (inherit …).
+(define* (docbook-xml-4.x-package source version)
+ "Return a template for a docbook-xml-4.x package version @var{version} and
+downloading from @var{source}, where @var{version} is a string and
+@var{source} is a @code{<origin>} record."
+ (let ((base-template (docbook-xml-package source version)))
+ (package
+ (inherit base-template)
+ (arguments
+ (let* ((dest-dir (format #f "xml/docbook/~a/" version)))
+ (substitute-keyword-arguments (package-arguments base-template)
+ ((#:phases phases)
+ ;; Some programs, such as kdoctools, instead of using
+ ;; XML_CATALOG_FILES, prefer to use cmake to locate
+ ;; the DTDs for docbook-xml-4.x packages but
+ ;; since there's no agreed standard as to where these files
+ ;; should be placed, in practice the .cmake files
+ ;; end up searching for paths that are distribution specific.
+ #~(modify-phases #$phases
+ (add-after 'install 'symlink-alternate-path
+ (lambda _
+ ;; kdoctools searches under xml/dtd/docbook/
+ ;; which is the convention used by Nix.
+ (mkdir-p (string-append #$output "/xml/dtd"))
+ (symlink (string-append #$output "/" #$dest-dir)
+ (string-append #$output "/xml/dtd/docbook"))))))
+ ((#:install-plan _ #f)
+ #~`(("./" #$dest-dir
+ #:exclude-regexp ("ChangeLog$"
+ "README$"
+ "docbook\\.cat$"
+ "\\.txt$"))))))))))
+
(define-public docbook-xml-4.5
- (package
- (inherit docbook-xml)
- (version "4.5")
- (source (origin
- (method url-fetch/zipbomb)
- (uri (string-append "https://docbook.org/xml/" version
- "/docbook-xml-" version ".zip"))
- (sha256
- (base32
- "1d671lcjckjri28xfbf6dq7y3xnkppa910w1jin8rjc35dx06kjf"))))))
+ (let* ((version "4.5")
+ (source (origin
+ (method url-fetch/zipbomb)
+ (uri (string-append "https://docbook.org/xml/" version
+ "/docbook-xml-" version ".zip"))
+ (sha256
+ (base32
+ "1d671lcjckjri28xfbf6dq7y3xnkppa910w1jin8rjc35dx06kjf")))))
+ (docbook-xml-4.x-package source version)))
(define-public docbook-xml-4.4
- (package (inherit docbook-xml)
- (version "4.4")
- (source (origin
- (method url-fetch/zipbomb)
- (uri (string-append "https://docbook.org/xml/" version
- "/docbook-xml-" version ".zip"))
- (sha256
- (base32
- "141h4zsyc71sfi2zzd89v4bb4qqq9ca1ri9ix2als9f4i3mmkw82"))))))
+ (let* ((version "4.4")
+ (source (origin
+ (method url-fetch/zipbomb)
+ (uri (string-append "https://docbook.org/xml/" version
+ "/docbook-xml-" version ".zip"))
+ (sha256
+ (base32
+ "141h4zsyc71sfi2zzd89v4bb4qqq9ca1ri9ix2als9f4i3mmkw82")))))
+ (docbook-xml-4.x-package source version)))
(define-public docbook-xml-4.3
- (package (inherit docbook-xml)
- (version "4.3")
- (source (origin
- (method url-fetch/zipbomb)
- (uri (string-append "https://docbook.org/xml/" version
- "/docbook-xml-" version ".zip"))
- (sha256
- (base32
- "0r1l2if1z4wm2v664sqdizm4gak6db1kx9y50jq89m3gxaa8l1i3"))))))
+ (let* ((version "4.3")
+ (source (origin
+ (method url-fetch/zipbomb)
+ (uri (string-append "https://docbook.org/xml/" version
+ "/docbook-xml-" version ".zip"))
+ (sha256
+ (base32
+ "0r1l2if1z4wm2v664sqdizm4gak6db1kx9y50jq89m3gxaa8l1i3")))))
+ (docbook-xml-4.x-package source version)))
(define-public docbook-xml-4.2
- (package (inherit docbook-xml)
- (version "4.2")
- (source (origin
- (method url-fetch/zipbomb)
- (uri (string-append "https://docbook.org/xml/" version
- "/docbook-xml-" version ".zip"))
- (sha256
- (base32
- "18hgwvmywh6a5jh38szjmg3hg2r4v5lb6r3ydc3rd8cp9wg61i5c"))))))
+ (let* ((version "4.2")
+ (source (origin
+ (method url-fetch/zipbomb)
+ (uri (string-append "https://docbook.org/xml/" version
+ "/docbook-xml-" version ".zip"))
+ (sha256
+ (base32
+ "18hgwvmywh6a5jh38szjmg3hg2r4v5lb6r3ydc3rd8cp9wg61i5c")))))
+ (docbook-xml-4.x-package source version)))
(define-public docbook-xml-4.1.2
+ (let* ((version "4.1.2")
+ (source (origin
+ (method url-fetch/zipbomb)
+ (uri (string-append "https://docbook.org/xml/" version
+ "/docbkx412.zip"))
+ (sha256
+ (base32
+ "0wkp5rvnqj0ghxia0558mnn4c7s3n501j99q2isp3sp0ci069w1h"))))
+ (template (docbook-xml-4.x-package source version)))
+ (package
+ (inherit template)
+ (arguments
+ (substitute-keyword-arguments (package-arguments template)
+ ((#:phases phases)
+ #~(modify-phases #$phases
+ (add-after 'unpack 'copy-catalog-file
+ ;; docbook-xml-4.1.2 is unique in the fact that it doesn't come
+ ;; with a catalog.xml file, requiring it to be generated by hand
+ ;; from the docbook.cat SGML catalog. We could automatically
+ ;; generate it here at the cost of enlarging the package
+ ;; definition with a rudimentary (PEG) parser for the SGML
+ ;; catalog but this is overkill since this file is unlikely to
+ ;; change, therefore we ship a pre-generated catalog.xml.
+ (lambda _
+ (copy-file
+ #$(local-file
+ (search-auxiliary-file
+ "xml/docbook-xml/catalog-4.1.2.xml"))
+ "catalog.xml")))
+ (add-after 'patch-catalog-xml 'add-rewrite-entries
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((xmlcatalog (search-input-file inputs
+ "/bin/xmlcatalog"))
+ (dtd-path (format #f "~a/xml/docbook/~a"
+ #$output #$version)))
+ (for-each
+ (lambda (type)
+ (invoke xmlcatalog "--noout"
+ "--add" type
+ "http://www.oasis-open.org/docbook/xml/4.1.2/"
+ (string-append "file:" dtd-path "/")
+ "catalog.xml"))
+ (list "rewriteSystem" "rewriteURI")))))))))
+ (native-inputs
+ (modify-inputs (package-native-inputs template)
+ (prepend libxml2))))))
+
+(define-public docbook-mathml-1.0
(package
- (inherit docbook-xml)
- (version "4.1.2")
+ (name "docbook-mathml")
+ (version "1.0")
(source (origin
- (method url-fetch/zipbomb)
- (uri (string-append "https://docbook.org/xml/" version
- "/docbkx412.zip"))
+ (method url-fetch)
+ (uri
+ (string-append "https://www.oasis-open.org/docbook/xml/mathml/"
+ version "/dbmathml.dtd"))
(sha256
(base32
- "0wkp5rvnqj0ghxia0558mnn4c7s3n501j99q2isp3sp0ci069w1h"))))
+ "10vmyl29j829w4xn928rznh163pf47gyzbbjjwqrbg2bidfnk7vp"))))
+ (build-system copy-build-system)
(arguments
- (substitute-keyword-arguments (package-arguments docbook-xml)
- ((#:phases phases)
- #~(modify-phases #$phases
- (add-after 'unpack 'copy-catalog-file
- ;; docbook-xml-4.1.2 is unique in the fact that it doesn't come
- ;; with a catalog.xml file, requiring it to be generated by hand
- ;; from the docbook.cat SGML catalog. We could automatically
- ;; generate it here at the cost of enlarging the package
- ;; definition with a rudimentary (PEG) parser for the SGML
- ;; catalog but this is overkill since this file is unlikely to
- ;; change, therefore we ship a pre-generated catalog.xml.
+ (let ((target (format #f "xml/docbook/mathml/~a/" version)))
+ (list
+ #:modules '((guix build copy-build-system)
+ (guix build utils)
+ (sxml simple)
+ (srfi srfi-1))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'install 'generate-catalog.xml
(lambda _
- (copy-file
- #$(local-file
- (search-auxiliary-file
- "xml/docbook-xml/catalog-4.1.2.xml"))
- "catalog.xml")))
- (add-after 'patch-catalog-xml 'add-rewrite-entries
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((xmlcatalog (search-input-file inputs "/bin/xmlcatalog"))
- (dtd-path (string-append #$output "/xml/dtd/docbook")))
- (for-each
- (lambda (type)
- (invoke xmlcatalog "--noout"
- "--add" type
- "http://www.oasis-open.org/docbook/xml/4.1.2/"
- (string-append "file://" dtd-path "/")
- "catalog.xml"))
- (list "rewriteSystem" "rewriteURI")))))))))
- (native-inputs
- (modify-inputs (package-native-inputs docbook-xml)
- (prepend libxml2)))))
+ (let ((store-uri (string-append "file:"
+ #$output "/"
+ #$target "dbmathml.dtd")))
+ (call-with-output-file "catalog.xml"
+ (lambda (port)
+ (sxml->xml
+ `(*TOP*
+ (*PI* xml "version='1.0'")
+ (catalog (@ (xmlns "urn:oasis:names:tc:entity:xmlns:xml:catalog"))
+ (public (@ (publicId "-//OASIS//DTD DocBook MathML Module V1.0//EN")
+ (uri ,store-uri)))
+ ,@(map
+ (lambda (scheme)
+ `(system
+ (@ (systemId
+ ,(string-append scheme
+ "://www.oasis-open.org/docbook/xml/"
+ "mathml/1.0/dbmathml.dtd"))
+ (uri ,store-uri))))
+ '("http" "https"))))
+ port)))))))
+ #:install-plan
+ #~`(("catalog.xml" #$target)
+ ("dbmathml.dtd" #$target)))))
+ (propagated-inputs
+ ;; These must be propagated for the package to make sense.
+ ;; TODO: Package MathML2 DTD and propagate it as well.
+ (list docbook-xml-4.1.2))
+ (home-page
+ "https://www.oasis-open.org/docbook/xml/mathml/1.0/index.1.shtml")
+ (synopsis "MathML support for DocBook XML V4.1.2.")
+ (description "The DocBook MathML Module is an extension to DocBook XML
+V4.1.2 that adds support for MathML in equation markup.")
+ (license (license:non-copyleft "" "See file headers."))))
+
+(define-public docbook-xml docbook-xml-5.1)
;;; There's an issue in docbook-xsl 1.79.2 that causes manpages to be
;;; generated incorrectly and embed raw nroff syntax such as '.PP' when there
@@ -205,9 +359,16 @@ by no means limited to these applications.) This package provides XML DTDs.")
(url "https://github.com/docbook/xslt10-stylesheets")
(commit commit)))
(file-name (git-file-name name version))
- ;; Multiple .jar files are bundled with the sources.
(modules '((guix build utils)))
- (snippet '(for-each delete-file (find-files "." "\\.jar$")))
+ (snippet
+ #~(begin
+ ;; Multiple .jar files are bundled with the sources.
+ (for-each delete-file
+ (find-files "." "\\.jar$"))
+ ;; Do not build webhelp files, as they require a Saxon from
+ ;; 2005, which is not packaged in Guix.
+ (substitute* "xsl/Makefile"
+ ((" webhelp") ""))))
(sha256
(base32
"1bl8dwrcy7skrlh80fpsmiw045bv2j0aym231ikcv3hvm2pi98dj"))))
@@ -215,67 +376,123 @@ by no means limited to these applications.) This package provides XML DTDs.")
(arguments
(list
#:make-flags #~(list "XSLTENGINE=xsltproc")
+ #:modules '((guix build gnu-build-system)
+ (guix build utils)
+ (sxml simple))
#:phases
- #~(modify-phases %standard-phases
- (replace 'configure
- (lambda _
- ;; The build systems insist on a ~/.xmlc, and it is simpler to
- ;; create a dummy config file than to patch it into
- ;; submission.
- (setenv "HOME" "/tmp")
- (call-with-output-file "/tmp/.xmlc"
- (lambda (port)
- (format port "\
-<?xml version='1.0' encoding='utf-8'?> <!-- -*- nxml -*- -->
-<config>
- <java xml:id=\"bigmem\">
- <java-option name=\"Xmx512m\"/>
- </java>
- <xsltproc xml:id=\"xsltproc\" exec=\"xsltproc\"></xsltproc>
- <xmllint xml:id=\"xmllint\" exec=\"xmllint\"></xmllint>
-</config>\n")))
- (substitute* "xsl/Makefile"
- ;; Do not build webhelp files, as they require a Saxon from
- ;; 2005, which is not packaged in Guix.
- ((" webhelp") ""))))
- (add-before 'install 'generate-catalog.xml
- (lambda* (#:key make-flags #:allow-other-keys)
- (apply invoke "make" "-C" "xsl" "catalog.xml" make-flags)))
+ #~(let ((dest-path (format #f "~a/xml/xsl/~a-~a"
+ #$output #$name #$version)))
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda _
+ ;; The build systems insist on a ~/.xmlc, and it is simpler to
+ ;; create a dummy config file than to patch it into
+ ;; submission.
+ (setenv "HOME" "/tmp")
+ (call-with-output-file "/tmp/.xmlc"
+ (lambda (port)
+ (sxml->xml
+ '(*TOP*
+ (*PI* xml "version='1.0'")
+ (config
+ (java (@ (xml:id "bigmem"))
+ (java-options (@ (name "Xmx512m"))))
+ (xsltproc (@ (xml:id "xsltproc")
+ (exec "xsltproc")))
+ (xmllint (@ (xml:id "xmllint")
+ (exec "xmllint")))))
+ port)))))
+ (add-before 'install 'generate-catalog.xml
+ (lambda* (#:key make-flags #:allow-other-keys)
+ (apply invoke "make" "-C" "xsl" "catalog.xml" make-flags)))
+ (add-after 'generate-catalog.xml 'patch-catalog.xml
+ ;; Note: URI resolutions are not recursive.
+ ;; A rewrite rule from:
+ ;; 'http://docbook.sourceforge.net/release/xsl-ns/'
+ ;; to
+ ;; 'http://docbook.sourceforge.net/release/xsl/'
+ ;; will not trigger the rewrite rule that ultimately
+ ;; remaps to a /gnu/store URI, as can be seen by
+ ;; invoking:
+ ;; $ xmlcatalog "" \
+ ;; 'http://docbook.sourceforge.net/release/xsl-ns/current/'
+ ;; http://docbook.sourceforge.net/release/xsl/current/
+ ;; $ xmlcatalog "" \
+ ;; 'http://docbook.sourceforge.net/release/xsl/current/'
+ ;; file:/gnu/store/…/xml/xsl/…
+ ;;
+ ;; See XML Catalog specification, item 7.2.2. for
+ ;; details.
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((xmlcatalog (search-input-file inputs
+ "/bin/xmlcatalog"))
+ (catalog-file "xsl/catalog.xml")
+ (store-uri (string-append "file:" dest-path "/")))
+ ;; Remove /snapshot/ references.
+ (for-each
+ (lambda (scheme)
+ (invoke xmlcatalog "--noout"
+ "--del"
+ (string-append
+ scheme
+ "://cdn.docbook.org/release/xsl/snapshot/")
+ catalog-file))
+ (list "http" "https"))
+ ;; Rewrite both http:// and https:// URIs.
+ (for-each
+ (lambda (path)
+ (for-each
+ (lambda (scheme)
+ (for-each
+ (lambda (entry-type)
+ (let ((uri (string-append scheme "://" path)))
+ (invoke xmlcatalog "--noout"
+ "--add" entry-type uri store-uri
+ catalog-file)))
+ (list "rewriteSystem" "rewriteURI")))
+ (list "http" "https")))
+ (list #$(format #f "cdn.docbook.org/release/xsl/~a/"
+ base-version)
+ "cdn.docbook.org/release/xsl/current/"
+ ;; Re-add the no longer present compatibility entries for
+ ;; v.1.79.1 or earlier URIs.
+ "docbook.sourceforge.net/release/xsl/current/"
+ ;; Originally the
+ ;; "http://docbook.sourceforge.net/release/xsl/"
+ ;; URI referred to the non-namespaced docbook-xsl,
+ ;; with its namespaced version using a URI differing in
+ ;; the path component as '…/xsl-ns/'.
+ ;; At some point the namespaced version was made the
+ ;; canonical docbook-xsl package whilst preserving the
+ ;; original URI.
+ ;;
+ ;; For compatibility with XML files that still specify
+ ;; the legacy namespaced docbook-xsl URIs we re-add them
+ ;; here.
+ "docbook.sourceforge.net/release/xsl-ns/current/")))))
(replace 'install
(lambda _
- (let ((xml (string-append #$output "/xml/xsl/"
- #$name "-" #$version))
- (select-rx (make-regexp
+ (let ((select-rx (make-regexp
"(\\.xml$|\\.xsl$|\\.dtd$|\\.ent$)")))
;; Install catalog.
(chdir "xsl")
- (install-file "catalog.xml" xml)
- (install-file "VERSION.xsl" xml)
- (substitute* (string-append xml "/catalog.xml")
- ;; Re-add the no longer present compatibility entries.
- ((".*</catalog>.*" anchor)
- (string-append "\
- <!-- Also support old URI of v1.79.1 or earlier -->
- <rewriteURI uriStartString=\"http://docbook.sourceforge.net\
-/release/xsl/current/\" rewritePrefix=\"./\"/>
- <rewriteSystem systemIdStartString=\"http://docbook.sourceforge.net\
-/release/xsl/current/\" rewritePrefix=\"./\"/>\n" anchor))
- (("/snapshot/")
- (string-append "/" #$base-version "/"))
- (("rewritePrefix=\"./")
- (string-append "rewritePrefix=\"file://" xml "/")))
+ (install-file "catalog.xml" dest-path)
+ (install-file "VERSION.xsl" dest-path)
;; Install style sheets.
- (for-each (lambda (dir)
- (for-each (lambda (f)
- (install-file
- f (string-append xml "/" (dirname f))))
- (find-files dir select-rx)))
- '("assembly" "common" "eclipse" "epub" "epub3" "fo"
- "highlighting" "html" "htmlhelp" "javahelp" "lib"
- "manpages" "params" "profiling" "roundtrip"
- "template" "website"
- "xhtml" "xhtml-1_1" "xhtml5"))))))))
- (native-inputs (list libxml2
+ (for-each
+ (lambda (dir)
+ (for-each (lambda (f)
+ (install-file
+ f
+ (string-append dest-path "/" (dirname f))))
+ (find-files dir select-rx)))
+ '("assembly" "common" "eclipse" "epub" "epub3" "fo"
+ "highlighting" "html" "htmlhelp" "javahelp" "lib"
+ "manpages" "params" "profiling" "roundtrip"
+ "template" "website"
+ "xhtml" "xhtml-1_1" "xhtml5")))))))))
+ (native-inputs (list docbook-xml-4.4 ; for tests
+ libxml2
libxslt
perl
perl-xml-xpath))
@@ -285,64 +502,6 @@ by no means limited to these applications.) This package provides XML DTDs.")
"This package provides XSL style sheets for DocBook.")
(license (license:x11-style "" "See 'COPYING' file.")))))
-(define-public docbook-xsl-1.79.1
- (package
- (name "docbook-xsl")
- (version "1.79.1")
- (source (origin
- (method url-fetch)
- ;; At the time, the non namespaced version was still the
- ;; default; our latest docbook-xsl is namespaced, so for
- ;; consistency preserves this property for older versions too.
- (uri (string-append "mirror://sourceforge/docbook/"
- name "-ns/" version "/"
- name "-ns-" version ".tar.bz2"))
- (sha256
- (base32
- "170ggf5dgjar65kkn5n33kvjr3pdinpj66nnxfx8b2avw0k91jin"))))
- (build-system copy-build-system)
- (outputs '("out" "doc"))
- (arguments
- (list
- #:phases
- #~(modify-phases %standard-phases
- ;; XXX: The copy-build-system doesn't seem to allow installing to a
- ;; different output.
- (replace 'install
- (lambda _
- (let ((xml (string-append #$output "/xml/xsl/" #$name "-" #$version))
- (doc (string-append #$output:doc
- "/share/doc/" #$name "-" #$version))
- (select-rx (make-regexp
- "(\\.xml$|\\.xsl$|\\.dtd$|\\.ent$)")))
- ;; Install catalog.
- (install-file "catalog.xml" xml)
- (install-file "VERSION.xsl" xml)
- (substitute* (string-append xml "/catalog.xml")
- (("rewritePrefix=\"./")
- (string-append "rewritePrefix=\"file://" xml "/")))
- ;; Install style sheets.
- (for-each (lambda (dir)
- (for-each (lambda (f)
- (install-file
- f (string-append xml "/" (dirname f))))
- (find-files dir select-rx)))
- '("assembly" "common" "eclipse" "epub" "epub3" "fo"
- "highlighting" "html" "htmlhelp" "javahelp" "lib"
- "manpages" "params" "profiling" "roundtrip"
- "template" "website"
- "xhtml" "xhtml-1_1" "xhtml5"))
- ;; Install documentation.
- (install-file "NEWS" doc)
- (install-file "RELEASE-NOTES.html" doc)
- (copy-recursively "slides" doc)
- (copy-recursively "webhelp" doc)))))))
- (home-page "https://docbook.org")
- (synopsis "DocBook XSL namespaced style sheets for document authoring")
- (description "This package provides the @emph{namespaced} XSL style sheets
-for DocBook.")
- (license (license:x11-style "" "See 'COPYING' file."))))
-
(define-public docbook-dsssl
(package
(name "docbook-dsssl")
@@ -354,34 +513,28 @@ for DocBook.")
name "-" version ".tar.bz2"))
(sha256
(base32
- "1g72y2yyc2k89kzs0lvrb9n7hjayw1hdskfpplpz97pf1c99wcig"))))
- (build-system trivial-build-system)
+ "1g72y2yyc2k89kzs0lvrb9n7hjayw1hdskfpplpz97pf1c99wcig"))
+ (snippet
+ #~(begin
+ (chmod "bin/collateindex.pl" #o755)
+ ;; Remove empty directories.
+ (rmdir "doc")
+ (rmdir "docsrc")))))
+ (build-system copy-build-system)
(outputs '("out" "doc"))
(arguments
- `(#:modules ((guix build utils))
- #:builder
- (begin
- (use-modules (guix build utils))
- (let ((source (assoc-ref %build-inputs "source"))
- (dtd (string-append (assoc-ref %outputs "out")
- "/sgml/dtd/docbook"))
- (docbook-dsssl-doc (assoc-ref %build-inputs "docbook-dsssl-doc"))
- (doc (assoc-ref %outputs "doc"))
- (tar (assoc-ref %build-inputs "tar"))
- (bzip2 (assoc-ref %build-inputs "bzip2")))
- (setenv "PATH" (string-append tar "/bin" ":" bzip2 "/bin"))
- (mkdir-p dtd)
- (invoke "tar" "-xf" source "-C" dtd)
- ;; The doc output contains 1.4 MiB of HTML documentation.
- (symlink docbook-dsssl-doc doc)))))
+ (list
+ #:install-plan
+ #~`(("./" "sgml/dtd/docbook/" #:exclude ("bin"))
+ ("bin/collateindex.pl" "bin/")
+ ("bin/collateindex.pl.1" "share/man/man1/")
+ (#$(this-package-input "docbook-dsssl-doc") "./" #:output "doc"))))
(inputs
- (list docbook-dsssl-doc))
- (native-inputs
- (list bzip2 tar))
+ (list perl docbook-dsssl-doc))
(home-page "https://docbook.org/")
(synopsis "DSSSL style sheets for DocBook")
(description "This package provides DSSSL style sheets for DocBook.")
- (license (license:non-copyleft "file://README"))))
+ (license (license:non-copyleft "file:/README"))))
;;; Private variable, used as the 'doc' output of the docbook-dsssl package.
(define docbook-dsssl-doc
@@ -396,65 +549,54 @@ for DocBook.")
(sha256
(base32
"1plp5ngc96pbna4rwglp9glcadnirbm3hlcjb4gjvq1f8biic9lz"))))
- (build-system trivial-build-system)
+ (build-system copy-build-system)
(arguments
- `(#:modules ((guix build utils))
- #:builder
- (begin
- (use-modules (guix build utils))
- (let ((source (assoc-ref %build-inputs "source"))
- (docdir (string-append (assoc-ref %outputs "out")
- "/share/doc/" "docbook-dsssl-" ,version))
- (tar (assoc-ref %build-inputs "tar"))
- (bzip2 (assoc-ref %build-inputs "bzip2")))
- (setenv "PATH" (string-append tar "/bin" ":" bzip2 "/bin"))
- (mkdir-p docdir)
- ;; Extract the "doc" subdirectory.
- (invoke "tar" "-xf" source "--strip-components=2"
- "--no-same-owner" "-C" docdir
- (string-append "docbook-dsssl-" ,version "/doc"))))))
- (native-inputs
- `(("bzip2" ,bzip2)
- ("tar" ,tar)))
+ (list
+ #:install-plan
+ #~`(("doc/" #$(string-append "/share/doc/docbook-dsssl-" version)))))
(home-page "https://docbook.org/")
(synopsis "DocBook DSSSL style sheets documentation")
(description "Documentation for the DocBook DSSSL style sheets.")
- (license (license:non-copyleft "file://doc/LEGALNOTICE.htm"))))
+ (license (license:non-copyleft "file:/doc/LEGALNOTICE.htm"))))
(define-public docbook-sgml-4.2
(package
(name "docbook-sgml")
(version "4.2")
(source (origin
- (method url-fetch)
+ (method url-fetch/zipbomb)
(uri (string-append
"https://www.oasis-open.org/docbook/sgml/4.2/docbook-"
version ".zip"))
(sha256
(base32
"1hrm4qmmzi285bkxkc74lxvjvw2gbl7ycbaxhv31h9rl9g4x5sv7"))))
- (build-system trivial-build-system)
+ (build-system copy-build-system)
(arguments
- '(#:modules ((guix build utils))
- #:builder
- (begin
- (use-modules (guix build utils))
- (let ((source (assoc-ref %build-inputs "source"))
- (iso-entities-dir (string-append
- (assoc-ref %build-inputs "iso-8879-entities")))
- (unzip (string-append (assoc-ref %build-inputs "unzip")
- "/bin/unzip"))
- (dtd (string-append (assoc-ref %outputs "out")
- "/sgml/dtd/docbook")))
- ;; Extract the sources.
- (mkdir-p dtd)
- (chdir dtd)
- (invoke unzip source)
- ;; Reference the ISO 8879 character entities.
- ;; e.g. "iso-lat1.gml" --> "<iso-entities-dir>/ISOlat1"
- (substitute* "docbook.cat"
- (("\"iso-(.*)\\.gml\"" _ name)
- (string-append "\"" iso-entities-dir "/ISO" name "\"")))))))
+ (list
+ #:modules '((guix build copy-build-system)
+ (guix build utils)
+ (srfi srfi-26))
+ #:install-plan
+ #~`(("./" "sgml/dtd/docbook"
+ #:exclude-regexp ("catalog\\.xml$"
+ "ChangeLog$"
+ "README$"
+ "\\.txt$")))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'fix-permissions
+ (lambda _
+ (for-each (cut chmod <> #o644) (find-files "."))))
+ (add-before 'install 'patch-iso-entities
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; Reference the ISO 8879 character entities.
+ ;; e.g. "iso-lat1.gml" --> "<iso-entities-dir>/ISOlat1"
+ (let ((iso-entities-dir
+ (assoc-ref %build-inputs "iso-8879-entities")))
+ (substitute* "docbook.cat"
+ (("\"iso-(.*)\\.gml\"" _ name)
+ (string-append "\"" iso-entities-dir "/ISO" name "\"")))))))))
(native-inputs
(list unzip))
(inputs
@@ -469,7 +611,7 @@ for DocBook.")
(inherit docbook-sgml-4.2)
(version "4.1")
(source (origin
- (method url-fetch)
+ (method url-fetch/zipbomb)
(uri (string-append "https://www.oasis-open.org/docbook/sgml/"
version "/docbk41.zip"))
(sha256
@@ -483,7 +625,7 @@ for DocBook.")
(inherit docbook-sgml)
(version "3.1")
(source (origin
- (method url-fetch)
+ (method url-fetch/zipbomb)
(uri (string-append "https://www.oasis-open.org/docbook/sgml/"
version "/docbk31.zip"))
(sha256
@@ -496,23 +638,13 @@ for DocBook.")
(name "iso-8879-entities")
(version "0.0") ;no proper version
(source (origin
- (method url-fetch)
- (uri "http://www.oasis-open.org/cover/ISOEnts.zip")
+ (method url-fetch/zipbomb)
+ (uri "https://www.oasis-open.org/cover/ISOEnts.zip")
(sha256
(base32
"1clrkaqnvc1ja4lj8blr0rdlphngkcda3snm7b9jzvcn76d3br6w"))))
- (build-system trivial-build-system)
- (arguments
- '(#:modules ((guix build utils))
- #:builder
- (begin
- (use-modules (guix build utils))
- (let ((source (assoc-ref %build-inputs "source"))
- (unzip (string-append (assoc-ref %build-inputs "unzip")
- "/bin/unzip"))
- (out (string-append (assoc-ref %outputs "out"))))
- (invoke unzip source "-d" out)))))
- (native-inputs `(("unzip" ,unzip)))
+ (build-system copy-build-system)
+ (native-inputs (list unzip))
(home-page "https://www.oasis-open.org/")
(synopsis "ISO 8879 character entities")
(description "ISO 8879 character entities that are typically used in
@@ -530,56 +662,121 @@ the in DocBook SGML DTDs.")
version ".tar.bz2"))
(sha256
(base32
- "0yd09nypswy3q4scri1dg7dr99d7gd6r2dwx0xm81l9f4y32gs0n"))))
+ "0yd09nypswy3q4scri1dg7dr99d7gd6r2dwx0xm81l9f4y32gs0n"))
+ (patches
+ (search-patches "dblatex-inkscape-1.0.patch"))))
+ (outputs '("out" "doc"))
(build-system python-build-system)
- ;; TODO: Add fig2dev for fig2dev utility.
- (inputs
- `(("texlive" ,(texlive-updmap.cfg (list texlive-anysize
- texlive-appendix
- texlive-changebar
- texlive-fancybox
- texlive-fancyvrb
- texlive-float
- texlive-footmisc
- texlive-jknapltx
- texlive-listings
- texlive-multirow
- texlive-overpic
- texlive-pdfpages
- texlive-refcount
- texlive-rsfs
- texlive-stmaryrd
- texlive-subfigure
- texlive-titlesec
- texlive-wasysym)))
- ("imagemagick" ,imagemagick) ;for convert
- ("inkscape" ,inkscape/stable) ;for svg conversion
- ("docbook" ,docbook-xml)
- ("libxslt" ,libxslt))) ;for xsltproc
(arguments
- `( ;; Using setuptools causes an invalid "package_base" path in
- ;; out/bin/.dblatex-real due to a missing leading '/'. This is caused
- ;; by dblatex's setup.py stripping the root path when creating the
- ;; script. (dblatex's setup.py still uses distutils and thus has to
- ;; create the script by itself. The feature for creating scripts is one
- ;; of setuptools' features.)
- ;; See this thread for details:
- ;; https://lists.gnu.org/archive/html/guix-devel/2016-12/msg00030.html
- #:use-setuptools? #f
- #:tests? #f ;no 'test' command
- #:phases
- (modify-phases %standard-phases
- (add-after 'wrap 'set-path
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- ;; dblatex executes helper programs at runtime.
- (wrap-program (string-append out "/bin/dblatex")
- `("PATH" ":" prefix
- ,(map (lambda (input)
- (string-append (assoc-ref inputs input)
- "/bin"))
- '("libxslt" "texlive"
- "imagemagick" "inkscape"))))))))))
+ (list
+ ;; Using setuptools causes an invalid "package_base" path in
+ ;; out/bin/.dblatex-real due to a missing leading '/'. This is caused
+ ;; by dblatex's setup.py stripping the root path when creating the
+ ;; script. (dblatex's setup.py still uses distutils and thus has to
+ ;; create the script by itself. The feature for creating scripts is one
+ ;; of setuptools' features.)
+ ;; See this thread for details:
+ ;; https://lists.gnu.org/archive/html/guix-devel/2016-12/msg00030.html
+ #:use-setuptools? #f
+ #:tests? #f ;no test suite
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'install 'move-doc
+ (lambda _
+ (let ((old (string-append #$output "/share/doc"))
+ (new (string-append #$output:doc "/share/doc")))
+ (mkdir-p (dirname new))
+ (rename-file old new))))
+ (add-after 'wrap 'wrap-dblatex
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((path
+ (search-path-as-list
+ '("bin")
+ '#$(map (cut this-package-input <>)
+ (list "libxslt" "imagemagick" "inkscape"
+ "fig2dev" "texlive-bin")))))
+ ;; dblatex executes helper programs at runtime.
+ (wrap-program (string-append #$output "/bin/dblatex")
+ `("PATH" ":" prefix ,path)
+ `("GUIX_TEXMF" prefix (,(getenv "GUIX_TEXMF")))))))
+ (add-after 'check 'check-wrap
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (unsetenv "GUIX_TEXMF")
+ (invoke/quiet (string-append #$output "/bin/dblatex")
+ "--quiet" "tests/mathml/mmltest2.xml")))))))
+ (native-inputs (list docbook-mathml-1.0))
+ (inputs
+ (list bash-minimal
+ texlive-bin
+ (texlive-updmap.cfg (list texlive-amsmath
+ texlive-anysize
+ texlive-appendix
+ texlive-auxhook
+ texlive-bigintcalc
+ texlive-bin
+ texlive-bitset
+ texlive-bookmark
+ texlive-changebar
+ texlive-colortbl
+ texlive-courier
+ texlive-eepic
+ texlive-epstopdf-pkg
+ texlive-eso-pic
+ texlive-etexcmds
+ texlive-fancybox
+ texlive-fancyhdr
+ texlive-fancyvrb
+ texlive-float
+ texlive-footmisc
+ texlive-gettitlestring
+ texlive-graphics
+ texlive-graphics-cfg
+ texlive-helvetic
+ texlive-hycolor
+ texlive-hyperref
+ texlive-infwarerr
+ texlive-intcalc
+ texlive-jknapltx
+ texlive-kpathsea
+ texlive-kvdefinekeys
+ texlive-kvoptions
+ texlive-kvsetkeys
+ texlive-l3backend
+ texlive-latex
+ texlive-latex-bin
+ texlive-letltxmacro
+ texlive-listings
+ texlive-ltxcmds
+ texlive-multirow
+ texlive-overpic
+ texlive-pdfescape
+ texlive-pdflscape
+ texlive-pdfpages
+ texlive-pdftexcmds
+ texlive-psnfss
+ texlive-refcount
+ texlive-rerunfilecheck
+ texlive-rsfs
+ texlive-stmaryrd
+ texlive-subfigure
+ texlive-symbol
+ texlive-times
+ texlive-titlesec
+ texlive-tools
+ texlive-uniquecounter
+ texlive-url
+ texlive-wasysym
+ texlive-zapfding))
+ fig2dev
+ imagemagick ;for convert
+ inkscape ;for svg conversion
+ docbook-xml
+ libxslt)) ;for xsltproc
+ ;; lib/dbtexmf/xslt/4xslt.py shows that this package
+ ;; makes use of XML_CATALOG_FILES and also invokes
+ ;; xsltproc.
+ (native-search-paths %libxslt-search-paths)
(home-page "https://dblatex.sourceforge.net")
(synopsis "DocBook to LaTeX Publishing")
(description
@@ -598,8 +795,9 @@ DB2LaTeX.")
(define-public dblatex/stable
(hidden-package
(package/inherit dblatex
- (inputs (alist-replace "imagemagick" `(,imagemagick/stable)
- (package-inputs dblatex))))))
+ (inputs (modify-inputs (package-inputs dblatex)
+ (replace "imagemagick" imagemagick/stable)
+ (replace "inkscape" inkscape/stable))))))
(define-public docbook-utils
(package
@@ -613,45 +811,47 @@ DB2LaTeX.")
version ".orig.tar.gz"))
(sha256
(base32
- "1scj5vgw1xz872pq54a89blcxqqm11p90yzv8a9mqq57x27apyj8"))))
+ "1scj5vgw1xz872pq54a89blcxqqm11p90yzv8a9mqq57x27apyj8"))
+ (patches
+ (search-patches "docbook-utils-documentation-edits.patch"
+ "docbook-utils-escape-characters.patch"
+ "docbook-utils-remove-jade-sp.patch"
+ "docbook-utils-respect-refentry-for-name.patch"
+ "docbook-utils-use-date-element.patch"
+ "docbook-utils-source-date-epoch.patch"))
+ (modules '((guix build utils)))
+ (snippet
+ #~(begin
+ ;; Patch build system.
+ (substitute* (find-files "." "\\.(in|am)$")
+ ;; Do not hard-code SGML_CATALOG_FILES.
+ ((".*SGML_CATALOG_FILES=/etc/sgml/catalog.*") ""))
+
+ ;; Do not override the SGML_CATALOG_FILES environment
+ ;; variable.
+ (substitute* "bin/jw.in"
+ ((".*SGML_CATALOG_FILES=`find.*")
+ "")
+ (("SGML_CATALOG_FILES=`echo.*")
+ ":\n")
+ (("SGML_CATALOG_FILES=\"\"")
+ ":")
+ (("\\bwhich\\b")
+ "command -v"))
+
+ ;; Locate lynx, links or w3m from the PATH, not from
+ ;; /usr/bin.
+ (substitute* "backends/txt"
+ (("CONVERT=/usr/bin/")
+ "CONVERT=")
+ (("\\[ -x /usr/bin/([^ ]+) \\]" _ command)
+ (format #f "command -v ~a > /dev/null" command)))
+
+ ;; This forces autoreconf to be invoked, needed for patches
+ ;; to be effective.
+ (delete-file "configure")))))
+ (native-inputs (list autoconf automake libtool))
(build-system gnu-build-system)
- (arguments
- `(#:phases (modify-phases %standard-phases
- (add-after 'unpack 'patch-build-system
- (lambda _
- (substitute* (find-files "." "\\.in$")
- ;; Do not hard-code SGML_CATALOG_FILES.
- ((".*SGML_CATALOG_FILES=/etc/sgml/catalog.*") "")
- ;; Use OpenSP and OpenJade.
- (("\\bjade\\b")
- "openjade")
- (("\\bnsgmls\\b")
- "onsgmls"))
- #t))
- (add-after 'unpack 'patch-jw.in
- ;; Do not override the SGML_CATALOG_FILES environment
- ;; variable.
- (lambda _
- (substitute* "bin/jw.in"
- ((".*SGML_CATALOG_FILES=`find.*")
- "")
- (("SGML_CATALOG_FILES=`echo.*")
- ":\n")
- (("SGML_CATALOG_FILES=\"\"")
- ":")
- (("\\bwhich\\b")
- "command -v"))
- #t))
- (add-after 'unpack 'patch-txt-backend
- (lambda _
- ;; Locate lynx, links or w3m from the PATH, not from
- ;; /usr/bin.
- (substitute* "backends/txt"
- (("CONVERT=/usr/bin/")
- "CONVERT=")
- (("\\[ -x /usr/bin/([^ ]+) \\]" dummy command)
- (string-append "command -v " command " > /dev/null")))
- #t)))))
;; Propagated for convenience. All these tools are used at run time to
;; provide the complete functionality of the docbook-utils commands.
(propagated-inputs
@@ -672,15 +872,22 @@ Convert a SGML DocBook file to other formats such as Hyper Text Markup
Language (HTML), Rich Text Format (RTF), PostScript (PS), man, Portable
Document Format (PDF), TeX, Texinfo or plain text (txt). It can be used
more conveniently via the following wrappers:
-@itemx docbook2dvi Convert a SGML DocBook file to the DVI format.
-@itemx docbook2html Convert a SGML DocBook file to an HTML document.
-@itemx docbook2man Convert a SGML DocBook file a man page.
-@itemx docbook2pdf Convert a SGML DocBook file to a PDF document.
-@itemx docbook2ps Convert a SGML DocBook file to a PS document.
-@itemx docbook2rtf Convert a SGML DocBook file to a RTF document.
-@itemx docbook2tex Convert a SGML DocBook file to a TeX document.
-@itemx docbook2texi Convert a SGML DocBook file to a Texinfo document.
-@itemx docbook2txt Convert a SGML DocBook file to a plain text document.
+@table @command
+@item docbook2dvi
+Convert a SGML DocBook file to the DVI format.
+@item docbook2html
+Convert a SGML DocBook file to an HTML document.
+@item docbook2man
+Convert a SGML DocBook file a man page.
+@item docbook2pdf
+@itemx docbook2ps
+@itemx docbook2rtf
+@itemx docbook2tex
+@itemx docbook2texi
+Convert a SGML DocBook file to a PDF/PS/RTF/TeX document.
+@item docbook2txt
+Convert a SGML DocBook file to a plain text document.
+@end table
@item sgmldiff
Detect the differences in markup between two SGML files.
@end table")
@@ -696,66 +903,67 @@ Detect the differences in markup between two SGML files.
version "/docbook2X-" version ".tar.gz"))
(sha256
(base32
- "0ifwzk99rzjws0ixzimbvs83x6cxqk1xzmg84wa1p7bs6rypaxs0"))))
+ "0ifwzk99rzjws0ixzimbvs83x6cxqk1xzmg84wa1p7bs6rypaxs0"))
+ (patches
+ (search-patches "docbook2x-filename-handling.patch"
+ "docbook2x-fix-synopsis.patch"
+ "docbook2x-manpage-typo.patch"
+ "docbook2x-preprocessor-declaration.patch"
+ "docbook2x-static-datadir-evaluation.patch"))
+ (modules '((guix build utils)))
+ (snippet
+ ;; Fix a failing test (maybe it worked with old texinfo?)
+ #~(begin
+ (substitute* "test/complete-manuals/at1.xml"
+ (("<bridgehead>")
+ "<bridgehead renderas=\"sect2\">"))
+ ;; Force a new autoreconf run.
+ (delete-file "configure")))))
+ (outputs '("out" "doc"))
(build-system gnu-build-system)
- (inputs
- (list bash-minimal
- docbook-xml-4.5
- perl
- perl-xml-namespacesupport
- perl-xml-parser
- perl-xml-sax
- perl-xml-sax-base
- texinfo
- libxslt))
(arguments
(list
+ #:make-flags ''("AM_MAKEINFOHTMLFLAGS=\"--no-split\"")
+ #:modules '((guix build gnu-build-system)
+ (guix build utils)
+ (srfi srfi-26))
#:phases
#~(modify-phases %standard-phases
- (add-after 'configure 'patch-sources
- (lambda* (#:key inputs #:allow-other-keys)
- ;; Fix failed substitution in config.pl
- (substitute* "perl/config.pl"
- (("\\$\\{prefix\\}")
- #$output))
- ;; Fix a failing test (maybe it worked with old texinfo?)
- (substitute* "test/complete-manuals/at1.xml"
- (("<bridgehead>")
- "<bridgehead renderas=\"sect2\">"))
- ;; Patch all the tests use DocBook 4.5
- (substitute* (find-files "test" "\\.xml$")
- (("\"-//OASIS//DTD DocBook XML V4\\..+//EN\"")
- "\"-//OASIS//DTD DocBook XML V4.5//EN\"")
- (("\"http://www\\.oasis-open\\.org/docbook/xml/4\\..+/docbookx.dtd\"")
- "\"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd\""))
- ;; Set XML catalogs for tests to pass
- (setenv "XML_CATALOG_FILES"
- (string-append (assoc-ref inputs "docbook-xml")
- "/xml/dtd/docbook/catalog.xml"))))
+ (add-before 'build 'clean
+ (lambda _
+ (invoke "make" "clean")))
+ (add-after 'install 'move-doc
+ (lambda _
+ (let* ((old (string-append #$output "/share/doc"))
+ (new (string-append #$output:doc "/share/doc")))
+ (mkdir-p (dirname new))
+ (rename-file old new))))
(add-after 'install 'wrap-programs
(lambda* (#:key inputs outputs #:allow-other-keys)
- (let* ((programs
- (map (lambda (p)
- (search-input-file outputs
- (string-append "bin/" p)))
- '("db2x_manxml" "db2x_texixml" "db2x_xsltproc"
- "docbook2man" "docbook2texi")))
- (perl5lib
- '#$(map (lambda (i)
- (file-append (this-package-input i)
- "/lib/perl5/site_perl"))
- '("perl-xml-namespacesupport"
- "perl-xml-parser"
- "perl-xml-sax"
- "perl-xml-sax-base")))
- (xml-catalog-files
- (list (search-input-file
- inputs "xml/dtd/docbook/catalog.xml"))))
+ (let ((programs
+ (map (lambda (p)
+ (search-input-file outputs
+ (string-append "bin/" p)))
+ '("db2x_manxml" "db2x_texixml" "db2x_xsltproc"
+ "docbook2man" "docbook2texi")))
+ (perl5lib
+ (search-path-as-list
+ '("/lib/perl5/site_perl")
+ (map (cut assoc-ref inputs <>)
+ '("perl-xml-namespacesupport"
+ "perl-xml-parser"
+ "perl-xml-sax"
+ "perl-xml-sax-base")))))
(map (lambda (program)
(wrap-program program
- `("PERL5LIB" ":" prefix ,perl5lib)
- `("XML_CATALOG_FILES" " " prefix ,xml-catalog-files)))
+ `("PERL5LIB" ":" prefix ,perl5lib)))
programs))))
+ (add-after 'install 'sgml-check
+ ;; This is not covered by 'make check'.
+ ;; Test that 'sgml2xml-isoent' works.
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "make" "installcheck"))))
(add-after 'install 'create-symlinks
(lambda _
;; Create db2x_* symlinks to satisfy some configure scripts
@@ -765,6 +973,23 @@ Detect the differences in markup between two SGML files.
(symlink prog (string-append #$output
"/bin/db2x_" prog)))
'("docbook2man" "docbook2texi")))))))
+ (inputs
+ (list bash-minimal
+ opensp
+ perl
+ perl-xml-namespacesupport
+ perl-xml-parser
+ perl-xml-sax
+ perl-xml-sax-base
+ texinfo
+ libxslt))
+ (native-inputs
+ (list autoconf automake libtool
+ tidy-html
+ ;; For tests
+ docbook-xml-4.1.2 docbook-xml-4.2 docbook-xml-4.4
+ groff-minimal libxml2))
+ (native-search-paths %libxslt-search-paths)
(home-page "https://docbook2x.sourceforge.net")
(synopsis "Convert DocBook to man page and Texinfo format")
(description
diff --git a/gnu/packages/docker.scm b/gnu/packages/docker.scm
index b18de182fe..b650e47443 100644
--- a/gnu/packages/docker.scm
+++ b/gnu/packages/docker.scm
@@ -344,7 +344,7 @@ built-in registry server of Docker.")
(guix build union)
(guix build utils))
#:imported-modules
- `(,@%gnu-build-system-modules
+ `(,@%default-gnu-imported-modules
(guix build union)
(guix build go-build-system))
#:phases
diff --git a/gnu/packages/documentation.scm b/gnu/packages/documentation.scm
index 12fbaf1d0c..ee3294a5c8 100644
--- a/gnu/packages/documentation.scm
+++ b/gnu/packages/documentation.scm
@@ -185,7 +185,7 @@ markup) can be customized and extended by the user.")
(define-public doxygen
(package
(name "doxygen")
- (version "1.9.5")
+ (version "1.9.8")
(home-page "https://www.doxygen.nl/")
(source (origin
(method url-fetch)
@@ -196,7 +196,7 @@ markup) can be customized and extended by the user.")
".src.tar.gz")))
(sha256
(base32
- "1v1f9cp5lyymg7xmw0ldnzi7ql8agbaqam1xdyljk0lrbnrm9d2m"))))
+ "0qjgw7bnx668hpi4r8m366vsq118s9365zf8z4x5yjrqx0ld5qq5"))))
(build-system cmake-build-system)
(native-inputs
(list bison
@@ -442,7 +442,8 @@ the Net to search for documents which are not on the local system.")
(native-inputs
(list extra-cmake-modules pkg-config))
(inputs
- `(("libarchive" ,libarchive)
+ `(("bash" ,bash-minimal) ; for wrap-program
+ ("libarchive" ,libarchive)
("sqlite" ,sqlite)
("qtbase" ,qtbase-5)
("qtdeclarative-5" ,qtdeclarative-5)
diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm
index 16d4fcd6e3..57043e2b9c 100644
--- a/gnu/packages/ebook.scm
+++ b/gnu/packages/ebook.scm
@@ -159,7 +159,8 @@ with Microsoft Compiled HTML (CHM) files")
qtbase-5 ; for qmake
xdg-utils))
(inputs
- (list fontconfig
+ (list bash-minimal
+ fontconfig
font-liberation
glib
hunspell
diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scm
index a100038f14..dc2db83632 100644
--- a/gnu/packages/elf.scm
+++ b/gnu/packages/elf.scm
@@ -2,7 +2,7 @@
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2017-2023 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2017-2024 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018, 2020 Marius Bakke <mbakke@fastmail.com>
@@ -276,16 +276,16 @@ static analysis of the ELF binaries at hand.")
(define-public patchelf
(package
(name "patchelf")
- (version "0.11")
+ (version "0.18.0")
(source (origin
(method url-fetch)
(uri (string-append
- "https://nixos.org/releases/patchelf/patchelf-"
+ "https://github.com/NixOS/patchelf/releases/download/"
version
"/patchelf-" version ".tar.bz2"))
(sha256
(base32
- "16ms3ijcihb88j3x6cl8cbvhia72afmfcphczb9cfwr0gbc22chx"))))
+ "02s7ap86rx6yagfh9xwp96sgsj0p6hp99vhiq9wn4mxshakv4lhr"))))
(build-system gnu-build-system)
(arguments
'(#:phases
@@ -300,7 +300,17 @@ static analysis of the ELF binaries at hand.")
;; Find libgcc_s.so, which is necessary for the test:
(("/xxxxxxxxxxxxxxx") (string-append (assoc-ref inputs "gcc:lib")
"/lib")))
- #t)))))
+ (substitute* "tests/replace-needed.sh"
+ ;; This test assumes that only libc will be linked alongside
+ ;; libfoo, but we also link libgcc_s.
+ (("grep -v 'foo\\\\.so'") "grep -E 'libc.*\\.so'"))
+ (substitute* "tests/set-empty-rpath.sh"
+ ;; Binaries with empty RPATHs cannot run on Guix, because
+ ;; we still need to find libgcc_s (see above).
+ (("^\"\\$\\{SCRATCH\\}\"\\/simple.$") ""))
+ ;; Skip this test for now.
+ (substitute* "tests/Makefile.in"
+ ((".*shared-rpath\\.sh \\.*") "")))))))
(native-inputs
`(("gcc:lib" ,gcc "lib")))
(home-page "https://nixos.org/patchelf.html")
@@ -308,9 +318,6 @@ static analysis of the ELF binaries at hand.")
(description
"PatchELF allows the ELF \"interpreter\" and RPATH of an ELF binary to be
changed.")
- ;; This can probably be removed with the next release.
- (properties
- '((release-monitoring-url . "https://github.com/NixOS/patchelf/releases")))
(license gpl3+)))
(define-public libdwarf
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 5da3f28545..3c0c3f62ff 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -2418,7 +2418,7 @@ for editing Racket's Scribble documentation syntax in Emacs.")
`(#:modules ((guix build gnu-build-system)
((guix build emacs-build-system) #:prefix emacs:)
(guix build utils))
- #:imported-modules (,@%gnu-build-system-modules
+ #:imported-modules (,@%default-gnu-imported-modules
(guix build emacs-build-system)
(guix build emacs-utils))
#:configure-flags (list (string-append "--with-lispdir="
@@ -2529,8 +2529,8 @@ replacement.")
#:modules `((ice-9 match)
(srfi srfi-26)
((guix build emacs-build-system) #:prefix emacs:)
- ,@%gnu-build-system-modules)
- #:imported-modules `(,@%gnu-build-system-modules
+ ,@%default-gnu-imported-modules)
+ #:imported-modules `(,@%default-gnu-imported-modules
(guix build emacs-build-system)
(guix build emacs-utils))
#:phases
@@ -3348,7 +3348,7 @@ or unexpected behavior inside an elisp configuration file (typically
((guix build emacs-build-system) #:prefix emacs:)
(guix build utils)
(guix build emacs-utils))
- #:imported-modules `(,@%gnu-build-system-modules
+ #:imported-modules `(,@%default-gnu-imported-modules
(guix build emacs-build-system)
(guix build emacs-utils))
#:configure-flags
@@ -3927,7 +3927,7 @@ defined in RFC 2425 and RFC 2426 to/from The Insidious Big Brother Database
((guix build emacs-build-system) #:prefix emacs:)
(guix build utils)
(guix build emacs-utils))
- #:imported-modules `(,@%gnu-build-system-modules
+ #:imported-modules `(,@%default-gnu-imported-modules
(guix build emacs-build-system)
(guix build emacs-utils))
#:configure-flags
@@ -4518,7 +4518,7 @@ a set of simplified face specifications and a user-supplied color palette.")
#:modules ((guix build gnu-build-system)
((guix build emacs-build-system) #:prefix emacs:)
(guix build utils))
- #:imported-modules (,@%gnu-build-system-modules
+ #:imported-modules (,@%default-gnu-imported-modules
(guix build emacs-build-system)
(guix build emacs-utils))
#:phases
@@ -5616,7 +5616,7 @@ during idle time, while Emacs is doing nothing else.")
((guix build emacs-build-system) #:prefix emacs:)
(guix build utils)
(guix build emacs-utils))
- #:imported-modules (,@%gnu-build-system-modules
+ #:imported-modules (,@%default-gnu-imported-modules
(guix build emacs-build-system)
(guix build emacs-utils))
#:phases
@@ -5824,7 +5824,7 @@ type, for example: packages, buffers, files, etc.")
#:modules '((guix build gnu-build-system)
((guix build emacs-build-system) #:prefix emacs:)
(guix build utils))
- #:imported-modules `(,@%gnu-build-system-modules
+ #:imported-modules `(,@%default-gnu-imported-modules
(guix build emacs-build-system)
(guix build emacs-utils))
#:configure-flags
@@ -8910,7 +8910,7 @@ completion of relevant keywords.")
#:modules `((guix build gnu-build-system)
((guix build emacs-build-system) #:prefix emacs:)
(guix build utils))
- #:imported-modules `(,@%gnu-build-system-modules
+ #:imported-modules `(,@%default-gnu-imported-modules
(guix build emacs-build-system)
(guix build emacs-utils))
#:configure-flags
@@ -20171,7 +20171,8 @@ hidden.")
"08gygn9fjank5gpi4v6ynrkn0jbknxbwsn7md4p9ndygdbmnkf98"))))
(build-system emacs-build-system)
(inputs
- (list emacs-ansi
+ (list bash-minimal
+ emacs-ansi
emacs-commander
emacs-dash
emacs-f
@@ -20194,8 +20195,8 @@ hidden.")
;; Do not capture the transient source directory in
;; the wrapper.
(delete source-directory
- (string-split (getenv "EMACSLOADPATH") #\:))))
- #t))))
+ (string-split (getenv "EMACSLOADPATH")
+ #\:))))))))
#:include (cons* "^reporters/.*\\.el$" %default-include)))
(home-page "https://github.com/rejeep/ert-runner.el")
(synopsis "Opinionated Ert testing workflow")
@@ -29852,7 +29853,8 @@ asynchronous communications, the RPC response is fairly good.")
(file-name (git-file-name name version))))
(build-system emacs-build-system)
(inputs
- (list perl
+ (list bash-minimal
+ perl
perl-rpc-epc-service
perl-dbi
;; TODO: Adding support for perl-dbd-mysql and others would
@@ -29868,8 +29870,7 @@ asynchronous communications, the RPC response is fairly good.")
(lambda* (#:key inputs #:allow-other-keys)
(let ((perl (assoc-ref inputs "perl")))
(substitute* "edbi.el"
- (("\"perl\"") (string-append "\"" perl "/bin/perl\"")))
- #t)))
+ (("\"perl\"") (string-append "\"" perl "/bin/perl\""))))))
(add-after 'wrap 'wrap-edbi-bridge
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@@ -29877,8 +29878,7 @@ asynchronous communications, the RPC response is fairly good.")
"/edbi-bridge.pl")))
(chmod bridge #o555)
(wrap-program bridge
- `("PERL5LIB" ":" prefix (,(getenv "PERL5LIB")))))
- #t)))))
+ `("PERL5LIB" ":" prefix (,(getenv "PERL5LIB"))))))))))
(synopsis "Database Interface for Emacs Lisp")
(description "This program connects the database server through Perl's
DBI, and provides DB-accessing API and the simple management UI.")
@@ -36550,7 +36550,7 @@ a @samp{date} keywords, and optionally, a @samp{filetags} keyword.")
`(#:modules ((guix build gnu-build-system)
(guix build utils)
(guix build emacs-utils))
- #:imported-modules (,@%gnu-build-system-modules
+ #:imported-modules (,@%default-gnu-imported-modules
(guix build emacs-utils))
#:test-target "test"
#:phases
diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm
index 1da4141519..bee65663b6 100644
--- a/gnu/packages/embedded.scm
+++ b/gnu/packages/embedded.scm
@@ -746,16 +746,17 @@ with a layered architecture of JTAG interface and TAP support.")
"0w0dff3s7wv2d9m78a4jhckiik58q38wx6wpbba5hzbs4yxz35ck"))
(patches '())))
(arguments
- `(;; FIXME: For some reason there are many test failures. It's not
- ;; obvious how to fix the failures.
- #:tests? #f
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'chdir
- (lambda _ (chdir "binutils") #t)))
- ,@(substitute-keyword-arguments (package-arguments xbinutils)
- ((#:configure-flags flags)
- `(cons "--disable-werror" ,flags)))))
+ (list
+ ;; FIXME: For some reason there are many test failures. It's not
+ ;; obvious how to fix the failures.
+ #:tests? #f
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'chdir
+ (lambda _ (chdir "binutils") #t))
+ #$@(substitute-keyword-arguments (package-arguments xbinutils)
+ ((#:configure-flags flags)
+ #~(cons "--disable-werror" #$flags))))))
(native-inputs
`(("bison" ,bison)
("flex" ,flex)
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index a935808da5..a39d0838de 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -184,7 +184,7 @@ SuperCPU.")
#:tests? #f ; No check target and custom tests don't seem to build
#:imported-modules
((guix build copy-build-system)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:modules
(((guix build copy-build-system)
#:prefix copy:)
@@ -590,6 +590,7 @@ and a game metadata scraper.")
(list pkg-config))
(inputs
`(("alsa-lib" ,alsa-lib)
+ ("bash" ,bash-minimal) ; for wrap-program
("ao" ,ao)
("eudev" ,eudev)
("gtk+" ,gtk+-2)
@@ -2092,13 +2093,13 @@ assembler, and debugger for the Intel 8085 microprocessor.
;; For GtkFileChooserDialog.
`("GSETTINGS_SCHEMA_DIR" =
(,(string-append (assoc-ref inputs "gtk+")
- "/share/glib-2.0/schemas"))))
- #t)))))
+ "/share/glib-2.0/schemas")))))))))
(native-inputs
(list pkg-config intltool
`(,glib "bin")))
(inputs
- (list libcdio
+ (list bash-minimal
+ libcdio
sdl2
gtk+
ffmpeg-4
diff --git a/gnu/packages/enchant.scm b/gnu/packages/enchant.scm
index 5efa0f2689..6892b73ab5 100644
--- a/gnu/packages/enchant.scm
+++ b/gnu/packages/enchant.scm
@@ -25,12 +25,14 @@
#:use-module (gnu packages boost)
#:use-module (gnu packages check)
#:use-module (gnu packages glib)
+ #:use-module (gnu packages groff)
#:use-module (gnu packages hunspell)
#:use-module (gnu packages icu4c)
#:use-module (gnu packages man)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages version-control)
+ #:use-module (guix gexp)
#:use-module (guix packages)
#:use-module (guix git-download)
#:use-module (guix download)
@@ -71,7 +73,7 @@ dictionaries.")
(define-public enchant
(package
(name "enchant")
- (version "2.2.15")
+ (version "2.6.9")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/AbiWord/enchant/releases"
@@ -79,31 +81,31 @@ dictionaries.")
version ".tar.gz"))
(sha256
(base32
- "00vcykbb7lxh51prvmsb62a06q18a6rlk9ba5a7g45c1awaj43rv"))))
+ "0szzxx0bvkdgahlzdbrmnngf1dzbsrpcf8psl2rl72mkr46s39fr"))))
(build-system gnu-build-system)
(arguments
- '(#:configure-flags '("--disable-static"
- ;; Tests require a relocatable build.
- "--enable-relocatable")))
+ (list
+ #:configure-flags
+ #~(list"--disable-static"
+ ;; Tests require a relocatable build.
+ "--enable-relocatable")))
(inputs
- (list aspell hunspell))
+ (list aspell hunspell nuspell))
(propagated-inputs
;; Required by enchant.pc.
(list glib))
(native-inputs
- `(("glib:bin" ,glib "bin")
- ("pkg-config" ,pkg-config)
- ("unittest-cpp" ,unittest-cpp)))
+ (list `(,glib "bin") groff pkg-config unittest-cpp))
(synopsis "Multi-backend spell-checking library wrapper")
(description
- "On the surface, Enchant appears to be a generic spell checking library.
-Looking closer, you'll see the Enchant is more-or-less a fancy wrapper around
-the dlopen() system call.
-
-Enchant steps in to provide uniformity and conformity on top of these libraries,
-and implement certain features that may be lacking in any individual provider
-library. Everything should \"just work\" for any and every definition of \"just
-working\".")
+ "Enchant is a library---and command-line program---that wraps a number of
+different spelling libraries and programs with a consistent interface. By
+using Enchant, you can use a wide range of spelling libraries, including some
+specialized for particular languages, without needing to program to each
+library's interface. If it's not convenient to call a C library, you can
+access most of Enchant's functionality via the @command{enchant} program,
+which communicates over a pipe, like Ispell, and is indeed
+Ispell-compatible.")
(home-page "https://abiword.github.io/enchant/")
(license lgpl2.1+)))
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 7a60036c28..356d9904c2 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -188,6 +188,29 @@
'(#:test-target "check"
#:phases
(modify-phases %standard-phases
+ ;; Without this patch boost complains that "make_array" is not a
+ ;; member of "boost::serialization".
+ (add-after 'unpack 'patch-boost-error
+ (lambda _
+ (substitute* "librecad/src/lib/math/lc_quadratic.h"
+ (("#include \"rs_vector.h\"" line)
+ (string-append line
+ "\n#include <boost/serialization/array_wrapper.hpp>")))
+ (substitute* "librecad/src/lib/math/rs_math.cpp"
+ (("#include <boost/numeric/ublas/matrix.hpp>" line)
+ (string-append "#include <boost/serialization/array_wrapper.hpp>\n"
+ line)))))
+ ;; Fix build against Qt 5.11.
+ (add-after 'unpack 'add-missing-headers
+ (lambda _
+ (substitute* "librecad/src/ui/generic/widgetcreator.cpp"
+ (("#include <QPushButton>") "#include <QPushButton>
+#include <QActionGroup>"))))
+ (add-after 'unpack 'patch-paths
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (substitute* "librecad/src/lib/engine/rs_system.cpp"
+ (("/usr/share") (string-append out "/share"))))))
(replace 'configure
(lambda* (#:key inputs #:allow-other-keys)
(system* "qmake" (string-append "BOOST_DIR="
@@ -202,7 +225,7 @@
(mkdir-p share)
(copy-recursively "unix/resources" share)))))))
(inputs
- (list boost muparser freetype qtbase-5 qtsvg-5))
+ (list bash-minimal boost muparser freetype qtbase-5 qtsvg-5))
(native-inputs
(list pkg-config which))
(home-page "https://librecad.org/")
@@ -564,7 +587,7 @@ featuring various improvements and bug fixes.")))
#:parallel-build? #f
#:tests? #f ;; no tests-suite
#:modules ((srfi srfi-1)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:phases
(modify-phases %standard-phases
(add-after 'build 'make-doc
@@ -661,7 +684,7 @@ multipole-accelerated algorithm.")
#:parallel-build? #f
#:tests? #f ;; no tests-suite
#:modules ((srfi srfi-1)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:phases
(modify-phases %standard-phases
(delete 'configure)
@@ -1425,9 +1448,10 @@ WiFi signal strength maps. It visualizes them using a Voronoi diagram.")
`("PATH" ":" prefix
(,(string-append python "/bin:"))))))))))
(inputs
- `(("boost" ,boost)
- ("python" ,python-wrapper)
- ("python-mako" ,python-mako)))
+ (list bash-minimal ;for wrap-program
+ boost
+ python-wrapper
+ python-mako))
(home-page "https://www.libvolk.org/")
(synopsis "Vector-Optimized Library of Kernels")
(description
@@ -2240,8 +2264,7 @@ parallel computing platforms. It also supports serial execution.")
(lambda _
(substitute* "v2cc/gvhdl.in"
(("--mode=link") "--mode=link --tag=CXX")
- (("-lm") "-lm FREEHDL/lib/freehdl/libieee.la"))
- #t))
+ (("-lm") "-lm FREEHDL/lib/freehdl/libieee.la"))))
(add-after 'patch-gvhdl 'patch-freehdl-gennodes
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "freehdl/freehdl-gennodes.in"
@@ -2249,8 +2272,7 @@ parallel computing platforms. It also supports serial execution.")
(search-input-file inputs "/bin/guile"))
(("\\(debug") ";(debug")
(("\\(@ ") "(apply-emit")
- (("\\(@@ ") "(apply-mini-format"))
- #t))
+ (("\\(@@ ") "(apply-mini-format"))))
(add-after 'configure 'patch-freehdl-pc
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "freehdl.pc"
@@ -2259,8 +2281,7 @@ parallel computing platforms. It also supports serial execution.")
"/bin/g++"))
(("=libtool")
(string-append "=" (assoc-ref inputs "libtool")
- "/bin/libtool")))
- #t))
+ "/bin/libtool")))))
(add-after 'install-scripts 'make-wrapper
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
@@ -2279,10 +2300,11 @@ parallel computing platforms. It also supports serial execution.")
,(string-append (assoc-ref inputs "coreutils")
"/bin"))))
(wrap-program (string-append out "/bin/freehdl-config")
- `("PKG_CONFIG_PATH" ":" prefix (,(string-append out "/lib/pkgconfig")))))
- #t)))))
+ `("PKG_CONFIG_PATH" ":" prefix
+ (,(string-append out "/lib/pkgconfig"))))))))))
(inputs
- (list coreutils
+ (list bash-minimal
+ coreutils
;; Lazily resolve the gcc-toolchain to avoid a circular dependency.
(module-ref (resolve-interface '(gnu packages commencement))
@@ -2815,7 +2837,8 @@ comments.")))
python-pyside-2-tools
swig))
(inputs
- (list boost
+ (list bash-minimal
+ boost
coin3d
double-conversion
eigen
@@ -3236,7 +3259,7 @@ program that can perform mesh processing tasks in batch mode, without a GUI.")
(list
#:imported-modules `((guix build emacs-build-system)
(guix build emacs-utils)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:modules '((guix build gnu-build-system)
((guix build emacs-build-system) #:prefix emacs:)
(guix build utils))
@@ -3357,16 +3380,18 @@ dynamic calibration of the milling depth.")
`("GSETTINGS_SCHEMA_DIR" =
(,(string-append (assoc-ref inputs "gtk+")
"/share/glib-2.0/schemas")))))))))
- (inputs (list cairo
- eigen
- freetype
- gtkmm-3
- json-c
- libpng
- libspnav ;spaceware
- mimalloc
- mesa
- zlib))
+ (inputs
+ (list bash-minimal
+ cairo
+ eigen
+ freetype
+ gtkmm-3
+ json-c
+ libpng
+ libspnav ;spaceware
+ mimalloc
+ mesa
+ zlib))
(synopsis
"Parametric 2D/3D @acronym{CAD, computer-aided design} software")
(description
@@ -4125,7 +4150,8 @@ python bindings. It belongs to the Cura project from Ultimaker.")
python-pytest
python-requests))
(inputs
- (list cura-engine
+ (list bash-minimal
+ cura-engine
libcharon
libsavitar
python
diff --git a/gnu/packages/esolangs.scm b/gnu/packages/esolangs.scm
index 0651dda1b0..796f8d3f23 100644
--- a/gnu/packages/esolangs.scm
+++ b/gnu/packages/esolangs.scm
@@ -135,7 +135,7 @@ are encoded as (nested) directories. Note that the switches you pass to
"shakespeare-spl-fix-grammar.patch"))))
(build-system copy-build-system)
(arguments
- `(#:imported-modules (,@%gnu-build-system-modules
+ `(#:imported-modules (,@%default-gnu-imported-modules
(guix build copy-build-system))
#:modules ((guix build copy-build-system)
((guix build gnu-build-system) #:prefix gnu:)
diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm
index 8afd853350..099d25cd89 100644
--- a/gnu/packages/file-systems.scm
+++ b/gnu/packages/file-systems.scm
@@ -1415,6 +1415,7 @@ xfstest's \"~a\" command (with any OPTIONs) as documented below.\n\n"
(inputs
(list acl
attr
+ bash-minimal
bc
guile-3.0 ; for our xfstests-check helper script
inetutils
diff --git a/gnu/packages/file.scm b/gnu/packages/file.scm
index 3f870d84a1..016572f120 100644
--- a/gnu/packages/file.scm
+++ b/gnu/packages/file.scm
@@ -31,14 +31,15 @@
(define-public file
(package
(name "file")
- (version "5.44")
+ (version "5.45")
(source (origin
(method url-fetch)
(uri (string-append "http://ftp.astron.com/pub/file/file-"
version ".tar.gz"))
(sha256
(base32
- "0fsz8wld09qai2qghphmwn69ni9m23razj3wip5k3j6vm3xwfl9p"))))
+ "10jdg2fd19h2q3jrsaw7xqwy1w3qyvdfzzrv9sgjq3mv548gb5zw"))
+ (patches (search-patches "file-32bit-time.patch"))))
(build-system gnu-build-system)
;; When cross-compiling, this package depends upon a native install of
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index ee8e9df527..c36279dfa6 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -77,6 +77,7 @@
#:use-module (gnu packages)
#:use-module (gnu packages aidc)
#:use-module (gnu packages autotools)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages base)
#:use-module (gnu packages boost)
#:use-module (gnu packages check)
@@ -647,7 +648,8 @@ other machines/servers. Electrum does not download the Bitcoin blockchain.")
(wrap-qt-program "electron-cash"
#:output out #:inputs inputs)))))))
(inputs
- (list libevent
+ (list bash-minimal
+ libevent
libsecp256k1-bitcoin-cash
openssl
python-cython
diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm
index 6f0c2da806..2f3c921822 100644
--- a/gnu/packages/firmware.scm
+++ b/gnu/packages/firmware.scm
@@ -664,7 +664,7 @@ coreboot.")
(supported-systems %supported-systems)
(arguments
(substitute-keyword-arguments (package-arguments seabios)
- ((#:modules modules %gnu-build-system-modules)
+ ((#:modules modules %default-gnu-modules)
`((ice-9 match)
(ice-9 threads)
,@modules))
diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index 9ec722c19c..7563d390e8 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -316,12 +316,14 @@ itself."))))
(name "font-canada1500")
(version "1.101")
(source (origin
- (method url-fetch)
+ (method url-fetch/zipbomb)
(uri "https://typodermicfonts.com/wp-content/uploads/2017/06/canada1500.zip")
(sha256
(base32
"0cdcb89ab6q7b6jd898bnvrd1sifbd2xr42qgji98h8d5cq4b6fp"))))
(build-system font-build-system)
+ (arguments
+ '(#:license-file-regexp "^license.pdf$"))
(home-page "https://typodermicfonts.com/canada1500/")
(synopsis "Canadian typeface that supports English, French and Aboriginal languages")
(description "Canada1500 is a display typeface originally created for the
@@ -372,7 +374,7 @@ of the font.")
(name "font-lato")
(version "2.015") ; also update description
(source (origin
- (method url-fetch/zipbomb)
+ (method url-fetch)
(uri (string-append "https://www.latofonts.com/download/Lato2OFL.zip"))
(sha256
(base32
@@ -547,7 +549,8 @@ and Bitstream Vera Sans Mono).
"0x7cz6hvhpil1rh03rax9zsfzm54bh7r4bbrq8rz673gl9h47v0v"))))
(build-system font-build-system)
(arguments
- `(#:phases
+ `(#:license-file-regexp "^(GPL|LICENCE|OFL-1\\.1)\\.txt$"
+ #:phases
(modify-phases %standard-phases
(add-before 'install 'build
(lambda _
@@ -810,6 +813,8 @@ variants.")
(base32
"1mkmxq8g2hjcglb3zajfqj20r4r88l78ymsp2xyl5yav8w3f7dz4"))))
(build-system font-build-system)
+ (arguments
+ '(#:license-file-regexp "^(COPYING|README)$"))
(home-page "http://wenq.org/wqy2/")
(synopsis "CJK font")
(description
@@ -837,6 +842,8 @@ ko (Korean) locales for @code{fontconfig}.")
(base32
"0gi1yxqph8xx869ichpzzxvx6y50wda5hi77lrpacdma4f0aq0i8"))))
(build-system font-build-system)
+ (arguments
+ '(#:license-file-regexp "^(LICENSE.*|README)\\.txt$"))
(home-page "http://wenq.org/wqy2/")
(synopsis "CJK font")
(description
@@ -935,9 +942,9 @@ OpenType variant of these fonts.")
(build-system gnu-build-system)
(arguments
(list
- #:imported-modules `(,@%gnu-build-system-modules
+ #:imported-modules `(,@%default-gnu-imported-modules
(guix build font-build-system))
- #:modules `(,@%gnu-build-system-modules
+ #:modules `(,@%default-gnu-modules
((guix build font-build-system) #:prefix font:))
#:phases #~(modify-phases %standard-phases
(add-after 'unpack 'patch-source
@@ -1604,7 +1611,10 @@ Terminal, and is now the default font in Visual Studio as well.")
(match (find-files "." (format #f "^Fira_~a_[0-9]" variant)
#:directories? #t)
((dir)
- (chdir dir))))))))
+ (chdir dir)))))
+ (add-before 'install-license-files 'enter-license-directory
+ (lambda _
+ (chdir "../OFL_Licence"))))))
;; While the repository has moved,
;; this specimen still works well as the home-page:
(home-page "https://mozilla.github.io/Fira/")
@@ -1644,6 +1654,13 @@ It includes regular, medium, and bold weights.")
(base32
"10rcfg1fijv00yxv5n9l3lm0axhafa1irkg42zpmasd70flgg655"))))
(build-system font-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'install-license-files 'enter-license-directory
+ (lambda _
+ (chdir "OFL_Licence"))))))
(home-page "https://github.com/bBoxType/FiraGO")
(synopsis "Multilingual extension of the Fira Sans font family")
(description "FiraGO is a multilingual extension of the Fira Sans font
@@ -1796,8 +1813,7 @@ later hand-tweaked with the gbdfed(1) editor:
;; several hidden files to be installed.
(add-before 'install 'delete-macosx-files
(lambda _
- (delete-file-recursively "__MACOSX")
- #t))
+ (delete-file-recursively "__MACOSX")))
(add-after 'install 'install-conf
(lambda* (#:key outputs #:allow-other-keys)
(let ((conf-dir (string-append (assoc-ref outputs "out")
@@ -1816,8 +1832,10 @@ later hand-tweaked with the gbdfed(1) editor:
<family>Comic Neue</family>
</prefer>
</alias>
-</fontconfig>\n"))))
- #t)))))
+</fontconfig>\n"))))))
+ (add-before 'install-license-files 'enter-license-directory
+ (lambda _
+ (chdir (string-append "comic-neue-" ,version)))))))
(home-page "https://www.comicneue.com/")
(synopsis "Font that fixes the shortcomings of Comic Sans")
(description
@@ -2126,15 +2144,6 @@ most CJK characters are same height, and double width as ASCII characters.")))
(base32 "1aiivn0rl7ydiyqvsr0fa2hx82h3br3x48w3100fcly23n0fdcby"))))
(build-system font-build-system)
;; TODO: Package fontmake and gftools and build from source.
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'install-license-files
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (doc (string-append out "/share/doc/" ,name "-" ,version)))
- (install-file "OFL.txt" doc)
- #t))))))
(home-page "https://floriankarsten.github.io/space-grotesk/")
(synopsis "Proportional variant of the fixed-width Space Mono family")
(description
@@ -2165,13 +2174,17 @@ and stylistic alternates.")
"1aq6mnjayks55gd9ahavk6jfydlq5lm4xm0xk4pd5sqa74p5p74d"))))
(build-system font-build-system)
(arguments
- `(#:phases
+ `(#:license-file-regexp "^(LICENSE|PATENTS)$"
+ #:phases
(modify-phases %standard-phases
(add-before 'install 'chdir
(lambda _
(chdir "font/gofont/ttfs")
- #t)))))
- (home-page "https://blog.golang.org/go-fonts")
+ #t))
+ (add-before 'install-license-files 'enter-license-directory
+ (lambda _
+ (chdir "../../.."))))))
+ (home-page "https://go.dev/blog/go-fonts")
(synopsis "The Go font family")
(description
"The Go font family is a set of WGL4 TrueType fonts from the Bigelow &
@@ -2282,7 +2295,7 @@ variants.")
(version "1.7")
(source
(origin
- (method url-fetch/zipbomb)
+ (method url-fetch)
(uri (string-append "https://web.archive.org/web/20180228233737/"
"https://www.impallari.com/media/releases/dosis-"
"v" version ".zip"))
@@ -2316,7 +2329,8 @@ ExtraLight, Light, Book, Medium, Semibold, Bold & ExtraBold")
"02akysgsqhi15cck54xcacm16q5raf4l7shgb8fnj7xr3c1pbfyp"))))
(build-system font-build-system)
(arguments
- `(#:phases
+ `(#:license-file-regexp "^GNU-GPL|LICENSE"
+ #:phases
(modify-phases %standard-phases
(add-before 'install 'build
(lambda _
@@ -2570,7 +2584,7 @@ have been designed to be very distinguishable from each other.")
(version "0.46")
(source
(origin
- (method url-fetch/zipbomb)
+ (method url-fetch)
(uri
(string-append "https://github.com/keshikan/DSEG/"
"releases/download/v" version
@@ -2581,20 +2595,17 @@ have been designed to be very distinguishable from each other.")
(base32 "13133kpa1ndsji9yq5ppkds5yq2y094qvrv2f83ah74p40sz9hm6"))))
(build-system font-build-system)
(arguments
- `(#:phases
+ `(#:license-file-regexp "^DSEG-LICENSE.txt$"
+ #:phases
(modify-phases %standard-phases
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(font-dir (string-append out "/share/fonts"))
(truetype-dir (string-append font-dir "/truetype")))
- (with-directory-excursion
- (string-append "fonts-DSEG_v"
- (apply string-append (string-split ,version
- #\.)))
- (for-each (lambda (f) (install-file f truetype-dir))
- (find-files "." "\\.ttf$"))
- #t)))))))
+ (for-each (lambda (f) (install-file f truetype-dir))
+ (find-files "." "\\.ttf$"))
+ #t))))))
(home-page "https://www.keshikan.net/fonts-e.html")
(synopsis "DSEG: 7-segment and 14-segment fonts")
(description
@@ -2645,13 +2656,7 @@ a different style of marking.")
;; Find the license file outside of the default subdirectory.
(lambda _
(chdir "..")
- #t))
- (replace 'install-license-files
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (doc (string-append out "/share/doc/" ,name "-" ,version)))
- (install-file "OFL.txt" doc)
- #t))))))
+ #t)))))
(home-page "https://www.jetbrains.com/lp/mono/")
(synopsis "Mono typeface for developers")
(description
@@ -2984,11 +2989,11 @@ to have a detailed and proper character style.")
;; This directory, TrueType(サポート外), is not properly encoded,
;; which makes rename-file fail. Instead, use shell globbing to
;; select and rename the directory.
- (invoke "sh" "-c" "mv TrueType* TrueType")
- #t)))))
- (native-inputs
- `(("bash" ,bash-minimal)
- ("coreutils" ,coreutils)))
+ (invoke "sh" "-c" "mv TrueType* TrueType")))
+ (add-before 'install-license-files 'enter-license-directory
+ (lambda _
+ (chdir "IPAexfont00201"))))))
+ (native-inputs (list bash-minimal coreutils))
(home-page "http://www.fontna.com/blog/1122/")
(synopsis "Mix font of gothic kanji and minchou kana")
(description "Antique is a font that is popular to write manga bubbles,
@@ -3215,6 +3220,7 @@ optimized for using musical symbols inline with regular text.")
(sha256
(base32 "1j8iv2dl695zrabs2knb7jsky8mjis29a2ddpna4by8mlvqrf0ml"))))
(build-system font-build-system)
+ (arguments (list #:license-file-regexp "^Charter license.txt$"))
(home-page "https://practicaltypography.com/charter.html")
(synopsis "Charter fonts in OpenType and TrueType formats")
(description "Charter was designed by Matthew Carter in 1987 and was
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index 212c258aca..d0d430d925 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -18,6 +18,7 @@
;;; Copyright © 2023 gemmaro <gemmaro.dev@gmail.com>
;;; Copyright © 2023 John Kehayias <john.kehayias@protonmail.com>
;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
;;; Copyright © 2023 pinoaffe <pinoaffe@gmail.com>
;;; Copyright © 2024 Sören Tempel <soeren@soeren-tempel.net>
;;;
@@ -1609,44 +1610,46 @@ definitions.")
(define-public fontforge
(package
- (name "fontforge")
- (version "20220308")
- (source (origin
- (method url-fetch)
- (uri (string-append
- "https://github.com/fontforge/fontforge/releases/download/"
- version "/fontforge-" version ".tar.xz"))
- (sha256
- (base32 "0ncfc4ajwy4ng6b6h79w52jh9z3lngvf3f3ldi1wzkhcg9zh3r01"))))
- (build-system cmake-build-system)
- (native-inputs
- (list pkg-config))
- (inputs `(("cairo" ,cairo)
- ("fontconfig" ,fontconfig) ;dlopen'd
- ("freetype" ,freetype)
- ("gettext" ,gettext-minimal)
- ("libICE" ,libice)
- ("libSM" ,libsm)
- ("libX11" ,libx11)
- ("libXi" ,libxi)
- ("libjpeg" ,libjpeg-turbo)
- ("libltdl" ,libltdl)
- ("libpng" ,libpng)
- ("libspiro" ,libspiro)
- ("libtiff" ,libtiff)
- ("libungif" ,libungif)
- ("libxft" ,libxft)
- ("libxml2" ,libxml2)
- ("pango" ,pango)
- ("potrace" ,potrace)
- ("python" ,python)
- ("zlib" ,zlib)))
- (arguments
- (list
- #:configure-flags #~'( ;; TODO: Provide GTK+ for the Wayland-friendly GDK
- ;; backend, instead of the legacy X11 backend.
- ;; Currently it introduces a circular dependency.
- "-DENABLE_X11=ON")
+ (name "fontforge")
+ (version "20220308")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/fontforge/fontforge/releases/download/"
+ version "/fontforge-" version ".tar.xz"))
+ (sha256
+ (base32 "0ncfc4ajwy4ng6b6h79w52jh9z3lngvf3f3ldi1wzkhcg9zh3r01"))))
+ (build-system cmake-build-system)
+ (native-inputs
+ (list pkg-config))
+ (inputs
+ (list cairo
+ bash-minimal
+ fontconfig ;dlopen'd
+ freetype
+ gettext-minimal
+ libice
+ libsm
+ libx11
+ libxi
+ libjpeg-turbo
+ libltdl
+ libpng
+ libspiro
+ libtiff
+ libungif
+ libxft
+ libxml2
+ pango
+ potrace
+ python
+ zlib))
+ (arguments
+ (list
+ #:configure-flags #~'( ;; TODO: Provide GTK+ for the Wayland-friendly GDK
+ ;; backend, instead of the legacy X11 backend.
+ ;; Currently it introduces a circular dependency.
+ "-DENABLE_X11=ON")
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'do-not-override-RPATH
@@ -1655,8 +1658,7 @@ definitions.")
;; already does the right thing.
(substitute* "CMakeLists.txt"
(("^set_default_rpath\\(\\)")
- ""))
- #t))
+ ""))))
#$@(if (target-hurd?)
#~((add-after 'unpack 'apply-hurd-patch
(lambda _
@@ -1695,19 +1697,18 @@ definitions.")
,(map (lambda (input)
(string-append (assoc-ref inputs input)
"/lib"))
- '("libtiff" "libjpeg" "libpng" "libungif"
+ '("libtiff" "libjpeg-turbo" "libpng" "libungif"
"libxml2" "zlib" "libspiro" "freetype"
- "pango" "cairo" "fontconfig")))
+ "pango" "cairo" "fontconfig-minimal")))
;; Checks for potrace program at runtime
- `("PATH" ":" prefix (,potrace)))
- #t))))))
- (synopsis "Outline font editor")
- (description
- "FontForge allows you to create and modify postscript, truetype and
+ `("PATH" ":" prefix (,potrace)))))))))
+ (synopsis "Outline font editor")
+ (description
+ "FontForge allows you to create and modify postscript, truetype and
opentype fonts. You can save fonts in many different outline formats, and
generate bitmaps.")
- (license license:gpl3+)
- (home-page "https://fontforge.github.io")))
+ (license license:gpl3+)
+ (home-page "https://fontforge.github.io")))
;; This is the last version that supports Python 2, which is needed for
;; GNU FreeFont. Remove once no longer required.
@@ -2023,6 +2024,7 @@ work well with other GTK+ desktop environments.")
("gettext" ,gettext-minimal)))
(inputs
`(("cairo" ,cairo)
+ ("bash-minimal", bash-minimal)
("fontconfig" ,fontconfig)
("freetype" ,freetype)
("glib" ,glib)
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index 78443d6f5c..4cbe610d1e 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -78,6 +78,7 @@
#:use-module (gnu packages check)
#:use-module (gnu packages cmake)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages crypto)
#:use-module (gnu packages cryptsetup)
#:use-module (gnu packages cups)
#:use-module (gnu packages curl)
@@ -274,7 +275,6 @@ application-centers for distributions.")
gobject-introspection
gtk-doc/stable
libtool
- libxml2 ;for XML_CATALOG_FILES
libxslt
perl
pkg-config
@@ -605,7 +605,8 @@ database is translated at Transifex.")
"1nai806smz3zcb2l5iny4x7li0fak0rzmjg6vlyhdqm8z25b166p"))))
(build-system gnu-build-system)
(native-inputs
- (list docbook-xsl docbook-xml-4.1.2 libxslt w3m-for-tests xmlto))
+ (list docbook-xsl docbook-xml-4.1.2
+ libxslt xmlto w3m-for-tests))
(inputs
(list bash-minimal ;for 'wrap-program'
coreutils
@@ -621,7 +622,7 @@ database is translated at Transifex.")
(list
#:tests? #f ;no check target
#:modules `((srfi srfi-26)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'patch-hardcoded-paths
@@ -632,32 +633,6 @@ database is translated at Transifex.")
(substitute* "scripts/xdg-open.in"
(("/usr/bin/printf")
(search-input-file inputs "bin/printf")))))
- (add-before 'build 'locate-catalog-files
- (lambda* (#:key native-inputs inputs #:allow-other-keys)
- (let* ((native (or native-inputs inputs))
- (xmldoc (search-input-directory native
- "xml/dtd/docbook"))
- (xsldoc (search-input-directory
- native
- (string-append "xml/xsl/docbook-xsl-"
- #$(package-version
- (this-package-native-input
- "docbook-xsl"))))))
- (for-each (lambda (file)
- (substitute* file
- (("http://.*/docbookx\\.dtd")
- (string-append xmldoc "/docbookx.dtd"))))
- (find-files "scripts/desc" "\\.xml$"))
- (substitute* "scripts/Makefile"
- ;; Apparently `xmlto' does not bother to looks up the stylesheets
- ;; specified in the XML, unlike the above substitition. Instead it
- ;; uses a hard-coded URL. Work around it here, but if this is
- ;; common perhaps we should hardcode this path in xmlto itself.
- (("\\$\\(XMLTO\\) man")
- (string-append "$(XMLTO) -x " xsldoc
- "/manpages/docbook.xsl man")))
- (setenv "STYLESHEET"
- (string-append xsldoc "/html/docbook.xsl")))))
(add-after 'install 'wrap-executables
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((dependencies '("awk" "grep" "hostname" "ls" "mimeopen"
@@ -682,15 +657,16 @@ freedesktop.org project.")
;; Updating this will rebuild over 700 packages through libinput-minimal.
(package
(name "libinput")
- (version "1.22.1")
+ (version "1.24.0")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.freedesktop.org/libinput/libinput.git")
(commit version)))
+ (file-name (git-file-name name version))
(sha256
(base32
- "17a5qlym2d6lg2j8fdpxda9k7x5zr35flb4wlj1bz7h0mnkh8326"))))
+ "0xk0dljykjfmkks7kjxvbia6g3wadmy7lihfygm8icywkq8j0dw1"))))
(build-system meson-build-system)
(arguments
`(#:configure-flags '("-Ddocumentation=false")
@@ -700,7 +676,7 @@ freedesktop.org project.")
;; Meson target anyway.
#:build-type "release"))
(native-inputs
- (append (list check pkg-config)
+ (append (list check pkg-config python-minimal-wrapper python-pytest)
(if (%current-target-system)
(list pkg-config-for-build)
'())))
@@ -715,8 +691,8 @@ freedesktop.org project.")
(list check)
'())))
(propagated-inputs
- `(;; libinput.h requires <libudev.h>, so propagate it.
- ("udev" ,eudev)))
+ ;; libinput.h requires <libudev.h>, so propagate it.
+ (list eudev))
(home-page "https://www.freedesktop.org/wiki/Software/libinput/")
(synopsis "Input devices handling library")
(description
@@ -830,7 +806,10 @@ the freedesktop.org XDG Base Directory specification.")
"-Dcgroup-controller=elogind"
"-Dman=true"
;; Disable some tests.
- "-Dslow-tests=false"))
+ "-Dslow-tests=false"
+ ;; Adjust the default user shell to /bin/sh (otherwise it is set
+ ;; to /bin/bash).
+ "-Ddefault-user-shell=/bin/sh"))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'fix-pkttyagent-path
@@ -849,11 +828,8 @@ the freedesktop.org XDG Base Directory specification.")
(("PKGSYSCONFDIR") "\"/etc/elogind\""))))
(add-after 'unpack 'adjust-tests
(lambda _
- ;; Skip the user-util tests, which depends on users such as
- ;; 'root' existing in the build environment.
(substitute* "src/test/meson.build"
- ((".*'test-user-util.c'.*") "")
- ((".*'test-cgroup.c'.*") ""))
+ ((".*'test-cgroup.c'.*") "")) ;no cgroup in container
;; This test tries to copy some bytes from /usr/lib/os-release,
;; which does not exist in the build container. Choose something
;; more likely to be available.
@@ -899,7 +875,6 @@ the freedesktop.org XDG Base Directory specification.")
docbook-xsl
gettext-minimal
gperf
- libxml2 ;for XML_CATALOG_FILES
m4
pkg-config
python
@@ -912,6 +887,7 @@ the freedesktop.org XDG Base Directory specification.")
'())
(list linux-pam
libcap
+ libxcrypt
`(,util-linux "lib") ;for 'libmount'
shadow ;for 'nologin'
shepherd ;for 'halt' and 'reboot', invoked
@@ -1130,7 +1106,6 @@ with localed. This package is extracted from the broader systemd package.")
gettext-minimal
`(,glib "bin")
gobject-introspection
- libxml2 ;for XML_CATALOG_FILES
libxslt
pkg-config
python-wrapper
@@ -1336,7 +1311,7 @@ Python.")
(list pkg-config-for-build
this-package) ;for wayland-scanner
'())))
- (inputs (list expat libxml2)) ;for XML_CATALOG_FILES
+ (inputs (list expat libxml2))
(propagated-inputs (list libffi))
(home-page "https://wayland.freedesktop.org/")
(synopsis "Core Wayland window system code and protocol")
@@ -1675,85 +1650,64 @@ Analysis and Reporting Technology) functionality.")
"06cq52kp1nyy15qzylywy9s7hhhqc45k0s3y68crf0zsmjyng0yj"))))
(build-system gnu-build-system)
(native-inputs
- `(("docbook-xml" ,docbook-xml-4.3) ; to build the manpages
- ("docbook-xsl" ,docbook-xsl)
- ("glib:bin" ,glib "bin") ; for glib-mkenums
- ("gnome-common" ,gnome-common) ; TODO: Why is this needed?
- ("gobject-introspection" ,gobject-introspection)
- ("gtk-doc" ,gtk-doc/stable)
- ("intltool" ,intltool)
- ("pkg-config" ,pkg-config)
- ("xsltproc" ,libxslt)))
+ (list docbook-xml-4.3 ; to build the manpages
+ docbook-xsl
+ `(,glib "bin") ; for glib-mkenums
+ gnome-common ; TODO: Why is this needed?
+ gobject-introspection
+ gtk-doc/stable
+ intltool
+ pkg-config
+ libxslt))
(propagated-inputs
- (list glib)) ; required by udisks2.pc
+ (list glib)) ; required by udisks2.pc
(inputs
- `(,acl
- ;; TODO(staging): Make unconditional.
- ,@(if (%current-target-system)
- (list bash-minimal) ; for wrap-program
- '())
- ,cryptsetup
- ,libatasmart
- ,libblockdev
- ,libgudev
- ,polkit
- ,util-linux))
+ (list acl
+ bash-minimal
+ cryptsetup
+ libatasmart
+ libblockdev
+ libgudev
+ polkit
+ util-linux))
(outputs '("out"
- "doc")) ;5 MiB of gtk-doc HTML
+ "doc")) ;5 MiB of gtk-doc HTML
(arguments
- `(#:tests? #f ; requiring system message dbus
- #:disallowed-references ("doc") ;enforce separation of "doc"
- #:configure-flags
- (list "--enable-man"
- "--enable-available-modules" ; Such as lvm2, btrfs, etc.
- "--localstatedir=/var"
- "--enable-fhs-media" ;mount devices in /media, not /run/media
- (string-append "--with-html-dir="
- (assoc-ref %outputs "doc")
- "/share/doc/udisks/html")
- (string-append "--with-udevdir=" %output "/lib/udev"))
- #:make-flags
- (let* ((docbook-xsl-name-version ,(string-append
- (package-name docbook-xsl) "-"
- (package-version docbook-xsl)))
- (docbook-xsl-catalog-file (string-append
- (assoc-ref %build-inputs "docbook-xsl")
- "/xml/xsl/"
- docbook-xsl-name-version
- "/catalog.xml"))
- (docbook-xml-catalog-file (string-append
- (assoc-ref %build-inputs "docbook-xml")
- "/xml/dtd/docbook/catalog.xml")))
- ;; Reference the catalog files required to build the manpages.
- (list (string-append "XML_CATALOG_FILES=" docbook-xsl-catalog-file " "
- docbook-xml-catalog-file)))
- #:phases
- (modify-phases %standard-phases
- (add-before
- 'configure 'fix-girdir
- (lambda _
- ;; Install introspection data to its own output.
- (substitute* "udisks/Makefile.in"
- (("girdir = .*")
- "girdir = $(datadir)/gir-1.0\n")
- (("typelibsdir = .*")
- "typelibsdir = $(libdir)/girepository-1.0\n"))))
- (add-after 'install 'wrap-udisksd
- (lambda* (#:key outputs inputs #:allow-other-keys)
- ;; Tell 'udisksd' where to find the 'mount' command.
- (let ((out (assoc-ref outputs "out"))
- (utils (assoc-ref inputs "util-linux"))
- (cryptsetup (assoc-ref inputs "cryptsetup"))
- (parted (assoc-ref inputs "parted")))
- (wrap-program (string-append out "/libexec/udisks2/udisksd")
- `("PATH" ":" prefix
- (,(string-append utils "/bin") ;for 'mount'
- ;; cryptsetup is required for setting encrypted
- ;; partitions, e.g. in gnome-disks
- ,(string-append cryptsetup "/sbin")
- "/run/current-system/profile/bin"
- "/run/current-system/profile/sbin")))
- #t))))))
+ (list
+ #:tests? #f ; requiring system message dbus
+ #:disallowed-references '("doc") ;enforce separation of "doc"
+ #:configure-flags
+ #~(list "--enable-man"
+ "--enable-available-modules" ; Such as lvm2, btrfs, etc.
+ "--localstatedir=/var"
+ "--enable-fhs-media" ;mount devices in /media, not /run/media
+ (string-append "--with-html-dir=" #$output:doc
+ "/share/doc/udisks/html")
+ (string-append "--with-udevdir=" #$output "/lib/udev"))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'configure 'fix-girdir
+ (lambda _
+ ;; Install introspection data to its own output.
+ (substitute* "udisks/Makefile.in"
+ (("girdir = .*")
+ "girdir = $(datadir)/gir-1.0\n")
+ (("typelibsdir = .*")
+ "typelibsdir = $(libdir)/girepository-1.0\n"))))
+ (add-after 'install 'wrap-udisksd
+ (lambda _
+ ;; Tell 'udisksd' where to find the 'mount' command.
+ (let ((utils #$(this-package-input "util-linux"))
+ (cryptsetup #$(this-package-input "cryptsetup"))
+ (parted #$(this-package-input "parted")))
+ (wrap-program (string-append #$output "/libexec/udisks2/udisksd")
+ `("PATH" ":" prefix
+ (,(string-append utils "/bin") ;for 'mount'
+ ;; cryptsetup is required for setting encrypted
+ ;; partitions, e.g. in gnome-disks
+ ,(string-append cryptsetup "/sbin")
+ "/run/current-system/profile/bin"
+ "/run/current-system/profile/sbin")))))))))
(home-page "https://www.freedesktop.org/wiki/Software/udisks/")
(synopsis "Disk manager service")
(description
@@ -1819,7 +1773,6 @@ message bus.")
glibc-locales ;for tests
gobject-introspection
gtk-doc
- libxml2 ;for XML_CATALOG_FILES
libxslt
pkg-config
vala
@@ -1834,6 +1787,7 @@ message bus.")
coreutils-minimal
dbus
elogind
+ libxcrypt
shadow))
(propagated-inputs
;; accountsservice.pc 'Requires' these:
@@ -2209,14 +2163,25 @@ iChat interoperability, and multi-user chats and Tubes using the
(sha256
(base32
"1l61ydb0zv2ffilwpapgz5mm3bznr28zl16xqbxnz6kdsrb6cimr"))))
+ (outputs '("out" "doc"))
(build-system meson-build-system)
- (arguments '(#:tests? #f ;require the colord system service
- ;; Building documentation fails with: "Cannot build man pages
- ;; without docbook-xsl-ns".
- #:configure-flags (list "-Ddocs=false" "-Dman=false")))
+ (arguments
+ (list
+ #:tests? #f ;require the colord system service
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'install 'split-package
+ (lambda _
+ (let* ((old (string-append #$output "/share/gtk-doc"))
+ (new (string-append #$output:doc "/share/gtk-doc")))
+ (mkdir-p (dirname new))
+ (rename-file old new)))))))
(native-inputs
- (list gettext-minimal
+ (list docbook-xsl
+ gettext-minimal
gobject-introspection
+ gtk-doc/stable
+ libxslt
pkg-config
vala))
(inputs
@@ -2404,29 +2369,10 @@ files.
(base32 "13216b8rfkzak5k6bvpx6jvqv3cnbgpijnjwj8a8d3kq4cl0a1ra"))))
(build-system gnu-build-system)
(native-inputs
- `(("gettext" ,gettext-minimal)
- ("docbook-xsl" ,docbook-xsl)
- ("docbook-xml" ,docbook-xml-4.3)
- ("xsltproc" ,libxslt)))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'build 'locate-catalog-files
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((xmldoc (string-append (assoc-ref inputs "docbook-xml")
- "/xml/dtd/docbook"))
- (xsldoc (string-append (assoc-ref inputs "docbook-xsl")
- "/xml/xsl/docbook-xsl-"
- ,(package-version docbook-xsl))))
- (for-each (lambda (file)
- (substitute* file
- (("http://.*/docbookx\\.dtd")
- (string-append xmldoc "/docbookx.dtd"))))
- (find-files "man" "\\.xml$"))
- (substitute* "man/Makefile"
- (("http://.*/docbook\\.xsl")
- (string-append xsldoc "/manpages/docbook.xsl")))
- #t))))))
+ (list gettext-minimal
+ docbook-xsl
+ docbook-xml-4.3
+ libxslt))
(home-page "https://www.freedesktop.org/wiki/Software/xdg-user-dirs/")
(synopsis "Tool to help manage \"well known\" user directories")
(description "xdg-user-dirs is a tool to help manage \"well known\" user
@@ -2501,11 +2447,7 @@ applications define in those files.")
(base32
"1i5iw6ri0w9clwpqf40xmsh4isc8xvx2lyf2r5g34886i6rsdgpn"))))
(build-system perl-build-system)
- (inputs
- ;; TODO(staging): Make unconditional.
- (if (%current-target-system)
- (list bash-minimal) ; for wrap-program
- '()))
+ (inputs (list bash-minimal)) ;for wrap-program
;; If the tests are fixed, add perl-test-pod, perl-test-pod-coverage, and
;; perl-test-tiny as native-inputs.
(propagated-inputs
@@ -2536,8 +2478,7 @@ applications define in those files.")
#~(,(string-append
(getenv "PERL5LIB")
":" out "/lib/perl5/site_perl"))))))
- '("mimeopen" "mimetype")))
- #t)))))
+ '("mimeopen" "mimetype"))))))))
(home-page "https://metacpan.org/release/File-MimeInfo")
(synopsis "Determine file type from the file name")
(description
@@ -2610,19 +2551,16 @@ Python, that binds to the C library @code{uchardet} to increase performance.")
"0z0gk8l6rv4np29kfdalmy4q3900005sxhjg0jz1aa8irdcsp1qz"))))
(build-system python-build-system)
(native-inputs
- `(("asciidoc" ,asciidoc)
- ("gettext" ,gettext-minimal)
- ("gobject-introspection" ,gobject-introspection)))
+ (list asciidoc
+ gettext-minimal
+ gobject-introspection))
(inputs
- ;; TODO(staging): Make unconditional.
- `(,@(if (%current-target-system)
- (list bash-minimal)
- '())
- ,gobject-introspection
- ,gtk+
- ,libappindicator
- ,libnotify
- ,udisks))
+ (list bash-minimal
+ gobject-introspection
+ gtk+
+ libappindicator
+ libnotify
+ udisks))
(propagated-inputs
(list python-docopt python-pygobject python-keyutils python-pyxdg
python-pyyaml))
@@ -2693,7 +2631,6 @@ Its features include:
(native-inputs
(list gettext-minimal
pkg-config
- libxml2 ;for XML_CATALOG_FILES
libxslt
docbook-xsl
docbook-xml))
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index 8fecd95940..02c662f3aa 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -690,9 +690,9 @@ clone.")
(srfi srfi-1)
((guix build guile-build-system)
#:select (target-guile-effective-version))
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:imported-modules ((guix build guile-build-system)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-command
@@ -2061,6 +2061,7 @@ games.")
(list pkg-config))
(inputs
(list alsa-lib
+ bash-minimal
bullet
freetype
glew
@@ -2304,6 +2305,7 @@ scripted in a Python-like language.")
(list pkg-config))
(inputs
(list alsa-lib
+ bash-minimal
brotli
dbus
embree
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 57e6c23f41..68daa8b7c3 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -72,7 +72,7 @@
;;; Copyright © 2022 Roman Riabenko <roman@riabenko.com>
;;; Copyright © 2022, 2023 zamfofex <zamfofex@twdb.moe>
;;; Copyright © 2022 Gabriel Arazas <foo.dogsquared@gmail.com>
-;;; Copyright © 2022, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2022, 2023, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2022 Hendursaga <hendursaga@aol.com>
;;; Copyright © 2022 Parnikkapore <poomklao@yahoo.com>
;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
@@ -1192,7 +1192,8 @@ allows users to brew while offline.")
#:tests? #f)) ; TODO need busted package to run tests
;; Omit Lua-Socket dependency to disable automatic updates.
(inputs
- (list ffmpeg
+ (list bash-minimal
+ ffmpeg
fluid-3
freetype
lua
@@ -4696,7 +4697,8 @@ Battle for Wesnoth}.")))
(native-inputs
(list pkg-config intltool))
(inputs
- (list gstreamer
+ (list bash-minimal
+ gstreamer
gst-plugins-base ; playbin plugin
gst-plugins-good ; for wav playback
gtk+))
@@ -4715,8 +4717,7 @@ Battle for Wesnoth}.")))
(let ((out (assoc-ref outputs "out"))
(gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
(wrap-program (string-append out "/bin/gamine")
- `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))))
- #t)))))
+ `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path)))))))))
(home-page "http://gamine-game.sourceforge.net/")
(synopsis "Mouse and keyboard discovery for children")
(description
@@ -5451,8 +5452,7 @@ http://lavachat.symlynx.com/unix/")
(("data = \"data\"")
(string-append "data = \""
(assoc-ref outputs "out")
- "/share/redeclipse/data\"")))
- #t))
+ "/share/redeclipse/data\"")))))
(delete 'configure) ; no configure script
(add-after 'set-paths 'set-sdl-paths
(lambda* (#:key inputs #:allow-other-keys)
@@ -5471,8 +5471,7 @@ http://lavachat.symlynx.com/unix/")
(string-append out "/share/redeclipse/data"))
(mkdir-p (string-append out "/lib/redeclipse"))
(symlink (string-append out "/share/redeclipse/data")
- (string-append out "/lib/redeclipse/data")))
- #t))
+ (string-append out "/lib/redeclipse/data")))))
(add-after 'copy-data 'wrap-program
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@@ -5501,12 +5500,11 @@ exec -a \"$0\" ~a/.redeclipse_server_linux-real~%"
(string-append out)
(string-append bin))))
(chmod "redeclipse_linux" #o555)
- (chmod "redeclipse_server_linux" #o555)))
- #t)))))
+ (chmod "redeclipse_server_linux" #o555))))))))
(native-inputs
(list pkg-config))
(inputs
- (list curl freetype glu
+ (list bash-minimal curl freetype glu
(sdl-union (list sdl2 sdl2-image sdl2-mixer))))
(home-page "https://redeclipse.net/")
(synopsis "Arena shooter derived from the Cube 2 engine")
@@ -5963,14 +5961,15 @@ safety of the Chromium vessel.")
(native-inputs
(list gperf pkg-config))
(inputs
- `(("cairo" ,cairo)
- ("fribidi" ,fribidi)
- ("gettext" ,gettext-minimal)
- ("libpng" ,libpng)
- ("librsvg" ,(librsvg-for-system))
- ("libpaper" ,libpaper)
- ("netpbm" ,netpbm)
- ("sdl" ,(sdl-union (list sdl sdl-mixer sdl-ttf sdl-image)))))
+ (list bash-minimal
+ cairo
+ fribidi
+ gettext-minimal
+ libpng
+ (librsvg-for-system)
+ libpaper
+ netpbm
+ (sdl-union (list sdl sdl-mixer sdl-ttf sdl-image))))
;; TODO: Use system fonts rather than those in data/fonts
(arguments
`(#:make-flags `("VER_DATE=2018-09-02"
@@ -5987,8 +5986,7 @@ safety of the Chromium vessel.")
(add-before 'install 'no-sys-cache
(lambda _ ;do not rebuild system conf cache
(substitute* "Makefile"
- (("kbuildsycoca4") ""))
- #t))
+ (("kbuildsycoca4") ""))))
(add-after 'install 'fix-import
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@@ -6206,7 +6204,8 @@ Linux / Mac OS X servers, and an auto mapper with a VT100 map display.")
"laby-use-tmpdir-from-runtime.patch"))))
(build-system glib-or-gtk-build-system)
(inputs
- (list gdk-pixbuf
+ (list bash-minimal
+ gdk-pixbuf
lablgtk3
(librsvg-for-system)
ocaml-lablgtk3-sourceview3
@@ -8425,6 +8424,7 @@ original.")
unzip))
(inputs
(list alsa-lib
+ bash-minimal
curl
libjpeg-turbo
libmodplug
@@ -8691,8 +8691,7 @@ when packaged in Blorb container files or optionally from individual files.")
(add-after 'unpack 'prevent-build-error
(lambda _
(substitute* "inc/My/Builder.pm"
- (("-Werror") ""))
- #t))
+ (("-Werror") ""))))
(add-after 'install 'install-desktop-file-and-icons
(lambda* (#:key outputs #:allow-other-keys)
(let* ((share (string-append (assoc-ref outputs "out") "/share"))
@@ -8715,8 +8714,7 @@ when packaged in Blorb container files or optionally from individual files.")
(copy-file
(string-append "frozen-bubble-icon-" dim ".png")
(string-append dir "/frozen-bubble.png"))))
- '("16" "32" "48" "64"))))
- #t))
+ '("16" "32" "48" "64"))))))
(add-after 'install 'wrap-perl-libs
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
@@ -8726,20 +8724,20 @@ when packaged in Blorb container files or optionally from individual files.")
`("PERL5LIB" ":" prefix
(,(string-append perl5lib ":" out
"/lib/perl5/site_perl")))))
- (find-files "bin" ".")))
- #t)))))
+ (find-files "bin" "."))))))))
(native-inputs
(list perl-alien-sdl perl-capture-tiny perl-locale-maketext-lexicon
perl-module-build pkg-config))
(inputs
- `(("glib" ,glib)
- ("perl-compress-bzip2" ,perl-compress-bzip2)
- ("perl-file-sharedir" ,perl-file-sharedir)
- ("perl-file-slurp" ,perl-file-slurp)
- ("perl-file-which" ,perl-file-which)
- ("perl-ipc-system-simple" ,perl-ipc-system-simple)
- ("perl-sdl" ,perl-sdl)
- ("sdl" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-pango sdl-ttf)))))
+ (list bash-minimal
+ glib
+ perl-compress-bzip2
+ perl-file-sharedir
+ perl-file-slurp
+ perl-file-which
+ perl-ipc-system-simple
+ perl-sdl
+ (sdl-union (list sdl sdl-image sdl-mixer sdl-pango sdl-ttf))))
(home-page "http://frozen-bubble.org/")
(synopsis "Puzzle with bubbles")
(description
@@ -10822,8 +10820,7 @@ kingdom.")
(snippet
'(begin
;; Octocat seems to be non-free. Oddly, Debian doesn't strip it.
- (delete-file-recursively "data/ball/octocat")
- #t))))
+ (delete-file-recursively "data/ball/octocat")))))
(build-system copy-build-system)
(arguments
`(#:install-plan
@@ -10888,20 +10885,19 @@ kingdom.")
(string-append "LOCALEDIR=" out "/share/locale")
(string-append "SDL_CPPFLAGS=-I"
sdl
- "/include/SDL2/")))
- #t))
+ "/include/SDL2/")))))
(add-after 'install 'fix-some-broken-fonts
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out")))
(wrap-program (string-append out "/bin/neverball")
`("LANG" = ("en_US.utf8")))
(wrap-program (string-append out "/bin/neverputt")
- `("LANG" = ("en_US.utf8"))))
- #t)))))
+ `("LANG" = ("en_US.utf8")))))))))
(native-inputs
`(("gettext" ,gettext-minimal))) ;for msgfmt
(inputs
- `(("libjpeg" ,libjpeg-turbo)
+ `(("bash-minimal" ,bash-minimal)
+ ("libjpeg" ,libjpeg-turbo)
("libpng" ,libpng)
("libvorbis" ,libvorbis)
("physfs" ,physfs)
diff --git a/gnu/packages/gawk.scm b/gnu/packages/gawk.scm
index 16a4ca5b0a..aadf3d5180 100644
--- a/gnu/packages/gawk.scm
+++ b/gnu/packages/gawk.scm
@@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012-2016, 2023 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2018, 2022 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2018, 2022, 2023 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2021, 2022 Marius Bakke <marius@gnu.org>
;;; Copyright © 2022 Paul A. Patience <paul@apatience.com>
;;;
@@ -39,13 +39,13 @@
(define-public gawk
(package
(name "gawk")
- (version "5.2.1")
+ (version "5.3.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/gawk/gawk-" version
".tar.xz"))
(sha256
- (base32 "0kvy78jdv6lww1s6y2jm1w2cj46mz1fhflgdj9bwq64y3ywm6db7"))))
+ (base32 "02x97iyl9v84as4rkdrrkfk2j4vy4r3hpp3rkp3gh3qxs79id76a"))))
(build-system gnu-build-system)
(arguments
(list #:phases
@@ -79,6 +79,10 @@
(("#! /usr/bin/gawk")
(string-append "#!" (which "gawk")))))))))
+ ;; Tests explicitly require en_US.UTF-8, fr_FR.UTF-8, ru_RU.UTF-8 and
+ ;; ja_JP.UTF-8.
+ (native-inputs (list (libc-utf8-locales-for-target)))
+
(inputs (list libsigsegv
;; Use the full-fledged Bash package, otherwise the test suite
;; sometimes fail non-deterministically.
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index 7be4cb9bb1..963e9862fa 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -13,6 +13,8 @@
;;; Copyright © 2021 Chris Marusich <cmmarusich@gmail.com>
;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
;;; Copyright © 2022 Greg Hogan <code@greghogan.com>
+;;; Copyright © 2023 Bruno Victal <mirai@makinata.eu>
+;;; Copyright © 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2024 Zheng Junjie <873216071@qq.com>
;;;
;;; This file is part of GNU Guix.
@@ -50,6 +52,7 @@
#:use-module (guix build-system gnu)
#:use-module (guix build-system trivial)
#:use-module (guix gexp)
+ #:use-module (guix search-paths)
#:use-module (guix utils)
#:use-module (srfi srfi-1)
#:use-module (ice-9 match)
@@ -131,7 +134,7 @@ where the OS part is overloaded to denote a specific ABI---into GCC
(list 'quasiquote
(append
'("--enable-plugin"
- "--enable-languages=c,c++"
+ "--enable-languages=c,c++,objc,obj-c++"
"--disable-multilib"
"--with-system-zlib"
@@ -369,25 +372,7 @@ where the OS part is overloaded to denote a specific ABI---into GCC
(substitute* "Makefile"
(("^TOPLEVEL_CONFIGURE_ARGUMENTS=(.*)$" _ rest)
"TOPLEVEL_CONFIGURE_ARGUMENTS=\n")))))))
-
- (native-search-paths
- ;; Use the language-specific variables rather than 'CPATH' because they
- ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'.
- ;; The intent is to allow headers that are in the search path to be
- ;; treated as "system headers" (headers exempt from warnings) just like
- ;; the typical /usr/include headers on an FHS system.
- (list (search-path-specification
- (variable "C_INCLUDE_PATH")
- (files '("include")))
- (search-path-specification
- (variable "CPLUS_INCLUDE_PATH")
- ;; Add 'include/c++' here so that <cstdlib>'s "#include_next
- ;; <stdlib.h>" finds GCC's <stdlib.h>, not libc's.
- (files '("include/c++" "include")))
- (search-path-specification
- (variable "LIBRARY_PATH")
- (files '("lib" "lib64")))))
-
+ (native-search-paths %gcc-search-paths)
(properties `((gcc-libc . ,(assoc-ref inputs "libc"))))
(synopsis "GNU Compiler Collection")
(description
@@ -435,7 +420,7 @@ Go. It also includes runtime support libraries for these languages.")
;; For native builds of some GCC versions the C++ include path needs to
;; be adjusted so it does not interfere with GCC's own build processes.
(substitute-keyword-arguments (package-arguments parent)
- ((#:modules modules %gnu-build-system-modules)
+ ((#:modules modules %default-gnu-imported-modules)
`((srfi srfi-1)
,@modules))
((#:phases phases)
@@ -489,7 +474,38 @@ Go. It also includes runtime support libraries for these languages.")
"pa" "sh" "tilepro" "xtensa")))))
;; Override inherited texinfo-5 with latest version.
(native-inputs (list perl ;for manpages
- texinfo))))
+ texinfo))
+ (arguments
+ ;; Since 'arguments' is a function of the package's version, define
+ ;; 'parent' such that the 'arguments' thunk gets to see the right
+ ;; version.
+ (let ((parent (package
+ (inherit gcc-4.8)
+ (version (package-version this-package)))))
+ (if (%current-target-system)
+ (package-arguments parent)
+ ;; For native builds of GCC 4.9 and GCC 5, the C++ include path needs
+ ;; to be adjusted so it does not interfere with GCC's own build processes.
+ (substitute-keyword-arguments (package-arguments parent)
+ ((#:modules modules %default-gnu-modules)
+ `((srfi srfi-1)
+ ,@modules))
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (add-after 'set-paths 'adjust-CPLUS_INCLUDE_PATH
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((libc (assoc-ref inputs "libc"))
+ (gcc (assoc-ref inputs "gcc")))
+ (setenv "CPLUS_INCLUDE_PATH"
+ (string-join (fold delete
+ (string-split (getenv "CPLUS_INCLUDE_PATH")
+ #\:)
+ (list (string-append libc "/include")
+ (string-append gcc "/include/c++")))
+ ":"))
+ (format #t
+ "environment variable `CPLUS_INCLUDE_PATH' changed to ~a~%"
+ (getenv "CPLUS_INCLUDE_PATH")))))))))))))
(define gcc-canadian-cross-objdump-snippet
;; Fix 'libcc1/configure' error when cross-compiling GCC. Without that,
@@ -520,6 +536,10 @@ Go. It also includes runtime support libraries for these languages.")
"gcc-5.0-libvtv-runpath.patch"
"gcc-5-source-date-epoch-1.patch"
"gcc-5-source-date-epoch-2.patch"
+ "gcc-5.5.0-libstdc++-xmlcatalog.patch"
+ "gcc-13.2.0-libstdc++-docbook-xsl-uri.patch"
+ "gcc-13.2.0-libstdc++-info-install-fix.patch"
+ "gcc-7-libsanitizer-fsconfig-command.patch"
"gcc-6-libsanitizer-mode-size.patch"
"gcc-fix-texi2pod.patch"
"gcc-5-hurd.patch"
@@ -544,6 +564,7 @@ Go. It also includes runtime support libraries for these languages.")
(base32
"0i89fksfp6wr1xg9l8296aslcymv2idn60ip31wr9s4pwin7kwby"))
(patches (search-patches "gcc-strmov-store-file-names.patch"
+ "gcc-7-libsanitizer-fsconfig-command.patch"
"gcc-6-libsanitizer-mode-size.patch"
"gcc-6-source-date-epoch-1.patch"
"gcc-6-source-date-epoch-2.patch"
@@ -664,6 +685,7 @@ Go. It also includes runtime support libraries for these languages.")
"0qg6kqc5l72hpnj4vr6l0p69qav0rh4anlkk3y55540zy3klc6dq"))
(patches (search-patches "gcc-strmov-store-file-names.patch"
"gcc-7-libsanitizer-mode-size.patch"
+ "gcc-7-libsanitizer-fsconfig-command.patch"
"gcc-5.0-libvtv-runpath.patch"))))
(description
"GCC is the GNU Compiler Collection. It provides compiler front-ends
@@ -705,7 +727,9 @@ It also includes runtime support libraries for these languages.")
(sha256
(base32
"13ygjmd938m0wmy946pxdhz9i1wq7z4w10l6pvidak0xxxj9yxi7"))
- (patches (search-patches "gcc-9-strmov-store-file-names.patch"
+ (patches (search-patches "gcc-13.2.0-libstdc++-docbook-xsl-uri.patch"
+ "gcc-13.2.0-libstdc++-info-install-fix.patch"
+ "gcc-9-strmov-store-file-names.patch"
"gcc-9-asan-fix-limits-include.patch"
"gcc-5.0-libvtv-runpath.patch"))
(modules '((guix build utils)))
@@ -723,7 +747,8 @@ It also includes runtime support libraries for these languages.")
(base32
"1h87lcfaga0ydsf4pkhwlnjr8mky5ix8npbv6iy3jvzlzm1ra415"))
(patches (search-patches "gcc-9-strmov-store-file-names.patch"
- "gcc-5.0-libvtv-runpath.patch"))
+ "gcc-5.0-libvtv-runpath.patch"
+ "gcc-10-libsanitizer-no-crypt.patch"))
(modules '((guix build utils)))
(snippet gcc-canadian-cross-objdump-snippet)))
(properties
@@ -737,31 +762,20 @@ It also includes runtime support libraries for these languages.")
(define-public gcc-11
(package
(inherit gcc-8)
- (version "11.3.0")
+ (version "11.4.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/gcc/gcc-"
version "/gcc-" version ".tar.xz"))
(sha256
(base32
- "0fdclcwf728wbq52vphfcjywzhpsjp3kifzj3pib3xcihs0z4z5l"))
+ "1ncd7akww0hl5kkmw1dj3qgqp3phdrr5dfnm7jia9s07n0ib4b9z"))
(patches (search-patches "gcc-9-strmov-store-file-names.patch"
"gcc-5.0-libvtv-runpath.patch"
- "gcc-10-tree-sra-union-handling.patch"))
+ "gcc-10-libsanitizer-no-crypt.patch"
+ "gcc-11-libstdc++-hurd-libpthread.patch"))
(modules '((guix build utils)))
(snippet gcc-canadian-cross-objdump-snippet)))
- (arguments
- (substitute-keyword-arguments (package-arguments gcc-8)
- ((#:phases phases #~%standard-phases)
- (if (target-hurd?)
- #~(modify-phases #$phases
- (add-after 'unpack 'patch-hurd-libpthread
- (lambda _
- (define patch
- #$(local-file
- (search-patch "gcc-11-libstdc++-hurd-libpthread.patch")))
- (invoke "patch" "--force" "-p1" "-i" patch))))
- phases))))
(properties
`((compiler-cpu-architectures
("aarch64" ,@%gcc-11-aarch64-micro-architectures)
@@ -782,7 +796,9 @@ It also includes runtime support libraries for these languages.")
(base32
"0fwcvbgpmjdfj5drfs8k6bkqsmxmz8pv4cmmjcd451p7k57mv6ll"))
(patches (search-patches "gcc-12-strmov-store-file-names.patch"
- "gcc-5.0-libvtv-runpath.patch"))
+ "gcc-5.0-libvtv-runpath.patch"
+ "gcc-12-libsanitizer-no-crypt.patch"
+ "gcc-11-libstdc++-hurd-libpthread.patch"))
(modules '((guix build utils)))
(snippet gcc-canadian-cross-objdump-snippet)))
(properties
@@ -805,7 +821,8 @@ It also includes runtime support libraries for these languages.")
(base32
"1nj3qyswcgc650sl3h0480a171ixp33ca13zl90p61m689jffxg2"))
(patches (search-patches "gcc-12-strmov-store-file-names.patch"
- "gcc-5.0-libvtv-runpath.patch"))
+ "gcc-5.0-libvtv-runpath.patch"
+ "gcc-13-libsanitizer-no-crypt.patch"))
(modules '((guix build utils)))
(snippet gcc-canadian-cross-objdump-snippet)))
(properties
@@ -913,12 +930,8 @@ It also includes runtime support libraries for these languages.")
"MAKEINFOFLAGS = --force\n"))))))))
(native-search-paths
;; This package supports nothing but the C language.
- (list (search-path-specification
- (variable "C_INCLUDE_PATH")
- (files '("include")))
- (search-path-specification
- (variable "LIBRARY_PATH")
- (files '("lib")))))))
+ (list $C_INCLUDE_PATH
+ $LIBRARY_PATH))))
(define-public (make-libstdc++ gcc)
@@ -932,7 +945,7 @@ using compilers other than GCC."
#:out-of-source? #t
#:modules `((srfi srfi-1)
(srfi srfi-26)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:phases
#~(modify-phases %standard-phases
#$@(if (version>=? (package-version gcc) "11")
@@ -983,7 +996,7 @@ using compilers other than GCC."
(assoc-ref inputs "powerpc64le-patch"))))))
'()))
;; Force rs6000 (i.e., powerpc) libdir to be /lib and not /lib64.
- (add-before 'chdir 'fix-rs6000-libdir
+ (add-after 'unpack 'fix-rs6000-libdir
(lambda _
(when (file-exists? "gcc/config/rs6000")
(substitute* (find-files "gcc/config/rs6000")
@@ -1080,7 +1093,7 @@ as the 'native-search-paths' field."
(native-search-paths search-paths)
(arguments
(substitute-keyword-arguments (package-arguments gcc)
- ((#:modules modules %gnu-build-system-modules)
+ ((#:modules modules %default-gnu-modules)
`(,@modules
(srfi srfi-1)
(srfi srfi-26)
@@ -1199,7 +1212,8 @@ misnomer.")))
(define-public libgccjit-11 (make-libgccjit gcc-11))
(define-public libgccjit-12 (make-libgccjit gcc-12))
-(define-public libgccjit libgccjit-10)
+;; Use the 'gcc' variable from above to track the same version.
+(define-public libgccjit (make-libgccjit gcc))
(define (make-gccgo gcc)
"Return a gccgo package based on GCC."
@@ -1287,106 +1301,6 @@ provides the GNU compiler for the Go programming language."))
(define-public gccgo-13
(make-gccgo gcc-13))
-(define %objc-search-paths
- (list (search-path-specification
- (variable "OBJC_INCLUDE_PATH")
- (files '("include")))
- (search-path-specification
- (variable "LIBRARY_PATH")
- (files '("lib" "lib64")))))
-
-(define-public gcc-objc-4.8
- (custom-gcc gcc-4.8 "gcc-objc" '("objc")
- %objc-search-paths))
-
-(define-public gcc-objc-4.9
- (custom-gcc gcc-4.9 "gcc-objc" '("objc")
- %objc-search-paths))
-
-(define-public gcc-objc-5
- (custom-gcc gcc-5 "gcc-objc" '("objc")
- %objc-search-paths))
-
-(define-public gcc-objc-6
- (custom-gcc gcc-6 "gcc-objc" '("objc")
- %objc-search-paths))
-
-(define-public gcc-objc-7
- (custom-gcc gcc-7 "gcc-objc" '("objc")
- %objc-search-paths))
-
-(define-public gcc-objc-8
- (custom-gcc gcc-8 "gcc-objc" '("objc")
- %objc-search-paths))
-
-(define-public gcc-objc-9
- (custom-gcc gcc-9 "gcc-objc" '("objc")
- %objc-search-paths))
-
-(define-public gcc-objc-10
- (custom-gcc gcc-10 "gcc-objc" '("objc")
- %objc-search-paths))
-
-(define-public gcc-objc-11
- (custom-gcc gcc-11 "gcc-objc" '("objc")
- %objc-search-paths))
-
-(define-public gcc-objc-12
- (custom-gcc gcc-12 "gcc-objc" '("objc")
- %objc-search-paths))
-
-(define-public gcc-objc gcc-objc-11)
-
-(define %objc++-search-paths
- (list (search-path-specification
- (variable "OBJCPLUS_INCLUDE_PATH")
- (files '("include")))
- (search-path-specification
- (variable "LIBRARY_PATH")
- (files '("lib" "lib64")))))
-
-(define-public gcc-objc++-4.8
- (custom-gcc gcc-4.8 "gcc-objc++" '("obj-c++")
- %objc++-search-paths))
-
-(define-public gcc-objc++-4.9
- (custom-gcc gcc-4.9 "gcc-objc++" '("obj-c++")
- %objc++-search-paths))
-
-(define-public gcc-objc++-5
- (custom-gcc gcc-5 "gcc-objc++" '("obj-c++")
- %objc++-search-paths))
-
-(define-public gcc-objc++-6
- (custom-gcc gcc-6 "gcc-objc++" '("obj-c++")
- %objc++-search-paths))
-
-(define-public gcc-objc++-7
- (custom-gcc gcc-7 "gcc-objc++" '("obj-c++")
- %objc++-search-paths))
-
-(define-public gcc-objc++-8
- (custom-gcc gcc-8 "gcc-objc++" '("obj-c++")
- %objc++-search-paths))
-
-(define-public gcc-objc++-9
- (custom-gcc gcc-9 "gcc-objc++" '("obj-c++")
- %objc++-search-paths))
-
-(define-public gcc-objc++-10
- (custom-gcc gcc-10 "gcc-objc++" '("obj-c++")
- %objc++-search-paths))
-
-(define-public gcc-objc++-11
- (custom-gcc gcc-11 "gcc-objc++" '("obj-c++")
- %objc++-search-paths))
-
-(define-public gcc-objc++-12
- (custom-gcc gcc-12 "gcc-objc++" '("obj-c++")
- %objc++-search-paths))
-
-(define-public gcc-objc++ gcc-objc++-11)
-
(define (make-libstdc++-doc gcc)
"Return a package with the libstdc++ documentation for GCC."
(package
@@ -1401,40 +1315,31 @@ provides the GNU compiler for the Go programming language."))
libxslt
docbook-xml
docbook-xsl
+ docbook2x
graphviz)) ;for 'dot', invoked by 'doxygen'
(inputs '())
(propagated-inputs '())
(arguments
- '(#:out-of-source? #t
- #:tests? #f ;it's just documentation
- #:phases (modify-phases %standard-phases
- (add-before 'configure 'chdir
- (lambda _
- (chdir "libstdc++-v3")))
- (add-before 'configure 'set-xsl-directory
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((docbook (assoc-ref inputs "docbook-xsl")))
- (substitute* (find-files "doc"
- "^Makefile\\.in$")
- (("@XSL_STYLE_DIR@")
- (string-append
- docbook "/xml/xsl/"
- (strip-store-file-name docbook)))))))
- (replace 'build
- (lambda _
- ;; XXX: There's also a 'doc-info' target, but it
- ;; relies on docbook2X, which itself relies on
- ;; DocBook 4.1.2, which is not really usable
- ;; (lacks a catalog.xml.)
- (invoke "make"
- "doc-html"
- "doc-man")))
- (replace 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (invoke "make"
- "doc-install-html"
- "doc-install-man")))))))
+ (list
+ #:out-of-source? #t
+ #:tests? #f ;it's just documentation
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'configure 'chdir
+ (lambda _
+ (chdir "libstdc++-v3")))
+ (replace 'build
+ (lambda* (#:key make-flags #:allow-other-keys)
+ (apply invoke `("make" ,@make-flags
+ "doc-info"
+ "doc-html"
+ "doc-man"))))
+ (replace 'install
+ (lambda* (#:key make-flags #:allow-other-keys)
+ (apply invoke `("make" ,@make-flags
+ "doc-install-info"
+ "doc-install-html"
+ "doc-install-man")))))))
(properties (alist-delete 'hidden? (package-properties gcc)))))
(define-public libstdc++-doc-5
diff --git a/gnu/packages/gd.scm b/gnu/packages/gd.scm
index 149b82468c..2c5ba59915 100644
--- a/gnu/packages/gd.scm
+++ b/gnu/packages/gd.scm
@@ -6,6 +6,7 @@
;;; Copyright © 2017, 2021 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -30,6 +31,7 @@
#:use-module (guix download)
#:use-module (gnu packages)
#:use-module (gnu packages perl)
+ #:use-module (gnu packages perl-check)
#:use-module (gnu packages image)
#:use-module (gnu packages imagemagick)
#:use-module (gnu packages fontutils)
@@ -43,38 +45,36 @@
;; Note: With libgd.org now pointing to github.com, genuine old
;; tarballs are no longer available. Notably, versions 2.0.x are
;; missing.
- (version "2.3.2")
+ (version "2.3.3")
(source (origin
- (method url-fetch)
- (uri (string-append
- "https://github.com/libgd/libgd/releases/download/gd-"
- version "/libgd-" version ".tar.xz"))
- (sha256
- (base32
- "1yypywkh8vphcy4qqpf51kxpb0a3r7rjqk3fc61rpn70hiq092j7"))
- (patches
- (search-patches "gd-fix-tests-on-i686.patch"
- "gd-brect-bounds.patch"
- ;; Drop when
- ;; https://github.com/libgd/libgd/issues/691
- ;; is solved.
- "gd-Revert-fix-303-gdlib.pc.patch"))))
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/libgd/libgd/releases/download/gd-"
+ version "/libgd-" version ".tar.xz"))
+ (sha256
+ (base32
+ "0qas3q9xz3wgw06dm2fj0i189rain6n60z1vyq50d5h7wbn25s1z"))
+ (patches
+ (search-patches "gd-fix-tests-on-i686.patch"
+ "gd-brect-bounds.patch"))))
(build-system gnu-build-system)
(arguments
- ;; As recommended by github.com/libgd/libgd/issues/278 to fix rounding
- ;; issues on aarch64 and other architectures.
- `(#:make-flags '("CFLAGS=-ffp-contract=off")
- #:configure-flags '("--disable-static")
- #:phases
- (modify-phases %standard-phases
- ;; This test is known to fail on most architectures:
- ;; https://github.com/libgd/libgd/issues/359
- ;; TODO Replace this substitution with an upstream bug fix.
- (add-after 'unpack 'disable-failing-test
- (lambda _
- (substitute* "tests/gdimagegrayscale/basic.c"
- (("return gdNumFailures\\(\\)")
- "return 0")))))))
+ ;; As recommended by github.com/libgd/libgd/issues/278 to fix rounding
+ ;; issues on aarch64 and other architectures.
+ (list #:make-flags #~(list "CFLAGS=-ffp-contract=off")
+ #:configure-flags #~(list "--disable-static")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'install 'remove-libtool-archives
+ ;; Libtool archives lists the whole transitive dependencies,
+ ;; which is unnecessary unless producing static archives and
+ ;; leads to overlinking, e.g. causing the configure script of
+ ;; texlive-bin to fail due to looking for a transitive jpeg
+ ;; library.
+ (lambda _
+ (for-each delete-file
+ (find-files (string-append #$output "/lib")
+ "\\.la$")))))))
(native-inputs
(list pkg-config))
(inputs
@@ -102,14 +102,14 @@ most common applications of GD involve website development.")
(define-public perl-gd
(package
(name "perl-gd")
- (version "2.73")
+ (version "2.78")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://cpan/authors/id/R/RU/RURBAN/"
"GD-" version ".tar.gz"))
(sha256
- (base32 "0arjpa8id6k5yjxfq0j2hsinhhjzjch5lwk6gscf48l54drrw729"))))
+ (base32 "1r3fpr8jhpwi48i66rickiphyj442hypsqnk4df4yjs2ym5hacb8"))))
(build-system perl-build-system)
(inputs
(list fontconfig
@@ -119,7 +119,8 @@ most common applications of GD involve website development.")
libjpeg-turbo
zlib))
(native-inputs
- (list perl-extutils-pkgconfig))
+ (list perl-extutils-pkgconfig
+ perl-test-nowarnings))
(arguments
(list #:make-maker-flags
#~(list (string-append "--lib_jpeg_path="
diff --git a/gnu/packages/gdb.scm b/gnu/packages/gdb.scm
index f832202d18..8fc2ec14a1 100644
--- a/gnu/packages/gdb.scm
+++ b/gnu/packages/gdb.scm
@@ -64,7 +64,7 @@
`(#:tests? #f ;FIXME: 217 unexpected failures
#:out-of-source? #t
#:modules ((srfi srfi-1)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:phases (modify-phases %standard-phases
(add-after 'unpack 'patch-paths
(lambda* (#:key inputs #:allow-other-keys)
diff --git a/gnu/packages/genealogy.scm b/gnu/packages/genealogy.scm
index c1cd26a9c4..36c05fff28 100644
--- a/gnu/packages/genealogy.scm
+++ b/gnu/packages/genealogy.scm
@@ -22,6 +22,7 @@
#:use-module (guix git-download)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages fonts)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages geo)
@@ -54,7 +55,8 @@
`(("gettext" ,gettext-minimal)
("intltool" ,intltool)))
(inputs
- (list cairo
+ (list bash-minimal
+ cairo
font-gnu-freefont
geocode-glib
gexiv2
@@ -100,8 +102,7 @@
#f))))
inputs)))
(wrap-program (string-append out "/bin/gramps")
- `("GI_TYPELIB_PATH" ":" prefix ,(filter identity paths))))
- #t))
+ `("GI_TYPELIB_PATH" ":" prefix ,(filter identity paths))))))
(add-after 'wrap 'glib-or-gtk-wrap
(assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
(home-page "https://gramps-project.org")
diff --git a/gnu/packages/genimage.scm b/gnu/packages/genimage.scm
index 4a9d24fe78..13f3dd67b0 100644
--- a/gnu/packages/genimage.scm
+++ b/gnu/packages/genimage.scm
@@ -61,7 +61,7 @@
(arguments
`(#:modules
((ice-9 match)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'guixify
diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index 985fa77231..b4ac1c52f9 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -2709,43 +2709,45 @@ orienteering sport.")
(base32 "1gpfbppfajc8d6b9alw9fdzgaa83w26kl6fff1395bc9gal215ms"))))
(build-system gnu-build-system)
(inputs
- `(("bzip2" ,bzip2)
- ("cairo" ,cairo)
- ("fftw" ,fftw)
- ("freetype" ,freetype)
- ("gdal" ,gdal)
- ("geos" ,geos)
- ("glu" ,glu)
- ("libpng" ,libpng)
- ("libtiff" ,libtiff)
- ("mesa" ,mesa)
- ("mariadb-dev" ,mariadb "dev")
- ("mariadb-lib" ,mariadb "lib")
- ("netcdf" ,netcdf)
- ("openblas" ,openblas)
- ("perl" ,perl)
- ("postgresql" ,postgresql)
- ("proj" ,proj)
- ("python" ,python)
- ("python-dateutil" ,python-dateutil)
- ("python-numpy" ,python-numpy)
- ("python-wxpython" ,python-wxpython)
- ("readline" ,readline)
- ("sqlite" ,sqlite)
- ("wxwidgets" ,wxwidgets)
- ("zlib" ,zlib)
- ("zstd" ,zstd "lib")))
+ (list bash-minimal
+ bzip2
+ cairo
+ fftw
+ freetype
+ gdal
+ geos
+ glu
+ lapack
+ libpng
+ libtiff
+ mesa
+ `(,mariadb "dev")
+ `(,mariadb "lib")
+ netcdf
+ openblas
+ perl
+ postgresql
+ proj
+ python
+ python-dateutil
+ python-numpy
+ python-wxpython
+ readline
+ sqlite
+ wxwidgets
+ zlib
+ `(,zstd "lib")))
(native-inputs
- `(("bash" ,bash-minimal)
- ("bison" ,bison)
- ("flex" ,flex)
- ("pkg-config" ,pkg-config)))
+ (list bash-minimal
+ bison
+ flex
+ pkg-config))
(arguments
- `(#:tests? #f ; No tests
+ `(#:tests? #f ; No tests
#:modules ((guix build gnu-build-system)
((guix build python-build-system) #:prefix python:)
(guix build utils))
- #:imported-modules (,@%gnu-build-system-modules
+ #:imported-modules (,@%default-gnu-imported-modules
(guix build python-build-system))
#:phases
(modify-phases %standard-phases
@@ -2799,16 +2801,14 @@ orienteering sport.")
(symlink (string-append dir "/include")
(string-append out "/include"))
(symlink (string-append dir "/lib")
- (string-append out "/lib")))
- #t))
+ (string-append out "/lib")))))
(add-after 'install-links 'python:wrap
(assoc-ref python:%standard-phases 'wrap))
(add-after 'python:wrap 'wrap-with-python-interpreter
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(wrap-program (string-append out "/bin/" ,grassxx)
- `("GRASS_PYTHON" = (,(which "python3"))))
- #t))))))
+ `("GRASS_PYTHON" = (,(which "python3"))))))))))
(synopsis "GRASS Geographic Information System")
(description
"GRASS (Geographic Resources Analysis Support System), is a Geographic
diff --git a/gnu/packages/gettext.scm b/gnu/packages/gettext.scm
index 1408cc4cb4..6e22b5a2d3 100644
--- a/gnu/packages/gettext.scm
+++ b/gnu/packages/gettext.scm
@@ -278,10 +278,6 @@ from Markdown files.")
(wrap-program file
`("PERL5LIB" ":" prefix (,path))))
(find-files bin "\\.*$")))))
- (add-before 'check 'disable-failing-tests
- (lambda _
- ;; FIXME: fails despite of importing SGMLS
- (delete-file "t/fmt-sgml.t")))
#$@(if (system-hurd?)
#~((add-after 'unpack 'skip-tests/hurd
(lambda _
@@ -293,14 +289,15 @@ from Markdown files.")
(list gettext-minimal
perl-module-build
docbook-xsl
- libxml2
libxslt
;; For tests.
+ docbook-sgml-4.1
docbook-xml-4.1.2
perl-test-pod
(texlive-updmap.cfg)))
(inputs
(list bash-minimal
+ opensp
perl-gettext
perl-pod-parser
perl-sgmls
diff --git a/gnu/packages/ghostscript.scm b/gnu/packages/ghostscript.scm
index 502b41bb99..e95069cdd1 100644
--- a/gnu/packages/ghostscript.scm
+++ b/gnu/packages/ghostscript.scm
@@ -2,7 +2,7 @@
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2014, 2015, 2016, 2017 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2013, 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2015-2017, 2019, 2023 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2017, 2018, 2019, 2021, 2023 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
@@ -118,17 +118,30 @@ paper size.")
(base32
"1nmp0hb7c4a315vv1mqw2cbckvca8bzh1cv3gdvwwy24w9qba6p3"))))
(build-system gnu-build-system)
- (inputs (list perl))
+ (inputs (list perl perl-ipc-run3))
(native-inputs
(list libpaper))
(arguments
- (list #:tests? #f ;FIXME: requires files not present in tarball
- #:configure-flags
- ;; Help the build system locate Perl when cross-compiling.
- (if (%current-target-system)
- #~(list (string-append "ac_cv_path_PERL="
- (search-input-file %build-inputs "bin/perl")))
- #~'())))
+ (list
+ #:tests? #f ; FIXME: requires files not present in tarball
+ #:configure-flags
+ ;; Help the build system locate Perl when cross-compiling.
+ (if (%current-target-system)
+ #~(list (string-append "ac_cv_path_PERL="
+ (search-input-file %build-inputs "bin/perl")))
+ #~'())
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'install 'wrap-scripts
+ (lambda _
+ (let ((perl5lib (getenv "PERL5LIB")))
+ (for-each
+ (lambda (file)
+ (wrap-program file
+ `("PERL5LIB" ":" prefix
+ (,(string-append perl5lib ":" #$output
+ "/lib/perl5/site_perl")))))
+ (find-files (string-append #$output "/bin") "."))))))))
(synopsis "Collection of utilities for manipulating PostScript documents")
(description
"PSUtils is a collection of utilities for manipulating PostScript
@@ -148,7 +161,6 @@ printing, and psresize, for adjusting page sizes.")
(package
(name "ghostscript")
(version "9.56.1")
- (replacement ghostscript/fixed)
(source
(origin
(method url-fetch)
@@ -161,7 +173,9 @@ printing, and psresize, for adjusting page sizes.")
"1r5qash65m6ignki6z72q4rlai9ka99xrxnmqd19n02has00cd6l"))
(patches (search-patches "ghostscript-no-header-creationdate.patch"
"ghostscript-no-header-id.patch"
- "ghostscript-no-header-uuid.patch"))
+ "ghostscript-no-header-uuid.patch"
+ "ghostscript-CVE-2023-36664.patch"
+ "ghostscript-CVE-2023-36664-fixup.patch"))
(modules '((guix build utils)))
(snippet
;; Remove bundled libraries. The bundled OpenJPEG is a patched fork so
@@ -280,12 +294,6 @@ output file formats and printers.")
(home-page "https://www.ghostscript.com/")
(license license:agpl3+)))
-(define ghostscript/fixed
- (package-with-patches
- ghostscript
- (search-patches "ghostscript-CVE-2023-36664.patch"
- "ghostscript-CVE-2023-36664-fixup.patch")))
-
(define-public ghostscript/x
(package/inherit ghostscript
(name (string-append (package-name ghostscript) "-with-x"))
diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm
index b2676e654e..e46363d9c9 100644
--- a/gnu/packages/gimp.scm
+++ b/gnu/packages/gimp.scm
@@ -354,7 +354,7 @@ buffers.")
(list
#:modules `((ice-9 popen)
(ice-9 rdelim)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'remove-gcc-reference
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index b11046f05d..6e8e9bd8cf 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016, 2019, 2020, 2021, 2023 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2021 Mark H Weaver <mhw@netris.org>
@@ -9,7 +9,7 @@
;;; Copyright © 2017 Petter <petter@mykolab.ch>
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
-;;; Copyright © 2019, 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2019, 2021, 2022, 2023, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2019, 2020, 2021 Marius Bakke <marius@gnu.org>
;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
@@ -768,7 +768,7 @@ The intltool collection can be used to do these things:
"1jl7gsr7aclb9nvqazr039m86y7f7ivfhl2pixcrbfqjkb97r6kb"))))
(build-system gnu-build-system)
(inputs
- (list libxml2 python-libxml2 python))
+ (list bash-minimal libxml2 python-libxml2 python))
(arguments
(list
#:phases
@@ -1046,7 +1046,7 @@ useful for C++.")
(define-public python-pygobject
(package
(name "python-pygobject")
- (version "3.46.0")
+ (version "3.47.0")
(source
(origin
(method url-fetch)
@@ -1054,16 +1054,17 @@ useful for C++.")
(version-major+minor version)
"/pygobject-" version ".tar.xz"))
(sha256
- (base32 "1z6aagb46fhhdd0bb3zk6dfdw3s4y2fva0vv3jpwjj6mvar0hq22"))
+ (base32
+ "082dpm34a350bnhgmkdv8myxzjgnrflckkpn46vnvs36f7bbfdij"))
(modules '((guix build utils)))
(snippet
- ;; We disable these tests in a snippet so that they are inherited
- ;; by the Python 2 variant which is built differently.
- #~(with-directory-excursion "tests"
- ;; FIXME: These tests require Gdk and/or Gtk 4.
- (for-each delete-file
- '("test_atoms.py" "test_overrides_gtk.py"
- "test_overrides_gdk.py"))))))
+ '(begin
+ ;; We disable these tests in a snippet so that they are inherited
+ ;; by the Python 2 variant which is built differently.
+ (with-directory-excursion "tests"
+ ;; FIXME: These tests require Gdk and/or Gtk 4.
+ (for-each delete-file
+ '("test_atoms.py" "test_overrides_gtk.py")))))))
(build-system meson-build-system)
(arguments
(list
@@ -1078,7 +1079,7 @@ useful for C++.")
(list `(,glib "bin")
pkg-config
python-pytest
- python-wrapper)) ; For patching shebangs
+ python-wrapper)) ;for tests
(inputs
(list python python-pycairo gobject-introspection))
(propagated-inputs
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 489f23865b..eeac3df499 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -288,7 +288,6 @@
gobject-introspection
gsettings-desktop-schemas
gtk-doc/stable
- libxml2 ;for XML_CATALOG_FILES
pkg-config))
(propagated-inputs
;; These libraries are required by the .pc file.
@@ -669,7 +668,6 @@ of writing test cases for asynchronous interactions.")
gtk-doc/stable
;; Would only be required by configure flag "--enable-extended-tests".
;;gtx
- libxml2 ;for XML_CATALOG_FILES
pkg-config
python-pygobject
python-wrapper
@@ -731,7 +729,6 @@ of known objects without needing a central registrar.")
gobject-introspection
gtk-doc/stable
libtool
- libxml2 ;for XML_CATALOG_FILES
pkg-config
vala
xorg-server-for-tests))
@@ -1785,7 +1782,6 @@ client devices can handle.")
`(,glib "bin")
gtk-doc/stable
gobject-introspection
- libxml2 ;for XML_CATALOG_FILES
pkg-config
vala))
(inputs
@@ -2641,7 +2637,6 @@ GNOME Desktop.")
gettext-minimal
`(,glib "bin")
glib ;for m4 macros
- libxml2 ;for XML_CATALOG_FILES
libxslt ;for documentation
pkg-config
python-wrapper)) ;for tests
@@ -3075,21 +3070,18 @@ configuring CUPS.")
(sha256
(base32
"1h7nn9pz797bfmpz3d0s46yjv4ydppnzwifzdx0d6shm8vwkx3zf"))))
+ (outputs '("out" "doc"))
(build-system meson-build-system)
(arguments
(list
#:phases
#~(modify-phases %standard-phases
- (add-after 'unpack 'fix-docbook
- (lambda* (#:key inputs #:allow-other-keys)
- ;; Don't attempt to download XSL schema.
- (substitute* "meson.build"
- (("http://docbook.sourceforge.net/release/xsl-ns/current\
-/manpages/docbook.xsl")
- (string-append #$(this-package-native-input "docbook-xsl")
- "/xml/xsl/docbook-xsl-"
- #$(package-version docbook-xsl)
- "/manpages/docbook.xsl"))))))))
+ (add-after 'install 'move-doc
+ (lambda _
+ (let* ((old (string-append #$output "/share/gtk-doc"))
+ (new (string-append #$output:doc "/share/gtk-doc")))
+ (mkdir-p (dirname new))
+ (rename-file old new)))))))
(propagated-inputs (list gdk-pixbuf glib)) ;in Requires of libnotify.pc.
(inputs (list gtk+ libpng))
(native-inputs
@@ -3256,7 +3248,6 @@ API add-ons to make GTK+ widgets OpenGL-capable.")
gobject-introspection
hicolor-icon-theme
itstool
- libxml2 ;for XML_CATALOG_FILES
libxslt ;for xsltproc
python
python-pygobject
@@ -4736,7 +4727,6 @@ and RDP protocols.")
(native-inputs
(list bash-completion
libxslt ;for xsltproc
- libxml2 ;for XML_CATALOG_FILES
docbook-xml-4.2
docbook-xsl
`(,glib "bin")
@@ -5250,7 +5240,6 @@ and the GLib main loop, to integrate well with GNOME applications.")
gettext-minimal
`(,glib "bin") ;for gdbus-codegen, etc.
gobject-introspection
- libxml2 ;for XML_CATALOG_FILES
libxslt
pkg-config
python
@@ -5707,9 +5696,8 @@ output devices.")
(native-inputs
(modify-inputs (package-native-inputs colord-minimal)
(append bash-completion
- docbook-xsl-1.79.1
+ docbook-xsl
gtk-doc/stable
- libxml2 ;for XML_CATALOG_FILES
libxslt
sane-backends
vala))))) ;for VAPI, needed by simple-scan
@@ -5878,8 +5866,7 @@ faster results and to avoid unnecessary server load.")
dbus
;; For man pages.
docbook-xsl
- libxslt ; for 'xsltproc'
- libxml2)) ; for 'XML_CATALOG_FILES'
+ libxslt)) ; for 'xsltproc'
(inputs
(list libgudev libusb))
(propagated-inputs
@@ -6052,7 +6039,6 @@ services for numerous locations.")
docbook-xsl
gettext-minimal
`(,glib "bin") ;for glib-mkenums
- libxml2 ;for XML_CATALOG_FILES
libxslt
perl
pkg-config))
@@ -6723,7 +6709,8 @@ discovery protocols.")
(propagated-inputs
(list dconf))
(inputs
- (list gtk+
+ (list bash-minimal
+ gtk+
gdk-pixbuf
at-spi2-core
cairo
@@ -7325,7 +7312,8 @@ principles are simplicity and standards compliance.")
python-pep8
xorg-server-for-tests))
(inputs
- (list gobject-introspection
+ (list bash-minimal
+ gobject-introspection
gtk+
python-wrapper
python-pygobject))
@@ -7712,24 +7700,22 @@ such as gzip tarballs.")
(,(dirname (search-input-file (or native-inputs inputs)
"bin/gdbus"))))))))
#:configure-flags
- '("-Ddocbook=false" ; FIXME: disabled because of docbook validation error
- "-Dman=false" ; FIXME: disabled because of docbook validation error
- "-Delogind=true"
+ '("-Delogind=true"
"-Dsystemd=false"
"-Dsystemd_session=disable"
"-Dsystemd_journal=false")))
(build-system meson-build-system)
(native-inputs
- (list docbook-xml
+ (list docbook-xml-4.1.2
docbook-xsl
`(,glib "bin") ; for glib-compile-schemas, etc.
intltool
- libxml2 ;for 'XML_CATALOG_FILES'
libxslt
pkg-config
xmlto))
(inputs
- (list elogind
+ (list bash-minimal
+ elogind
gnome-desktop
gsettings-desktop-schemas
gtk+
@@ -8237,6 +8223,10 @@ Microsoft Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.")
(delete-file-recursively "tests/book-migration")
(substitute* "tests/CMakeLists.txt"
(("add_subdirectory\\(book-migration\\)") ""))))
+ (add-after 'unpack 'patch-locale-in-test
+ (lambda _
+ (substitute* "tests/libebook/client/test-book-client-custom-summary.c"
+ (("en_US\\.UTF-8") "C.UTF-8"))))
(add-after 'unpack 'patch-paths
(lambda _
(substitute* '("tests/test-server-utils/e-test-server-utils.c"
@@ -8366,7 +8356,8 @@ Evolution (hence the name), but is now used by other packages as well.")
;; caribou-1.0.pc refers to all these.
(list libgee libxklavier libxtst gtk+))
(inputs
- `(("clutter" ,clutter)
+ `(("bash" ,bash-minimal) ; for wrap-program
+ ("clutter" ,clutter)
("dconf" ,dconf)
("gtk+-2" ,gtk+-2)
("python-pygobject" ,python-pygobject)))
@@ -9463,6 +9454,7 @@ printf '~a is deprecated. Use the \"gnome-extensions\" CLI or \
(inputs
(list accountsservice
bash-minimal
+ caribou
docbook-xsl
evolution-data-server
gcr
@@ -10444,7 +10436,8 @@ specified duration and save it as a GIF encoded animated image file.")
`(,gtk+ "bin")
pkg-config))
(inputs
- (list gsettings-desktop-schemas
+ (list bash-minimal
+ gsettings-desktop-schemas
gtk+
libhandy-0.0
libsecret
@@ -11798,7 +11791,7 @@ mp3, Ogg Vorbis and FLAC")
(arguments
`(#:imported-modules ((guix build python-build-system)
(guix build glib-or-gtk-build-system)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:modules ((guix build glib-or-gtk-build-system)
(guix build utils)
@@ -11816,14 +11809,18 @@ mp3, Ogg Vorbis and FLAC")
(gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
(wrap-program (string-append out "/bin/soundconverter")
`("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))
- `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))))
- #t)))))
+ `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path)))) #t)))))
(native-inputs
`(("intltool" ,intltool)
("pkg-config" ,pkg-config)
("glib:bin" ,glib "bin")))
(inputs
- (list gtk+ python python-pygobject gstreamer gst-plugins-base))
+ (list bash-minimal
+ gtk+
+ python
+ python-pygobject
+ gstreamer
+ gst-plugins-base))
(home-page "https://soundconverter.org/")
(synopsis "Convert between audio formats with a graphical interface")
(description
@@ -12108,7 +12105,8 @@ advanced image management tool")
("python-pytest-runner" ,python-pytest-runner)
("python-pytest" ,python-pytest)))
(inputs
- `(("cairo" ,cairo)
+ `(("bash" ,bash-minimal) ; for wrap-program
+ ("cairo" ,cairo)
("dbus-glib" ,dbus-glib)
("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
("gtk+" ,gtk+)
@@ -12292,7 +12290,8 @@ higher level porcelain stuff.")
(wrap-program prog
`("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH"))))))))))
(inputs
- (list glib
+ (list bash-minimal
+ glib
gpgme
gsettings-desktop-schemas
gspell
@@ -12983,7 +12982,8 @@ It uses pandoc as back-end for parsing Markdown.")
(list valgrind)
'())))
(inputs
- `(("glib" ,glib)
+ `(("bash" ,bash-minimal) ; for wrap-program
+ ("glib" ,glib)
("json-glib" ,json-glib)
("libevdev" ,libevdev)
("libsystemd" ,elogind)
@@ -13054,7 +13054,8 @@ your operating-system definition:
gobject-introspection
pkg-config))
(inputs
- (list adwaita-icon-theme
+ (list bash-minimal
+ adwaita-icon-theme
gtk+
guile-3.0 ;for wrap-script
libratbag
@@ -13155,7 +13156,8 @@ provided there is a DBus service present:
pkg-config
yelp-tools))
(inputs
- (list gst-plugins-base
+ (list bash-minimal
+ gst-plugins-base
gst-plugins-good
gstreamer
gtk+
@@ -13664,7 +13666,8 @@ world.")
("pkg-config" ,pkg-config)
("xmllint" ,libxml2)))
(inputs
- `(("enchant" ,enchant)
+ `(("bash" ,bash-minimal) ; for wrap-program
+ ("enchant" ,enchant)
("glib" ,glib)
("goocanvas" ,goocanvas)
("gtk" ,gtk+)
diff --git a/gnu/packages/gnucash.scm b/gnu/packages/gnucash.scm
index 84741fa280..554c1a4b1e 100644
--- a/gnu/packages/gnucash.scm
+++ b/gnu/packages/gnucash.scm
@@ -81,7 +81,7 @@
#:test-target "check"
#:configure-flags #~(list "-DWITH_PYTHON=ON")
#:make-flags #~(list "GUILE_AUTO_COMPILE=0")
- #:imported-modules `(,@%gnu-build-system-modules
+ #:imported-modules `(,@%default-gnu-imported-modules
(guix build cmake-build-system)
(guix build glib-or-gtk-build-system))
#:modules '((guix build cmake-build-system)
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index e7c583a266..00d69ef810 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -21,7 +21,7 @@
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2021 Nikita Domnitskii <nikita@domnitskii.me>
;;; Copyright © 2021 Aleksandr Vityazev <avityazev@posteo.org>
-;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2024 Zheng Junjie <873216071@qq.com>
;;;
@@ -45,6 +45,7 @@
#:use-module (gnu packages)
#:use-module (gnu packages adns)
#:use-module (gnu packages autotools)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages base)
#:use-module (gnu packages curl)
#:use-module (gnu packages crypto)
@@ -93,69 +94,63 @@
(define-public libgpg-error
(package
(name "libgpg-error")
- (version "1.45")
+ (version "1.47")
(source
(origin
- (method url-fetch)
- (uri (string-append "mirror://gnupg/libgpg-error/libgpg-error-"
- version ".tar.bz2"))
- (sha256
- (base32
- "09haz1kk48b8q0hd58g98whylah0fp121yfgjms7pzsbzgj8w3sp"))))
+ (method url-fetch)
+ (uri (string-append "mirror://gnupg/libgpg-error/libgpg-error-"
+ version ".tar.bz2"))
+ (sha256
+ (base32
+ "1nwvpg5inpjzbq7r6wqsgmwcnfqyahcw9hi8discqvmrcq4nfg4y"))))
(build-system gnu-build-system)
(arguments
- (cond
- ((%current-target-system)
- (list
- #:modules '((guix build gnu-build-system)
- (guix build utils))
- #:phases
- #~(modify-phases %standard-phases
- ;; If this is left out, some generated header
- ;; files will be sprinkled with ‘\c’, which
- ;; the compiler won't like.
- (add-after 'unpack 'fix-gen-lock-obj.sh
- (lambda _
- (substitute* "src/gen-lock-obj.sh"
- (("if test -n `echo -n`") "if ! test -n `echo -n`"))))
- ;; When cross-compiling, some platform specific properties cannot
- ;; be detected. Create a symlink to the appropriate platform
- ;; file if required. Note that these platform files depend on
- ;; both the operating system and architecture!
- ;;
- ;; See Cross-Compiling section at:
- ;; https://github.com/gpg/libgpg-error/blob/master/README
- (add-after 'unpack 'cross-symlinks
- (lambda _
- (define (link triplet source)
- (symlink (string-append "lock-obj-pub." triplet ".h")
- (string-append "src/syscfg/lock-obj-pub."
- source ".h")))
- #$(let ((target (%current-target-system)))
- (cond ((target-linux? target)
- (match (string-take target
- (string-index target #\-))
- ("armhf"
- `(link "arm-unknown-linux-gnueabi" "linux-gnu"))
- ("mips64el"
- `(link "mips-unknown-linux-gnu" "linux-gnu"))
- ;; Don't always link to the "linux-gnu"
- ;; configuration, as this is not correct for
- ;; all architectures.
- (_ #t)))
- (#t #t))))))))
- ((system-hurd?)
- (list
- #:phases
- #~(modify-phases %standard-phases
- (add-after 'unpack 'skip-tests
- (lambda _
- (substitute*
- "tests/t-syserror.c"
- (("(^| )main *\\(.*" all)
- (string-append all "{\n exit (77);//"))))))))
- (else
- '())))
+ (list
+ #:configure-flags #~(list "--enable-install-gpg-error-config")
+ #:phases
+ #~(modify-phases %standard-phases
+ #$@(cond
+ ((%current-target-system)
+ ;; If this is left out, some generated header
+ ;; files will be sprinkled with ‘\c’, which
+ ;; the compiler won't like.
+ #~((add-after 'unpack 'fix-gen-lock-obj.sh
+ (lambda _
+ (substitute* "src/gen-lock-obj.sh"
+ (("if test -n `echo -n`") "if ! test -n `echo -n`"))))
+ ;; When cross-compiling, some platform specific properties cannot
+ ;; be detected. Create a symlink to the appropriate platform
+ ;; file if required. Note that these platform files depend on
+ ;; both the operating system and architecture!
+ ;;
+ ;; See Cross-Compiling section at:
+ ;; https://github.com/gpg/libgpg-error/blob/master/README
+ (add-after 'unpack 'cross-symlinks
+ (lambda _
+ (define (link triplet source)
+ (symlink (string-append "lock-obj-pub." triplet ".h")
+ (string-append "src/syscfg/lock-obj-pub."
+ source ".h")))
+ #$(let ((target (%current-target-system)))
+ (cond ((target-linux? target)
+ (match (string-take target
+ (string-index target #\-))
+ ("armhf"
+ `(link "arm-unknown-linux-gnueabi" "linux-gnu"))
+ ("mips64el"
+ `(link "mips-unknown-linux-gnu" "linux-gnu"))
+ ;; Don't always link to the "linux-gnu"
+ ;; configuration, as this is not correct for
+ ;; all architectures.
+ (_ #t)))
+ (#t #t)))))))
+ ((system-hurd?)
+ #~((add-after 'unpack 'skip-tests
+ (lambda _
+ (substitute* "tests/t-syserror.c"
+ (("(^| )main *\\(.*" all)
+ (string-append all "{\n exit (77);//")))))))
+ (else #~())))))
(native-inputs (list gettext-minimal))
(home-page "https://gnupg.org")
(synopsis "Library of error values for GnuPG components")
@@ -228,7 +223,7 @@ generation.")
(define-public libassuan
(package
(name "libassuan")
- (version "2.5.5")
+ (version "2.5.6")
(source
(origin
(method url-fetch)
@@ -236,7 +231,7 @@ generation.")
version ".tar.bz2"))
(sha256
(base32
- "1r1lvcp67gn5lfrj1g388sd77ca6qwnmxndirdysd71gk362z34f"))))
+ "09pllidbv01km8qrls21dcz1qwa22ydqyy1r9r79152kilhjgzg9"))))
(build-system gnu-build-system)
(arguments (if (%current-target-system)
(list #:configure-flags
@@ -445,7 +440,12 @@ libskba (working with X.509 certificates and CMS data).")
(sha256
(base32 "17hfigfnq6xz45b5xrp299f68b5mwx0aysd51sx5v4nf8yp4w79n"))))
(build-system gnu-build-system)
- (native-inputs
+ (arguments
+ (list
+ #:configure-flags
+ #~(let ((gpg-bins (dirname (search-input-file %build-inputs "/bin/gpg"))))
+ (list (string-append "--enable-fixed-path=" gpg-bins)))))
+ (inputs
(list gnupg))
(propagated-inputs
;; As required by the pkg-config's Requires.private.
@@ -749,16 +749,16 @@ parties.")
(native-inputs
;; autoconf-wrapper is required due to the non-standard
;; 'configure phase.
- `(("autoconf" ,autoconf-wrapper)
- ("automake" ,automake)))
- (inputs (list perl
+ (list autoconf-wrapper automake))
+ (inputs (list bash-minimal
+ perl
perl-text-template
perl-mime-tools
perl-gnupg-interface
perl-net-idn-encode
libmd))
(arguments
- `(#:tests? #f ; no test suite
+ `(#:tests? #f ; no test suite
#:phases
(modify-phases %standard-phases
(replace 'configure
@@ -776,8 +776,7 @@ parties.")
"keylookup/Makefile" "sig2dot/Makefile"
"springgraph/Makefile")
(("/usr") out))
- (setenv "CONFIG_SHELL" (which "sh")))
- #t))
+ (setenv "CONFIG_SHELL" (which "sh")))))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys #:rest args)
(let ((out (assoc-ref outputs "out"))
@@ -802,15 +801,13 @@ parties.")
'("caff.1" "pgp-clean.1" "pgp-fixkey.1" "gpgdir.1"
"gpg-key2ps.1" "gpglist.1" "gpg-mailkeys.1"
"gpgparticipants.1" "gpgsigs.1" "gpgwrap.1"
- "process_keys.1" "pgpring.1" "keyanalyze.1")))
- #t))
+ "process_keys.1" "pgpring.1" "keyanalyze.1")))))
(add-after 'install 'wrap-programs
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out")))
(wrap-program
(string-append out "/bin/caff")
- `("PERL5LIB" ":" prefix (,(getenv "PERL5LIB")))))
- #t)))))
+ `("PERL5LIB" ":" prefix (,(getenv "PERL5LIB"))))))))))
(synopsis "Collection of scripts for simplifying gnupg key signing")
(description
"Signing-party is a collection for all kinds of PGP/GnuPG related things,
@@ -958,7 +955,7 @@ passphrase when @code{gpg} is run and needs it.")))
`(#:modules
((ice-9 match)
(ice-9 ftw)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:phases
(modify-phases
%standard-phases
@@ -972,14 +969,13 @@ passphrase when @code{gpg} is run and needs it.")))
(("." ".." version)
(wrap-program
(string-append bin "pinentry-rofi")
- (list "PATH" ":" 'prefix `(,rofi-bin)))
- #t)))))
+ (list "PATH" ":" 'prefix `(,rofi-bin))))))))
(add-after 'compress-documentation 'installcheck
(lambda* rest
(invoke "make" "installcheck"))))))
(native-inputs
(list autoconf autoconf-archive automake pkg-config texinfo))
- (inputs (list guile-3.0 rofi))
+ (inputs (list bash-minimal guile-3.0 rofi))
(synopsis "Rofi GUI for GnuPG's passphrase input")
(description "Pinentry-rofi is a simple graphical user interface for
passphrase or PIN when required by @code{gpg} or other software. It is using
@@ -1095,16 +1091,15 @@ however, pgpdump produces more detailed and easier to understand output.")
(let ((out (assoc-ref outputs "out"))
(gnupg (assoc-ref inputs "gnupg")))
(wrap-program (string-append out "/bin/gpa")
- `("PATH" ":" prefix (,(string-append gnupg "/bin"))))
- #t))))))
- (native-inputs
- (list pkg-config))
+ `("PATH" ":" prefix (,(string-append gnupg "/bin"))))))))))
+ (native-inputs (list pkg-config))
(inputs
- `(("gnupg" ,gnupg)
- ("gpgme" ,gpgme)
- ("libassuan" ,libassuan)
- ("libgpg-error" ,libgpg-error)
- ("gtk+-2" ,gtk+-2)))
+ (list bash-minimal
+ gnupg
+ gpgme
+ libassuan
+ libgpg-error
+ gtk+-2))
(home-page "https://gnupg.org/software/gpa/")
(synopsis "Graphical user interface for GnuPG")
(description
@@ -1129,7 +1124,8 @@ files, to verify signatures, and to manage the private and public keys.")
"10gal2h8ihg7nnzy3adw942axd2ia1rcn1fw3a3v07n5mm8kqrx9"))))
(build-system perl-build-system)
(inputs
- (list gnupg
+ (list bash-minimal
+ gnupg
perl-clone
perl-config-general
perl-file-homedir
diff --git a/gnu/packages/gnustep.scm b/gnu/packages/gnustep.scm
index 2819993d73..c80d7dab02 100644
--- a/gnu/packages/gnustep.scm
+++ b/gnu/packages/gnustep.scm
@@ -30,6 +30,7 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages)
#:use-module (gnu packages base)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages datastructures)
#:use-module (gnu packages xorg)
#:use-module (gnu packages libffcall)
@@ -152,8 +153,7 @@ GCC runtime.
;; The path to wmsetbg in Guix requires 67 extra characters.
(substitute* "src/defaults.c"
(("len = strlen\\(text\\) \\+ 40;")
- (string-append "len = strlen(text) + 107;")))
- #t)))
+ (string-append "len = strlen(text) + 107;"))))))
(add-after 'install 'install-xsession
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@@ -171,8 +171,7 @@ GCC runtime.
(string-map (match-lambda
(#\newline #\space)
(chr chr))
- ,synopsis) out))))
- #t))
+ ,synopsis) out))))))
(add-after 'install-xsession 'wrap
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@@ -180,18 +179,18 @@ GCC runtime.
;; In turn, 'wmaker.inst' wants to invoke 'wmmenugen'
;; etc., so make sure everything is in $PATH.
(wrap-program (string-append bin "/wmaker.inst")
- `("PATH" ":" prefix (,bin)))
- #t))))))
+ `("PATH" ":" prefix (,bin)))))))))
(inputs
- `(("libxmu" ,libxmu)
- ("libxft" ,libxft)
- ("libx11" ,libx11)
- ("libxinerama" ,libxinerama)
- ("fontconfig" ,fontconfig)
- ("libjpeg" ,libjpeg-turbo)
- ("giflib" ,giflib)
- ("libpng" ,libpng)
- ("libtiff" ,libtiff)))
+ (list bash-minimal ;for wrap-program
+ fontconfig
+ giflib
+ libjpeg-turbo
+ libpng
+ libtiff
+ libx11
+ libxft
+ libxinerama
+ libxmu))
(native-inputs
(list pkg-config))
(home-page "https://windowmaker.org/")
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 1ffec770fa..bac6d82ee8 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -119,7 +119,7 @@
(list
#:imported-modules %cargo-utils-modules ;for `generate-all-checksums'
#:modules `((guix build cargo-utils)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:test-target "check-jstests"
#:configure-flags
#~(list
@@ -703,6 +703,7 @@ variable defined below. It requires guile-json to be installed."
(build-system mozilla-build-system)
(inputs
(list alsa-lib
+ bash-minimal
bzip2
cups
dbus-glib
@@ -858,7 +859,7 @@ variable defined below. It requires guile-json to be installed."
(rnrs io ports)
(guix elf)
(guix build gremlin)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'apply-guix-specific-patches
@@ -1618,7 +1619,7 @@ list of languages supported as well as the currently used changeset."
#:modules `((guix build utils) ;find-files
(sxml simple)
(ice-9 regex)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:phases
#~(modify-phases %standard-phases
(add-after 'patch-source-shebangs 'patch-cargo-checksums
@@ -1802,6 +1803,7 @@ ca495991b7852b855"))
`("LD_LIBRARY_PATH" prefix (,pulseaudio-lib ,eudev-lib ,libnotify-lib)))))))))
(inputs
(list alsa-lib
+ bash-minimal
bzip2
cairo
cups
diff --git a/gnu/packages/gps.scm b/gnu/packages/gps.scm
index 09a419d7e9..c6d4608d34 100644
--- a/gnu/packages/gps.scm
+++ b/gnu/packages/gps.scm
@@ -36,6 +36,7 @@
#:use-module (gnu packages)
#:use-module (gnu packages algebra)
#:use-module (gnu packages base)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages build-tools)
#:use-module (gnu packages compression)
#:use-module (gnu packages docbook)
@@ -229,7 +230,8 @@ such as elevation, speed, heart rate, power, temperature, and gear shifts.")
(native-inputs
(list bc pkg-config))
(inputs
- (list bluez
+ (list bash-minimal
+ bluez
dbus
gtk+
libcap
diff --git a/gnu/packages/graph.scm b/gnu/packages/graph.scm
index 179ff450ab..c409b56e19 100644
--- a/gnu/packages/graph.scm
+++ b/gnu/packages/graph.scm
@@ -829,9 +829,9 @@ transformed into common image formats for display or printing.")
"1bmck5fcihj9lr5kd8x624bdi9xhfc13pl4mwzv74jr5lz07kr6d"))))
(build-system gnu-build-system)
(arguments
- `(#:imported-modules (,@%gnu-build-system-modules
+ `(#:imported-modules (,@%default-gnu-imported-modules
(guix build python-build-system))
- #:modules (,@%gnu-build-system-modules
+ #:modules (,@%default-gnu-modules
((guix build python-build-system) #:select (site-packages)))
;; The build process peaks around 4GB/RAM per core.
#:parallel-build? #f
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 3571a45b84..2a52362775 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -21,7 +21,7 @@
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org>
-;;; Copyright © 2020, 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2020, 2021, 2022, 2023, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2020 Gabriel Arazas <foo.dogsquared@gmail.com>
;;; Copyright © 2021 Antoine Côté <antoine.cote@posteo.net>
;;; Copyright © 2021 Andy Tai <atai@atai.org>
@@ -385,7 +385,7 @@ objects!")
(define-public autotrace
(package
(name "autotrace")
- (version "0.31.9")
+ (version "0.31.10")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -394,7 +394,8 @@ objects!")
(file-name (git-file-name name version))
(sha256
(base32
- "0fsg13pg72ac51l3fkzvyf7h9mzbvfxp9vfjfiwkyvx6hbm83apj"))))
+ "0ai91c567c5z560s4zjgjclgca1pm61h8cb8c8q84wg3xvkhmc9x"))
+ (patches (search-patches "autotrace-pkg-config.patch"))))
(build-system gnu-build-system)
(arguments
(list #:configure-flags #~'("--disable-static")
@@ -408,7 +409,16 @@ objects!")
;; or IMAGEMAGICK_; fix that.
(substitute* "autotrace.pc.in"
(("@MAGICK_(LIBS|CFLAGS)@" _ var)
- (string-append "@IMAGEMAGICK_" var "@"))))))))
+ (string-append "@IMAGEMAGICK_" var "@")))))
+ (add-after 'install 'remove-libtool-archives
+ ;; Libtool archives lists the whole transitive dependencies,
+ ;; which is unnecessary unless producing static archives and
+ ;; leads to overlinking, e.g. causing the build of inkscape
+ ;; to fail due to looking for a transitive pstoedit library.
+ (lambda _
+ (for-each delete-file
+ (find-files (string-append #$output "/lib")
+ "\\.la$")))))))
(native-inputs
(list which
autoconf
@@ -422,7 +432,11 @@ objects!")
imagemagick
libjpeg-turbo
libpng
- pstoedit))
+ pstoedit
+ ;; pango is required because of libtool, from the imagemagick
+ ;; library files (.la), which records all its transitive
+ ;; dependencies.
+ pango))
(home-page "https://github.com/autotrace/autotrace")
(synopsis "Bitmap to vector graphics converter")
(description "AutoTrace is a utility for converting bitmap into vector
@@ -874,7 +888,7 @@ exception-handling library.")
(define-public lib2geom
(package
(name "lib2geom")
- (version "1.2")
+ (version "1.3")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -883,52 +897,43 @@ exception-handling library.")
(file-name (git-file-name "lib2geom" version))
(sha256
(base32
- "0dq981g894hmvhd6rmfl1w32mksg9hpvpjs1qvfxrnz87rhkknj8"))))
+ "1ypcn0yxk9ny7qg8s8h3px2wpimhfgkwk7x1548ky12iqmdjjmcn"))))
(build-system cmake-build-system)
(arguments
- `(#:imported-modules ((guix build python-build-system)
+ (list
+ #:imported-modules `((guix build python-build-system)
,@%cmake-build-system-modules)
- #:configure-flags '("-D2GEOM_BUILD_SHARED=ON"
- "-D2GEOM_BOOST_PYTHON=ON"
- ;; Compiling the Cython bindings fail (see:
- ;; https://gitlab.com/inkscape/lib2geom/issues/21).
- "-D2GEOM_CYTHON_BINDINGS=OFF")
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch-python-lib-install-path
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let* ((python-version (@ (guix build python-build-system)
- python-version))
- (python-maj-min-version (python-version
- (assoc-ref inputs "python")))
- (site-package (string-append
- (assoc-ref outputs "out")
- "/lib/python" python-maj-min-version
- "/site-packages")))
- (substitute* '("src/cython/CMakeLists.txt"
- "src/py2geom/CMakeLists.txt")
- (("PYTHON_LIB_INSTALL \"[^\"]*\"")
- (format #f "PYTHON_LIB_INSTALL ~s" site-package))))))
- ,@(if (target-x86-32?)
- `((add-after 'unpack 'skip-faulty-test
- (lambda _
- ;; This test fails on i686 when comparing floating point
- ;; values, probably due to excess precision. However,
- ;; '-fexcess-precision' is not implemented for C++ in
- ;; GCC 10 so just skip it.
- (substitute* "tests/CMakeLists.txt"
- (("bezier-test") "")))))
- '()))))
- (native-inputs `(("python" ,python-wrapper)
- ("googletest" ,googletest)
- ("pkg-config" ,pkg-config)))
- (inputs `(("cairo" ,cairo)
- ("pycairo" ,python-pycairo)
- ("double-conversion" ,double-conversion)
- ("glib" ,glib)
- ("gsl" ,gsl)))
- (propagated-inputs
- (list boost)) ;referred to in 2geom/pathvector.h.
+ #:modules '((guix build cmake-build-system)
+ (guix build utils)
+ ((guix build python-build-system) #:prefix python:))
+ #:configure-flags
+ #~(list "-D2GEOM_BUILD_SHARED=ON"
+ "-D2GEOM_BOOST_PYTHON=ON"
+ ;; Compiling the Cython bindings fail (see:
+ ;; https://gitlab.com/inkscape/lib2geom/issues/21).
+ "-D2GEOM_CYTHON_BINDINGS=OFF")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'patch-python-lib-install-path
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (substitute* '("src/cython/CMakeLists.txt"
+ "src/py2geom/CMakeLists.txt")
+ (("PYTHON_LIB_INSTALL \"[^\"]*\"")
+ (format #f "PYTHON_LIB_INSTALL ~s"
+ (python:site-packages inputs outputs))))))
+ #$@(if (target-x86-32?)
+ #~((add-after 'unpack 'skip-faulty-test
+ (lambda _
+ ;; This test fails on i686 when comparing floating point
+ ;; values, probably due to excess precision. However,
+ ;; '-fexcess-precision' is not implemented for C++ in
+ ;; GCC 10 so just skip it.
+ (substitute* "tests/CMakeLists.txt"
+ (("bezier-test") "")))))
+ #~()))))
+ (native-inputs (list python-wrapper googletest pkg-config))
+ (inputs (list cairo python-pycairo double-conversion glib gsl))
+ (propagated-inputs (list boost)) ;included in 2geom/pathvector.h
(home-page "https://gitlab.com/inkscape/lib2geom/")
(synopsis "C++ 2D graphics library")
(description "2geom is a C++ library of mathematics for paths, curves,
@@ -969,23 +974,38 @@ Angus Johnson}.")
(define-public pstoedit
(package
(name "pstoedit")
- (version "3.77")
+ ;; Do not yet upgrade to 4.0.0, as its include file fails to compile for C
+ ;; project (see: https://github.com/reviczky/pstoedit/issues/2).
+ (version "4.00")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/pstoedit/pstoedit/"
version "/pstoedit-" version ".tar.gz"))
(sha256
(base32
- "02av76j75g5sq3bg353yl6dlllda9ihmmk4c8hvgiscix816nv4s"))))
+ "1sk2mhrjgnlz4a1650p3qxrv6av6qc66ibmy48ckspx7mfp7snh7"))
+ (patches
+ (search-patches "pstoedit-fix-gcc12.patch"
+ "pstoedit-fix-plainC.patch"
+ "pstoedit-pkglibdir.patch"))))
(build-system gnu-build-system)
+ (arguments
+ ;; Avoid keeping extraneous references to libtool exhaustively listed
+ ;; dependencies.
+ (list #:configure-flags #~(list "LDFLAGS=-Wl,--as-needed")))
(native-inputs
(list pkg-config))
(inputs
- `(("ghostscript" ,ghostscript)
- ("imagemagick" ,imagemagick)
- ("libplot" ,plotutils)
- ("libjpeg" ,libjpeg-turbo)
- ("zlib" ,zlib))) ;else libp2edrvmagick++.so fails to link
+ (list ghostscript
+ imagemagick
+ plotutils
+ libjpeg-turbo
+ libzip
+ ;; The following inputs are pulled in by libtool, from the
+ ;; imagemagick library files (.la), which records all its
+ ;; transitive dependencies.
+ glib
+ pango))
(home-page "http://www.pstoedit.net/")
(synopsis "Converter for PostScript and PDF graphics")
(description "The @code{pstoedit} utility allows translating graphics
@@ -1101,7 +1121,7 @@ distills complex, animated scenes into a set of baked geometric results.")
(inputs
(list dbus
glslang
- `(,hwdata "pci")
+ hwdata
imgui-1.86
libx11
mesa
diff --git a/gnu/packages/graphviz.scm b/gnu/packages/graphviz.scm
index c5507e036c..d683ea3ce1 100644
--- a/gnu/packages/graphviz.scm
+++ b/gnu/packages/graphviz.scm
@@ -40,6 +40,7 @@
#:use-module (guix gexp)
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages bison)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
@@ -300,6 +301,7 @@ Graphviz and LaTeX.")
(,(dirname (search-input-file inputs "bin/dot"))))))))))
(inputs
(list at-spi2-core
+ bash-minimal
(librsvg-for-system)
harfbuzz
graphviz
diff --git a/gnu/packages/groff.scm b/gnu/packages/groff.scm
index 94c0f23d7a..d4e1bc2127 100644
--- a/gnu/packages/groff.scm
+++ b/gnu/packages/groff.scm
@@ -34,6 +34,7 @@
#:use-module (guix build-system ruby)
#:use-module (guix gexp)
#:use-module (gnu packages)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages ruby)
#:use-module (gnu packages bison)
#:use-module (gnu packages flex)
@@ -199,17 +200,15 @@ is usually the formatter of \"man\" documentation pages.")
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(install-file "roffit" (string-append out "/bin"))
- (install-file "roffit.1" (string-append out "/share/man/man1"))
- #t)))
+ (install-file "roffit.1"
+ (string-append out "/share/man/man1")))))
(add-after 'install 'wrap-program
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(wrap-program (string-append out "/bin/roffit")
- `("PERL5LIB" ":" prefix (,(getenv "PERL5LIB"))))
- #t))))))
- (native-inputs `(("html-tree" ,perl-html-tree))) ; for test
- (inputs
- (list perl))
+ `("PERL5LIB" ":" prefix (,(getenv "PERL5LIB"))))))))))
+ (native-inputs (list perl-html-tree)) ; for test
+ (inputs (list bash-minimal perl))
(home-page "https://daniel.haxx.se/projects/roffit/")
(synopsis "Convert nroff files to HTML")
(description
@@ -258,7 +257,7 @@ It is typically used to display man pages on a web site.")
"ruby-mustache"
"ruby-nokogiri"))))))))))
(inputs
- (list ruby-kramdown ruby-mustache ruby-nokogiri))
+ (list bash-minimal ruby-kramdown ruby-mustache ruby-nokogiri))
(synopsis
"Build manuals in HTML and Unix man page format from Markdown")
(description
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index b0098e780e..26dd26b796 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -24,7 +24,7 @@
;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2020 Brendan Tildesley <mail@brendan.scot>
;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net>
-;;; Copyright © 2020, 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2020, 2021, 2022, 2023, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2021 Leo Famulari <leo@famulari.name>
;;; Copyright © 2021 Simon Streit <simon@netpanic.org>
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
@@ -61,6 +61,7 @@
#:use-module (guix download)
#:use-module (guix bzr-download)
#:use-module (guix git-download)
+ #:use-module (guix search-paths)
#:use-module ((guix build utils) #:select (alist-replace))
#:use-module (guix build-system cmake)
#:use-module (guix build-system glib-or-gtk)
@@ -179,36 +180,36 @@ such as mate-panel and xfce4-panel.")
(base32 "0r0by563s75xyzz0d0j1nmjqmdrk2x9agk7r57p3v8vqp4v0ffi4"))))
(build-system meson-build-system)
(arguments
- `(#:tests? #f ; see http://lists.gnu.org/archive/html/bug-guix/2013-06/msg00085.html
- #:glib-or-gtk? #t
- #:configure-flags
- (list "-Dtests=disabled")))
+ ;; XXX: Building the tests fail with "test/ps2png.c:29:10: fatal error:
+ ;; cairo.h: No such file or directory".
+ (list
+ #:configure-flags #~(list "-Dtests=disabled")
+ #:glib-or-gtk? #t))
(native-inputs
- `(,@(if (target-hurd?)
- '()
- `(("gobject-introspection" ,gobject-introspection)))
- ("pkg-config" ,pkg-config)
- ("python" ,python-wrapper)))
+ (append (list pkg-config
+ python-wrapper)
+ (if (target-hurd?)
+ '()
+ (list gobject-introspection))))
(inputs
- `(("bash-minimal" ,bash-minimal) ;for glib-or-gtk-wrap
- ,@(if (target-hurd?)
- '()
- `(("drm" ,libdrm)))
- ("ghostscript" ,ghostscript)
- ("libspectre" ,libspectre)
- ,@(if (target-hurd?)
- '()
- `(("poppler" ,poppler)))))
+ (append
+ (list bash-minimal ;for glib-or-gtk-wrap
+ ghostscript
+ libspectre)
+ (if (target-hurd?)
+ '()
+ (list libdrm
+ poppler))))
(propagated-inputs
- `(("fontconfig" ,fontconfig)
- ("freetype" ,freetype)
- ("glib" ,glib)
- ("libpng" ,libpng)
- ("pixman" ,pixman)
- ("x11" ,libx11)
- ("xcb" ,libxcb)
- ("xext" ,libxext)
- ("xrender" ,libxrender)))
+ (list fontconfig
+ freetype
+ glib
+ libpng
+ pixman
+ libx11
+ libxcb
+ libxext
+ libxrender))
(synopsis "Multi-platform 2D graphics library")
(description "Cairo is a 2D graphics library with support for multiple output
devices. Currently supported output targets include the X Window System (via
@@ -728,30 +729,30 @@ highlighting and other features typical of a source code editor.")
(substitute* "tests/pixbuf-jpeg.c"
((".*/pixbuf/jpeg/issue205.*")
""))))
- ;; The slow tests take longer than the specified timeout.
- ,@(if (target-arm? (%current-system))
- '((replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (when tests?
- (invoke "meson" "test" "--timeout-multiplier" "5")))))
- '()))))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "meson" "test"
+ ;; Explicit which test suites to run, to avoid running
+ ;; the slow tests, which easily time out on slower
+ ;; machines (it'd be nicer to negate the 'slow' suite,
+ ;; but Meson doesn't support that).
+ "--suite=conform"
+ "--suite=io"
+ "--suite=security"
+ "--suite=ops")))))))
(propagated-inputs
(list glib ;in Requires of gdk-pixbuf-2.0.pc
-
- ;; These are in Requires.private of gdk-pixbuf-2.0.pc
libjpeg-turbo
libpng
libtiff
- shared-mime-info)) ;required at runtime, too
- (inputs
- (if (%current-target-system)
- (list bash-minimal) ;for glib-or-gtk-wrap
- '()))
+ shared-mime-info)) ;required at runtime
+ (inputs (list bash-minimal)) ;for glib-or-gtk-wrap
(native-inputs
(list gettext-minimal
`(,glib "bin") ;glib-mkenums, etc.
+ gi-docgen
gobject-introspection ;g-ir-compiler, etc.
- perl
pkg-config
;; For the documentation.
@@ -1184,11 +1185,6 @@ application suites.")
"find_program('rst2man.py'"))))
(add-after 'unpack 'patch
(lambda* (#:key inputs native-inputs outputs #:allow-other-keys)
- ;; Correct DTD resources of docbook.
- (substitute* (find-files "docs" "\\.xml$")
- (("http://www.oasis-open.org/docbook/xml/4.3/")
- (string-append #$(this-package-native-input "docbook-xml")
- "/xml/dtd/docbook/")))
;; Disable building of icon cache.
(substitute* "meson.build"
(("gtk_update_icon_cache: true")
@@ -1772,7 +1768,7 @@ text rendering library.")
(build-system meson-build-system)
(outputs '("out" "doc"))
(arguments
- `(#:glib-or-gtk? #t ; To wrap binaries and/or compile schemas
+ `(#:glib-or-gtk? #t ; To wrap binaries and/or compile schemas
#:configure-flags
(list
"-Dbuild-documentation=true")
@@ -1787,14 +1783,14 @@ text rendering library.")
(string-append out "/share/doc")
(string-append doc "/share/doc"))))))))
(native-inputs
- `(("dot" ,graphviz)
- ("doxygen" ,doxygen)
- ("m4" ,m4)
- ("mm-common" ,mm-common)
- ("perl" ,perl)
- ("pkg-config" ,pkg-config)
- ("python" ,python)
- ("xsltproc" ,libxslt)))
+ (list graphviz
+ doxygen
+ m4
+ mm-common
+ perl
+ pkg-config
+ python
+ libxslt))
(propagated-inputs
(list glibmm at-spi2-core))
(synopsis "C++ bindings for ATK")
@@ -1866,16 +1862,16 @@ text rendering library.")
(string-append out "/share/doc")
(string-append doc "/share/doc"))))))))
(native-inputs
- `(("dot" ,graphviz)
- ("doxygen" ,doxygen)
- ("glib:bin" ,glib "bin")
- ("m4" ,m4)
- ("mm-common" ,mm-common)
- ("perl" ,perl)
- ("pkg-config" ,pkg-config)
- ("python" ,python)
- ("xsltproc" ,libxslt)
- ("xorg-server" ,xorg-server-for-tests)))
+ (list graphviz
+ doxygen
+ `(,glib "bin")
+ m4
+ mm-common
+ perl
+ pkg-config
+ python
+ libxslt
+ xorg-server-for-tests))
(propagated-inputs
(list cairomm glibmm gtk pangomm))
(synopsis "C++ Interfaces for GTK+ and GNOME")
@@ -1908,11 +1904,11 @@ tutorial.")
(sha256
(base32 "1i4ql0j6id6g34w5nbhd7vjak7l3s50lqgdjaj2ranrfj9j0r56j"))))
(propagated-inputs
- `(("atkmm-2.28" ,atkmm-2.28)
- ("cairomm-1.14" ,cairomm-1.14)
- ("glibmm" ,glibmm)
- ("gtk+" ,gtk+)
- ("pangomm-2.42" ,pangomm-2.46)))))
+ (list atkmm-2.28
+ cairomm-1.14
+ glibmm
+ gtk+
+ pangomm-2.46))))
(define-public gtkmm-2
(package
@@ -2095,15 +2091,18 @@ yet remaining very close in spirit to original API.")
(system "Xvfb :1 +extension GLX &")
(setenv "DISPLAY" ":1"))))))
(native-inputs
- `(("adwaita-icon-theme" ,adwaita-icon-theme)
- ("gtk+:bin" ,gtk+ "bin")
- ("gobject-introspection" ,gobject-introspection)
- ("perl-extutils-depends" ,perl-extutils-depends)
- ("perl-extutils-pkgconfig" ,perl-extutils-pkgconfig)
- ("perl-test-simple" ,perl-test-simple)
- ("xorg-server" ,xorg-server-for-tests)))
+ (list adwaita-icon-theme
+ `(,gtk+ "bin")
+ gobject-introspection
+ perl-extutils-depends
+ perl-extutils-pkgconfig
+ perl-test-simple
+ xorg-server-for-tests))
(propagated-inputs
- (list gtk+ perl-cairo-gobject perl-carp perl-exporter
+ (list gtk+
+ perl-cairo-gobject
+ perl-carp
+ perl-exporter
perl-glib-object-introspection))
(home-page "https://metacpan.org/dist/Gtk3")
(synopsis "Perl interface to the 3.x series of the gtk+ toolkit")
@@ -2218,36 +2217,22 @@ information.")
(search-patches "gtk-doc-respect-xml-catalog.patch"))))
(build-system meson-build-system)
(arguments
- `(#:parallel-tests? #f
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch-gtk-doc-scan
- (lambda* (#:key inputs #:allow-other-keys)
- (substitute* "gtk-doc.xsl"
- (("http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl")
- (string-append (assoc-ref inputs "docbook-xsl")
- "/xml/xsl/docbook-xsl-"
- ,(package-version docbook-xsl)
- "/html/chunk.xsl"))
- (("http://docbook.sourceforge.net/release/xsl/current/common/en.xml")
- (string-append (assoc-ref inputs "docbook-xsl")
- "/xml/xsl/docbook-xsl-"
- ,(package-version docbook-xsl)
- "/common/en.xml")))
- #t))
- (add-after 'unpack 'disable-failing-tests
- (lambda _
- (substitute* "tests/Makefile.am"
- (("annotations.sh bugs.sh empty.sh fail.sh gobject.sh program.sh")
- ""))
- #t))
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
(add-after 'install 'wrap-executables
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
+ (lambda _
+ (let ((docbook-xsl-catalog
+ #$(let ((docbook-xsl (this-package-input "docbook-xsl")))
+ (file-append docbook-xsl
+ "/xml/xsl/" (package-name docbook-xsl)
+ "-" (package-version docbook-xsl)
+ "/catalog.xml"))))
(for-each (lambda (prog)
(wrap-program prog
- `("GUIX_PYTHONPATH" ":" prefix (,(getenv "GUIX_PYTHONPATH")))))
- (find-files (string-append out "/bin")))))))))
+ `("GUIX_PYTHONPATH" ":" prefix (,(getenv "GUIX_PYTHONPATH")))
+ `("XML_CATALOG_FILES" " " suffix (,docbook-xsl-catalog))))
+ (find-files (string-append #$output "/bin")))))))))
(native-inputs
(list gettext-minimal
`(,glib "bin")
@@ -2257,7 +2242,8 @@ information.")
pkg-config
python-wrapper))
(inputs
- (list bc
+ (list bash-minimal
+ bc
dblatex
docbook-xml-4.3
docbook-xsl
@@ -2271,6 +2257,8 @@ information.")
python-pygments
source-highlight
yelp-tools))
+ ;; xsltproc's search paths, to avoid propagating libxslt.
+ (native-search-paths %libxslt-search-paths)
(home-page "https://wiki.gnome.org/DocumentationProject/GtkDoc")
(synopsis "GTK+ DocBook Documentation Generator")
(description "GtkDoc is a tool used to extract API documentation from C-code
@@ -2739,12 +2727,12 @@ popovers.")
(base32 "141fm7mbqib0011zmkv3g8vxcjwa7hypmq71ahdyhnj2sjvy4a67"))))
(build-system gnu-build-system)
(native-inputs
- `(("gettext" ,gettext-minimal)
- ("glib-bin" ,glib "bin")
- ("gobject-introspection" ,gobject-introspection)
- ("gtk-doc" ,gtk-doc/stable)
- ("pkg-config" ,pkg-config)
- ("python" ,python)))
+ (list gettext-minimal
+ `(,glib "bin")
+ gobject-introspection
+ gtk-doc/stable
+ pkg-config
+ python))
(inputs
(list cairo glib gtk+ python-pygobject))
(arguments
@@ -2760,8 +2748,7 @@ popovers.")
(assoc-ref inputs "python-pygobject")
"\\\", \\\""
(assoc-ref outputs "out")
- "\\\"))")))
- #t)))))
+ "\\\"))"))))))))
(synopsis "Canvas widget for GTK+")
(description "GooCanvas is a canvas widget for GTK+ that uses the cairo 2D
library for drawing.")
diff --git a/gnu/packages/guile-wm.scm b/gnu/packages/guile-wm.scm
index ff885506fa..3d70a2ac61 100644
--- a/gnu/packages/guile-wm.scm
+++ b/gnu/packages/guile-wm.scm
@@ -24,6 +24,7 @@
(define-module (gnu packages guile-wm)
#:use-module (guix licenses)
#:use-module (gnu packages)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages xorg)
#:use-module (gnu packages guile)
#:use-module (gnu packages pkg-config)
@@ -174,7 +175,7 @@ dependencies.")
Type=Application~%"
,name ,synopsis %output)))))))))
(native-inputs (list guile-2.2 guile-xcb pkg-config texinfo))
- (inputs (list guile-2.2 guile-xcb))
+ (inputs (list bash-minimal guile-2.2 guile-xcb))
(home-page "https://github.com/mwitmer/guile-wm/releases")
(description
"Guile-WM is a simple window manager that's completely customizable—you
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index c0b0dfd78c..f5fcc5059c 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -185,7 +185,7 @@
#t))))
(build-system gnu-build-system)
(inputs
- (list guile-3.0 nspr nss))
+ (list bash-minimal guile-3.0 nspr nss))
;; FIXME the bundled csv contains one more exported procedure
;; (sxml->csv-string) than guile-csv. The author is maintainer of both
;; projects.
@@ -199,9 +199,9 @@
(arguments
`(#:modules (((guix build guile-build-system)
#:select (target-guile-effective-version))
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:imported-modules ((guix build guile-build-system)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:make-flags
;; TODO: The documentation must be built with the `docs' target.
(let* ((out (assoc-ref %outputs "out"))
@@ -288,9 +288,9 @@ more.")
`(#:make-flags '("GUILE_AUTO_COMPILE=0")
#:modules (((guix build guile-build-system)
#:select (target-guile-effective-version))
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:imported-modules ((guix build guile-build-system)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:phases (modify-phases %standard-phases
(add-after 'install 'wrap-guilescript
(lambda* (#:key outputs #:allow-other-keys)
@@ -757,9 +757,9 @@ you send to a FIFO file.")
(arguments
`(#:modules (((guix build guile-build-system)
#:select (target-guile-effective-version))
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:imported-modules ((guix build guile-build-system)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:phases (modify-phases %standard-phases
(delete 'strip)
(add-after 'install 'wrap-program
@@ -1897,9 +1897,9 @@ bindings to the @code{yaml-cpp} C++ library.")
(arguments
`(#:modules (((guix build guile-build-system)
#:select (target-guile-effective-version))
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:imported-modules ((guix build guile-build-system)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:configure-flags
(list (string-append
"--with-guile-site-dir=" %output "/share/guile/site/"
@@ -2128,7 +2128,7 @@ above command-line parameters.")
#:modules `(((guix build guile-build-system)
#:select
(target-guile-effective-version))
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:phases
(with-imported-modules `((guix build guile-build-system)
,@%gnu-build-system-modules)
@@ -2277,7 +2277,7 @@ user which package sets would they like to install from it.")
(guix build emacs-utils)
(ice-9 rdelim)
(ice-9 popen))
- #:imported-modules (,@%gnu-build-system-modules
+ #:imported-modules (,@%default-gnu-imported-modules
(guix build emacs-build-system)
(guix build emacs-utils))
#:phases
@@ -2686,7 +2686,7 @@ many readers as needed).")
#:select (target-guile-effective-version))
(guix build utils))
#:imported-modules ((guix build guile-build-system)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:configure-flags (list "--with-ncursesw" ; Unicode support
"--with-gnu-filesystem-hierarchy")
#:phases
@@ -3004,7 +3004,7 @@ inspired by the SCSH regular expression system.")
(build-system gnu-build-system)
(arguments
`(#:modules ((ice-9 match) (ice-9 ftw)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:tests? #f ; test suite is non-deterministic :(
#:phases (modify-phases %standard-phases
(add-after 'install 'wrap-haunt
@@ -3040,14 +3040,13 @@ inspired by the SCSH regular expression system.")
(string-append dep "/lib/guile/"
version
"/site-ccache"))
- deps))))
- #t)))))))))
+ deps)))))))))))))
(native-inputs
(list pkg-config texinfo))
(inputs
;; Depend on the latest Guile to avoid bytecode compatibility issues when
;; using modules built against the latest version.
- (list guile-3.0-latest))
+ (list bash-minimal guile-3.0-latest))
(propagated-inputs
(list guile-reader guile-commonmark))
(synopsis "Functional static site generator")
@@ -3289,7 +3288,7 @@ The picture values can directly be displayed in Geiser.")
`(#:modules
((ice-9 match)
(srfi srfi-1)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:tests? #f ; there are none
#:make-flags
(list (string-append "PICT_DIR="
@@ -3448,8 +3447,7 @@ serializing continuations or delimited continuations.")
;; TODO: It would be better to patch the Makefile.
(setenv "GUILE_LOAD_PATH"
(string-append ".:"
- (getenv "GUILE_LOAD_PATH")))
- #t))
+ (getenv "GUILE_LOAD_PATH")))))
(add-after 'install 'wrap
(lambda* (#:key outputs #:allow-other-keys)
;; Wrap the 'python' executable so it can find its
@@ -3474,10 +3472,9 @@ serializing continuations or delimited continuations.")
`("GUILE_LOAD_PATH" ":" prefix
(,load-path))
`("GUILE_LOAD_COMPILED_PATH" ":" prefix
- (,compiled-path)))
- #t))))))
+ (,compiled-path)))))))))
(inputs
- (list guile-3.0 guile-persist guile-readline guile-stis-parser))
+ (list bash-minimal guile-3.0 guile-persist guile-readline guile-stis-parser))
(native-inputs
(list autoconf automake libtool pkg-config))
(synopsis "Python implementation in Guile")
@@ -4109,7 +4106,8 @@ applied to surplus arguments.")
("texinfo" ,texinfo)
("texlive" ,(texlive-updmap.cfg (list texlive-epsf)))))
(inputs
- (list dbus-glib
+ (list bash-minimal
+ dbus-glib
guile-3.0
guile-lib
guile-readline
@@ -4319,7 +4317,8 @@ processing filters.")
("gettext" ,gettext-minimal)
("perl" ,perl)))
(inputs
- `(;; Guile
+ `(("bash" ,bash-minimal) ; for wrap-program
+ ;; Guile
("guile" ,guile-2.2)
("guile-lib" ,guile2.2-lib)
("guile-readline" ,guile2.2-readline)
@@ -5671,9 +5670,9 @@ schedulers.")
(arguments
`(#:modules (((guix build guile-build-system)
#:prefix guile:)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:imported-modules ((guix build guile-build-system)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:tests? #false ; there are none
#:phases
(modify-phases %standard-phases
@@ -5858,9 +5857,9 @@ high-level API for network management that uses rtnetlink.")
`(#:make-flags '("GUILE_AUTO_COMPILE=0") ;to prevent guild warnings
#:modules (((guix build guile-build-system)
#:select (target-guile-effective-version))
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:imported-modules ((guix build guile-build-system)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:phases (modify-phases %standard-phases
(add-after 'install 'wrap-program
(lambda* (#:key inputs outputs #:allow-other-keys)
@@ -5914,9 +5913,9 @@ GitLab instance.")
`(#:make-flags '("GUILE_AUTO_COMPILE=0") ;to prevent guild warnings
#:modules (((guix build guile-build-system)
#:select (target-guile-effective-version))
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:imported-modules ((guix build guile-build-system)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:phases
(modify-phases %standard-phases
(delete 'strip)
diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm
index e27801eeb7..33e89759b0 100644
--- a/gnu/packages/guile.scm
+++ b/gnu/packages/guile.scm
@@ -42,6 +42,7 @@
#:use-module (gnu packages bash)
#:use-module (gnu packages bdw-gc)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages crypto)
#:use-module (gnu packages dbm)
#:use-module (gnu packages flex)
#:use-module (gnu packages gawk)
@@ -109,7 +110,19 @@
;; The usual /bin/sh...
(substitute* "ice-9/popen.scm"
- (("/bin/sh") (which "sh"))))))
+ (("/bin/sh") (which "sh")))))
+ (add-after 'install 'add-libxcrypt-reference-pkgconfig
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (define out (assoc-ref outputs "out"))
+ (define libxcrypt
+ (false-if-exception
+ (dirname (search-input-file inputs "lib/libcrypt.so.1"))))
+ (when libxcrypt
+ (substitute*
+ (find-files (string-append out "/lib/pkgconfig")
+ ".*\\.pc")
+ (("-lcrypt")
+ (string-append "-L" libxcrypt " -lcrypt")))))))
;; XXX: Several numerical tests and tests related to
;; 'inet-pton' fail on glibc 2.33/GCC 10. Disable them.
@@ -122,7 +135,7 @@
`(("self" ,this-package))
'()))
- (inputs (list gawk readline))
+ (inputs (list gawk libxcrypt readline))
;; Since `guile-1.8.pc' has "Libs: ... -lgmp -lltdl", these must be
;; propagated.
@@ -163,7 +176,7 @@ without requiring the source code to be rewritten.")
(list this-package)
'())))
(inputs
- (append (list libffi)
+ (append (list libffi libxcrypt)
(libiconv-if-needed)
;; We need Bash when cross-compiling because some of the scripts
@@ -238,7 +251,19 @@ without requiring the source code to be rewritten.")
'(search-input-file inputs "/bin/bash"))
(else
'(string-append bash "/bin/bash")))))
- #t))))))
+ #t)))
+ (add-after 'install 'add-libxcrypt-reference-pkgconfig
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (define out (assoc-ref outputs "out"))
+ (define libxcrypt
+ (false-if-exception
+ (dirname (search-input-file inputs "lib/libcrypt.so.1"))))
+ (when libxcrypt
+ (substitute*
+ (find-files (string-append out "/lib/pkgconfig")
+ ".*\\.pc")
+ (("-lcrypt")
+ (string-append "-L" libxcrypt " -lcrypt")))))))))
(native-search-paths
(list (search-path-specification
diff --git a/gnu/packages/haskell-apps.scm b/gnu/packages/haskell-apps.scm
index 3fce4f803c..550121123e 100644
--- a/gnu/packages/haskell-apps.scm
+++ b/gnu/packages/haskell-apps.scm
@@ -42,6 +42,7 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix build-system haskell)
#:use-module (gnu packages)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages curl)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gl)
@@ -764,7 +765,8 @@ Haskell.")
"/lib"))))
#t))))))
(inputs
- (list ghc-extensible-exceptions
+ (list bash-minimal
+ ghc-extensible-exceptions
ghc-random
ghc-glut
freeglut
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 6d8675d37e..dd084cb9a8 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -1174,7 +1174,8 @@ interactive environment for the functional language Haskell.")
"https://www.haskell.org/ghc/dist/"
version "/" name "-" version "-testsuite.tar.xz"))
(patches (search-patches "ghc-testsuite-dlopen-pie.patch"
- "ghc-testsuite-grep-compat.patch"))
+ "ghc-testsuite-grep-compat.patch"
+ "ghc-testsuite-recomp015-execstack.patch"))
(sha256
(base32
"0pw9r91g2np3i806g2f4f8z4jfdd7mx226cmdizk4swa7av1qf91"))
@@ -1256,7 +1257,8 @@ interactive environment for the functional language Haskell.")
"https://www.haskell.org/ghc/dist/"
version "/ghc-" version "-testsuite.tar.xz"))
(patches (search-patches "ghc-testsuite-dlopen-pie.patch"
- "ghc-testsuite-grep-compat.patch"))
+ "ghc-testsuite-grep-compat.patch"
+ "ghc-testsuite-recomp015-execstack.patch"))
(sha256
(base32
"0c55pj2820q26rikhpf636sn4mjgqsxjrl94vsywrh79dxp3k14z"))
@@ -1315,7 +1317,8 @@ interactive environment for the functional language Haskell.")
"https://www.haskell.org/ghc/dist/"
version "/ghc-" version "-testsuite.tar.xz"))
(patches (search-patches "ghc-testsuite-dlopen-pie.patch"
- "ghc-testsuite-grep-compat.patch"))
+ "ghc-testsuite-grep-compat.patch"
+ "ghc-testsuite-recomp015-execstack.patch"))
(sha256
(base32
"1zl25gg6bpx5601k8h3cqnns1xfc0nqgwnh8jvn2s65ra3f2g1nz"))
@@ -1398,7 +1401,8 @@ interactive environment for the functional language Haskell.")
"/ghc-" version "-src.tar.xz"))
(sha256
(base32
- "15wii8can2r3dcl6jjmd50h2jvn7rlmn05zb74d2scj6cfwl43hl"))))
+ "15wii8can2r3dcl6jjmd50h2jvn7rlmn05zb74d2scj6cfwl43hl"))
+ (patches (search-patches "ghc-9-StgCRunAsm-only-when-needed.patch"))))
(native-inputs
`(;; GHC 9.0.2 must be built with GHC >= 8.8
("ghc-bootstrap" ,ghc-8.10)
@@ -1411,7 +1415,8 @@ interactive environment for the functional language Haskell.")
(sha256
(base32
"1m5fzhr4gjn9ni8gxx7ag3fkbw1rspjzgv39mnfb0nkm5mw70v3s"))
- (patches (search-patches "ghc-9.2-grep-warnings.patch"))
+ (patches (search-patches "ghc-9.2-grep-warnings.patch"
+ "ghc-testsuite-recomp015-execstack.patch"))
(modules '((guix build utils)))
(snippet
;; collections.Iterable was moved to collections.abc in Python 3.10.
@@ -1444,7 +1449,7 @@ interactive environment for the functional language Haskell.")
(sha256
(base32
"07028i0hm74svvq9b3jpkczaj6lsdgn3hgr4wa7diqiq3dypj1h6"))
- (patches (search-patches "ghc-9.2-glibc-2.33-link-order.patch"))))
+ (patches (search-patches "ghc-9-StgCRunAsm-only-when-needed.patch"))))
(arguments
(substitute-keyword-arguments (package-arguments base)
((#:phases phases '%standard-phases)
@@ -1475,7 +1480,8 @@ interactive environment for the functional language Haskell.")
(sha256
(base32
"19ha0hidrijawy53vm2r0sgml5zkl8126mqy7p0pyacmw3k7913l"))
- (patches (search-patches "ghc-9.2-grep-warnings.patch"))))
+ (patches (search-patches "ghc-9.2-grep-warnings.patch"
+ "ghc-testsuite-recomp015-execstack.patch"))))
,@(filter (match-lambda
(("ghc-bootstrap" . _) #f)
(("ghc-testsuite" . _) #f)
@@ -1565,7 +1571,8 @@ interactive environment for the functional language Haskell.")
"/ghc-" version "-src.tar.xz"))
(sha256
(base32
- "1qk7rlqf02s3b6m6sqqngmjq1mxnrz88h159lz6k25gddmdg5kp8"))))
+ "1qk7rlqf02s3b6m6sqqngmjq1mxnrz88h159lz6k25gddmdg5kp8"))
+ (patches (search-patches "ghc-9-StgCRunAsm-only-when-needed.patch"))))
(arguments
(substitute-keyword-arguments (package-arguments base)
((#:phases phases '%standard-phases)
@@ -1583,7 +1590,8 @@ interactive environment for the functional language Haskell.")
version "/ghc-" version "-testsuite.tar.xz"))
(sha256
(base32
- "04p2lawxxg3nyv6frzhyjyh3arhqqyh5ka3alxa2pxhcd2hdcja3"))))
+ "04p2lawxxg3nyv6frzhyjyh3arhqqyh5ka3alxa2pxhcd2hdcja3"))
+ (patches (search-patches "ghc-testsuite-recomp015-execstack.patch"))))
("ghc-alex" ,ghc-alex-bootstrap-for-9.4)
("ghc-happy" ,ghc-happy-bootstrap-for-9.4)
,@(filter (match-lambda
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index f697694124..3d2a37a1e2 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -3,7 +3,7 @@
;;; Copyright © 2018, 2020-2023 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2020, 2022, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2022, 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2020 Rene Saavedra <pacoon@protonmail.com>
;;; Copyright © 2023 Josselin Poiret <dev@jpoiret.xyz>
@@ -57,36 +57,38 @@
version ".tar.gz"))
(define-public gnumach-headers
- (package
- (name "gnumach-headers")
- (version "1.8+git20221224") ;; This is an upstream tag
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://git.savannah.gnu.org/git/hurd/gnumach.git")
- (commit (string-append "v" version))))
- (file-name (git-file-name "gnumach" version))
- (sha256
- (base32
- "0f49zqxf64ds75rmskizpybl2mw7sxs05k59gjp3pgspvr87w7gs"))))
- (build-system gnu-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'install
- (lambda _
- (invoke "make" "install-data")))
- (delete 'build))
- #:tests? #f))
- (native-inputs
- (list autoconf automake texinfo-4))
- (supported-systems %hurd-systems)
- (home-page "https://www.gnu.org/software/hurd/microkernel/mach/gnumach.html")
- (synopsis "GNU Mach kernel headers")
- (description
- "Headers of the GNU Mach kernel.")
- (license gpl2+)))
+ (let ((revision "0")
+ (commit "2556fdece900d67529d5eda01f1bdaae4ffe96b0"))
+ (package
+ (name "gnumach-headers")
+ (version (git-version "1.8" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://git.savannah.gnu.org/git/hurd/gnumach.git")
+ (commit commit)))
+ (file-name (git-file-name "gnumach" version))
+ (sha256
+ (base32
+ "1lzsbix0l4jhab38pvwnmk7ip1lsn7m5smhnrciqajsqnadsnlzs"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'install
+ (lambda _
+ (invoke "make" "install-data" "install-data-hook")))
+ (delete 'build))
+ #:tests? #f))
+ (native-inputs
+ (list autoconf automake texinfo-4))
+ (supported-systems %hurd-systems)
+ (home-page "https://www.gnu.org/software/hurd/microkernel/mach/gnumach.html")
+ (synopsis "GNU Mach kernel headers")
+ (description
+ "Headers of the GNU Mach kernel.")
+ (license gpl2+))))
(define-public mig
(package
@@ -130,13 +132,11 @@ communication.")
(license gpl2+)))
(define-public hurd-headers
- ;; This commit is now slightly behind 0.9.git20220818 as this one needs a
- ;; newer glibc
- (let ((revision "2")
- (commit "v0.9.git20230216"))
+ (let ((revision "3")
+ (commit "v0.9.git20231217"))
(package
(name "hurd-headers")
- (version commit)
+ (version (string-drop commit 1))
(source (origin
(method git-fetch)
(uri (git-reference
@@ -144,7 +144,7 @@ communication.")
(commit commit)))
(sha256
(base32
- "0jm1dnqkx4kdwmby0z5w0yqp9m5qp4hbxd4jxlyhiqm8nkw9mkvv"))
+ "1d138kzhil6s5gf9di8grpz1iziakyfv037wkc8s7qyd61imm31d"))
(file-name (git-file-name name version))))
(build-system gnu-build-system)
(native-inputs
@@ -181,6 +181,7 @@ communication.")
"ac_cv_func__hurd_exec_paths=no"
"ac_cv_func__hurd_libc_proc_init=no"
"ac_cv_func_file_futimens=no"
+ "ac_cv_func_file_utimens=no"
"ac_cv_lib_acpica_acpi_init=no")
#:tests? #f))
@@ -253,30 +254,21 @@ Hurd-minimal package which are needed for both glibc and GCC.")
(package
(inherit gnumach-headers)
(name "gnumach")
- (source (origin
- (inherit (package-source gnumach-headers))
- (patches
- (append
- (search-patches "gnumach-support-noide.patch")
- (origin-patches (package-source gnumach-headers))))))
(arguments
(substitute-keyword-arguments (package-arguments gnumach-headers)
- ((#:make-flags flags ''())
- `(cons "CFLAGS=-fcommon" ,flags))
((#:configure-flags flags ''())
- `(cons* "--enable-kdb" ;enable kernel debugger
+ `(cons* "--enable-kdb" ;enable kernel debugger
"--disable-net-group"
"--disable-pcmcia-group"
"--disable-wireless-group"
- ,flags))
+ ,flags))
((#:phases phases '%standard-phases)
- `(modify-phases %standard-phases
- (add-after 'install 'produce-image
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (boot (string-append out "/boot")))
- (invoke "make" "gnumach.gz")
- (install-file "gnumach.gz" boot))))))))
+ #~(modify-phases %standard-phases
+ (add-after 'install 'produce-image
+ (lambda _
+ (let ((boot (string-append #$output "/boot")))
+ (invoke "make" "gnumach.gz")
+ (install-file "gnumach.gz" boot))))))))
(native-inputs
(list autoconf
automake
@@ -285,7 +277,7 @@ Hurd-minimal package which are needed for both glibc and GCC.")
mig)
perl
texinfo-4))
- (supported-systems %hurd-systems)
+ (supported-systems `("i686-linux" ,@%hurd-systems))
(synopsis "Microkernel of the GNU system")
(description
"GNU Mach is the microkernel upon which a GNU Hurd system is based.")))
@@ -303,7 +295,7 @@ Hurd-minimal package which are needed for both glibc and GCC.")
(define dde-sources
;; This is the current tip of the dde branch
- (let ((commit "ce8810277fa3584eb36ecb23da58394153fabe6f"))
+ (let ((commit "066797b576ebf8364ad157f50bef2a655597deeb"))
(origin
(method git-fetch)
(uri (git-reference
@@ -311,8 +303,8 @@ Hurd-minimal package which are needed for both glibc and GCC.")
(commit commit)))
(sha256
(base32
- "0ygk7jm4jmhpvh0zzi5bk638242z7sbcab2i57fkb4y2mmdkjjbw"))
- (file-name (git-file-name "dde" commit)))))
+ "19f2awlfnar5gyhi0w5zawla5brzck2s88iv0f20022pd1l5v9hl"))
+ (file-name (git-file-name "dde" (string-take commit 7))))))
(define %import-from-dde
(list "libmachdevdde" "libddekit" "libdde_linux26"))
@@ -325,8 +317,7 @@ Hurd-minimal package which are needed for both glibc and GCC.")
(name "hurd")
(source (origin
(inherit (package-source hurd-headers))
- (patches (search-patches "hurd-fix-rumpdisk-build.patch"
- "hurd-rumpdisk-no-hd.patch"))))
+ (patches (search-patches "hurd-rumpdisk-no-hd.patch"))))
(version (package-version hurd-headers))
(arguments
`(#:tests? #f ;no "check" target
@@ -475,7 +466,8 @@ exec ${system}/rc \"$@\"
(assoc-ref (or native-inputs inputs) "bash")
"/bin/bash")
(string-append "CC="
- ,(cc-for-target)))))
+ ,(cc-for-target))
+ "ARCH=x86")))
(add-after 'install 'install-goodies
(lambda* (#:key inputs native-inputs outputs #:allow-other-keys)
;; Install additional goodies.
@@ -491,7 +483,8 @@ exec ${system}/rc \"$@\"
"/bin/bash")
(string-append "INSTALLDIR="
out
- "/share/libdde_linux26/build/include"))
+ "/share/libdde_linux26/build/include")
+ "ARCH=x86")
;; Install the fancy UTF-8 motd.
(mkdir-p (string-append out "/etc"))
(copy-file "console/motd.UTF8"
@@ -581,7 +574,8 @@ implementing them.")
(list (string-append "SHELL="
(search-input-file %build-inputs "/bin/bash"))
"PKGDIR=libdde_linux26"
- (string-append "CC=" ,(cc-for-target)))
+ (string-append "CC=" ,(cc-for-target))
+ "ARCH=x86")
#:configure-flags
,#~(list (string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib"))
#:phases
@@ -658,7 +652,7 @@ in userland processes thanks to the DDE layer.")
(sha256
(base32
"0fv0k52qqcg3nq9012hibgsamvsd7mnvn2ikdasmzjhsp8qh5q3r"))
- (file-name (git-file-name name commit))))
+ (file-name (git-file-name name version))))
(build-system gnu-build-system)
(arguments
(list
diff --git a/gnu/packages/ibus.scm b/gnu/packages/ibus.scm
index c821279bd3..0eb4c7d772 100644
--- a/gnu/packages/ibus.scm
+++ b/gnu/packages/ibus.scm
@@ -46,6 +46,7 @@
#:use-module (gnu packages autotools)
#:use-module (gnu packages bash)
#:use-module (gnu packages base)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages boost)
#:use-module (gnu packages check)
#:use-module (gnu packages cmake)
@@ -180,7 +181,7 @@
(rename-file
(string-append #$output "/share/gtk-doc")
(string-append #$output:doc "/share/gtk-doc"))))
- (add-after 'wrap-program 'wrap-with-additional-paths
+ (add-after 'glib-or-gtk-wrap 'wrap-with-additional-paths
(lambda* (#:key outputs #:allow-other-keys)
;; Make sure 'ibus-setup' runs with the correct GI_TYPELIB_PATH.
(wrap-program (search-input-file outputs "bin/ibus-setup")
@@ -318,7 +319,8 @@ may also simplify input method development.")
"/share/ibus-libpinyin/setup/")
,(getenv "GI_TYPELIB_PATH")))))))))
(inputs
- (list ibus
+ (list bash-minimal
+ ibus
libpinyin
bdb
sqlite
@@ -439,7 +441,8 @@ Chinese pinyin input methods.")
util-linux ;for getopt
xorg-server-for-tests))
(inputs
- (list anthy
+ (list bash-minimal
+ anthy
gtk+
ibus
gobject-introspection
@@ -503,7 +506,7 @@ traditional Chinese output.")
(build-system gnu-build-system)
(arguments
`(#:modules ((ice-9 match)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:tests? #f ; no tests
#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
#:phases
@@ -891,7 +894,8 @@ hanja dictionary and small hangul character classification.")
("gettext" ,gettext-minimal)
("glib:bin" ,glib "bin")))
(inputs
- (list ibus
+ (list bash-minimal
+ ibus
glib
python-pygobject
gtk+
diff --git a/gnu/packages/image-processing.scm b/gnu/packages/image-processing.scm
index 6c199792f8..bc0d0a80b6 100644
--- a/gnu/packages/image-processing.scm
+++ b/gnu/packages/image-processing.scm
@@ -53,6 +53,7 @@
#:use-module (gnu packages)
#:use-module (gnu packages algebra)
#:use-module (gnu packages base)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages bison)
#:use-module (gnu packages boost)
#:use-module (gnu packages check)
@@ -1480,7 +1481,8 @@ combine the information contained in both.")
"/lib/qt5/plugins"))
'("qtbase" "qtdeclarative-5"))))))))))
(inputs
- (list curl
+ (list bash-minimal
+ curl
fftw
fftwf
glu
@@ -1553,37 +1555,30 @@ full-featured UI aimed at clinical researchers.")
(sha256
(base32 "0r7n3a6bvcxkbpda4mwmrpicii09iql5z69nkjqygkwxw7ny3309"))))
(build-system gnu-build-system)
+ (arguments
+ (list
+ #:tests? #f ; No tests.
+ #:make-flags
+ #~(list
+ (string-append "PREFIX=" #$output)
+ (format #f "MANPAGE_XSL=~a/xml/xsl/~a-~a/manpages/docbook.xsl"
+ #$(this-package-native-input "docbook-xsl")
+ #$(package-name
+ (this-package-native-input "docbook-xsl"))
+ #$(package-version
+ (this-package-native-input "docbook-xsl"))))
+ #:phases
+ #~(modify-phases %standard-phases
+ (delete 'configure)
+ (add-before 'install 'fix-directory-creation
+ (lambda _
+ (mkdir-p (string-append #$output "/share/man/man1")))))))
(inputs
- `(("giflib" ,giflib)
- ("libjpeg" ,libjpeg-turbo)
- ("libpng" ,libpng)
- ("perl" ,perl)))
+ (list giflib libjpeg-turbo libpng
+ perl))
(native-inputs
- `(("pkg-config" ,pkg-config)
- ("docbook-xml" ,docbook-xml)
- ("docbook-xsl" ,docbook-xsl)
- ("xsltproc" ,libxslt)))
- (arguments
- `(#:tests? #f ; No tests.
- #:make-flags (list
- (string-append "PREFIX=" (assoc-ref %outputs "out"))
- (string-append "MANPAGE_XSL="
- (assoc-ref %build-inputs "docbook-xsl")
- "/xml/xsl/docbook-xsl-*/manpages/docbook.xsl"))
- #:phases
- (modify-phases %standard-phases
- (delete 'configure)
- (add-before 'install 'make-local-docbook-xml
- (lambda* (#:key inputs #:allow-other-keys)
- (substitute* "metapixel.xml"
- (("http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd")
- (string-append (assoc-ref inputs "docbook-xml")
- "/xml/dtd/docbook/docbookx.dtd")))
- #t))
- (add-before 'install 'fix-directory-creation
- (lambda* (#:key outputs #:allow-other-keys)
- (mkdir-p (string-append (assoc-ref outputs "out") "/share/man/man1"))
- #t)))))
+ (list docbook-xml-4.2 docbook-xsl
+ libxslt pkg-config))
(home-page "https://www.complang.tuwien.ac.at/schani/metapixel/")
(synopsis "Photomosaics generator")
(description "Metapixel is a program for generating photomosaics. It can
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index fae45363ad..4f90ae5357 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2017, 2019, 2021-2022 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2017, 2019, 2021-2023 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2015, 2016 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2014, 2015, 2016, 2020 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
@@ -200,7 +200,7 @@ code is Valgrind-clean and unit tested.")
(define-public libpng
(package
(name "libpng")
- (version "1.6.37") ; Remember to also update libpng-apng if possible!
+ (version "1.6.39") ; Remember to also update libpng-apng if possible!
(source (origin
(method url-fetch)
(uri (list (string-append "mirror://sourceforge/libpng/libpng16/"
@@ -213,7 +213,7 @@ code is Valgrind-clean and unit tested.")
"/libpng16/libpng-" version ".tar.xz")))
(sha256
(base32
- "1jl8in381z0128vgxnvn33nln6hzckl7l7j9nqvkaf1m9n1p0pjh"))))
+ "0dv90dxvmqpk7mbywyjbz8lh08cv4b0ksqp1y62mzvmlf379cihz"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags '("--disable-static")))
@@ -895,7 +895,7 @@ work.")
(outputs (list "out" "pbmtools"))
(arguments
`(#:modules ((srfi srfi-26)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:phases
(modify-phases %standard-phases
(delete 'configure) ; no configure script
@@ -1446,8 +1446,7 @@ language bindings to VIGRA.")
(define-public libwebp
(package
(name "libwebp")
- (version "1.2.4")
- (replacement libwebp/fixed)
+ (version "1.3.2")
(source
(origin
;; No tarballs are provided for >0.6.1.
@@ -1458,7 +1457,7 @@ language bindings to VIGRA.")
(file-name (git-file-name name version))
(sha256
(base32
- "1jndbc99dd19a6d7h4ds51xyak7gfddkbi41nxdm8n23w7ks35r8"))))
+ "1x37795gpc63g1ma9kqw4q3dikwhrjklixqzjjsj6viqksa19z41"))))
(build-system gnu-build-system)
(inputs
(list freeglut
@@ -1486,22 +1485,6 @@ to PNG when lossy compression is acceptable for the red/green/blue color
channels.")
(license license:bsd-3)))
-(define libwebp/fixed
- (package
- (inherit libwebp)
- (name "libwebp")
- (version "1.3.2")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://chromium.googlesource.com/webm/libwebp")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "1x37795gpc63g1ma9kqw4q3dikwhrjklixqzjjsj6viqksa19z41"))))))
-
(define-public libmng
(package
(name "libmng")
@@ -2714,20 +2697,19 @@ GIF, TIFF, WEBP, BMP, PNG, XPM formats.")
(gtk+ (assoc-ref inputs "gtk+")))
(wrap-program (string-append out "/bin/mypaint")
`("GI_TYPELIB_PATH" ":" prefix
- (,(getenv "GI_TYPELIB_PATH"))))
- #t)))
+ (,(getenv "GI_TYPELIB_PATH")))))))
(add-before 'check 'pre-check
(lambda _
;; Tests need writing access
- (setenv "HOME" "/tmp")
- #t)))))
+ (setenv "HOME" "/tmp"))))))
(native-inputs
- `(("pkg-config" ,pkg-config)
- ("gobject-introspection" ,gobject-introspection)
- ("swig" ,swig)
- ("gettext" ,gettext-minimal)))
+ (list pkg-config
+ gobject-introspection
+ swig
+ gettext-minimal))
(inputs
- (list gtk+
+ (list bash-minimal
+ gtk+
(librsvg-for-system)
hicolor-icon-theme
libmypaint
diff --git a/gnu/packages/imagemagick.scm b/gnu/packages/imagemagick.scm
index b407af3588..e7734125ad 100644
--- a/gnu/packages/imagemagick.scm
+++ b/gnu/packages/imagemagick.scm
@@ -4,7 +4,7 @@
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016, 2021 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2017, 2024 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
@@ -65,72 +65,65 @@
;; The 7 release series has an incompatible API, while the 6 series is still
;; maintained. Don't update to 7 until we've made sure that the ImageMagick
;; users are ready for the 7-series API.
- (version "6.9.11-48")
+ (version "6.9.13-5")
(source (origin
(method url-fetch)
(uri (string-append "mirror://imagemagick/ImageMagick-"
version ".tar.xz"))
(sha256
(base32
- "0m8nkmywkqwyrr01q7aiakj6mi4rb2psjgzv8n0x82x3s1rpfyql"))))
+ "1j1chkw33vjc37509vdwss28qywfvckvs73pvscldj8d0wnwypa8"))))
(build-system gnu-build-system)
(arguments
- `(#:configure-flags '("--with-frozenpaths" "--without-gcc-arch"
-
- ;; Do not embed the build date in binaries.
- "--enable-reproducible-build")
-
- ;; FIXME: The test suite succeeded before version 6.9.6-2.
- ;; Try enabling it again with newer releases.
- #:tests? #f
- #:phases (modify-phases %standard-phases
- (add-before
- 'build 'pre-build
- (lambda* (#:key outputs #:allow-other-keys)
- (substitute* "Makefile"
- ;; Clear the `LIBRARY_PATH' setting, which otherwise
- ;; interferes with our own use.
- (("^LIBRARY_PATH[[:blank:]]*=.*$")
- "")
-
- ;; Since the Makefile overrides $docdir, modify it to
- ;; refer to what we want.
- (("^DOCUMENTATION_PATH[[:blank:]]*=.*$")
- (let ((doc (assoc-ref outputs "doc")))
- (string-append "DOCUMENTATION_PATH = "
- doc "/share/doc/"
- ,name "-"
- ,(package-version this-package) "\n"))))
- #t))
- (add-before
- 'configure 'strip-configure-xml
- (lambda _
- (substitute* "config/configure.xml.in"
- ;; Do not record 'configure' arguments in the
- ;; configure.xml file that gets installed: That would
- ;; include --docdir, and thus retain a reference to the
- ;; 'doc' output.
- (("@CONFIGURE_ARGS@")
- "not recorded"))
- #t)))))
+ (list
+ #:configure-flags
+ #~(list "--with-frozenpaths"
+ "--without-gcc-arch"
+ (string-append "--with-gs-font-dir="
+ (search-input-directory %build-inputs
+ "share/fonts/type1"))
+ ;; No documentation in the stable version.
+ "--disable-docs"
+ ;; Do not embed the build date in binaries.
+ "--enable-reproducible-build")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'build 'pre-build
+ (lambda _
+ (substitute* "Makefile"
+ ;; Clear the `LIBRARY_PATH' setting, which otherwise
+ ;; interferes with our own use.
+ (("^LIBRARY_PATH[[:blank:]]*=.*$") ""))))
+ (add-before 'configure 'strip-configure-xml
+ (lambda _
+ (substitute* "config/configure.xml.in"
+ ;; Do not record 'configure' arguments in the
+ ;; configure.xml file that gets installed: That would
+ ;; include --docdir, and thus retain a reference to the
+ ;; 'doc' output.
+ (("@CONFIGURE_ARGS@")
+ "not recorded")))))))
;; TODO: Add Jasper etc.
- (inputs `(("fftw" ,fftw)
- ("graphviz" ,graphviz)
- ("ghostscript" ,ghostscript)
- ("lcms" ,lcms)
- ("libx11" ,libx11)
- ("zlib" ,zlib)
- ("libxml2" ,libxml2)
- ("libtiff" ,libtiff)
- ("libpng" ,libpng)
- ("libjpeg" ,libjpeg-turbo)
- ("pango" ,pango)
- ("freetype" ,freetype)
- ("bzip2" ,bzip2)
- ("xz" ,xz)))
- (native-inputs (list pkg-config))
- (outputs '("out"
- "doc")) ; 26 MiB of HTML documentation
+ (inputs
+ (list bzip2
+ fftw
+ freetype
+ ghostscript
+ graphviz
+ lcms
+ libjpeg-turbo
+ libpng
+ libtiff
+ libwebp
+ libx11
+ libxml2
+ pango
+ xz
+ zlib
+ zstd))
+ (native-inputs
+ (list font-ghostscript
+ pkg-config))
(home-page "https://www.imagemagick.org/")
(synopsis "Create, edit, compose, or convert bitmap images")
(description
@@ -145,23 +138,35 @@ text, lines, polygons, ellipses and Bézier curves.")
(define-public imagemagick
(package
(inherit imagemagick/stable)
+ (outputs '("out" "doc")) ; 11 MiB of HTML documentation
(properties (alist-delete 'hidden? (package-properties imagemagick/stable)))
;; The 7 release series has an incompatible API, while the 6 series is still
;; maintained. Don't update to 7 until we've made sure that the ImageMagick
;; users are ready for the 7-series API.
- (version "6.9.12-4")
+ (version "6.9.13-5")
(source (origin
(method url-fetch)
(uri (string-append "mirror://imagemagick/ImageMagick-"
version ".tar.xz"))
(sha256
(base32
- "1pkwij76yz7vd5grl6520pgpa912qb6kh34qamx4zfndwcx6cf6b"))
- (patches
- (search-patches "imagemagick-ReadDCMImage-fix.patch"
- "imagemagick-ReadDCMPixels-fix.patch"
- "imagemagick-WriteTHUMBNAILImage-fix.patch"
- "imagemagick-CVE-2020-27829.patch"))))))
+ "1j1chkw33vjc37509vdwss28qywfvckvs73pvscldj8d0wnwypa8"))))
+ (arguments
+ (substitute-keyword-arguments (package-arguments imagemagick/stable)
+ ((#:configure-flags flags #~'())
+ #~(delete "--disable-docs" #$flags))
+ ((#:phases phases #~'%standard-phases)
+ #~(modify-phases #$phases
+ (add-before 'build 'set-doc-directory
+ (lambda _
+ (substitute* "Makefile"
+ ;; Since the Makefile overrides $docdir, modify it to
+ ;; refer to what we want.
+ (("^DOCUMENTATION_PATH[[:blank:]]*=.*$")
+ (string-append "DOCUMENTATION_PATH = "
+ #$output:doc "/share/doc/"
+ #$(package-name this-package) "-"
+ #$(package-version this-package) "\n")))))))))))
(define-public perl-image-magick
(package
diff --git a/gnu/packages/inkscape.scm b/gnu/packages/inkscape.scm
index aa2c6419a0..aa33a0a4a3 100644
--- a/gnu/packages/inkscape.scm
+++ b/gnu/packages/inkscape.scm
@@ -4,10 +4,10 @@
;;; Copyright © 2016, 2018 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017, 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2020, 2021, 2022, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2020 Boris A. Dekshteyn <boris.dekshteyn@gmail.com>
;;; Copyright © 2020 Ekaitz Zarraga <ekaitz@elenq.tech>
-;;; Copyright © 2023 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2023, 2024 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -28,10 +28,11 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
+ #:use-module (guix gexp)
#:use-module (guix utils)
#:use-module (guix build-system cmake)
#:use-module (gnu packages)
- #:use-module (gnu packages aspell)
+ #:use-module (gnu packages algebra)
#:use-module (gnu packages bash)
#:use-module (gnu packages bdw-gc)
#:use-module (gnu packages boost)
@@ -50,6 +51,7 @@
#:use-module (gnu packages python)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
+ #:use-module (gnu packages readline)
#:use-module (gnu packages xml)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages fontutils)
@@ -58,21 +60,21 @@
#:use-module (srfi srfi-1))
;;; A variant of Inkscape intended to be bumped only on core-updates, to avoid
-;;; rebuilding 2k+ packages through dblatex.
+;;; rebuilding 2k+ packages through dblatex. It should only be used as a
+;;; native-input since it might not receive timely security updates.
(define-public inkscape/stable
(hidden-package
(package
(name "inkscape")
- (version "1.2.1")
+ (version "1.3.2")
(source
(origin
(method url-fetch)
(uri (string-append "https://media.inkscape.org/dl/"
"resources/file/"
"inkscape-" version ".tar.xz"))
- (patches (search-patches "inkscape-poppler-compat.patch"))
(sha256
- (base32 "06scilds4p4bw337ss22nfdxy2kynv5yjw6vq6nlpjm7xfh7vkj6"))
+ (base32 "0sq81smxwypgnp7r3wgza8w25dsz9qa8ga79sc85xzj3qi6q9lfv"))
(modules '((guix build utils)
(ice-9 format)))
(snippet
@@ -156,123 +158,151 @@ endif()~%~%"
((".*find_package\\(DoubleConversion.*") ""))))))
(build-system cmake-build-system)
(arguments
- `(#:test-target "check" ;otherwise some test binaries are missing
- #:imported-modules (,@%cmake-build-system-modules
+ (list
+ #:test-target "check" ;otherwise some test binaries are missing
+ #:disallowed-references (list imagemagick/stable)
+ #:imported-modules `(,@%cmake-build-system-modules
(guix build glib-or-gtk-build-system))
- #:modules ((guix build cmake-build-system)
+ #:modules '((guix build cmake-build-system)
((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
(guix build utils))
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'generate-gdk-pixbuf-loaders-cache-file
- (assoc-ref glib-or-gtk:%standard-phases
- 'generate-gdk-pixbuf-loaders-cache-file))
- (add-after 'unpack 'patch-icon-cache-generator
- (lambda _
- (substitute* "share/icons/application/CMakeLists.txt"
- (("gtk-update-icon-cache") "true"))))
- (add-after 'unpack 'disable-latex-export-tests
- ;; FIXME: For some reason the test.pdf_tex file generated by the
- ;; "--export-latex" lacks "some text" in its content when run in
- ;; the build environment. Skip the related tests.
- (lambda _
- (substitute* "testfiles/cli_tests/CMakeLists.txt"
- (("add_cli_test\\(export-latex")
- "message(TEST_DISABLED: export-latex"))))
- (add-after 'unpack 'disable-vertical-glyph-tests
- (lambda _
- ;; FIXME: These tests fail with newer Pango and Harfbuzz:
- ;; https://gitlab.com/inkscape/inkscape/-/issues/2917
- ;; https://gitlab.com/inkscape/inkscape/-/issues/3554
- ;; Simply providing older versions don't work, as we need
- ;; the full GTK stack; we could use package-input-rewriting
- ;; but then have to also downgrade pangomm and disable tests
- ;; in librsvg and GTK+. Just ignore for now.
- (substitute* "testfiles/rendering_tests/CMakeLists.txt"
- (("test-glyph-y-pos") "")
- (("text-glyphs-combining") "")
- (("text-glyphs-vertical") "")
- (("test-rtl-vertical") ""))))
- ,@(if (or (target-aarch64?)
- (target-ppc64le?)
- (target-riscv64?))
- `((add-after 'unpack 'disable-more-tests
- (lambda _
- ;; https://gitlab.com/inkscape/inkscape/-/issues/3554#note_1035680690
- (substitute* "testfiles/CMakeLists.txt"
- (("lpe64-test") "#lpe64-test"))
- ;; https://gitlab.com/inkscape/inkscape/-/issues/3554#note_1035539888
- ;; According to upstream, this is a false positive.
- (substitute* "testfiles/rendering_tests/CMakeLists.txt"
- (("test-use") "#test-use"))
- ;; https://gitlab.com/inkscape/inkscape/-/issues/3554#note_1035539888
- ;; Allegedly a precision error in the gamma.
- (substitute* "testfiles/cli_tests/CMakeLists.txt"
- (("add_cli_test\\(export-png-color-mode-gray-8_png" all)
- (string-append "#" all))))))
- '())
- (add-after 'unpack 'set-home
- ;; Mute Inkscape warnings during tests.
- (lambda _
- (setenv "HOME" (getcwd))))
- ;; Move the check phase after the install phase, as when run in the
- ;; tests, Inkscape relies on files that are not yet installed, such
- ;; as the "share/inkscape/ui/units.xml" file.
- (delete 'check)
- (add-after 'install 'check
- (assoc-ref %standard-phases 'check))
- (add-after 'install 'glib-or-gtk-compile-schemas
- (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
- (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap
- (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))
- (add-after 'install 'wrap-program
+ ;; Disable imagemagick support in the stable variant, to reduce the
+ ;; number of dependents of the 'imagemagick' package.
+ #:configure-flags
+ #~(list "-DWITH_IMAGE_MAGICK=OFF"
+ ;; TODO: Remove after next release, since the problematic
+ ;; libsoup/soup.h include is no longer used.
+ (string-append "-DCMAKE_CXX_FLAGS=-I"
+ (search-input-directory %build-inputs
+ "/include/libsoup-2.4")))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'generate-gdk-pixbuf-loaders-cache-file
+ (assoc-ref glib-or-gtk:%standard-phases
+ 'generate-gdk-pixbuf-loaders-cache-file))
+ #$@(if (or (target-aarch64?)
+ (target-ppc64le?)
+ (target-riscv64?))
+ '((add-after 'unpack 'disable-more-tests
+ (lambda _
+ ;; https://gitlab.com/inkscape/inkscape/-/issues/3554#note_1035680690
+ (substitute* "testfiles/CMakeLists.txt"
+ (("lpe64-test") "#lpe64-test"))
+ ;; https://gitlab.com/inkscape/inkscape/-/issues/3554#note_1035539888
+ ;; According to upstream, this is a false positive.
+ (substitute* "testfiles/rendering_tests/CMakeLists.txt"
+ (("test-use") "#test-use"))
+ ;; https://gitlab.com/inkscape/inkscape/-/issues/3554#note_1035539888
+ ;; Allegedly a precision error in the gamma.
+ (substitute* "testfiles/cli_tests/CMakeLists.txt"
+ (("add_cli_test\\(export-png-color-mode-gray-8_png" all)
+ (string-append "#" all))))))
+ '())
+ (add-after 'unpack 'set-home
+ ;; Mute Inkscape warnings during tests.
+ (lambda _
+ (setenv "HOME" (getcwd))))
+ ;; Move the check phase after the install phase, as when run in the
+ ;; tests, Inkscape relies on files that are not yet installed, such
+ ;; as the "share/inkscape/ui/units.xml" file.
+ (delete 'check)
+ (add-after 'install 'check
+ ;; Use ctest directly so that we can easily exclude problematic
+ ;; tests.
+ (lambda* (#:key parallel-tests? tests? #:allow-other-keys)
+ (when tests?
+ ;; The following tests fails, perhaps due to building without
+ ;; ImageMagick (see:
+ ;; https://gitlab.com/inkscape/inbox/-/issues/10005).
+ (let ((job-count (if parallel-tests?
+ (number->string (parallel-job-count))
+ "1"))
+ (skipped-tests
+ (list "cli_export-type-caseinsensitive_check_output"
+ "cli_export-type_xaml_check_output"
+ "cli_export-height_export-use-hints_check_output"
+ "cli_export-plain-svg_check_output"
+ "cli_export-use-hints_export-id_check_output"
+ "cli_export-extension_svg_check_output"
+ "cli_export-extension_ps_check_output"
+ "cli_export-extension_eps_check_output"
+ "cli_export-extension_pdf_check_output"
+ "cli_export-plain-extension-svg_check_output"
+ ;; These fail non-deterministically (see:
+ ;; https://gitlab.com/inkscape/inbox/-/issues/10005).
+ "cli_export-ps-level_3_check_output"
+ "cli_export-ps-level_3_content_check_output"
+ "cli_export-ps-level_2_content_check_output"
+ "cli_export-ps-level_2_check_output")))
+ (invoke "make" "-j" job-count "tests")
+ (invoke "ctest" "-j" job-count
+ "--output-on-error"
+ "-E" (string-append
+ "(" (string-join skipped-tests "|") ")"))))))
+ (add-after 'install 'glib-or-gtk-compile-schemas
+ (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
+ (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap
+ (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))
+ (add-after 'install 'wrap-program
;; Ensure Python is available at runtime.
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (wrap-program (string-append out "/bin/inkscape")
- `("GUIX_PYTHONPATH" prefix
- (,(getenv "GUIX_PYTHONPATH")))
- ;; Wrapping GDK_PIXBUF_MODULE_FILE allows Inkscape to load
- ;; its own icons in pure environments.
- `("GDK_PIXBUF_MODULE_FILE" =
- (,(getenv "GDK_PIXBUF_MODULE_FILE"))))))))))
+ (lambda* (#:key inputs #:allow-other-keys)
+ (wrap-program (string-append #$output "/bin/inkscape")
+ `("PATH" prefix
+ (,(dirname (search-input-file inputs "bin/python"))))
+ `("GUIX_PYTHONPATH" prefix
+ (,(getenv "GUIX_PYTHONPATH")))
+ ;; Wrapping GDK_PIXBUF_MODULE_FILE allows Inkscape to load
+ ;; its own icons in pure environments.
+ `("GDK_PIXBUF_MODULE_FILE" =
+ (,(getenv "GDK_PIXBUF_MODULE_FILE")))
+ ;; Ensure GObject Introspection typelibs are found.
+ `("GI_TYPELIB_PATH" ":" prefix
+ (,(getenv "GI_TYPELIB_PATH")))))))))
(inputs
- (list aspell
+ (list (librsvg-for-system) ;for the pixbuf loader
autotrace
bash-minimal
+ boost
+ freetype
gdl-minimal
- gtkmm-3
- gtk+
- gtkspell3
gsl
- poppler
+ gspell
+ gtk+
+ gtkmm-3
+ lcms
lib2geom
+ libcdr
+ libgc
libjpeg-turbo
libpng
- libxml2
- libxslt
- libgc
- (librsvg-for-system) ;for the pixbuf loader
libsoup-minimal-2
- libcdr
libvisio
libwpd
libwpg
- freetype
+ libxml2
+ libxslt
+ poppler
popt
potrace
- lcms
- boost
- python-wrapper
- python-scour
- python-pyserial
+ ;; These Python dependencies are used by the Inkscape extension
+ ;; management system. To verify that it is working, visit the
+ ;; Extensions -> Manage Extensions... menu.
+ python-appdirs
+ python-cssselect
+ python-lxml
python-numpy
- python-lxml))
+ python-pygobject
+ python-pyserial
+ python-requests
+ python-scour
+ python-wrapper
+ readline))
(native-inputs
- (list gettext-minimal
- imagemagick ;for tests
- `(,glib "bin")
+ (list `(,glib "bin")
+ bc
+ gettext-minimal
googletest
+ imagemagick/stable ;for tests
perl
pkg-config))
(home-page "https://inkscape.org/")
@@ -286,7 +316,7 @@ as the native format.")
(package
(inherit inkscape/stable)
(name "inkscape")
- (version "1.2.1")
+ (version "1.3.2")
(source
(origin
(inherit (package-source inkscape/stable))
@@ -295,23 +325,33 @@ as the native format.")
"resources/file/"
"inkscape-" version ".tar.xz"))
(sha256
- (base32 "06scilds4p4bw337ss22nfdxy2kynv5yjw6vq6nlpjm7xfh7vkj6"))))
+ (base32 "0sq81smxwypgnp7r3wgza8w25dsz9qa8ga79sc85xzj3qi6q9lfv"))))
(build-system cmake-build-system)
(arguments
(substitute-keyword-arguments (package-arguments inkscape/stable)
+ ((#:configure-flags flags ''())
+ ;; Enable ImageMagick support.
+ #~(delete "-DWITH_IMAGE_MAGICK=OFF" #$flags))
((#:phases phases)
- `(modify-phases ,phases
- (replace 'wrap-program
- ;; Ensure Python is available at runtime.
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (wrap-program (string-append out "/bin/inkscape")
- `("GUIX_PYTHONPATH" prefix
- (,(getenv "GUIX_PYTHONPATH")))
- ;; Wrapping GDK_PIXBUF_MODULE_FILE allows Inkscape to load
- ;; its own icons in pure environments.
- `("GDK_PIXBUF_MODULE_FILE" =
- (,(getenv "GDK_PIXBUF_MODULE_FILE")))))))))))
+ #~(modify-phases #$phases
+ (replace 'check
+ ;; Re-instate the tests disabled in inskcape/stable, now that
+ ;; their ImageMagick requirement is satisfied.
+ (assoc-ref %standard-phases 'check))
+ (replace 'wrap-program
+ ;; Ensure Python is available at runtime.
+ (lambda _
+ (wrap-program (string-append #$output "/bin/inkscape")
+ `("GUIX_PYTHONPATH" prefix
+ (,(getenv "GUIX_PYTHONPATH")))
+ ;; Wrapping GDK_PIXBUF_MODULE_FILE allows Inkscape to load
+ ;; its own icons in pure environments.
+ `("GDK_PIXBUF_MODULE_FILE" =
+ (,(getenv "GDK_PIXBUF_MODULE_FILE"))))))))))
(inputs (modify-inputs (package-inputs inkscape/stable)
- (append python-cssselect))) ;to render qrcode
+ (append imagemagick))) ;for libMagickCore and libMagickWand
+ (native-inputs
+ (modify-inputs (package-native-inputs inkscape/stable)
+ ;; Only use 1 imagemagick across the package build.
+ (replace "imagemagick" imagemagick)))
(properties (alist-delete 'hidden? (package-properties inkscape/stable)))))
diff --git a/gnu/packages/instrumentation.scm b/gnu/packages/instrumentation.scm
index 8b1a2a1c02..2ed0b8a283 100644
--- a/gnu/packages/instrumentation.scm
+++ b/gnu/packages/instrumentation.scm
@@ -587,7 +587,7 @@ whole-system symbolic access, and can also handle simple tracing jobs.")
(list
#:modules
`((ice-9 match)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:make-flags
#~(list
(string-append "CC=" #$(cc-for-target)))
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 613742007a..3d33dc6a3a 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -579,8 +579,8 @@
;; This is necessary because the certificate directory contains
;; files with non-ASCII characters in their names.
- (setlocale LC_ALL "en_US.utf8")
- (setenv "LC_ALL" "en_US.utf8")
+ (setlocale LC_ALL "C.UTF-8")
+ (setenv "LC_ALL" "C.UTF-8")
(for-each import-cert (find-files certs-dir "\\.pem$"))
(mkdir-p (string-append (assoc-ref outputs "out")
@@ -722,7 +722,7 @@ IcedTea build harness.")
(arguments
`(#:imported-modules
((guix build ant-build-system)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:disallowed-references ,(list (gexp-input icedtea-7 "jdk"))
@@ -743,6 +743,11 @@ IcedTea build harness.")
"--enable-nss"
,(string-append "--with-parallel-jobs="
(number->string (parallel-job-count)))
+ ;; Java Flight Recorder isn't supported on some architectures.
+ ,@(if ,(target-ppc32?)
+ `("--enable-jfr=no")
+ '())
+ "--disable-docs" ; This phase can take hours on slow machines.
"--disable-downloading"
"--disable-system-pcsc"
"--disable-system-sctp"
@@ -880,20 +885,27 @@ new Date();"))
(sha256
(base32
"1v92nzdqx07c35x945awzir4yk0fk22vky6fpp8mq9js930sxsz0"))
- (patches (search-patches "openjdk-9-pointer-comparison.patch"
- "openjdk-9-setsignalhandler.patch"
- "openjdk-currency-time-bomb.patch"))))
+ (patches
+ (search-patches "openjdk-9-pointer-comparison.patch"
+ "openjdk-9-classlist-reproducibility.patch"
+ "openjdk-currency-time-bomb.patch"
+ "openjdk-9-jar-reproducibility.patch"
+ "openjdk-9-module-reproducibility.patch"
+ "openjdk-9-module2-reproducibility.patch"
+ "openjdk-9-module3-reproducibility.patch"
+ "openjdk-9-idlj-reproducibility.patch"
+ "openjdk-9-setsignalhandler.patch"))))
(build-system gnu-build-system)
(outputs '("out" "jdk" "doc"))
(arguments
`(#:imported-modules
((guix build ant-build-system)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:modules
((guix build utils)
(guix build gnu-build-system)
(ice-9 popen))
- #:tests? #f; require jtreg
+ #:tests? #f ; require jtreg
#:make-flags '("all")
#:disallowed-references ,(list (gexp-input icedtea-8)
(gexp-input icedtea-8 "jdk"))
@@ -982,80 +994,80 @@ new Date();"))
file))))
(find-files "."
"\\.c$|\\.h$")))))
- ;; By default OpenJDK only generates an empty keystore. In order to
- ;; be able to use certificates in Java programs we need to generate a
- ;; keystore from a set of certificates. For convenience we use the
- ;; certificates from the nss-certs package.
- (add-after 'install 'install-keystore
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (use-modules (ice-9 rdelim))
- (let* ((keystore "cacerts")
- (certs-dir (search-input-directory inputs
- "etc/ssl/certs"))
- (keytool (string-append (assoc-ref outputs "jdk")
- "/bin/keytool")))
- (define (extract-cert file target)
- (call-with-input-file file
- (lambda (in)
- (call-with-output-file target
- (lambda (out)
- (let loop ((line (read-line in 'concat))
- (copying? #f))
- (cond
- ((eof-object? line) #t)
- ((string-prefix? "-----BEGIN" line)
- (display line out)
- (loop (read-line in 'concat) #t))
- ((string-prefix? "-----END" line)
- (display line out)
- #t)
- (else
- (when copying? (display line out))
- (loop (read-line in 'concat) copying?)))))))))
- (define (import-cert cert)
- (format #t "Importing certificate ~a\n" (basename cert))
- (let ((temp "tmpcert"))
- (extract-cert cert temp)
- (let ((port (open-pipe* OPEN_WRITE keytool
- "-import"
- "-alias" (basename cert)
- "-keystore" keystore
- "-storepass" "changeit"
- "-file" temp)))
- (display "yes\n" port)
- (when (not (zero? (status:exit-val (close-pipe port))))
- (format #t "failed to import ~a\n" cert)))
- (delete-file temp)))
-
- ;; This is necessary because the certificate directory contains
- ;; files with non-ASCII characters in their names.
- (setlocale LC_ALL "en_US.utf8")
- (setenv "LC_ALL" "en_US.utf8")
-
- (copy-file (string-append (assoc-ref outputs "out")
- "/lib/security/cacerts")
- keystore)
- (chmod keystore #o644)
- (for-each import-cert (find-files certs-dir "\\.pem$"))
- (mkdir-p (string-append (assoc-ref outputs "out")
- "/lib/security"))
- (mkdir-p (string-append (assoc-ref outputs "jdk")
- "/lib/security"))
-
- ;; The cacerts files we are going to overwrite are chmod'ed as
- ;; read-only (444) in icedtea-8 (which derives from this
- ;; package). We have to change this so we can overwrite them.
- (chmod (string-append (assoc-ref outputs "out")
- "/lib/security/" keystore) #o644)
- (chmod (string-append (assoc-ref outputs "jdk")
- "/lib/security/" keystore) #o644)
-
- (install-file keystore
- (string-append (assoc-ref outputs "out")
- "/lib/security"))
- (install-file keystore
- (string-append (assoc-ref outputs "jdk")
- "/lib/security")))))
+ ;; By default OpenJDK only generates an empty keystore. In order to
+ ;; be able to use certificates in Java programs we need to generate a
+ ;; keystore from a set of certificates. For convenience we use the
+ ;; certificates from the nss-certs package.
+ (add-after 'install 'install-keystore
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (use-modules (ice-9 rdelim))
+ (let* ((keystore "cacerts")
+ (certs-dir (search-input-directory inputs
+ "etc/ssl/certs"))
+ (keytool (string-append (assoc-ref outputs "jdk")
+ "/bin/keytool")))
+ (define (extract-cert file target)
+ (call-with-input-file file
+ (lambda (in)
+ (call-with-output-file target
+ (lambda (out)
+ (let loop ((line (read-line in 'concat))
+ (copying? #f))
+ (cond
+ ((eof-object? line) #t)
+ ((string-prefix? "-----BEGIN" line)
+ (display line out)
+ (loop (read-line in 'concat) #t))
+ ((string-prefix? "-----END" line)
+ (display line out)
+ #t)
+ (else
+ (when copying? (display line out))
+ (loop (read-line in 'concat) copying?)))))))))
+ (define (import-cert cert)
+ (format #t "Importing certificate ~a\n" (basename cert))
+ (let ((temp "tmpcert"))
+ (extract-cert cert temp)
+ (let ((port (open-pipe* OPEN_WRITE keytool
+ "-import"
+ "-alias" (basename cert)
+ "-keystore" keystore
+ "-storepass" "changeit"
+ "-file" temp)))
+ (display "yes\n" port)
+ (when (not (zero? (status:exit-val (close-pipe port))))
+ (format #t "failed to import ~a\n" cert)))
+ (delete-file temp)))
+
+ ;; This is necessary because the certificate directory contains
+ ;; files with non-ASCII characters in their names.
+ (setlocale LC_ALL "C.UTF-8")
+ (setenv "LC_ALL" "C.UTF-8")
+
+ (copy-file (string-append (assoc-ref outputs "out")
+ "/lib/security/cacerts")
+ keystore)
+ (chmod keystore #o644)
+ (for-each import-cert (find-files certs-dir "\\.pem$"))
+ (mkdir-p (string-append (assoc-ref outputs "out")
+ "/lib/security"))
+ (mkdir-p (string-append (assoc-ref outputs "jdk")
+ "/lib/security"))
+
+ ;; The cacerts files we are going to overwrite are chmod'ed as
+ ;; read-only (444) in icedtea-8 (which derives from this
+ ;; package). We have to change this so we can overwrite them.
+ (chmod (string-append (assoc-ref outputs "out")
+ "/lib/security/" keystore) #o644)
+ (chmod (string-append (assoc-ref outputs "jdk")
+ "/lib/security/" keystore) #o644)
+
+ (install-file keystore
+ (string-append (assoc-ref outputs "out")
+ "/lib/security"))
+ (install-file keystore
+ (string-append (assoc-ref outputs "jdk")
+ "/lib/security")))))
;; Some of the libraries in the lib/ folder link to libjvm.so.
;; But that shared object is located in the server/ folder, so it
;; cannot be found. This phase creates a symbolic link in the
@@ -1088,48 +1100,96 @@ new Date();"))
(copy-recursively (string-append images "/images/docs") doc))))
(add-after 'install 'strip-zip-timestamps
(lambda* (#:key outputs #:allow-other-keys)
- (for-each (lambda (zip)
- (let ((dir (mkdtemp "zip-contents.XXXXXX")))
- (with-directory-excursion dir
- (invoke "unzip" zip))
- (delete-file zip)
- (for-each (lambda (file)
- (let ((s (lstat file)))
- (unless (eq? (stat:type s) 'symlink)
- (format #t "reset ~a~%" file)
- (utime file 0 0 0 0))))
- (find-files dir #:directories? #t))
- (with-directory-excursion dir
- (let ((files (find-files "." ".*" #:directories? #t)))
- (apply invoke "zip" "-0" "-X" zip files)))))
- (find-files (assoc-ref outputs "doc") ".*.zip$")))))))
- (inputs
- `(("alsa-lib" ,alsa-lib)
- ("cups" ,cups)
- ("fontconfig" ,fontconfig)
- ("freetype" ,freetype)
- ("giflib" ,giflib)
- ("lcms" ,lcms)
- ("libelf" ,libelf)
- ("libjpeg" ,libjpeg-turbo)
- ("libice" ,libice)
- ("libpng" ,libpng)
- ("libx11" ,libx11)
- ("libxcomposite" ,libxcomposite)
- ("libxi" ,libxi)
- ("libxinerama" ,libxinerama)
- ("libxrender" ,libxrender)
- ("libxt" ,libxt)
- ("libxtst" ,libxtst)))
+ (for-each
+ (lambda (zip)
+ (let ((dir (mkdtemp "zip-contents.XXXXXX")))
+ (with-directory-excursion dir
+ ;; This is an exact copy of the implementation of invoke,
+ ;; but this accepts exit code 1 as OK.
+ (let ((code (system* "unzip" "--" zip)))
+ ;; jmod files are zip files with an extra header in
+ ;; front. unzip will warn about that -- but otherwise
+ ;; work.
+ (when (> (status:exit-val code) 1) ; 1 is just a warning
+ (raise
+ (condition
+ (&invoke-error
+ (program "unzip")
+ (arguments (list "--" zip))
+ (exit-status (status:exit-val code))
+ (term-signal (status:term-sig code))
+ (stop-signal (status:stop-sig code))))))))
+ (delete-file zip)
+ (for-each (lambda (file)
+ (let ((s (lstat file)))
+ (format #t "reset ~a~%" file)
+ (utime file 1 1 0 0
+ AT_SYMLINK_NOFOLLOW)))
+ (find-files dir #:directories? #t))
+ (with-directory-excursion dir
+ (let ((files (cons "./META-INF/MANIFEST.MF"
+ (append
+ (find-files "./META-INF" ".*")
+ ;; for jmod:
+ (list "./classes/module-info.class")
+ (find-files "." ".*")))))
+ (apply invoke "zip" "--symlinks" "-0" "-X" zip files)
+ (when (string-suffix? ".jmod" zip)
+ (let ((new-zip (string-append zip "n"))
+ (contents (call-with-input-file zip
+ (@ (ice-9 binary-ports)
+ get-bytevector-all))))
+ (call-with-output-file new-zip
+ (lambda (output-port)
+ ((@ (ice-9 binary-ports) put-bytevector)
+ output-port
+ #vu8(#x4a #x4d #x01 #x00)) ; JM
+ ((@ (ice-9 binary-ports) put-bytevector)
+ output-port
+ contents)))
+ (rename-file new-zip zip)))))))
+ (append (find-files (string-append
+ (assoc-ref outputs "doc")
+ "/api")
+ "\\.zip$")
+ (find-files (assoc-ref outputs "doc") "src\\.zip$")
+ (find-files (assoc-ref outputs "jdk") "src\\.zip$")
+ (find-files (assoc-ref outputs "jdk") "\\.jmod$")
+ (find-files (assoc-ref outputs "jdk") "\\.diz$")
+ (find-files (assoc-ref outputs "out") "\\.diz$")
+
+ (list (string-append (assoc-ref outputs "jdk")
+ "/lib/jrt-fs.jar"))
+ (find-files (string-append (assoc-ref outputs "jdk")
+ "/demo")
+ "\\.jar$"))))))))
+ (inputs
+ (list alsa-lib
+ cups
+ fontconfig
+ freetype
+ giflib
+ lcms
+ libelf
+ libjpeg-turbo
+ libice
+ libpng
+ libx11
+ libxcomposite
+ libxi
+ libxinerama
+ libxrender
+ libxt
+ libxtst))
(native-inputs
- `(("icedtea-8" ,icedtea-8)
- ("icedtea-8:jdk" ,icedtea-8 "jdk")
- ;; XXX: The build system fails with newer versions of GNU Make.
- ("make@4.2" ,gnu-make-4.2)
- ("nss-certs" ,nss-certs)
- ("unzip" ,unzip)
- ("which" ,which)
- ("zip" ,zip)))
+ (list icedtea-8
+ `(,icedtea-8 "jdk")
+ ;; XXX: The build system fails with newer versions of GNU Make.
+ gnu-make-4.2
+ nss-certs
+ unzip
+ which
+ zip))
(home-page "https://openjdk.org/projects/jdk9/")
(synopsis "Java development kit")
(description
@@ -1154,7 +1214,15 @@ new Date();"))
(base32
"0i47ar8lxzjrkkiwbzybfxs473390h4jq9ahm3xqdvy5zpchxy3y"))
(patches (search-patches
+ "openjdk-10-char-reproducibility.patch"
+ "openjdk-10-classlist-reproducibility.patch"
+ "openjdk-10-corba-reproducibility.patch"
"openjdk-10-idlj-reproducibility.patch"
+ "openjdk-10-module-reproducibility.patch"
+ "openjdk-10-module3-reproducibility.patch"
+ "openjdk-10-module4-reproducibility.patch"
+ "openjdk-10-jar-reproducibility.patch"
+ "openjdk-10-jtask-reproducibility.patch"
"openjdk-10-pointer-comparison.patch"
"openjdk-10-setsignalhandler.patch"
"openjdk-currency-time-bomb2.patch"))))
@@ -1180,6 +1248,11 @@ new Date();"))
;; this exact first line.
(substitute* "make/data/blacklistedcertsconverter/blacklisted.certs.pem"
(("^#!.*") "#! java BlacklistedCertsConverter SHA-256\n"))))
+ (add-after 'unpack 'remove-timestamping
+ (lambda _
+ (substitute* "./src/hotspot/share/runtime/vm_version.cpp"
+ (("__DATE__") "")
+ (("__TIME__") ""))))
(replace 'configure
(lambda* (#:key inputs outputs #:allow-other-keys)
(invoke "bash" "./configure"
@@ -1229,8 +1302,14 @@ new Date();"))
(modules '((guix build utils)))
(snippet
'(for-each delete-file (find-files "." "\\.(bin|exe|jar)$")))
- (patches (search-patches
- "openjdk-currency-time-bomb2.patch"))))
+ (patches
+ (search-patches "openjdk-10-module3-reproducibility.patch"
+ "openjdk-10-module4-reproducibility.patch"
+ "openjdk-10-char-reproducibility.patch"
+ "openjdk-11-classlist-reproducibility.patch"
+ "openjdk-10-jar-reproducibility.patch"
+ "openjdk-10-jtask-reproducibility.patch"
+ "openjdk-currency-time-bomb2.patch"))))
(build-system gnu-build-system)
(outputs '("out" "jdk" "doc"))
(arguments
@@ -1264,6 +1343,10 @@ new Date();"))
"--with-libjpeg=system"
"--with-libpng=system"
"--with-version-pre="
+ ;; Should be set by SOURCE_DATE_EPOCH handler, but isn't being
+ ;; set; do it manually.
+ "--with-hotspot-build-time=1970-01-01T00:00:01"
+ "--enable-reproducible-build" ; to be sure
;; Allow the build system to locate the system freetype.
(string-append "--with-freetype-include="
#$(this-package-input "freetype") "/include")
@@ -1277,6 +1360,11 @@ new Date();"))
;; this exact first line.
(substitute* "make/data/blockedcertsconverter/blocked.certs.pem"
(("^#!.*") "#! java BlockedCertsConverter SHA-256\n"))))
+ (add-after 'unpack 'remove-timestamping
+ (lambda _
+ (substitute* "src/hotspot/share/runtime/abstract_vm_version.cpp"
+ (("__DATE__") "")
+ (("__TIME__") ""))))
(add-after 'unpack 'patch-jni-libs
;; Hardcode dynamically loaded libraries.
(lambda _
@@ -1396,7 +1484,7 @@ new Date();"))
((name . dir)
dir))
outputs)))))
- (add-after 'remove-diz-file 'strip-archive-timestamps
+ (add-after 'remove-extraneous-files 'strip-archive-timestamps
(lambda _
(use-modules (ice-9 binary-ports)
(rnrs bytevectors))
@@ -1477,7 +1565,7 @@ new Date();"))
libxtst))
(native-inputs
(list autoconf
- bash ; not bash-minimal, needs ulimit
+ bash ; not bash-minimal, needs ulimit
openjdk10
`(,openjdk10 "jdk")
gnu-make-4.2
@@ -1486,7 +1574,7 @@ new Date();"))
unzip
which
zip))
- (home-page "https://openjdk.java.net/projects/jdk/11/")
+ (home-page "https://openjdk.org/projects/jdk/11/")
(synopsis "Java development kit")
(description
"This package provides the Java development kit OpenJDK.")
@@ -1563,6 +1651,11 @@ new Date();"))
(string-append "Interpreter specific version of call_VM_base\n"
" using MacroAssembler::call_VM_leaf_base;"))))))
#~())
+ (replace 'remove-timestamping
+ (lambda _
+ (substitute* "src/hotspot/share/runtime/vm_version.cpp"
+ (("__DATE__") "")
+ (("__TIME__") ""))))
(replace 'fix-java-shebangs
(lambda _
;; 'blocked' was renamed to 'blacklisted' in this version for
@@ -1575,9 +1668,20 @@ blacklisted.certs.pem"
(define-public openjdk13
(make-openjdk openjdk12 "13.0.14"
"1v92i5rhahqkjw8mz09c9qasnxqc67ygy0y266kdmm534z0da755"
- (source (origin
- (inherit (package-source base))
- (patches '())))))
+ (source (origin
+ (inherit (package-source base))
+ (patches (search-patches "openjdk-13-classlist-reproducibility.patch"
+ "openjdk-10-jtask-reproducibility.patch"))))
+ (arguments
+ (substitute-keyword-arguments (package-arguments openjdk12)
+ ((#:phases phases)
+ #~(modify-phases #$phases
+ (replace 'remove-timestamping
+ (lambda _
+ (substitute*
+ "src/hotspot/share/runtime/abstract_vm_version.cpp"
+ (("__DATE__") "")
+ (("__TIME__") ""))))))))))
(define-public openjdk14
(make-openjdk
@@ -1592,7 +1696,9 @@ blacklisted.certs.pem"
(substitute* "make/autoconf/basics.m4"
(("if help") "if command -v"))
(for-each delete-file (find-files "." "\\.(bin|exe|jar)$"))))
- (patches (search-patches "openjdk-10-setsignalhandler.patch"))))))
+ (patches (search-patches "openjdk-10-setsignalhandler.patch"
+ "openjdk-10-jtask-reproducibility.patch"
+ "openjdk-13-classlist-reproducibility.patch"))))))
(define-public openjdk15
(make-openjdk
@@ -1603,7 +1709,8 @@ blacklisted.certs.pem"
(modules '())
(snippet #f)
(patches
- (search-patches "openjdk-15-xcursor-no-dynamic.patch"))))
+ (search-patches "openjdk-15-jtask-reproducibility.patch"
+ "openjdk-15-xcursor-no-dynamic.patch"))))
(inputs
(modify-inputs (package-inputs base)
(append libxcursor))) ;for our patch to work
@@ -7978,7 +8085,7 @@ discards all logging messages.")
(arguments
`(#:tests? #f ; no test target
#:imported-modules ((guix build ant-build-system)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:modules (((guix build ant-build-system) #:prefix ant:)
(guix build gnu-build-system)
(guix build utils))
diff --git a/gnu/packages/jemalloc.scm b/gnu/packages/jemalloc.scm
index 5e7facfd5e..b5fdd39921 100644
--- a/gnu/packages/jemalloc.scm
+++ b/gnu/packages/jemalloc.scm
@@ -62,6 +62,8 @@
;; https://github.com/jemalloc/jemalloc/issues/937
#~'("--disable-initial-exec-tls"
#$@(match (%current-system)
+ ("aarch64-linux"
+ (list "--with-lg-page=14"))
("powerpc-linux"
(list "CPPFLAGS=-maltivec"))
(_
diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index 18f0d6c7d3..9668b3fd1e 100644
--- a/gnu/packages/julia.scm
+++ b/gnu/packages/julia.scm
@@ -35,6 +35,7 @@
#:use-module (gnu packages)
#:use-module (gnu packages algebra)
#:use-module (gnu packages base)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages compression)
#:use-module (gnu packages curl)
#:use-module (gnu packages elf)
@@ -501,7 +502,8 @@ using Dates: @dateformat_str, Date, DateTime, DateFormat, Time"))
(assoc-ref %build-inputs "libuv")
"/include"))))
(inputs
- `(("coreutils" ,coreutils) ; for bindings to "mkdir" and the like
+ `(("bash-minimal" ,bash-minimal)
+ ("coreutils" ,coreutils) ; for bindings to "mkdir" and the like
("curl" ,curl-ssh)
("gfortran" ,gfortran)
;; required for libgcc_s.so
diff --git a/gnu/packages/kawa.scm b/gnu/packages/kawa.scm
index 49a3ca6e16..e644965f9b 100644
--- a/gnu/packages/kawa.scm
+++ b/gnu/packages/kawa.scm
@@ -23,6 +23,7 @@
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module ((guix licenses) #:prefix license:)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages java))
(define-public kawa
@@ -45,10 +46,9 @@
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(wrap-program (string-append out "/share/kawa/bin/kawa")
- `("JAVA_HOME" ":" = (,(assoc-ref inputs "icedtea"))))
- #t))))))
+ `("JAVA_HOME" ":" = (,(assoc-ref inputs "icedtea"))))))))))
(inputs
- (list `(,icedtea-8 "jdk")))
+ (list bash-minimal `(,icedtea-8 "jdk")))
(home-page "https://www.gnu.org/software/kawa/")
(synopsis "Java framework and implementation of Scheme, Elisp, and more")
(description
diff --git a/gnu/packages/kde-plasma.scm b/gnu/packages/kde-plasma.scm
index a1c17d3346..5cb487da62 100644
--- a/gnu/packages/kde-plasma.scm
+++ b/gnu/packages/kde-plasma.scm
@@ -1302,7 +1302,7 @@ KDE Frameworks components.")
eudev
fontconfig
freetype
- `(,hwdata "pnp")
+ hwdata
kactivities
kcmutils
kcompletion
diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm
index 38992150c7..e7df38e858 100644
--- a/gnu/packages/kde.scm
+++ b/gnu/packages/kde.scm
@@ -190,6 +190,7 @@ This package contains GUI widgets for baloo.")
(list akonadi
akonadi-contacts
akonadi-mime
+ bash-minimal
boost
breeze-icons
gpgme
@@ -758,7 +759,8 @@ set(CMAKE_C_FLAGS \"${CMAKE_C_FLAGS} -fPIC\" ) ")))))))
qwt
vc))
(inputs
- (list boost
+ (list bash-minimal
+ boost
exiv2
fontconfig
fftw-cmake
diff --git a/gnu/packages/language.scm b/gnu/packages/language.scm
index 0b562bcde9..d092fbafbf 100644
--- a/gnu/packages/language.scm
+++ b/gnu/packages/language.scm
@@ -969,7 +969,7 @@ and manipulation.")
#:prefix emacs:)
(guix build utils)
(guix build emacs-utils))
- #:imported-modules (,@%gnu-build-system-modules
+ #:imported-modules (,@%default-gnu-imported-modules
(guix build emacs-build-system)
(guix build emacs-utils))
#:phases (modify-phases %standard-phases
diff --git a/gnu/packages/ld-wrapper.in b/gnu/packages/ld-wrapper.in
index 0d53e746af..c9bb235bca 100644
--- a/gnu/packages/ld-wrapper.in
+++ b/gnu/packages/ld-wrapper.in
@@ -1,23 +1,28 @@
#!@BASH@
# -*- mode: scheme; coding: utf-8; -*-
-# XXX: We have to go through Bash because there's no command-line switch to
-# augment %load-compiled-path, and because of the silly 127-byte limit for
-# the shebang line in Linux.
-# Use `load-compiled' because `load' (and `-l') doesn't otherwise load our
-# .go file (see <http://bugs.gnu.org/12519>).
-# Unset 'GUILE_LOAD_COMPILED_PATH' to make sure we do not stumble upon
-# incompatible .go files. See
-# <https://lists.gnu.org/archive/html/guile-devel/2016-03/msg00000.html>.
+# XXX: We have to go through Bash because there's no Guile command-line switch to
+# ignore the various Guile load path related environment variables.
+
+# Unset 'GUILE_LOAD_PATH' to make sure we do not stumble upon
+# incompatible Guile files (see
+# <https://lists.gnu.org/archive/html/guile-devel/2016-03/msg00000.html>).
+unset GUILE_LOAD_PATH
unset GUILE_LOAD_COMPILED_PATH
+unset GUILE_SYSTEM_PATH
unset GUILE_SYSTEM_COMPILED_PATH
+
+# Use `load-compiled' because `load' (and `-l') doesn't otherwise load our
+# .go file, or causes extraneous `stat' system calls when the "-C" "/" arguments
+# are provided.
main="(@ (gnu build-support ld-wrapper) ld-wrapper)"
-exec @GUILE@ -c "(load-compiled \"@SELF@.go\") (apply $main (cdr (command-line)))" "$@"
+exec @GUILE@ -c "(load-compiled \"@SELF@.go\") ($main (command-line))" "$@"
!#
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -285,9 +290,9 @@ library outside of ~a: ~s~%"
result
(expand-arguments result)))
-(define (ld-wrapper . args)
+(define (ld-wrapper args)
;; Invoke the real `ld' with ARGS, augmented with `-rpath' switches.
- (let* ((args (expand-arguments args))
+ (let* ((args (expand-arguments (cdr args))) ;strip arg0
(path (library-search-path args))
(libs (library-files-linked args path))
(args (append args (rpath-arguments libs))))
diff --git a/gnu/packages/libunistring.scm b/gnu/packages/libunistring.scm
index eccd053a35..f0b071f11c 100644
--- a/gnu/packages/libunistring.scm
+++ b/gnu/packages/libunistring.scm
@@ -35,7 +35,7 @@
(define-public libunistring
(package
(name "libunistring")
- (version "1.0")
+ (version "1.1")
(source (origin
(method url-fetch)
(uri (string-append
@@ -43,7 +43,7 @@
version ".tar.xz"))
(sha256
(base32
- "0h97qx3c4970wvh25g51sjgz54xn37lrfy95dg97xmvmkys5basv"))))
+ "164vfbh3sf0qjcimjbnz4icqr9cai30dli8p2y5p6z3frfwiwz42"))))
(propagated-inputs (libiconv-if-needed))
(outputs '("out" "static"))
(build-system gnu-build-system)
diff --git a/gnu/packages/license.scm b/gnu/packages/license.scm
index c562f70498..1e86968ab1 100644
--- a/gnu/packages/license.scm
+++ b/gnu/packages/license.scm
@@ -23,6 +23,7 @@
(define-module (gnu packages license)
#:use-module (gnu packages)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages check)
#:use-module (gnu packages perl)
#:use-module (gnu packages perl-check)
@@ -150,6 +151,8 @@ statements and serializes in normalized format.")
("perl-string-escape" ,perl-string-escape)
("perl-try-tiny" ,perl-try-tiny)
("perl-module-runtime" ,perl-module-runtime)))
+ (inputs
+ `(("bash" ,bash-minimal))) ; for wrap-program
(arguments
`(#:phases
(modify-phases %standard-phases
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 9c819838bd..1610cb7ff8 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -42,7 +42,7 @@
;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2020 Chris Marusich <cmmarusich@gmail.com>
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
-;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com>
;;; Copyright © 2020 John Soo <jsoo1@asu.edu>
;;; Copyright © 2020, 2022 Michael Rohleder <mike@rohleder.de>
@@ -276,7 +276,7 @@ of 'uname -r' behind the Linux version numbers."
(arguments
(substitute-keyword-arguments
(package-arguments linux)
- ((#:imported-modules imported-modules %gnu-build-system-modules)
+ ((#:imported-modules imported-modules %default-gnu-imported-modules)
`((guix build kconfig) ,@imported-modules))
((#:modules modules)
`((guix build kconfig) ,@modules))
@@ -1931,10 +1931,10 @@ accepted as a quirk (ie AMD Vega 10).")
"linux-pam-no-setfsuid.patch"))))
(build-system gnu-build-system)
+ (inputs (list libxcrypt))
(native-inputs
(list flex
;; TODO: optional dependencies
- ;; ("libxcrypt" ,libxcrypt)
;; ("cracklib" ,cracklib)
))
(arguments
@@ -2275,11 +2275,7 @@ deviation, and minimum and maximum values. It can show a nice histogram too.")
;; Change the test to refer to the right file.
(substitute* "tests/ts/misc/mcookie"
(("/etc/services")
- services))
-
- ;; The C.UTF-8 locale does not exist in our libc.
- (substitute* "tests/ts/column/invalid-multibyte"
- (("C\\.UTF-8") "en_US.utf8")))))
+ services)))))
(add-before 'check 'disable-setarch-test
(lambda _
;; The setarch tests are unreliable in QEMU's user-mode
@@ -2902,7 +2898,7 @@ intercept and print the system calls executed by the program.")
(define-public alsa-ucm-conf
(package
(name "alsa-ucm-conf")
- (version "1.2.4")
+ (version "1.2.11")
(source (origin
(method url-fetch)
(uri (string-append
@@ -2910,7 +2906,7 @@ intercept and print the system calls executed by the program.")
version ".tar.bz2"))
(sha256
(base32
- "0h6kzi1cfdqyxp4pwpqh5wb89c8s9wrgix315bvamffwfxf56frc"))))
+ "10dfzvrmpp9swflw47nxf35an6gj3ilb4wlggdnng8g2637h2z1q"))))
(build-system copy-build-system)
(arguments
'(#:install-plan
@@ -2950,15 +2946,15 @@ configuration files that can be used for specific audio hardware.")
(define-public alsa-lib
(package
(name "alsa-lib")
- (version "1.2.4")
+ (version "1.2.11")
(source (origin
(method url-fetch)
(uri (string-append
- "ftp://ftp.alsa-project.org/pub/lib/alsa-lib-"
- version ".tar.bz2"))
+ "https://www.alsa-project.org/files/pub/lib/"
+ name "-" version ".tar.bz2"))
(sha256
(base32
- "1xq8d48wfy59qw4x7383j32n8j5njndw5hcgnmlg9pvclphlnmgp"))))
+ "0kdvjlknc50fwfdkxj0z12xbz21skb3gnwlh6lvsvycmp5ljygwz"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags (list (string-append "LDFLAGS=-Wl,-rpath="
@@ -2997,45 +2993,35 @@ MIDI functionality to the Linux-based operating system.")
(define-public alsa-utils
(package
(name "alsa-utils")
- (version "1.2.4")
+ (version "1.2.11")
(source (origin
- (method url-fetch)
- (uri (string-append "ftp://ftp.alsa-project.org/pub/utils/"
- name "-" version ".tar.bz2"))
- (sha256
- (base32
- "09m4dnn4kplawprd2bl15nwa0b4r1brab3x44ga7f1fyk7aw5zwq"))))
+ (method url-fetch)
+ (uri (string-append
+ "https://www.alsa-project.org/files/pub/utils/"
+ name "-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "19r8qi6b7sd2p1mhxfqrp18wrgjw5s6rp5ygimb1w59zi0xcmils"))))
(build-system gnu-build-system)
(arguments
- ;; XXX: Disable man page creation until we have DocBook.
- '(#:configure-flags (list "--disable-xmlto"
-
- ;; The udev rule is responsible for restoring
- ;; the volume.
- (string-append "--with-udev-rules-dir="
- (assoc-ref %outputs "out")
- "/lib/udev/rules.d"))
- #:phases
- (modify-phases %standard-phases
- (add-before 'check 'disable-broken-test
- (lambda _
- ;; XXX: The 1.1.8 release tarball is missing a header that's
- ;; required for this test to work. Fixed in 1.1.9.
- (substitute* "axfer/test/Makefile"
- ((".*container-test.*") ""))
- #t))
- (add-before
- 'install 'pre-install
- (lambda _
- ;; Don't try to mkdir /var/lib/alsa.
- (substitute* "Makefile"
- (("\\$\\(MKDIR_P\\) .*ASOUND_STATE_DIR.*")
- "true\n"))
- #t)))))
+ (list
+ #:configure-flags
+ #~(list
+ ;; The udev rule is responsible for restoring the volume.
+ (string-append "--with-udev-rules-dir=" #$output "/lib/udev/rules.d"))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'install 'pre-install
+ (lambda _
+ ;; Don't try to mkdir /var/lib/alsa.
+ (substitute* "Makefile"
+ (("\\$\\(MKDIR_P\\) .*ASOUND_STATE_DIR.*")
+ "true\n")))))))
(native-inputs
- `(("gettext" ,gettext-minimal)))
+ (list docbook-xml-4.2 docbook-xsl xmlto
+ gettext-minimal))
(inputs
- (list libsamplerate ncurses alsa-lib xmlto))
+ (list libsamplerate ncurses alsa-lib))
(home-page "http://www.alsa-project.org/")
(synopsis "Utilities for the Advanced Linux Sound Architecture (ALSA)")
(description
@@ -3311,7 +3297,7 @@ that the Ethernet protocol is much simpler than the IP protocol.")
(define-public iproute
(package
(name "iproute2")
- (version "6.0.0")
+ (version "6.4.0")
(source (origin
(method url-fetch)
(uri (string-append
@@ -3319,7 +3305,7 @@ that the Ethernet protocol is much simpler than the IP protocol.")
version ".tar.xz"))
(sha256
(base32
- "02jq36p7py8zs8s8jj49ap82sgf5wi5yfbgsfiirkv1awzlkjcaj"))))
+ "0wm2g70vfhnf8wb6py3zmzwxp4zv1icny1pvkwaxmr67rggbhlac"))))
(build-system gnu-build-system)
(arguments
(list
@@ -4188,7 +4174,8 @@ NUMA performance on your system.")
(native-inputs
(list autoconf pkg-config))
(inputs
- `(("bzip2" ,bzip2)
+ `(("bash" ,bash-minimal) ; for wrap-program
+ ("bzip2" ,bzip2)
("gzip" ,gzip)
("pam" ,linux-pam)
("xz" ,xz)
@@ -4284,37 +4271,36 @@ to use Linux' inotify mechanism, which allows file accesses to be monitored.")
"0am54mi5rk72g5q7k6l6f36gw3r9vwgjmyna43ywcjhqmakyx00b"))
(patches (search-patches "kmod-module-directory.patch"))))
(build-system gnu-build-system)
- (native-inputs
- (list pkg-config
- ;; For tests.
- zstd))
- (inputs
- `(("xz" ,xz)
- ("zlib" ,zlib)
- ("zstd-lib" ,zstd "lib")))
(arguments
- `(#:configure-flags '("--with-xz" "--with-zlib" "--with-zstd"
- "--disable-test-modules")
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'disable-tests
- (lambda _
- ;; XXX: These tests need '--sysconfdir=/etc' to pass.
- (substitute* "Makefile.in"
- (("testsuite/test-modprobe") "")
- (("testsuite/test-depmod") "")
- (("testsuite/test-blacklist") ""))
- #t))
- (add-after 'install 'install-modprobe&co
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (bin (string-append out "/bin")))
- (for-each (lambda (tool)
- (symlink "kmod"
- (string-append bin "/" tool)))
- '("insmod" "rmmod" "lsmod" "modprobe"
- "modinfo" "depmod"))
- #t))))))
+ (list #:configure-flags #~(list "--with-xz" "--with-zlib" "--with-zstd"
+ "--disable-test-modules")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'disable-tests
+ (lambda _
+ ;; XXX: These tests need '--sysconfdir=/etc' to pass.
+ (substitute* "Makefile.in"
+ (("testsuite/test-modprobe") "")
+ (("testsuite/test-depmod") "")
+ (("testsuite/test-blacklist") ""))))
+ (add-after 'install 'install-modprobe&co
+ (lambda _
+ (for-each (lambda (tool)
+ (symlink "kmod"
+ (string-append #$output "/bin/" tool)))
+ '("insmod" "rmmod" "lsmod" "modprobe"
+ "modinfo" "depmod"))))
+ (add-after 'install 'remove-libtool-archives
+ ;; Libtool archives lists the whole transitive dependencies,
+ ;; which is unnecessary unless producing static archives and
+ ;; leads to overlinking, e.g. causing the build of
+ ;; libblockdev to fail due to attempting to link with zstd.
+ (lambda _
+ (for-each delete-file
+ (find-files (string-append #$output "/lib")
+ "\\.la$")))))))
+ (native-inputs (list pkg-config zstd)) ;zstd needed for tests
+ (inputs (list xz zlib `(,zstd "lib")))
(supported-systems (delete "i586-gnu" %supported-systems))
(home-page "https://www.kernel.org/")
(synopsis "Kernel module tools")
@@ -4391,8 +4377,7 @@ to the in-kernel OOM killer.")
(sha256
(base32
"1f6lz57igi7iw2ls3fpzgw42bfznam4nf9368h7x8yf1mb737yxz"))
- (patches (search-patches "eudev-rules-directory.patch"))
- (modules '((guix build utils)))))
+ (patches (search-patches "eudev-rules-directory.patch"))))
(build-system gnu-build-system)
(arguments
(list
@@ -4462,14 +4447,16 @@ to the in-kernel OOM killer.")
;; For documentation.
docbook-xml-4.2
docbook-xsl
- libxml2 ;for $XML_CATALOG_FILES
libxslt))
(inputs
;; When linked against libblkid, eudev can populate /dev/disk/by-label
;; and similar; it also installs the '60-persistent-storage.rules' file,
;; which contains the rules to do that.
(list `(,util-linux "lib") ;for blkid
- kmod))
+ kmod
+ ;; These are for the static archives.
+ zlib
+ `(,zstd "lib")))
(outputs '("out" "static"))
(home-page "https://wiki.gentoo.org/wiki/Project:Eudev")
(synopsis "Userspace device management")
@@ -4687,13 +4674,16 @@ mapper. Kernel components are part of Linux-libre.")
;; Command-line tools are GPLv2.
(license (list license:gpl2 license:lgpl2.1))))
+(define-public (libdevmapper-propagated-inputs)
+ (list eudev))
+
(define-public lvm2-static
(package
(inherit lvm2)
(name "lvm2-static")
- ;; Propagate udev because libdevmapper.a depends on libudev.
- (propagated-inputs `(("udev:static" ,eudev "static")))
+ (inputs `(,@(package-inputs lvm2)
+ ("udev:static" ,eudev "static")))
(arguments
(substitute-keyword-arguments (package-arguments lvm2)
@@ -4707,19 +4697,28 @@ mapper. Kernel components are part of Linux-libre.")
;; it until the situation improves.
(delete "--enable-dmeventd" ,flags)))
((#:phases phases)
- `(modify-phases ,phases
- (add-before 'configure 'adjust-Makefile
- (lambda _
- ;; These fixes are related to the upstream libdm->device_mapper
- ;; migration and will hopefully be fixed upstream in due time.
- (substitute* "tools/Makefile.in"
- ;; This variable is empty in a static configuration and causes
- ;; an erroneous GCC command line.
- (("-L\\$\\(interfacebuilddir\\)") "")
- ;; Remove obsolete reference to libdevmapper.a.
- (("-ldevmapper") ""))
- #t))))))
- (synopsis "Logical volume management for Linux (statically linked)")))
+ #~(modify-phases #$phases
+ (add-before 'configure 'adjust-Makefile
+ (lambda _
+ ;; These fixes are related to the upstream libdm->device_mapper
+ ;; migration and will hopefully be fixed upstream in due time.
+ (substitute* "tools/Makefile.in"
+ ;; This variable is empty in a static configuration and causes
+ ;; an erroneous GCC command line.
+ (("-L\\$\\(interfacebuilddir\\)") "")
+ ;; Remove obsolete reference to libdevmapper.a.
+ (("-ldevmapper") ""))
+ #t))
+ (add-after 'install 'adjust-pkgconfig
+ ;; The static eudev is missing its pkg config file, and I am not
+ ;; rebuilding it at this point.
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* (string-append #$output "/lib/pkgconfig/devmapper.pc")
+ (("Requires.private: .*") "")
+ (("Libs.private:")
+ (format #f "Libs.private: -L~a -ludev"
+ (dirname (search-input-file inputs "lib/libudev.a")))))))))))
+ (synopsis "Logical volume management for Linux (statically linked)")))
(define-public thin-provisioning-tools
(package
@@ -5214,21 +5213,21 @@ in a digital read-out.")
;; There are build scripts written in these languages.
perl
python-2
- python-3))
+ python-3
+ ;; Documentation
+ docbook-xsl
+ xmlto
+ asciidoc))
(inputs
(list slang ;for the interactive TUI
+ zlib
;; newt
python-2 ;'perf' links against libpython
elfutils
libiberty ;used alongside BDF for symbol demangling
libunwind ;better stack walking
libtraceevent
- numactl ;for 'perf bench numa mem'
- ;; Documentation.
- libxml2 ;for $XML_CATALOG_FILES
- docbook-xsl
- xmlto
- asciidoc))
+ numactl)) ;for 'perf bench numa mem'
(home-page "https://perf.wiki.kernel.org/")
(synopsis "Linux profiling with performance counters")
(description
@@ -5335,7 +5334,8 @@ thanks to the use of namespaces.")
(string-append (which "env") " "
#$output "/bin/singularity")))))))))
(inputs
- (list coreutils
+ (list bash-minimal
+ coreutils
libarchive
python-wrapper
squashfs-tools
@@ -5798,7 +5798,7 @@ arrays when needed.")
(for-each delete-file-recursively directories)
(remove-store-references "sbin/mdadm")
(delete-file "sbin/mdmon")))))))
- ((#:modules modules %gnu-build-system-modules)
+ ((#:modules modules %default-gnu-modules)
`((ice-9 ftw) ,@modules))
((#:strip-flags _ '())
''("--strip-all")) ;strip a few extra KiB
@@ -5932,6 +5932,13 @@ Linux Device Mapper multipathing driver:
#:test-target "partcheck" ; need root for a full 'check'
#:phases
#~(modify-phases %standard-phases
+ (add-after 'unpack 'disable-problematic-tests
+ (lambda _
+ (with-directory-excursion "harness/cases"
+ ;; The 21.t test fails with "Expected 4096, got
+ ;; 18446744073709551605" (see:
+ ;; https://pagure.io/libaio/issue/26).
+ (rename-file "21.t" "21.t.disabled"))))
(delete 'configure) ; no configure script
#$@(if (target-riscv64?)
#~((add-after 'unpack 'patch-test
@@ -6024,7 +6031,7 @@ Bluetooth audio output devices like headphones or loudspeakers.")
(define-public bluez
(package
(name "bluez")
- (version "5.66")
+ (version "5.72")
(source (origin
(method url-fetch)
(uri (string-append
@@ -6032,7 +6039,7 @@ Bluetooth audio output devices like headphones or loudspeakers.")
version ".tar.xz"))
(sha256
(base32
- "0x5mn9x6g626izxnw236933wvq83qagsh9qc9ac9550cb55sdzir"))))
+ "0vjk4ihywzv8k07bxq7clqgi2afrw54nfp0gcnxw35m98nipz7a9"))))
(build-system gnu-build-system)
(arguments
(list
@@ -6040,6 +6047,7 @@ Bluetooth audio output devices like headphones or loudspeakers.")
#~(list "--sysconfdir=/etc"
"--localstatedir=/var"
"--enable-library"
+ "--enable-wiimote"
"--disable-systemd"
;; TODO: is this needed? Not installed by default since 5.55.
"--enable-hid2hci"
@@ -6076,10 +6084,12 @@ Bluetooth audio output devices like headphones or loudspeakers.")
(native-inputs
(list gettext-minimal
pkg-config
- python-docutils))
+ python
+ python-docutils
+ python-pygments))
(inputs
(list glib dbus eudev libical readline))
- (home-page "http://www.bluez.org/")
+ (home-page "https://www.bluez.org/")
(synopsis "Linux Bluetooth protocol stack")
(description
"BlueZ provides support for the core Bluetooth layers and protocols. It
@@ -7280,7 +7290,7 @@ graphically visualizing a @file{perf.data} file.")
(build-system gnu-build-system)
(arguments
`(#:configure-flags (list "--disable-pywrap")
- #:modules (,@%gnu-build-system-modules
+ #:modules (,@%default-gnu-modules
(ice-9 binary-ports)
(rnrs bytevectors)
(srfi srfi-26))
@@ -9755,14 +9765,14 @@ platforms, it is not limited to resource-constrained systems.")
(define-public kexec-tools
(package
(name "kexec-tools")
- (version "2.0.23")
+ (version "2.0.26")
(source (origin
(method url-fetch)
(uri (string-append "mirror://kernel.org/linux/utils/kernel"
"/kexec/kexec-tools-" version ".tar.xz"))
(sha256
(base32
- "06r44i91g1s9f7k5b9kmvb58j9vrqvysfh32pb70cnyrgmncsqxa"))))
+ "1kbh8l67rbz0d3k6x7g5vj5ahg6f7lwvxcj1br8mrk818436mqvz"))))
(build-system gnu-build-system)
(arguments
;; There are no automated tests.
@@ -9873,14 +9883,15 @@ headers.")
(native-inputs
(list bison flex))
(inputs
- `(("clang-toolchain" ,clang-toolchain-9)
- ("libbpf" ,(package-source libbpf))
- ;; LibElf required but libelf does not contain
- ;; archives, only object files.
- ;; https://github.com/iovisor/bcc/issues/504
- ("elfutils" ,elfutils)
- ("luajit" ,luajit)
- ("python-wrapper" ,python-wrapper)))
+ (list bash-minimal ;for wrap-program
+ clang-toolchain-9
+ (package-source libbpf)
+ ;; LibElf required but libelf does not contain
+ ;; archives, only object files.
+ ;; https://github.com/iovisor/bcc/issues/504
+ elfutils
+ luajit
+ python-wrapper))
(arguments
`(;; Tests all require root permissions and a "standard" file hierarchy.
#:tests? #f
@@ -9923,8 +9934,7 @@ headers.")
,(version-major+minor
(package-version python))
"/site-packages")))))
- (find-files tools python-executable?))
- #t))))))
+ (find-files tools python-executable?))))))))
(home-page "https://github.com/iovisor/bcc")
(synopsis "Tools for BPF on Linux")
(description
@@ -10176,7 +10186,7 @@ provides user-space tools for creating EROFS file systems.")
;; line lets sysconfdir correctly pick up DESTDIR.
(substitute* "configure.ac"
(("^test .* sysconfdir=/etc\n$") ""))))
- (add-after 'wrap 'wrap-rasdaemon
+ (add-after 'install 'wrap-rasdaemon
(lambda* (#:key inputs #:allow-other-keys)
(let ((path (map dirname
(list (search-input-file inputs "/sbin/dmidecode")
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index 08ffb017a0..63c33d480e 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -51,6 +51,7 @@
#:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module (guix memoization)
+ #:use-module (guix search-paths)
#:use-module (guix utils)
#:use-module (guix build-system cmake)
#:use-module (guix build-system emacs)
@@ -458,19 +459,7 @@ ttest third-party/unittest)\n" line))))))
#t)))))
;; Clang supports the same environment variables as GCC.
- (native-search-paths
- (list (search-path-specification
- (variable "C_INCLUDE_PATH")
- (files '("include")))
- (search-path-specification
- (variable "CPLUS_INCLUDE_PATH")
- (files '("include/c++" "include")))
- (search-path-specification
- (variable "OBJC_INCLUDE_PATH")
- (files '("include")))
- (search-path-specification
- (variable "LIBRARY_PATH")
- (files '("lib" "lib64")))))
+ (native-search-paths %gcc-search-paths)
(home-page "https://clang.llvm.org")
(synopsis "C language family frontend for LLVM")
@@ -553,9 +542,13 @@ output), and Binutils.")
("18.1.2" . "06nfbn8yj8c65q4vamwdiqpxh0dggs6w781swd3285k4af0qwf62")))
(define %llvm-patches
- '(("14.0.6" . ("clang-14.0-libc-search-path.patch"))
- ("15.0.7" . ("clang-15.0-libc-search-path.patch"))
- ("16.0.6" . ("clang-16.0-libc-search-path.patch"))
+ '(("14.0.6" . ("clang-14.0-libc-search-path.patch"
+ "clang-runtime-14-glibc-2.36-compat.patch"
+ "clang-14-remove-crypt-interceptors.patch"))
+ ("15.0.7" . ("clang-15.0-libc-search-path.patch"
+ "clang-16-remove-crypt-interceptors.patch"))
+ ("16.0.6" . ("clang-16.0-libc-search-path.patch"
+ "clang-16-remove-crypt-interceptors.patch"))
("17.0.6" . ("clang-17.0-libc-search-path.patch"
"clang-17.0-link-dsymutil-latomic.patch"))
("18.1.2" . ("clang-18.0-libc-search-path.patch"
@@ -805,7 +798,9 @@ Library.")
(define-public clang-runtime-13
(clang-runtime-from-llvm
llvm-13
- "1z2xr9nn4mgc3hn9ark2k5y4wznpk47xppkp63bcbagr6589acvv"))
+ "1z2xr9nn4mgc3hn9ark2k5y4wznpk47xppkp63bcbagr6589acvv"
+ '("clang-runtime-13-glibc-2.36-compat.patch"
+ "clang-13-remove-crypt-interceptors.patch")))
(define-public clang-13
(clang-from-llvm llvm-13 clang-runtime-13
@@ -884,7 +879,8 @@ Library.")
(define-public clang-runtime-12
(clang-runtime-from-llvm
llvm-12
- "1950rg294izdwkaasi7yjrmadc9mzdd5paf0q63jjcq2m3rdbj5l"))
+ "1950rg294izdwkaasi7yjrmadc9mzdd5paf0q63jjcq2m3rdbj5l"
+ '("clang-runtime-13-glibc-2.36-compat.patch")))
(define-public clang-12
(clang-from-llvm llvm-12 clang-runtime-12
@@ -940,7 +936,8 @@ Library.")
(define-public clang-runtime-11
(clang-runtime-from-llvm
llvm-11
- "0x1j8ngf1zj63wlnns9vlibafq48qcm72p4jpaxkmkb4qw0grwfy"))
+ "0x1j8ngf1zj63wlnns9vlibafq48qcm72p4jpaxkmkb4qw0grwfy"
+ '("clang-runtime-13-glibc-2.36-compat.patch")))
(define-public clang-11
(clang-from-llvm llvm-11 clang-runtime-11
@@ -998,7 +995,8 @@ Library.")
(define-public clang-runtime-10
(clang-runtime-from-llvm
llvm-10
- "1yjqjri753w0fzmxcyz687nvd97sbc9rsqrxzpq720na47hwh3fr"))
+ "1yjqjri753w0fzmxcyz687nvd97sbc9rsqrxzpq720na47hwh3fr"
+ '("clang-runtime-13-glibc-2.36-compat.patch")))
(define-public clang-10
(clang-from-llvm llvm-10 clang-runtime-10
@@ -1069,7 +1067,8 @@ Library.")
(clang-runtime-from-llvm
llvm-9
"0xwh79g3zggdabxgnd0bphry75asm1qz7mv3hcqihqwqr6aspgy2"
- '("clang-runtime-9-libsanitizer-mode-field.patch")))
+ '("clang-runtime-9-libsanitizer-mode-field.patch"
+ "clang-runtime-9-glibc-2.36-compat.patch")))
(define-public clang-9
(clang-from-llvm llvm-9 clang-runtime-9
@@ -1114,7 +1113,8 @@ Library.")
(clang-runtime-from-llvm
llvm-8
"0dqqf8f930l8gag4d9qjgn1n0pj0nbv2anviqqhdi1rkhas8z0hi"
- '("clang-runtime-9-libsanitizer-mode-field.patch")))
+ '("clang-runtime-9-libsanitizer-mode-field.patch"
+ "clang-runtime-9-glibc-2.36-compat.patch")))
(define-public clang-8
(clang-from-llvm llvm-8 clang-runtime-8
@@ -1157,7 +1157,8 @@ Library.")
(clang-runtime-from-llvm
llvm-7
"1n48p8gjarihkws0i2bay5w9bdwyxyxxbpwyng7ba58jb30dlyq5"
- '("clang-runtime-9-libsanitizer-mode-field.patch")))
+ '("clang-runtime-9-libsanitizer-mode-field.patch"
+ "clang-runtime-9-glibc-2.36-compat.patch")))
(define-public clang-7
(clang-from-llvm llvm-7 clang-runtime-7
@@ -1199,7 +1200,8 @@ Library.")
(clang-runtime-from-llvm
llvm-6
"1fcr3jn24yr8lh36nc0c4ikli4744i2q9m1ik67p1jymwwaixkgl"
- '("clang-runtime-9-libsanitizer-mode-field.patch")))
+ '("clang-runtime-9-libsanitizer-mode-field.patch"
+ "clang-runtime-9-glibc-2.36-compat.patch")))
(define-public clang-6
(clang-from-llvm llvm-6 clang-runtime-6
diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm
index 7b17c0756b..17d3c044cf 100644
--- a/gnu/packages/lua.scm
+++ b/gnu/packages/lua.scm
@@ -20,6 +20,7 @@
;;; Copyright © 2022 Leo Nikkilä <hello@lnikki.la>
;;; Copyright © 2023 Yovan Naumovski <yovan@gorski.stream>
;;; Copyright © 2023 Valter Nazianzeno <manipuladordedados@gmail.com>
+;;; Copyright © 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -48,9 +49,11 @@
#:use-module (guix build-system meson)
#:use-module (guix build-system trivial)
#:use-module (gnu packages)
+ #:use-module (gnu packages autotools)
#:use-module (gnu packages bash)
#:use-module (gnu packages boost)
#:use-module (gnu packages build-tools)
+ #:use-module (gnu packages check)
#:use-module (gnu packages gcc)
#:use-module (gnu packages glib)
#:use-module (gnu packages gperf)
@@ -905,6 +908,44 @@ on numbers.")
(define-public lua5.1-bitop
(make-lua-bitop "lua5.1-bitop" lua-5.1))
+(define-public lutok
+ (package
+ (name "lutok")
+ (version "0.4")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/freebsd/lutok")
+ (commit (string-append name "-" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0a2vc2wy5hasw69h1mz768ywx6c4ccl9jzzd4ixddwba3z3ha03b"))))
+ (build-system gnu-build-system)
+ ;; Disable the test suite to avoid a circular dependency on kyua.
+ (arguments (list #:tests? #f))
+ (native-inputs (list autoconf automake libtool pkg-config))
+ (inputs (list atf))
+ (propagated-inputs (list lua-5.2)) ;included in c_gate.hpp
+ (home-page "https://github.com/freebsd/lutok")
+ (synopsis "Lightweight C++ API for Lua")
+ (description "Lutok is a lightweight C++ API library for Lua.
+
+Lutok provides thin C++ wrappers around the Lua C API to ease the interaction
+between C++ and Lua. These wrappers make intensive use of @acronym{RAII,
+Resource Acquisition is Initialization} to prevent resource leakage, expose
+C++-friendly data types, report errors by means of exceptions and ensure that
+the Lua stack is always left untouched in the face of errors. The library
+also provides a small subset of miscellaneous utility functions built on top
+of the wrappers.
+
+Lutok focuses on providing a clean and safe C++ interface; the drawback is
+that it is not suitable for performance-critical environments. In order to
+implement error-safe C++ wrappers on top of a Lua C binary library, Lutok adds
+several layers or abstraction and error checking that go against the original
+spirit of the Lua C API and thus degrade performance.")
+ (license license:bsd-3)))
+
(define-public selene
(package
(name "selene")
diff --git a/gnu/packages/lxqt.scm b/gnu/packages/lxqt.scm
index f0ae01614e..a5742106f9 100644
--- a/gnu/packages/lxqt.scm
+++ b/gnu/packages/lxqt.scm
@@ -39,6 +39,7 @@
#:use-module (guix build-system trivial)
#:use-module (gnu packages)
#:use-module (gnu packages admin)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages compression)
#:use-module (gnu packages documentation)
#:use-module (gnu packages compton)
@@ -678,7 +679,8 @@ allows for launching applications or shutting down the system.")
(base32 "0xa5nqiq9mxwfynnw91i4c2cgpmpapl4nxys084nbs7yd88kbm2l"))))
(build-system cmake-build-system)
(inputs
- (list eudev
+ (list bash-minimal
+ eudev
kwindowsystem
liblxqt
qtxdg-tools
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 4e54ca3350..088d1254fb 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -359,10 +359,10 @@ Learning usecases.")
"07kdsngvr4n1qxpqzv1nlay7g41d6jzjppa8vzmrg220s8ing87z"))))
(build-system gnu-build-system)
(arguments
- `(#:imported-modules (,@%gnu-build-system-modules
+ `(#:imported-modules (,@%default-gnu-imported-modules
(guix build python-build-system))
#:modules ((guix build python-build-system)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'enter-dir
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index e0fbd0a5ff..8a54ecc509 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -384,6 +384,7 @@ example, modify the message headers or body, or encrypt or sign the message.")
readline
linux-pam
libltdl
+ libxcrypt
gdbm
;; Required for SEARCH CHARSET.
libunistring))
@@ -966,7 +967,8 @@ mailpack. What can alterMIME do?
w3m
xorg-server-for-tests))
(inputs
- (list boost
+ (list bash-minimal
+ boost
gmime
gobject-introspection ; it is referenced
gtkmm-3
@@ -1177,7 +1179,8 @@ repository and Maildir/IMAP as LOCAL repository.")
(guix build utils)
((guix build emacs-build-system) #:prefix emacs:)
(guix build emacs-utils))
- #:imported-modules %emacs-build-system-modules
+ #:imported-modules `(,@%default-gnu-imported-modules
+ (guix build emacs-utils))
#:tests? #f
#:configure-flags
#~(list (string-append "--with-elispdir="
@@ -1353,7 +1356,7 @@ Notmuch.")
(file-name (string-append name "-" version "-checkout"))))
(build-system python-build-system)
(inputs
- (list python-notmuch python-pygobject gobject-introspection
+ (list bash-minimal python-notmuch python-pygobject gobject-introspection
libnotify gtk+))
(arguments
`(#:phases
@@ -2815,7 +2818,8 @@ DKIM and/or DomainKeys.")
"perl-net-dns"
"perl-timedate"))))))))
(inputs
- (list perl
+ (list bash-minimal
+ perl
perl-crypt-openssl-rsa
perl-cryptx
perl-io-socket-inet6
@@ -3778,7 +3782,11 @@ on the fly. Both programs are written in C and are very fast.")
(base32 "131i2b1yxhnbqkfk4kky40pfanqw2c5lcgbnjhfqp5cvpawpk2ai"))))
(build-system perl-build-system)
(inputs
- (list perl-io-socket-inet6 perl-net-dns perl-net-ssleay perl-socket6)) ; used by perl-io-socket-inet6
+ (list bash-minimal
+ perl-io-socket-inet6
+ perl-net-dns
+ perl-net-ssleay
+ perl-socket6)) ; used by perl-io-socket-inet6
(arguments
`(#:tests? #f ; no tests
#:phases
@@ -3786,8 +3794,7 @@ on the fly. Both programs are written in C and are very fast.")
(add-after 'unpack 'set-build_version
(lambda _
(substitute* "swaks"
- (("\"DEVRELEASE\"") (format #f "\"~a\"" ,version)))
- #true))
+ (("\"DEVRELEASE\"") (format #f "\"~a\"" ,version)))))
(delete 'configure)
(replace 'build
(lambda _
@@ -3796,14 +3803,12 @@ on the fly. Both programs are written in C and are very fast.")
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(install-file "swaks" (string-append out "/bin"))
- (install-file "swaks.1" (string-append out "/share/man/man1")))
- #t))
+ (install-file "swaks.1" (string-append out "/share/man/man1")))))
(add-after 'install 'wrap-program
(lambda* (#:key outputs #:allow-other-keys)
(wrap-program (string-append (assoc-ref outputs "out")
"/bin/swaks")
- `("PERL5LIB" ":" = (,(getenv "PERL5LIB"))))
- #t)))))
+ `("PERL5LIB" ":" = (,(getenv "PERL5LIB")))))))))
(home-page "https://jetmore.org/john/code/swaks/")
(synopsis "Featureful SMTP test tool")
(description "Swaks is a flexible, scriptable, transaction-oriented SMTP
@@ -4751,7 +4756,7 @@ ex-like commands on it.")
((guix build emacs-build-system) #:prefix emacs:)
(guix build utils)
(ice-9 string-fun))
- #:imported-modules (,@%gnu-build-system-modules
+ #:imported-modules (,@%default-gnu-imported-modules
(guix build emacs-build-system)
(guix build emacs-utils))
#:make-flags (list (string-append "prefix=" %output)
diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm
index 7b40f395f3..33fa2ea279 100644
--- a/gnu/packages/make-bootstrap.scm
+++ b/gnu/packages/make-bootstrap.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012-2021, 2023 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012-2021, 2023, 2024 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017, 2021 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018, 2019 Mark H Weaver <mhw@netris.org>
@@ -73,7 +73,9 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
(inherit base)
(source (origin (inherit (package-source base))
(patches (append (search-patches
- "glibc-bootstrap-system.patch")
+ (match (package-version base)
+ ("2.39" "glibc-2.39-bootstrap-system.patch")
+ (_ "glibc-bootstrap-system.patch")))
(origin-patches (package-source base))))))
(arguments
(substitute-keyword-arguments (package-arguments base)
@@ -374,32 +376,34 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
(define %binutils-static
;; Statically-linked Binutils.
- (package (inherit binutils)
+ (package
+ (inherit binutils)
(name "binutils-static")
(arguments
- `(#:configure-flags (cons "--disable-gold"
- ,(match (memq #:configure-flags
- (package-arguments binutils))
- ((#:configure-flags flags _ ...)
- flags)))
- #:make-flags ,(match (memq #:make-flags (package-arguments binutils))
- ((#:make-flags flags _ ...)
- flags)
- (_ ''()))
- #:strip-flags '("--strip-all")
- #:phases (modify-phases %standard-phases
- (add-before 'configure 'all-static
- (lambda _
- ;; The `-all-static' libtool flag can only be passed
- ;; after `configure', since configure tests don't use
- ;; libtool, and only for executables built with libtool.
- (substitute* '("binutils/Makefile.in"
- "gas/Makefile.in"
- "ld/Makefile.in")
- (("^LDFLAGS =(.*)$" line)
- (string-append line
- "\nAM_LDFLAGS = -static -all-static\n")))
- #t)))))))
+ (list #:configure-flags
+ #~(cons "--disable-gold"
+ #$(match (memq #:configure-flags (package-arguments binutils))
+ ((#:configure-flags flags _ ...)
+ flags)))
+ #:make-flags
+ (match (memq #:make-flags (package-arguments binutils))
+ ((#:make-flags flags _ ...)
+ flags)
+ (_ #~'()))
+ #:strip-flags #~'("--strip-all")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'configure 'all-static
+ (lambda _
+ ;; The `-all-static' libtool flag can only be passed after
+ ;; `configure', since configure tests don't use libtool,
+ ;; and only for executables built with libtool.
+ (substitute* '("binutils/Makefile.in"
+ "gas/Makefile.in" "ld/Makefile.in")
+ (("^LDFLAGS =(.*)$" line)
+ (string-append
+ line
+ "\nAM_LDFLAGS = -static -all-static\n"))))))))))
(define %binutils-static-stripped
;; The subset of Binutils that we need.
@@ -472,7 +476,7 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
(outputs '("out")) ; all in one
(arguments
(substitute-keyword-arguments (package-arguments gcc-7)
- ((#:modules modules %gnu-build-system-modules)
+ ((#:modules modules %default-gnu-modules)
`((srfi srfi-1)
(srfi srfi-26)
(ice-9 regex)
diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm
index 780f6bf6d8..35451b621c 100644
--- a/gnu/packages/man.scm
+++ b/gnu/packages/man.scm
@@ -9,7 +9,7 @@
;;; Copyright © 2018, 2019, 2022 Marius Bakke <marius@gnu.org>
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
-;;; Copyright © 2021 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2021 2024 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2022, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2022 Imran Iqbal <imran@imraniqbal.org>
;;;
@@ -37,6 +37,7 @@
#:use-module (guix build-system gnu)
#:use-module (guix build-system ruby)
#:use-module (guix utils)
+ #:use-module (gnu packages base)
#:use-module (gnu packages compression)
#:use-module (gnu packages dbm)
#:use-module (gnu packages flex)
@@ -127,14 +128,14 @@ a flexible and convenient way.")
(define-public man-db
(package
(name "man-db")
- (version "2.11.1")
+ (version "2.12.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://savannah/man-db/man-db-"
version ".tar.xz"))
(sha256
(base32
- "1k5nhy2c33k0p2f1sbb4hxpwrjw6v4scchwykkg4g61la59amarf"))))
+ "15bak56wf99xdr1p3kaish6pkrrvhl6p2rhgzwiasr17la264nj1"))))
(build-system gnu-build-system)
(arguments
(list #:phases
@@ -294,7 +295,7 @@ pages into HTML format.")
(("^PREFIX=.*")
(string-append "PREFIX=" (assoc-ref outputs "out")
"\n"))))))))
- (native-inputs (list perl)) ;used to run tests
+ (native-inputs (list (libc-utf8-locales-for-target) perl)) ;used to run tests
(inputs (list zlib))
(native-search-paths
(list (search-path-specification
@@ -374,11 +375,11 @@ Linux kernel and C library interfaces employed by user-space programs.")
(build-system gnu-build-system)
(arguments
`(#:tests? #f
- ;; The compress-documentation phase doesn't pick up on our manpages as
- ;; its regex doesn't support trailing letters, so manually compress.
- #:make-flags ,#~(list (string-append "prefix=" #$output) "gz")
+ #:make-flags ,#~(list (string-append "prefix=" #$output))
#:license-file-regexp "POSIX-COPYRIGHT"
- #:phases (modify-phases %standard-phases (delete 'configure))))
+ ;; The build phase only compresses documentation, which we already do.
+ #:phases (modify-phases %standard-phases (delete 'configure)
+ (delete 'build))))
(home-page "https://www.kernel.org/doc/man-pages/")
(synopsis "Man pages from the POSIX.1-2013 standard")
(description
diff --git a/gnu/packages/mate.scm b/gnu/packages/mate.scm
index 5a6c6b5b64..6a1fd0d6f6 100644
--- a/gnu/packages/mate.scm
+++ b/gnu/packages/mate.scm
@@ -8,6 +8,7 @@
;;; Copyright © 2020 Jonathan Brielmaier <jonathan.brielmaier@web.de>
;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -238,7 +239,7 @@ themes for both gtk+-2 and gtk+-3.")
`(,glib "bin")
gobject-introspection
yelp-tools
- gtk-doc))
+ gtk-doc/stable))
(inputs
(list gtk+ libxrandr iso-codes startup-notification))
(propagated-inputs
@@ -733,7 +734,7 @@ infamous 'Wanda the Fish'.")
("yelp-tools" ,yelp-tools)
("glib:bin" ,glib "bin")
("gobject-introspection" ,gobject-introspection)
- ("gtk-doc" ,gtk-doc)
+ ("gtk-doc" ,gtk-doc/stable)
("texlive-bin" ,texlive-bin) ;synctex
("xmllint" ,libxml2)
("zlib" ,zlib)))
@@ -869,7 +870,7 @@ icons on the MATE desktop. It works on local and remote file systems.")
("gettext" ,gettext-minimal)
("glib:bin" ,glib "bin")
("gobject-introspection" ,gobject-introspection)
- ("gtk-doc" ,gtk-doc)
+ ("gtk-doc" ,gtk-doc/stable)
("libxml2" ,libxml2)
("pkg-config" ,pkg-config)))
(inputs
@@ -1228,7 +1229,7 @@ can be used as backgrounds in the MATE Desktop environment.")
(build-system glib-or-gtk-build-system)
(native-inputs
(list gettext-minimal
- gtk-doc
+ gtk-doc/stable
intltool
libice
libsm
@@ -1280,7 +1281,7 @@ can be used as backgrounds in the MATE Desktop environment.")
(build-system glib-or-gtk-build-system)
(native-inputs
(list gettext-minimal
- gtk-doc
+ gtk-doc/stable
gobject-introspection
intltool
pkg-config
@@ -1344,7 +1345,7 @@ can be used as backgrounds in the MATE Desktop environment.")
#t)))))
(native-inputs
`(("gettext" ,gettext-minimal)
- ("gtk-doc" ,gtk-doc)
+ ("gtk-doc" ,gtk-doc/stable)
("intltool" ,intltool)
("pkg-config" ,pkg-config)
("yelp-tools" ,yelp-tools)))
@@ -1384,7 +1385,7 @@ can be used as backgrounds in the MATE Desktop environment.")
#:tests? #f))
(native-inputs
`(("gettext" ,gettext-minimal)
- ("gtk-doc" ,gtk-doc)
+ ("gtk-doc" ,gtk-doc/stable)
("gobject-introspection" ,gobject-introspection)
("intltool" ,intltool)
("libtool" ,libtool)
@@ -1464,7 +1465,7 @@ MATE Desktop to monitor your system resources and usage.")
"0mq3a9ab4fxpkah6c5p7a0zsy8cixfc5j9030k204cy5vysv1dzm"))))
(build-system glib-or-gtk-build-system)
(native-inputs
- (list gettext-minimal gtk-doc intltool libtool pkg-config))
+ (list gettext-minimal gtk-doc/stable intltool libtool pkg-config))
(inputs
(list accountsservice
glib
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 361f2f7b68..65a7bf249b 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -435,7 +435,8 @@ programming language.")
"0w3kl58y7fq9paaq8ayn5gwylc4n8jbk6lf42kkcj9ar4i8v8myr"))))
(build-system gnu-build-system)
(inputs
- `(("readline" ,readline)
+ `(("bash" ,bash-minimal)
+ ("readline" ,readline)
("python" ,python-wrapper) ;for 'units_cur' script
("python-requests" ,python-requests)))
(arguments
@@ -455,8 +456,8 @@ can handle scale changes through adaptive usage of standard scale
prefixes (micro-, kilo-, etc.). It can also handle nonlinear
conversions such as Fahrenheit to Celsius. Its interpreter is powerful
enough to be used effectively as a scientific calculator.")
- (license license:gpl3+)
- (home-page "https://www.gnu.org/software/units/")))
+ (license license:gpl3+)
+ (home-page "https://www.gnu.org/software/units/")))
(define-public double-conversion
(package
@@ -687,10 +688,11 @@ precision floating point numbers.")
(sha256
(base32
"0jxkxrnpys2j3rh8bzx0bmnh4w6xm28jd57rgxsjp0s863agpc6w"))))
+ (outputs '("out" "static"))
(build-system gnu-build-system)
(arguments
(let ((system (%current-system)))
- `(#:configure-flags (list "--disable-static") ;halves package size
+ `(#:make-flags (list "CFLAGS=-fPIC")
#:phases
(modify-phases %standard-phases
,@(cond
@@ -736,7 +738,16 @@ precision floating point numbers.")
(("gsl_ieee_env_setup.*" all)
(string-append "exit (77);\n" all)))))))
- (else '()))))))
+ (else '()))
+ (add-after 'install 'move-static-library
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((static (string-append (assoc-ref outputs "static") "/lib/"))
+ (out (string-append (assoc-ref outputs "out") "/lib/")))
+ (mkdir-p static)
+ (rename-file (string-append out "libgsl.a")
+ (string-append static "libgsl.a"))
+ (rename-file (string-append out "libgslcblas.a")
+ (string-append static "libgslcblas.a")))))))))
(native-inputs
(if (and (target-riscv64?)
(%current-target-system))
@@ -756,15 +767,6 @@ numbers.")
(license license:gpl3+)))
-;; TODO: Merge back into the gsl package as a separate output.
-(define-public gsl-static
- (package/inherit gsl
- (name "gsl-static")
- (arguments
- `(,@(package-arguments gsl)
- #:configure-flags (list "--disable-shared")
- #:make-flags (list "CFLAGS=-fPIC")))))
-
(define-public sleef
(package
(name "sleef")
@@ -1271,7 +1273,7 @@ singular value problems.")
`("PERL5LIB" ":" suffix (,PERL5LIB))
`("PATH" ":" suffix (,(dirname gnuplot))))))))))
(inputs
- (list gnuplot perl-list-moreutils vnlog))
+ (list bash-minimal gnuplot perl-list-moreutils vnlog))
(native-inputs
;; For tests.
(list perl-ipc-run perl-string-shellquote))
@@ -3335,8 +3337,7 @@ ASCII text files using Gmsh's own scripting language.")
(add-after 'unpack 'fix-sip-dir
(lambda _
(substitute* "pyqtdistutils.py"
- (("os.path.join\\(sip_dir, 'PyQt5'\\)") "sip_dir"))
- #t))
+ (("os.path.join\\(sip_dir, 'PyQt5'\\)") "sip_dir"))))
;; Now we have to pass the correct sip_dir to setup.py.
(replace 'build
(lambda* (#:key inputs #:allow-other-keys)
@@ -3344,8 +3345,7 @@ ASCII text files using Gmsh's own scripting language.")
((@@ (guix build python-build-system) call-setuppy)
"build_ext"
(list (string-append "--sip-dir="
- (search-input-directory inputs "share/sip")))
- #t)))
+ (search-input-directory inputs "share/sip"))))))
;; Ensure that icons are found at runtime.
(add-after 'install 'wrap-executable
(lambda* (#:key inputs outputs #:allow-other-keys)
@@ -3359,7 +3359,8 @@ ASCII text files using Gmsh's own scripting language.")
;;("python-astropy" ,python-astropy) ;; FIXME: Package this.
qttools-5 python-sip-4))
(inputs
- (list ghostscript ;optional, for EPS/PS output
+ (list bash-minimal
+ ghostscript ;optional, for EPS/PS output
python-dbus
python-h5py ;optional, for HDF5 data
python-pyqt
@@ -4148,7 +4149,7 @@ language understood by many solvers.")
`(#:modules ((ice-9 match)
(ice-9 popen)
(srfi srfi-1)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:phases
(modify-phases %standard-phases
(replace 'configure
@@ -7118,7 +7119,7 @@ set.")
(list openblas))
(arguments
`(#:modules ((srfi srfi-1)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:configure-flags '("--enable-shared"
"--disable-fortran"
"--without-MPI"
@@ -7625,7 +7626,7 @@ theories} (SMT) solver. It provides a C/C++ API, as well as Python bindings.")
(build-system gnu-build-system)
(arguments
`(#:imported-modules ((guix build python-build-system)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:modules (((guix build python-build-system) #:select (site-packages))
(guix build gnu-build-system)
(guix build utils))
@@ -9112,7 +9113,7 @@ symbolic reasoning engines that need to reason about polynomial constraints.")
(arguments
(list #:test-target "test"
#:modules `((ice-9 match)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:configure-flags #~(list "--aiger=.")
#:phases
#~(modify-phases %standard-phases
@@ -9166,7 +9167,7 @@ symbolic reasoning engines that need to reason about polynomial constraints.")
;; values to construct commands (yes, eww), so we
;; can't easily substitute* them.
'("lglddtrace" "lgluntrace" "lingeling" "plingeling"))))))))
- (inputs (list `(,aiger "static") gzip bzip2 xz p7zip))
+ (inputs (list `(,aiger "static") bash-minimal gzip bzip2 xz p7zip))
(home-page "http://fmv.jku.at/lingeling")
(synopsis "SAT solver")
(description "This package provides a range of SAT solvers, including
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index 20bdb713b5..5f74c44b89 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -28,6 +28,7 @@
;;; Copyright © 2020, 2022 Raghav Gururajan <rg@raghavgururajan.name>
;;; Copyright © 2020, 2021 Robert Karszniewicz <avoidr@posteo.de>
;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2021, 2023 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
;;; Copyright © 2021 Vinicius Monego <monego@posteo.net>
;;; Copyright © 2021 jgart <jgart@dismail.de>
@@ -235,7 +236,7 @@ XMPP-based sessions.")
(list docbook-xml-4.1.2
`(,glib "bin")
gobject-introspection
- gtk-doc
+ gtk-doc/stable
pkg-config))
(inputs (list ncurses))
(propagated-inputs (list glib libxml2 python-2))
@@ -780,25 +781,27 @@ used by Pidgin and Bitlbee, among others, to access
(sha256
(base32 "1iy4ln6yfgy3xysrfpjxw8fn38i3qx8jsn2mk2prshfzf7d9gr57"))))
(build-system meson-build-system)
- (native-inputs `(("gettext" ,gettext-minimal)
- ("glib:bin" ,glib "bin") ;need glib-genmarshal
- ("perl" ,perl)
- ("pkg-config" ,pkg-config)))
- (inputs `(("dbus-glib" ,dbus-glib)
- ("dbus" ,dbus)
- ("enchant" ,enchant)
- ("gtk" ,gtk+-2)
- ("libcanberra" ,libcanberra)
- ("openssl" ,openssl)
-
- ;; Bindings for add-on scripts.
- ("luajit" ,luajit)
- ("perl-xml-parser" ,perl-xml-parser)
- ("python" ,python)
- ("python-cffi" ,python-cffi)
-
- ;; For the ensuing WRAP-PROGRAM.
- ("bash-minimal" ,bash-minimal)))
+ (native-inputs
+ (list gettext-minimal
+ `(,glib "bin") ;need glib-genmarshal
+ perl
+ pkg-config))
+ (inputs
+ (list dbus-glib
+ dbus
+ enchant
+ gtk+-2
+ libcanberra
+ openssl
+
+ ;; Bindings for add-on scripts.
+ luajit
+ perl-xml-parser
+ python
+ python-cffi
+
+ ;; For the ensuing WRAP-PROGRAM.
+ bash-minimal))
(arguments
`(#:phases
(modify-phases %standard-phases
@@ -1230,7 +1233,8 @@ of xmpppy.")
python-setuptools
xorg-server-for-tests))
(inputs
- (list avahi
+ (list bash-minimal
+ avahi
dbus
farstream
geoclue
@@ -1360,7 +1364,7 @@ Encryption to Gajim.")
#:modules '((guix build cmake-build-system)
((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
(guix build utils))
- #:imported-modules `(,@%gnu-build-system-modules
+ #:imported-modules `(,@%default-gnu-imported-modules
(guix build cmake-build-system)
(guix build glib-or-gtk-build-system))
#:phases
@@ -1754,58 +1758,59 @@ messenger protocol.")
(define-public utox
(package
- (name "utox")
- (version "0.18.1")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/uTox/uTox")
- (commit (string-append "v" version))
- (recursive? #t))) ;; Needed for 'minini' git submodule.
- (file-name (string-append name "-" version "-checkout"))
- (sha256
- (base32
- "01rvlf94d4rkrygnnjak3cg16hrrqyi1rn9nx65y17qk2nbyh68g"))))
- (build-system cmake-build-system)
- (arguments
- `(#:configure-flags '("-DENABLE_TESTS=on")
- #:phases
- (modify-phases %standard-phases
- (add-before 'build 'patch-absolute-filename-libgtk-3
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (substitute* "../source/src/xlib/gtk.c"
- (("libgtk-3.so")
- (search-input-file inputs "/lib/libgtk-3.so")))))
- (add-after 'install 'wrap-program
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (wrap-program (string-append (assoc-ref outputs "out")
- "/bin/utox")
- ;; For GtkFileChooserDialog.
- `("GSETTINGS_SCHEMA_DIR" =
- (,(string-append (assoc-ref inputs "gtk+")
- "/share/glib-2.0/schemas")))))))))
- (inputs
- `(("dbus" ,dbus)
- ("filteraudio" ,filteraudio)
- ("fontconfig" ,fontconfig)
- ("freetype" ,freetype)
- ("c-toxcore" ,c-toxcore)
- ("gtk+" ,gtk+)
- ("libvpx" ,libvpx)
- ("libx11" ,libx11)
- ("libxext" ,libxext)
- ("libxrender" ,libxrender)
- ("openal" ,openal)
- ("v4l-utils" ,v4l-utils)))
- (native-inputs
- (list check pkg-config))
- (synopsis "Lightweight Tox client")
- (description
- "uTox is a lightweight Tox client. Tox is a distributed and secure
+ (name "utox")
+ (version "0.18.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/uTox/uTox")
+ (commit (string-append "v" version))
+ (recursive? #t))) ;; Needed for 'minini' git submodule.
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32
+ "01rvlf94d4rkrygnnjak3cg16hrrqyi1rn9nx65y17qk2nbyh68g"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:configure-flags '("-DENABLE_TESTS=on")
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'patch-absolute-filename-libgtk-3
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (substitute* "../source/src/xlib/gtk.c"
+ (("libgtk-3.so")
+ (search-input-file inputs "/lib/libgtk-3.so")))))
+ (add-after 'install 'wrap-program
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (wrap-program (string-append (assoc-ref outputs "out")
+ "/bin/utox")
+ ;; For GtkFileChooserDialog.
+ `("GSETTINGS_SCHEMA_DIR" =
+ (,(string-append (assoc-ref inputs "gtk+")
+ "/share/glib-2.0/schemas")))))))))
+ (inputs
+ (list bash-minimal ;for wrap-program
+ dbus
+ filteraudio
+ fontconfig
+ freetype
+ c-toxcore
+ gtk+
+ libvpx
+ libx11
+ libxext
+ libxrender
+ openal
+ v4l-utils))
+ (native-inputs
+ (list check pkg-config))
+ (synopsis "Lightweight Tox client")
+ (description
+ "uTox is a lightweight Tox client. Tox is a distributed and secure
instant messenger with audio and video chat capabilities.")
- (home-page "https://github.com/uTox/uTox")
- (license license:gpl3)))
+ (home-page "https://github.com/uTox/uTox")
+ (license license:gpl3)))
(define-public qtox
(package
@@ -1847,7 +1852,8 @@ instant messenger with audio and video chat capabilities.")
(native-inputs
(list pkg-config qttools-5))
(inputs
- (list ffmpeg
+ (list bash-minimal
+ ffmpeg
filteraudio
glib
gtk+-2
@@ -1935,7 +1941,7 @@ into existing applications.")
(native-inputs
(list unzip))
(inputs
- (list perl-curses perl-io-socket-ssl))
+ (list bash-minimal perl-curses perl-io-socket-ssl))
(arguments
`(#:phases
(modify-phases %standard-phases
@@ -1966,8 +1972,7 @@ into existing applications.")
(install-file "README.txt" doc)
(install-file "TODO.txt" doc)
(copy-recursively "share/man/man1" man1)
- (copy-recursively "share/man/man3" man3)
- #t)))
+ (copy-recursively "share/man/man3" man3))))
(add-after 'install 'wrap-programs
(lambda* (#:key outputs #:allow-other-keys)
;; Make sure all executables in "bin" find the Perl modules
@@ -1978,8 +1983,7 @@ into existing applications.")
(for-each (lambda (file)
(wrap-program file
`("PERL5LIB" ":" prefix (,path))))
- (find-files bin "\\.*$"))
- #t))))))
+ (find-files bin "\\.*$"))))))))
(description
"@code{Net::PSYC} with support for TCP, UDP, Event.pm, @code{IO::Select} and
Gtk2 event loops. This package includes 12 applications and additional scripts:
@@ -2061,7 +2065,7 @@ including psyced.")
(native-inputs
(list pkg-config check
`(,glib "bin") ; gtester
- gtk-doc))
+ gtk-doc/stable))
(home-page "https://mcabber.com/")
(description
"Loudmouth is a lightweight and easy-to-use C library for programming
@@ -2475,7 +2479,8 @@ for the Matrix protocol. It is built on to of @code{Boost.Asio}.")
`("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path)))))))))
(build-system qt-build-system)
(inputs
- (list boost
+ (list bash-minimal
+ boost
blurhash
cpp-httplib
cmark
@@ -3084,8 +3089,7 @@ social and chat platform.")
(("qiteaudio.h")
"qite/qiteaudio.h")
(("qiteaudiorecorder.h")
- "qite/qiteaudiorecorder.h"))
- #t))
+ "qite/qiteaudiorecorder.h"))))
(add-after 'install 'wrap-env
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
@@ -3097,48 +3101,48 @@ social and chat platform.")
(wrap-program file
`("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))
`("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))
- '("psi-plus")))
- #t))
+ '("psi-plus")))))
(add-after 'wrap-env 'glib-or-gtk-compile-schemas
(assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
(add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap
(assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
(native-inputs
- `(("glib:bin" ,glib "bin")
- ("gobject-introspection" ,gobject-introspection)
- ("perl" ,perl)
- ("pkg-config" ,pkg-config)
- ("python" ,python-wrapper)
- ("ruby" ,ruby)))
+ (list `(,glib "bin")
+ gobject-introspection
+ perl
+ pkg-config
+ python-wrapper
+ ruby))
(inputs
- `(("blake2" ,libb2)
- ("dbus" ,dbus)
- ("enchant" ,enchant)
- ("glib" ,glib)
- ("gstreamer" ,gstreamer)
- ("gst-plugins-base" ,gst-plugins-base)
- ("http-parser" ,http-parser)
- ("libgcrypt" ,libgcrypt)
- ("libgpg-error" ,libgpg-error)
- ("libidn" ,libidn)
- ("libotr" ,libotr)
- ("libsignal-protocol-c" ,libsignal-protocol-c)
- ("libtidy" ,tidy-html)
- ("openssl" ,openssl)
- ("qca" ,qca)
- ("qhttp" ,qhttp)
- ("qite" ,qite)
- ("qtbase" ,qtbase-5)
- ("qtkeychain" ,qtkeychain)
- ("qtmultimedia-5" ,qtmultimedia-5)
- ("qtsvg-5" ,qtsvg-5)
- ("qtx11extras" ,qtx11extras)
- ("usrsctp" ,usrsctp)
- ("x11" ,libx11)
- ("xext" ,libxext)
- ("xcb" ,libxcb)
- ("xss" ,libxscrnsaver)
- ("zlib" ,zlib)))
+ (list bash-minimal ; for wrap-program
+ libb2
+ dbus
+ enchant
+ glib
+ gstreamer
+ gst-plugins-base
+ http-parser
+ libgcrypt
+ libgpg-error
+ libidn
+ libotr
+ libsignal-protocol-c
+ tidy-html
+ openssl
+ qca
+ qhttp
+ qite
+ qtbase-5
+ qtkeychain
+ qtmultimedia-5
+ qtsvg-5
+ qtx11extras
+ usrsctp
+ libx11
+ libxext
+ libxcb
+ libxscrnsaver
+ zlib))
(home-page "https://psi-plus.com/")
(synopsis "Qt-based XMPP Client")
(description
diff --git a/gnu/packages/moreutils.scm b/gnu/packages/moreutils.scm
index cf26d75516..861aad776f 100644
--- a/gnu/packages/moreutils.scm
+++ b/gnu/packages/moreutils.scm
@@ -20,6 +20,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages moreutils)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages docbook)
#:use-module (gnu packages perl)
#:use-module (gnu packages xml)
@@ -64,14 +65,15 @@
"docbook-xsl")))
(string-append "CC=" #$(cc-for-target)))))
(inputs
- (list perl
+ (list bash-minimal
+ perl
perl-ipc-run
perl-timedate
perl-time-duration))
;; For building the manual pages.
(native-inputs
(list docbook-xml-4.4
- docbook-xsl ;without -next, man pages are corrupted
+ docbook-xsl
libxml2
libxslt))
(home-page "https://joeyh.name/code/moreutils/")
diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
index 3916d4c406..4e0edc2d5e 100644
--- a/gnu/packages/mpd.scm
+++ b/gnu/packages/mpd.scm
@@ -388,7 +388,7 @@ interface for the Music Player Daemon.")
(guix build python-build-system)
((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
(guix build utils))
- #:imported-modules (,@%gnu-build-system-modules
+ #:imported-modules (,@%default-gnu-imported-modules
(guix build python-build-system)
(guix build glib-or-gtk-build-system))
#:phases
@@ -400,12 +400,12 @@ interface for the Music Player Daemon.")
(let ((out (assoc-ref outputs "out"))
(gi-typelib-path (getenv "GI_TYPELIB_PATH")))
(wrap-program (string-append out "/bin/sonata")
- `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
- #t)))))
+ `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))))))
(native-inputs
- `(("gettext" ,gettext-minimal)))
+ (list gettext-minimal))
(inputs
- (list python-mpd2
+ (list bash-minimal
+ python-mpd2
gtk+
gsettings-desktop-schemas
gobject-introspection
@@ -563,6 +563,7 @@ artists along with albumart.")
`("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH")))
`("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH"))))))))))
(inputs (list avahi
+ bash-minimal
dconf
gsettings-desktop-schemas
gtk+
diff --git a/gnu/packages/mpi.scm b/gnu/packages/mpi.scm
index f1e4414bac..745a5bf71d 100644
--- a/gnu/packages/mpi.scm
+++ b/gnu/packages/mpi.scm
@@ -335,7 +335,7 @@ software vendors, application developers and computer science researchers.")
((guix build ant-build-system) #:prefix ant:)
(guix build utils))
#:imported-modules `((guix build ant-build-system)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
(substitute-keyword-arguments (package-arguments openmpi)
((#:configure-flags flags)
#~(cons "--enable-mpi-java" #$flags))
diff --git a/gnu/packages/multiprecision.scm b/gnu/packages/multiprecision.scm
index 9ae79afed9..41ddd4c840 100644
--- a/gnu/packages/multiprecision.scm
+++ b/gnu/packages/multiprecision.scm
@@ -8,7 +8,7 @@
;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2018, 2019, 2021, 2023, 2024 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2021 Vinicius Monego <monego@posteo.net>
-;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2022, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2023 Sharlatan Hellseher <sharlatanus@gmail.com>
;;;
@@ -45,63 +45,43 @@
(define-public gmp
(package
- (name "gmp")
- (version "6.2.1")
- (source (origin
- (method url-fetch)
- (uri
- (string-append "mirror://gnu/gmp/gmp-"
- version ".tar.xz"))
- (sha256
- (base32
- "1wml97fdmpcynsbw9yl77rj29qibfp652d0w3222zlfx5j8jjj7x"))
- (patches (search-patches "gmp-faulty-test.patch"))))
- (build-system gnu-build-system)
- (native-inputs (list m4))
- (outputs '("out" "debug"))
- (arguments
- `(#:parallel-tests? #f ; mpz/reuse fails otherwise
+ (name "gmp")
+ (version "6.3.0")
+ (source (origin
+ (method url-fetch)
+ (uri
+ (string-append "mirror://gnu/gmp/gmp-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "1648ad1mr7c1r8lkkqshrv1jfjgfdb30plsadxhni7mq041bihm3"))
+ (patches (search-patches "gmp-faulty-test.patch"))))
+ (build-system gnu-build-system)
+ (native-inputs (list m4))
+ (outputs '("out" "debug"))
+ (arguments
+ (list
+ #:parallel-tests? #f ; mpz/reuse fails otherwise
#:configure-flags
- '(;; Build a "fat binary", with routines for several
- ;; sub-architectures.
- "--enable-fat"
- "--enable-cxx"
- ,@(cond ((target-mingw?)
- ;; Static and shared cannot be built in one go:
- ;; they produce different headers. We need shared.
- `("--disable-static"
- "--enable-shared"))
- ((target-x32?)
- `("ABI=x32"))
- (else '())))
- ;; Remove after core-updates merge.
- ;; Workaround for gcc-7 transition breakage, -system and cross-build,
- ;; Note: See <http://bugs.gnu.org/22186> for why not 'CPATH'.
- ;; Note: See <http://bugs.gnu.org/30756> for why not 'C_INCLUDE_PATH' & co.
- ,@(if (target-mingw?)
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'configure 'setenv
- (lambda _
- (let ((gcc (assoc-ref %build-inputs "cross-gcc"))
- (libc (assoc-ref %build-inputs "cross-libc")))
- (setenv "CROSS_CPLUS_INCLUDE_PATH"
- (string-append gcc "/include/c++"
- ":" gcc "/include"
- ":" libc "/include"))
- (format #t "environment variable `CROSS_CPLUS_INCLUDE_PATH' set to `~a'\n"
- (getenv "CROSS_CPLUS_INCLUDE_PATH"))
- #t)))))
- '())))
- (synopsis "Multiple-precision arithmetic library")
- (description
- "The @acronym{GMP, the GNU Multiple Precision Arithmetic} library performs
+ #~(list
+ ;; Build a "fat binary", with routines for several sub-architectures.
+ "--enable-fat"
+ "--enable-cxx"
+ #$@(if (target-mingw?)
+ ;; Static and shared cannot be built in one go: they produce
+ ;; different headers. We need shared.
+ '("--disable-static"
+ "--enable-shared")
+ '()))))
+ (synopsis "Multiple-precision arithmetic library")
+ (description
+ "The @acronym{GMP, the GNU Multiple Precision Arithmetic} library performs
arbitrary-precision arithmetic on signed integers, rational numbers and floating
point numbers. The precision is only limited by the available memory.
The library is highly optimized, with a design focus on execution speed.
It is aimed at use in, for example, cryptography and computational algebra.")
- (license lgpl3+)
- (home-page "https://gmplib.org/")))
+ (license lgpl3+)
+ (home-page "https://gmplib.org/")))
(define-public gmp-6.0
;; We keep this one around to bootstrap GCC, to work around a compilation
@@ -123,13 +103,13 @@ It is aimed at use in, for example, cryptography and computational algebra.")
(define-public mpfr
(package
(name "mpfr")
- (version "4.2.0")
+ (version "4.2.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/mpfr/mpfr-" version
".tar.xz"))
(sha256 (base32
- "14yr4sf4mys64nzbgnd997l6l4n8l9vsjnnvnb0lh4jh2ggpi8q6"))))
+ "1cnb3y7y351qg6r7ynwsgaykm7l2a8zg2nlljs4rf9k778shfy17"))))
(arguments
(list
#:phases (if (system-hurd?)
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index ceac94a592..53db3fbf10 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -44,6 +44,7 @@
;;; Copyright © 2021 Simon Streit <simon@netpanic.org>
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
;;; Copyright © 2021 Thomas Albers Raviola <thomas@thomaslabs.org>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2022, 2023 Sughosha <sughosha@disroot.org>
;;; Copyright © 2022 Remco van 't Veer <remco@remworks.net>
;;; Copyright © 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
@@ -469,8 +470,7 @@ score, keyboard, guitar, drum and controller views.")
(find-files "3rdparty"
(lambda (file stat)
(string-match "^3rdparty/[^/]*$" file))
- #:directories? #t))
- #t))))
+ #:directories? #t))))))
(build-system cmake-build-system)
(arguments
'(#:test-target "clementine_test"
@@ -492,15 +492,16 @@ score, keyboard, guitar, drum and controller views.")
(let ((out (assoc-ref outputs "out"))
(gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
(wrap-program (string-append out "/bin/clementine")
- `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path)))
- #t))))))
+ `("GST_PLUGIN_SYSTEM_PATH" ":" prefix
+ (,gst-plugin-path)))))))))
(native-inputs
- `(("gettext" ,gettext-minimal)
- ("googletest" ,googletest)
- ("pkg-config" ,pkg-config)
- ("qtlinguist" ,qttools-5)))
+ (list gettext-minimal
+ googletest
+ pkg-config
+ qttools-5))
(inputs
- (list boost
+ (list bash-minimal
+ boost
chromaprint
fftw
glib
@@ -708,7 +709,8 @@ Winamp/XMMS skins.")
(setenv "DISPLAY" ":1")
(setenv "HOME" (getcwd)))))))
(native-inputs
- (list gettext-minimal
+ (list bash-minimal
+ gettext-minimal
googletest
pkg-config
qttools
@@ -847,7 +849,7 @@ many input formats and provides a customisable Vi-style user interface.")
(native-inputs
(list diffutils
`(,glib "bin") ; for gtester
- gtk-doc
+ gtk-doc/stable
intltool
libtool
pkg-config))
@@ -1605,7 +1607,7 @@ and auto-mapping slices to MIDI note numbers.")
python))
(native-inputs
(list bison
- dblatex
+ dblatex/stable
flex
fontforge
gettext-minimal
@@ -2220,7 +2222,8 @@ for path in [path for path in sys.path if 'site-packages' in path]: site.addsite
(wrap-program (search-input-file outputs "bin/solfege")
`("GUIX_PYTHONPATH" ":" prefix (,path)))))))))
(inputs
- (list python-wrapper
+ (list bash-minimal
+ python-wrapper
python-pygobject
gettext-minimal
gtk+
@@ -3254,18 +3257,7 @@ browser.")
"1rs248pkgn6d29nkvw9ab6dvi1vsz220jdmz1ddzr29cpyc0adfh"))))
(build-system cmake-build-system)
(arguments
- `(#:tests? #f ; no test target
- #:phases
- (modify-phases %standard-phases
- (add-before 'configure 'fix-docbook
- (lambda* (#:key inputs #:allow-other-keys)
- (substitute* "cmake_admin/CreateManpages.cmake"
- (("http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl")
- (string-append (assoc-ref inputs "docbook-xsl")
- "/xml/xsl/docbook-xsl-"
- ,(package-version docbook-xsl)
- "/manpages/docbook.xsl")))
- #t)))))
+ `(#:tests? #f)) ; no test target
(inputs
(list qtbase-5 qtsvg-5 qttools-5 alsa-lib))
(native-inputs
@@ -3298,23 +3290,12 @@ backends, including ALSA, OSS, Network and FluidSynth.")
"0kh8pns9pla9c47y2nwckjpiihczg6rpg96aignsdsd7vkql69s9"))))
(build-system cmake-build-system)
(arguments
- `(#:tests? #f ; no test target
- #:phases
- (modify-phases %standard-phases
- (add-before 'configure 'fix-docbook
- (lambda* (#:key inputs #:allow-other-keys)
- (substitute* "cmake_admin/CreateManpages.cmake"
- (("http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl")
- (string-append (assoc-ref inputs "docbook-xsl")
- "/xml/xsl/docbook-xsl-"
- ,(package-version docbook-xsl)
- "/manpages/docbook.xsl")))
- #t)))))
+ `(#:tests? #f)) ; no test target
(inputs
(list drumstick qtbase-5 qtsvg-5 qtx11extras))
(native-inputs
(list libxslt ;for xsltproc
- docbook-xsl qttools-5 pkg-config))
+ docbook-xml-4.4 docbook-xsl qttools-5 pkg-config))
(home-page "https://vmpk.sourceforge.io/")
(synopsis "Virtual MIDI piano keyboard")
(description
@@ -3546,7 +3527,7 @@ can connect to any JACK port and record the output into a stereo WAV file.")
`(#:modules ((guix build gnu-build-system)
((guix build python-build-system) #:prefix python:)
(guix build utils))
- #:imported-modules (,@%gnu-build-system-modules
+ #:imported-modules (,@%default-gnu-imported-modules
(guix build python-build-system))
#:make-flags
(list (string-append "PREFIX=" (assoc-ref %outputs "out")))
@@ -5370,7 +5351,7 @@ studio.")
cunit
gettext-minimal
gobject-introspection
- gtk-doc
+ gtk-doc/stable
libtool
libxslt
pkg-config
@@ -5969,7 +5950,7 @@ console music players.")
go-github-com-wtolson-go-taglib
go-github-com-yookoala-realpath))
(inputs
- (list chromaprint ffmpeg))
+ (list bash-minimal chromaprint ffmpeg))
(arguments
`(#:import-path "gitlab.com/ambrevar/demlo"
#:phases
@@ -5985,8 +5966,7 @@ console music players.")
,(map (lambda (dir)
(string-append dir "/bin:"
dir "/sbin"))
- (list ffmpeg chromaprint))))
- #t)))
+ (list ffmpeg chromaprint)))))))
(add-after 'install 'install-scripts
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@@ -5999,8 +5979,8 @@ console music players.")
(install-file (string-append root "/config.lua") xdg-data-dirs)
;; TODO: Test fish completion.
(install-file (string-append root "/completion/demlo.fish")
- (string-append out "/share/fish/vendor_completions.d"))
- #t))))))
+ (string-append
+ out "/share/fish/vendor_completions.d"))))))))
(home-page "https://gitlab.com/ambrevar/demlo")
(synopsis "Dynamic and extensible music library organizer")
(description "Demlo is a music library organizer. It can encode, fix
@@ -6065,6 +6045,7 @@ discard bad quality ones.
'("qtmultimedia"))))))))))
(inputs
(list alsa-lib
+ bash-minimal
fftw
jack-1
portaudio
@@ -6097,7 +6078,8 @@ with error and volume history, and advanced features.")
(native-inputs
(list intltool pkg-config))
(inputs
- (list glib
+ (list bash-minimal
+ glib
grilo
gstreamer
gst-plugins-base
@@ -6120,8 +6102,8 @@ with error and volume history, and advanced features.")
(let ((out (assoc-ref outputs "out"))
(gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
(wrap-program (string-append out "/bin/pragha")
- `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path)))
- #t))))))
+ `("GST_PLUGIN_SYSTEM_PATH" ":" prefix
+ (,gst-plugin-path)))))))))
(home-page "https://pragha-music-player.github.io")
(synopsis "Music player")
(description "Pragha is a lightweight music player based on Gtk and
diff --git a/gnu/packages/nettle.scm b/gnu/packages/nettle.scm
index 96ffb8821a..15533ca629 100644
--- a/gnu/packages/nettle.scm
+++ b/gnu/packages/nettle.scm
@@ -83,14 +83,14 @@ themselves.")
;; This version is not API-compatible with version 2. In particular, lsh
;; cannot use it yet. So keep it separate.
(package (inherit nettle-2)
- (version "3.8.1")
+ (version "3.9.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/nettle/nettle-"
version ".tar.gz"))
(sha256
(base32
- "1znb87fi4gd2jkwbca74fl64pr9lr0cm5i6p7zlcszfdfwmkwkrn"))))
+ "1qvc1iamnvbiss0bx9c98djgn3y60zs59c5wdyyip9qc3fcgzznc"))))
(arguments
(substitute-keyword-arguments (package-arguments nettle-2)
((#:configure-flags flags)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 9d657bc69d..05e2e748c0 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -956,7 +956,8 @@ systems with no further dependencies.")
intltool
pkg-config))
(inputs
- (list bluez
+ (list bash-minimal
+ bluez
dbus
(librsvg-for-system)
glib
@@ -1194,7 +1195,7 @@ and SSH, and it can use both TCP and UDP as transport mechanisms.")
(define-public socat
(package
(name "socat")
- (version "1.7.4.3")
+ (version "1.7.4.4")
(source (origin
(method url-fetch)
(uri (string-append
@@ -1202,10 +1203,10 @@ and SSH, and it can use both TCP and UDP as transport mechanisms.")
version ".tar.bz2"))
(sha256
(base32
- "01w0hpqf5xmgn40s1ablfd4y67dlrx5y9zlx24spc1qm8h81hwyl"))))
+ "1b40ccdvxq5kaghsbwg4q3dq5aw4acw1bpqvs3v3ljp5y392pm7v"))))
(build-system gnu-build-system)
(arguments '(#:tests? #f)) ; no test suite
- (inputs (list openssl))
+ (inputs (list openssl readline))
(home-page "http://www.dest-unreach.org/socat/")
(synopsis
"Open bidirectional communication channels from the command line")
@@ -1626,28 +1627,34 @@ intended as a substitute for the PPPStatus and EthStatus projects.")
(("if build_ping == true")
"if false")))))))
(native-inputs
- (list gettext-minimal
- pkg-config
- docbook-xsl
- docbook-xml
- libxml2 ;for XML_CATALOG_FILES
- libxslt))
+ (list docbook-xsl docbook-xml-5.0.1
+ gettext-minimal libxslt pkg-config))
(inputs
(list libcap libidn2 openssl))
(synopsis "Collection of network utilities")
(description
"This package contains a variety of tools for dealing with network
configuration, troubleshooting, or servers. Utilities included are:
-
-@itemize @bullet
-@item @command{arping}: Ping hosts using the @dfn{Address Resolution Protocol}.
-@item @command{clockdiff}: Compute time difference between network hosts
-using ICMP TSTAMP messages.
-@item @command{ping}: Use ICMP ECHO messages to measure round-trip delays
-and packet loss across network paths.
-@item @command{tracepath}: Trace network path to an IPv4 or IPv6 address and
-discover MTU along the way.
-@end itemize")
+@table @command
+@item arping
+Ping hosts using @acronym{ARP, Address Resolution Protocol}.
+@item clockdiff
+Compute time difference between network hosts using ICMP TSTAMP messages.
+@item ninfod
+Daemon that responds to IPv6 Node Information Queries.
+@item ping
+Use ICMP ECHO messages to measure round-trip delays and packet loss across
+network paths.
+@item rarpd
+Answer RARP requests from clients.
+@item rdisc
+Populate network routing tables with information from the ICMP router
+discovery protocol.
+@item tftpd
+Trivial file transfer protocol server.
+@item tracepath
+Trace network path to an IPv4 or IPv6 address and discover MTU along the way.
+@end table")
;; The various utilities are covered by different licenses, see LICENSE
;; for details.
(license (list license:gpl2+ ;arping, tracepath
@@ -3855,7 +3862,7 @@ and targeted primarily for asynchronous processing of HTTP-requests.")
(arguments
(list
#:imported-modules `((guix build python-build-system) ;for site-packages
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:modules '(((guix build python-build-system) #:prefix python:)
(guix build gnu-build-system)
(guix build utils))
@@ -4311,7 +4318,8 @@ easy-to-understand binary values.")
(lambda _
(setenv "CC" "gcc")
(invoke "make" "tunctl")))
- ;; TODO: Requires docbook2x to generate man page from SGML.
+ ;; TODO: Requires docbook-to-man (unrelated to docbook2x and
+ ;; docbook-utils) to generate man page from SGML.
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
diff --git a/gnu/packages/node.scm b/gnu/packages/node.scm
index a9d4e5ab13..7c320a00d6 100644
--- a/gnu/packages/node.scm
+++ b/gnu/packages/node.scm
@@ -12,6 +12,7 @@
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2021, 2022 Philip McGrath <philip@philipmcgrath.com>
;;; Copyright © 2022 Hilton Chain <hako@ultrarare.space>
+;;; Copyright © 2024 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -77,6 +78,10 @@
(("TRUE") "true")
(("FALSE") "false"))
+ ;; Fix process.versions.XXXX assumption of always having
+ ;; a version string of major.minor.patch and not major.minor.
+ (substitute* "test/parallel/test-process-versions.js"
+ (("\\\\d\\+\\\\.\\\\d\\+\\\\.") "(\\d+\\.)+"))
;; Remove bundled software.
(for-each delete-file-recursively
'("deps/cares"
diff --git a/gnu/packages/nss.scm b/gnu/packages/nss.scm
index 14612d7ce9..7e9ed49ead 100644
--- a/gnu/packages/nss.scm
+++ b/gnu/packages/nss.scm
@@ -174,10 +174,7 @@ in the Mozilla clients.")
(replace 'configure
(lambda _
(setenv "CC" #$(cc-for-target))
- ;; TODO: Set this unconditionally
- #$@(if (%current-target-system)
- #~((setenv "CCC" #$(cxx-for-target)))
- #~())
+ (setenv "CCC" #$(cxx-for-target))
;; No VSX on powerpc-linux.
#$@(if (target-ppc32?)
#~((setenv "NSS_DISABLE_CRYPTO_VSX" "1"))
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 7fad276b4e..2c16f24e55 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -1320,7 +1320,7 @@ the OCaml core distribution.")
(build-system gnu-build-system)
(arguments
(list
- #:imported-modules `(,@%gnu-build-system-modules
+ #:imported-modules `(,@%default-gnu-imported-modules
(guix build emacs-build-system)
(guix build emacs-utils))
#:modules '((guix build gnu-build-system)
diff --git a/gnu/packages/ocr.scm b/gnu/packages/ocr.scm
index 089bea7f01..8e376da78b 100644
--- a/gnu/packages/ocr.scm
+++ b/gnu/packages/ocr.scm
@@ -160,7 +160,6 @@ models for the Tesseract OCR Engine.")
libarchive
libtiff
libtool
- libxml2 ;for XML_CATALOG_FILES
libxslt
pkg-config
tesseract-ocr-tessdata-fast))
diff --git a/gnu/packages/openldap.scm b/gnu/packages/openldap.scm
index bd244cea1e..02c8d825f7 100644
--- a/gnu/packages/openldap.scm
+++ b/gnu/packages/openldap.scm
@@ -28,6 +28,7 @@
(define-module (gnu packages openldap)
#:use-module (gnu packages autotools)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages cyrus-sasl)
@@ -232,7 +233,7 @@ servers from Python programs.")
#:select (add-installed-pythonpath python-version))
(guix build utils))
#:imported-modules `((guix build python-build-system)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:disallowed-references (list httpd)
#:configure-flags
#~(list "--enable-cmocka"
@@ -319,7 +320,8 @@ servers from Python programs.")
"/bin/ds-logpipe.py"
"/bin/ds-replcheck"))))))))
(inputs
- (list bdb
+ (list bash-minimal
+ bdb
cracklib
cyrus-sasl
gnutls
diff --git a/gnu/packages/openstack.scm b/gnu/packages/openstack.scm
index 0937dc2e4f..8e53ba8f62 100644
--- a/gnu/packages/openstack.scm
+++ b/gnu/packages/openstack.scm
@@ -26,6 +26,7 @@
(define-module (gnu packages openstack)
#:use-module (gnu packages)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages check)
#:use-module (gnu packages databases)
#:use-module (gnu packages gnupg)
@@ -977,14 +978,10 @@ permanence.")
`("PATH" ":" prefix
,(map (lambda (dir)
(string-append dir "/bin"))
- (list git openssh)))))
- #t)))))
- (native-inputs
- (list python-pbr))
- (propagated-inputs
- (list python-requests))
- (inputs
- (list git openssh))
+ (list git openssh))))))))))
+ (native-inputs (list python-pbr))
+ (propagated-inputs (list python-requests))
+ (inputs (list bash-minimal git openssh))
(home-page "https://docs.openstack.org/infra/git-review/")
(synopsis "Command-line tool for Gerrit")
(description
diff --git a/gnu/packages/orange.scm b/gnu/packages/orange.scm
index 8b22124c35..cbc8029729 100644
--- a/gnu/packages/orange.scm
+++ b/gnu/packages/orange.scm
@@ -22,6 +22,7 @@
#:use-module (guix download)
#:use-module (guix build-system python)
#:use-module (gnu packages)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages graph)
#:use-module (gnu packages machine-learning)
@@ -143,7 +144,8 @@ GUI based workflow. It is primarily used in the Orange framework.")
(native-inputs
(list python-cython))
(inputs
- (list python-anyqt
+ (list bash-minimal
+ python-anyqt
python-baycomp
python-bottleneck
python-chardet
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 0a2fe9faed..37ff78d93a 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -12,7 +12,7 @@
;;; Copyright © 2019-2024 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de>
;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2020 Jesse Gibbons <jgibbons2357+guix@gmail.com>
;;; Copyright © 2020 Martin Becze <mjbecze@riseup.net>
@@ -463,7 +463,8 @@ $(prefix)/etc/openrc\n")))
;; the 'patch-shebangs' phase, which would otherwise
;; change it to 'GUILE/bin/guile'.
(delete 'patch-shebangs))))
- (native-inputs `(("pkg-config" ,pkg-config)
+ (native-inputs `(("locales" ,(libc-utf8-locales-for-target))
+ ("pkg-config" ,pkg-config)
;; Guile libraries are needed here for
;; cross-compilation.
@@ -481,6 +482,7 @@ $(prefix)/etc/openrc\n")))
("guile-zstd" ,guile-zstd)
("guile-ssh" ,guile-ssh)
("guile-git" ,guile-git)
+ ("guile-semver" ,guile-semver)
;; XXX: Keep the development inputs here even though
;; they're unnecessary, just so that 'guix environment
@@ -494,7 +496,8 @@ $(prefix)/etc/openrc\n")))
("help2man" ,help2man)
("po4a" ,po4a)))
(inputs
- `(("bzip2" ,bzip2)
+ `(("bash-minimal", bash-minimal)
+ ("bzip2" ,bzip2)
("gzip" ,gzip)
("sqlite" ,sqlite)
("libgcrypt" ,libgcrypt)
@@ -1563,9 +1566,9 @@ environments.")
(list
#:modules `(((guix build guile-build-system)
#:select (target-guile-effective-version))
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:imported-modules `((guix build guile-build-system)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:phases
#~(modify-phases %standard-phases
(add-before 'build 'set-GUILE_AUTO_COMPILE
@@ -1812,9 +1815,9 @@ in an isolated environment, in separate namespaces.")
(list
#:modules `(((guix build guile-build-system)
#:select (target-guile-effective-version))
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:imported-modules `((guix build guile-build-system)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:phases
#~(modify-phases %standard-phases
(add-before 'build 'set-GUILE_AUTO_COMPILE
@@ -2232,19 +2235,18 @@ Python eggs, Ruby gems, and more to RPMs, debs, Solaris packages and more.")
(mkdir-p datadir)
(invoke "touch" (string-append datadir "index.db"))
(setenv "HOME" home))
- (invoke "./bootstrap")
- #t))
+ (invoke "./bootstrap")))
(add-after 'install 'wrap-executables
(lambda* (#:key outputs inputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
(curl (assoc-ref inputs "curl")))
(wrap-program (string-append out "/bin/akku")
- `("LD_LIBRARY_PATH" ":" prefix (,(string-append curl "/lib"))))
- #t))))))
+ `("LD_LIBRARY_PATH" ":" prefix
+ (,(string-append curl "/lib"))))))))))
(native-inputs
(list which autoconf automake pkg-config))
(inputs
- (list guile-3.0 curl))
+ (list bash-minimal guile-3.0 curl))
(home-page "https://akkuscm.org/")
(synopsis "Language package manager for Scheme")
(description
diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm
index eb64a7f306..bbdf7d6619 100644
--- a/gnu/packages/password-utils.scm
+++ b/gnu/packages/password-utils.scm
@@ -409,10 +409,8 @@ client, supporting @acronym{TOTP, Time-based one time passwords} and
"/lib/guile/" effective "/site-ccache"))
(prog (string-append out "/bin/shroud")))
(wrap-program prog
- `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,ccachedir)))
- #t))))))
- (inputs
- (list guile-2.2 gnupg xclip))
+ `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,ccachedir)))))))))
+ (inputs (list bash-minimal guile-2.2 gnupg xclip))
(synopsis "GnuPG-based secret manager")
(description "Shroud is a simple secret manager with a command line
interface. The password database is stored as a Scheme s-expression and
@@ -619,8 +617,7 @@ command-line programs (@command{pwqcheck}, @command{pwqfilter}, and
"/bin/assword"))
(gi-typelib-path (getenv "GI_TYPELIB_PATH")))
(wrap-program prog
- `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))
- #t)))
+ `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))))
(add-after 'install 'manpage
(lambda* (#:key outputs #:allow-other-keys)
(invoke "make" "assword.1")
@@ -631,7 +628,7 @@ command-line programs (@command{pwqcheck}, @command{pwqfilter}, and
(native-inputs
(list txt2man))
(inputs
- (list gtk+ python-xdo python-gpg python-pygobject))
+ (list bash-minimal gtk+ python-xdo python-gpg python-pygobject))
(propagated-inputs
(list xclip))
(home-page "https://finestructure.net/assword/")
@@ -724,7 +721,8 @@ any X11 window.")
(separator #f) ;single entry
(files '("lib/password-store/extensions")))))
(inputs
- (list coreutils
+ (list bash-minimal
+ coreutils
dmenu
util-linux
git
@@ -799,7 +797,7 @@ through the pass command.")
("src/completion/pass.zsh-completion"
"/share/zsh/site-functions/"))))
(inputs
- (list age age-keygen git procps qrencode sed tree util-linux))
+ (list age age-keygen bash-minimal git procps qrencode sed tree util-linux))
(home-page "https://github.com/FiloSottile/passage")
(synopsis "Encrypted password manager")
(description "This package provides an encrypted password manager, forked
diff --git a/gnu/packages/patches/atf-execute-with-shell.patch b/gnu/packages/patches/atf-execute-with-shell.patch
new file mode 100644
index 0000000000..bde4fb336a
--- /dev/null
+++ b/gnu/packages/patches/atf-execute-with-shell.patch
@@ -0,0 +1,39 @@
+Submitted here: https://github.com/freebsd/atf/pull/57
+
+From 098b66269b1cf1d944b8b214ceb7ce9febde3682 Mon Sep 17 00:00:00 2001
+From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
+Date: Mon, 29 Jan 2024 22:35:49 -0500
+Subject: [PATCH] Fix use after free in execute_with_shell.
+
+The temporary string returned by atf::env::get would be used outside
+its statement, which is invalid and cause undefined behavior. Copy it
+to a local variable to avoid the issue.
+
+Fixes: https://github.com/freebsd/atf/issues/26
+Fixes: https://github.com/freebsd/kyua/issues/223
+
+Reported-by: Ruslan Bukin <br@bsdpad.com>
+---
+ atf-sh/atf-check.cpp | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/atf-sh/atf-check.cpp b/atf-sh/atf-check.cpp
+index 41f0b13..9d6f7a8 100644
+--- a/atf-sh/atf-check.cpp
++++ b/atf-sh/atf-check.cpp
+@@ -436,7 +436,9 @@ execute_with_shell(char* const* argv)
+ const std::string cmd = flatten_argv(argv);
+
+ const char* sh_argv[4];
+- sh_argv[0] = atf::env::get("ATF_SHELL", ATF_SHELL).c_str();
++ const std::string shell = atf::env::get("ATF_SHELL", ATF_SHELL);
++
++ sh_argv[0] = shell.c_str();
+ sh_argv[1] = "-c";
+ sh_argv[2] = cmd.c_str();
+ sh_argv[3] = NULL;
+
+base-commit: 18eb8168b70a0f934b4824b6391b55ac0b2f4fdf
+--
+2.41.0
+
diff --git a/gnu/packages/patches/autotrace-pkg-config.patch b/gnu/packages/patches/autotrace-pkg-config.patch
new file mode 100644
index 0000000000..eef1008bf2
--- /dev/null
+++ b/gnu/packages/patches/autotrace-pkg-config.patch
@@ -0,0 +1,123 @@
+Submitted upstream: https://github.com/autotrace/autotrace/pull/128
+
+diff --git a/Makefile.am b/Makefile.am
+index ea6eadd..cd9de37 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -127,7 +127,18 @@ autotraceinclude_HEADERS=\
+ src/exception.h \
+ src/color.h
+
+-libautotrace_la_LDFLAGS = -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)
++libautotrace_la_LDFLAGS = \
++ -version-info \
++ $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
++ $(GRAPHICSMAGICK_LIBS) \
++ $(IMAGEMAGICK_LIBS) \
++ $(LIBPNG_LIBS) \
++ $(LIBSWF_LIBS) \
++ $(LIBPSTOEDIT_LIBS) \
++ $(GLIB2_LIBS) \
++ $(POPT_LIBS) \
++ $(INTLLIBS) \
++ -lm
+
+ #
+ # noinst_HEADERS: headers shared between lib and bin.
+@@ -143,17 +154,7 @@ autotrace_SOURCES=\
+
+ AM_CPPFLAGS = $(GRAPHICSMAGICK_CFLAGS) $(IMAGEMAGICK_CFLAGS) $(LIBPSTOEDIT_CFLAGS) $(LIBSWF_CFLAGS) $(GLIB2_CFLAGS) -DLOCALEDIR=\""$(datadir)/locale"\"
+
+-autotrace_LDADD = \
+- libautotrace.la \
+- $(GRAPHICSMAGICK_LIBS) \
+- $(IMAGEMAGICK_LIBS) \
+- $(LIBPNG_LIBS) \
+- $(LIBSWF_LIBS) \
+- $(LIBPSTOEDIT_LIBS) \
+- $(GLIB2_LIBS) \
+- $(POPT_LIBS) \
+- $(INTLLIBS) \
+- -lm
++autotrace_LDADD = libautotrace.la
+
+ pkgconfigdir = $(libdir)/pkgconfig
+ pkgconfig_DATA= autotrace.pc
+diff --git a/autotrace.pc.in b/autotrace.pc.in
+index 4c2e581..c70808e 100644
+--- a/autotrace.pc.in
++++ b/autotrace.pc.in
+@@ -6,6 +6,6 @@ includedir=@includedir@
+ Name: Autotrace
+ Description: a utility that converts bitmap to vector graphics
+ Version: @VERSION@
+-Requires:
+-Libs: -L@libdir@ -lautotrace @LIBPNG_LIBS@ @MAGICK_LIBS@ @LIBSWF_LIBS@ @LIBPSTOEDIT_LIBS@ @GLIB2_LIBS@
+-Cflags: -I@includedir@ @MAGICK_CFLAGS@ @LIBPSTOEDIT_CFLAGS@ @GLIB2_CFLAGS@
++Requires.private: glib-2.0 >= 2.0 gmodule-2.0 >= 2.0 gthread-2.0 >= 2.0 gobject-2.0 >= 2.0 @REQUIRES_PRIVATE@
++Libs: -L@libdir@ -lautotrace
++Cflags: -I@includedir@
+diff --git a/configure.ac b/configure.ac
+index 43b6fea..e6cf262 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -85,7 +85,8 @@ else
+ if test "x${with_magick}" = xGraphicsMagick; then
+ PKG_CHECK_MODULES([GRAPHICSMAGICK],
+ [GraphicsMagick >= 1.3.40],
+- [HAVE_MAGICK=yes
++ [REQUIRES_PRIVATE="${REQUIRES_PRIVATE}GraphicsMagick >= 1.3.40 "
++ HAVE_MAGICK=yes
+ HAVE_GRAPHICSMAGICK=yes
+ MAGICK_LIBRARY=GraphicsMagick
+ AC_DEFINE(HAVE_GRAPHICSMAGICK, 1, [GraphicsMagick library is available.])
+@@ -97,13 +98,15 @@ else
+ if test "x${with_magick}" = xImageMagick; then
+ PKG_CHECK_MODULES([IMAGEMAGICK7],
+ [ImageMagick >= 7.0.1],
+- [HAVE_IMAGEMAGICK7=yes
++ [REQUIRES_PRIVATE="${REQUIRES_PRIVATE}ImageMagick >= 7.0.1 "
++ HAVE_IMAGEMAGICK7=yes
+ AC_DEFINE(HAVE_IMAGEMAGICK7, 1, [ImageMagick version 7 or higher is available.])
+ ],[]
+ )
+ PKG_CHECK_MODULES([IMAGEMAGICK],
+ [ImageMagick >= 5.2.1],
+- [HAVE_MAGICK=yes
++ [REQUIRES_PRIVATE="${REQUIRES_PRIVATE}ImageMagick >= 5.2.1 "
++ HAVE_MAGICK=yes
+ HAVE_IMAGEMAGICK=yes
+ MAGICK_LIBRARY=ImageMagick
+ AC_DEFINE(HAVE_IMAGEMAGICK, 1, [ImageMagick library is available.])
+@@ -140,6 +143,7 @@ HAVE_LIBPNG=no
+ if test "x${with_png}" = xyes; then
+ PKG_CHECK_MODULES([LIBPNG],[libpng],
+ [
++ REQUIRES_PRIVATE="${REQUIRES_PRIVATE}libpng "
+ HAVE_LIBPNG=yes
+ AC_DEFINE(HAVE_LIBPNG,1,[PNG library is available or not])
+ ],
+@@ -165,6 +169,7 @@ if test "${swf_header_found}" = yes ; then
+ PKG_CHECK_MODULES([LIBSWF],
+ [libming],
+ [
++ REQUIRES_PRIVATE="${REQUIRES_PRIVATE}libming "
+ HAVE_LIBSWF=yes
+ AC_DEFINE(HAVE_LIBSWF,1,[SWF library is available or not])
+ ],
+@@ -187,6 +192,7 @@ if test "x${with_pstoedit}" = xyes; then
+ PKG_CHECK_MODULES([LIBPSTOEDIT],
+ [pstoedit >= 3.32.0],
+ [
++ REQUIRES_PRIVATE="${REQUIRES_PRIVATE}pstoedit >= 3.32.0 "
+ HAVE_LIBPSTOEDIT=yes
+ AC_DEFINE(HAVE_LIBPSTOEDIT,1,[pstoedit library is available or not])
+ ],
+@@ -210,6 +216,7 @@ fi
+
+ dnl po/Makefile.in FIXME FIXME FIXME
+ AC_CONFIG_FILES([po/Makefile.in Makefile autotrace.pc])
++AC_SUBST([REQUIRES_PRIVATE])
+ AC_OUTPUT
+
+ echo "
diff --git a/gnu/packages/patches/clang-13-remove-crypt-interceptors.patch b/gnu/packages/patches/clang-13-remove-crypt-interceptors.patch
new file mode 100644
index 0000000000..578f246c39
--- /dev/null
+++ b/gnu/packages/patches/clang-13-remove-crypt-interceptors.patch
@@ -0,0 +1,214 @@
+From d7bead833631486e337e541e692d9b4a1ca14edd Mon Sep 17 00:00:00 2001
+From: Fangrui Song <i@maskray.me>
+Date: Fri, 28 Apr 2023 09:59:17 -0700
+Subject: [PATCH] [sanitizer] Remove crypt and crypt_r interceptors
+
+From Florian Weimer's D144073
+
+> On GNU/Linux (glibc), the crypt and crypt_r functions are not part of the main shared object (libc.so.6), but libcrypt (with multiple possible sonames). The sanitizer libraries do not depend on libcrypt, so it can happen that during sanitizer library initialization, no real implementation will be found because the crypt, crypt_r functions are not present in the process image (yet). If its interceptors are called nevertheless, this results in a call through a null pointer when the sanitizer library attempts to forward the call to the real implementation.
+>
+> Many distributions have already switched to libxcrypt, a library that is separate from glibc and that can be build with sanitizers directly (avoiding the need for interceptors). This patch disables building the interceptor for glibc targets.
+
+Let's remove crypt and crypt_r interceptors (D68431) to fix issues with
+newer glibc.
+
+For older glibc, msan will not know that an uninstrumented crypt_r call
+initializes `data`, so there is a risk for false positives. However, with some
+codebase survey, I think crypt_r uses are very few and the call sites typically
+have a `memset(&data, 0, sizeof(data));` anyway.
+
+Fix https://github.com/google/sanitizers/issues/1365
+Related: https://bugzilla.redhat.com/show_bug.cgi?id=2169432
+
+Reviewed By: #sanitizers, fweimer, thesamesam, vitalybuka
+
+Differential Revision: https://reviews.llvm.org/D149403
+---
+ .../sanitizer_common_interceptors.inc | 37 -------------------
+ .../sanitizer_platform_interceptors.h | 2 -
+ .../sanitizer_platform_limits_posix.cpp | 8 ----
+ .../sanitizer_platform_limits_posix.h | 1 -
+ .../TestCases/Linux/crypt_r.cpp | 36 ------------------
+ .../TestCases/Posix/crypt.cpp | 32 ----------------
+ 6 files changed, 116 deletions(-)
+ delete mode 100644 compiler-rt/test/sanitizer_common/TestCases/Linux/crypt_r.cpp
+ delete mode 100644 compiler-rt/test/sanitizer_common/TestCases/Posix/crypt.cpp
+
+diff --git a/lib/sanitizer_common/sanitizer_common_interceptors.inc b/lib/sanitizer_common/sanitizer_common_interceptors.inc
+index b30c91f06cfeb0..490a8b12d8b17d 100644
+--- a/lib/sanitizer_common/sanitizer_common_interceptors.inc
++++ b/lib/sanitizer_common/sanitizer_common_interceptors.inc
+@@ -10086,41 +10086,6 @@ INTERCEPTOR(SSIZE_T, getrandom, void *buf, SIZE_T buflen, unsigned int flags) {
+ #define INIT_GETRANDOM
+ #endif
+
+-#if SANITIZER_INTERCEPT_CRYPT
+-INTERCEPTOR(char *, crypt, char *key, char *salt) {
+- void *ctx;
+- COMMON_INTERCEPTOR_ENTER(ctx, crypt, key, salt);
+- COMMON_INTERCEPTOR_READ_RANGE(ctx, key, internal_strlen(key) + 1);
+- COMMON_INTERCEPTOR_READ_RANGE(ctx, salt, internal_strlen(salt) + 1);
+- char *res = REAL(crypt)(key, salt);
+- if (res != nullptr)
+- COMMON_INTERCEPTOR_INITIALIZE_RANGE(res, internal_strlen(res) + 1);
+- return res;
+-}
+-#define INIT_CRYPT COMMON_INTERCEPT_FUNCTION(crypt);
+-#else
+-#define INIT_CRYPT
+-#endif
+-
+-#if SANITIZER_INTERCEPT_CRYPT_R
+-INTERCEPTOR(char *, crypt_r, char *key, char *salt, void *data) {
+- void *ctx;
+- COMMON_INTERCEPTOR_ENTER(ctx, crypt_r, key, salt, data);
+- COMMON_INTERCEPTOR_READ_RANGE(ctx, key, internal_strlen(key) + 1);
+- COMMON_INTERCEPTOR_READ_RANGE(ctx, salt, internal_strlen(salt) + 1);
+- char *res = REAL(crypt_r)(key, salt, data);
+- if (res != nullptr) {
+- COMMON_INTERCEPTOR_WRITE_RANGE(ctx, data,
+- __sanitizer::struct_crypt_data_sz);
+- COMMON_INTERCEPTOR_INITIALIZE_RANGE(res, internal_strlen(res) + 1);
+- }
+- return res;
+-}
+-#define INIT_CRYPT_R COMMON_INTERCEPT_FUNCTION(crypt_r);
+-#else
+-#define INIT_CRYPT_R
+-#endif
+-
+ #if SANITIZER_INTERCEPT_GETENTROPY
+ INTERCEPTOR(int, getentropy, void *buf, SIZE_T buflen) {
+ void *ctx;
+@@ -10698,8 +10663,6 @@ static void InitializeCommonInterceptors() {
+ INIT_GETUSERSHELL;
+ INIT_SL_INIT;
+ INIT_GETRANDOM;
+- INIT_CRYPT;
+- INIT_CRYPT_R;
+ INIT_GETENTROPY;
+ INIT_QSORT;
+ INIT_QSORT_R;
+diff --git a/lib/sanitizer_common/sanitizer_platform_interceptors.h b/lib/sanitizer_common/sanitizer_platform_interceptors.h
+index eb39fabfd59839..c82ab5c2105621 100644
+--- a/lib/sanitizer_common/sanitizer_platform_interceptors.h
++++ b/lib/sanitizer_common/sanitizer_platform_interceptors.h
+@@ -569,8 +569,6 @@
+ #define SANITIZER_INTERCEPT_FDEVNAME SI_FREEBSD
+ #define SANITIZER_INTERCEPT_GETUSERSHELL (SI_POSIX && !SI_ANDROID)
+ #define SANITIZER_INTERCEPT_SL_INIT (SI_FREEBSD || SI_NETBSD)
+-#define SANITIZER_INTERCEPT_CRYPT (SI_POSIX && !SI_ANDROID)
+-#define SANITIZER_INTERCEPT_CRYPT_R (SI_LINUX && !SI_ANDROID)
+
+ #define SANITIZER_INTERCEPT_GETRANDOM \
+ ((SI_LINUX && __GLIBC_PREREQ(2, 25)) || SI_FREEBSD)
+diff --git a/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp b/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp
+index a04eed7aa5a6e..6d61d276d77e3 100644
+--- a/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp
++++ b/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp
+@@ -142,5 +142,4 @@
+ #include <linux/serial.h>
+ #include <sys/msg.h>
+ #include <sys/ipc.h>
+-#include <crypt.h>
+ #endif // SANITIZER_ANDROID
+@@ -243,7 +244,6 @@
+ unsigned struct_ustat_sz = SIZEOF_STRUCT_USTAT;
+ unsigned struct_rlimit64_sz = sizeof(struct rlimit64);
+ unsigned struct_statvfs64_sz = sizeof(struct statvfs64);
+- unsigned struct_crypt_data_sz = sizeof(struct crypt_data);
+ #endif // SANITIZER_LINUX && !SANITIZER_ANDROID
+
+ #if SANITIZER_LINUX && !SANITIZER_ANDROID
+diff --git a/lib/sanitizer_common/sanitizer_platform_limits_posix.h b/lib/sanitizer_common/sanitizer_platform_limits_posix.h
+index e6f298c26e1fb6..58244c9944a03a 100644
+--- a/lib/sanitizer_common/sanitizer_platform_limits_posix.h
++++ b/lib/sanitizer_common/sanitizer_platform_limits_posix.h
+@@ -309,7 +309,6 @@ extern unsigned struct_msqid_ds_sz;
+ extern unsigned struct_mq_attr_sz;
+ extern unsigned struct_timex_sz;
+ extern unsigned struct_statvfs_sz;
+-extern unsigned struct_crypt_data_sz;
+ #endif // SANITIZER_LINUX && !SANITIZER_ANDROID
+
+ struct __sanitizer_iovec {
+diff --git a/test/sanitizer_common/TestCases/Linux/crypt_r.cpp b/test/sanitizer_common/TestCases/Linux/crypt_r.cpp
+deleted file mode 100644
+index 69bfb46aa5f171..00000000000000
+--- a/test/sanitizer_common/TestCases/Linux/crypt_r.cpp
++++ /dev/null
+@@ -1,36 +0,0 @@
+-// RUN: %clangxx -O0 -g %s -lcrypt -o %t && %run %t
+-
+-// crypt.h is missing from Android.
+-// UNSUPPORTED: android
+-
+-#include <assert.h>
+-#include <unistd.h>
+-#include <cstring>
+-#include <crypt.h>
+-
+-int main(int argc, char **argv) {
+- {
+- crypt_data cd;
+- cd.initialized = 0;
+- char *p = crypt_r("abcdef", "xz", &cd);
+- volatile size_t z = strlen(p);
+- }
+- {
+- crypt_data cd;
+- cd.initialized = 0;
+- char *p = crypt_r("abcdef", "$1$", &cd);
+- volatile size_t z = strlen(p);
+- }
+- {
+- crypt_data cd;
+- cd.initialized = 0;
+- char *p = crypt_r("abcdef", "$5$", &cd);
+- volatile size_t z = strlen(p);
+- }
+- {
+- crypt_data cd;
+- cd.initialized = 0;
+- char *p = crypt_r("abcdef", "$6$", &cd);
+- volatile size_t z = strlen(p);
+- }
+-}
+diff --git a/test/sanitizer_common/TestCases/Posix/crypt.cpp b/test/sanitizer_common/TestCases/Posix/crypt.cpp
+deleted file mode 100644
+index 3a8faaa1ae7682..00000000000000
+--- a/test/sanitizer_common/TestCases/Posix/crypt.cpp
++++ /dev/null
+@@ -1,32 +0,0 @@
+-// RUN: %clangxx -O0 -g %s -o %t -lcrypt && %run %t
+-
+-// crypt() is missing from Android and -lcrypt from darwin.
+-// UNSUPPORTED: android, darwin
+-
+-#include <assert.h>
+-#include <unistd.h>
+-#include <cstring>
+-#if __has_include(<crypt.h>)
+-#include <crypt.h>
+-#endif
+-
+-int
+-main (int argc, char** argv)
+-{
+- {
+- char *p = crypt("abcdef", "xz");
+- volatile size_t z = strlen(p);
+- }
+- {
+- char *p = crypt("abcdef", "$1$");
+- volatile size_t z = strlen(p);
+- }
+- {
+- char *p = crypt("abcdef", "$5$");
+- volatile size_t z = strlen(p);
+- }
+- {
+- char *p = crypt("abcdef", "$6$");
+- volatile size_t z = strlen(p);
+- }
+-}
diff --git a/gnu/packages/patches/clang-14-remove-crypt-interceptors.patch b/gnu/packages/patches/clang-14-remove-crypt-interceptors.patch
new file mode 100644
index 0000000000..1043240fe2
--- /dev/null
+++ b/gnu/packages/patches/clang-14-remove-crypt-interceptors.patch
@@ -0,0 +1,214 @@
+From d7bead833631486e337e541e692d9b4a1ca14edd Mon Sep 17 00:00:00 2001
+From: Fangrui Song <i@maskray.me>
+Date: Fri, 28 Apr 2023 09:59:17 -0700
+Subject: [PATCH] [sanitizer] Remove crypt and crypt_r interceptors
+
+From Florian Weimer's D144073
+
+> On GNU/Linux (glibc), the crypt and crypt_r functions are not part of the main shared object (libc.so.6), but libcrypt (with multiple possible sonames). The sanitizer libraries do not depend on libcrypt, so it can happen that during sanitizer library initialization, no real implementation will be found because the crypt, crypt_r functions are not present in the process image (yet). If its interceptors are called nevertheless, this results in a call through a null pointer when the sanitizer library attempts to forward the call to the real implementation.
+>
+> Many distributions have already switched to libxcrypt, a library that is separate from glibc and that can be build with sanitizers directly (avoiding the need for interceptors). This patch disables building the interceptor for glibc targets.
+
+Let's remove crypt and crypt_r interceptors (D68431) to fix issues with
+newer glibc.
+
+For older glibc, msan will not know that an uninstrumented crypt_r call
+initializes `data`, so there is a risk for false positives. However, with some
+codebase survey, I think crypt_r uses are very few and the call sites typically
+have a `memset(&data, 0, sizeof(data));` anyway.
+
+Fix https://github.com/google/sanitizers/issues/1365
+Related: https://bugzilla.redhat.com/show_bug.cgi?id=2169432
+
+Reviewed By: #sanitizers, fweimer, thesamesam, vitalybuka
+
+Differential Revision: https://reviews.llvm.org/D149403
+---
+ .../sanitizer_common_interceptors.inc | 37 -------------------
+ .../sanitizer_platform_interceptors.h | 2 -
+ .../sanitizer_platform_limits_posix.cpp | 8 ----
+ .../sanitizer_platform_limits_posix.h | 1 -
+ .../TestCases/Linux/crypt_r.cpp | 36 ------------------
+ .../TestCases/Posix/crypt.cpp | 32 ----------------
+ 6 files changed, 116 deletions(-)
+ delete mode 100644 compiler-rt/test/sanitizer_common/TestCases/Linux/crypt_r.cpp
+ delete mode 100644 compiler-rt/test/sanitizer_common/TestCases/Posix/crypt.cpp
+
+diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc b/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc
+index b30c91f06cfeb0..490a8b12d8b17d 100644
+--- a/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc
++++ b/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc
+@@ -10086,41 +10086,6 @@ INTERCEPTOR(SSIZE_T, getrandom, void *buf, SIZE_T buflen, unsigned int flags) {
+ #define INIT_GETRANDOM
+ #endif
+
+-#if SANITIZER_INTERCEPT_CRYPT
+-INTERCEPTOR(char *, crypt, char *key, char *salt) {
+- void *ctx;
+- COMMON_INTERCEPTOR_ENTER(ctx, crypt, key, salt);
+- COMMON_INTERCEPTOR_READ_RANGE(ctx, key, internal_strlen(key) + 1);
+- COMMON_INTERCEPTOR_READ_RANGE(ctx, salt, internal_strlen(salt) + 1);
+- char *res = REAL(crypt)(key, salt);
+- if (res != nullptr)
+- COMMON_INTERCEPTOR_INITIALIZE_RANGE(res, internal_strlen(res) + 1);
+- return res;
+-}
+-#define INIT_CRYPT COMMON_INTERCEPT_FUNCTION(crypt);
+-#else
+-#define INIT_CRYPT
+-#endif
+-
+-#if SANITIZER_INTERCEPT_CRYPT_R
+-INTERCEPTOR(char *, crypt_r, char *key, char *salt, void *data) {
+- void *ctx;
+- COMMON_INTERCEPTOR_ENTER(ctx, crypt_r, key, salt, data);
+- COMMON_INTERCEPTOR_READ_RANGE(ctx, key, internal_strlen(key) + 1);
+- COMMON_INTERCEPTOR_READ_RANGE(ctx, salt, internal_strlen(salt) + 1);
+- char *res = REAL(crypt_r)(key, salt, data);
+- if (res != nullptr) {
+- COMMON_INTERCEPTOR_WRITE_RANGE(ctx, data,
+- __sanitizer::struct_crypt_data_sz);
+- COMMON_INTERCEPTOR_INITIALIZE_RANGE(res, internal_strlen(res) + 1);
+- }
+- return res;
+-}
+-#define INIT_CRYPT_R COMMON_INTERCEPT_FUNCTION(crypt_r);
+-#else
+-#define INIT_CRYPT_R
+-#endif
+-
+ #if SANITIZER_INTERCEPT_GETENTROPY
+ INTERCEPTOR(int, getentropy, void *buf, SIZE_T buflen) {
+ void *ctx;
+@@ -10698,8 +10663,6 @@ static void InitializeCommonInterceptors() {
+ INIT_GETUSERSHELL;
+ INIT_SL_INIT;
+ INIT_GETRANDOM;
+- INIT_CRYPT;
+- INIT_CRYPT_R;
+ INIT_GETENTROPY;
+ INIT_QSORT;
+ INIT_QSORT_R;
+diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h
+index eb39fabfd59839..c82ab5c2105621 100644
+--- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h
++++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h
+@@ -569,8 +569,6 @@
+ #define SANITIZER_INTERCEPT_FDEVNAME SI_FREEBSD
+ #define SANITIZER_INTERCEPT_GETUSERSHELL (SI_POSIX && !SI_ANDROID)
+ #define SANITIZER_INTERCEPT_SL_INIT (SI_FREEBSD || SI_NETBSD)
+-#define SANITIZER_INTERCEPT_CRYPT (SI_POSIX && !SI_ANDROID)
+-#define SANITIZER_INTERCEPT_CRYPT_R (SI_LINUX && !SI_ANDROID)
+
+ #define SANITIZER_INTERCEPT_GETRANDOM \
+ ((SI_LINUX && __GLIBC_PREREQ(2, 25)) || SI_FREEBSD)
+diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp
+index a04eed7aa5a6e..6d61d276d77e3 100644
+--- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp
++++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp
+@@ -142,5 +142,4 @@
+ #include <linux/serial.h>
+ #include <sys/msg.h>
+ #include <sys/ipc.h>
+-#include <crypt.h>
+ #endif // SANITIZER_ANDROID
+@@ -243,7 +244,6 @@
+ unsigned struct_ustat_sz = SIZEOF_STRUCT_USTAT;
+ unsigned struct_rlimit64_sz = sizeof(struct rlimit64);
+ unsigned struct_statvfs64_sz = sizeof(struct statvfs64);
+- unsigned struct_crypt_data_sz = sizeof(struct crypt_data);
+ #endif // SANITIZER_LINUX && !SANITIZER_ANDROID
+
+ #if SANITIZER_LINUX && !SANITIZER_ANDROID
+diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
+index e6f298c26e1fb6..58244c9944a03a 100644
+--- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
++++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
+@@ -309,7 +309,6 @@ extern unsigned struct_msqid_ds_sz;
+ extern unsigned struct_mq_attr_sz;
+ extern unsigned struct_timex_sz;
+ extern unsigned struct_statvfs_sz;
+-extern unsigned struct_crypt_data_sz;
+ #endif // SANITIZER_LINUX && !SANITIZER_ANDROID
+
+ struct __sanitizer_iovec {
+diff --git a/compiler-rt/test/sanitizer_common/TestCases/Linux/crypt_r.cpp b/compiler-rt/test/sanitizer_common/TestCases/Linux/crypt_r.cpp
+deleted file mode 100644
+index 69bfb46aa5f171..00000000000000
+--- a/compiler-rt/test/sanitizer_common/TestCases/Linux/crypt_r.cpp
++++ /dev/null
+@@ -1,36 +0,0 @@
+-// RUN: %clangxx -O0 -g %s -lcrypt -o %t && %run %t
+-
+-// crypt.h is missing from Android.
+-// UNSUPPORTED: android
+-
+-#include <assert.h>
+-#include <unistd.h>
+-#include <cstring>
+-#include <crypt.h>
+-
+-int main(int argc, char **argv) {
+- {
+- crypt_data cd;
+- cd.initialized = 0;
+- char *p = crypt_r("abcdef", "xz", &cd);
+- volatile size_t z = strlen(p);
+- }
+- {
+- crypt_data cd;
+- cd.initialized = 0;
+- char *p = crypt_r("abcdef", "$1$", &cd);
+- volatile size_t z = strlen(p);
+- }
+- {
+- crypt_data cd;
+- cd.initialized = 0;
+- char *p = crypt_r("abcdef", "$5$", &cd);
+- volatile size_t z = strlen(p);
+- }
+- {
+- crypt_data cd;
+- cd.initialized = 0;
+- char *p = crypt_r("abcdef", "$6$", &cd);
+- volatile size_t z = strlen(p);
+- }
+-}
+diff --git a/compiler-rt/test/sanitizer_common/TestCases/Posix/crypt.cpp b/compiler-rt/test/sanitizer_common/TestCases/Posix/crypt.cpp
+deleted file mode 100644
+index 3a8faaa1ae7682..00000000000000
+--- a/compiler-rt/test/sanitizer_common/TestCases/Posix/crypt.cpp
++++ /dev/null
+@@ -1,32 +0,0 @@
+-// RUN: %clangxx -O0 -g %s -o %t -lcrypt && %run %t
+-
+-// crypt() is missing from Android and -lcrypt from darwin.
+-// UNSUPPORTED: android, darwin
+-
+-#include <assert.h>
+-#include <unistd.h>
+-#include <cstring>
+-#if __has_include(<crypt.h>)
+-#include <crypt.h>
+-#endif
+-
+-int
+-main (int argc, char** argv)
+-{
+- {
+- char *p = crypt("abcdef", "xz");
+- volatile size_t z = strlen(p);
+- }
+- {
+- char *p = crypt("abcdef", "$1$");
+- volatile size_t z = strlen(p);
+- }
+- {
+- char *p = crypt("abcdef", "$5$");
+- volatile size_t z = strlen(p);
+- }
+- {
+- char *p = crypt("abcdef", "$6$");
+- volatile size_t z = strlen(p);
+- }
+-}
diff --git a/gnu/packages/patches/clang-16-remove-crypt-interceptors.patch b/gnu/packages/patches/clang-16-remove-crypt-interceptors.patch
new file mode 100644
index 0000000000..bd0717b5fb
--- /dev/null
+++ b/gnu/packages/patches/clang-16-remove-crypt-interceptors.patch
@@ -0,0 +1,222 @@
+From d7bead833631486e337e541e692d9b4a1ca14edd Mon Sep 17 00:00:00 2001
+From: Fangrui Song <i@maskray.me>
+Date: Fri, 28 Apr 2023 09:59:17 -0700
+Subject: [PATCH] [sanitizer] Remove crypt and crypt_r interceptors
+
+From Florian Weimer's D144073
+
+> On GNU/Linux (glibc), the crypt and crypt_r functions are not part of the main shared object (libc.so.6), but libcrypt (with multiple possible sonames). The sanitizer libraries do not depend on libcrypt, so it can happen that during sanitizer library initialization, no real implementation will be found because the crypt, crypt_r functions are not present in the process image (yet). If its interceptors are called nevertheless, this results in a call through a null pointer when the sanitizer library attempts to forward the call to the real implementation.
+>
+> Many distributions have already switched to libxcrypt, a library that is separate from glibc and that can be build with sanitizers directly (avoiding the need for interceptors). This patch disables building the interceptor for glibc targets.
+
+Let's remove crypt and crypt_r interceptors (D68431) to fix issues with
+newer glibc.
+
+For older glibc, msan will not know that an uninstrumented crypt_r call
+initializes `data`, so there is a risk for false positives. However, with some
+codebase survey, I think crypt_r uses are very few and the call sites typically
+have a `memset(&data, 0, sizeof(data));` anyway.
+
+Fix https://github.com/google/sanitizers/issues/1365
+Related: https://bugzilla.redhat.com/show_bug.cgi?id=2169432
+
+Reviewed By: #sanitizers, fweimer, thesamesam, vitalybuka
+
+Differential Revision: https://reviews.llvm.org/D149403
+---
+ .../sanitizer_common_interceptors.inc | 37 -------------------
+ .../sanitizer_platform_interceptors.h | 2 -
+ .../sanitizer_platform_limits_posix.cpp | 8 ----
+ .../sanitizer_platform_limits_posix.h | 1 -
+ .../TestCases/Linux/crypt_r.cpp | 36 ------------------
+ .../TestCases/Posix/crypt.cpp | 32 ----------------
+ 6 files changed, 116 deletions(-)
+ delete mode 100644 compiler-rt/test/sanitizer_common/TestCases/Linux/crypt_r.cpp
+ delete mode 100644 compiler-rt/test/sanitizer_common/TestCases/Posix/crypt.cpp
+
+diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc b/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc
+index b30c91f06cfeb0..490a8b12d8b17d 100644
+--- a/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc
++++ b/compiler-rt/lib/sanitizer_common/sanitizer_common_interceptors.inc
+@@ -10086,41 +10086,6 @@ INTERCEPTOR(SSIZE_T, getrandom, void *buf, SIZE_T buflen, unsigned int flags) {
+ #define INIT_GETRANDOM
+ #endif
+
+-#if SANITIZER_INTERCEPT_CRYPT
+-INTERCEPTOR(char *, crypt, char *key, char *salt) {
+- void *ctx;
+- COMMON_INTERCEPTOR_ENTER(ctx, crypt, key, salt);
+- COMMON_INTERCEPTOR_READ_RANGE(ctx, key, internal_strlen(key) + 1);
+- COMMON_INTERCEPTOR_READ_RANGE(ctx, salt, internal_strlen(salt) + 1);
+- char *res = REAL(crypt)(key, salt);
+- if (res != nullptr)
+- COMMON_INTERCEPTOR_INITIALIZE_RANGE(res, internal_strlen(res) + 1);
+- return res;
+-}
+-#define INIT_CRYPT COMMON_INTERCEPT_FUNCTION(crypt);
+-#else
+-#define INIT_CRYPT
+-#endif
+-
+-#if SANITIZER_INTERCEPT_CRYPT_R
+-INTERCEPTOR(char *, crypt_r, char *key, char *salt, void *data) {
+- void *ctx;
+- COMMON_INTERCEPTOR_ENTER(ctx, crypt_r, key, salt, data);
+- COMMON_INTERCEPTOR_READ_RANGE(ctx, key, internal_strlen(key) + 1);
+- COMMON_INTERCEPTOR_READ_RANGE(ctx, salt, internal_strlen(salt) + 1);
+- char *res = REAL(crypt_r)(key, salt, data);
+- if (res != nullptr) {
+- COMMON_INTERCEPTOR_WRITE_RANGE(ctx, data,
+- __sanitizer::struct_crypt_data_sz);
+- COMMON_INTERCEPTOR_INITIALIZE_RANGE(res, internal_strlen(res) + 1);
+- }
+- return res;
+-}
+-#define INIT_CRYPT_R COMMON_INTERCEPT_FUNCTION(crypt_r);
+-#else
+-#define INIT_CRYPT_R
+-#endif
+-
+ #if SANITIZER_INTERCEPT_GETENTROPY
+ INTERCEPTOR(int, getentropy, void *buf, SIZE_T buflen) {
+ void *ctx;
+@@ -10698,8 +10663,6 @@ static void InitializeCommonInterceptors() {
+ INIT_GETUSERSHELL;
+ INIT_SL_INIT;
+ INIT_GETRANDOM;
+- INIT_CRYPT;
+- INIT_CRYPT_R;
+ INIT_GETENTROPY;
+ INIT_QSORT;
+ INIT_QSORT_R;
+diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h
+index eb39fabfd59839..c82ab5c2105621 100644
+--- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h
++++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h
+@@ -569,8 +569,6 @@
+ #define SANITIZER_INTERCEPT_FDEVNAME SI_FREEBSD
+ #define SANITIZER_INTERCEPT_GETUSERSHELL (SI_POSIX && !SI_ANDROID)
+ #define SANITIZER_INTERCEPT_SL_INIT (SI_FREEBSD || SI_NETBSD)
+-#define SANITIZER_INTERCEPT_CRYPT (SI_POSIX && !SI_ANDROID)
+-#define SANITIZER_INTERCEPT_CRYPT_R (SI_LINUX && !SI_ANDROID)
+
+ #define SANITIZER_INTERCEPT_GETRANDOM \
+ ((SI_LINUX && __GLIBC_PREREQ(2, 25)) || SI_FREEBSD)
+diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp
+index a04eed7aa5a6e3..6d61d276d77e35 100644
+--- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp
++++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp
+@@ -177,10 +177,6 @@ typedef struct user_fpregs elf_fpregset_t;
+ # include "sanitizer_platform_interceptors.h"
+ # include "sanitizer_platform_limits_posix.h"
+
+-#if SANITIZER_INTERCEPT_CRYPT_R
+-#include <crypt.h>
+-#endif
+-
+ namespace __sanitizer {
+ unsigned struct_utsname_sz = sizeof(struct utsname);
+ unsigned struct_stat_sz = sizeof(struct stat);
+@@ -300,10 +296,6 @@ namespace __sanitizer {
+ unsigned struct_statvfs64_sz = sizeof(struct statvfs64);
+ #endif // SANITIZER_GLIBC
+
+-#if SANITIZER_INTERCEPT_CRYPT_R
+- unsigned struct_crypt_data_sz = sizeof(struct crypt_data);
+-#endif
+-
+ #if SANITIZER_LINUX && !SANITIZER_ANDROID
+ unsigned struct_timex_sz = sizeof(struct timex);
+ unsigned struct_msqid_ds_sz = sizeof(struct msqid_ds);
+diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
+index e6f298c26e1fb6..58244c9944a03a 100644
+--- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
++++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
+@@ -309,7 +309,6 @@ extern unsigned struct_msqid_ds_sz;
+ extern unsigned struct_mq_attr_sz;
+ extern unsigned struct_timex_sz;
+ extern unsigned struct_statvfs_sz;
+-extern unsigned struct_crypt_data_sz;
+ #endif // SANITIZER_LINUX && !SANITIZER_ANDROID
+
+ struct __sanitizer_iovec {
+diff --git a/compiler-rt/test/sanitizer_common/TestCases/Linux/crypt_r.cpp b/compiler-rt/test/sanitizer_common/TestCases/Linux/crypt_r.cpp
+deleted file mode 100644
+index 69bfb46aa5f171..00000000000000
+--- a/compiler-rt/test/sanitizer_common/TestCases/Linux/crypt_r.cpp
++++ /dev/null
+@@ -1,36 +0,0 @@
+-// RUN: %clangxx -O0 -g %s -lcrypt -o %t && %run %t
+-
+-// crypt.h is missing from Android.
+-// UNSUPPORTED: android
+-
+-#include <assert.h>
+-#include <unistd.h>
+-#include <cstring>
+-#include <crypt.h>
+-
+-int main(int argc, char **argv) {
+- {
+- crypt_data cd;
+- cd.initialized = 0;
+- char *p = crypt_r("abcdef", "xz", &cd);
+- volatile size_t z = strlen(p);
+- }
+- {
+- crypt_data cd;
+- cd.initialized = 0;
+- char *p = crypt_r("abcdef", "$1$", &cd);
+- volatile size_t z = strlen(p);
+- }
+- {
+- crypt_data cd;
+- cd.initialized = 0;
+- char *p = crypt_r("abcdef", "$5$", &cd);
+- volatile size_t z = strlen(p);
+- }
+- {
+- crypt_data cd;
+- cd.initialized = 0;
+- char *p = crypt_r("abcdef", "$6$", &cd);
+- volatile size_t z = strlen(p);
+- }
+-}
+diff --git a/compiler-rt/test/sanitizer_common/TestCases/Posix/crypt.cpp b/compiler-rt/test/sanitizer_common/TestCases/Posix/crypt.cpp
+deleted file mode 100644
+index 3a8faaa1ae7682..00000000000000
+--- a/compiler-rt/test/sanitizer_common/TestCases/Posix/crypt.cpp
++++ /dev/null
+@@ -1,32 +0,0 @@
+-// RUN: %clangxx -O0 -g %s -o %t -lcrypt && %run %t
+-
+-// crypt() is missing from Android and -lcrypt from darwin.
+-// UNSUPPORTED: android, darwin
+-
+-#include <assert.h>
+-#include <unistd.h>
+-#include <cstring>
+-#if __has_include(<crypt.h>)
+-#include <crypt.h>
+-#endif
+-
+-int
+-main (int argc, char** argv)
+-{
+- {
+- char *p = crypt("abcdef", "xz");
+- volatile size_t z = strlen(p);
+- }
+- {
+- char *p = crypt("abcdef", "$1$");
+- volatile size_t z = strlen(p);
+- }
+- {
+- char *p = crypt("abcdef", "$5$");
+- volatile size_t z = strlen(p);
+- }
+- {
+- char *p = crypt("abcdef", "$6$");
+- volatile size_t z = strlen(p);
+- }
+-}
diff --git a/gnu/packages/patches/clang-runtime-13-glibc-2.36-compat.patch b/gnu/packages/patches/clang-runtime-13-glibc-2.36-compat.patch
new file mode 100644
index 0000000000..e457713d16
--- /dev/null
+++ b/gnu/packages/patches/clang-runtime-13-glibc-2.36-compat.patch
@@ -0,0 +1,50 @@
+This commit is from upstream and is included in the llvm-15 release
+
+commit b379129c4beb3f26223288627a1291739f33af02
+Author: Fangrui Song <i@maskray.me>
+Date: Mon Jul 11 11:38:28 2022 -0700
+
+ [sanitizer] Remove #include <linux/fs.h> to resolve fsconfig_command/mount_attr conflict with glibc 2.36
+
+ It is generally not a good idea to mix usage of glibc headers and Linux UAPI
+ headers (https://sourceware.org/glibc/wiki/Synchronizing_Headers). In glibc
+ since 7eae6a91e9b1670330c9f15730082c91c0b1d570 (milestone: 2.36), sys/mount.h
+ defines `fsconfig_command` which conflicts with linux/mount.h:
+
+ .../usr/include/linux/mount.h:95:6: error: redeclaration of ‘enum fsconfig_command’
+
+ Remove #include <linux/fs.h> which pulls in linux/mount.h. Expand its 4 macros manually.
+
+ Fix https://github.com/llvm/llvm-project/issues/56421
+
+ Reviewed By: #sanitizers, vitalybuka, zatrazz
+
+ Differential Revision: https://reviews.llvm.org/D129471
+
+diff --git a/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp b/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp
+index 4bd425435d56..81740bf4ab39 100644
+--- a/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp
++++ b/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp
+@@ -73,7 +73,6 @@
+ #include <sys/vt.h>
+ #include <linux/cdrom.h>
+ #include <linux/fd.h>
+-#include <linux/fs.h>
+ #include <linux/hdreg.h>
+ #include <linux/input.h>
+ #include <linux/ioctl.h>
+@@ -876,10 +875,10 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);
+ unsigned IOCTL_EVIOCGPROP = IOCTL_NOT_PRESENT;
+ unsigned IOCTL_EVIOCSKEYCODE_V2 = IOCTL_NOT_PRESENT;
+ #endif
+- unsigned IOCTL_FS_IOC_GETFLAGS = FS_IOC_GETFLAGS;
+- unsigned IOCTL_FS_IOC_GETVERSION = FS_IOC_GETVERSION;
+- unsigned IOCTL_FS_IOC_SETFLAGS = FS_IOC_SETFLAGS;
+- unsigned IOCTL_FS_IOC_SETVERSION = FS_IOC_SETVERSION;
++ unsigned IOCTL_FS_IOC_GETFLAGS = _IOR('f', 1, long);
++ unsigned IOCTL_FS_IOC_GETVERSION = _IOR('v', 1, long);
++ unsigned IOCTL_FS_IOC_SETFLAGS = _IOW('f', 2, long);
++ unsigned IOCTL_FS_IOC_SETVERSION = _IOW('v', 2, long);
+ unsigned IOCTL_GIO_CMAP = GIO_CMAP;
+ unsigned IOCTL_GIO_FONT = GIO_FONT;
+ unsigned IOCTL_GIO_UNIMAP = GIO_UNIMAP;
diff --git a/gnu/packages/patches/clang-runtime-14-glibc-2.36-compat.patch b/gnu/packages/patches/clang-runtime-14-glibc-2.36-compat.patch
new file mode 100644
index 0000000000..79b36f1383
--- /dev/null
+++ b/gnu/packages/patches/clang-runtime-14-glibc-2.36-compat.patch
@@ -0,0 +1,50 @@
+This commit is from upstream and is included in the llvm-15 release
+
+commit b379129c4beb3f26223288627a1291739f33af02
+Author: Fangrui Song <i@maskray.me>
+Date: Mon Jul 11 11:38:28 2022 -0700
+
+ [sanitizer] Remove #include <linux/fs.h> to resolve fsconfig_command/mount_attr conflict with glibc 2.36
+
+ It is generally not a good idea to mix usage of glibc headers and Linux UAPI
+ headers (https://sourceware.org/glibc/wiki/Synchronizing_Headers). In glibc
+ since 7eae6a91e9b1670330c9f15730082c91c0b1d570 (milestone: 2.36), sys/mount.h
+ defines `fsconfig_command` which conflicts with linux/mount.h:
+
+ .../usr/include/linux/mount.h:95:6: error: redeclaration of ‘enum fsconfig_command’
+
+ Remove #include <linux/fs.h> which pulls in linux/mount.h. Expand its 4 macros manually.
+
+ Fix https://github.com/llvm/llvm-project/issues/56421
+
+ Reviewed By: #sanitizers, vitalybuka, zatrazz
+
+ Differential Revision: https://reviews.llvm.org/D129471
+
+diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp
+index 4bd425435d56..81740bf4ab39 100644
+--- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp
++++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cpp
+@@ -73,7 +73,6 @@
+ #include <sys/vt.h>
+ #include <linux/cdrom.h>
+ #include <linux/fd.h>
+-#include <linux/fs.h>
+ #include <linux/hdreg.h>
+ #include <linux/input.h>
+ #include <linux/ioctl.h>
+@@ -876,10 +875,10 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);
+ unsigned IOCTL_EVIOCGPROP = IOCTL_NOT_PRESENT;
+ unsigned IOCTL_EVIOCSKEYCODE_V2 = IOCTL_NOT_PRESENT;
+ #endif
+- unsigned IOCTL_FS_IOC_GETFLAGS = FS_IOC_GETFLAGS;
+- unsigned IOCTL_FS_IOC_GETVERSION = FS_IOC_GETVERSION;
+- unsigned IOCTL_FS_IOC_SETFLAGS = FS_IOC_SETFLAGS;
+- unsigned IOCTL_FS_IOC_SETVERSION = FS_IOC_SETVERSION;
++ unsigned IOCTL_FS_IOC_GETFLAGS = _IOR('f', 1, long);
++ unsigned IOCTL_FS_IOC_GETVERSION = _IOR('v', 1, long);
++ unsigned IOCTL_FS_IOC_SETFLAGS = _IOW('f', 2, long);
++ unsigned IOCTL_FS_IOC_SETVERSION = _IOW('v', 2, long);
+ unsigned IOCTL_GIO_CMAP = GIO_CMAP;
+ unsigned IOCTL_GIO_FONT = GIO_FONT;
+ unsigned IOCTL_GIO_UNIMAP = GIO_UNIMAP;
diff --git a/gnu/packages/patches/clang-runtime-9-glibc-2.36-compat.patch b/gnu/packages/patches/clang-runtime-9-glibc-2.36-compat.patch
new file mode 100644
index 0000000000..9d0ab94222
--- /dev/null
+++ b/gnu/packages/patches/clang-runtime-9-glibc-2.36-compat.patch
@@ -0,0 +1,50 @@
+This commit is from upstream and is included in the llvm-15 release
+
+commit b379129c4beb3f26223288627a1291739f33af02
+Author: Fangrui Song <i@maskray.me>
+Date: Mon Jul 11 11:38:28 2022 -0700
+
+ [sanitizer] Remove #include <linux/fs.h> to resolve fsconfig_command/mount_attr conflict with glibc 2.36
+
+ It is generally not a good idea to mix usage of glibc headers and Linux UAPI
+ headers (https://sourceware.org/glibc/wiki/Synchronizing_Headers). In glibc
+ since 7eae6a91e9b1670330c9f15730082c91c0b1d570 (milestone: 2.36), sys/mount.h
+ defines `fsconfig_command` which conflicts with linux/mount.h:
+
+ .../usr/include/linux/mount.h:95:6: error: redeclaration of ‘enum fsconfig_command’
+
+ Remove #include <linux/fs.h> which pulls in linux/mount.h. Expand its 4 macros manually.
+
+ Fix https://github.com/llvm/llvm-project/issues/56421
+
+ Reviewed By: #sanitizers, vitalybuka, zatrazz
+
+ Differential Revision: https://reviews.llvm.org/D129471
+
+diff --git a/lib/sanitizer_common/sanitizer_platform_limits_posix.cc b/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
+index 4bd425435d56..81740bf4ab39 100644
+--- a/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
++++ b/lib/sanitizer_common/sanitizer_platform_limits_posix.cc
+@@ -73,7 +73,6 @@
+ #include <sys/vt.h>
+ #include <linux/cdrom.h>
+ #include <linux/fd.h>
+-#include <linux/fs.h>
+ #include <linux/hdreg.h>
+ #include <linux/input.h>
+ #include <linux/ioctl.h>
+@@ -876,10 +875,10 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);
+ unsigned IOCTL_EVIOCGPROP = IOCTL_NOT_PRESENT;
+ unsigned IOCTL_EVIOCSKEYCODE_V2 = IOCTL_NOT_PRESENT;
+ #endif
+- unsigned IOCTL_FS_IOC_GETFLAGS = FS_IOC_GETFLAGS;
+- unsigned IOCTL_FS_IOC_GETVERSION = FS_IOC_GETVERSION;
+- unsigned IOCTL_FS_IOC_SETFLAGS = FS_IOC_SETFLAGS;
+- unsigned IOCTL_FS_IOC_SETVERSION = FS_IOC_SETVERSION;
++ unsigned IOCTL_FS_IOC_GETFLAGS = _IOR('f', 1, long);
++ unsigned IOCTL_FS_IOC_GETVERSION = _IOR('v', 1, long);
++ unsigned IOCTL_FS_IOC_SETFLAGS = _IOW('f', 2, long);
++ unsigned IOCTL_FS_IOC_SETVERSION = _IOW('v', 2, long);
+ unsigned IOCTL_GIO_CMAP = GIO_CMAP;
+ unsigned IOCTL_GIO_FONT = GIO_FONT;
+ unsigned IOCTL_GIO_UNIMAP = GIO_UNIMAP;
diff --git a/gnu/packages/patches/date-ignore-zonenow.patch b/gnu/packages/patches/date-ignore-zonenow.patch
new file mode 100644
index 0000000000..7243eef80b
--- /dev/null
+++ b/gnu/packages/patches/date-ignore-zonenow.patch
@@ -0,0 +1,13 @@
+Ignore the new zonenow.tab file introduced in tzdata 2023d.
+
+diff -u a/src/tz.cpp b/src/tz.cpp
+--- a/src/tz.cpp 2024-03-08 11:14:14.822488065 +0100
++++ b/src/tz.cpp 2024-03-08 11:47:12.105268426 +0100
+@@ -2667,6 +2667,7 @@
+ strcmp(d->d_name, "right") == 0 ||
+ strcmp(d->d_name, "+VERSION") == 0 ||
+ strcmp(d->d_name, "zone.tab") == 0 ||
++ strcmp(d->d_name, "zonenow.tab") == 0 ||
+ strcmp(d->d_name, "zone1970.tab") == 0 ||
+ strcmp(d->d_name, "tzdata.zi") == 0 ||
+ strcmp(d->d_name, "leapseconds") == 0 ||
diff --git a/gnu/packages/patches/dblatex-inkscape-1.0.patch b/gnu/packages/patches/dblatex-inkscape-1.0.patch
new file mode 100644
index 0000000000..634c99481a
--- /dev/null
+++ b/gnu/packages/patches/dblatex-inkscape-1.0.patch
@@ -0,0 +1,39 @@
+# Imported from <https://sourceforge.net/p/dblatex/dblatex/merge-requests/4/>
+
+# HG changeset patch
+# User Jan Tojnar <jtojnar@gmail.com>
+# Date 1588714251 -7200
+# Tue May 05 23:30:51 2020 +0200
+# Branch inkscape1
+# Node ID 611cc4a4a878d57f5877f2d418864560f68d25cf
+# Parent 3ddf5d6cedcbc9c8b98c4da77fd545b2478d90a3
+Port to Inkscape 1.0
+
+Inkscape revamped the CLI flags:
+
+https://gitlab.com/inkscape/inbox/issues/2416
+
+diff -r 3ddf5d6cedcb -r 611cc4a4a878 docs/custom/dblatex.xconf
+--- a/docs/custom/dblatex.xconf Tue Sep 10 00:40:26 2019 +0200
++++ b/docs/custom/dblatex.xconf Tue May 05 23:30:51 2020 +0200
+@@ -18,7 +18,7 @@
+ <imagedata>
+ <converter src="svg" dst="*" docformat="pdf">
+ <command>
+- inkscape -z -D --export-dpi=600 --export-%(dst)s=%(output)s %(input)s
++ inkscape -D --export-dpi=600 --export-type=%(dst)s --export-filename=%(output)s %(input)s
+ </command>
+ </converter>
+ </imagedata>
+diff -r 3ddf5d6cedcb -r 611cc4a4a878 lib/dbtexmf/core/imagedata.py
+--- a/lib/dbtexmf/core/imagedata.py Tue Sep 10 00:40:26 2019 +0200
++++ b/lib/dbtexmf/core/imagedata.py Tue May 05 23:30:51 2020 +0200
+@@ -178,7 +178,7 @@
+ class SvgConverter(ImageConverter):
+ def __init__(self, imgsrc, imgdst="", docformat="", backend=""):
+ ImageConverter.__init__(self, imgsrc="svg", imgdst=imgdst)
+- self.add_command(["inkscape", "-z", "-D", "--export-%(dst)s=%(output)s",
++ self.add_command(["inkscape", "-D", "--export-type=%(dst)s", "--export-filename=%(output)s",
+ "%(input)s"])
+
+
diff --git a/gnu/packages/patches/diffutils-fix-signal-processing.patch b/gnu/packages/patches/diffutils-fix-signal-processing.patch
deleted file mode 100644
index 134dd3f718..0000000000
--- a/gnu/packages/patches/diffutils-fix-signal-processing.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-Author: Frédéric Bonnard <frediz@debian.org>
-
-Obtained from:
-
-https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=922552#19
-
-Fixes bug reported upstream at:
-
-https://debbugs.gnu.org/cgi/bugreport.cgi?bug=34519
-
-diff --git a/src/diff.c b/src/diff.c
-index e2eb32437353..b574e8282dc9 100644
---- a/src/diff.c
-+++ b/src/diff.c
-@@ -1451,6 +1451,8 @@ compare_files (struct comparison const *parent,
- }
- }
-
-+ final_process_signals ();
-+
- /* Now the comparison has been done, if no error prevented it,
- and STATUS is the value this function will return. */
-
-diff --git a/src/diff.h b/src/diff.h
-index 03daaa4a0530..e177fe600a25 100644
---- a/src/diff.h
-+++ b/src/diff.h
-@@ -390,6 +390,7 @@ extern enum changes analyze_hunk (struct change *, lin *, lin *, lin *, lin *);
- extern void begin_output (void);
- extern void debug_script (struct change *);
- extern void fatal (char const *) __attribute__((noreturn));
-+extern void final_process_signals (void);
- extern void finish_output (void);
- extern void message (char const *, char const *, char const *);
- extern void message5 (char const *, char const *, char const *,
-diff --git a/src/util.c b/src/util.c
-index 4f4d9bb285eb..56d292de2927 100644
---- a/src/util.c
-+++ b/src/util.c
-@@ -237,6 +237,18 @@ process_signals (void)
- }
- }
-
-+/* Process remaining signals once before exit */
-+void
-+final_process_signals (void)
-+{
-+ static int last = 1;
-+
-+ if (last) {
-+ process_signals ();
-+ last = 0;
-+ }
-+}
-+
- static void
- install_signal_handlers (void)
- {
diff --git a/gnu/packages/patches/docbook-utils-documentation-edits.patch b/gnu/packages/patches/docbook-utils-documentation-edits.patch
new file mode 100644
index 0000000000..7258d12675
--- /dev/null
+++ b/gnu/packages/patches/docbook-utils-documentation-edits.patch
@@ -0,0 +1,102 @@
+# Source: <https://sources.debian.org/patches/docbook-utils/0.6.14-4/spellingtypo.patch/>
+
+Description: Fix some typos in man pages
+Author: Mathieu Malaterre <malat@debian.org>
+
+Index: docbook-utils-0.6.14/doc/man/docbook2man-spec.pl.1
+===================================================================
+--- docbook-utils-0.6.14.orig/doc/man/docbook2man-spec.pl.1 2012-05-09 18:39:17.932819095 +0200
++++ docbook-utils-0.6.14/doc/man/docbook2man-spec.pl.1 2012-05-09 18:39:24.780818845 +0200
+@@ -17,7 +17,7 @@
+ .SH "DESCRIPTION"
+ .PP
+ \fBdocbook2man\fR is a sgmlspl spec file that produced man
+-pages (using the -man macros) from DocBook RefEntry markup.
++pages (using the \-man macros) from DocBook RefEntry markup.
+ .PP
+ The program reads ESIS produced by nsgmls (or other SGML parsers) from
+ standard input. Markup not found in RefEntry is discarded.
+Index: docbook-utils-0.6.14/doc/man/frontend-spec.7
+===================================================================
+--- docbook-utils-0.6.14.orig/doc/man/frontend-spec.7 2012-05-09 18:41:45.172813778 +0200
++++ docbook-utils-0.6.14/doc/man/frontend-spec.7 2012-05-09 18:42:03.176813129 +0200
+@@ -10,7 +10,7 @@
+ .SH "DESCRIPTION"
+ .PP
+ \fBjw\fR(1) calls frontends like
+-\fIfrontends/docbook\fR to get the informations
++\fIfrontends/docbook\fR to get the information
+ specific to a given input format. The frontend knows which information
+ to return from the first command line parameter. It gets all necessary
+ data via environment variables ready to use.
+Index: docbook-utils-0.6.14/doc/man/jw.1
+===================================================================
+--- docbook-utils-0.6.14.orig/doc/man/jw.1 2012-05-09 18:39:35.612818456 +0200
++++ docbook-utils-0.6.14/doc/man/jw.1 2012-05-09 18:40:51.736815708 +0200
+@@ -142,7 +142,7 @@
+ The following options apply to the conversion script:
+ .TP
+ \fB -f \fIfrontend\fB | --frontend \fIfrontend\fB \fR
+-Allows to specify another frontend than default \fIdocbook\fR\&.
++Allows one to specify another frontend than default \fIdocbook\fR\&.
+ The list of currently available frontends is:
+ .RS
+ .TP
+@@ -156,13 +156,13 @@
+ .RE
+ .TP
+ \fB -b \fIbackend\fB | --backend \fIbackend\fB \fR
+-Allows to specify another backend than default
++Allows one to specify another backend than default
+ \fIHTML\fR\&. The list of currently available
+ backends is:
+ .RS
+ .TP
+ \fB\fIdvi\fB\fR
+-Converts to DVI (DeVice Independant
++Converts to DVI (DeVice Independent
+ files) by calling \fBJade\fR or
+ \fBOpenJade\fR\&.
+ .TP
+@@ -210,7 +210,7 @@
+ .RE
+ .TP
+ \fB -c \fIfile\fB | --cat \fIfile\fB \fR
+-Allows to use an extra SGML Open Catalog that will list
++Allows one to use an extra SGML Open Catalog that will list
+ other files like customization style sheets, adaptations to the
+ DocBook Document Type Definition, special character entities,
+ etc. This catalog is added to the list of catalogs determined
+@@ -241,7 +241,7 @@
+ are specified on the command line.
+ .TP
+ \fB -d \fIfile\fB|default|none | --dsl \fIfile\fB|default|none \fR
+-Allows to use a customized style sheet instead
++Allows one to use a customized style sheet instead
+ of the default one.
+
+ A "target" starting with a hash mark "#" can be appended
+Index: docbook-utils-0.6.14/doc/man/sgmldiff.1
+===================================================================
+--- docbook-utils-0.6.14.orig/doc/man/sgmldiff.1 2012-05-09 18:41:13.316814927 +0200
++++ docbook-utils-0.6.14/doc/man/sgmldiff.1 2012-05-09 18:41:38.032814038 +0200
+@@ -17,7 +17,7 @@
+
+ .SH "DESCRIPTION"
+ .PP
+-This perl script allows to determine the structural differences
++This perl script allows one to determine the structural differences
+ between two SGML files. It compares the files, regardless of what
+ is in between the tags, to only focus on the markup. Its output
+ is similar to \fBdiff\fR(1)\&.
+@@ -62,8 +62,8 @@
+ Lines 5 to 7 of the first file have been changed
+ into lines 8 to 10 of the second line.
+ In addition to those summaries, the lines of the first file are
+-shown preceeded by '<' and the lines of the second file are
+-shown preceeded by '>".
++shown preceded by '<' and the lines of the second file are
++shown preceded by '>".
+ .SH "OPTIONS"
+ .PP
+ Here is the list of actions that can be requested to
diff --git a/gnu/packages/patches/docbook-utils-escape-characters.patch b/gnu/packages/patches/docbook-utils-escape-characters.patch
new file mode 100644
index 0000000000..3845ee6238
--- /dev/null
+++ b/gnu/packages/patches/docbook-utils-escape-characters.patch
@@ -0,0 +1,36 @@
+# Source: <https://sources.debian.org/patches/docbook-utils/0.6.14-4/bug_528334.patch/>
+
+Description: incorrectly strips whitespace (patch included)
+ In the previous upload, docbook2man was patched to escape the special
+ characters . and ' at the beginning of a line (see #399947).
+ Unfortunately that patch was incorrect -- as well as escaping the special
+ characters, it also removes all whitespace from the beginning of
+ affected lines. As a result, if you are in a block where whitespace
+ matters (such as <screen>...</screen>) then the output is now incorrect.
+
+ This is very easy to fix -- just match the whitespace and preserve it,
+ instead of tossing it away. The full patch (just two lines) is included
+ below.
+Author: Ben Burton <bab@debian.org>
+Forwarded: not-needed
+Bug-Debian: http://bugs.debian.org/528334
+
+Edit by Bruno Victal <mirai@makinata.eu>:
+ Patch was edited so that it could be applied against the original
+ docbook-utils-0.6.14 sources.
+
+Index: docbook-utils-0.6.14/helpers/docbook2man-spec.pl
+===================================================================
+--- docbook-utils-0.6.14.orig/helpers/docbook2man-spec.pl 2012-05-09 18:59:42.584774885 +0200
++++ docbook-utils-0.6.14/helpers/docbook2man-spec.pl 2012-05-09 19:00:34.788773002 +0200
+@@ -1212,8 +1212,8 @@
+ $_[0] =~ s/\\/\\\\/g;
+
+ # Escape dots and single quotes in column 1
+- $_[0] =~ s/^\./\\\&\./;
+- $_[0] =~ s/^\'/\\\&\'/;
++ $_[0] =~ s/^([ \t]*)\./$1\\\&\./;
++ $_[0] =~ s/^([ \t]*)\'/$1\\\&\'/;
+
+ # In non-'pre'-type elements:
+ if(!$nocollapse_whitespace) {
diff --git a/gnu/packages/patches/docbook-utils-remove-jade-sp.patch b/gnu/packages/patches/docbook-utils-remove-jade-sp.patch
new file mode 100644
index 0000000000..99751b4de3
--- /dev/null
+++ b/gnu/packages/patches/docbook-utils-remove-jade-sp.patch
@@ -0,0 +1,216 @@
+# Source: <https://sources.debian.org/patches/docbook-utils/0.6.14-4/remove-jade-sp.patch/>
+Description: Change dependencies on jade and sp to openjade and opensp
+Author: Neil Roeth <neil@debian.org>
+Last-Update: 2016-07-24
+
+Edit by Bruno Victal <mirai@makinata.eu>:
+ Patch was edited so that it could be applied against the original
+ docbook-utils-0.6.14 sources.
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+--- a/doc/HTML/Makefile.am
++++ b/doc/HTML/Makefile.am
+@@ -1,4 +1,4 @@
+-htmldir = $(docdir)/html/docbook-utils-@VERSION@
++htmldir = $(docdir)/html
+ html_DATA = api.html \
+ backend-spec.html \
+ docbook2man.html \
+@@ -25,6 +25,6 @@
+ $(top_srcdir)/doc/refentry/sgmldiff.sgml
+ SGML_CATALOG_FILES=/etc/sgml/catalog \
+ SGML_SEARCH_PATH=$(top_srcdir):$(top_srcdir)/doc:.. \
+- jade -t sgml -i html -d $(top_srcdir)/docbook-utils.dsl\#html \
++ openjade -t sgml -i html -d $(top_srcdir)/docbook-utils.dsl\#html \
+ -V '%use-id-as-filename%' $<
+
+--- a/doc/man/Makefile.am
++++ b/doc/man/Makefile.am
+@@ -12,5 +12,5 @@
+ $(top_srcdir)/helpers/docbook2man-spec.pl
+ SGML_CATALOG_FILES=/etc/sgml/catalog \
+ SGML_SEARCH_PATH=$(top_srcdir)/doc:.. \
+- nsgmls $< | \
++ onsgmls $< | \
+ sgmlspl $(top_srcdir)/helpers/docbook2man-spec.pl
+--- a/backends/man.in
++++ b/backends/man.in
+@@ -7,8 +7,8 @@
+ TMPDIR=`mktemp -d /tmp/man.XXXXXX` || \
+ { echo >&2 "man backend: could not create secure temporary directory"; exit 1;}
+ trap 'rm -rf "${TMPDIR}"' EXIT
+-nsgmls $SGML_FILE > "${TMPDIR}/nsgmls.tmp"
+-sgmlspl $HELPER <"${TMPDIR}/nsgmls.tmp" 2>"${TMPDIR}/errs"
++onsgmls $SGML_FILE > "${TMPDIR}/onsgmls.tmp"
++sgmlspl $HELPER <"${TMPDIR}/onsgmls.tmp" 2>"${TMPDIR}/errs"
+ if [ $? -ne 0 ]
+ then
+ cat "${TMPDIR}/errs"
+@@ -18,7 +18,7 @@
+ if grep unresolved "${TMPDIR}/errs" >/dev/null 2>&1
+ then
+ echo "Resolving references.."
+- sgmlspl $HELPER <"${TMPDIR}/nsgmls.tmp"
++ sgmlspl $HELPER <"${TMPDIR}/onsgmls.tmp"
+ if [ $? -ne 0 ]
+ then exit 1
+ fi
+--- a/backends/texi.in
++++ b/backends/texi.in
+@@ -3,7 +3,7 @@
+ # This program is under GPL license. See LICENSE file for details.
+
+ # Convert to texinfo
+-nsgmls $SGML_FILE | sgmlspl $SGML_BASE_DIR/docbook/utils-@VERSION@/helpers/docbook2texi-spec.pl >$SGML_FILE_NAME.texi
++onsgmls $SGML_FILE | sgmlspl docbook2texi-spec.pl >$SGML_FILE_NAME.texi
+ if [ $? -ne 0 ]
+ then exit 1
+ fi
+--- a/bin/sgmldiff.in
++++ b/bin/sgmldiff.in
+@@ -22,13 +22,13 @@
+
+ use strict;
+ use integer;
+-use vars qw($nsgmls $errors $errorlog $VERSION);
++use vars qw($onsgmls $errors $errorlog $VERSION);
+ use Getopt::Long 2.01;
+
+ $VERSION = 1.03;
+
+-my $nsgmls;
+-$nsgmls = "@jade_bindir@/nsgmls";
++my $onsgmls;
++$onsgmls = "@jade_bindir@/onsgmls";
+
+ #----------------------------------------------------------------------
+ # TODO:
+@@ -37,7 +37,7 @@
+ # - Wait for suggestions ;-)
+ #
+ # Note: the input file need not be valid, nor is it necessary to have
+-# the DTDs. nsgmls always returns a structure.
++# the DTDs. onsgmls always returns a structure.
+ #----------------------------------------------------------------------
+
+ # Get file name
+@@ -141,11 +141,11 @@
+ unlink $diff2;
+
+ #---------------------------------------------------------------------
+-# Process nsgmls output: keep all stuff that is important for the
++# Process onsgmls output: keep all stuff that is important for the
+ # structure comparison. Make two structures: one that is diffed
+ # (without text) (DIFF) and one that is used to present the
+ # differences to the user (@full). For more info: see SP
+-# documentation, nsgmls output format.
++# documentation, onsgmls output format.
+
+ sub prepare {
+ my($filename,$todiffname) = @_;
+@@ -161,7 +161,7 @@
+ my @line_numbered = ();
+ my $line = 0;
+
+- open(ESIS, "$nsgmls -l $errors $errorlog -onotation-sysid -oid -oempty $filename | "); #-oentity generates strange output; ? -ononsgml
++ open(ESIS, "$onsgmls -l $errors $errorlog -onotation-sysid -oid -oempty $filename | "); #-oentity generates strange output; ? -ononsgml
+ open(DIFF, "> $todiffname");
+ while (<ESIS>) {
+ chomp $_;
+@@ -375,7 +375,7 @@
+ };
+
+ #----------------------------------------------------------------------
+-# Normalise data text from nsgmls (i.e. don't print the escaped text).
++# Normalise data text from onsgmls (i.e. don't print the escaped text).
+ sub normalise_text {
+ my($string,$prefix) = @_;
+ my $result = "$prefix";
+--- a/configure.in
++++ b/configure.in
+@@ -21,7 +21,7 @@
+
+ dnl Checks for programs.
+ jade_bindirs="/usr/bin /usr/local/bin"
+-AC_FIND_PROGRAM(nsgmls, $jade_bindirs, jade_bindir)
++AC_FIND_PROGRAM(onsgmls, $jade_bindirs, jade_bindir)
+ AC_SUBST(jade_bindir)
+
+ perl_bindirs="/usr/bin /usr/local/bin"
+--- a/doc/refentry/docbook2man-spec.pl.sgml
++++ b/doc/refentry/docbook2man-spec.pl.sgml
+@@ -19,7 +19,7 @@
+ <!-- docbook2man-spec.pl BREAKAGE HERE! -->
+
+ <CmdSynopsis>
+-<Command>nsgmls</command>
++<Command>onsgmls</command>
+ <Arg><Replaceable>sgml document</replaceable></Arg>
+ <Command>| sgmlspl</command>
+ <Arg choice=req>docbook2man-spec.pl</arg>
+@@ -35,7 +35,7 @@
+ </Para>
+
+ <Para>
+-The program reads ESIS produced by nsgmls (or other SGML parsers) from
++The program reads ESIS produced by onsgmls (or other SGML parsers) from
+ standard input. Markup not found in RefEntry is discarded.
+ </Para>
+
+--- a/doc/refentry/docbook2texi-spec.pl.sgml
++++ b/doc/refentry/docbook2texi-spec.pl.sgml
+@@ -20,7 +20,7 @@
+ <!-- docbook2man-spec.pl BREAKAGE HERE! -->
+
+ <CmdSynopsis>
+-<Command>nsgmls</command>
++<Command>onsgmls</command>
+ <Arg><Replaceable>sgml document</replaceable></Arg>
+ <Command>| sgmlspl</command>
+ <Arg choice=req>docbook2texi-spec.pl</arg>
+@@ -37,7 +37,7 @@
+ </Para>
+
+ <Para>
+-The program reads ESIS produced by nsgmls (or other SGML parsers) from
++The program reads ESIS produced by onsgmls (or other SGML parsers) from
+ standard input. Currently the document element must be <SGMLTag>Book</sgmltag>,
+ otherwise the results are undefined.
+ </Para>
+--- a/doc/refentry/jw.sgml
++++ b/doc/refentry/jw.sgml
+@@ -630,7 +630,7 @@
+ <manvolnum>1</manvolnum></citerefentry>,
+ <citerefentry><refentrytitle>install-catalog</refentrytitle>
+ <manvolnum>8</manvolnum></citerefentry>,
+- <citerefentry><refentrytitle>nsgmls</refentrytitle>
++ <citerefentry><refentrytitle>onsgmls</refentrytitle>
+ <manvolnum>1</manvolnum></citerefentry>, <ulink
+ url="http://sources.redhat.com/docbook-tools/">docbook-utils
+ homepage</ulink>.</para>
+--- a/doc/refentry/sgmldiff.sgml
++++ b/doc/refentry/sgmldiff.sgml
+@@ -238,10 +238,10 @@
+ <glossterm>
+ <!-- Next line is a hack to force a paragraph break in the man-page. -->
+ <cmdsynopsis> <command></command> </cmdsynopsis>
+- <citerefentry> <refentrytitle>nsgmls</refentrytitle> <manvolnum>1</manvolnum> </citerefentry>
++ <citerefentry> <refentrytitle>onsgmls</refentrytitle> <manvolnum>1</manvolnum> </citerefentry>
+ </glossterm>
+ <glossdef>
+- <para>a base component of <application>Jade</application> DSSSL engine</para>
++ <para>a base component of <application>OpenJade</application> DSSSL engine</para>
+ </glossdef>
+ </glossentry>
+
+--- a/helpers/docbook2man-spec.pl
++++ b/helpers/docbook2man-spec.pl
+@@ -7,7 +7,7 @@
+ The SGMLSpm package from CPAN. This contains the sgmlspl script which
+ is used to grok this file. Use it like this:
+
+-nsgmls some-docbook-document.sgml | sgmlspl docbook2man-spec.pl
++onsgmls some-docbook-document.sgml | sgmlspl docbook2man-spec.pl
+
+ =head1 DESCRIPTION
+
diff --git a/gnu/packages/patches/docbook-utils-respect-refentry-for-name.patch b/gnu/packages/patches/docbook-utils-respect-refentry-for-name.patch
new file mode 100644
index 0000000000..1b8ce7a0de
--- /dev/null
+++ b/gnu/packages/patches/docbook-utils-respect-refentry-for-name.patch
@@ -0,0 +1,36 @@
+# Source: <https://sources.debian.org/patches/docbook-utils/0.6.14-4/bug_394511.patch/>
+
+Description: docbook2man should translate the NAME section according to the REFENTRY's lang attribute
+ Currently, docbook2man translates the NAME section according to the lang
+ attribute provided to the REFNAMEDIV tag.
+ When a lang attribute is specified in the REFENTRY tag and no lang
+ attribute is specified with the REFNAMEDIV, the lang attribute of the
+ REFENTRY should be used.
+Author: Nicolas François <nicolas.francois@centraliens.net>
+Forwarded: not-needed
+Bug-Debian: http://bugs.debian.org/394511
+
+Index: docbook-utils-0.6.14/helpers/docbook2man-spec.pl
+===================================================================
+--- docbook-utils-0.6.14.orig/helpers/docbook2man-spec.pl 2012-05-09 18:55:53.276783163 +0200
++++ docbook-utils-0.6.14/helpers/docbook2man-spec.pl 2012-05-09 18:58:04.792778418 +0200
+@@ -359,11 +359,14 @@
+ # NAME section
+ man_sgml('<REFNAMEDIV>', sub {
+ my %words = qw( fr NOM es NOMBRE de NAME );
+- if (defined($_[0]->attribute('LANG')->value)) {
+- my $id = $_[0]->attribute('LANG')->value;
+- my $ad = $words{$id};
+- output("\n.SH $ad\n");}
+- else {output("\n.SH NAME\n");}
++ # Use the REFNAMEDIV's lang attribute, and default to the
++ # REFENTRY's lang attribute.
++ my $lang = $_[0]->attribute('LANG')->value;
++ $lang = $manpage_lang unless defined $lang;
++ if (defined($lang) and defined $words{lc($lang)}) {
++ my $ad = $words{lc($lang)};
++ output("\n.SH $ad\n");}
++ else { output("\n.SH NAME\n");}
+ });
+
+ sgml('<REFNAME>', \&save_cdata);
diff --git a/gnu/packages/patches/docbook-utils-source-date-epoch.patch b/gnu/packages/patches/docbook-utils-source-date-epoch.patch
new file mode 100644
index 0000000000..15c025a726
--- /dev/null
+++ b/gnu/packages/patches/docbook-utils-source-date-epoch.patch
@@ -0,0 +1,31 @@
+# Source: <https://sources.debian.org/patches/docbook-utils/0.6.14-4/support_source_date_epoch.patch/>
+
+Author: Reiner Herrmann <reiner@reiner-h.de>
+Description: Support SOURCE_DATE_EPOCH for timestamps
+ To allow generating documents in a reproducible way,
+ allow overriding the timestamp through the environment.
+ .
+ See also: https://reproducible-builds.org/specs/source-date-epoch/
+Bug-Debian: https://bugs.debian.org/800797
+
+--- a/helpers/docbook2man-spec.pl
++++ b/helpers/docbook2man-spec.pl
+@@ -57,6 +57,7 @@
+ use SGMLS; # Use the SGMLS package.
+ use SGMLS::Output; # Use stack-based output.
+ use SGMLS::Refs;
++use POSIX qw(strftime setlocale LC_TIME);
+
+ ########################################################################
+ # SGMLSPL script produced automatically by the script sgmlspl.pl
+@@ -279,6 +280,10 @@
+ _END_BANNER
+
+ my $date = `date "+%d %B %Y"`;
++ if ($ENV{SOURCE_DATE_EPOCH}) {
++ setlocale(LC_TIME, "C");
++ $date = strftime("%d %B %Y", gmtime($ENV{SOURCE_DATE_EPOCH} || time));
++ }
+ my $manpage_date = $manpage_date || $date ;
+
+ output '.TH "';
diff --git a/gnu/packages/patches/docbook-utils-use-date-element.patch b/gnu/packages/patches/docbook-utils-use-date-element.patch
new file mode 100644
index 0000000000..106707f7d4
--- /dev/null
+++ b/gnu/packages/patches/docbook-utils-use-date-element.patch
@@ -0,0 +1,63 @@
+# Source: <https://sources.debian.org/patches/docbook-utils/0.6.14-4/bug_214982.patch/>
+
+Description: patch to get the <date> from the sgml file
+ For the moment, docbook2man doesn't use the tag date in <date> </date>
+ to but `date "+%d %B %Y"`, and thus depend on the current locale.
+
+ <refentry>
+ <docinfo>
+ <date>06 September 2003</>
+ </docinfo>
+ </refentry>
+
+ A patch against /usr/share/perl5/sgmlspl-specs/docbook2man-spec.pl
+ allows to use the date written in the source SGML file (which can be
+ localized) instead of the current date.
+
+ However, if no correct date tag is present in the SGML file, the date
+ written in the manpage will depend on the current locale.
+Author: Simon Paillard <simon.paillard@resel.enst-bretagne.fr>
+Forwarded: not-needed
+Bug-Debian: http://bugs.debian.org/214982
+
+Index: docbook-utils-0.6.14/helpers/docbook2man-spec.pl
+===================================================================
+--- docbook-utils-0.6.14.orig/helpers/docbook2man-spec.pl 2012-05-09 18:27:28.000000000 +0200
++++ docbook-utils-0.6.14/helpers/docbook2man-spec.pl 2012-05-09 18:55:53.276783163 +0200
+@@ -278,8 +278,9 @@
+ .\\" etc. to Steve Cheng <steve\@ggi-project.org>.
+ _END_BANNER
+
+- my $manpage_date = `date "+%d %B %Y"`;
+-
++ my $date = `date "+%d %B %Y"`;
++ my $manpage_date = $manpage_date || $date ;
++
+ output '.TH "';
+
+ # If the title is not mixed-case, convention says to
+@@ -292,7 +293,7 @@
+ }
+
+ output '" "', fold_string($manpage_sect),
+- '" "', fold_string(`date "+%d %B %Y"`),
++ '" "', fold_string($manpage_date),
+ '" "', $manpage_misc,
+ '" "', $manpage_manual,
+ "\"\n";
+@@ -568,6 +569,15 @@
+ sgml('</ATTRIBUTION>', sub { $_[0]->parent->ext->{'attribution'} = pop_output(); });
+
+
++sgml('<DATE>', sub {
++ save_cdata();
++});
++sgml('</DATE>', sub {
++ $manpage_date = fold_string(pop_output());
++ $raw_cdata--;
++});
++
++
+ # IGNORE.
+ sgml('<DOCINFO>', sub { push_output('nul'); });
+ sgml('</DOCINFO>', sub { pop_output(); });
diff --git a/gnu/packages/patches/docbook-xsl-nonrecursive-string-subst.patch b/gnu/packages/patches/docbook-xsl-nonrecursive-string-subst.patch
deleted file mode 100644
index fed4b76429..0000000000
--- a/gnu/packages/patches/docbook-xsl-nonrecursive-string-subst.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-Use a non-recursive replace function when the parser supports it.
-
-https://bugs.gnu.org/29782
-https://bugzilla.samba.org/show_bug.cgi?id=9515
-https://bugzilla.gnome.org/show_bug.cgi?id=736077 (for xsltproc)
-
-Patch copied from Debian:
-https://salsa.debian.org/debian/docbook-xsl/-/blob/master/debian/patches/765567_non-recursive_string_subst.patch
-
-Description: use EXSLT "replace" function when available
- A recursive implementation of string.subst is problematic,
- long strings with many matches will cause stack overflows.
-Author: Peter De Wachter <pdewacht@gmail.com>
-Bug-Debian: https://bugs.debian.org/750593
-
---- a/lib/lib.xsl
-+++ b/lib/lib.xsl
-@@ -6,7 +6,11 @@
-
- This module implements DTD-independent functions
-
-- ******************************************************************** --><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-+ ******************************************************************** -->
-+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-+ xmlns:str="http://exslt.org/strings"
-+ exclude-result-prefixes="str"
-+ version="1.0">
-
- <xsl:template name="dot.count">
- <!-- Returns the number of "." characters in a string -->
-@@ -52,6 +56,9 @@
- <xsl:param name="replacement"/>
-
- <xsl:choose>
-+ <xsl:when test="function-available('str:replace')">
-+ <xsl:value-of select="str:replace($string, string($target), string($replacement))"/>
-+ </xsl:when>
- <xsl:when test="contains($string, $target)">
- <xsl:variable name="rest">
- <xsl:call-template name="string.subst">
diff --git a/gnu/packages/patches/docbook-xsl-support-old-url.patch b/gnu/packages/patches/docbook-xsl-support-old-url.patch
deleted file mode 100644
index 5b7dda458f..0000000000
--- a/gnu/packages/patches/docbook-xsl-support-old-url.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Docbook 1.79.2 makes very few changes apart from changing the canonical URL
-to cdn.docbook.org. This patch adds support for the previous URL to avoid
-breaking packages that still use that.
-
-Adapted from Debian:
-https://salsa.debian.org/debian/docbook-xsl/-/blob/master/debian/patches/0005-catalog.xml-Compatibility-with-1.79.1-or-earlier.patch
-
---- a/catalog.xml
-+++ b/catalog.xml
-@@ -5,4 +5,7 @@
- <rewriteSystem systemIdStartString="http://cdn.docbook.org/release/xsl/current/" rewritePrefix="./"/>
- <rewriteURI uriStartString="http://cdn.docbook.org/release/xsl/1.79.2/" rewritePrefix="./"/>
- <rewriteSystem systemIdStartString="http://cdn.docbook.org/release/xsl/1.79.2/" rewritePrefix="./"/>
-+ <!-- Also support old URI of v1.79.1 or earlier -->
-+ <rewriteURI uriStartString="http://docbook.sourceforge.net/release/xsl/current/" rewritePrefix="./"/>
-+ <rewriteSystem systemIdStartString="http://docbook.sourceforge.net/release/xsl/current/" rewritePrefix="./"/>
- </catalog>
diff --git a/gnu/packages/patches/docbook2x-filename-handling.patch b/gnu/packages/patches/docbook2x-filename-handling.patch
new file mode 100644
index 0000000000..ebffd7b7ae
--- /dev/null
+++ b/gnu/packages/patches/docbook2x-filename-handling.patch
@@ -0,0 +1,44 @@
+# Source: <https://sources.debian.org/patches/docbook2x/0.8.8-18/03_fix_420153_filename_whitespace_handling.patch/>
+
+## 03_fix_420153_filename_whitespace_handling.dpatch by
+## Daniel Leidert (dale) <daniel.leidert@wgdd.de>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Peter Eisentraut reported a regression in the whitespace handling of
+## DP: refentrytitle content during filename creation:
+## DP: http://bugs.debian.org/420153. The problem is, that upstream first
+## DP: replaces all spaces (but not linebreaks btw) with underlines and then
+## DP: it tries to normalize the result. This means, that a linebreak with
+## DP: additional whitespaces results in manpage names like 'foo_ ____bar.9'.
+## DP: So what we basically do in this patch is, that we first normalize the
+## DP: refentrytitle and then replace any spaces left with underlines.
+
+Edit by Bruno Victal <mirai@makinata.eu>:
+ Removed dpatch lines.
+
+--- docbook2x-0.8.8~/xslt/man/manpage.xsl 2006-04-20 15:45:55.000000000 +0200
++++ docbook2x-0.8.8/xslt/man/manpage.xsl 2007-04-20 16:19:28.000000000 +0200
+@@ -30,7 +30,7 @@
+
+ <xsl:template name="manpage-filename">
+ <xsl:param name="filename" />
+- <xsl:value-of select="normalize-space(translate($filename, &quot; /&quot;, &quot;__&quot;))" />
++ <xsl:value-of select="translate(normalize-space($filename), ' /', '__')" />
+ </xsl:template>
+
+
+--- docbook2x-0.8.8~/xslt/man/refentry.xsl 2006-04-21 04:39:55.000000000 +0200
++++ docbook2x-0.8.8/xslt/man/refentry.xsl 2007-04-20 16:21:53.000000000 +0200
+@@ -38,7 +38,11 @@
+ <xsl:template name="refentry-filename">
+ <xsl:param name="title" />
+
+- <xsl:variable name="title2" select="translate($title, &quot; /&quot;, &quot;__&quot;)" />
++ <xsl:variable name="title2">
++ <xsl:call-template name="manpage-filename">
++ <xsl:with-param name="filename" select="$title" />
++ </xsl:call-template>
++ </xsl:variable>
+
+ <!-- not using gentext here since man page names tend not to have
+ accented chars / non-Latin chars ...
diff --git a/gnu/packages/patches/docbook2x-fix-synopsis.patch b/gnu/packages/patches/docbook2x-fix-synopsis.patch
new file mode 100644
index 0000000000..315c93029b
--- /dev/null
+++ b/gnu/packages/patches/docbook2x-fix-synopsis.patch
@@ -0,0 +1,26 @@
+# Source: <https://sources.debian.org/patches/docbook2x/0.8.8-18/07_Fix-hyphens-in-commands-and-options-in-synopsis.patch/>
+
+From 06944d2bf8aa761ec6c145c964e59c3b1f41d7a5 Mon Sep 17 00:00:00 2001
+From: Samuel Thibault <sthibault@debian.org>
+Date: Wed, 6 Sep 2023 21:48:59 +0200
+Subject: man: Fix hyphens in commands and options in synopsis
+
+diff --git a/xslt/man/synop.xsl b/xslt/man/synop.xsl
+index 9713a1b..e535b75 100644
+--- a/xslt/man/synop.xsl
++++ b/xslt/man/synop.xsl
+@@ -107,9 +107,9 @@
+ <xsl:call-template name="cmdsynopsis-gentext-sepchar" />
+ </xsl:if>
+
+- <b>
++ <xsl:call-template name="inline-bold-monospace">
+ <xsl:apply-templates mode="cmdsynopsis" />
+- </b>
++ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="replaceable" mode="cmdsynopsis">
+--
+2.34.1
+
diff --git a/gnu/packages/patches/docbook2x-manpage-typo.patch b/gnu/packages/patches/docbook2x-manpage-typo.patch
new file mode 100644
index 0000000000..5b64ca837b
--- /dev/null
+++ b/gnu/packages/patches/docbook2x-manpage-typo.patch
@@ -0,0 +1,26 @@
+# Source: <https://sources.debian.org/patches/docbook2x/0.8.8-18/06_fix_man_typo.patch/>
+
+Author: Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
+
+--- docbook2x-0.8.8.orig/doc/docbook2man.1
++++ docbook2x-0.8.8/doc/docbook2man.1
+@@ -187,7 +187,7 @@ parameter instead.
+
+ However, inside a custom stylesheet
+ (\fInot on the command-line\fR)
+-this paramter can be set to the XPath expression
++this parameter can be set to the XPath expression
+ \*(T<document('')\*(T>,
+ which will cause the custom translations
+ directly embedded inside the custom stylesheet to be read.
+--- docbook2x-0.8.8.orig/doc/docbook2texi.1
++++ docbook2x-0.8.8/doc/docbook2texi.1
+@@ -230,7 +230,7 @@ parameter instead.
+
+ However, inside a custom stylesheet
+ (\fInot on the command-line\fR)
+-this paramter can be set to the XPath expression
++this parameter can be set to the XPath expression
+ \*(T<document('')\*(T>,
+ which will cause the custom translations
+ directly embedded inside the custom stylesheet to be read.
diff --git a/gnu/packages/patches/docbook2x-preprocessor-declaration.patch b/gnu/packages/patches/docbook2x-preprocessor-declaration.patch
new file mode 100644
index 0000000000..34fb64c059
--- /dev/null
+++ b/gnu/packages/patches/docbook2x-preprocessor-declaration.patch
@@ -0,0 +1,91 @@
+# Source: <https://sources.debian.org/patches/docbook2x/0.8.8-18/04_fix_442782_preprocessor_declaration_syntax.patch/>
+
+## 04_fix_442782_preprocessor_declaration_syntax.dpatch by Colin Watson <cjwatson@debian.org>.
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Conventionally, preprocessor declarations should start with
+## DP: '\"
+## DP: rather than
+## DP: .\"
+## DP: Current man-db only supports the first (and recommended) syntax. So
+## DP: Colin Watson provided this patch to fix docbook2x.
+## DP:
+## DP: <URL:http://bugs.debian.org/442782>
+## DP: <URL:http://lists.gnu.org/archive/html/groff/2007-11/msg00023.html>
+
+Edit by Bruno Victal <mirai@makinata.eu>:
+ Removed dpatch lines.
+
+--- trunk~/perl/db2x_manxml.pl 2006-04-22 17:21:32.000000000 +0200
++++ trunk/perl/db2x_manxml.pl 2007-11-24 01:27:37.000000000 +0100
+@@ -342,6 +342,25 @@
+ $self->{line_start} = 1;
+ }
+
++#
++# Print a comment in the output, without causing a break.
++# Params: comment - the comment text.
++# May use any characters; they need not be escaped.
++#
++sub comment_nobreak
++{
++ my ($self, $comment) = @_;
++ $self->write("\n") unless $self->{line_start};
++
++ foreach my $line (split(/\n/, $comment)) {
++ $self->write('\'\" ');
++ $self->write($line);
++ $self->write("\n");
++ }
++
++ $self->{line_start} = 1;
++}
++
+
+ #
+ # Use a roff "escape" i.e. commands embedded in text starting with \
+@@ -510,16 +529,20 @@
+
+ $self->{'adjust-stack'} = [ 'b' ];
+
+- $self->{rw}->comment($elem->attr('preprocessors'))
+- if($elem->attr('preprocessors') ne '');
+-
++ my $preprocessors = $elem->attr('preprocessors');
+ # I've dug through the Internet to see if there was any
+ # standard way to specify encoding with man pages.
+ # The following seems to be a reasonable proposal:
+ # <URL:http://mail.nl.linux.org/linux-utf8/2001-04/msg00168.html>
+ my $encoding = $self->{options}->{'encoding'};
+ $encoding =~ s#//TRANSLIT$##i;
+- $self->{rw}->comment("-*- coding: $encoding -*-");
++ $encoding = "-*- coding: $encoding -*-";
++ if ($preprocessors eq '') {
++ $preprocessors = $encoding;
++ } else {
++ $preprocessors = "$preprocessors $encoding";
++ }
++ $self->{rw}->comment_nobreak($preprocessors);
+
+ # Define escapes for switching to and from monospace fonts (groff only)
+ $self->{rw}->request(qw{ .if \n(.g .ds T< \\\\FC});
+--- trunk~/xslt/backend/db2x_manxml.xsl 2006-04-23 16:44:52.000000000 +0200
++++ trunk/xslt/backend/db2x_manxml.xsl 2007-11-24 01:27:37.000000000 +0100
+@@ -528,7 +528,7 @@
+ <exslt:document method="text"
+ encoding="{$encoding}"
+ href="{$path}">
+- <xsl:text>.\" -*- coding: </xsl:text>
++ <xsl:text>'\" -*- coding: </xsl:text>
+ <xsl:value-of select="$encoding" />
+ <xsl:text> -*-&#10;</xsl:text>
+ <xsl:copy-of select="$content" />
+@@ -538,7 +538,7 @@
+ <saxon:output method="text"
+ encoding="{$encoding}"
+ href="{$path}">
+- <xsl:text>.\" -*- coding: </xsl:text>
++ <xsl:text>'\" -*- coding: </xsl:text>
+ <xsl:value-of select="$encoding" />
+ <xsl:text> -*-&#10;</xsl:text>
+ <xsl:copy-of select="$content" />
diff --git a/gnu/packages/patches/docbook2x-static-datadir-evaluation.patch b/gnu/packages/patches/docbook2x-static-datadir-evaluation.patch
new file mode 100644
index 0000000000..eb8844d379
--- /dev/null
+++ b/gnu/packages/patches/docbook2x-static-datadir-evaluation.patch
@@ -0,0 +1,21 @@
+# Source: <https://sources.debian.org/patches/docbook2x/0.8.8-18/01_fix_static_datadir_evaluation.patch/>
+
+Description:
+ 01_fix_static_datadir_evaluation.dpatch by Daniel Leidert (dale) <daniel.leidert@wgdd.de>
+ All lines beginning with `## DP:' are a description of the patch.
+ The evaluation of datadir results in "${prefix}/share" without
+ evaluation of the ${prefix} variable with autoconf 2.60.
+
+Index: docbook2X-0.8.8/configure.ac
+===================================================================
+--- docbook2X-0.8.8.orig/configure.ac
++++ docbook2X-0.8.8/configure.ac
+@@ -148,7 +148,7 @@
+ dnl they will reside and should use these static_* values.
+ dnl Ensure that all static_* are fully expanded.
+
+-eval static_datadir="$datadir"
++eval eval static_datadir="$datadir"
+
+ eval static_bindir="$bindir"
+ old_val=""
diff --git a/gnu/packages/patches/ffmpeg-4-binutils-2.41.patch b/gnu/packages/patches/ffmpeg-4-binutils-2.41.patch
new file mode 100644
index 0000000000..52a9310029
--- /dev/null
+++ b/gnu/packages/patches/ffmpeg-4-binutils-2.41.patch
@@ -0,0 +1,76 @@
+From effadce6c756247ea8bae32dc13bb3e6f464f0eb Mon Sep 17 00:00:00 2001
+From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= <remi@remlab.net>
+Date: Sun, 16 Jul 2023 18:18:02 +0300
+Subject: [PATCH] avcodec/x86/mathops: clip constants used with shift
+ instructions within inline assembly
+
+Fixes assembling with binutil as >= 2.41
+
+Signed-off-by: James Almer <jamrial@gmail.com>
+---
+ libavcodec/x86/mathops.h | 26 +++++++++++++++++++++++---
+ 1 file changed, 23 insertions(+), 3 deletions(-)
+
+diff --git a/libavcodec/x86/mathops.h b/libavcodec/x86/mathops.h
+index 6298f5ed19..ca7e2dffc1 100644
+--- a/libavcodec/x86/mathops.h
++++ b/libavcodec/x86/mathops.h
+@@ -35,12 +35,20 @@
+ static av_always_inline av_const int MULL(int a, int b, unsigned shift)
+ {
+ int rt, dummy;
++ if (__builtin_constant_p(shift))
+ __asm__ (
+ "imull %3 \n\t"
+ "shrdl %4, %%edx, %%eax \n\t"
+ :"=a"(rt), "=d"(dummy)
+- :"a"(a), "rm"(b), "ci"((uint8_t)shift)
++ :"a"(a), "rm"(b), "i"(shift & 0x1F)
+ );
++ else
++ __asm__ (
++ "imull %3 \n\t"
++ "shrdl %4, %%edx, %%eax \n\t"
++ :"=a"(rt), "=d"(dummy)
++ :"a"(a), "rm"(b), "c"((uint8_t)shift)
++ );
+ return rt;
+ }
+
+@@ -113,19 +121,31 @@ __asm__ volatile(\
+ // avoid +32 for shift optimization (gcc should do that ...)
+ #define NEG_SSR32 NEG_SSR32
+ static inline int32_t NEG_SSR32( int32_t a, int8_t s){
++ if (__builtin_constant_p(s))
+ __asm__ ("sarl %1, %0\n\t"
+ : "+r" (a)
+- : "ic" ((uint8_t)(-s))
++ : "i" (-s & 0x1F)
+ );
++ else
++ __asm__ ("sarl %1, %0\n\t"
++ : "+r" (a)
++ : "c" ((uint8_t)(-s))
++ );
+ return a;
+ }
+
+ #define NEG_USR32 NEG_USR32
+ static inline uint32_t NEG_USR32(uint32_t a, int8_t s){
++ if (__builtin_constant_p(s))
+ __asm__ ("shrl %1, %0\n\t"
+ : "+r" (a)
+- : "ic" ((uint8_t)(-s))
++ : "i" (-s & 0x1F)
+ );
++ else
++ __asm__ ("shrl %1, %0\n\t"
++ : "+r" (a)
++ : "c" ((uint8_t)(-s))
++ );
+ return a;
+ }
+
+--
+2.25.1
+
diff --git a/gnu/packages/patches/ffmpeg-remove-compressed_ten_bit_format.patch b/gnu/packages/patches/ffmpeg-remove-compressed_ten_bit_format.patch
new file mode 100644
index 0000000000..3eac98d1f9
--- /dev/null
+++ b/gnu/packages/patches/ffmpeg-remove-compressed_ten_bit_format.patch
@@ -0,0 +1,43 @@
+From 031f1561cd286596cdb374da32f8aa816ce3b135 Mon Sep 17 00:00:00 2001
+From: Christopher Degawa <christopher.degawa@intel.com>
+Date: Thu, 20 Oct 2022 22:55:27 -0500
+Subject: [PATCH] avcodec/libsvtav1: remove compressed_ten_bit_format and
+ simplify alloc_buffer
+
+compressed_ten_bit_format has been deprecated upstream and has no effect
+and can be removed. Plus, technically it was never used in the first place
+since it would require the app (ffmpeg) to set it and do additional
+processing of the input frames.
+
+Also simplify alloc_buffer by removing calculations relating to the
+non-existant processing.
+
+Signed-off-by: Christopher Degawa <christopher.degawa@intel.com>
+---
+ libavcodec/libsvtav1.c | 10 +++-------
+ 1 file changed, 3 insertions(+), 7 deletions(-)
+
+diff --git a/libavcodec/libsvtav1.c b/libavcodec/libsvtav1.c
+index 2f5634cee0241..28da206cf8512 100644
+--- a/libavcodec/libsvtav1.c
++++ b/libavcodec/libsvtav1.c
+@@ -124,16 +124,12 @@ static int svt_print_error(void *log_ctx, EbErrorType err,
+
+ static int alloc_buffer(EbSvtAv1EncConfiguration *config, SvtContext *svt_enc)
+ {
+- const int pack_mode_10bit =
+- (config->encoder_bit_depth > 8) && (config->compressed_ten_bit_format == 0) ? 1 : 0;
+- const size_t luma_size_8bit =
+- config->source_width * config->source_height * (1 << pack_mode_10bit);
+- const size_t luma_size_10bit =
+- (config->encoder_bit_depth > 8 && pack_mode_10bit == 0) ? luma_size_8bit : 0;
++ const size_t luma_size = config->source_width * config->source_height *
++ (config->encoder_bit_depth > 8 ? 2 : 1);
+
+ EbSvtIOFormat *in_data;
+
+- svt_enc->raw_size = (luma_size_8bit + luma_size_10bit) * 3 / 2;
++ svt_enc->raw_size = luma_size * 3 / 2;
+
+ // allocate buffer for in and out
+ svt_enc->in_buf = av_mallocz(sizeof(*svt_enc->in_buf));
diff --git a/gnu/packages/patches/file-32bit-time.patch b/gnu/packages/patches/file-32bit-time.patch
new file mode 100644
index 0000000000..671bcfdf66
--- /dev/null
+++ b/gnu/packages/patches/file-32bit-time.patch
@@ -0,0 +1,40 @@
+Upstream uses CVS, this is taken from the Github mirror
+https://github.com/file/file/commit/218fdf813fd5ccecbb8887a1b62509cd1c6dd3a1.patch
+https://sources.debian.org/src/file/1%3A5.45-2/debian/patches/1690555105.FILE5_45-1-g218fdf81.deal-with-32-bit-time-t.patch/
+
+From 218fdf813fd5ccecbb8887a1b62509cd1c6dd3a1 Mon Sep 17 00:00:00 2001
+From: Christos Zoulas <christos@zoulas.com>
+Date: Fri, 28 Jul 2023 14:38:25 +0000
+Subject: [PATCH] deal with 32 bit time_t
+
+---
+ src/file.h | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/src/file.h b/src/file.h
+index 2e0494d2f..78f574ea1 100644
+--- a/src/file.h
++++ b/src/file.h
+@@ -27,7 +27,7 @@
+ */
+ /*
+ * file.h - definitions for file(1) program
+- * @(#)$File: file.h,v 1.247 2023/07/27 19:40:22 christos Exp $
++ * @(#)$File: file.h,v 1.248 2023/07/28 14:38:25 christos Exp $
+ */
+
+ #ifndef __file_h__
+@@ -159,9 +159,11 @@
+ /*
+ * Dec 31, 23:59:59 9999
+ * we need to make sure that we don't exceed 9999 because some libc
+- * implementations like muslc crash otherwise
++ * implementations like muslc crash otherwise. If you are unlucky
++ * to be running on a system with a 32 bit time_t, then it is even less.
+ */
+-#define MAX_CTIME CAST(time_t, 0x3afff487cfULL)
++#define MAX_CTIME \
++ CAST(time_t, sizeof(time_t) > 4 ? 0x3afff487cfULL : 0x7fffffffULL)
+
+ #define FILE_BADSIZE CAST(size_t, ~0ul)
+ #define MAXDESC 64 /* max len of text description/MIME type */
diff --git a/gnu/packages/patches/gcc-10-libsanitizer-no-crypt.patch b/gnu/packages/patches/gcc-10-libsanitizer-no-crypt.patch
new file mode 100644
index 0000000000..72707ea982
--- /dev/null
+++ b/gnu/packages/patches/gcc-10-libsanitizer-no-crypt.patch
@@ -0,0 +1,134 @@
+Adapted from LLVM's patch, removed LLVM-specific test stuff. Original commit
+message follows.
+
+From d7bead833631486e337e541e692d9b4a1ca14edd Mon Sep 17 00:00:00 2001
+From: Fangrui Song <i@maskray.me>
+Date: Fri, 28 Apr 2023 09:59:17 -0700
+Subject: [PATCH] [sanitizer] Remove crypt and crypt_r interceptors
+
+From Florian Weimer's D144073
+
+> On GNU/Linux (glibc), the crypt and crypt_r functions are not part of the main shared object (libc.so.6), but libcrypt (with multiple possible sonames). The sanitizer libraries do not depend on libcrypt, so it can happen that during sanitizer library initialization, no real implementation will be found because the crypt, crypt_r functions are not present in the process image (yet). If its interceptors are called nevertheless, this results in a call through a null pointer when the sanitizer library attempts to forward the call to the real implementation.
+>
+> Many distributions have already switched to libxcrypt, a library that is separate from glibc and that can be build with sanitizers directly (avoiding the need for interceptors). This patch disables building the interceptor for glibc targets.
+
+Let's remove crypt and crypt_r interceptors (D68431) to fix issues with
+newer glibc.
+
+For older glibc, msan will not know that an uninstrumented crypt_r call
+initializes `data`, so there is a risk for false positives. However, with some
+codebase survey, I think crypt_r uses are very few and the call sites typically
+have a `memset(&data, 0, sizeof(data));` anyway.
+
+Fix https://github.com/google/sanitizers/issues/1365
+Related: https://bugzilla.redhat.com/show_bug.cgi?id=2169432
+
+Reviewed By: #sanitizers, fweimer, thesamesam, vitalybuka
+
+Differential Revision: https://reviews.llvm.org/D149403
+---
+ .../sanitizer_common_interceptors.inc | 37 -------------------
+ .../sanitizer_platform_interceptors.h | 2 -
+ .../sanitizer_platform_limits_posix.cpp | 8 ----
+ .../sanitizer_platform_limits_posix.h | 1 -
+
+diff --git a/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc b/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc
+index b30c91f06cfeb..490a8b12d8b17 100644
+--- a/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc
++++ b/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc
+@@ -10086,41 +10086,6 @@ INTERCEPTOR(SSIZE_T, getrandom, void *buf, SIZE_T buflen, unsigned int flags) {
+ #define INIT_GETRANDOM
+ #endif
+
+-#if SANITIZER_INTERCEPT_CRYPT
+-INTERCEPTOR(char *, crypt, char *key, char *salt) {
+- void *ctx;
+- COMMON_INTERCEPTOR_ENTER(ctx, crypt, key, salt);
+- COMMON_INTERCEPTOR_READ_RANGE(ctx, key, internal_strlen(key) + 1);
+- COMMON_INTERCEPTOR_READ_RANGE(ctx, salt, internal_strlen(salt) + 1);
+- char *res = REAL(crypt)(key, salt);
+- if (res != nullptr)
+- COMMON_INTERCEPTOR_INITIALIZE_RANGE(res, internal_strlen(res) + 1);
+- return res;
+-}
+-#define INIT_CRYPT COMMON_INTERCEPT_FUNCTION(crypt);
+-#else
+-#define INIT_CRYPT
+-#endif
+-
+-#if SANITIZER_INTERCEPT_CRYPT_R
+-INTERCEPTOR(char *, crypt_r, char *key, char *salt, void *data) {
+- void *ctx;
+- COMMON_INTERCEPTOR_ENTER(ctx, crypt_r, key, salt, data);
+- COMMON_INTERCEPTOR_READ_RANGE(ctx, key, internal_strlen(key) + 1);
+- COMMON_INTERCEPTOR_READ_RANGE(ctx, salt, internal_strlen(salt) + 1);
+- char *res = REAL(crypt_r)(key, salt, data);
+- if (res != nullptr) {
+- COMMON_INTERCEPTOR_WRITE_RANGE(ctx, data,
+- __sanitizer::struct_crypt_data_sz);
+- COMMON_INTERCEPTOR_INITIALIZE_RANGE(res, internal_strlen(res) + 1);
+- }
+- return res;
+-}
+-#define INIT_CRYPT_R COMMON_INTERCEPT_FUNCTION(crypt_r);
+-#else
+-#define INIT_CRYPT_R
+-#endif
+-
+ #if SANITIZER_INTERCEPT_GETENTROPY
+ INTERCEPTOR(int, getentropy, void *buf, SIZE_T buflen) {
+ void *ctx;
+@@ -10698,8 +10663,6 @@ static void InitializeCommonInterceptors() {
+ INIT_GETUSERSHELL;
+ INIT_SL_INIT;
+ INIT_GETRANDOM;
+- INIT_CRYPT;
+- INIT_CRYPT_R;
+ INIT_GETENTROPY;
+ INIT_QSORT;
+ INIT_QSORT_R;
+diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h b/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h
+index eb39fabfd5983..c82ab5c210562 100644
+--- a/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h
++++ b/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h
+@@ -569,8 +569,6 @@
+ #define SANITIZER_INTERCEPT_FDEVNAME SI_FREEBSD
+ #define SANITIZER_INTERCEPT_GETUSERSHELL (SI_POSIX && !SI_ANDROID)
+ #define SANITIZER_INTERCEPT_SL_INIT (SI_FREEBSD || SI_NETBSD)
+-#define SANITIZER_INTERCEPT_CRYPT (SI_POSIX && !SI_ANDROID)
+-#define SANITIZER_INTERCEPT_CRYPT_R (SI_LINUX && !SI_ANDROID)
+
+ #define SANITIZER_INTERCEPT_GETRANDOM \
+ ((SI_LINUX && __GLIBC_PREREQ(2, 25)) || SI_FREEBSD)
+diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
+index a04eed7aa5a6e..6d61d276d77e3 100644
+--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
+@@ -142,7 +142,6 @@
+ #include <linux/serial.h>
+ #include <sys/msg.h>
+ #include <sys/ipc.h>
+-#include <crypt.h>
+ #endif // SANITIZER_LINUX && !SANITIZER_ANDROID
+
+ #if SANITIZER_ANDROID
+@@ -243,7 +244,6 @@
+ unsigned struct_ustat_sz = SIZEOF_STRUCT_USTAT;
+ unsigned struct_rlimit64_sz = sizeof(struct rlimit64);
+ unsigned struct_statvfs64_sz = sizeof(struct statvfs64);
+- unsigned struct_crypt_data_sz = sizeof(struct crypt_data);
+ #endif // SANITIZER_LINUX && !SANITIZER_ANDROID
+
+ #if SANITIZER_LINUX && !SANITIZER_ANDROID
+diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
+index e6f298c26e1fb..58244c9944a03 100644
+--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
+@@ -309,7 +309,6 @@ extern unsigned struct_msqid_ds_sz;
+ extern unsigned struct_mq_attr_sz;
+ extern unsigned struct_timex_sz;
+ extern unsigned struct_statvfs_sz;
+-extern unsigned struct_crypt_data_sz;
+ #endif // SANITIZER_LINUX && !SANITIZER_ANDROID
+
+ struct __sanitizer_iovec {
diff --git a/gnu/packages/patches/gcc-12-libsanitizer-no-crypt.patch b/gnu/packages/patches/gcc-12-libsanitizer-no-crypt.patch
new file mode 100644
index 0000000000..d9c0a2557a
--- /dev/null
+++ b/gnu/packages/patches/gcc-12-libsanitizer-no-crypt.patch
@@ -0,0 +1,134 @@
+Adapted from LLVM's patch, removed LLVM-specific test stuff. Original commit
+message follows.
+
+From d7bead833631486e337e541e692d9b4a1ca14edd Mon Sep 17 00:00:00 2001
+From: Fangrui Song <i@maskray.me>
+Date: Fri, 28 Apr 2023 09:59:17 -0700
+Subject: [PATCH] [sanitizer] Remove crypt and crypt_r interceptors
+
+From Florian Weimer's D144073
+
+> On GNU/Linux (glibc), the crypt and crypt_r functions are not part of the main shared object (libc.so.6), but libcrypt (with multiple possible sonames). The sanitizer libraries do not depend on libcrypt, so it can happen that during sanitizer library initialization, no real implementation will be found because the crypt, crypt_r functions are not present in the process image (yet). If its interceptors are called nevertheless, this results in a call through a null pointer when the sanitizer library attempts to forward the call to the real implementation.
+>
+> Many distributions have already switched to libxcrypt, a library that is separate from glibc and that can be build with sanitizers directly (avoiding the need for interceptors). This patch disables building the interceptor for glibc targets.
+
+Let's remove crypt and crypt_r interceptors (D68431) to fix issues with
+newer glibc.
+
+For older glibc, msan will not know that an uninstrumented crypt_r call
+initializes `data`, so there is a risk for false positives. However, with some
+codebase survey, I think crypt_r uses are very few and the call sites typically
+have a `memset(&data, 0, sizeof(data));` anyway.
+
+Fix https://github.com/google/sanitizers/issues/1365
+Related: https://bugzilla.redhat.com/show_bug.cgi?id=2169432
+
+Reviewed By: #sanitizers, fweimer, thesamesam, vitalybuka
+
+Differential Revision: https://reviews.llvm.org/D149403
+---
+ .../sanitizer_common_interceptors.inc | 37 -------------------
+ .../sanitizer_platform_interceptors.h | 2 -
+ .../sanitizer_platform_limits_posix.cpp | 8 ----
+ .../sanitizer_platform_limits_posix.h | 1 -
+
+diff --git a/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc b/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc
+index b30c91f06cfeb..490a8b12d8b17 100644
+--- a/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc
++++ b/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc
+@@ -10086,41 +10086,6 @@ INTERCEPTOR(SSIZE_T, getrandom, void *buf, SIZE_T buflen, unsigned int flags) {
+ #define INIT_GETRANDOM
+ #endif
+
+-#if SANITIZER_INTERCEPT_CRYPT
+-INTERCEPTOR(char *, crypt, char *key, char *salt) {
+- void *ctx;
+- COMMON_INTERCEPTOR_ENTER(ctx, crypt, key, salt);
+- COMMON_INTERCEPTOR_READ_RANGE(ctx, key, internal_strlen(key) + 1);
+- COMMON_INTERCEPTOR_READ_RANGE(ctx, salt, internal_strlen(salt) + 1);
+- char *res = REAL(crypt)(key, salt);
+- if (res != nullptr)
+- COMMON_INTERCEPTOR_INITIALIZE_RANGE(res, internal_strlen(res) + 1);
+- return res;
+-}
+-#define INIT_CRYPT COMMON_INTERCEPT_FUNCTION(crypt);
+-#else
+-#define INIT_CRYPT
+-#endif
+-
+-#if SANITIZER_INTERCEPT_CRYPT_R
+-INTERCEPTOR(char *, crypt_r, char *key, char *salt, void *data) {
+- void *ctx;
+- COMMON_INTERCEPTOR_ENTER(ctx, crypt_r, key, salt, data);
+- COMMON_INTERCEPTOR_READ_RANGE(ctx, key, internal_strlen(key) + 1);
+- COMMON_INTERCEPTOR_READ_RANGE(ctx, salt, internal_strlen(salt) + 1);
+- char *res = REAL(crypt_r)(key, salt, data);
+- if (res != nullptr) {
+- COMMON_INTERCEPTOR_WRITE_RANGE(ctx, data,
+- __sanitizer::struct_crypt_data_sz);
+- COMMON_INTERCEPTOR_INITIALIZE_RANGE(res, internal_strlen(res) + 1);
+- }
+- return res;
+-}
+-#define INIT_CRYPT_R COMMON_INTERCEPT_FUNCTION(crypt_r);
+-#else
+-#define INIT_CRYPT_R
+-#endif
+-
+ #if SANITIZER_INTERCEPT_GETENTROPY
+ INTERCEPTOR(int, getentropy, void *buf, SIZE_T buflen) {
+ void *ctx;
+@@ -10698,8 +10663,6 @@ static void InitializeCommonInterceptors() {
+ INIT_GETUSERSHELL;
+ INIT_SL_INIT;
+ INIT_GETRANDOM;
+- INIT_CRYPT;
+- INIT_CRYPT_R;
+ INIT_GETENTROPY;
+ INIT_QSORT;
+ INIT_QSORT_R;
+diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h b/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h
+index eb39fabfd5983..c82ab5c210562 100644
+--- a/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h
++++ b/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h
+@@ -569,8 +569,6 @@
+ #define SANITIZER_INTERCEPT_FDEVNAME SI_FREEBSD
+ #define SANITIZER_INTERCEPT_GETUSERSHELL (SI_POSIX && !SI_ANDROID)
+ #define SANITIZER_INTERCEPT_SL_INIT (SI_FREEBSD || SI_NETBSD)
+-#define SANITIZER_INTERCEPT_CRYPT (SI_POSIX && !SI_ANDROID)
+-#define SANITIZER_INTERCEPT_CRYPT_R (SI_LINUX && !SI_ANDROID)
+
+ #define SANITIZER_INTERCEPT_GETRANDOM \
+ ((SI_LINUX && __GLIBC_PREREQ(2, 25)) || SI_FREEBSD)
+diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
+index a04eed7aa5a6e..6d61d276d77e3 100644
+--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
+@@ -142,7 +142,6 @@
+ #include <linux/serial.h>
+ #include <sys/msg.h>
+ #include <sys/ipc.h>
+-#include <crypt.h>
+ #endif // SANITIZER_ANDROID
+
+ #include <link.h>
+@@ -243,7 +244,6 @@
+ unsigned struct_ustat_sz = SIZEOF_STRUCT_USTAT;
+ unsigned struct_rlimit64_sz = sizeof(struct rlimit64);
+ unsigned struct_statvfs64_sz = sizeof(struct statvfs64);
+- unsigned struct_crypt_data_sz = sizeof(struct crypt_data);
+ #endif // SANITIZER_LINUX && !SANITIZER_ANDROID
+
+ #if SANITIZER_LINUX && !SANITIZER_ANDROID
+diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
+index e6f298c26e1fb..58244c9944a03 100644
+--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
+@@ -309,7 +309,6 @@ extern unsigned struct_msqid_ds_sz;
+ extern unsigned struct_mq_attr_sz;
+ extern unsigned struct_timex_sz;
+ extern unsigned struct_statvfs_sz;
+-extern unsigned struct_crypt_data_sz;
+ #endif // SANITIZER_LINUX && !SANITIZER_ANDROID
+
+ struct __sanitizer_iovec {
diff --git a/gnu/packages/patches/gcc-13-libsanitizer-no-crypt.patch b/gnu/packages/patches/gcc-13-libsanitizer-no-crypt.patch
new file mode 100644
index 0000000000..0785830c36
--- /dev/null
+++ b/gnu/packages/patches/gcc-13-libsanitizer-no-crypt.patch
@@ -0,0 +1,140 @@
+Adapted from LLVM's patch, removed LLVM-specific test stuff. Original commit
+message follows.
+
+From d7bead833631486e337e541e692d9b4a1ca14edd Mon Sep 17 00:00:00 2001
+From: Fangrui Song <i@maskray.me>
+Date: Fri, 28 Apr 2023 09:59:17 -0700
+Subject: [PATCH] [sanitizer] Remove crypt and crypt_r interceptors
+
+From Florian Weimer's D144073
+
+> On GNU/Linux (glibc), the crypt and crypt_r functions are not part of the main shared object (libc.so.6), but libcrypt (with multiple possible sonames). The sanitizer libraries do not depend on libcrypt, so it can happen that during sanitizer library initialization, no real implementation will be found because the crypt, crypt_r functions are not present in the process image (yet). If its interceptors are called nevertheless, this results in a call through a null pointer when the sanitizer library attempts to forward the call to the real implementation.
+>
+> Many distributions have already switched to libxcrypt, a library that is separate from glibc and that can be build with sanitizers directly (avoiding the need for interceptors). This patch disables building the interceptor for glibc targets.
+
+Let's remove crypt and crypt_r interceptors (D68431) to fix issues with
+newer glibc.
+
+For older glibc, msan will not know that an uninstrumented crypt_r call
+initializes `data`, so there is a risk for false positives. However, with some
+codebase survey, I think crypt_r uses are very few and the call sites typically
+have a `memset(&data, 0, sizeof(data));` anyway.
+
+Fix https://github.com/google/sanitizers/issues/1365
+Related: https://bugzilla.redhat.com/show_bug.cgi?id=2169432
+
+Reviewed By: #sanitizers, fweimer, thesamesam, vitalybuka
+
+Differential Revision: https://reviews.llvm.org/D149403
+---
+ .../sanitizer_common_interceptors.inc | 37 -------------------
+ .../sanitizer_platform_interceptors.h | 2 -
+ .../sanitizer_platform_limits_posix.cpp | 8 ----
+ .../sanitizer_platform_limits_posix.h | 1 -
+
+diff --git a/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc b/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc
+index b30c91f06cfeb..490a8b12d8b17 100644
+--- a/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc
++++ b/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc
+@@ -10086,41 +10086,6 @@ INTERCEPTOR(SSIZE_T, getrandom, void *buf, SIZE_T buflen, unsigned int flags) {
+ #define INIT_GETRANDOM
+ #endif
+
+-#if SANITIZER_INTERCEPT_CRYPT
+-INTERCEPTOR(char *, crypt, char *key, char *salt) {
+- void *ctx;
+- COMMON_INTERCEPTOR_ENTER(ctx, crypt, key, salt);
+- COMMON_INTERCEPTOR_READ_RANGE(ctx, key, internal_strlen(key) + 1);
+- COMMON_INTERCEPTOR_READ_RANGE(ctx, salt, internal_strlen(salt) + 1);
+- char *res = REAL(crypt)(key, salt);
+- if (res != nullptr)
+- COMMON_INTERCEPTOR_INITIALIZE_RANGE(res, internal_strlen(res) + 1);
+- return res;
+-}
+-#define INIT_CRYPT COMMON_INTERCEPT_FUNCTION(crypt);
+-#else
+-#define INIT_CRYPT
+-#endif
+-
+-#if SANITIZER_INTERCEPT_CRYPT_R
+-INTERCEPTOR(char *, crypt_r, char *key, char *salt, void *data) {
+- void *ctx;
+- COMMON_INTERCEPTOR_ENTER(ctx, crypt_r, key, salt, data);
+- COMMON_INTERCEPTOR_READ_RANGE(ctx, key, internal_strlen(key) + 1);
+- COMMON_INTERCEPTOR_READ_RANGE(ctx, salt, internal_strlen(salt) + 1);
+- char *res = REAL(crypt_r)(key, salt, data);
+- if (res != nullptr) {
+- COMMON_INTERCEPTOR_WRITE_RANGE(ctx, data,
+- __sanitizer::struct_crypt_data_sz);
+- COMMON_INTERCEPTOR_INITIALIZE_RANGE(res, internal_strlen(res) + 1);
+- }
+- return res;
+-}
+-#define INIT_CRYPT_R COMMON_INTERCEPT_FUNCTION(crypt_r);
+-#else
+-#define INIT_CRYPT_R
+-#endif
+-
+ #if SANITIZER_INTERCEPT_GETENTROPY
+ INTERCEPTOR(int, getentropy, void *buf, SIZE_T buflen) {
+ void *ctx;
+@@ -10698,8 +10663,6 @@ static void InitializeCommonInterceptors() {
+ INIT_GETUSERSHELL;
+ INIT_SL_INIT;
+ INIT_GETRANDOM;
+- INIT_CRYPT;
+- INIT_CRYPT_R;
+ INIT_GETENTROPY;
+ INIT_QSORT;
+ INIT_QSORT_R;
+diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h b/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h
+index eb39fabfd5983..c82ab5c210562 100644
+--- a/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h
++++ b/libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h
+@@ -569,8 +569,6 @@
+ #define SANITIZER_INTERCEPT_FDEVNAME SI_FREEBSD
+ #define SANITIZER_INTERCEPT_GETUSERSHELL (SI_POSIX && !SI_ANDROID)
+ #define SANITIZER_INTERCEPT_SL_INIT (SI_FREEBSD || SI_NETBSD)
+-#define SANITIZER_INTERCEPT_CRYPT (SI_POSIX && !SI_ANDROID)
+-#define SANITIZER_INTERCEPT_CRYPT_R (SI_LINUX && !SI_ANDROID)
+
+ #define SANITIZER_INTERCEPT_GETRANDOM \
+ ((SI_LINUX && __GLIBC_PREREQ(2, 25)) || SI_FREEBSD)
+diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
+index a04eed7aa5a6e..6d61d276d77e3 100644
+--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
+@@ -177,10 +177,6 @@ typedef struct user_fpregs elf_fpregset_t;
+ # include "sanitizer_platform_interceptors.h"
+ # include "sanitizer_platform_limits_posix.h"
+
+-#if SANITIZER_INTERCEPT_CRYPT_R
+-#include <crypt.h>
+-#endif
+-
+ namespace __sanitizer {
+ unsigned struct_utsname_sz = sizeof(struct utsname);
+ unsigned struct_stat_sz = sizeof(struct stat);
+@@ -300,10 +296,6 @@ namespace __sanitizer {
+ unsigned struct_statvfs64_sz = sizeof(struct statvfs64);
+ #endif // SANITIZER_GLIBC
+
+-#if SANITIZER_INTERCEPT_CRYPT_R
+- unsigned struct_crypt_data_sz = sizeof(struct crypt_data);
+-#endif
+-
+ #if SANITIZER_LINUX && !SANITIZER_ANDROID
+ unsigned struct_timex_sz = sizeof(struct timex);
+ unsigned struct_msqid_ds_sz = sizeof(struct msqid_ds);
+diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
+index e6f298c26e1fb..58244c9944a03 100644
+--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
+@@ -309,7 +309,6 @@ extern unsigned struct_msqid_ds_sz;
+ extern unsigned struct_mq_attr_sz;
+ extern unsigned struct_timex_sz;
+ extern unsigned struct_statvfs_sz;
+-extern unsigned struct_crypt_data_sz;
+ #endif // SANITIZER_LINUX && !SANITIZER_ANDROID
+
+ struct __sanitizer_iovec {
diff --git a/gnu/packages/patches/gcc-13.2.0-libstdc++-docbook-xsl-uri.patch b/gnu/packages/patches/gcc-13.2.0-libstdc++-docbook-xsl-uri.patch
new file mode 100644
index 0000000000..9252b6920a
--- /dev/null
+++ b/gnu/packages/patches/gcc-13.2.0-libstdc++-docbook-xsl-uri.patch
@@ -0,0 +1,50 @@
+# Upstreamed <https://gcc.gnu.org/pipermail/gcc-patches/2023-August/628047.html>
+
+From 2748b8df7a241c5fd6a7c2de6621c5cc56bb6ae1 Mon Sep 17 00:00:00 2001
+Message-Id: <2748b8df7a241c5fd6a7c2de6621c5cc56bb6ae1.1692808412.git.mirai@makinata.eu>
+In-Reply-To: <2db0606adfdb800f3fcc95f2cb6c13ff76246e5f.1692808412.git.mirai@makinata.eu>
+References: <2db0606adfdb800f3fcc95f2cb6c13ff76246e5f.1692808412.git.mirai@makinata.eu>
+From: Bruno Victal <mirai@makinata.eu>
+Date: Mon, 21 Aug 2023 20:58:43 +0100
+Subject: [PATCH 2/2] libstdc++: Update docbook xsl URI.
+
+The URI for namespaced docbook-xsl was updated to reflect the current
+DocBook upstream at <https://cdn.docbook.org/>.
+
+libstdc++-v3/Changelog:
+ * acinclude.m4: Update docbook xsl URI.
+ * configure: Regenerate.
+---
+ libstdc++-v3/acinclude.m4 | 2 +-
+ libstdc++-v3/configure | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
+index b25378eaace..152811fd00d 100644
+--- a/libstdc++-v3/acinclude.m4
++++ b/libstdc++-v3/acinclude.m4
+@@ -604,7 +604,7 @@ dnl XSL_STYLE_DIR
+ dnl
+ AC_DEFUN([GLIBCXX_CONFIGURE_DOCBOOK], [
+
+-glibcxx_docbook_url=http://docbook.sourceforge.net/release/xsl-ns/current/
++glibcxx_docbook_url=http://cdn.docbook.org/release/xsl/current/
+
+ AC_MSG_CHECKING([for local stylesheet directory])
+ glibcxx_local_stylesheets=no
+diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
+index c4da56c3042..d967b137ea1 100755
+--- a/libstdc++-v3/configure
++++ b/libstdc++-v3/configure
+@@ -73923,7 +73923,7 @@ fi
+
+
+
+-glibcxx_docbook_url=http://docbook.sourceforge.net/release/xsl-ns/current/
++glibcxx_docbook_url=http://cdn.docbook.org/release/xsl/current/
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for local stylesheet directory" >&5
+ $as_echo_n "checking for local stylesheet directory... " >&6; }
+--
+2.40.1
+
diff --git a/gnu/packages/patches/gcc-13.2.0-libstdc++-info-install-fix.patch b/gnu/packages/patches/gcc-13.2.0-libstdc++-info-install-fix.patch
new file mode 100644
index 0000000000..abc4cc877f
--- /dev/null
+++ b/gnu/packages/patches/gcc-13.2.0-libstdc++-info-install-fix.patch
@@ -0,0 +1,70 @@
+# Upstreamed <https://gcc.gnu.org/pipermail/gcc-patches/2023-August/628047.html>
+
+From 2db0606adfdb800f3fcc95f2cb6c13ff76246e5f Mon Sep 17 00:00:00 2001
+Message-Id: <2db0606adfdb800f3fcc95f2cb6c13ff76246e5f.1692808412.git.mirai@makinata.eu>
+From: Bruno Victal <mirai@makinata.eu>
+Date: Mon, 21 Aug 2023 20:58:22 +0100
+Subject: [PATCH 1/2] libstdc++: Fix 'doc-install-info' rule.
+
+The info manual isn't moved to the expected location after
+generation which causes the install rule for it to fail.
+
+libstdc++-v3/Changelog:
+
+ * doc/Makefile.in: Regenerate.
+ * doc/Makefile.am: Fix 'doc-install-info' rule.
+ Fix typo in commment.
+---
+ libstdc++-v3/doc/Makefile.am | 4 ++--
+ libstdc++-v3/doc/Makefile.in | 4 ++--
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/libstdc++-v3/doc/Makefile.am b/libstdc++-v3/doc/Makefile.am
+index 8371441c62e..373522d593d 100644
+--- a/libstdc++-v3/doc/Makefile.am
++++ b/libstdc++-v3/doc/Makefile.am
+@@ -598,7 +598,7 @@ stamp-pdf-docbook: doc-pdf-docbook-pre doc-xml-single-docbook
+ doc-pdf-docbook: stamp-pdf-docbook
+
+ # TEXINFO, via docbook2X
+-# NB: Both experimental and tempermental
++# NB: Both experimental and temperamental
+ manual_texi = ${docbook_outdir}/texinfo/libstdc++-manual.texi
+ manual_info = ${docbook_outdir}/texinfo/libstdc++-manual.info
+ DB2TEXI_FLAGS = \
+@@ -615,7 +615,7 @@ stamp-texinfo-docbook: stamp-xml-single-docbook ${docbook_outdir}/texinfo
+
+ stamp-info-docbook: stamp-texinfo-docbook
+ @echo "Generating info files..."
+- $(MAKEINFO) $(MAKEINFOFLAGS) ${manual_texi}
++ $(MAKEINFO) $(MAKEINFOFLAGS) ${manual_texi} -o ${manual_info}
+ $(STAMP) stamp-info-docbook
+
+ doc-texinfo-docbook: stamp-texinfo-docbook
+diff --git a/libstdc++-v3/doc/Makefile.in b/libstdc++-v3/doc/Makefile.in
+index 21ad8557f7a..c19e3e3044c 100644
+--- a/libstdc++-v3/doc/Makefile.in
++++ b/libstdc++-v3/doc/Makefile.in
+@@ -645,7 +645,7 @@ manual_pdf = ${docbook_outdir}/pdf/libstdc++-manual.pdf
+ DBLATEX_FLAGS = --verbose --pdf --dump --debug --tmpdir=${docbook_outdir}/latex
+
+ # TEXINFO, via docbook2X
+-# NB: Both experimental and tempermental
++# NB: Both experimental and temperamental
+ manual_texi = ${docbook_outdir}/texinfo/libstdc++-manual.texi
+ manual_info = ${docbook_outdir}/texinfo/libstdc++-manual.info
+ DB2TEXI_FLAGS = \
+@@ -1096,7 +1096,7 @@ stamp-texinfo-docbook: stamp-xml-single-docbook ${docbook_outdir}/texinfo
+
+ stamp-info-docbook: stamp-texinfo-docbook
+ @echo "Generating info files..."
+- $(MAKEINFO) $(MAKEINFOFLAGS) ${manual_texi}
++ $(MAKEINFO) $(MAKEINFOFLAGS) ${manual_texi} -o ${manual_info}
+ $(STAMP) stamp-info-docbook
+
+ doc-texinfo-docbook: stamp-texinfo-docbook
+
+base-commit: f9ff6fa58217294d63f255dd02abfcc8a074f509
+--
+2.40.1
+
diff --git a/gnu/packages/patches/gcc-5.5.0-libstdc++-xmlcatalog.patch b/gnu/packages/patches/gcc-5.5.0-libstdc++-xmlcatalog.patch
new file mode 100644
index 0000000000..473e08e240
--- /dev/null
+++ b/gnu/packages/patches/gcc-5.5.0-libstdc++-xmlcatalog.patch
@@ -0,0 +1,402 @@
+From 7f792d2acc0d3eeb95c6f8e0acd72ae304cec9be Mon Sep 17 00:00:00 2001
+Message-Id: <7f792d2acc0d3eeb95c6f8e0acd72ae304cec9be.1692813549.git.mirai@makinata.eu>
+From: Jonathan Wakely <jwakely@redhat.com>
+Date: Wed, 27 Feb 2019 11:25:44 +0000
+Subject: [PATCH] PR libstdc++/89466 avoid slow xsltproc command in configure
+
+Note: Backported from a4395a846a9343960714568e7cf8af4425e63a50.
+
+Certain broken versions of xsltproc ignore the --nonet option and will
+attempt to fetch the docbook stylesheet from the WWW when it isn't in
+the local XML catalog.
+
+This patch checks for the local stylesheet directory first, and doesn't
+use xsltproc if no local stylesheets are found. Checking for the local
+directory is done using xmlcatalog if available, only checking the
+hardcoded list of directories if xmlcatalog fails. The right directory
+for Suse is added to the hardcoded list.
+
+This should avoid doing an xsltproc check that would need to download
+the stylesheet, so no network connection is made even if a broken
+xsltproc is present.
+
+ PR libstdc++/89466
+ * acinclude.m4 (GLIBCXX_CONFIGURE_DOCBOOK): Reorder check for local
+ stylesheet directories before check for xsltproc. Try to use
+ xmlcatalog to find local stylesheet directory before trying hardcoded
+ paths. Add path used by suse to hardcoded paths. Adjust xsltproc
+ check to look for the same stylesheet as doc/Makefile.am uses. Don't
+ use xsltproc if xmlcatalog fails to find a local stylesheet.
+ * configure.ac: Check for xmlcatalog.
+ * Makefile.in: Regenerate.
+ * configure: Likewise.
+ * doc/Makefile.in: Likewise.
+ * include/Makefile.in: Likewise.
+ * libsupc++/Makefile.in: Likewise.
+ * po/Makefile.in: Likewise.
+ * python/Makefile.in: Likewise.
+ * src/Makefile.in: Likewise.
+ * src/c++11/Makefile.in: Likewise.
+ * src/c++98/Makefile.in: Likewise.
+ * src/filesystem/Makefile.in: Likewise.
+ * testsuite/Makefile.in: Likewise.
+
+From-SVN: r269249
+Modified-by: Bruno Victal <mirai@makinata.eu>
+---
+ libstdc++-v3/Makefile.in | 1 +
+ libstdc++-v3/acinclude.m4 | 47 +++++++------
+ libstdc++-v3/configure | 90 +++++++++++++++++++------
+ libstdc++-v3/configure.ac | 1 +
+ libstdc++-v3/doc/Makefile.in | 1 +
+ libstdc++-v3/include/Makefile.in | 1 +
+ libstdc++-v3/libsupc++/Makefile.in | 1 +
+ libstdc++-v3/po/Makefile.in | 1 +
+ libstdc++-v3/python/Makefile.in | 1 +
+ libstdc++-v3/src/Makefile.in | 1 +
+ libstdc++-v3/src/c++11/Makefile.in | 1 +
+ libstdc++-v3/src/c++98/Makefile.in | 1 +
+ libstdc++-v3/src/filesystem/Makefile.in | 1 +
+ libstdc++-v3/testsuite/Makefile.in | 1 +
+ 14 files changed, 109 insertions(+), 40 deletions(-)
+
+diff --git a/libstdc++-v3/Makefile.in b/libstdc++-v3/Makefile.in
+index a9451e19a96..6aee8281f77 100644
+--- a/libstdc++-v3/Makefile.in
++++ b/libstdc++-v3/Makefile.in
+@@ -230,6 +230,7 @@ VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@
+ VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@
+ WARN_FLAGS = @WARN_FLAGS@
+ WERROR = @WERROR@
++XMLCATALOG = @XMLCATALOG@
+ XMLLINT = @XMLLINT@
+ XSLTPROC = @XSLTPROC@
+ XSL_STYLE_DIR = @XSL_STYLE_DIR@
+diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
+index 18b7b6638ec..fde3fb6da6e 100644
+--- a/libstdc++-v3/acinclude.m4
++++ b/libstdc++-v3/acinclude.m4
+@@ -674,34 +674,43 @@ dnl XSL_STYLE_DIR
+ dnl
+ AC_DEFUN([GLIBCXX_CONFIGURE_DOCBOOK], [
+
+-AC_MSG_CHECKING([for docbook stylesheets for documentation creation])
+-glibcxx_stylesheets=no
+-if test x${XSLTPROC} = xyes && echo '<title/>' | xsltproc --noout --nonet --xinclude http://docbook.sourceforge.net/release/xsl-ns/current/xhtml-1_1/docbook.xsl - 2>/dev/null; then
+- glibcxx_stylesheets=yes
+-fi
+-AC_MSG_RESULT($glibcxx_stylesheets)
++glibcxx_docbook_url=http://docbook.sourceforge.net/release/xsl-ns/current/
+
+ AC_MSG_CHECKING([for local stylesheet directory])
+ glibcxx_local_stylesheets=no
+-if test x"$glibcxx_stylesheets" = x"yes"; then
+- if test -d /usr/share/sgml/docbook/xsl-ns-stylesheets; then
+- glibcxx_local_stylesheets=yes
+- XSL_STYLE_DIR=/usr/share/sgml/docbook/xsl-ns-stylesheets
+- fi
+- if test -d /usr/share/xml/docbook/stylesheet/docbook-xsl-ns; then
+- glibcxx_local_stylesheets=yes
+- XSL_STYLE_DIR=/usr/share/xml/docbook/stylesheet/docbook-xsl-ns
+- fi
+- if test -d /usr/share/xml/docbook/stylesheet/nwalsh5/current; then
+- glibcxx_local_stylesheets=yes
+- XSL_STYLE_DIR=/usr/share/xml/docbook/stylesheet/nwalsh5/current
+- fi
++if test x${XMLCATALOG} = xyes && xsl_style_dir=`xmlcatalog "" $glibcxx_docbook_url 2>/dev/null`
++then
++ XSL_STYLE_DIR=`echo $xsl_style_dir | sed -n 's;^file://;;p'`
++ glibcxx_local_stylesheets=yes
++else
++ for dir in \
++ /usr/share/sgml/docbook/xsl-ns-stylesheets \
++ /usr/share/xml/docbook/stylesheet/docbook-xsl-ns \
++ /usr/share/xml/docbook/stylesheet/nwalsh5/current \
++ /usr/share/xml/docbook/stylesheet/nwalsh/current
++ do
++ if test -d $dir; then
++ glibcxx_local_stylesheets=yes
++ XSL_STYLE_DIR=$dir
++ break
++ fi
++ done
+ fi
+ AC_MSG_RESULT($glibcxx_local_stylesheets)
+
+ if test x"$glibcxx_local_stylesheets" = x"yes"; then
+ AC_SUBST(XSL_STYLE_DIR)
+ AC_MSG_NOTICE($XSL_STYLE_DIR)
++
++ AC_MSG_CHECKING([for docbook stylesheets for documentation creation])
++ glibcxx_stylesheets=no
++ if test x${XMLCATALOG} = xno || xmlcatalog "" $glibcxx_docbook_url/xhtml/docbook.xsl >/dev/null 2>&1; then
++ if test x${XSLTPROC} = xyes && echo '<title/>' | xsltproc --noout --nonet --xinclude $glibcxx_docbook_url/xhtml/docbook.xsl - 2>/dev/null; then
++ glibcxx_stylesheets=yes
++ fi
++ fi
++ AC_MSG_RESULT($glibcxx_stylesheets)
++
+ else
+ glibcxx_stylesheets=no
+ fi
+diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
+index a51dfe6eb13..0c462490b81 100755
+--- a/libstdc++-v3/configure
++++ b/libstdc++-v3/configure
+@@ -634,6 +634,7 @@ BUILD_EPUB_TRUE
+ XSL_STYLE_DIR
+ XMLLINT
+ XSLTPROC
++XMLCATALOG
+ DOT
+ DOXYGEN
+ BUILD_INFO_FALSE
+@@ -79678,6 +79679,44 @@ fi
+
+
+ # Check for docbook
++# Extract the first word of "xmlcatalog", so it can be a program name with args.
++set dummy xmlcatalog; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_XMLCATALOG+:} false; then :
++ $as_echo_n "(cached) " >&6
++else
++ if test -n "$XMLCATALOG"; then
++ ac_cv_prog_XMLCATALOG="$XMLCATALOG" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++ IFS=$as_save_IFS
++ test -z "$as_dir" && as_dir=.
++ for ac_exec_ext in '' $ac_executable_extensions; do
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++ ac_cv_prog_XMLCATALOG="yes"
++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++ break 2
++ fi
++done
++ done
++IFS=$as_save_IFS
++
++ test -z "$ac_cv_prog_XMLCATALOG" && ac_cv_prog_XMLCATALOG="no"
++fi
++fi
++XMLCATALOG=$ac_cv_prog_XMLCATALOG
++if test -n "$XMLCATALOG"; then
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XMLCATALOG" >&5
++$as_echo "$XMLCATALOG" >&6; }
++else
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
+ # Extract the first word of "xsltproc", so it can be a program name with args.
+ set dummy xsltproc; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+@@ -79756,31 +79795,28 @@ fi
+
+
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for docbook stylesheets for documentation creation" >&5
+-$as_echo_n "checking for docbook stylesheets for documentation creation... " >&6; }
+-glibcxx_stylesheets=no
+-if test x${XSLTPROC} = xyes && echo '<title/>' | xsltproc --noout --nonet --xinclude http://docbook.sourceforge.net/release/xsl-ns/current/xhtml-1_1/docbook.xsl - 2>/dev/null; then
+- glibcxx_stylesheets=yes
+-fi
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_stylesheets" >&5
+-$as_echo "$glibcxx_stylesheets" >&6; }
++glibcxx_docbook_url=http://docbook.sourceforge.net/release/xsl-ns/current/
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for local stylesheet directory" >&5
+ $as_echo_n "checking for local stylesheet directory... " >&6; }
+ glibcxx_local_stylesheets=no
+-if test x"$glibcxx_stylesheets" = x"yes"; then
+- if test -d /usr/share/sgml/docbook/xsl-ns-stylesheets; then
+- glibcxx_local_stylesheets=yes
+- XSL_STYLE_DIR=/usr/share/sgml/docbook/xsl-ns-stylesheets
+- fi
+- if test -d /usr/share/xml/docbook/stylesheet/docbook-xsl-ns; then
+- glibcxx_local_stylesheets=yes
+- XSL_STYLE_DIR=/usr/share/xml/docbook/stylesheet/docbook-xsl-ns
+- fi
+- if test -d /usr/share/xml/docbook/stylesheet/nwalsh5/current; then
+- glibcxx_local_stylesheets=yes
+- XSL_STYLE_DIR=/usr/share/xml/docbook/stylesheet/nwalsh5/current
+- fi
++if test x${XMLCATALOG} = xyes && xsl_style_dir=`xmlcatalog "" $glibcxx_docbook_url 2>/dev/null`
++then
++ XSL_STYLE_DIR=`echo $xsl_style_dir | sed -n 's;^file://;;p'`
++ glibcxx_local_stylesheets=yes
++else
++ for dir in \
++ /usr/share/sgml/docbook/xsl-ns-stylesheets \
++ /usr/share/xml/docbook/stylesheet/docbook-xsl-ns \
++ /usr/share/xml/docbook/stylesheet/nwalsh5/current \
++ /usr/share/xml/docbook/stylesheet/nwalsh/current
++ do
++ if test -d $dir; then
++ glibcxx_local_stylesheets=yes
++ XSL_STYLE_DIR=$dir
++ break
++ fi
++ done
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_local_stylesheets" >&5
+ $as_echo "$glibcxx_local_stylesheets" >&6; }
+@@ -79789,6 +79825,18 @@ if test x"$glibcxx_local_stylesheets" = x"yes"; then
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: $XSL_STYLE_DIR" >&5
+ $as_echo "$as_me: $XSL_STYLE_DIR" >&6;}
++
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for docbook stylesheets for documentation creation" >&5
++$as_echo_n "checking for docbook stylesheets for documentation creation... " >&6; }
++ glibcxx_stylesheets=no
++ if test x${XMLCATALOG} = xno || xmlcatalog "" $glibcxx_docbook_url/xhtml/docbook.xsl >/dev/null 2>&1; then
++ if test x${XSLTPROC} = xyes && echo '<title/>' | xsltproc --noout --nonet --xinclude $glibcxx_docbook_url/xhtml/docbook.xsl - 2>/dev/null; then
++ glibcxx_stylesheets=yes
++ fi
++ fi
++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_stylesheets" >&5
++$as_echo "$glibcxx_stylesheets" >&6; }
++
+ else
+ glibcxx_stylesheets=no
+ fi
+diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac
+index 580fb8b2eb8..92a18b88135 100644
+--- a/libstdc++-v3/configure.ac
++++ b/libstdc++-v3/configure.ac
+@@ -422,6 +422,7 @@ AC_CHECK_PROG([DOXYGEN], doxygen, yes, no)
+ AC_CHECK_PROG([DOT], dot, yes, no)
+
+ # Check for docbook
++AC_CHECK_PROG([XMLCATALOG], xmlcatalog, yes, no)
+ AC_CHECK_PROG([XSLTPROC], xsltproc, yes, no)
+ AC_CHECK_PROG([XMLLINT], xmllint, yes, no)
+ GLIBCXX_CONFIGURE_DOCBOOK
+diff --git a/libstdc++-v3/doc/Makefile.in b/libstdc++-v3/doc/Makefile.in
+index 4690fad8ac6..522a96c681d 100644
+--- a/libstdc++-v3/doc/Makefile.in
++++ b/libstdc++-v3/doc/Makefile.in
+@@ -202,6 +202,7 @@ VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@
+ VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@
+ WARN_FLAGS = @WARN_FLAGS@
+ WERROR = @WERROR@
++XMLCATALOG = @XMLCATALOG@
+
+ # Validate existing XML structure.
+ XMLLINT = xmllint
+diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
+index 591301add5f..c28b1f4504f 100644
+--- a/libstdc++-v3/include/Makefile.in
++++ b/libstdc++-v3/include/Makefile.in
+@@ -202,6 +202,7 @@ VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@
+ VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@
+ WARN_FLAGS = @WARN_FLAGS@
+ WERROR = @WERROR@
++XMLCATALOG = @XMLCATALOG@
+ XMLLINT = @XMLLINT@
+ XSLTPROC = @XSLTPROC@
+ XSL_STYLE_DIR = @XSL_STYLE_DIR@
+diff --git a/libstdc++-v3/libsupc++/Makefile.in b/libstdc++-v3/libsupc++/Makefile.in
+index 8f627c6bcd3..5f63c6c0f72 100644
+--- a/libstdc++-v3/libsupc++/Makefile.in
++++ b/libstdc++-v3/libsupc++/Makefile.in
+@@ -273,6 +273,7 @@ VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@
+ VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@
+ WARN_FLAGS = @WARN_FLAGS@
+ WERROR = @WERROR@
++XMLCATALOG = @XMLCATALOG@
+ XMLLINT = @XMLLINT@
+ XSLTPROC = @XSLTPROC@
+ XSL_STYLE_DIR = @XSL_STYLE_DIR@
+diff --git a/libstdc++-v3/po/Makefile.in b/libstdc++-v3/po/Makefile.in
+index 5bcf4da7fa5..cabd3f3368c 100644
+--- a/libstdc++-v3/po/Makefile.in
++++ b/libstdc++-v3/po/Makefile.in
+@@ -202,6 +202,7 @@ VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@
+ VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@
+ WARN_FLAGS = @WARN_FLAGS@
+ WERROR = @WERROR@
++XMLCATALOG = @XMLCATALOG@
+ XMLLINT = @XMLLINT@
+ XSLTPROC = @XSLTPROC@
+ XSL_STYLE_DIR = @XSL_STYLE_DIR@
+diff --git a/libstdc++-v3/python/Makefile.in b/libstdc++-v3/python/Makefile.in
+index 26eb2abfb19..c1f46c02ea1 100644
+--- a/libstdc++-v3/python/Makefile.in
++++ b/libstdc++-v3/python/Makefile.in
+@@ -232,6 +232,7 @@ VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@
+ VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@
+ WARN_FLAGS = @WARN_FLAGS@
+ WERROR = @WERROR@
++XMLCATALOG = @XMLCATALOG@
+ XMLLINT = @XMLLINT@
+ XSLTPROC = @XSLTPROC@
+ XSL_STYLE_DIR = @XSL_STYLE_DIR@
+diff --git a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in
+index 5221a5d5c29..e0c7bab1e78 100644
+--- a/libstdc++-v3/src/Makefile.in
++++ b/libstdc++-v3/src/Makefile.in
+@@ -265,6 +265,7 @@ VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@
+ VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@
+ WARN_FLAGS = @WARN_FLAGS@
+ WERROR = @WERROR@
++XMLCATALOG = @XMLCATALOG@
+ XMLLINT = @XMLLINT@
+ XSLTPROC = @XSLTPROC@
+ XSL_STYLE_DIR = @XSL_STYLE_DIR@
+diff --git a/libstdc++-v3/src/c++11/Makefile.in b/libstdc++-v3/src/c++11/Makefile.in
+index 4f92d71d19c..88a2dd5c7a0 100644
+--- a/libstdc++-v3/src/c++11/Makefile.in
++++ b/libstdc++-v3/src/c++11/Makefile.in
+@@ -235,6 +235,7 @@ VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@
+ VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@
+ WARN_FLAGS = @WARN_FLAGS@
+ WERROR = @WERROR@
++XMLCATALOG = @XMLCATALOG@
+ XMLLINT = @XMLLINT@
+ XSLTPROC = @XSLTPROC@
+ XSL_STYLE_DIR = @XSL_STYLE_DIR@
+diff --git a/libstdc++-v3/src/c++98/Makefile.in b/libstdc++-v3/src/c++98/Makefile.in
+index 8dca17f360e..58ea47a9db6 100644
+--- a/libstdc++-v3/src/c++98/Makefile.in
++++ b/libstdc++-v3/src/c++98/Makefile.in
+@@ -236,6 +236,7 @@ VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@
+ VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@
+ WARN_FLAGS = @WARN_FLAGS@
+ WERROR = @WERROR@
++XMLCATALOG = @XMLCATALOG@
+ XMLLINT = @XMLLINT@
+ XSLTPROC = @XSLTPROC@
+ XSL_STYLE_DIR = @XSL_STYLE_DIR@
+diff --git a/libstdc++-v3/src/filesystem/Makefile.in b/libstdc++-v3/src/filesystem/Makefile.in
+index f8f0180f9ba..c7c997686cb 100644
+--- a/libstdc++-v3/src/filesystem/Makefile.in
++++ b/libstdc++-v3/src/filesystem/Makefile.in
+@@ -244,6 +244,7 @@ VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@
+ VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@
+ WARN_FLAGS = @WARN_FLAGS@
+ WERROR = @WERROR@
++XMLCATALOG = @XMLCATALOG@
+ XMLLINT = @XMLLINT@
+ XSLTPROC = @XSLTPROC@
+ XSL_STYLE_DIR = @XSL_STYLE_DIR@
+diff --git a/libstdc++-v3/testsuite/Makefile.in b/libstdc++-v3/testsuite/Makefile.in
+index 4f67a37966d..d7417fe5a1f 100644
+--- a/libstdc++-v3/testsuite/Makefile.in
++++ b/libstdc++-v3/testsuite/Makefile.in
+@@ -202,6 +202,7 @@ VTV_CXXLINKFLAGS = @VTV_CXXLINKFLAGS@
+ VTV_PCH_CXXFLAGS = @VTV_PCH_CXXFLAGS@
+ WARN_FLAGS = @WARN_FLAGS@
+ WERROR = @WERROR@
++XMLCATALOG = @XMLCATALOG@
+ XMLLINT = @XMLLINT@
+ XSLTPROC = @XSLTPROC@
+ XSL_STYLE_DIR = @XSL_STYLE_DIR@
+--
+2.40.1
+
diff --git a/gnu/packages/patches/gcc-7-libsanitizer-fsconfig-command.patch b/gnu/packages/patches/gcc-7-libsanitizer-fsconfig-command.patch
new file mode 100644
index 0000000000..f203a5542d
--- /dev/null
+++ b/gnu/packages/patches/gcc-7-libsanitizer-fsconfig-command.patch
@@ -0,0 +1,32 @@
+Avoid redefinition of ‘enum fsconfig_command’ and ‘struct mount_attr’ in
+libsanitizer with glibc 2.38.
+
+ https://github.com/draperlaboratory/hope-llvm-project/commit/d8daef856858ecbd19898c3e0de63e76221e2baa
+ https://github.com/llvm/llvm-project/issues/56421
+ https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113181
+
+--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
+@@ -73,7 +73,6 @@
+ #include <sys/vt.h>
+ #include <linux/cdrom.h>
+ #include <linux/fd.h>
+-#include <linux/fs.h>
+ #include <linux/hdreg.h>
+ #include <linux/input.h>
+ #include <linux/ioctl.h>
+@@ -876,10 +875,10 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr);
+ unsigned IOCTL_EVIOCGPROP = IOCTL_NOT_PRESENT;
+ unsigned IOCTL_EVIOCSKEYCODE_V2 = IOCTL_NOT_PRESENT;
+ #endif
+- unsigned IOCTL_FS_IOC_GETFLAGS = FS_IOC_GETFLAGS;
+- unsigned IOCTL_FS_IOC_GETVERSION = FS_IOC_GETVERSION;
+- unsigned IOCTL_FS_IOC_SETFLAGS = FS_IOC_SETFLAGS;
+- unsigned IOCTL_FS_IOC_SETVERSION = FS_IOC_SETVERSION;
++ unsigned IOCTL_FS_IOC_GETFLAGS = _IOR('f', 1, long);
++ unsigned IOCTL_FS_IOC_GETVERSION = _IOR('v', 1, long);
++ unsigned IOCTL_FS_IOC_SETFLAGS = _IOW('f', 2, long);
++ unsigned IOCTL_FS_IOC_SETVERSION = _IOW('v', 2, long);
+ unsigned IOCTL_GIO_CMAP = GIO_CMAP;
+ unsigned IOCTL_GIO_FONT = GIO_FONT;
+ unsigned IOCTL_GIO_UNIMAP = GIO_UNIMAP;
diff --git a/gnu/packages/patches/gd-Revert-fix-303-gdlib.pc.patch b/gnu/packages/patches/gd-Revert-fix-303-gdlib.pc.patch
deleted file mode 100644
index 6329b129d3..0000000000
--- a/gnu/packages/patches/gd-Revert-fix-303-gdlib.pc.patch
+++ /dev/null
@@ -1,179 +0,0 @@
-From 9b31dfda73ee2d1b56b3f0dcfd3246c2faa592fe Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?L=C3=A9o=20Le=20Bouter?= <lle-bout@zaclys.net>
-Date: Sun, 28 Mar 2021 19:47:25 +0200
-Subject: [PATCH] Revert "fix #303: gdlib.pc: use Requires instead of Libs
- (#537)"
-
-This reverts commit 28ecfe77c817aff8ce56422d3e4e8533a281bc76.
----
- CMakeLists.txt | 12 ------------
- config/gdlib.pc.cmake | 4 +---
- config/gdlib.pc.in | 4 +---
- configure.ac | 11 +----------
- src/CMakeLists.txt | 6 ------
- 5 files changed, 3 insertions(+), 34 deletions(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 57cd95d..6bd0c73 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -53,8 +53,6 @@ SET (CMAKE_ARCHIVE_OUTPUT_DIRECTORY
- "Single Directory for all static libraries."
- )
-
--SET(PKG_REQUIRES_PRIVATES "")
--
- if (USE_EXT_GD)
- message("Using GD at: ${USE_EXT_GD}")
- INCLUDE_DIRECTORIES(BEFORE ${GD_INCLUDE_DIR})
-@@ -170,13 +168,11 @@ else (USE_EXT_GD)
- INCLUDE_DIRECTORIES(${FREETYPE_INCLUDE_DIRS})
- SET(HAVE_FT2BUILD_H 1)
- SET(HAVE_LIBFREETYPE 1)
-- LIST(APPEND PKG_REQUIRES_PRIVATES freetype2)
- ENDIF(FREETYPE_FOUND)
-
- IF(ZLIB_FOUND)
- INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR})
- SET(HAVE_LIBZ 1)
-- LIST(APPEND PKG_REQUIRES_PRIVATES zlib)
- ENDIF(ZLIB_FOUND)
-
- IF(WEBP_FOUND)
-@@ -192,7 +188,6 @@ else (USE_EXT_GD)
- IF(PNG_FOUND)
- INCLUDE_DIRECTORIES(${PNG_INCLUDE_DIR})
- SET(HAVE_LIBPNG 1)
-- LIST(APPEND PKG_REQUIRES_PRIVATES libpng)
- ENDIF(PNG_FOUND)
-
- IF(ICONV_FOUND)
-@@ -209,25 +204,21 @@ else (USE_EXT_GD)
- IF(XPM_FOUND)
- INCLUDE_DIRECTORIES(${XPM_INCLUDE_DIR})
- SET(HAVE_LIBXPM 1)
-- LIST(APPEND PKG_REQUIRES_PRIVATES xpm)
- ENDIF(XPM_FOUND)
-
- IF(JPEG_FOUND)
- INCLUDE_DIRECTORIES(${JPEG_INCLUDE_DIR})
- SET(HAVE_LIBJPEG 1)
-- LIST(APPEND PKG_REQUIRES_PRIVATES libjpeg)
- ENDIF(JPEG_FOUND)
-
- IF(TIFF_FOUND)
- INCLUDE_DIRECTORIES(${TIFF_INCLUDE_DIR})
- SET(HAVE_LIBTIFF 1)
-- LIST(APPEND PKG_REQUIRES_PRIVATES libtiff-4)
- ENDIF(TIFF_FOUND)
-
- IF(FONTCONFIG_FOUND)
- INCLUDE_DIRECTORIES(${FONTCONFIG_INCLUDE_DIR})
- SET(HAVE_LIBFONTCONFIG 1)
-- LIST(APPEND PKG_REQUIRES_PRIVATES fontconfig)
- ELSE (FONTCONFIG_FOUND)
- SET(FONTCONFIG_LIBRARY "")
- SET(FONTCONFIG_INCLUDE_DIR "")
-@@ -236,11 +227,8 @@ else (USE_EXT_GD)
-
- IF(RAQM_FOUND)
- INCLUDE_DIRECTORIES(${RAQM_INCLUDE_DIR})
-- SET(HAVE_RAQM 1)
-- LIST(APPEND PKG_REQUIRES_PRIVAES raqm)
- ENDIF(RAQM_FOUND)
-
-- string(REPLACE ";" ", " PKG_REQUIRES_PRIVATES "${PKG_REQUIRES_PRIVATES}")
- SET(HAVE_CONFIG_H 1)
-
- ADD_DEFINITIONS(-DHAVE_CONFIG_H)
-diff --git a/config/gdlib.pc.cmake b/config/gdlib.pc.cmake
-index 5fc8af4..d1a0dda 100644
---- a/config/gdlib.pc.cmake
-+++ b/config/gdlib.pc.cmake
-@@ -6,8 +6,6 @@ includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
- Name: gd
- Description: GD graphics library
- Version: @GDLIB_VERSION@
--Requires:
--Requires.private: @PKG_REQUIRES_PRIVATES@
- Cflags: -I${includedir}
--Libs.private: @LIBS_PRIVATES@
-+Libs.private: @LIBGD_DEP_LIBS@
- Libs: -L${libdir} -lgd
-diff --git a/config/gdlib.pc.in b/config/gdlib.pc.in
-index d6bc375..b980a60 100644
---- a/config/gdlib.pc.in
-+++ b/config/gdlib.pc.in
-@@ -6,8 +6,6 @@ includedir=@includedir@
- Name: gd
- Description: GD graphics library
- Version: @VERSION@
--Requires:
--Requires.private: @PKG_REQUIRES_PRIVATES@
- Cflags: -I${includedir}
--Libs.private: @LIBS_PRIVATES@ @LIBICONV@
-+Libs.private: @LIBS@ @LIBICONV@
- Libs: -L${libdir} -lgd
-diff --git a/configure.ac b/configure.ac
-index 535db68..329c99c 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -33,9 +33,6 @@ AC_SUBST(GDLIB_LT_CURRENT)
- AC_SUBST(GDLIB_LT_REVISION)
- AC_SUBST(GDLIB_LT_AGE)
-
--AC_SUBST(LIBS_PRIVATES)
--AC_SUBST(PKG_REQUIRES_PRIVATES)
--
- AM_INIT_AUTOMAKE([1.11 foreign dist-xz -Wall -Werror subdir-objects])
- AC_CONFIG_HEADERS([src/config.h:src/config.hin])
-
-@@ -133,7 +130,6 @@ m4_define([GD_LIB_CHECK], [dnl
- AC_MSG_RESULT([$gd_with_lib])
-
- gd_found_lib=no
-- gd_require_pkg_name=""
- if test "$gd_with_lib" != "no"; then
- save_CPPFLAGS=$CPPFLAGS
- save_LDFLAGS=$LDFLAGS
-@@ -165,11 +161,6 @@ m4_define([GD_LIB_CHECK], [dnl
- $1][_CFLAGS="$gd_lib_cflags $][$1][_CFLAGS"
- AS_VAR_APPEND([LIBS], [" $][$1][_LIBS"])
- AS_VAR_APPEND([CPPFLAGS], [" $][$1][_CFLAGS"])
-- if test -z "$gd_require_pkg_name"; then
-- AS_VAR_APPEND([LIBS_PRIVATES], [" $][$1][_LIBS"])
-- else
-- AS_VAR_APPEND([PKG_REQUIRES_PRIVATES], [" $gd_require_pkg_name"])
-- fi
- elif test "$gd_with_lib" = "yes"; then
- AC_MSG_ERROR([$3 requested but not found])
- else
-@@ -189,7 +180,7 @@ dnl $4 - pkg-config module to look for
- dnl $5 - fallback test for the feature
- m4_define([GD_LIB_PKG_CHECK], [dnl
- GD_LIB_CHECK([$1], [$2], [$3], [dnl
-- PKG_CHECK_MODULES([$1], [$4], [gd_found_lib=yes gd_require_pkg_name="$4"], [$5])
-+ PKG_CHECK_MODULES([$1], [$4], [gd_found_lib=yes], [$5])
- ])
- ])
-
-diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
-index 509c422..49adbd6 100644
---- a/src/CMakeLists.txt
-+++ b/src/CMakeLists.txt
-@@ -142,12 +142,6 @@ if (BUILD_STATIC_LIBS)
- target_link_libraries(${GD_LIB_STATIC} ${LIBGD_DEP_LIBS})
- endif()
-
--SET(LIBS_PRIVATES
-- ${ICONV_LIBRARIES}
-- ${LIQ_LIBRARIES}
-- ${WEBP_LIBRARIES}
--)
--
- set(GD_PROGRAMS gdcmpgif)
-
- if (PNG_FOUND)
---
-2.31.1
-
diff --git a/gnu/packages/patches/ghc-9-StgCRunAsm-only-when-needed.patch b/gnu/packages/patches/ghc-9-StgCRunAsm-only-when-needed.patch
new file mode 100644
index 0000000000..3e40da4cc6
--- /dev/null
+++ b/gnu/packages/patches/ghc-9-StgCRunAsm-only-when-needed.patch
@@ -0,0 +1,33 @@
+From d61f742876bdf2cd32e76f7bca389106ad99a316 Mon Sep 17 00:00:00 2001
+From: Ben Gamari <ben@smart-cactus.org>
+Date: Tue, 3 May 2022 12:40:43 -0400
+Subject: [PATCH] rts/ghc.mk: Only build StgCRunAsm.S when it is needed
+
+Previously the make build system unconditionally included StgCRunAsm.S
+in the link, meaning that the RTS would require an execstack
+unnecessarily.
+
+Fixes #21478.
+---
+ rts/ghc.mk | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/rts/ghc.mk b/rts/ghc.mk
+index 36a82f9f2c8..0e56515a569 100644
+--- a/rts/ghc.mk
++++ b/rts/ghc.mk
+@@ -57,8 +57,11 @@ ifneq "$(PORTING_HOST)" "YES"
+
+ # unregisterised builds use the mini interpreter
+ ifneq "$(GhcUnregisterised)" "YES"
++# use StgCRunAsm.S on ppc, ppc64, s390x, and riscv64
++ifneq "$(findstring $(TargetArch_CPP), ppc)$(findstring $(TargetArch_CPP), ppc64)$(findstring $(TargetArch_CPP), s390x)$(findstring $(TargetArch_CPP), riscv64)" ""
+ rts_S_SRCS += rts/StgCRunAsm.S
+ endif
++endif
+
+ # select adjustor implementation. This much match the logic in rts.cabal.in.
+ ifneq "$(CLEANING)" "YES"
+--
+GitLab
+
diff --git a/gnu/packages/patches/ghc-9.2-glibc-2.33-link-order.patch b/gnu/packages/patches/ghc-9.2-glibc-2.33-link-order.patch
deleted file mode 100644
index 5d4afa28c1..0000000000
--- a/gnu/packages/patches/ghc-9.2-glibc-2.33-link-order.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-Slightly modified version of
-https://gitlab.haskell.org/ghc/ghc/-/issues/19029#note_447989, required
-for older, buggy glibc versions < 2.34.
-
-diff -Naur ghc-9.2.5/compiler/GHC/Linker/Unit.hs ghc-9.2.5.patched/compiler/GHC/Linker/Unit.hs
---- ghc-9.2.5/compiler/GHC/Linker/Unit.hs 2022-11-06 20:40:29.000000000 +0100
-+++ ghc-9.2.5.patched/compiler/GHC/Linker/Unit.hs 2023-01-15 14:52:57.511275338 +0100
-@@ -31,11 +31,26 @@
- ps <- mayThrowUnitErr $ preloadUnitsInfo' unit_env pkgs
- return (collectLinkOpts dflags ps)
-
-+fixOrderLinkOpts :: [String] -> [String]
-+fixOrderLinkOpts opts
-+ | have_bad_glibc_version -- glibc version strictly less than 2.34
-+ , let (before, rest) = break (== libc) opts
-+ , not (pthread `elem` before)
-+ , pthread `elem` rest -- optional if we know pthread is definitely present
-+ = before ++ pthread_and_deps ++ rest
-+ | otherwise
-+ = opts
-+ where
-+ pthread = "-lpthread"
-+ libc = "-lc"
-+ pthread_and_deps = [ "-lrt", pthread ] -- should depend on the environment
-+ have_bad_glibc_version = True
-+
- collectLinkOpts :: DynFlags -> [UnitInfo] -> ([String], [String], [String])
- collectLinkOpts dflags ps =
- (
- concatMap (map ("-l" ++) . unitHsLibs (ghcNameVersion dflags) (ways dflags)) ps,
-- concatMap (map ("-l" ++) . map ST.unpack . unitExtDepLibsSys) ps,
-+ fixOrderLinkOpts $ concatMap (map ("-l" ++) . map ST.unpack . unitExtDepLibsSys) ps,
- concatMap (map ST.unpack . unitLinkerOptions) ps
- )
-
diff --git a/gnu/packages/patches/ghc-testsuite-recomp015-execstack.patch b/gnu/packages/patches/ghc-testsuite-recomp015-execstack.patch
new file mode 100644
index 0000000000..cdaf5b180d
--- /dev/null
+++ b/gnu/packages/patches/ghc-testsuite-recomp015-execstack.patch
@@ -0,0 +1,10 @@
+--- a/testsuite/tests/driver/recomp015/Makefile 2024-01-13 16:22:42.643106725 +0100
++++ b/testsuite/tests/driver/recomp015/Makefile 2024-01-13 16:23:18.406867917 +0100
+@@ -26,6 +26,7 @@
+ # number of sections)
+ '$(TEST_HC)' $(TEST_HC_OPTS) Generate.hs
+ ./Generate > ManySections.s
++ echo '.section .note.GNU-stack,"",@progbits' > ManySections.s
+ echo 'main = putStrLn "Running main..."' > Main.hs
+ '$(TEST_HC)' $(TEST_HC_OPTS) -c ManySections.s
+ '$(TEST_HC)' $(TEST_HC_OPTS) --make -O Main.hs ManySections.o
diff --git a/gnu/packages/patches/glib-gerror-null-format.patch b/gnu/packages/patches/glib-gerror-null-format.patch
new file mode 100644
index 0000000000..3b1f0dc582
--- /dev/null
+++ b/gnu/packages/patches/glib-gerror-null-format.patch
@@ -0,0 +1,137 @@
+From c4203f740ced1f1fc576caf1550441b57107fd00 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <pwithnall@endlessos.org>
+Date: Mon, 20 Feb 2023 16:41:23 +0000
+Subject: [PATCH] gerror: Emit a critical warning if the message format is NULL
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The code has warned about this since commit 6d9f874330 in 2011.
+
+glibc 2.37 has just started asserting if a `NULL` format is passed to
+`sprintf()`, which caused the existing GLib workaround to start
+asserting too.
+
+Bite the bullet and upgrade the warning for `format != NULL` to a
+critical warning. Projects have had 12 years to fix their code.
+
+The original bug reports
+(https://bugzilla.gnome.org/show_bug.cgi?id=660371,
+https://bugzilla.gnome.org/show_bug.cgi?id=560482) are actually both
+about a domain which is `0`, rather than a format which is `NULL`, which
+gives some confidence that this change will actually impact very little
+third party code.
+
+Since it doesn’t currently need changing, I have not touched the warning
+about `domain != 0`.
+
+Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
+
+Fixes: #2913
+---
+ glib/gerror.c | 8 +++++---
+ glib/tests/error.c | 38 +++++++++++++++++++++++---------------
+ 2 files changed, 28 insertions(+), 18 deletions(-)
+
+diff --git a/glib/gerror.c b/glib/gerror.c
+index 61817fa7bc..7ac85fc664 100644
+--- a/glib/gerror.c
++++ b/glib/gerror.c
+@@ -755,13 +755,14 @@ g_error_new_valist (GQuark domain,
+ const gchar *format,
+ va_list args)
+ {
++ g_return_val_if_fail (format != NULL, NULL);
++
+ /* Historically, GError allowed this (although it was never meant to work),
+ * and it has significant use in the wild, which g_return_val_if_fail
+ * would break. It should maybe g_return_val_if_fail in GLib 4.
+ * (GNOME#660371, GNOME#560482)
+ */
+ g_warn_if_fail (domain != 0);
+- g_warn_if_fail (format != NULL);
+
+ return g_error_new_steal (domain, code, g_strdup_vprintf (format, args), NULL);
+ }
+@@ -887,9 +888,10 @@ g_error_copy (const GError *error)
+ ErrorDomainInfo info;
+
+ g_return_val_if_fail (error != NULL, NULL);
+- /* See g_error_new_valist for why these don't return */
++ g_return_val_if_fail (error->message != NULL, NULL);
++
++ /* See g_error_new_valist for why this doesn’t return */
+ g_warn_if_fail (error->domain != 0);
+- g_warn_if_fail (error->message != NULL);
+
+ copy = g_error_new_steal (error->domain,
+ error->code,
+diff --git a/glib/tests/error.c b/glib/tests/error.c
+index fa3a25969d..8dd40aa566 100644
+--- a/glib/tests/error.c
++++ b/glib/tests/error.c
+@@ -129,17 +129,6 @@ test_new_valist_invalid_va (gpointer dummy,
+ * a %NULL format will crash on FreeBSD as its implementation of vasprintf()
+ * is less forgiving than Linux’s. That’s fine: it’s a programmer error in
+ * either case. */
+- const struct
+- {
+- GQuark domain;
+- const gchar *format;
+- }
+- tests[] =
+- {
+- { G_MARKUP_ERROR, NULL },
+- { 0, "Message" },
+- };
+- gsize i;
+
+ g_test_summary ("Test that g_error_new_valist() rejects invalid input");
+
+@@ -149,12 +138,31 @@ test_new_valist_invalid_va (gpointer dummy,
+ return;
+ }
+
+- for (i = 0; i < G_N_ELEMENTS (tests); i++)
+ {
+- GError *error = NULL, *error_copy = NULL;
++ GError *error = NULL;
+ va_list ap;
+
+- g_test_message ("Test %" G_GSIZE_FORMAT, i);
++ va_start (ap, dummy);
++
++#pragma GCC diagnostic push
++#pragma GCC diagnostic ignored "-Wformat-nonliteral"
++#pragma GCC diagnostic ignored "-Wformat-extra-args"
++
++ g_test_expect_message (G_LOG_DOMAIN,
++ G_LOG_LEVEL_CRITICAL,
++ "*g_error_new_valist: assertion 'format != NULL' failed*");
++ error = g_error_new_valist (G_MARKUP_ERROR, G_MARKUP_ERROR_EMPTY, NULL, ap);
++ g_test_assert_expected_messages ();
++ g_assert_null (error);
++
++#pragma GCC diagnostic pop
++
++ va_end (ap);
++ }
++
++ {
++ GError *error = NULL, *error_copy = NULL;
++ va_list ap;
+
+ va_start (ap, dummy);
+
+@@ -164,7 +172,7 @@ test_new_valist_invalid_va (gpointer dummy,
+ g_test_expect_message (G_LOG_DOMAIN,
+ G_LOG_LEVEL_WARNING,
+ "*g_error_new_valist: runtime check failed*");
+- error = g_error_new_valist (tests[i].domain, G_MARKUP_ERROR_EMPTY, tests[i].format, ap);
++ error = g_error_new_valist (0, G_MARKUP_ERROR_EMPTY, "Message", ap);
+ g_test_assert_expected_messages ();
+ g_assert_nonnull (error);
+
+--
+GitLab
+
diff --git a/gnu/packages/patches/glib-networking-disable-connection-tls1.2-test.patch b/gnu/packages/patches/glib-networking-disable-connection-tls1.2-test.patch
new file mode 100644
index 0000000000..fc61be38b6
--- /dev/null
+++ b/gnu/packages/patches/glib-networking-disable-connection-tls1.2-test.patch
@@ -0,0 +1,18 @@
+diff -u a/tls/tests/meson.build b/tls/tests/meson.build
+--- a/tls/tests/meson.build 2023-12-28 18:16:09.665443016 +0100
++++ b/tls/tests/meson.build 2023-12-28 18:16:47.517128845 +0100
+@@ -94,14 +94,5 @@
+ ]
+
+ test(program_name, exe, env: test_envs, depends: program[4])
+-
+- if program[0] == 'connection'
+- # Run the tests again, this time with TLS 1.3 disabled so we can test TLS 1.2.
+- if backend == 'gnutls'
+- test(program_name + '-tls1.2', exe, env: test_envs + ['G_TLS_GNUTLS_PRIORITY=NORMAL:%COMPAT:!VERS-TLS1.3'])
+- elif backend == 'openssl'
+- test(program_name + '-tls1.2', exe, env: test_envs + ['G_TLS_OPENSSL_MAX_PROTO=0x0303'])
+- endif
+- endif
+ endforeach
+ endforeach
diff --git a/gnu/packages/patches/glibc-2.37-versioned-locpath.patch b/gnu/packages/patches/glibc-2.37-versioned-locpath.patch
index 0acaeb1e46..1796a8a720 100644
--- a/gnu/packages/patches/glibc-2.37-versioned-locpath.patch
+++ b/gnu/packages/patches/glibc-2.37-versioned-locpath.patch
@@ -1,11 +1,3 @@
-From d73ba2caa10b8e9f51ff4239cc32eeb4e0de4279 Mon Sep 17 00:00:00 2001
-Message-Id: <d73ba2caa10b8e9f51ff4239cc32eeb4e0de4279.1683980025.git.dev@jpoiret.xyz>
-From: Josselin Poiret <dev@jpoiret.xyz>
-Date: Sat, 13 May 2023 14:10:43 +0200
-Subject: [PATCH] Add versioned locpath
-
-From: Josselin Poiret <dev@jpoiret.xyz>
-
The format of locale data can be incompatible between libc versions, and
loading incompatible data can lead to 'setlocale' returning EINVAL at best
or triggering an assertion failure at worst. See
@@ -20,20 +12,22 @@ that variable. So, if GUIX_LOCPATH=/foo:/bar, locale data is searched for in
That way, a single 'GUIX_LOCPATH' setting can work even if different libc
versions coexist on the system.
-
-This patch is adapted from the 2.35 patch.
-
----
- locale/newlocale.c | 15 ++--------
- locale/setlocale.c | 68 +++++++++++++++++++++++++++++++++++++-------
- string/Makefile | 1 +
- string/argz-suffix.c | 56 ++++++++++++++++++++++++++++++++++++
- string/argz.h | 10 +++++++
- 5 files changed, 127 insertions(+), 23 deletions(-)
- create mode 100644 string/argz-suffix.c
-
+diff --git a/locale/Makefile b/locale/Makefile
+index d7036b08..b5125166 100644
+--- a/locale/Makefile
++++ b/locale/Makefile
+@@ -94,7 +94,9 @@ localepath = "$(complocaledir):$(i18ndir)"
+ # -Iprograms doesn't really belong here, but this gets it at the head
+ # of the list instead of the tail, where CPPFLAGS-$(lib) gets added.
+ # We need it before the standard -I's to see programs/config.h first.
++# Define 'LOCALEDIR' for use in 'compute_locale_search_path'.
+ locale-CPPFLAGS = -DCOMPLOCALEDIR='"$(complocaledir)"' \
++ -DLOCALEDIR='"$(libdir)/locale"' \
+ -DLOCALE_ALIAS_PATH='"$(localedir)"' \
+ -Iprograms
+
diff --git a/locale/newlocale.c b/locale/newlocale.c
-index 108d2428bf..6218e0fa77 100644
+index 108d2428..6218e0fa 100644
--- a/locale/newlocale.c
+++ b/locale/newlocale.c
@@ -29,6 +29,7 @@
@@ -73,15 +67,15 @@ index 108d2428bf..6218e0fa77 100644
/* Get the names for the locales we are interested in. We either
allow a composite name or a single name. */
diff --git a/locale/setlocale.c b/locale/setlocale.c
-index dd73fa4248..d8eb799384 100644
+index 6a902faa..2d07a644 100644
--- a/locale/setlocale.c
+++ b/locale/setlocale.c
-@@ -213,12 +213,65 @@ setdata (int category, struct __locale_data *data)
+@@ -213,12 +213,60 @@ setdata (int category, struct __locale_data *data)
}
}
+/* Return in *LOCALE_PATH and *LOCALE_PATH_LEN the locale data search path as
-+ a colon-separated list. Return ENOMEN on error, zero otherwise. */
++ an argz list. Return ENOMEN on error, zero otherwise. */
+error_t
+compute_locale_search_path (char **locale_path, size_t *locale_path_len)
+{
@@ -93,8 +87,8 @@ index dd73fa4248..d8eb799384 100644
+ /* Entries in 'GUIX_LOCPATH' take precedence over 'LOCPATH'. These
+ entries are systematically prefixed with "/X.Y" where "X.Y" is the
+ libc version. */
-+ if (__argz_create_sep (guix_locpath_var, ':',
-+ locale_path, locale_path_len) != 0
++ if (__argz_add_sep (locale_path, locale_path_len,
++ guix_locpath_var, ':') != 0
+ || __argz_suffix_entries (locale_path, locale_path_len,
+ "/" VERSION) != 0)
+ goto bail_out;
@@ -102,27 +96,22 @@ index dd73fa4248..d8eb799384 100644
+
+ if (locpath_var != NULL && locpath_var[0] != '\0')
+ {
-+ char *reg_locale_path = NULL;
-+ size_t reg_locale_path_len = 0;
-+
-+ if (__argz_create_sep (locpath_var, ':',
-+ &reg_locale_path, &reg_locale_path_len) != 0)
-+ goto bail_out;
-+
-+ if (__argz_append (locale_path, locale_path_len,
-+ reg_locale_path, reg_locale_path_len) != 0)
++ if (__argz_add_sep (locale_path, locale_path_len,
++ locpath_var, ':') != 0)
+ goto bail_out;
+
-+ free (reg_locale_path);
+ }
+
-+ if (*locale_path != NULL)
-+ {
-+ /* Append the system default locale directory. */
-+ if (__argz_add_sep (locale_path, locale_path_len,
-+ _nl_default_locale_path, ':') != 0)
-+ goto bail_out;
-+ }
++ /* Append the system default locale directory. */
++ if (__argz_add_sep (locale_path, locale_path_len,
++ _nl_default_locale_path, ':') != 0)
++ goto bail_out;
++
++ /* Last, unconditionally append our own locale directory, which should
++ contain data for C.UTF-8. */
++ if (__argz_add_sep (locale_path, locale_path_len,
++ LOCALEDIR "/" VERSION, ':') != 0)
++ goto bail_out;
+
+ return 0;
+
@@ -143,7 +132,7 @@ index dd73fa4248..d8eb799384 100644
char *composite;
/* Sanity check for CATEGORY argument. */
-@@ -249,17 +302,10 @@ setlocale (int category, const char *locale)
+@@ -249,17 +308,10 @@ setlocale (int category, const char *locale)
locale_path = NULL;
locale_path_len = 0;
@@ -165,7 +154,7 @@ index dd73fa4248..d8eb799384 100644
if (category == LC_ALL)
diff --git a/string/Makefile b/string/Makefile
-index 3eced0d027..a7e68729ad 100644
+index 8cdfd5b0..6b0d606d 100644
--- a/string/Makefile
+++ b/string/Makefile
@@ -51,6 +51,7 @@ routines := \
@@ -178,10 +167,10 @@ index 3eced0d027..a7e68729ad 100644
bzero \
diff --git a/string/argz-suffix.c b/string/argz-suffix.c
new file mode 100644
-index 0000000000..505b0f248c
+index 00000000..505b0f24
--- /dev/null
+++ b/string/argz-suffix.c
-@@ -0,0 +1,56 @@
+@@ -0,0 +1,58 @@
+/* Copyright (C) 2015 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ludovic Courtès <ludo@gnu.org>.
@@ -213,6 +202,8 @@ index 0000000000..505b0f248c
+ size_t suffix_len = strlen (suffix);
+ size_t count = __argz_count (*argz, *argz_len);
+ size_t new_argz_len = *argz_len + count * suffix_len;
++ if (new_argz_len == 0)
++ return 0;
+ char *new_argz = malloc (new_argz_len);
+
+ if (new_argz)
@@ -239,7 +230,7 @@ index 0000000000..505b0f248c
+}
+weak_alias (__argz_suffix_entries, argz_suffix_entries)
diff --git a/string/argz.h b/string/argz.h
-index cbc588a8e6..bc6e484c9d 100644
+index cbc588a8..bc6e484c 100644
--- a/string/argz.h
+++ b/string/argz.h
@@ -108,6 +108,16 @@ extern error_t argz_replace (char **__restrict __argz,
@@ -259,6 +250,3 @@ index cbc588a8e6..bc6e484c9d 100644
/* Returns the next entry in ARGZ & ARGZ_LEN after ENTRY, or NULL if there
are no more. If entry is NULL, then the first entry is returned. This
---
-2.40.1
-
diff --git a/gnu/packages/patches/glibc-2.38-ldd-x86_64.patch b/gnu/packages/patches/glibc-2.38-ldd-x86_64.patch
new file mode 100644
index 0000000000..9db412b5f2
--- /dev/null
+++ b/gnu/packages/patches/glibc-2.38-ldd-x86_64.patch
@@ -0,0 +1,8 @@
+By default, 'RTDLLIST' in 'ldd' refers to 'lib64/ld-linux-x86-64.so', whereas
+it's in 'lib/' for us. This patch fixes that.
+
+--- glibc-2.38/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed
++++ glibc-2.38/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed
+@@ -1 +1 @@
+-s_^\(RTLDLIST=\)\(.*lib\)\(\|64\|x32\)\(/[^/]*\)\(-x86-64\|-x32\)\(\.so\.[0-9.]*\)[ ]*$_\1"\2\4\6 \264\4-x86-64\6 \2x32\4-x32\6"_
++s_^\(RTLDLIST=\)\(.*lib\)\(\|64\|x32\)\(/[^/]*\)\(-x86-64\|-x32\)\(\.so\.[0-9.]*\)[ ]*$_\1"\2\4\6 \2\4-x86-64\6 \2x32\4-x32\6"_
diff --git a/gnu/packages/patches/glibc-2.39-bootstrap-system.patch b/gnu/packages/patches/glibc-2.39-bootstrap-system.patch
new file mode 100644
index 0000000000..5495b35948
--- /dev/null
+++ b/gnu/packages/patches/glibc-2.39-bootstrap-system.patch
@@ -0,0 +1,69 @@
+We want to allow builds in chroots that lack /bin/sh. Thus, system(3)
+and popen(3) need to be tweaked to use the right shell. For the bootstrap
+glibc, we just use whatever `sh' can be found in $PATH. The final glibc
+instead uses the hard-coded absolute file name of `bash'.
+
+In addition, status should be initialized to 0 and not -1.
+
+Adapted to glibc-2.39.
+
+diff --git a/libio/iopopen.c b/libio/iopopen.c
+index ebc381ed7c..e0d3ed1bc3 100644
+--- a/libio/iopopen.c
++++ b/libio/iopopen.c
+@@ -85,8 +85,8 @@ spawn_process (posix_spawn_file_actions_t *fa, FILE *fp, const char *command,
+ return false;
+ }
+
+- err = __posix_spawn (&((_IO_proc_file *) fp)->pid, _PATH_BSHELL, fa, 0,
++ err = __posix_spawnp (&((_IO_proc_file *) fp)->pid, "sh", fa, 0,
+ (char *const[]){ (char*) "sh", (char*) "-c", (char*) "--",
+ (char *) command, NULL }, __environ);
+ if (err != 0)
+ return err;
+diff --git a/sysdeps/posix/system.c b/sysdeps/posix/system.c
+index a03f478fc7..94da6facf3 100644
+--- a/sysdeps/posix/system.c
++++ b/sysdeps/posix/system.c
+@@ -101,7 +101,7 @@ cancel_handler (void *arg)
+ static int
+ do_system (const char *line)
+ {
+- int status = -1;
++ int status = 0;
+ int ret;
+ pid_t pid;
+ struct sigaction sa;
+@@ -145,7 +145,7 @@ do_system (const char *line)
+ __posix_spawnattr_setflags (&spawn_attr,
+ POSIX_SPAWN_SETSIGDEF | POSIX_SPAWN_SETSIGMASK);
+
+- ret = __posix_spawn (&pid, SHELL_PATH, 0, &spawn_attr,
++ ret = __posix_spawnp (&pid, SHELL_NAME, 0, &spawn_attr,
+ (char *const[]){ (char *) SHELL_NAME,
+ (char *) "-c",
+ (char *) line, NULL },
+
+--- a/include/spawn.h
++++ b/include/spawn.h
+@@ -5,6 +5,9 @@
+ __typeof (posix_spawn) __posix_spawn;
+ libc_hidden_proto (__posix_spawn)
+
++__typeof (posix_spawnp) __posix_spawnp;
++libc_hidden_proto (__posix_spawnp)
++
+ __typeof (posix_spawn_file_actions_addclose)
+ __posix_spawn_file_actions_addclose attribute_hidden;
+
+--- a/posix/spawnp.c
++++ b/posix/spawnp.c
+@@ -31,6 +31,7 @@ __posix_spawnp (pid_t *pid, const char *file,
+ SPAWN_XFLAGS_USE_PATH);
+ }
+ versioned_symbol (libc, __posix_spawnp, posix_spawnp, GLIBC_2_15);
++libc_hidden_def (__posix_spawnp)
+
+
+ #if SHLIB_COMPAT (libc, GLIBC_2_2, GLIBC_2_15)
+
diff --git a/gnu/packages/patches/glibc-bootstrap-system.patch b/gnu/packages/patches/glibc-bootstrap-system.patch
index 9c0fac3ff5..c1d532198e 100644
--- a/gnu/packages/patches/glibc-bootstrap-system.patch
+++ b/gnu/packages/patches/glibc-bootstrap-system.patch
@@ -6,23 +6,23 @@ instead uses the hard-coded absolute file name of `bash'.
In addition, status should be initialized to 0 and not -1.
diff --git a/libio/iopopen.c b/libio/iopopen.c
-index ebc381ed7c..e0d3ed1bc3 100644
+index 4cc405f2de..8842c989c8 100644
--- a/libio/iopopen.c
+++ b/libio/iopopen.c
-@@ -85,7 +85,7 @@ spawn_process (posix_spawn_file_actions_t *fa, FILE *fp, const char *command,
- return false;
+@@ -86,7 +86,7 @@ spawn_process (posix_spawn_file_actions_t *fa, FILE *fp, const char *command,
+ }
}
-- if (__posix_spawn (&((_IO_proc_file *) fp)->pid, _PATH_BSHELL, fa, 0,
-+ if (__posix_spawnp (&((_IO_proc_file *) fp)->pid, "sh", fa, 0,
- (char *const[]){ (char*) "sh", (char*) "-c",
- (char *) command, NULL }, __environ) != 0)
- return false;
+- err = __posix_spawn (&((_IO_proc_file *) fp)->pid, _PATH_BSHELL, fa, 0,
++ err = __posix_spawnp (&((_IO_proc_file *) fp)->pid, "sh", fa, 0,
+ (char *const[]){ (char*) "sh", (char*) "-c", (char*) "--",
+ (char *) command, NULL }, __environ);
+ if (err != 0)
diff --git a/sysdeps/posix/system.c b/sysdeps/posix/system.c
-index a03f478fc7..94da6facf3 100644
+index 488b95163b..56b8a028ae 100644
--- a/sysdeps/posix/system.c
+++ b/sysdeps/posix/system.c
-@@ -101,7 +101,7 @@ cancel_handler (void *arg)
+@@ -100,7 +100,7 @@ cancel_handler (void *arg)
static int
do_system (const char *line)
{
@@ -31,7 +31,7 @@ index a03f478fc7..94da6facf3 100644
int ret;
pid_t pid;
struct sigaction sa;
-@@ -145,7 +145,7 @@ do_system (const char *line)
+@@ -144,7 +144,7 @@ do_system (const char *line)
__posix_spawnattr_setflags (&spawn_attr,
POSIX_SPAWN_SETSIGDEF | POSIX_SPAWN_SETSIGMASK);
@@ -39,8 +39,9 @@ index a03f478fc7..94da6facf3 100644
+ ret = __posix_spawnp (&pid, SHELL_NAME, 0, &spawn_attr,
(char *const[]){ (char *) SHELL_NAME,
(char *) "-c",
- (char *) line, NULL },
-
+ (char *) "--",
+diff --git a/include/spawn.h b/include/spawn.h
+index 4a0b1849da..9e47f74391 100644
--- a/include/spawn.h
+++ b/include/spawn.h
@@ -5,6 +5,9 @@
diff --git a/gnu/packages/patches/glibc-versioned-locpath.patch b/gnu/packages/patches/glibc-versioned-locpath.patch
index bc7652127f..8702531934 100644
--- a/gnu/packages/patches/glibc-versioned-locpath.patch
+++ b/gnu/packages/patches/glibc-versioned-locpath.patch
@@ -54,12 +54,12 @@ diff --git a/locale/setlocale.c b/locale/setlocale.c
index ead030d..0c0e314 100644
--- a/locale/setlocale.c
+++ b/locale/setlocale.c
-@@ -215,12 +215,65 @@ setdata (int category, struct __locale_data *data)
+@@ -215,12 +215,54 @@ setdata (int category, struct __locale_data *data)
}
}
+/* Return in *LOCALE_PATH and *LOCALE_PATH_LEN the locale data search path as
-+ a colon-separated list. Return ENOMEN on error, zero otherwise. */
++ an argz list. Return ENOMEN on error, zero otherwise. */
+error_t
+compute_locale_search_path (char **locale_path, size_t *locale_path_len)
+{
@@ -71,8 +71,8 @@ index ead030d..0c0e314 100644
+ /* Entries in 'GUIX_LOCPATH' take precedence over 'LOCPATH'. These
+ entries are systematically prefixed with "/X.Y" where "X.Y" is the
+ libc version. */
-+ if (__argz_create_sep (guix_locpath_var, ':',
-+ locale_path, locale_path_len) != 0
++ if (__argz_add_sep (locale_path, locale_path_len,
++ guix_locpath_var, ':') != 0
+ || __argz_suffix_entries (locale_path, locale_path_len,
+ "/" VERSION) != 0)
+ goto bail_out;
@@ -80,27 +80,16 @@ index ead030d..0c0e314 100644
+
+ if (locpath_var != NULL && locpath_var[0] != '\0')
+ {
-+ char *reg_locale_path = NULL;
-+ size_t reg_locale_path_len = 0;
-+
-+ if (__argz_create_sep (locpath_var, ':',
-+ &reg_locale_path, &reg_locale_path_len) != 0)
-+ goto bail_out;
-+
-+ if (__argz_append (locale_path, locale_path_len,
-+ reg_locale_path, reg_locale_path_len) != 0)
++ if (__argz_add_sep (locale_path, locale_path_len,
++ locpath_var, ':') != 0)
+ goto bail_out;
+
-+ free (reg_locale_path);
+ }
+
-+ if (*locale_path != NULL)
-+ {
-+ /* Append the system default locale directory. */
-+ if (__argz_add_sep (locale_path, locale_path_len,
-+ _nl_default_locale_path, ':') != 0)
-+ goto bail_out;
-+ }
++ /* Append the system default locale directory. */
++ if (__argz_add_sep (locale_path, locale_path_len,
++ _nl_default_locale_path, ':') != 0)
++ goto bail_out;
+
+ return 0;
+
@@ -160,7 +149,7 @@ new file mode 100644
index 0000000..505b0f2
--- /dev/null
+++ b/string/argz-suffix.c
-@@ -0,0 +1,56 @@
+@@ -0,0 +1,58 @@
+/* Copyright (C) 2015 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ludovic Courtès <ludo@gnu.org>.
@@ -192,6 +181,8 @@ index 0000000..505b0f2
+ size_t suffix_len = strlen (suffix);
+ size_t count = __argz_count (*argz, *argz_len);
+ size_t new_argz_len = *argz_len + count * suffix_len;
++ if (new_argz_len == 0)
++ return 0;
+ char *new_argz = malloc (new_argz_len);
+
+ if (new_argz)
diff --git a/gnu/packages/patches/gnumach-support-noide.patch b/gnu/packages/patches/gnumach-support-noide.patch
deleted file mode 100644
index 723d4bcac4..0000000000
--- a/gnu/packages/patches/gnumach-support-noide.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-Upstream status: Taken from Debian/upsream.
-
- https://salsa.debian.org/hurd-team/gnumach/-/blob/master/debian/patches/90_noide.patch
-
-This supports using `noide' on the gnumach command line, disabling
-gnumach IDE support and thus forcing use of rumdisk.
-
----
- linux/dev/glue/block.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
---- a/linux/dev/glue/block.c
-+++ b/linux/dev/glue/block.c
-@@ -207,7 +207,10 @@ int
- blk_dev_init ()
- {
- #ifdef CONFIG_BLK_DEV_IDE
-- ide_init ();
-+ extern char *kernel_cmdline;
-+ if (strncmp(kernel_cmdline, "noide", 5) &&
-+ !strstr(kernel_cmdline, " noide"))
-+ ide_init ();
- #endif
- #ifdef CONFIG_BLK_DEV_FD
- floppy_init ();
diff --git a/gnu/packages/patches/gnutls-cross.patch b/gnu/packages/patches/gnutls-cross.patch
deleted file mode 100644
index 82d08da24e..0000000000
--- a/gnu/packages/patches/gnutls-cross.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-Not sent upstream.
-
-From e23de62e28f64599148ff06e439fac116a391299 Mon Sep 17 00:00:00 2001
-From: "Jan (janneke) Nieuwenhuizen" <janneke@gnu.org>
-Date: Fri, 10 Apr 2020 07:24:48 +0200
-Subject: [PATCH] guile: Cross build fix.
-
-To cross-build, both the host guile and the native guile-for-build
-must be available. If the native guile is not available, no snarfing
-is done and the guile cross build is skipped.
-
-During the cross-build gnutls.scm does not load when compliling
-extra.scm, becase of missing definitions from guile-gnutls-v-2.
-
-* guile/modules/gnutls.in (protocol/ssl-3 protocol/tls-1.0,
-protocol/tls-1.1, credentials/anonymous, cipher/rijndael-256-cbc,
-cipher/rijndael-128-cbc, cipher/rijndael-cbc, cipher/arcfour-128,
-certificate-verify/allow-any-x509-v1-ca-certificate,
-certificate-verify/allow-x509-v1-ca-certificate): Define to #f
-initially. When "GNUTLS_GUILE_CROSS_COMPILING" not set, set! to value
-from "guile-gnutls-v-2" load-extension C module.
----
- guile/modules/gnutls.in | 40 +++++++++++++++++++++++++++-------------
- 1 file changed, 27 insertions(+), 13 deletions(-)
-
-diff --git a/guile/modules/gnutls.in b/guile/modules/gnutls.in
-index 6461c404a..954e315de 100644
---- a/guile/modules/gnutls.in
-+++ b/guile/modules/gnutls.in
-@@ -564,22 +564,36 @@ This defines 'variable' as an alias for 'alias', and emits a warning when
- (identifier? #'id)
- #'alias))))))))))
-
--
- ;; Renaming.
--(define protocol/ssl-3 protocol/ssl3)
--(define protocol/tls-1.0 protocol/tls1-0)
--(define protocol/tls-1.1 protocol/tls1-1)
-+(define protocol/ssl-3 #f)
-+(define protocol/tls-1.0 #f)
-+(define protocol/tls-1.1 #f)
-
- ;; Aliases.
--(define credentials/anonymous credentials/anon)
--(define cipher/rijndael-256-cbc cipher/aes-256-cbc)
--(define cipher/rijndael-128-cbc cipher/aes-128-cbc)
--(define cipher/rijndael-cbc cipher/aes-128-cbc)
--(define cipher/arcfour-128 cipher/arcfour)
--(define certificate-verify/allow-any-x509-v1-ca-certificate
-- certificate-verify/allow-any-x509-v1-ca-crt)
--(define certificate-verify/allow-x509-v1-ca-certificate
-- certificate-verify/allow-x509-v1-ca-crt)
-+(define credentials/anonymous #f)
-+(define cipher/rijndael-256-cbc #f)
-+(define cipher/rijndael-128-cbc #f)
-+(define cipher/rijndael-cbc #f)
-+(define cipher/arcfour-128 #f)
-+(define certificate-verify/allow-any-x509-v1-ca-certificate #f)
-+(define certificate-verify/allow-x509-v1-ca-certificate #f)
-+
-+(unless (getenv "GNUTLS_GUILE_CROSS_COMPILING")
-+ ;; Renaming.
-+ (set! protocol/ssl-3 protocol/ssl3)
-+ (set! protocol/tls-1.0 protocol/tls1-0)
-+ (set! protocol/tls-1.1 protocol/tls1-1)
-+
-+ ;; Aliases.
-+ (set! credentials/anonymous credentials/anon)
-+ (set! cipher/rijndael-256-cbc cipher/aes-256-cbc)
-+ (set! cipher/rijndael-128-cbc cipher/aes-128-cbc)
-+ (set! cipher/rijndael-cbc cipher/aes-128-cbc)
-+ (set! cipher/arcfour-128 cipher/arcfour)
-+ (set! certificate-verify/allow-any-x509-v1-ca-certificate
-+ certificate-verify/allow-any-x509-v1-ca-crt)
-+ (set! certificate-verify/allow-x509-v1-ca-certificate
-+ certificate-verify/allow-x509-v1-ca-crt))
-
- ;; Deprecated OpenPGP bindings.
- (define-deprecated certificate-type/openpgp)
---
-2.26.0
-
diff --git a/gnu/packages/patches/hurd-add-without-rump-configure-option.patch b/gnu/packages/patches/hurd-add-without-rump-configure-option.patch
deleted file mode 100644
index 14cefdeac1..0000000000
--- a/gnu/packages/patches/hurd-add-without-rump-configure-option.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From 80bc1678b7b859decae536e726a3e5870cbe84eb Mon Sep 17 00:00:00 2001
-Message-Id: <80bc1678b7b859decae536e726a3e5870cbe84eb.1678657122.git.dev@jpoiret.xyz>
-In-Reply-To: <c9b816085272dd07ed762c5ae775a994fa77df56.1678657122.git.dev@jpoiret.xyz>
-References: <c9b816085272dd07ed762c5ae775a994fa77df56.1678657122.git.dev@jpoiret.xyz>
-From: Josselin Poiret <dev@jpoiret.xyz>
-Date: Mon, 31 Oct 2022 13:39:28 +0100
-Subject: [PATCH 2/2] Add --without-rump configure option
-
-From: Samuel Thibault <samuel.thibault@ens-lyon.org>
-
-To allow cross-builds which cannot use AC_LINK_IFELSE at all.
----
- configure.ac | 47 ++++++++++++++++++++++++++---------------------
- 1 file changed, 26 insertions(+), 21 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 0c1bf9b2..849b5fad 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -234,33 +234,38 @@ AS_IF([test "x$with_libz" != xno], [
- ])
- AC_SUBST([HAVE_LIBZ])
-
--# Save
--oldLIBS="$LIBS"
-+AC_ARG_WITH([rump],
-+ [AS_HELP_STRING([--without-rump], [disable rump])], , [with_rump=yes])
-
--LIBS="$oldLIBS -lrump"
--AC_LINK_IFELSE(
-- [AC_LANG_PROGRAM(
-- [[#include <hurd.h>
-+AS_IF([test "x$with_rump" != xno], [
-+ # Save
-+ oldLIBS="$LIBS"
-+
-+ LIBS="$oldLIBS -lrump"
-+ AC_LINK_IFELSE(
-+ [AC_LANG_PROGRAM(
-+ [[#include <hurd.h>
- #define _STANDALONE
- #include <rump/rump.h>]],
-- [])],
-- [HAVE_LIBRUMP=yes],
-- [HAVE_LIBRUMP=no])
--AC_SUBST([HAVE_LIBRUMP])
--
--LIBS="$oldLIBS -lrumpvfs_nofifofs_pic"
--AC_LINK_IFELSE(
-- [AC_LANG_PROGRAM(
-- [[#include <hurd.h>
-+ [])],
-+ [HAVE_LIBRUMP=yes],
-+ [HAVE_LIBRUMP=no])
-+ AC_SUBST([HAVE_LIBRUMP])
-+
-+ LIBS="$oldLIBS -lrumpvfs_nofifofs_pic"
-+ AC_LINK_IFELSE(
-+ [AC_LANG_PROGRAM(
-+ [[#include <hurd.h>
- #define _STANDALONE
- #include <rump/rump.h>]],
-- [])],
-- [HAVE_LIBRUMP_VFSNOFIFO=yes],
-- [HAVE_LIBRUMP_VFSNOFIFO=no])
--AC_SUBST([HAVE_LIBRUMP_VFSNOFIFO])
-+ [])],
-+ [HAVE_LIBRUMP_VFSNOFIFO=yes],
-+ [HAVE_LIBRUMP_VFSNOFIFO=no])
-+ AC_SUBST([HAVE_LIBRUMP_VFSNOFIFO])
-
--# Reset
--LIBS="$oldLIBS"
-+ # Reset
-+ LIBS="$oldLIBS"
-+])
-
- AC_ARG_ENABLE(boot-store-types,
- [ --enable-boot-store-types=TYPES...
---
-2.39.1
-
diff --git a/gnu/packages/patches/hurd-fix-rumpdisk-build.patch b/gnu/packages/patches/hurd-fix-rumpdisk-build.patch
deleted file mode 100644
index 4ecd5ed0ee..0000000000
--- a/gnu/packages/patches/hurd-fix-rumpdisk-build.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-Upstream status: taken from upstream.
-
-From a2b0f721d077fdc5c9decb21b975b58fb51a3e8f Mon Sep 17 00:00:00 2001
-From: Janneke Nieuwenhuizen <janneke@gnu.org>
-Date: Mon, 22 May 2023 19:21:47 +0200
-Subject: [PATCH] rumpdisk: Do not assume FHS /usr/lib, fixes Guix cross-build.
-
----
- rumpdisk/Makefile | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/rumpdisk/Makefile b/rumpdisk/Makefile
-index 60a209b3..b59aaf9a 100644
---- a/rumpdisk/Makefile
-+++ b/rumpdisk/Makefile
-@@ -1,5 +1,5 @@
- #
--# Copyright (C) 2019 Free Software Foundation, Inc.
-+# Copyright (C) 2019, 2023 Free Software Foundation, Inc.
- #
- # This program is free software; you can redistribute it and/or
- # modify it under the terms of the GNU General Public License as
-@@ -15,7 +15,6 @@
- # along with this program; if not, write to the Free Software
- # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
--RUMPPATH=/usr/lib
- RUMPLIBS=rump rumpuser rumpdev rumpdev_disk rumpdev_pci rumpvfs rumpdev_ahcisata rumpdev_piixide rumpdev_ata
- RUMPEXTRA=rumpdev_scsipi
-
-@@ -38,6 +37,6 @@ target = rumpdisk
- OBJS = $(SRCS:.c=.o)
- HURDLIBS = machdev ports trivfs shouldbeinlibc iohelp ihash fshelp
- LDLIBS += -lpthread -lpciaccess -ldl
--LDLIBS += -Wl,--whole-archive $(RUMPLIBS:%=$(RUMPPATH)/lib%_pic.a) -Wl,--no-whole-archive $(RUMPEXTRA:%=$(RUMPPATH)/lib%_pic.a)
-+LDLIBS += -Wl,--whole-archive $(RUMPLIBS:%=-l%_pic) -Wl,--no-whole-archive $(RUMPEXTRA:%=-l%_pic)
-
- include ../Makeconf
---
-2.40.1
-
diff --git a/gnu/packages/patches/hurd-fix-types-of-read-write-and-readables-methods-2.patch b/gnu/packages/patches/hurd-fix-types-of-read-write-and-readables-methods-2.patch
deleted file mode 100644
index dda95fb3d5..0000000000
--- a/gnu/packages/patches/hurd-fix-types-of-read-write-and-readables-methods-2.patch
+++ /dev/null
@@ -1,155 +0,0 @@
-From eb1b2057d839249c955189c2cba8bc37c66d4151 Mon Sep 17 00:00:00 2001
-Message-Id: <eb1b2057d839249c955189c2cba8bc37c66d4151.1678793830.git.dev@jpoiret.xyz>
-In-Reply-To: <f0cacda83293e4d792b8d12665fcb795dc11d6fc.1678793830.git.dev@jpoiret.xyz>
-References: <f0cacda83293e4d792b8d12665fcb795dc11d6fc.1678793830.git.dev@jpoiret.xyz>
-From: Josselin Poiret <dev@jpoiret.xyz>
-Date: Tue, 30 Aug 2022 00:59:59 +0200
-Subject: [PATCH 2/2] Fix types of read write and readables methods
-
-From: Samuel Thibault <samuel.thibault@ens-lyon.org>
-
-This completes 5adb4b834b1e
----
- hurd/pci.defs | 2 +-
- lwip/io-ops.c | 6 +++---
- lwip/port/netif/hurdtunif.c | 6 +++---
- lwip/socket-ops.c | 4 ++--
- pci-arbiter/pci-ops.c | 4 ++--
- storeio/open.c | 2 +-
- 6 files changed, 12 insertions(+), 12 deletions(-)
-
-diff --git a/hurd/pci.defs b/hurd/pci.defs
-index 23c90334..e258f5ce 100644
---- a/hurd/pci.defs
-+++ b/hurd/pci.defs
-@@ -51,7 +51,7 @@ routine pci_conf_write(
- */
- routine pci_get_ndevs(
- master: pci_t;
-- out ndevs: vm_size_t
-+ out ndevs: mach_msg_type_number_t
- );
-
- /*
-diff --git a/lwip/io-ops.c b/lwip/io-ops.c
-index 5461d695..6cc724ce 100644
---- a/lwip/io-ops.c
-+++ b/lwip/io-ops.c
-@@ -36,7 +36,7 @@ error_t
- lwip_S_io_write (struct sock_user *user,
- const_data_t data,
- size_t datalen,
-- off_t offset, mach_msg_type_number_t * amount)
-+ off_t offset, vm_size_t * amount)
- {
- int sent;
- int sockflags;
-@@ -59,7 +59,7 @@ lwip_S_io_write (struct sock_user *user,
- error_t
- lwip_S_io_read (struct sock_user * user,
- data_t *data,
-- size_t * datalen, off_t offset, mach_msg_type_number_t amount)
-+ size_t * datalen, off_t offset, vm_size_t amount)
- {
- error_t err;
- int alloced = 0;
-@@ -112,7 +112,7 @@ lwip_S_io_seek (struct sock_user * user,
- }
-
- error_t
--lwip_S_io_readable (struct sock_user * user, mach_msg_type_number_t * amount)
-+lwip_S_io_readable (struct sock_user * user, vm_size_t * amount)
- {
- error_t err;
- if (!user)
-diff --git a/lwip/port/netif/hurdtunif.c b/lwip/port/netif/hurdtunif.c
-index 79a082cf..c976703f 100644
---- a/lwip/port/netif/hurdtunif.c
-+++ b/lwip/port/netif/hurdtunif.c
-@@ -348,7 +348,7 @@ error_t
- trivfs_S_io_read (struct trivfs_protid *cred,
- mach_port_t reply, mach_msg_type_name_t reply_type,
- data_t *data, mach_msg_type_number_t * data_len,
-- loff_t offs, size_t amount)
-+ loff_t offs, vm_size_t amount)
- {
- struct hurdtunif *tunif;
- struct pbuf *p;
-@@ -423,7 +423,7 @@ trivfs_S_io_write (struct trivfs_protid * cred,
- mach_msg_type_name_t replytype,
- const_data_t data,
- mach_msg_type_number_t datalen,
-- off_t offset, mach_msg_type_number_t * amount)
-+ off_t offset, vm_size_t * amount)
- {
- struct netif *netif;
- struct pbuf *p, *q;
-@@ -482,7 +482,7 @@ trivfs_S_io_write (struct trivfs_protid * cred,
- kern_return_t
- trivfs_S_io_readable (struct trivfs_protid * cred,
- mach_port_t reply, mach_msg_type_name_t replytype,
-- mach_msg_type_number_t * amount)
-+ vm_size_t * amount)
- {
- struct hurdtunif *tunif;
-
-diff --git a/lwip/socket-ops.c b/lwip/socket-ops.c
-index 5b50f58c..d5e3cb07 100644
---- a/lwip/socket-ops.c
-+++ b/lwip/socket-ops.c
-@@ -342,7 +342,7 @@ lwip_S_socket_send (struct sock_user * user,
- const mach_port_t * ports,
- size_t nports,
- const char *control,
-- size_t controllen, mach_msg_type_number_t * amount)
-+ size_t controllen, vm_size_t * amount)
- {
- int sent;
- int sockflags;
-@@ -392,7 +392,7 @@ lwip_S_socket_recv (struct sock_user * user,
- size_t * nports,
- char **control,
- size_t * controllen,
-- int *outflags, mach_msg_type_number_t amount)
-+ int *outflags, vm_size_t amount)
- {
- error_t err;
- union { struct sockaddr_storage storage; struct sockaddr sa; } addr;
-diff --git a/pci-arbiter/pci-ops.c b/pci-arbiter/pci-ops.c
-index ef27a3cd..d721f368 100644
---- a/pci-arbiter/pci-ops.c
-+++ b/pci-arbiter/pci-ops.c
-@@ -80,7 +80,7 @@ calculate_ndevs (struct iouser *user)
- */
- error_t
- S_pci_conf_read (struct protid * master, int reg, char **data,
-- size_t * datalen, mach_msg_type_number_t amount)
-+ size_t * datalen, vm_size_t amount)
- {
- error_t err;
- pthread_mutex_t *lock;
-@@ -129,7 +129,7 @@ S_pci_conf_read (struct protid * master, int reg, char **data,
- /* Write `datalen' bytes from `data'. `amount' is updated. */
- error_t
- S_pci_conf_write (struct protid * master, int reg, const char *data, size_t datalen,
-- mach_msg_type_number_t * amount)
-+ vm_size_t * amount)
- {
- error_t err;
- pthread_mutex_t *lock;
-diff --git a/storeio/open.c b/storeio/open.c
-index f8eb6ce0..74902520 100644
---- a/storeio/open.c
-+++ b/storeio/open.c
-@@ -75,7 +75,7 @@ open_write (struct open *open, off_t offs, const void *buf, size_t len,
- otherwise the error code is returned. */
- error_t
- open_read (struct open *open, off_t offs, vm_size_t amount,
-- void **buf, size_t *len)
-+ void **buf, vm_size_t *len)
- {
- error_t err;
- if (offs < 0)
---
-2.39.1
-
diff --git a/gnu/packages/patches/hurd-fix-types-of-read-write-and-readables-methods.patch b/gnu/packages/patches/hurd-fix-types-of-read-write-and-readables-methods.patch
deleted file mode 100644
index aebe8d6847..0000000000
--- a/gnu/packages/patches/hurd-fix-types-of-read-write-and-readables-methods.patch
+++ /dev/null
@@ -1,891 +0,0 @@
-From 5adb4b834b1eba82b7f3eca6324bed0355cae0af Mon Sep 17 00:00:00 2001
-Message-Id: <5adb4b834b1eba82b7f3eca6324bed0355cae0af.1678815112.git.dev@jpoiret.xyz>
-From: Josselin Poiret <dev@jpoiret.xyz>
-Date: Mon, 29 Aug 2022 21:36:17 +0200
-Subject: [PATCH] Fix types of read write and readables methods
-
-From: Etienne Brateau <etienne.brateau@gmail.com>
-
-Message-Id: <20220829193617.13481-1-etienne.brateau@gmail.com>
----
- boot/boot.c | 6 +++---
- console-client/trans.c | 4 ++--
- libdiskfs/io-read.c | 2 +-
- libdiskfs/io-readable.c | 2 +-
- libdiskfs/io-write.c | 2 +-
- libnetfs/io-read.c | 2 +-
- libnetfs/io-readable.c | 2 +-
- libnetfs/io-write.c | 2 +-
- libpager/data-return.c | 2 +-
- libstore/nbd.c | 6 +++---
- libstore/rdwr.c | 4 ++--
- libtrivfs/io-read.c | 2 +-
- libtrivfs/io-readable.c | 2 +-
- libtrivfs/io-write.c | 2 +-
- mach-defpager/default_pager.c | 4 ++--
- pfinet/io-ops.c | 10 +++++-----
- pfinet/socket-ops.c | 16 ++++++++--------
- pfinet/tunnel.c | 6 +++---
- pflocal/io.c | 6 +++---
- pflocal/socket.c | 14 +++++++-------
- storeio/io.c | 8 ++++----
- storeio/open.c | 4 ++--
- storeio/open.h | 6 +++---
- term/ptyio.c | 4 ++--
- term/term.h | 4 ++--
- term/users.c | 14 +++++++-------
- trans/fifo.c | 10 +++++-----
- trans/firmlink.c | 4 ++--
- trans/hello-mt.c | 2 +-
- trans/hello.c | 2 +-
- trans/mtab.c | 4 ++--
- trans/new-fifo.c | 10 +++++-----
- trans/null.c | 8 ++++----
- trans/proxy-defpager.c | 6 +++---
- trans/random.c | 6 +++---
- trans/streamio.c | 6 +++---
- 36 files changed, 97 insertions(+), 97 deletions(-)
-
-diff --git a/boot/boot.c b/boot/boot.c
-index 1b10c86b..f326e5b2 100644
---- a/boot/boot.c
-+++ b/boot/boot.c
-@@ -1412,7 +1412,7 @@ S_io_write (mach_port_t object,
- const_data_t data,
- mach_msg_type_number_t datalen,
- off_t offset,
-- mach_msg_type_number_t *amtwritten)
-+ vm_size_t *amtwritten)
- {
- if (object != pseudo_console)
- return EOPNOTSUPP;
-@@ -1437,7 +1437,7 @@ S_io_read (mach_port_t object,
- data_t *data,
- mach_msg_type_number_t *datalen,
- off_t offset,
-- mach_msg_type_number_t amount)
-+ vm_size_t amount)
- {
- mach_msg_type_number_t avail;
-
-@@ -1489,7 +1489,7 @@ kern_return_t
- S_io_readable (mach_port_t object,
- mach_port_t reply_port,
- mach_msg_type_name_t reply_type,
-- mach_msg_type_number_t *amt)
-+ vm_size_t *amt)
- {
- if (object != pseudo_console)
- return EOPNOTSUPP;
-diff --git a/console-client/trans.c b/console-client/trans.c
-index fe4b9ca4..49e30a61 100644
---- a/console-client/trans.c
-+++ b/console-client/trans.c
-@@ -578,7 +578,7 @@ netfs_S_io_read (struct protid *user,
- data_t *data,
- mach_msg_type_number_t *datalen,
- off_t offset,
-- mach_msg_type_number_t amount)
-+ vm_size_t amount)
- {
- struct node *np;
-
-@@ -597,7 +597,7 @@ netfs_S_io_write (struct protid *user,
- const_data_t data,
- mach_msg_type_number_t datalen,
- off_t offset,
-- mach_msg_type_number_t *amount)
-+ vm_size_t *amount)
- {
- struct node *np;
-
-diff --git a/libdiskfs/io-read.c b/libdiskfs/io-read.c
-index 71803517..a706d677 100644
---- a/libdiskfs/io-read.c
-+++ b/libdiskfs/io-read.c
-@@ -25,7 +25,7 @@ diskfs_S_io_read (struct protid *cred,
- data_t *data,
- mach_msg_type_number_t *datalen,
- off_t offset,
-- mach_msg_type_number_t maxread)
-+ vm_size_t maxread)
- {
- struct node *np;
- int err;
-diff --git a/libdiskfs/io-readable.c b/libdiskfs/io-readable.c
-index c3debac3..03218bf3 100644
---- a/libdiskfs/io-readable.c
-+++ b/libdiskfs/io-readable.c
-@@ -22,7 +22,7 @@
- /* Implement io_readable as described in <hurd/io.defs>. */
- kern_return_t
- diskfs_S_io_readable (struct protid *cred,
-- mach_msg_type_number_t *amount)
-+ vm_size_t *amount)
- {
- struct node *np;
-
-diff --git a/libdiskfs/io-write.c b/libdiskfs/io-write.c
-index 154bc887..9efed88f 100644
---- a/libdiskfs/io-write.c
-+++ b/libdiskfs/io-write.c
-@@ -25,7 +25,7 @@ diskfs_S_io_write (struct protid *cred,
- const_data_t data,
- mach_msg_type_number_t datalen,
- off_t offset,
-- mach_msg_type_number_t *amt)
-+ vm_size_t *amt)
- {
- struct node *np;
- error_t err;
-diff --git a/libnetfs/io-read.c b/libnetfs/io-read.c
-index 2427ce6c..688da1f6 100644
---- a/libnetfs/io-read.c
-+++ b/libnetfs/io-read.c
-@@ -28,7 +28,7 @@ netfs_S_io_read (struct protid *user,
- data_t *data,
- mach_msg_type_number_t *datalen,
- off_t offset,
-- mach_msg_type_number_t amount)
-+ vm_size_t amount)
- {
- error_t err;
- off_t start;
-diff --git a/libnetfs/io-readable.c b/libnetfs/io-readable.c
-index 07becf66..7c365484 100644
---- a/libnetfs/io-readable.c
-+++ b/libnetfs/io-readable.c
-@@ -25,7 +25,7 @@
-
- error_t
- netfs_S_io_readable (struct protid *user,
-- mach_msg_type_number_t *amount)
-+ vm_size_t *amount)
- {
- error_t err;
-
-diff --git a/libnetfs/io-write.c b/libnetfs/io-write.c
-index 482b45fc..2306d1f0 100644
---- a/libnetfs/io-write.c
-+++ b/libnetfs/io-write.c
-@@ -27,7 +27,7 @@ netfs_S_io_write (struct protid *user,
- const_data_t data,
- mach_msg_type_number_t datalen,
- off_t offset,
-- mach_msg_type_number_t *amount)
-+ vm_size_t *amount)
- {
- error_t err;
- off_t off = offset;
-diff --git a/libpager/data-return.c b/libpager/data-return.c
-index c0f5aaf7..4c4affe8 100644
---- a/libpager/data-return.c
-+++ b/libpager/data-return.c
-@@ -258,7 +258,7 @@ _pager_S_memory_object_data_return (struct pager *p,
- mach_port_t control,
- vm_offset_t offset,
- pointer_t data,
-- vm_size_t length,
-+ mach_msg_type_number_t length,
- int dirty,
- int kcopy)
- {
-diff --git a/libstore/nbd.c b/libstore/nbd.c
-index 3138af01..8e0892e3 100644
---- a/libstore/nbd.c
-+++ b/libstore/nbd.c
-@@ -119,7 +119,7 @@ nbd_write (struct store *store,
- type: htonl (1), /* WRITE */
- };
- error_t err;
-- mach_msg_type_number_t cc;
-+ vm_size_t cc;
-
- addr <<= store->log2_block_size;
- *amount = 0;
-@@ -178,7 +178,7 @@ nbd_read (struct store *store,
- requested can be found in CHUNK. */
- inline error_t request_chunk (char **buf, size_t *len)
- {
-- mach_msg_type_number_t cc;
-+ vm_size_t cc;
-
- chunk = (amount - ofs) < NBD_IO_MAX ? (amount - ofs) : NBD_IO_MAX;
-
-@@ -435,7 +435,7 @@ nbdclose (struct store *store)
- magic: NBD_REQUEST_MAGIC,
- type: htonl (2), /* disconnect */
- };
-- mach_msg_type_number_t cc;
-+ vm_size_t cc;
- (void) io_write (store->port, (char *) &req, sizeof req, -1, &cc);
-
- /* Close the socket. */
-diff --git a/libstore/rdwr.c b/libstore/rdwr.c
-index 9737c515..f443ad9f 100644
---- a/libstore/rdwr.c
-+++ b/libstore/rdwr.c
-@@ -120,7 +120,7 @@ store_write (struct store *store,
- else
- /* ARGH, we've got to split up the write ... */
- {
-- mach_msg_type_number_t try, written;
-+ vm_size_t try, written;
-
- /* Write the initial bit in the first run. Errors here are returned. */
- try = (run->length - addr) << block_shift;
-@@ -138,7 +138,7 @@ store_write (struct store *store,
- && run->start >= 0) /* Check for holes. */
- /* Ok, we can write in this run, at least a bit. */
- {
-- mach_msg_type_number_t seg_written;
-+ vm_size_t seg_written;
-
- if ((len >> block_shift) <= run->length)
- try = len;
-diff --git a/libtrivfs/io-read.c b/libtrivfs/io-read.c
-index a911f778..4d3302e4 100644
---- a/libtrivfs/io-read.c
-+++ b/libtrivfs/io-read.c
-@@ -26,7 +26,7 @@ trivfs_S_io_read (struct trivfs_protid *cred,
- data_t *data,
- mach_msg_type_number_t *datalen,
- off_t off,
-- mach_msg_type_number_t amt)
-+ vm_size_t amt)
- {
- assert_backtrace (!trivfs_support_read);
- return EOPNOTSUPP;
-diff --git a/libtrivfs/io-readable.c b/libtrivfs/io-readable.c
-index de4d32b8..acb3fa52 100644
---- a/libtrivfs/io-readable.c
-+++ b/libtrivfs/io-readable.c
-@@ -23,7 +23,7 @@ kern_return_t
- trivfs_S_io_readable (struct trivfs_protid *cred,
- mach_port_t reply,
- mach_msg_type_name_t replytype,
-- mach_msg_type_number_t *amount)
-+ vm_size_t *amount)
- {
- assert_backtrace (!trivfs_support_read);
- return EOPNOTSUPP;
-diff --git a/libtrivfs/io-write.c b/libtrivfs/io-write.c
-index 74cbb32b..787b2544 100644
---- a/libtrivfs/io-write.c
-+++ b/libtrivfs/io-write.c
-@@ -27,7 +27,7 @@ trivfs_S_io_write (struct trivfs_protid *cred,
- const_data_t data,
- mach_msg_type_number_t datalen,
- off_t off,
-- mach_msg_type_number_t *amt)
-+ vm_size_t *amt)
- {
- if (!(trivfs_allow_open & O_WRITE))
- return EBADF;
-diff --git a/mach-defpager/default_pager.c b/mach-defpager/default_pager.c
-index fd3a7b22..5c1352f4 100644
---- a/mach-defpager/default_pager.c
-+++ b/mach-defpager/default_pager.c
-@@ -2572,7 +2572,7 @@ seqnos_memory_object_data_initialize(ds, seqno, pager_request,
- vm_offset_t offset;
- register
- pointer_t addr;
-- vm_size_t data_cnt;
-+ mach_msg_type_number_t data_cnt;
- {
- vm_offset_t amount_sent;
- static char here[] = "%sdata_initialize";
-@@ -2631,7 +2631,7 @@ seqnos_memory_object_data_return(ds, seqno, pager_request,
- mach_port_t pager_request;
- vm_offset_t offset;
- pointer_t addr;
-- vm_size_t data_cnt;
-+ mach_msg_type_number_t data_cnt;
- boolean_t dirty;
- boolean_t kernel_copy;
- {
-diff --git a/pfinet/io-ops.c b/pfinet/io-ops.c
-index fa6350c3..6269743d 100644
---- a/pfinet/io-ops.c
-+++ b/pfinet/io-ops.c
-@@ -37,9 +37,9 @@
- error_t
- S_io_write (struct sock_user *user,
- const_data_t data,
-- size_t datalen,
-+ mach_msg_type_number_t datalen,
- off_t offset,
-- mach_msg_type_number_t *amount)
-+ vm_size_t *amount)
- {
- error_t err;
- struct iovec iov = { (void*) data, datalen };
-@@ -70,9 +70,9 @@ S_io_write (struct sock_user *user,
- error_t
- S_io_read (struct sock_user *user,
- data_t *data,
-- size_t *datalen,
-+ mach_msg_type_number_t *datalen,
- off_t offset,
-- mach_msg_type_number_t amount)
-+ vm_size_t amount)
- {
- error_t err;
- int alloced = 0;
-@@ -135,7 +135,7 @@ S_io_seek (struct sock_user *user,
-
- error_t
- S_io_readable (struct sock_user *user,
-- mach_msg_type_number_t *amount)
-+ vm_size_t *amount)
- {
- struct sock *sk;
- error_t err;
-diff --git a/pfinet/socket-ops.c b/pfinet/socket-ops.c
-index db1b92cd..8d27c383 100644
---- a/pfinet/socket-ops.c
-+++ b/pfinet/socket-ops.c
-@@ -431,12 +431,12 @@ S_socket_send (struct sock_user *user,
- struct sock_addr *addr,
- int flags,
- const_data_t data,
-- size_t datalen,
-+ mach_msg_type_number_t datalen,
- const mach_port_t *ports,
-- size_t nports,
-+ mach_msg_type_number_t nports,
- const_data_t control,
-- size_t controllen,
-- mach_msg_type_number_t *amount)
-+ mach_msg_type_number_t controllen,
-+ vm_size_t *amount)
- {
- int sent;
- struct iovec iov = { (void*) data, datalen };
-@@ -478,14 +478,14 @@ S_socket_recv (struct sock_user *user,
- mach_msg_type_name_t *addrporttype,
- int flags,
- data_t *data,
-- size_t *datalen,
-+ mach_msg_type_number_t *datalen,
- mach_port_t **ports,
- mach_msg_type_name_t *portstype,
-- size_t *nports,
-+ mach_msg_type_number_t *nports,
- data_t *control,
-- size_t *controllen,
-+ mach_msg_type_number_t *controllen,
- int *outflags,
-- mach_msg_type_number_t amount)
-+ vm_size_t amount)
- {
- error_t err;
- union { struct sockaddr_storage storage; struct sockaddr sa; } addr;
-diff --git a/pfinet/tunnel.c b/pfinet/tunnel.c
-index 1082404e..e11ab670 100644
---- a/pfinet/tunnel.c
-+++ b/pfinet/tunnel.c
-@@ -291,7 +291,7 @@ error_t
- trivfs_S_io_read (struct trivfs_protid *cred,
- mach_port_t reply, mach_msg_type_name_t reply_type,
- data_t *data, mach_msg_type_number_t *data_len,
-- loff_t offs, size_t amount)
-+ off_t offs, vm_size_t amount)
- {
- struct tunnel_device *tdev;
- struct sk_buff *skb;
-@@ -372,7 +372,7 @@ trivfs_S_io_write (struct trivfs_protid *cred,
- const_data_t data,
- mach_msg_type_number_t datalen,
- off_t offset,
-- mach_msg_type_number_t *amount)
-+ vm_size_t *amount)
- {
- struct tunnel_device *tdev;
- struct sk_buff *skb;
-@@ -415,7 +415,7 @@ trivfs_S_io_write (struct trivfs_protid *cred,
- kern_return_t
- trivfs_S_io_readable (struct trivfs_protid *cred,
- mach_port_t reply, mach_msg_type_name_t replytype,
-- mach_msg_type_number_t *amount)
-+ vm_size_t *amount)
- {
- struct tunnel_device *tdev;
- struct sk_buff *skb;
-diff --git a/pflocal/io.c b/pflocal/io.c
-index 96b2fc48..06749756 100644
---- a/pflocal/io.c
-+++ b/pflocal/io.c
-@@ -44,7 +44,7 @@
- error_t
- S_io_read (struct sock_user *user,
- data_t *data, mach_msg_type_number_t *data_len,
-- off_t offset, mach_msg_type_number_t amount)
-+ off_t offset, vm_size_t amount)
- {
- error_t err;
- struct pipe *pipe;
-@@ -80,7 +80,7 @@ S_io_read (struct sock_user *user,
- error_t
- S_io_write (struct sock_user *user,
- const_data_t data, mach_msg_type_number_t data_len,
-- off_t offset, mach_msg_type_number_t *amount)
-+ off_t offset, vm_size_t *amount)
- {
- error_t err;
- struct pipe *pipe;
-@@ -119,7 +119,7 @@ S_io_write (struct sock_user *user,
- a "long time" (this should be the same meaning of "long time" used
- by the nonblocking flag. */
- error_t
--S_io_readable (struct sock_user *user, mach_msg_type_number_t *amount)
-+S_io_readable (struct sock_user *user, vm_size_t *amount)
- {
- error_t err;
- struct pipe *pipe;
-diff --git a/pflocal/socket.c b/pflocal/socket.c
-index 8c1ee3e9..8c240e09 100644
---- a/pflocal/socket.c
-+++ b/pflocal/socket.c
-@@ -287,10 +287,10 @@ S_socket_peername (struct sock_user *user,
- /* Send data over a socket, possibly including Mach ports. */
- error_t
- S_socket_send (struct sock_user *user, struct addr *dest_addr, int flags,
-- const_data_t data, size_t data_len,
-- const mach_port_t *ports, size_t num_ports,
-- const_data_t control, size_t control_len,
-- size_t *amount)
-+ const_data_t data, mach_msg_type_number_t data_len,
-+ const mach_port_t *ports, mach_msg_type_number_t num_ports,
-+ const_data_t control, mach_msg_type_number_t control_len,
-+ vm_size_t *amount)
- {
- error_t err = 0;
- int noblock;
-@@ -378,11 +378,11 @@ error_t
- S_socket_recv (struct sock_user *user,
- mach_port_t *addr, mach_msg_type_name_t *addr_type,
- int in_flags,
-- data_t *data, size_t *data_len,
-+ data_t *data, mach_msg_type_name_t *data_len,
- mach_port_t **ports, mach_msg_type_name_t *ports_type,
- size_t *num_ports,
-- data_t *control, size_t *control_len,
-- int *out_flags, size_t amount)
-+ data_t *control, mach_msg_type_name_t *control_len,
-+ int *out_flags, vm_size_t amount)
- {
- error_t err;
- unsigned flags;
-diff --git a/storeio/io.c b/storeio/io.c
-index 634185f7..3c4cb9ff 100644
---- a/storeio/io.c
-+++ b/storeio/io.c
-@@ -83,8 +83,8 @@ trivfs_S_io_map (struct trivfs_protid *cred,
- error_t
- trivfs_S_io_read (struct trivfs_protid *cred,
- mach_port_t reply, mach_msg_type_name_t reply_type,
-- data_t *data, mach_msg_type_number_t *data_len,
-- loff_t offs, mach_msg_type_number_t amount)
-+ data_t *data, mach_msg_type_name_t *data_len,
-+ off_t offs, vm_size_t amount)
- {
- if (! cred)
- return EOPNOTSUPP;
-@@ -101,7 +101,7 @@ trivfs_S_io_read (struct trivfs_protid *cred,
- error_t
- trivfs_S_io_readable (struct trivfs_protid *cred,
- mach_port_t reply, mach_msg_type_name_t reply_type,
-- mach_msg_type_number_t *amount)
-+ vm_size_t *amount)
- {
- if (! cred)
- return EOPNOTSUPP;
-@@ -126,7 +126,7 @@ error_t
- trivfs_S_io_write (struct trivfs_protid *cred,
- mach_port_t reply, mach_msg_type_name_t reply_type,
- const_data_t data, mach_msg_type_number_t data_len,
-- loff_t offs, mach_msg_type_number_t *amount)
-+ off_t offs, vm_size_t *amount)
- {
- if (! cred)
- return EOPNOTSUPP;
-diff --git a/storeio/open.c b/storeio/open.c
-index 4c2870c6..f8eb6ce0 100644
---- a/storeio/open.c
-+++ b/storeio/open.c
-@@ -74,8 +74,8 @@ open_write (struct open *open, off_t offs, const void *buf, size_t len,
- standard mach out-array convention. If no error occurs, zero is returned,
- otherwise the error code is returned. */
- error_t
--open_read (struct open *open, off_t offs, size_t amount,
-- void **buf, vm_size_t *len)
-+open_read (struct open *open, off_t offs, vm_size_t amount,
-+ void **buf, size_t *len)
- {
- error_t err;
- if (offs < 0)
-diff --git a/storeio/open.h b/storeio/open.h
-index 6be930a6..ad2678ff 100644
---- a/storeio/open.h
-+++ b/storeio/open.h
-@@ -51,13 +51,13 @@ void open_free (struct open *open);
- and returns the number of bytes written in AMOUNT. If no error occurs,
- zero is returned, otherwise the error code is returned. */
- error_t open_write (struct open *open, off_t offs, const void *buf, size_t len,
-- size_t *amount);
-+ vm_size_t *amount);
-
- /* Reads up to AMOUNT bytes from the device into BUF and BUF_LEN using the
- standard mach out-array convention. If no error occurs, zero is returned,
- otherwise the error code is returned. */
--error_t open_read (struct open *open, off_t offs, size_t amount,
-- void **buf, size_t *buf_len);
-+error_t open_read (struct open *open, off_t offs, vm_size_t amount,
-+ void **buf, vm_size_t *buf_len);
-
- /* Set OPEN's location to OFFS, interpreted according to WHENCE as by seek.
- The new absolute location is returned in NEW_OFFS (and may not be the same
-diff --git a/term/ptyio.c b/term/ptyio.c
-index 928ae0ac..acd1015a 100644
---- a/term/ptyio.c
-+++ b/term/ptyio.c
-@@ -302,7 +302,7 @@ error_t
- pty_io_read (struct trivfs_protid *cred,
- data_t *data,
- mach_msg_type_number_t *datalen,
-- mach_msg_type_number_t amount)
-+ vm_size_t amount)
- {
- int size;
-
-@@ -386,7 +386,7 @@ error_t
- pty_io_write (struct trivfs_protid *cred,
- const_data_t data,
- mach_msg_type_number_t datalen,
-- mach_msg_type_number_t *amount)
-+ vm_size_t *amount)
- {
- int i, flush;
- int cancel = 0;
-diff --git a/term/term.h b/term/term.h
-index efe27ffa..1e6be5f2 100644
---- a/term/term.h
-+++ b/term/term.h
-@@ -387,9 +387,9 @@ extern dev_t rdev;
- /* kludge--these are pty versions of trivfs_S_io_* functions called by
- the real functions in users.c to do work for ptys. */
- error_t pty_io_write (struct trivfs_protid *, const char *,
-- mach_msg_type_number_t, mach_msg_type_number_t *);
-+ mach_msg_type_number_t, vm_size_t *);
- error_t pty_io_read (struct trivfs_protid *, char **,
-- mach_msg_type_number_t *, mach_msg_type_number_t);
-+ mach_msg_type_number_t *, vm_size_t);
- error_t pty_io_readable (size_t *);
- error_t pty_io_select (struct trivfs_protid *, mach_port_t,
- struct timespec *, int *);
-diff --git a/term/users.c b/term/users.c
-index 72f5507d..59f02b66 100644
---- a/term/users.c
-+++ b/term/users.c
-@@ -562,9 +562,9 @@ trivfs_S_io_write (struct trivfs_protid *cred,
- mach_port_t reply,
- mach_msg_type_name_t replytype,
- const_data_t data,
-- size_t datalen,
-- loff_t offset,
-- size_t *amt)
-+ mach_msg_type_name_t datalen,
-+ off_t offset,
-+ vm_size_t *amt)
- {
- int i;
- int cancel;
-@@ -640,9 +640,9 @@ trivfs_S_io_read (struct trivfs_protid *cred,
- mach_port_t reply,
- mach_msg_type_name_t replytype,
- data_t *data,
-- size_t *datalen,
-- loff_t offset,
-- size_t amount)
-+ mach_msg_type_name_t *datalen,
-+ off_t offset,
-+ vm_size_t amount)
- {
- int cancel;
- int i, max;
-@@ -820,7 +820,7 @@ error_t
- trivfs_S_io_readable (struct trivfs_protid *cred,
- mach_port_t reply,
- mach_msg_type_name_t replytype,
-- size_t *amt)
-+ vm_size_t *amt)
- {
- if (!cred)
- return EOPNOTSUPP;
-diff --git a/trans/fifo.c b/trans/fifo.c
-index ce7c7729..894565f6 100644
---- a/trans/fifo.c
-+++ b/trans/fifo.c
-@@ -339,8 +339,8 @@ trivfs_S_io_map (struct trivfs_protid *cred,
- error_t
- trivfs_S_io_read (struct trivfs_protid *cred,
- mach_port_t reply, mach_msg_type_name_t reply_type,
-- data_t *data, size_t *data_len,
-- off_t offs, size_t amount)
-+ data_t *data, mach_msg_type_name_t *data_len,
-+ off_t offs, vm_size_t amount)
- {
- error_t err;
-
-@@ -368,7 +368,7 @@ trivfs_S_io_read (struct trivfs_protid *cred,
- error_t
- trivfs_S_io_readable (struct trivfs_protid *cred,
- mach_port_t reply, mach_msg_type_name_t reply_type,
-- size_t *amount)
-+ vm_size_t *amount)
- {
- error_t err;
-
-@@ -502,8 +502,8 @@ trivfs_S_io_select_timeout (struct trivfs_protid *cred,
- error_t
- trivfs_S_io_write (struct trivfs_protid *cred,
- mach_port_t reply, mach_msg_type_name_t reply_type,
-- const_data_t data, size_t data_len,
-- off_t offs, size_t *amount)
-+ const_data_t data, mach_msg_type_name_t data_len,
-+ off_t offs, vm_size_t *amount)
- {
- error_t err;
-
-diff --git a/trans/firmlink.c b/trans/firmlink.c
-index 8a5d01a8..e216146a 100644
---- a/trans/firmlink.c
-+++ b/trans/firmlink.c
-@@ -207,7 +207,7 @@ error_t
- trivfs_S_io_read (struct trivfs_protid *cred,
- mach_port_t reply, mach_msg_type_name_t reply_type,
- data_t *data, mach_msg_type_number_t *data_len,
-- loff_t offs, mach_msg_type_number_t amount)
-+ off_t offs, vm_size_t amount)
- {
- error_t err = 0;
-
-@@ -244,7 +244,7 @@ trivfs_S_io_read (struct trivfs_protid *cred,
- error_t
- trivfs_S_io_readable (struct trivfs_protid *cred,
- mach_port_t reply, mach_msg_type_name_t reply_type,
-- mach_msg_type_number_t *amount)
-+ vm_size_t *amount)
- {
- if (! cred)
- return EOPNOTSUPP;
-diff --git a/trans/hello-mt.c b/trans/hello-mt.c
-index 92f814d6..e99ba754 100644
---- a/trans/hello-mt.c
-+++ b/trans/hello-mt.c
-@@ -125,7 +125,7 @@ error_t
- trivfs_S_io_read (struct trivfs_protid *cred,
- mach_port_t reply, mach_msg_type_name_t reply_type,
- data_t *data, mach_msg_type_number_t *data_len,
-- loff_t offs, mach_msg_type_number_t amount)
-+ off_t offs, vm_size_t amount)
- {
- struct open *op;
-
-diff --git a/trans/hello.c b/trans/hello.c
-index f8f9e7ab..0405fad3 100644
---- a/trans/hello.c
-+++ b/trans/hello.c
-@@ -116,7 +116,7 @@ error_t
- trivfs_S_io_read (struct trivfs_protid *cred,
- mach_port_t reply, mach_msg_type_name_t reply_type,
- data_t *data, mach_msg_type_number_t *data_len,
-- loff_t offs, mach_msg_type_number_t amount)
-+ off_t offs, vm_size_t amount)
- {
- struct open *op;
-
-diff --git a/trans/mtab.c b/trans/mtab.c
-index caff3385..a2feee7d 100644
---- a/trans/mtab.c
-+++ b/trans/mtab.c
-@@ -657,7 +657,7 @@ error_t
- trivfs_S_io_read (struct trivfs_protid *cred,
- mach_port_t reply, mach_msg_type_name_t reply_type,
- data_t *data, mach_msg_type_number_t *data_len,
-- loff_t offs, mach_msg_type_number_t amount)
-+ off_t offs, vm_size_t amount)
- {
- error_t err = 0;
- struct mtab *op;
-@@ -774,7 +774,7 @@ void (*trivfs_peropen_destroy_hook) (struct trivfs_peropen *) = close_hook;
- kern_return_t
- trivfs_S_io_readable (struct trivfs_protid *cred,
- mach_port_t reply, mach_msg_type_name_t replytype,
-- mach_msg_type_number_t *amount)
-+ vm_size_t *amount)
- {
- error_t err = 0;
- if (!cred)
-diff --git a/trans/new-fifo.c b/trans/new-fifo.c
-index 9a959a39..3e9a886c 100644
---- a/trans/new-fifo.c
-+++ b/trans/new-fifo.c
-@@ -524,8 +524,8 @@ trivfs_S_io_map (struct trivfs_protid *cred,
- error_t
- trivfs_S_io_read (struct trivfs_protid *cred,
- mach_port_t reply, mach_msg_type_name_t reply_type,
-- data_t *data, size_t *data_len,
-- off_t offs, size_t amount)
-+ data_t *data, mach_msg_type_name_t *data_len,
-+ off_t offs, vm_size_t amount)
- {
- error_t err;
-
-@@ -554,7 +554,7 @@ trivfs_S_io_read (struct trivfs_protid *cred,
- error_t
- trivfs_S_io_readable (struct trivfs_protid *cred,
- mach_port_t reply, mach_msg_type_name_t reply_type,
-- size_t *amount)
-+ vm_size_t *amount)
- {
- error_t err;
-
-@@ -689,8 +689,8 @@ trivfs_S_io_select_timeout (struct trivfs_protid *cred,
- error_t
- trivfs_S_io_write (struct trivfs_protid *cred,
- mach_port_t reply, mach_msg_type_name_t reply_type,
-- const_data_t data, size_t data_len,
-- off_t offs, size_t *amount)
-+ const_data_t data, mach_msg_type_name_t data_len,
-+ off_t offs, vm_size_t *amount)
- {
- error_t err;
-
-diff --git a/trans/null.c b/trans/null.c
-index 034bb103..f4ba5582 100644
---- a/trans/null.c
-+++ b/trans/null.c
-@@ -149,8 +149,8 @@ trivfs_S_io_read(struct trivfs_protid *cred,
- mach_port_t reply, mach_msg_type_name_t replytype,
- data_t *data,
- mach_msg_type_number_t *datalen,
-- loff_t offs,
-- mach_msg_type_number_t amt)
-+ off_t offs,
-+ vm_size_t amt)
- {
- if (!cred)
- return EOPNOTSUPP;
-@@ -169,7 +169,7 @@ trivfs_S_io_read(struct trivfs_protid *cred,
- kern_return_t
- trivfs_S_io_readable (struct trivfs_protid *cred,
- mach_port_t reply, mach_msg_type_name_t replytype,
-- mach_msg_type_number_t *amount)
-+ vm_size_t *amount)
- {
- if (!cred)
- return EOPNOTSUPP;
-@@ -228,7 +228,7 @@ kern_return_t
- trivfs_S_io_write (struct trivfs_protid *cred,
- mach_port_t reply, mach_msg_type_name_t replytype,
- const_data_t data, mach_msg_type_number_t datalen,
-- loff_t offs, mach_msg_type_number_t *amt)
-+ off_t offs, vm_size_t *amt)
- {
- if (!cred)
- return EOPNOTSUPP;
-diff --git a/trans/proxy-defpager.c b/trans/proxy-defpager.c
-index 8ca25b72..bfeda063 100644
---- a/trans/proxy-defpager.c
-+++ b/trans/proxy-defpager.c
-@@ -169,8 +169,8 @@ trivfs_S_io_read (struct trivfs_protid *cred,
- mach_port_t reply, mach_msg_type_name_t replytype,
- data_t *data,
- mach_msg_type_number_t *datalen,
-- loff_t offs,
-- mach_msg_type_number_t amt)
-+ off_t offs,
-+ vm_size_t amt)
- {
- if (!cred)
- return EOPNOTSUPP;
-@@ -181,7 +181,7 @@ kern_return_t
- trivfs_S_io_write (struct trivfs_protid *cred,
- mach_port_t reply, mach_msg_type_name_t replytype,
- const_data_t data, mach_msg_type_number_t datalen,
-- loff_t offs, mach_msg_type_number_t *amt)
-+ loff_t offs, vm_size_t *amt)
- {
- if (!cred)
- return EOPNOTSUPP;
-diff --git a/trans/random.c b/trans/random.c
-index c230280a..297253e4 100644
---- a/trans/random.c
-+++ b/trans/random.c
-@@ -318,7 +318,7 @@ error_t
- trivfs_S_io_read (struct trivfs_protid *cred,
- mach_port_t reply, mach_msg_type_name_t reply_type,
- data_t *data, mach_msg_type_number_t *data_len,
-- loff_t offs, mach_msg_type_number_t amount)
-+ off_t offs, vm_size_t amount)
- {
- error_t err;
- void *buf = NULL;
-@@ -377,8 +377,8 @@ trivfs_S_io_write (struct trivfs_protid *cred,
- mach_msg_type_name_t replytype,
- const_data_t data,
- mach_msg_type_number_t datalen,
-- loff_t offset,
-- mach_msg_type_number_t *amount)
-+ off_t offset,
-+ vm_size_t *amount)
- {
- /* Deny access if they have bad credentials. */
- if (! cred)
-diff --git a/trans/streamio.c b/trans/streamio.c
-index 30b8b20e..acd5d674 100644
---- a/trans/streamio.c
-+++ b/trans/streamio.c
-@@ -482,7 +482,7 @@ error_t
- trivfs_S_io_read (struct trivfs_protid *cred,
- mach_port_t reply, mach_msg_type_name_t reply_type,
- data_t *data, mach_msg_type_number_t *data_len,
-- loff_t offs, mach_msg_type_number_t amount)
-+ off_t offs, vm_size_t amount)
- {
- error_t err;
-
-@@ -501,7 +501,7 @@ trivfs_S_io_read (struct trivfs_protid *cred,
- error_t
- trivfs_S_io_readable (struct trivfs_protid *cred,
- mach_port_t reply, mach_msg_type_name_t reply_type,
-- mach_msg_type_number_t *amount)
-+ vm_size_t *amount)
- {
- error_t err;
-
-@@ -521,7 +521,7 @@ error_t
- trivfs_S_io_write (struct trivfs_protid *cred,
- mach_port_t reply, mach_msg_type_name_t reply_type,
- const_data_t data, mach_msg_type_number_t data_len,
-- loff_t offs, mach_msg_type_number_t *amount)
-+ off_t offs, vm_size_t *amount)
- {
- error_t err;
-
-
-base-commit: b6509385bb1dd2a6d47401465bfb98b6339c5c2b
-prerequisite-patch-id: 33c640aa0fcf19d49fff88cc58cecd3be8f7892d
-prerequisite-patch-id: 411256b31780cf9ea0b24efe9f2b20f82c6ce9c1
-prerequisite-patch-id: 830470d11762c6c5e09488a2b834dff0f4f6e434
-prerequisite-patch-id: 1a1293bebf97550d54d9dba3a1817f20a3ef6a2a
-prerequisite-patch-id: f12e5842dea12ed7b0ff4ae3fa2afe78f3647288
-prerequisite-patch-id: 4436fa0181c5e21580e6656634e35febf251dc5b
-prerequisite-patch-id: a938f788841d96151e9e4cc134114dc7652e4f27
-prerequisite-patch-id: bfc7264e11d3ca2dbc520f221cf8bf13857d4732
-prerequisite-patch-id: 50393cc222a3e9de9cfab0762f5acf10e394c9f0
---
-2.39.1
-
diff --git a/gnu/packages/patches/imagemagick-CVE-2020-27829.patch b/gnu/packages/patches/imagemagick-CVE-2020-27829.patch
deleted file mode 100644
index b15c1d0879..0000000000
--- a/gnu/packages/patches/imagemagick-CVE-2020-27829.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-We omit the ChangeLog changes below, since they do not apply cleanly.
-
-
-From 6ee5059cd3ac8d82714a1ab1321399b88539abf0 Mon Sep 17 00:00:00 2001
-From: Cristy <urban-warrior@imagemagick.org>
-Date: Mon, 30 Nov 2020 16:26:59 +0000
-Subject: [PATCH] possible TIFF related-heap buffer overflow (alert & POC by
- Hardik Shah)
-
----
- ChangeLog | 6 ++++++
- coders/tiff.c | 2 +-
- 2 files changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/coders/tiff.c b/coders/tiff.c
-index e98f927ab..1eecf17ae 100644
---- a/coders/tiff.c
-+++ b/coders/tiff.c
-@@ -1975,7 +1975,7 @@ static Image *ReadTIFFImage(const ImageInfo *image_info,
- extent+=image->columns*sizeof(uint32);
- #endif
- strip_pixels=(unsigned char *) AcquireQuantumMemory(extent,
-- sizeof(*strip_pixels));
-+ 2*sizeof(*strip_pixels));
- if (strip_pixels == (unsigned char *) NULL)
- ThrowTIFFException(ResourceLimitError,"MemoryAllocationFailed");
- (void) memset(strip_pixels,0,extent*sizeof(*strip_pixels));
diff --git a/gnu/packages/patches/imagemagick-ReadDCMImage-fix.patch b/gnu/packages/patches/imagemagick-ReadDCMImage-fix.patch
deleted file mode 100644
index 42ece43682..0000000000
--- a/gnu/packages/patches/imagemagick-ReadDCMImage-fix.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 512668dfd92b20d0d08b91d62b422d8262573281 Mon Sep 17 00:00:00 2001
-From: Dirk Lemstra <dirk@lemstra.org>
-Date: Wed, 24 Mar 2021 20:37:15 +0100
-Subject: [PATCH] Throw exception when no exception was raised but status was
- false (#3432).
-
----
- coders/dcm.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/coders/dcm.c b/coders/dcm.c
-index 7a68ed6e8..ed17c9567 100644
---- a/coders/dcm.c
-+++ b/coders/dcm.c
-@@ -3989,6 +3989,8 @@ static Image *ReadDCMImage(const ImageInfo *image_info,ExceptionInfo *exception)
- if (redmap != (int *) NULL)
- redmap=(int *) RelinquishMagickMemory(redmap);
- image=DestroyImageList(image);
-+ if ((status == MagickFalse) && (exception->severity < ErrorException))
-+ ThrowReaderException(CorruptImageError,"CorruptImage");
- return(GetFirstImageInList(images));
- }
- if (info.depth != (1UL*MAGICKCORE_QUANTUM_DEPTH))
---
-2.31.0
-
diff --git a/gnu/packages/patches/imagemagick-ReadDCMPixels-fix.patch b/gnu/packages/patches/imagemagick-ReadDCMPixels-fix.patch
deleted file mode 100644
index a91999186b..0000000000
--- a/gnu/packages/patches/imagemagick-ReadDCMPixels-fix.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From c8f25953ad1dd38a8b2d92738f0f742ad7e0bce7 Mon Sep 17 00:00:00 2001
-From: Cristy <mikayla-grace@urban-warrior.org>
-Date: Sun, 21 Mar 2021 21:21:15 -0400
-Subject: [PATCH] https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=32322
-
----
- coders/dcm.c | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/coders/dcm.c b/coders/dcm.c
-index 29eed9618..7a68ed6e8 100644
---- a/coders/dcm.c
-+++ b/coders/dcm.c
-@@ -2984,12 +2984,12 @@ static MagickBooleanType ReadDCMPixels(Image *image,DCMInfo *info,
- }
- else
- {
-- SetPixelRed(q,(Quantum) (((ssize_t) pixel.red) |
-- (((ssize_t) GetPixelRed(q)) << 8)));
-- SetPixelGreen(q,(Quantum) (((ssize_t) pixel.green) |
-- (((ssize_t) GetPixelGreen(q)) << 8)));
-- SetPixelBlue(q,(Quantum) (((ssize_t) pixel.blue) |
-- (((ssize_t) GetPixelBlue(q)) << 8)));
-+ SetPixelRed(q,(Quantum) (((size_t) pixel.red) |
-+ (((size_t) GetPixelRed(q)) << 8)));
-+ SetPixelGreen(q,(Quantum) (((size_t) pixel.green) |
-+ (((size_t) GetPixelGreen(q)) << 8)));
-+ SetPixelBlue(q,(Quantum) (((size_t) pixel.blue) |
-+ (((size_t) GetPixelBlue(q)) << 8)));
- }
- q++;
- }
---
-2.31.0
-
diff --git a/gnu/packages/patches/imagemagick-WriteTHUMBNAILImage-fix.patch b/gnu/packages/patches/imagemagick-WriteTHUMBNAILImage-fix.patch
deleted file mode 100644
index f38a45b800..0000000000
--- a/gnu/packages/patches/imagemagick-WriteTHUMBNAILImage-fix.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 6a5d3575487487f2703383338bd17c8c25068f19 Mon Sep 17 00:00:00 2001
-From: Cristy <mikayla-grace@urban-warrior.org>
-Date: Thu, 25 Mar 2021 08:58:18 -0400
-Subject: [PATCH] eliminate compiler warning
-
----
- coders/thumbnail.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/coders/thumbnail.c b/coders/thumbnail.c
-index 3833341b0..1e2bfe8c2 100644
---- a/coders/thumbnail.c
-+++ b/coders/thumbnail.c
-@@ -199,7 +199,7 @@ static MagickBooleanType WriteTHUMBNAILImage(const ImageInfo *image_info,
- q++;
- }
- if ((q > (GetStringInfoDatum(profile)+GetStringInfoLength(profile))) ||
-- (length > (GetStringInfoDatum(profile)+GetStringInfoLength(profile)-q)))
-+ ((ssize_t) length > (GetStringInfoDatum(profile)+GetStringInfoLength(profile)-q)))
- ThrowWriterException(CoderError,"ImageDoesNotHaveAThumbnail");
- thumbnail_image=BlobToImage(image_info,q,length,&image->exception);
- if (thumbnail_image == (Image *) NULL)
---
-2.31.0
-
diff --git a/gnu/packages/patches/inkscape-poppler-compat.patch b/gnu/packages/patches/inkscape-poppler-compat.patch
deleted file mode 100644
index cb7d1c8eb3..0000000000
--- a/gnu/packages/patches/inkscape-poppler-compat.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-Fix build with Poppler 22.9.0.
-
-Taken from upstream:
-
- https://gitlab.com/inkscape/inkscape/-/commit/fb00794923d19cfbb2ca4adca3ae8971553a06be
-
-diff --git a/src/extension/internal/pdfinput/pdf-parser.cpp b/src/extension/internal/pdfinput/pdf-parser.cpp
-index cca1e840966c7940a1af472025535042b07e3e0f..80d64c9b866d5d3dd095636a9a02571b89061af1 100644
---- a/src/extension/internal/pdfinput/pdf-parser.cpp
-+++ b/src/extension/internal/pdfinput/pdf-parser.cpp
-@@ -697,7 +697,11 @@ void PdfParser::opSetDash(Object args[], int /*numArgs*/)
- _POPPLER_FREE(obj);
- }
- }
-+#if POPPLER_CHECK_VERSION(22, 9, 0)
-+ state->setLineDash(std::vector<double> (dash, dash + length), args[1].getNum());
-+#else
- state->setLineDash(dash, length, args[1].getNum());
-+#endif
- builder->updateStyle(state);
- }
-
-diff --git a/src/extension/internal/pdfinput/svg-builder.cpp b/src/extension/internal/pdfinput/svg-builder.cpp
-index 12f71dd9214b95dbad6fdf7642a96cdd57f2c64a..9fc56fe63c2feee986ad1ff5018e679a0bacb665 100644
---- a/src/extension/internal/pdfinput/svg-builder.cpp
-+++ b/src/extension/internal/pdfinput/svg-builder.cpp
-@@ -389,10 +389,17 @@ void SvgBuilder::_setStrokeStyle(SPCSSAttr *css, GfxState *state) {
- sp_repr_css_set_property(css, "stroke-miterlimit", os_ml.str().c_str());
-
- // Line dash
-- double *dash_pattern;
- int dash_length;
- double dash_start;
-+#if POPPLER_CHECK_VERSION(22, 9, 0)
-+ const double *dash_pattern;
-+ const std::vector<double> &dash = state->getLineDash(&dash_start);
-+ dash_pattern = dash.data();
-+ dash_length = dash.size();
-+#else
-+ double *dash_pattern;
- state->getLineDash(&dash_pattern, &dash_length, &dash_start);
-+#endif
- if ( dash_length > 0 ) {
- Inkscape::CSSOStringStream os_array;
- for ( int i = 0 ; i < dash_length ; i++ ) {
diff --git a/gnu/packages/patches/libsepol-versioned-docbook.patch b/gnu/packages/patches/libsepol-versioned-docbook.patch
new file mode 100644
index 0000000000..6b39de0a5b
--- /dev/null
+++ b/gnu/packages/patches/libsepol-versioned-docbook.patch
@@ -0,0 +1,56 @@
+# Sent upstream: <https://lore.kernel.org/selinux/260cd39c55ff2d13f5ac916b508f023bedecfce9.1692025627.git.mirai@makinata.eu/>
+
+From 260cd39c55ff2d13f5ac916b508f023bedecfce9 Mon Sep 17 00:00:00 2001
+Message-Id: <260cd39c55ff2d13f5ac916b508f023bedecfce9.1692827278.git.mirai@makinata.eu>
+From: Bruno Victal <mirai@makinata.eu>
+Date: Mon, 14 Aug 2023 15:51:05 +0100
+Subject: [PATCH] secilc: Use versioned DocBook public identifier.
+
+Fix xml validation issues that often crop up since the XML catalogs
+for DocBook often only contain versioned public identifiers.
+
+Signed-off-by: Bruno Victal <mirai@makinata.eu>
+---
+ secilc/secil2conf.8.xml | 2 +-
+ secilc/secil2tree.8.xml | 2 +-
+ secilc/secilc.8.xml | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/secilc/secil2conf.8.xml b/secilc/secil2conf.8.xml
+index 33646f97..330b6a07 100644
+--- a/secilc/secil2conf.8.xml
++++ b/secilc/secil2conf.8.xml
+@@ -1,5 +1,5 @@
+ <?xml version="1.0" encoding="UTF-8"?>
+-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML//EN"
++<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
+
+ <refentry>
+diff --git a/secilc/secil2tree.8.xml b/secilc/secil2tree.8.xml
+index e95a8947..d7bb177e 100644
+--- a/secilc/secil2tree.8.xml
++++ b/secilc/secil2tree.8.xml
+@@ -1,5 +1,5 @@
+ <?xml version="1.0" encoding="UTF-8"?>
+-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML//EN"
++<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
+
+ <refentry>
+diff --git a/secilc/secilc.8.xml b/secilc/secilc.8.xml
+index e9a121e2..5c0680a8 100644
+--- a/secilc/secilc.8.xml
++++ b/secilc/secilc.8.xml
+@@ -1,5 +1,5 @@
+ <?xml version="1.0" encoding="UTF-8"?>
+-<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML//EN"
++<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
+
+ <refentry>
+
+base-commit: f6dc6acfa00707ce25c6357169111937f12512dd
+--
+2.40.1
+
diff --git a/gnu/packages/patches/openjdk-10-char-reproducibility.patch b/gnu/packages/patches/openjdk-10-char-reproducibility.patch
new file mode 100644
index 0000000000..a7932678af
--- /dev/null
+++ b/gnu/packages/patches/openjdk-10-char-reproducibility.patch
@@ -0,0 +1,12 @@
+Danny
+--- orig/jdk-6fa770f9f8ab/make/jdk/src/classes/build/tools/generatecharacter/GenerateCharacter.java 2022-04-13 19:24:10.211683257 +0200
++++ jdk-6fa770f9f8ab/make/jdk/src/classes/build/tools/generatecharacter/GenerateCharacter.java 2022-04-13 22:51:50.680487330 +0200
+@@ -693,7 +693,7 @@
+ PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(theOutputFileName)));
+ out.println(commentStart +
+ " This file was generated AUTOMATICALLY from a template file " +
+- new java.util.Date() + commentEnd);
++ (System.getenv("SOURCE_DATE_EPOCH") == null ? new java.util.Date() : new java.util.Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH")))) + commentEnd);
+ int marklen = commandMarker.length();
+ LOOP: while(true) {
+ try {
diff --git a/gnu/packages/patches/openjdk-10-classlist-reproducibility.patch b/gnu/packages/patches/openjdk-10-classlist-reproducibility.patch
new file mode 100644
index 0000000000..e1292ba82d
--- /dev/null
+++ b/gnu/packages/patches/openjdk-10-classlist-reproducibility.patch
@@ -0,0 +1,27 @@
+--- orig/jdk-6fa770f9f8ab/make/GenerateLinkOptData.gmk 2022-04-04 17:16:29.365930149 +0200
++++ jdk-6fa770f9f8ab/make/GenerateLinkOptData.gmk 2022-04-04 17:16:54.954624358 +0200
+@@ -61,11 +61,12 @@
+ $(call MakeDir, $(LINK_OPT_DIR))
+ $(call LogInfo, Generating $(patsubst $(OUTPUTDIR)/%, %, $@))
+ $(call LogInfo, Generating $(patsubst $(OUTPUTDIR)/%, %, $(JLI_TRACE_FILE)))
+- $(FIXPATH) $(INTERIM_IMAGE_DIR)/bin/java -XX:DumpLoadedClassList=$@ \
++ $(FIXPATH) $(INTERIM_IMAGE_DIR)/bin/java -XX:DumpLoadedClassList=$@.tmp \
+ -Djava.lang.invoke.MethodHandle.TRACE_RESOLVE=true \
+ -cp $(SUPPORT_OUTPUTDIR)/classlist.jar \
+ build.tools.classlist.HelloClasslist \
+ $(LOG_DEBUG) 2>&1 > $(JLI_TRACE_FILE)
++ sort $@.tmp > $@
+
+ # The jli trace is created by the same recipe as classlist. By declaring these
+ # dependencies, make will correctly rebuild both jli trace and classlist
+--- orig/jdk-6fa770f9f8ab/make/gendata/Gendata-jdk.compiler.gmk 2022-04-13 19:24:10.191682716 +0200
++++ jdk-6fa770f9f8ab/make/gendata/Gendata-jdk.compiler.gmk 2022-04-13 20:58:57.891368216 +0200
+@@ -83,6 +83,8 @@
+ $(CT_MODULESOURCEPATH) \
+ $(CT_MODULES) \
+ >$(@D)/A/system-modules
++ # Make files reproducible
++ find $(@D) -exec $(TOUCH) -h -c -t 197001010000.01 {} \;
+ $(TOUCH) $@
+
+ # Can't generate ct.sym directly into modules libs as the SetupJarArchive macro
diff --git a/gnu/packages/patches/openjdk-10-corba-reproducibility.patch b/gnu/packages/patches/openjdk-10-corba-reproducibility.patch
new file mode 100644
index 0000000000..bd5ce1fd2b
--- /dev/null
+++ b/gnu/packages/patches/openjdk-10-corba-reproducibility.patch
@@ -0,0 +1,12 @@
+Danny
+--- orig/jdk-6fa770f9f8ab/make/corba/src/classes/build/tools/logutil/MC.java 2022-04-13 19:24:10.111680549 +0200
++++ jdk-6fa770f9f8ab/make/corba/src/classes/build/tools/logutil/MC.java 2022-04-13 22:51:13.399462259 +0200
+@@ -154,7 +154,7 @@
+ groupName);
+ pw.println("//");
+ pw.printMsg("// Generated by MC.java version @, DO NOT EDIT BY HAND!", VERSION);
+- pw.printMsg("// Generated from input file @ on @", inFile, new Date());
++ pw.printMsg("// Generated from input file @ on @", inFile, System.getenv("SOURCE_DATE_EPOCH") == null ? new Date() : new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))));
+ pw.println();
+ }
+
diff --git a/gnu/packages/patches/openjdk-10-jar-reproducibility.patch b/gnu/packages/patches/openjdk-10-jar-reproducibility.patch
new file mode 100644
index 0000000000..176eedfce6
--- /dev/null
+++ b/gnu/packages/patches/openjdk-10-jar-reproducibility.patch
@@ -0,0 +1,103 @@
+diff -ru orig/jdk-6fa770f9f8ab/make/common/JarArchive.gmk jdk-6fa770f9f8ab/make/common/JarArchive.gmk
+--- orig/jdk-6fa770f9f8ab/make/common/JarArchive.gmk 2022-04-13 19:24:10.107680441 +0200
++++ jdk-6fa770f9f8ab/make/common/JarArchive.gmk 2022-04-13 19:31:18.031271019 +0200
+@@ -251,12 +251,14 @@
+ $(ECHO) "Main-Class: $$(strip $$($1_JARMAIN))" >> $$($1_MANIFEST_FILE) $$(NEWLINE)) \
+ $$(if $$($1_EXTRA_MANIFEST_ATTR), \
+ $(PRINTF) "$$($1_EXTRA_MANIFEST_ATTR)\n" >> $$($1_MANIFEST_FILE) $$(NEWLINE)) \
++ $(TOUCH) -h -c -t 197001010000.00 $$($1_MANIFEST_FILE) $$(NEWLINE) \
+ $(ECHO) Creating $$($1_NAME) $$(NEWLINE) \
+ $$($1_JAR_CMD) $$($1_JAR_CREATE_OPTIONS) $$@ $$($1_MANIFEST_FILE) $$(NEWLINE) \
+ $$($1_SCAPTURE_CONTENTS) \
+ $$($1_SCAPTURE_METAINF) \
+ $$($1_SUPDATE_CONTENTS) \
+- $$($1_JARINDEX) && true \
++ $$($1_JARINDEX) && true $$(NEWLINE) \
++ d="`mktemp -d`" && $(CP) -f $$@ "$$$$d/a.jar" && (cd "$$$$d" && unzip a.jar META-INF/MANIFEST.MF && $(TOUCH) -h -c -t 197001010000.00 META-INF && $(TOUCH) -h -c -t 197001010000.00 META-INF/MANIFEST.MF && (zip --symlinks -0 -X a.jar META-INF META-INF/MANIFEST.MF; zip --symlinks -0 -X a.jar META-INF META-INF/MANIFEST.MF)) && $(CP) -f "$$$$d/a.jar" $$@ \
+ , \
+ $(ECHO) Modifying $$($1_NAME) $$(NEWLINE) \
+ $$($1_CAPTURE_CONTENTS) \
+diff -ru orig/jdk-6fa770f9f8ab/make/JrtfsJar.gmk jdk-6fa770f9f8ab/make/JrtfsJar.gmk
+--- orig/jdk-6fa770f9f8ab/make/JrtfsJar.gmk 2022-04-13 19:24:10.091680007 +0200
++++ jdk-6fa770f9f8ab/make/JrtfsJar.gmk 2022-04-13 19:29:30.044346222 +0200
+@@ -57,13 +57,18 @@
+ # file will not be copied unless META-INF/services would also be added to the INCLUDES.
+ # Adding META-INF/services would include all files in that directory when only the one
+ # is needed, which is why this explicit copy is defined instead.
+-$(eval $(call SetupCopyFiles, COPY_JIMAGE_SERVICE_PROVIDER, \
++$(eval $(call SetupCopyFiles, COPY_JIMAGE_SERVICE_PROVIDER, \
+ SRC := $(TOPDIR)/src/java.base/share/classes, \
+ DEST := $(SUPPORT_OUTPUTDIR)/jrtfs_classes, \
+ FILES := META-INF/services/java.nio.file.spi.FileSystemProvider))
+
++.PHONY: $(COPY_JIMAGE_SERVICE_PROVIDER)_fix
++$(COPY_JIMAGE_SERVICE_PROVIDER)_fix: $(COPY_JIMAGE_SERVICE_PROVIDER)
++ find $(SUPPORT_OUTPUTDIR)/jrtfs_classes -exec $(TOUCH) -h -c -t 197001010000.00 {} \;
++ $(TOUCH) -h -c -t 197001010000.00 $(SUPPORT_OUTPUTDIR)/java-main-manifest.mf
++
+ $(eval $(call SetupJarArchive,BUILD_JRTFS_JAR, \
+- DEPENDENCIES := $(BUILD_JRTFS) $(COPY_JIMAGE_SERVICE_PROVIDER), \
++ DEPENDENCIES := $(BUILD_JRTFS) $(COPY_JIMAGE_SERVICE_PROVIDER)_fix, \
+ SRCS := $(SUPPORT_OUTPUTDIR)/jrtfs_classes, \
+ JAR := $(SUPPORT_OUTPUTDIR)/modules_libs/java.base/jrt-fs.jar, \
+ MANIFEST := $(SUPPORT_OUTPUTDIR)/java-main-manifest.mf, \
+diff -ru orig/jdk-6fa770f9f8ab/src/jdk.jartool/share/classes/sun/tools/jar/Main.java jdk-6fa770f9f8ab/src/jdk.jartool/share/classes/sun/tools/jar/Main.java
+--- orig/jdk-6fa770f9f8ab/src/jdk.jartool/share/classes/sun/tools/jar/Main.java 2022-04-13 19:24:12.555746751 +0200
++++ jdk-6fa770f9f8ab/src/jdk.jartool/share/classes/sun/tools/jar/Main.java 2022-04-13 19:25:34.117955999 +0200
+@@ -849,12 +849,18 @@
+ output(getMsg("out.added.manifest"));
+ }
+ ZipEntry e = new ZipEntry(MANIFEST_DIR);
+- e.setTime(System.currentTimeMillis());
++ if (System.getenv("SOURCE_DATE_EPOCH") != null)
++ e.setTime(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH")));
++ else
++ e.setTime(System.currentTimeMillis());
+ e.setSize(0);
+ e.setCrc(0);
+ zos.putNextEntry(e);
+ e = new ZipEntry(MANIFEST_NAME);
+- e.setTime(System.currentTimeMillis());
++ if (System.getenv("SOURCE_DATE_EPOCH") != null)
++ e.setTime(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH")));
++ else
++ e.setTime(System.currentTimeMillis());
+ if (flag0) {
+ crc32Manifest(e, manifest);
+ }
+@@ -1021,7 +1027,10 @@
+ throws IOException
+ {
+ ZipEntry e = new ZipEntry(INDEX_NAME);
+- e.setTime(System.currentTimeMillis());
++ if (System.getenv("SOURCE_DATE_EPOCH") != null)
++ e.setTime(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH")));
++ else
++ e.setTime(System.currentTimeMillis());
+ if (flag0) {
+ CRC32OutputStream os = new CRC32OutputStream();
+ index.write(os);
+@@ -1040,7 +1049,10 @@
+ String name = mi.getKey();
+ byte[] bytes = mi.getValue();
+ ZipEntry e = new ZipEntry(name);
+- e.setTime(System.currentTimeMillis());
++ if (System.getenv("SOURCE_DATE_EPOCH") != null)
++ e.setTime(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH")));
++ else
++ e.setTime(System.currentTimeMillis());
+ if (flag0) {
+ crc32ModuleInfo(e, bytes);
+ }
+@@ -1065,7 +1077,10 @@
+ addMultiRelease(m);
+ }
+ ZipEntry e = new ZipEntry(MANIFEST_NAME);
+- e.setTime(System.currentTimeMillis());
++ if (System.getenv("SOURCE_DATE_EPOCH") != null)
++ e.setTime(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH")));
++ else
++ e.setTime(System.currentTimeMillis());
+ if (flag0) {
+ crc32Manifest(e, m);
+ }
diff --git a/gnu/packages/patches/openjdk-10-jtask-reproducibility.patch b/gnu/packages/patches/openjdk-10-jtask-reproducibility.patch
new file mode 100644
index 0000000000..3411ca12ae
--- /dev/null
+++ b/gnu/packages/patches/openjdk-10-jtask-reproducibility.patch
@@ -0,0 +1,53 @@
+--- jdk-10/src/jdk.jlink/share/classes/jdk/tools/jmod/JmodTask.java.orig 2022-04-04 11:18:52.760626467 +0200
++++ jdk-10/src/jdk.jlink/share/classes/jdk/tools/jmod/JmodTask.java 2022-04-04 12:03:40.645325687 +0200
+@@ -105,6 +105,7 @@
+ import jdk.internal.module.ModuleTarget;
+ import jdk.internal.module.Resources;
+ import jdk.tools.jlink.internal.Utils;
++import java.util.TreeSet;
+
+ import static java.util.stream.Collectors.joining;
+
+@@ -768,6 +769,7 @@
+ void processSection(JmodOutputStream out, Section section, Path path)
+ throws IOException
+ {
++ TreeSet<Path> paths = new TreeSet<>();
+ Files.walkFileTree(path, Set.of(FileVisitOption.FOLLOW_LINKS),
+ Integer.MAX_VALUE, new SimpleFileVisitor<Path>() {
+ @Override
+@@ -781,20 +783,24 @@
+
+ if (!relPath.toString().equals(MODULE_INFO)
+ && !matches(relPath, excludes)) {
+- try (InputStream in = Files.newInputStream(file)) {
+- out.writeEntry(in, section, relPath.toString());
+- } catch (IOException x) {
+- if (x.getMessage().contains("duplicate entry")) {
+- warning("warn.ignore.duplicate.entry",
+- relPath.toString(), section);
+- return FileVisitResult.CONTINUE;
+- }
+- throw x;
+- }
++ paths.add(file);
+ }
+ return FileVisitResult.CONTINUE;
+ }
+ });
++ for (Path file : paths) {
++ Path relPath = path.relativize(file);
++ try (InputStream in = Files.newInputStream(file)) {
++ out.writeEntry(in, section, relPath.toString());
++ } catch (IOException x) {
++ if (x.getMessage().contains("duplicate entry")) {
++ warning("warn.ignore.duplicate.entry",
++ relPath.toString(), section);
++ continue;
++ }
++ throw x;
++ }
++ }
+ }
+
+ boolean matches(Path path, List<PathMatcher> matchers) {
diff --git a/gnu/packages/patches/openjdk-10-module-reproducibility.patch b/gnu/packages/patches/openjdk-10-module-reproducibility.patch
new file mode 100644
index 0000000000..165edd3b4a
--- /dev/null
+++ b/gnu/packages/patches/openjdk-10-module-reproducibility.patch
@@ -0,0 +1,305 @@
+From a52c4ef44c0553a399a8a47e528db92e3bf51c6c Mon Sep 17 00:00:00 2001
+From: Alan Bateman <alanb@openjdk.org>
+Date: Wed, 29 Apr 2020 08:38:28 +0100
+Subject: [PATCH] 8243666: ModuleHashes attribute generated for JMOD and JAR
+ files depends on timestamps
+
+Reviewed-by: mchung
+---
+
+--- orig/jdk-3cc80be736f2/src/java.base/share/classes/jdk/internal/module/ModuleHashesBuilder.java 2022-04-13 19:24:10.655695284 +0200
++++ jdk-3cc80be736f2/src/java.base/share/classes/jdk/internal/module/ModuleHashesBuilder.java 2022-04-14 02:43:48.610326492 +0200
+@@ -27,9 +27,8 @@
+
+ import java.io.PrintStream;
+ import java.lang.module.Configuration;
++import java.lang.module.ModuleReference;
+ import java.lang.module.ResolvedModule;
+-import java.net.URI;
+-import java.nio.file.Path;
+ import java.nio.file.Paths;
+ import java.util.ArrayDeque;
+ import java.util.Collections;
+@@ -39,8 +38,8 @@
+ import java.util.LinkedList;
+ import java.util.Map;
+ import java.util.Set;
++import java.util.TreeMap;
+ import java.util.function.Consumer;
+-import java.util.function.Function;
+ import java.util.stream.Stream;
+ import static java.util.stream.Collectors.*;
+
+@@ -101,7 +100,7 @@
+ // the modules to record the hashes - it is the first matching
+ // module and has not been hashed during the traversal.
+ Set<String> mods = new HashSet<>();
+- Map<String, ModuleHashes> hashes = new HashMap<>();
++ Map<String, ModuleHashes> hashes = new TreeMap<>();
+ builder.build()
+ .orderedNodes()
+ .filter(mn -> roots.contains(mn) && !mods.contains(mn))
+@@ -116,27 +115,17 @@
+ mods.addAll(ns);
+
+ if (!ns.isEmpty()) {
+- Map<String, Path> moduleToPath = ns.stream()
+- .collect(toMap(Function.identity(), this::moduleToPath));
+- hashes.put(mn, ModuleHashes.generate(moduleToPath, "SHA-256"));
++ Set<ModuleReference> mrefs = ns.stream()
++ .map(name -> configuration.findModule(name)
++ .orElseThrow(InternalError::new))
++ .map(ResolvedModule::reference)
++ .collect(toSet());
++ hashes.put(mn, ModuleHashes.generate(mrefs, "SHA-256"));
+ }
+ });
+ return hashes;
+ }
+
+- private Path moduleToPath(String name) {
+- ResolvedModule rm = configuration.findModule(name).orElseThrow(
+- () -> new InternalError("Selected module " + name + " not on module path"));
+-
+- URI uri = rm.reference().location().get();
+- Path path = Paths.get(uri);
+- String fn = path.getFileName().toString();
+- if (!fn.endsWith(".jar") && !fn.endsWith(".jmod")) {
+- throw new UnsupportedOperationException(path + " is not a modular JAR or jmod file");
+- }
+- return path;
+- }
+-
+ /*
+ * Utility class
+ */diff -ru orig/jdk-3cc80be736f2/src/java.base/share/classes/jdk/internal/module/ModuleHashes.java jdk-3cc80be736f2/src/java.base/share/classes/jdk/internal/module/ModuleHashes.java
+--- orig/jdk-3cc80be736f2/src/java.base/share/classes/jdk/internal/module/ModuleHashes.java 1970-01-01 01:00:01.000000000 +0100
++++ jdk-3cc80be736f2/src/java.base/share/classes/jdk/internal/module/ModuleHashes.java 2022-04-12 16:58:05.639985936 +0200
+@@ -26,17 +26,21 @@
+ package jdk.internal.module;
+
+ import java.io.IOException;
++import java.io.InputStream;
+ import java.io.UncheckedIOException;
+-import java.nio.ByteBuffer;
+-import java.nio.channels.FileChannel;
+-import java.nio.file.Path;
++import java.lang.module.ModuleReader;
++import java.lang.module.ModuleReference;
++import java.nio.charset.StandardCharsets;
+ import java.security.MessageDigest;
+ import java.security.NoSuchAlgorithmException;
++import java.util.Arrays;
+ import java.util.Collections;
+ import java.util.HashMap;
+ import java.util.Map;
+ import java.util.Objects;
+ import java.util.Set;
++import java.util.TreeMap;
++import java.util.function.Supplier;
+
+ /**
+ * The result of hashing the contents of a number of module artifacts.
+@@ -60,8 +64,8 @@
+ * @param algorithm the algorithm used to create the hashes
+ * @param nameToHash the map of module name to hash value
+ */
+- public ModuleHashes(String algorithm, Map<String, byte[]> nameToHash) {
+- this.algorithm = algorithm;
++ ModuleHashes(String algorithm, Map<String, byte[]> nameToHash) {
++ this.algorithm = Objects.requireNonNull(algorithm);
+ this.nameToHash = Collections.unmodifiableMap(nameToHash);
+ }
+
+@@ -95,54 +99,125 @@
+ }
+
+ /**
+- * Computes the hash for the given file with the given message digest
+- * algorithm.
++ * Computes a hash from the names and content of a module.
+ *
++ * @param reader the module reader to access the module content
++ * @param algorithm the name of the message digest algorithm to use
++ * @return the hash
++ * @throws IllegalArgumentException if digest algorithm is not supported
+ * @throws UncheckedIOException if an I/O error occurs
+ * @throws RuntimeException if the algorithm is not available
+ */
+- public static byte[] computeHash(Path file, String algorithm) {
++ private static byte[] computeHash(ModuleReader reader, String algorithm) {
++ MessageDigest md;
+ try {
+- MessageDigest md = MessageDigest.getInstance(algorithm);
+-
+- // Ideally we would just mmap the file but this consumes too much
+- // memory when jlink is running concurrently on very large jmods
+- try (FileChannel fc = FileChannel.open(file)) {
+- ByteBuffer bb = ByteBuffer.allocate(32*1024);
+- while (fc.read(bb) > 0) {
+- bb.flip();
+- md.update(bb);
+- assert bb.remaining() == 0;
+- bb.clear();
+- }
+- }
+-
+- return md.digest();
++ md = MessageDigest.getInstance(algorithm);
+ } catch (NoSuchAlgorithmException e) {
+- throw new RuntimeException(e);
++ throw new IllegalArgumentException(e);
++ }
++ try {
++ byte[] buf = new byte[32*1024];
++ reader.list().sorted().forEach(rn -> {
++ md.update(rn.getBytes(StandardCharsets.UTF_8));
++ try (InputStream in = reader.open(rn).orElseThrow(java.util.NoSuchElementException::new)) {
++ int n;
++ while ((n = in.read(buf)) > 0) {
++ md.update(buf, 0, n);
++ }
++ } catch (IOException ioe) {
++ throw new UncheckedIOException(ioe);
++ }
++ });
+ } catch (IOException ioe) {
+ throw new UncheckedIOException(ioe);
+ }
++ return md.digest();
+ }
+
+ /**
+- * Computes the hash for every entry in the given map, returning a
+- * {@code ModuleHashes} to encapsulate the result. The map key is
+- * the entry name, typically the module name. The map value is the file
+- * path to the entry (module artifact).
++ * Computes a hash from the names and content of a module.
+ *
++ * @param supplier supplies the module reader to access the module content
++ * @param algorithm the name of the message digest algorithm to use
++ * @return the hash
++ * @throws IllegalArgumentException if digest algorithm is not supported
++ * @throws UncheckedIOException if an I/O error occurs
++ */
++ static byte[] computeHash(Supplier<ModuleReader> supplier, String algorithm) {
++ try (ModuleReader reader = supplier.get()) {
++ return computeHash(reader, algorithm);
++ } catch (IOException ioe) {
++ throw new UncheckedIOException(ioe);
++ }
++ }
++
++ /**
++ * Computes the hash from the names and content of a set of modules. Returns
++ * a {@code ModuleHashes} to encapsulate the result.
++ * @param mrefs the set of modules
++ * @param algorithm the name of the message digest algorithm to use
+ * @return ModuleHashes that encapsulates the hashes
++ * @throws IllegalArgumentException if digest algorithm is not supported
++ * @throws UncheckedIOException if an I/O error occurs
+ */
+- public static ModuleHashes generate(Map<String, Path> map, String algorithm) {
++ static ModuleHashes generate(Set<ModuleReference> mrefs, String algorithm) {
+ Map<String, byte[]> nameToHash = new HashMap<>();
+- for (Map.Entry<String, Path> entry: map.entrySet()) {
+- String name = entry.getKey();
+- Path path = entry.getValue();
+- nameToHash.put(name, computeHash(path, algorithm));
++ for (ModuleReference mref : mrefs) {
++ try (ModuleReader reader = mref.open()) {
++ byte[] hash = computeHash(reader, algorithm);
++ nameToHash.put(mref.descriptor().name(), hash);
++ } catch (IOException ioe) {
++ throw new UncheckedIOException(ioe);
++ }
+ }
+ return new ModuleHashes(algorithm, nameToHash);
+ }
+
++ @Override
++ public int hashCode() {
++ int h = algorithm.hashCode();
++ for (Map.Entry<String, byte[]> e : nameToHash.entrySet()) {
++ h = h * 31 + e.getKey().hashCode();
++ h = h * 31 + Arrays.hashCode(e.getValue());
++ }
++ return h;
++ }
++
++ @Override
++ public boolean equals(Object obj) {
++ if (!(obj instanceof ModuleHashes))
++ return false;
++ ModuleHashes other = (ModuleHashes) obj;
++ if (!algorithm.equals(other.algorithm)
++ || nameToHash.size() != other.nameToHash.size())
++ return false;
++ for (Map.Entry<String, byte[]> e : nameToHash.entrySet()) {
++ String name = e.getKey();
++ byte[] hash = e.getValue();
++ if (!Arrays.equals(hash, other.nameToHash.get(name)))
++ return false;
++ }
++ return true;
++ }
++
++ @Override
++ public String toString() {
++ StringBuilder sb = new StringBuilder(algorithm);
++ sb.append(" ");
++ nameToHash.entrySet()
++ .stream()
++ .sorted(Map.Entry.comparingByKey())
++ .forEach(e -> {
++ sb.append(e.getKey());
++ sb.append("=");
++ byte[] ba = e.getValue();
++ for (byte b : ba) {
++ sb.append(String.format("%02x", b & 0xff));
++ }
++ });
++ return sb.toString();
++ }
++
+ /**
+ * This is used by jdk.internal.module.SystemModules class
+ * generated at link time.
+diff -ru orig/jdk-3cc80be736f2/src/java.base/share/classes/jdk/internal/module/ModuleInfoExtender.java jdk-3cc80be736f2/src/java.base/share/classes/jdk/internal/module/ModuleInfoExtender.java
+--- orig/jdk-3cc80be736f2/src/java.base/share/classes/jdk/internal/module/ModuleInfoExtender.java 1970-01-01 01:00:01.000000000 +0100
++++ jdk-3cc80be736f2/src/java.base/share/classes/jdk/internal/module/ModuleInfoExtender.java 2022-04-12 16:43:12.967868689 +0200
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2014, 2020, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+diff -ru orig/jdk-3cc80be736f2/src/java.base/share/classes/jdk/internal/module/ModuleReferences.java jdk-3cc80be736f2/src/java.base/share/classes/jdk/internal/module/ModuleReferences.java
+--- orig/jdk-3cc80be736f2/src/java.base/share/classes/jdk/internal/module/ModuleReferences.java 1970-01-01 01:00:01.000000000 +0100
++++ jdk-3cc80be736f2/src/java.base/share/classes/jdk/internal/module/ModuleReferences.java 2022-04-12 16:43:12.971868797 +0200
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -95,7 +95,7 @@
+ Path file) {
+ URI uri = file.toUri();
+ Supplier<ModuleReader> supplier = () -> new JarModuleReader(file, uri);
+- HashSupplier hasher = (a) -> ModuleHashes.computeHash(file, a);
++ HashSupplier hasher = (a) -> ModuleHashes.computeHash(supplier, a);
+ return newModule(attrs, uri, supplier, patcher, hasher);
+ }
+
+@@ -105,7 +105,7 @@
+ static ModuleReference newJModModule(ModuleInfo.Attributes attrs, Path file) {
+ URI uri = file.toUri();
+ Supplier<ModuleReader> supplier = () -> new JModModuleReader(file, uri);
+- HashSupplier hasher = (a) -> ModuleHashes.computeHash(file, a);
++ HashSupplier hasher = (a) -> ModuleHashes.computeHash(supplier, a);
+ return newModule(attrs, uri, supplier, null, hasher);
+ }
+
diff --git a/gnu/packages/patches/openjdk-10-module3-reproducibility.patch b/gnu/packages/patches/openjdk-10-module3-reproducibility.patch
new file mode 100644
index 0000000000..bc54803bea
--- /dev/null
+++ b/gnu/packages/patches/openjdk-10-module3-reproducibility.patch
@@ -0,0 +1,34 @@
+Danny wrote.
+
+--- orig/jdk-3cc80be736f2/src/java.base/share/classes/java/lang/module/ModuleDescriptor.java 1970-01-01 01:00:01.000000000 +0100
++++ jdk-3cc80be736f2/src/java.base/share/classes/java/lang/module/ModuleDescriptor.java 2022-04-13 17:30:37.242775977 +0200
+@@ -43,6 +43,7 @@
+ import java.util.Objects;
+ import java.util.Optional;
+ import java.util.Set;
++import java.util.TreeSet;
+ import java.util.function.Supplier;
+ import java.util.stream.Collectors;
+ import java.util.stream.Stream;
+@@ -2155,9 +2156,9 @@
+ * @return The module descriptor
+ */
+ public ModuleDescriptor build() {
+- Set<Requires> requires = new HashSet<>(this.requires.values());
+- Set<Exports> exports = new HashSet<>(this.exports.values());
+- Set<Opens> opens = new HashSet<>(this.opens.values());
++ Set<Requires> requires = new TreeSet<>(this.requires.values());
++ Set<Exports> exports = new TreeSet<>(this.exports.values());
++ Set<Opens> opens = new TreeSet<>(this.opens.values());
+
+ // add dependency on java.base
+ if (strict
+@@ -2169,7 +2170,7 @@
+ null));
+ }
+
+- Set<Provides> provides = new HashSet<>(this.provides.values());
++ Set<Provides> provides = new TreeSet<>(this.provides.values());
+
+ return new ModuleDescriptor(name,
+ version,
diff --git a/gnu/packages/patches/openjdk-10-module4-reproducibility.patch b/gnu/packages/patches/openjdk-10-module4-reproducibility.patch
new file mode 100644
index 0000000000..051c9344eb
--- /dev/null
+++ b/gnu/packages/patches/openjdk-10-module4-reproducibility.patch
@@ -0,0 +1,14 @@
+Danny wrote it
+
+--- orig/jdk-6fa770f9f8ab/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/SystemModulesPlugin.java 2022-04-13 19:24:12.655749459 +0200
++++ jdk-6fa770f9f8ab/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/SystemModulesPlugin.java 2022-04-14 01:53:23.555465018 +0200
+@@ -861,7 +861,8 @@
+ */
+ private void genModuleReads(ClassWriter cw, Configuration cf) {
+ // module name -> names of modules that it reads
+- Map<String, Set<String>> map = cf.modules().stream()
++ Map<String, Set<String>> map = cf.modules().stream()
++ .sorted(java.util.Comparator.comparing(ResolvedModule::name))
+ .collect(Collectors.toMap(
+ ResolvedModule::name,
+ m -> m.reads().stream()
diff --git a/gnu/packages/patches/openjdk-11-classlist-reproducibility.patch b/gnu/packages/patches/openjdk-11-classlist-reproducibility.patch
new file mode 100644
index 0000000000..2ac7c2b664
--- /dev/null
+++ b/gnu/packages/patches/openjdk-11-classlist-reproducibility.patch
@@ -0,0 +1,11 @@
+--- jdk-11.0.13-ga/make/GenerateLinkOptData.gmk.orig 2022-04-04 17:18:56.801929954 +0200
++++ jdk-11.0.13-ga/make/GenerateLinkOptData.gmk 2022-04-04 17:19:14.962422622 +0200
+@@ -66,7 +66,7 @@
+ -cp $(SUPPORT_OUTPUTDIR)/classlist.jar \
+ build.tools.classlist.HelloClasslist \
+ $(LOG_DEBUG) 2>&1 > $(JLI_TRACE_FILE)
+- $(GREP) -v HelloClasslist $@.raw > $@
++ $(GREP) -v HelloClasslist $@.raw |sort > $@
+
+ # The jli trace is created by the same recipe as classlist. By declaring these
+ # dependencies, make will correctly rebuild both jli trace and classlist
diff --git a/gnu/packages/patches/openjdk-13-classlist-reproducibility.patch b/gnu/packages/patches/openjdk-13-classlist-reproducibility.patch
new file mode 100644
index 0000000000..326f6875ec
--- /dev/null
+++ b/gnu/packages/patches/openjdk-13-classlist-reproducibility.patch
@@ -0,0 +1,11 @@
+--- 6cllxkf0narh0b4wgx8npwjkznd7ifq0-openjdk-13.0.7-checkout/make/GenerateLinkOptData.gmk.orig 2022-04-04 17:20:33.012539984 +0200
++++ 6cllxkf0narh0b4wgx8npwjkznd7ifq0-openjdk-13.0.7-checkout/make/GenerateLinkOptData.gmk 2022-04-04 17:20:51.181032859 +0200
+@@ -78,7 +78,7 @@
+ $(CAT) $(LINK_OPT_DIR)/stderr $(JLI_TRACE_FILE) ; \
+ exit $$exitcode \
+ )
+- $(GREP) -v HelloClasslist $@.raw > $@
++ $(GREP) -v HelloClasslist $@.raw | sort > $@
+
+ # The jli trace is created by the same recipe as classlist. By declaring these
+ # dependencies, make will correctly rebuild both jli trace and classlist
diff --git a/gnu/packages/patches/openjdk-15-jtask-reproducibility.patch b/gnu/packages/patches/openjdk-15-jtask-reproducibility.patch
new file mode 100644
index 0000000000..2052983ade
--- /dev/null
+++ b/gnu/packages/patches/openjdk-15-jtask-reproducibility.patch
@@ -0,0 +1,40 @@
+--- 22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/src/jdk.jlink/share/classes/jdk/tools/jmod/JmodTask.java.orig 2022-04-04 10:57:40.346312924 +0200
++++ 22kjr9lzrml0h5m55viq7zlfkqr9p7ny-openjdk-15.0.3-checkout/src/jdk.jlink/share/classes/jdk/tools/jmod/JmodTask.java 2022-04-04 11:01:38.480751902 +0200
+@@ -82,6 +82,7 @@
+ import jdk.internal.module.ModuleTarget;
+ import jdk.internal.module.Resources;
+ import jdk.tools.jlink.internal.Utils;
++import java.util.TreeSet;
+
+ import static java.util.stream.Collectors.joining;
+
+@@ -750,6 +751,7 @@
+ void processSection(JmodOutputStream out, Section section, Path path)
+ throws IOException
+ {
++ TreeSet<Path> paths = new TreeSet<>();
+ Files.walkFileTree(path, Set.of(FileVisitOption.FOLLOW_LINKS),
+ Integer.MAX_VALUE, new SimpleFileVisitor<Path>() {
+ @Override
+@@ -765,14 +767,18 @@
+ if (out.contains(section, name)) {
+ warning("warn.ignore.duplicate.entry", name, section);
+ } else {
+- try (InputStream in = Files.newInputStream(file)) {
+- out.writeEntry(in, section, name);
+- }
++ paths.add(file);
+ }
+ }
+ return FileVisitResult.CONTINUE;
+ }
+ });
++
++ for (Path file : paths) {
++ try (InputStream in = Files.newInputStream(file)) {
++ out.writeEntry(in, section, path.relativize(file).toString());
++ }
++ }
+ }
+
+ boolean matches(Path path, List<PathMatcher> matchers) {
diff --git a/gnu/packages/patches/openjdk-9-classlist-reproducibility.patch b/gnu/packages/patches/openjdk-9-classlist-reproducibility.patch
new file mode 100644
index 0000000000..d0ce7bc4d6
--- /dev/null
+++ b/gnu/packages/patches/openjdk-9-classlist-reproducibility.patch
@@ -0,0 +1,31 @@
+From: Danny Milosavljevic <dannym@scratchpost.org>
+Date: Wed, 18 Apr 2022 18:38:28 +0100
+Subject: Make classlist reproducible
+
+--- jdk-09/make/GenerateLinkOptData.gmk.orig 2022-04-05 10:05:35.892134188 +0200
++++ jdk-09/make/GenerateLinkOptData.gmk 2022-04-05 10:06:07.885003056 +0200
+@@ -61,11 +61,12 @@
+ $(call MakeDir, $(LINK_OPT_DIR))
+ $(call LogInfo, Generating $(patsubst $(OUTPUT_ROOT)/%, %, $@))
+ $(call LogInfo, Generating $(patsubst $(OUTPUT_ROOT)/%, %, $(JLI_TRACE_FILE)))
+- $(FIXPATH) $(INTERIM_IMAGE_DIR)/bin/java -XX:DumpLoadedClassList=$@ \
++ $(FIXPATH) $(INTERIM_IMAGE_DIR)/bin/java -XX:DumpLoadedClassList=$@.tmp \
+ -Djava.lang.invoke.MethodHandle.TRACE_RESOLVE=true \
+ -cp $(SUPPORT_OUTPUTDIR)/classlist.jar \
+ build.tools.classlist.HelloClasslist \
+ $(LOG_DEBUG) 2>&1 > $(JLI_TRACE_FILE)
++ sort $@.tmp >$@
+
+ # The jli trace is created by the same recipe as classlist. By declaring these
+ # dependencies, make will correctly rebuild both jli trace and classlist
+--- jdk-09/langtools/make/gendata/Gendata-jdk.compiler.gmk.orig 2022-04-08 22:04:05.784424812 +0200
++++ jdk-09/langtools/make/gendata/Gendata-jdk.compiler.gmk 2022-04-08 22:09:36.333575143 +0200
+@@ -79,6 +79,8 @@
+ $(CT_MODULESOURCEPATH) \
+ $(CT_MODULES) \
+ >$(@D)/9/system-modules
++ # Make files reproducible
++ find $(@D) -exec $(TOUCH) -h -c -t 197001010000.01 {} \;
+ $(TOUCH) $@
+
+ # Can't generate ct.sym directly into modules libs as the SetupJarArchive macro
diff --git a/gnu/packages/patches/openjdk-9-idlj-reproducibility.patch b/gnu/packages/patches/openjdk-9-idlj-reproducibility.patch
new file mode 100644
index 0000000000..30dcdf2496
--- /dev/null
+++ b/gnu/packages/patches/openjdk-9-idlj-reproducibility.patch
@@ -0,0 +1,37 @@
+From: Danny Milosavljevic <dannym@scratchpost.org>
+Date: Wed, 18 Apr 2022 19:28:00 +0100
+Subject: Make IDL reproducible
+
+--- jdk-09/corba/src/java.corba/share/classes/com/sun/tools/corba/se/idl/toJavaPortable/Util.java.orig 2022-04-05 02:46:26.805340292 +0200
++++ jdk-09/corba/src/java.corba/share/classes/com/sun/tools/corba/se/idl/toJavaPortable/Util.java 2022-04-05 02:48:23.152494213 +0200
+@@ -1146,7 +1146,7 @@
+ else
+ formatter.setTimeZone (java.util.TimeZone.getDefault ());
+
+- stream.println ("* " + formatter.format (new Date ()));
++ stream.println ("* " + formatter.format (System.getenv("SOURCE_DATE_EPOCH") == null ? new Date () : new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH")))));
+
+ // <daz>
+ ///////////////
+--- jdk-09/corba/make/src/classes/build/tools/logutil/MC.java.orig 2022-04-05 11:09:43.824720493 +0200
++++ jdk-09/corba/make/src/classes/build/tools/logutil/MC.java 2022-04-05 11:10:46.518435511 +0200
+@@ -154,7 +154,7 @@
+ groupName);
+ pw.println("//");
+ pw.printMsg("// Generated by MC.java version @, DO NOT EDIT BY HAND!", VERSION);
+- pw.printMsg("// Generated from input file @ on @", inFile, new Date());
++ pw.printMsg("// Generated from input file @ on @", inFile, System.getenv("SOURCE_DATE_EPOCH") == null ? new Date() : new Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH"))));
+ pw.println();
+ }
+
+--- jdk-09/jdk/make/src/classes/build/tools/generatecharacter/GenerateCharacter.java.orig 2022-04-05 11:14:29.228526408 +0200
++++ jdk-09/jdk/make/src/classes/build/tools/generatecharacter/GenerateCharacter.java 2022-04-05 11:15:32.658260748 +0200
+@@ -693,7 +693,7 @@
+ PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(theOutputFileName)));
+ out.println(commentStart +
+ " This file was generated AUTOMATICALLY from a template file " +
+- new java.util.Date() + commentEnd);
++ (System.getenv("SOURCE_DATE_EPOCH") == null ? new java.util.Date() : new java.util.Date(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH")))) + commentEnd);
+ int marklen = commandMarker.length();
+ LOOP: while(true) {
+ try {
diff --git a/gnu/packages/patches/openjdk-9-jar-reproducibility.patch b/gnu/packages/patches/openjdk-9-jar-reproducibility.patch
new file mode 100644
index 0000000000..130eacd867
--- /dev/null
+++ b/gnu/packages/patches/openjdk-9-jar-reproducibility.patch
@@ -0,0 +1,107 @@
+From: Danny Milosavljevic <dannym@scratchpost.org>
+Date: Wed, 18 Apr 2022 20:10:01 +0100
+Subject: Make JARs reproducible
+
+--- jdk-09/make/common/JarArchive.gmk.orig 2022-04-08 21:56:04.075111687 +0200
++++ jdk-09/make/common/JarArchive.gmk 2022-04-11 00:49:16.809140388 +0200
+@@ -249,12 +249,16 @@
+ $(ECHO) "Main-Class: $$(strip $$($1_JARMAIN))" >> $$($1_MANIFEST_FILE) $$(NEWLINE)) \
+ $$(if $$($1_EXTRA_MANIFEST_ATTR), \
+ $(PRINTF) "$$($1_EXTRA_MANIFEST_ATTR)\n" >> $$($1_MANIFEST_FILE) $$(NEWLINE)) \
+- $(ECHO) Creating $$($1_NAME) $$(NEWLINE) \
++ $(TOUCH) -h -c -t 197001010000.00 $$($1_MANIFEST_FILE) $$(NEWLINE) \
++ $(ECHO) XCreating $$($1_NAME) $(JAR) $$($1_JAR_CREATE_OPTIONS) $$@ $$($1_MANIFEST_FILE) $$(NEWLINE) \
+ $(JAR) $$($1_JAR_CREATE_OPTIONS) $$@ $$($1_MANIFEST_FILE) $$(NEWLINE) \
+ $$($1_SCAPTURE_CONTENTS) \
+ $$($1_SCAPTURE_METAINF) \
+ $$($1_SUPDATE_CONTENTS) \
+- $$($1_JARINDEX) && true \
++ $$($1_JARINDEX) && true $$(NEWLINE) \
++ $(ECHO) Kreppel2 $$@ $$(NEWLINE) \
++ unzip -v $$@ $$(NEWLINE) \
++ d="`mktemp -d`" && $(CP) -f $$@ "$$$$d/a.jar" && (cd "$$$$d" && unzip a.jar META-INF/MANIFEST.MF && $(TOUCH) -h -c -t 197001010000.00 META-INF && $(TOUCH) -h -c -t 197001010000.00 META-INF/MANIFEST.MF && (zip --symlinks -0 -X a.jar META-INF META-INF/MANIFEST.MF; zip --symlinks -0 -X a.jar META-INF META-INF/MANIFEST.MF)) && $(CP) -f "$$$$d/a.jar" $$@ \
+ , \
+ $(ECHO) Modifying $$($1_NAME) $$(NEWLINE) \
+ $$($1_CAPTURE_CONTENTS) \
+--- jdk-09/make/JrtfsJar.gmk.orig 2022-04-10 13:48:57.385120008 +0200
++++ jdk-09/make/JrtfsJar.gmk 2022-04-10 13:58:04.688158538 +0200
+@@ -57,13 +57,18 @@
+ # file will not be copied unless META-INF/services would also be added to the INCLUDES.
+ # Adding META-INF/services would include all files in that directory when only the one
+ # is needed, which is why this explicit copy is defined instead.
+-$(eval $(call SetupCopyFiles, COPY_JIMAGE_SERVICE_PROVIDER, \
++$(eval $(call SetupCopyFiles, COPY_JIMAGE_SERVICE_PROVIDER1, \
+ SRC := $(JDK_TOPDIR)/src/java.base/share/classes, \
+ DEST := $(SUPPORT_OUTPUTDIR)/jrtfs_classes, \
+ FILES := META-INF/services/java.nio.file.spi.FileSystemProvider))
+
++.PHONY: jrtfsfixtimestamps47
++jrtfsfixtimestamps47: $(COPY_JIMAGE_SERVICE_PROVIDER1)
++ find $(SUPPORT_OUTPUTDIR)/jrtfs_classes -exec $(TOUCH) -h -c -t 197001010000.00 {} \;
++ $(TOUCH) -h -c -t 197001010000.00 $(SUPPORT_OUTPUTDIR)/java-main-manifest.mf
++
+ $(eval $(call SetupJarArchive,BUILD_JRTFS_JAR, \
+- DEPENDENCIES := $(BUILD_JRTFS) $(COPY_JIMAGE_SERVICE_PROVIDER), \
++ DEPENDENCIES := $(BUILD_JRTFS) jrtfsfixtimestamps47, \
+ SRCS := $(SUPPORT_OUTPUTDIR)/jrtfs_classes, \
+ JAR := $(SUPPORT_OUTPUTDIR)/modules_libs/java.base/jrt-fs.jar, \
+ MANIFEST := $(SUPPORT_OUTPUTDIR)/java-main-manifest.mf, \
+--- jdk-09/jdk/src/jdk.jartool/share/classes/sun/tools/jar/Main.java.orig 2022-04-10 02:05:50.983247794 +0200
++++ jdk-09/jdk/src/jdk.jartool/share/classes/sun/tools/jar/Main.java 2022-04-10 02:13:01.638960337 +0200
+@@ -850,12 +850,18 @@
+ output(getMsg("out.added.manifest"));
+ }
+ ZipEntry e = new ZipEntry(MANIFEST_DIR);
+- e.setTime(System.currentTimeMillis());
++ if (System.getenv("SOURCE_DATE_EPOCH") != null)
++ e.setTime(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH")));
++ else
++ e.setTime(System.currentTimeMillis());
+ e.setSize(0);
+ e.setCrc(0);
+ zos.putNextEntry(e);
+ e = new ZipEntry(MANIFEST_NAME);
+- e.setTime(System.currentTimeMillis());
++ if (System.getenv("SOURCE_DATE_EPOCH") != null)
++ e.setTime(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH")));
++ else
++ e.setTime(System.currentTimeMillis());
+ if (flag0) {
+ crc32Manifest(e, manifest);
+ }
+@@ -1022,7 +1028,10 @@
+ throws IOException
+ {
+ ZipEntry e = new ZipEntry(INDEX_NAME);
+- e.setTime(System.currentTimeMillis());
++ if (System.getenv("SOURCE_DATE_EPOCH") != null)
++ e.setTime(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH")));
++ else
++ e.setTime(System.currentTimeMillis());
+ if (flag0) {
+ CRC32OutputStream os = new CRC32OutputStream();
+ index.write(os);
+@@ -1041,7 +1050,10 @@
+ String name = mi.getKey();
+ byte[] bytes = mi.getValue();
+ ZipEntry e = new ZipEntry(name);
+- e.setTime(System.currentTimeMillis());
++ if (System.getenv("SOURCE_DATE_EPOCH") != null)
++ e.setTime(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH")));
++ else
++ e.setTime(System.currentTimeMillis());
+ if (flag0) {
+ crc32ModuleInfo(e, bytes);
+ }
+@@ -1066,7 +1078,10 @@
+ addMultiRelease(m);
+ }
+ ZipEntry e = new ZipEntry(MANIFEST_NAME);
+- e.setTime(System.currentTimeMillis());
++ if (System.getenv("SOURCE_DATE_EPOCH") != null)
++ e.setTime(1000 * Long.parseLong(System.getenv("SOURCE_DATE_EPOCH")));
++ else
++ e.setTime(System.currentTimeMillis());
+ if (flag0) {
+ crc32Manifest(e, m);
+ }
diff --git a/gnu/packages/patches/openjdk-9-module-reproducibility.patch b/gnu/packages/patches/openjdk-9-module-reproducibility.patch
new file mode 100644
index 0000000000..320bb7806a
--- /dev/null
+++ b/gnu/packages/patches/openjdk-9-module-reproducibility.patch
@@ -0,0 +1,297 @@
+From a52c4ef44c0553a399a8a47e528db92e3bf51c6c Mon Sep 17 00:00:00 2001
+From: Alan Bateman <alanb@openjdk.org>
+Date: Wed, 29 Apr 2020 08:38:28 +0100
+Subject: [PATCH] 8243666: ModuleHashes attribute generated for JMOD and JAR
+ files depends on timestamps
+See: https://bugs.openjdk.org/browse/JDK-8243666
+
+Reviewed-by: mchung
+---
+
+diff -ru orig/jdk-3cc80be736f2/jdk/src/java.base/share/classes/jdk/internal/module/ModuleHashesBuilder.java jdk-3cc80be736f2/jdk/src/java.base/share/classes/jdk/internal/module/ModuleHashesBuilder.java
+--- orig/jdk-3cc80be736f2/jdk/src/java.base/share/classes/jdk/internal/module/ModuleHashesBuilder.java 1970-01-01 01:00:01.000000000 +0100
++++ jdk-3cc80be736f2/jdk/src/java.base/share/classes/jdk/internal/module/ModuleHashesBuilder.java 2022-04-12 16:47:15.690423653 +0200
+@@ -27,9 +27,8 @@
+
+ import java.io.PrintStream;
+ import java.lang.module.Configuration;
++import java.lang.module.ModuleReference;
+ import java.lang.module.ResolvedModule;
+-import java.net.URI;
+-import java.nio.file.Path;
+ import java.nio.file.Paths;
+ import java.util.ArrayDeque;
+ import java.util.Collections;
+@@ -40,7 +39,6 @@
+ import java.util.Map;
+ import java.util.Set;
+ import java.util.function.Consumer;
+-import java.util.function.Function;
+ import java.util.stream.Stream;
+ import static java.util.stream.Collectors.*;
+
+@@ -116,27 +114,17 @@
+ mods.addAll(ns);
+
+ if (!ns.isEmpty()) {
+- Map<String, Path> moduleToPath = ns.stream()
+- .collect(toMap(Function.identity(), this::moduleToPath));
+- hashes.put(mn, ModuleHashes.generate(moduleToPath, "SHA-256"));
++ Set<ModuleReference> mrefs = ns.stream()
++ .map(name -> configuration.findModule(name)
++ .orElseThrow(InternalError::new))
++ .map(ResolvedModule::reference)
++ .collect(toSet());
++ hashes.put(mn, ModuleHashes.generate(mrefs, "SHA-256"));
+ }
+ });
+ return hashes;
+ }
+
+- private Path moduleToPath(String name) {
+- ResolvedModule rm = configuration.findModule(name).orElseThrow(
+- () -> new InternalError("Selected module " + name + " not on module path"));
+-
+- URI uri = rm.reference().location().get();
+- Path path = Paths.get(uri);
+- String fn = path.getFileName().toString();
+- if (!fn.endsWith(".jar") && !fn.endsWith(".jmod")) {
+- throw new UnsupportedOperationException(path + " is not a modular JAR or jmod file");
+- }
+- return path;
+- }
+-
+ /*
+ * Utility class
+ */
+diff -ru orig/jdk-3cc80be736f2/jdk/src/java.base/share/classes/jdk/internal/module/ModuleHashes.java jdk-3cc80be736f2/jdk/src/java.base/share/classes/jdk/internal/module/ModuleHashes.java
+--- orig/jdk-3cc80be736f2/jdk/src/java.base/share/classes/jdk/internal/module/ModuleHashes.java 1970-01-01 01:00:01.000000000 +0100
++++ jdk-3cc80be736f2/jdk/src/java.base/share/classes/jdk/internal/module/ModuleHashes.java 2022-04-12 16:58:05.639985936 +0200
+@@ -26,17 +26,21 @@
+ package jdk.internal.module;
+
+ import java.io.IOException;
++import java.io.InputStream;
+ import java.io.UncheckedIOException;
+-import java.nio.ByteBuffer;
+-import java.nio.channels.FileChannel;
+-import java.nio.file.Path;
++import java.lang.module.ModuleReader;
++import java.lang.module.ModuleReference;
++import java.nio.charset.StandardCharsets;
+ import java.security.MessageDigest;
+ import java.security.NoSuchAlgorithmException;
++import java.util.Arrays;
+ import java.util.Collections;
+ import java.util.HashMap;
+ import java.util.Map;
+ import java.util.Objects;
+ import java.util.Set;
++import java.util.TreeMap;
++import java.util.function.Supplier;
+
+ /**
+ * The result of hashing the contents of a number of module artifacts.
+@@ -60,8 +64,8 @@
+ * @param algorithm the algorithm used to create the hashes
+ * @param nameToHash the map of module name to hash value
+ */
+- public ModuleHashes(String algorithm, Map<String, byte[]> nameToHash) {
+- this.algorithm = algorithm;
++ ModuleHashes(String algorithm, Map<String, byte[]> nameToHash) {
++ this.algorithm = Objects.requireNonNull(algorithm);
+ this.nameToHash = Collections.unmodifiableMap(nameToHash);
+ }
+
+@@ -95,54 +99,125 @@
+ }
+
+ /**
+- * Computes the hash for the given file with the given message digest
+- * algorithm.
++ * Computes a hash from the names and content of a module.
+ *
++ * @param reader the module reader to access the module content
++ * @param algorithm the name of the message digest algorithm to use
++ * @return the hash
++ * @throws IllegalArgumentException if digest algorithm is not supported
+ * @throws UncheckedIOException if an I/O error occurs
+ * @throws RuntimeException if the algorithm is not available
+ */
+- public static byte[] computeHash(Path file, String algorithm) {
++ private static byte[] computeHash(ModuleReader reader, String algorithm) {
++ MessageDigest md;
+ try {
+- MessageDigest md = MessageDigest.getInstance(algorithm);
+-
+- // Ideally we would just mmap the file but this consumes too much
+- // memory when jlink is running concurrently on very large jmods
+- try (FileChannel fc = FileChannel.open(file)) {
+- ByteBuffer bb = ByteBuffer.allocate(32*1024);
+- while (fc.read(bb) > 0) {
+- bb.flip();
+- md.update(bb);
+- assert bb.remaining() == 0;
+- bb.clear();
+- }
+- }
+-
+- return md.digest();
++ md = MessageDigest.getInstance(algorithm);
+ } catch (NoSuchAlgorithmException e) {
+- throw new RuntimeException(e);
++ throw new IllegalArgumentException(e);
++ }
++ try {
++ byte[] buf = new byte[32*1024];
++ reader.list().sorted().forEach(rn -> {
++ md.update(rn.getBytes(StandardCharsets.UTF_8));
++ try (InputStream in = reader.open(rn).orElseThrow(java.util.NoSuchElementException::new)) {
++ int n;
++ while ((n = in.read(buf)) > 0) {
++ md.update(buf, 0, n);
++ }
++ } catch (IOException ioe) {
++ throw new UncheckedIOException(ioe);
++ }
++ });
+ } catch (IOException ioe) {
+ throw new UncheckedIOException(ioe);
+ }
++ return md.digest();
+ }
+
+ /**
+- * Computes the hash for every entry in the given map, returning a
+- * {@code ModuleHashes} to encapsulate the result. The map key is
+- * the entry name, typically the module name. The map value is the file
+- * path to the entry (module artifact).
++ * Computes a hash from the names and content of a module.
+ *
++ * @param supplier supplies the module reader to access the module content
++ * @param algorithm the name of the message digest algorithm to use
++ * @return the hash
++ * @throws IllegalArgumentException if digest algorithm is not supported
++ * @throws UncheckedIOException if an I/O error occurs
++ */
++ static byte[] computeHash(Supplier<ModuleReader> supplier, String algorithm) {
++ try (ModuleReader reader = supplier.get()) {
++ return computeHash(reader, algorithm);
++ } catch (IOException ioe) {
++ throw new UncheckedIOException(ioe);
++ }
++ }
++
++ /**
++ * Computes the hash from the names and content of a set of modules. Returns
++ * a {@code ModuleHashes} to encapsulate the result.
++ * @param mrefs the set of modules
++ * @param algorithm the name of the message digest algorithm to use
+ * @return ModuleHashes that encapsulates the hashes
++ * @throws IllegalArgumentException if digest algorithm is not supported
++ * @throws UncheckedIOException if an I/O error occurs
+ */
+- public static ModuleHashes generate(Map<String, Path> map, String algorithm) {
++ static ModuleHashes generate(Set<ModuleReference> mrefs, String algorithm) {
+ Map<String, byte[]> nameToHash = new HashMap<>();
+- for (Map.Entry<String, Path> entry: map.entrySet()) {
+- String name = entry.getKey();
+- Path path = entry.getValue();
+- nameToHash.put(name, computeHash(path, algorithm));
++ for (ModuleReference mref : mrefs) {
++ try (ModuleReader reader = mref.open()) {
++ byte[] hash = computeHash(reader, algorithm);
++ nameToHash.put(mref.descriptor().name(), hash);
++ } catch (IOException ioe) {
++ throw new UncheckedIOException(ioe);
++ }
+ }
+ return new ModuleHashes(algorithm, nameToHash);
+ }
+
++ @Override
++ public int hashCode() {
++ int h = algorithm.hashCode();
++ for (Map.Entry<String, byte[]> e : nameToHash.entrySet()) {
++ h = h * 31 + e.getKey().hashCode();
++ h = h * 31 + Arrays.hashCode(e.getValue());
++ }
++ return h;
++ }
++
++ @Override
++ public boolean equals(Object obj) {
++ if (!(obj instanceof ModuleHashes))
++ return false;
++ ModuleHashes other = (ModuleHashes) obj;
++ if (!algorithm.equals(other.algorithm)
++ || nameToHash.size() != other.nameToHash.size())
++ return false;
++ for (Map.Entry<String, byte[]> e : nameToHash.entrySet()) {
++ String name = e.getKey();
++ byte[] hash = e.getValue();
++ if (!Arrays.equals(hash, other.nameToHash.get(name)))
++ return false;
++ }
++ return true;
++ }
++
++ @Override
++ public String toString() {
++ StringBuilder sb = new StringBuilder(algorithm);
++ sb.append(" ");
++ nameToHash.entrySet()
++ .stream()
++ .sorted(Map.Entry.comparingByKey())
++ .forEach(e -> {
++ sb.append(e.getKey());
++ sb.append("=");
++ byte[] ba = e.getValue();
++ for (byte b : ba) {
++ sb.append(String.format("%02x", b & 0xff));
++ }
++ });
++ return sb.toString();
++ }
++
+ /**
+ * This is used by jdk.internal.module.SystemModules class
+ * generated at link time.
+diff -ru orig/jdk-3cc80be736f2/jdk/src/java.base/share/classes/jdk/internal/module/ModuleInfoExtender.java jdk-3cc80be736f2/jdk/src/java.base/share/classes/jdk/internal/module/ModuleInfoExtender.java
+--- orig/jdk-3cc80be736f2/jdk/src/java.base/share/classes/jdk/internal/module/ModuleInfoExtender.java 1970-01-01 01:00:01.000000000 +0100
++++ jdk-3cc80be736f2/jdk/src/java.base/share/classes/jdk/internal/module/ModuleInfoExtender.java 2022-04-12 16:43:12.967868689 +0200
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2014, 2020, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+diff -ru orig/jdk-3cc80be736f2/jdk/src/java.base/share/classes/jdk/internal/module/ModuleReferences.java jdk-3cc80be736f2/jdk/src/java.base/share/classes/jdk/internal/module/ModuleReferences.java
+--- orig/jdk-3cc80be736f2/jdk/src/java.base/share/classes/jdk/internal/module/ModuleReferences.java 1970-01-01 01:00:01.000000000 +0100
++++ jdk-3cc80be736f2/jdk/src/java.base/share/classes/jdk/internal/module/ModuleReferences.java 2022-04-12 16:43:12.971868797 +0200
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -95,7 +95,7 @@
+ Path file) {
+ URI uri = file.toUri();
+ Supplier<ModuleReader> supplier = () -> new JarModuleReader(file, uri);
+- HashSupplier hasher = (a) -> ModuleHashes.computeHash(file, a);
++ HashSupplier hasher = (a) -> ModuleHashes.computeHash(supplier, a);
+ return newModule(attrs, uri, supplier, patcher, hasher);
+ }
+
+@@ -105,7 +105,7 @@
+ static ModuleReference newJModModule(ModuleInfo.Attributes attrs, Path file) {
+ URI uri = file.toUri();
+ Supplier<ModuleReader> supplier = () -> new JModModuleReader(file, uri);
+- HashSupplier hasher = (a) -> ModuleHashes.computeHash(file, a);
++ HashSupplier hasher = (a) -> ModuleHashes.computeHash(supplier, a);
+ return newModule(attrs, uri, supplier, null, hasher);
+ }
+
diff --git a/gnu/packages/patches/openjdk-9-module2-reproducibility.patch b/gnu/packages/patches/openjdk-9-module2-reproducibility.patch
new file mode 100644
index 0000000000..f167d94dc8
--- /dev/null
+++ b/gnu/packages/patches/openjdk-9-module2-reproducibility.patch
@@ -0,0 +1,125 @@
+Backport from openjdk 10
+
+--- orig/jdk-3cc80be736f2/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/ModuleSorter.java 1970-01-01 01:00:01.000000000 +0100
++++ jdk-3cc80be736f2/jdk/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/ModuleSorter.java 2022-04-12 20:48:04.474353305 +0200
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
++ * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+@@ -30,13 +30,16 @@
+ import jdk.tools.jlink.plugin.ResourcePoolModuleView;
+
+ import java.lang.module.ModuleDescriptor;
++import java.lang.module.ModuleDescriptor.Requires;
+ import java.lang.module.ModuleDescriptor.Requires.Modifier;
+
+ import java.nio.ByteBuffer;
+-import java.util.Deque;
++import java.util.ArrayList;
++import java.util.Comparator;
+ import java.util.HashMap;
+ import java.util.HashSet;
+-import java.util.LinkedList;
++import java.util.LinkedHashSet;
++import java.util.List;
+ import java.util.Map;
+ import java.util.Set;
+ import java.util.stream.Stream;
+@@ -45,9 +48,8 @@
+ * Helper class to sort modules in topological order
+ */
+ public final class ModuleSorter {
+- private final Deque<ResourcePoolModule> nodes = new LinkedList<>();
+- private final Map<String, Set<ResourcePoolModule>> edges = new HashMap<>();
+- private final Deque<ResourcePoolModule> result = new LinkedList<>();
++ private final Map<ResourcePoolModule, Set<ResourcePoolModule>> graph = new HashMap<>();
++ private final List<ResourcePoolModule> result = new ArrayList<>();
+
+ private final ResourcePoolModuleView moduleView;
+
+@@ -69,11 +71,17 @@
+
+ private ModuleSorter addModule(ResourcePoolModule module) {
+ addNode(module);
+- readModuleDescriptor(module).requires().forEach(req -> {
++ // the module graph will be traversed in a stable order for
++ // the topological sort. So add the dependences in the module name order
++ readModuleDescriptor(module).requires()
++ .stream()
++ .sorted(Comparator.comparing(Requires::name))
++ .forEach(req ->
++ {
+ ResourcePoolModule dep = moduleView.findModule(req.name()).orElse(null);
+ if (dep != null) {
+ addNode(dep);
+- edges.get(module.name()).add(dep);
++ graph.get(module).add(dep);
+ } else if (!req.modifiers().contains(Modifier.STATIC)) {
+ throw new PluginException(req.name() + " not found");
+ }
+@@ -82,22 +90,23 @@
+ }
+
+ private void addNode(ResourcePoolModule module) {
+- nodes.add(module);
+- edges.computeIfAbsent(module.name(), _n -> new HashSet<>());
++ graph.computeIfAbsent(module, _n -> new LinkedHashSet<>());
+ }
+
++ /*
++ * The module graph will be traversed in a stable order
++ * (traversing the modules and their dependences in alphabetical order)
++ * so that it will produce the same result of a given module graph.
++ */
+ private synchronized void build() {
+- if (!result.isEmpty() || nodes.isEmpty())
++ if (!result.isEmpty() || graph.isEmpty())
+ return;
+
+- Deque<ResourcePoolModule> visited = new LinkedList<>();
+- Deque<ResourcePoolModule> done = new LinkedList<>();
+- ResourcePoolModule node;
+- while ((node = nodes.poll()) != null) {
+- if (!visited.contains(node)) {
+- visit(node, visited, done);
+- }
+- }
++ Set<ResourcePoolModule> visited = new HashSet<>();
++ Set<ResourcePoolModule> done = new HashSet<>();
++ graph.keySet().stream()
++ .sorted(Comparator.comparing(ResourcePoolModule::name))
++ .forEach(node -> visit(node, visited, done));
+ }
+
+ public Stream<ResourcePoolModule> sorted() {
+@@ -106,19 +115,21 @@
+ }
+
+ private void visit(ResourcePoolModule node,
+- Deque<ResourcePoolModule> visited,
+- Deque<ResourcePoolModule> done) {
++ Set<ResourcePoolModule> visited,
++ Set<ResourcePoolModule> done) {
+ if (visited.contains(node)) {
+ if (!done.contains(node)) {
+ throw new IllegalArgumentException("Cyclic detected: " +
+- node + " " + edges.get(node.name()));
++ node + " " + graph.get(node));
+ }
+ return;
+ }
++
++ // traverse the dependences of the given module which are
++ // also sorted in alphabetical order
+ visited.add(node);
+- edges.get(node.name())
+- .forEach(x -> visit(x, visited, done));
++ graph.get(node).forEach(x -> visit(x, visited, done));
+ done.add(node);
+- result.addLast(node);
++ result.add(node);
+ }
+ }
diff --git a/gnu/packages/patches/openjdk-9-module3-reproducibility.patch b/gnu/packages/patches/openjdk-9-module3-reproducibility.patch
new file mode 100644
index 0000000000..9db54f5531
--- /dev/null
+++ b/gnu/packages/patches/openjdk-9-module3-reproducibility.patch
@@ -0,0 +1,36 @@
+From: Danny Milosavljevic <dannym@scratchpost.org>
+Date: Wed, 18 Apr 2022 21:50:00 +0100
+Subject: Make module descriptor reproducible
+
+--- orig/jdk-3cc80be736f2/jdk/src/java.base/share/classes/java/lang/module/ModuleDescriptor.java 1970-01-01 01:00:01.000000000 +0100
++++ jdk-3cc80be736f2/jdk/src/java.base/share/classes/java/lang/module/ModuleDescriptor.java 2022-04-13 17:30:37.242775977 +0200
+@@ -43,6 +43,7 @@
+ import java.util.Objects;
+ import java.util.Optional;
+ import java.util.Set;
++import java.util.TreeSet;
+ import java.util.function.Supplier;
+ import java.util.stream.Collectors;
+ import java.util.stream.Stream;
+@@ -2155,9 +2156,9 @@
+ * @return The module descriptor
+ */
+ public ModuleDescriptor build() {
+- Set<Requires> requires = new HashSet<>(this.requires.values());
+- Set<Exports> exports = new HashSet<>(this.exports.values());
+- Set<Opens> opens = new HashSet<>(this.opens.values());
++ Set<Requires> requires = new TreeSet<>(this.requires.values());
++ Set<Exports> exports = new TreeSet<>(this.exports.values());
++ Set<Opens> opens = new TreeSet<>(this.opens.values());
+
+ // add dependency on java.base
+ if (strict
+@@ -2169,7 +2170,7 @@
+ null));
+ }
+
+- Set<Provides> provides = new HashSet<>(this.provides.values());
++ Set<Provides> provides = new TreeSet<>(this.provides.values());
+
+ return new ModuleDescriptor(name,
+ version,
diff --git a/gnu/packages/patches/pstoedit-fix-gcc12.patch b/gnu/packages/patches/pstoedit-fix-gcc12.patch
new file mode 100644
index 0000000000..4aeeaff818
--- /dev/null
+++ b/gnu/packages/patches/pstoedit-fix-gcc12.patch
@@ -0,0 +1,12 @@
+Retrieved from Fedora: https://src.fedoraproject.org/rpms/pstoedit/tree
+
+--- a/src/drvpptx.orig.cpp 2021-08-29 16:25:45.000000000 +0200
++++ b/src/drvpptx.cpp 2022-01-28 11:57:44.765756339 +0100
+@@ -65,6 +65,7 @@
+ #define ZIP_EXTERN extern
+
+ #include <zip.h>
++#include <memory>
+
+ #ifdef _MSC_VER
+ // MS VC++ Windows
diff --git a/gnu/packages/patches/pstoedit-fix-plainC.patch b/gnu/packages/patches/pstoedit-fix-plainC.patch
new file mode 100644
index 0000000000..684c5043be
--- /dev/null
+++ b/gnu/packages/patches/pstoedit-fix-plainC.patch
@@ -0,0 +1,47 @@
+Retrieved from Fedora: https://src.fedoraproject.org/rpms/pstoedit/tree
+
+diff --git a/src/pstoedit.cpp b/src/pstoedit.cpp
+index a718f37..ac0df37 100755
+--- a/src/pstoedit.cpp
++++ b/src/pstoedit.cpp
+@@ -327,6 +327,11 @@ extern FILE *yyin; // used by lexer
+ // otherwise we could declare it locally where it is used
+
+
++extern "C" DLLEXPORT void loadpstoeditplugins_plainC(const char *progname, int verbose)
++{
++ return loadpstoeditplugins(progname, cerr, (bool) verbose);
++}
++
+ static void usage(ostream & outstream, bool forTeX, bool withdetails, bool withcategories )
+ {
+ if (withcategories) {
+diff --git a/src/pstoedit.h b/src/pstoedit.h
+index 294b3c2..74ebf2a 100755
+--- a/src/pstoedit.h
++++ b/src/pstoedit.h
+@@ -100,8 +100,13 @@ void clearPstoeditDriverInfo_plainC(struct DriverDescription_S * ptr);
+
+ #ifdef __cplusplus
+ extern "C" DLLEXPORT
+-#endif
+ void loadpstoeditplugins(const char* progname, std::ostream & errstream, bool verbose);
++#endif
++
++#ifdef __cplusplus
++extern "C" DLLEXPORT
++#endif
++void loadpstoeditplugins_plainC(const char* progname, int verbose);
+
+ #ifdef __cplusplus
+ extern "C" DLLEXPORT
+--- a/src/pstoedit.orig.h 2023-07-22 19:27:43.691166652 +0200
++++ b/src/pstoedit.h 2023-07-22 19:31:18.897952130 +0200
+@@ -37,6 +37,7 @@
+ #endif
+
+ #include "pstoedll.h"
++#include <stdbool.h>
+
+ typedef int (*execute_interpreter_function)(int argc, const char * const argv[]);
+
diff --git a/gnu/packages/patches/pstoedit-pkglibdir.patch b/gnu/packages/patches/pstoedit-pkglibdir.patch
new file mode 100644
index 0000000000..0734913593
--- /dev/null
+++ b/gnu/packages/patches/pstoedit-pkglibdir.patch
@@ -0,0 +1,19 @@
+Retrieved from Fedora: https://src.fedoraproject.org/rpms/pstoedit/tree
+
+--- a/config/pstoedit.pc.orig.in 2018-04-16 14:26:28.000000000 +0200
++++ b/config/pstoedit.pc.in 2020-10-05 14:37:16.750980762 +0200
+@@ -1,7 +1,7 @@
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+ libdir=@libdir@
+-includedir=@includedir@
++includedir=@includedir@/pstoedit
+
+ Name: pstoedit
+ Description: converts PostScript(TM) and PDF files to other vector graphic formats
+@@ -8,4 +8,4 @@
+ Version: @VERSION@.0
+ Requires:
+ Libs: -L@libdir@ -lpstoedit @CXX_STD_LIB@ @CXX_RUNTIME_LIB@ @LIBLD_LDFLAGS@
+-Cflags: -I@includedir@
++Cflags: -I@includedir@/pstoedit
diff --git a/gnu/packages/patches/python-3-reproducible-build.patch b/gnu/packages/patches/python-3-reproducible-build.patch
new file mode 100644
index 0000000000..12bd8de7c2
--- /dev/null
+++ b/gnu/packages/patches/python-3-reproducible-build.patch
@@ -0,0 +1,30 @@
+From 6c8ea7c1dacd42f3ba00440231ec0e6b1a38300d Mon Sep 17 00:00:00 2001
+From: Inada Naoki <songofacandy@gmail.com>
+Date: Sat, 14 Jul 2018 00:46:11 +0900
+Subject: [PATCH] Use FLAG_REF always for interned strings
+
+---
+ Python/marshal.c | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/Python/marshal.c b/Python/marshal.c
+index 6d06266c6a8e2e..51db2e3b2e29a2 100644
+--- a/Python/marshal.c
++++ b/Python/marshal.c
+@@ -275,9 +275,14 @@ w_ref(PyObject *v, char *flag, WFILE *p)
+ if (p->version < 3 || p->hashtable == NULL)
+ return 0; /* not writing object references */
+
+- /* if it has only one reference, it definitely isn't shared */
+- if (Py_REFCNT(v) == 1)
++ /* If it has only one reference, it definitely isn't shared.
++ * But we use TYPE_REF always for interned string, to PYC file stable
++ * as possible.
++ */
++ if (Py_REFCNT(v) == 1 &&
++ !(PyUnicode_CheckExact(v) && PyUnicode_CHECK_INTERNED(v))) {
+ return 0;
++ }
+
+ entry = _Py_HASHTABLE_GET_ENTRY(p->hashtable, v);
+ if (entry != NULL) {
diff --git a/gnu/packages/patches/python-matplotlib-fix-legend-loc-best-test.patch b/gnu/packages/patches/python-matplotlib-fix-legend-loc-best-test.patch
new file mode 100644
index 0000000000..9046eb2b4c
--- /dev/null
+++ b/gnu/packages/patches/python-matplotlib-fix-legend-loc-best-test.patch
@@ -0,0 +1,84 @@
+From 3cc6610597ee16a0cce39f7b033ae529972177e7 Mon Sep 17 00:00:00 2001
+From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
+Date: Thu, 10 Aug 2023 00:09:53 -0400
+Subject: [PATCH] TST: Improve test for Legend(loc='best') warning
+
+By patching the timer instead of using actually large data, we can both
+a) speed up these tests (~7.5s vs <0.2s for both), and b) consistently
+trigger the warning even on systems which are fast (such as the M1
+systems on Cirrus.)
+
+Also, copy the test data from `test_legend_auto3`, which correctly hits
+all candidate locations for the 'best' legend locator without having to
+fill up the entire Axes with data.
+---
+ lib/matplotlib/tests/test_legend.py | 38 ++++++++++++++++++++---------
+ 1 file changed, 27 insertions(+), 11 deletions(-)
+
+diff --git a/lib/matplotlib/tests/test_legend.py b/lib/matplotlib/tests/test_legend.py
+index 759ac6aadaff..1549354ba56b 100644
+--- a/lib/matplotlib/tests/test_legend.py
++++ b/lib/matplotlib/tests/test_legend.py
+@@ -1,5 +1,7 @@
+ import collections
++import itertools
+ import platform
++import time
+ from unittest import mock
+ import warnings
+
+@@ -1109,29 +1111,43 @@ def test_usetex_no_warn(caplog):
+ assert "Font family ['serif'] not found." not in caplog.text
+
+
+-def test_warn_big_data_best_loc():
++def test_warn_big_data_best_loc(monkeypatch):
++ # Force _find_best_position to think it took a long time.
++ counter = itertools.count(0, step=1.5)
++ monkeypatch.setattr(time, 'perf_counter', lambda: next(counter))
++
+ fig, ax = plt.subplots()
+ fig.canvas.draw() # So that we can call draw_artist later.
+- for idx in range(1000):
+- ax.plot(np.arange(5000), label=idx)
++
++ # Place line across all possible legend locations.
++ x = [0.9, 0.1, 0.1, 0.9, 0.9, 0.5]
++ y = [0.95, 0.95, 0.05, 0.05, 0.5, 0.5]
++ ax.plot(x, y, 'o-', label='line')
++
+ with rc_context({'legend.loc': 'best'}):
+ legend = ax.legend()
+- with pytest.warns(UserWarning) as records:
++ with pytest.warns(UserWarning,
++ match='Creating legend with loc="best" can be slow with large '
++ 'amounts of data.') as records:
+ fig.draw_artist(legend) # Don't bother drawing the lines -- it's slow.
+ # The _find_best_position method of Legend is called twice, duplicating
+ # the warning message.
+ assert len(records) == 2
+- for record in records:
+- assert str(record.message) == (
+- 'Creating legend with loc="best" can be slow with large '
+- 'amounts of data.')
+
+
+-def test_no_warn_big_data_when_loc_specified():
++def test_no_warn_big_data_when_loc_specified(monkeypatch):
++ # Force _find_best_position to think it took a long time.
++ counter = itertools.count(0, step=1.5)
++ monkeypatch.setattr(time, 'perf_counter', lambda: next(counter))
++
+ fig, ax = plt.subplots()
+ fig.canvas.draw()
+- for idx in range(1000):
+- ax.plot(np.arange(5000), label=idx)
++
++ # Place line across all possible legend locations.
++ x = [0.9, 0.1, 0.1, 0.9, 0.9, 0.5]
++ y = [0.95, 0.95, 0.05, 0.05, 0.5, 0.5]
++ ax.plot(x, y, 'o-', label='line')
++
+ legend = ax.legend('best')
+ fig.draw_artist(legend) # Check that no warning is emitted.
+
diff --git a/gnu/packages/patches/python-pillow-use-zlib-1.3.patch b/gnu/packages/patches/python-pillow-use-zlib-1.3.patch
new file mode 100644
index 0000000000..48863ba8da
--- /dev/null
+++ b/gnu/packages/patches/python-pillow-use-zlib-1.3.patch
@@ -0,0 +1,21 @@
+From 9ef7cb39def45b0fe1cdf4828ca20838a1fc39d1 Mon Sep 17 00:00:00 2001
+From: Andrew Murray <radarhere@users.noreply.github.com>
+Date: Fri, 18 Aug 2023 22:22:51 +1000
+Subject: [PATCH] Updated zlib to 1.3
+
+---
+ Tests/test_file_png.py | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/Tests/test_file_png.py b/Tests/test_file_png.py
+index 3ffe93c6d15..f8df88d6777 100644
+--- a/Tests/test_file_png.py
++++ b/Tests/test_file_png.py
+@@ -79,6 +79,6 @@ def get_chunks(self, filename):
+
+ def test_sanity(self, tmp_path):
+ # internal version number
+- assert re.search(r"\d+\.\d+\.\d+(\.\d+)?$", features.version_codec("zlib"))
++ assert re.search(r"\d+(\.\d+){1,3}$", features.version_codec("zlib"))
+
+ test_file = str(tmp_path / "temp.png")
diff --git a/gnu/packages/patches/sdl-libx11-1.6.patch b/gnu/packages/patches/sdl-libx11-1.6.patch
deleted file mode 100644
index 73ba9ac071..0000000000
--- a/gnu/packages/patches/sdl-libx11-1.6.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Update _XData32 declaration in SDL_x11sym.h to match that of libx11 1.6.
-
---- SDL-1.2.15/src/video/x11/SDL_x11sym.h.~1~ 2012-01-19 01:30:06.000000000 -0500
-+++ SDL-1.2.15/src/video/x11/SDL_x11sym.h 2014-12-26 00:22:36.445067694 -0500
-@@ -165,7 +165,7 @@
- */
- #ifdef LONG64
- SDL_X11_MODULE(IO_32BIT)
--SDL_X11_SYM(int,_XData32,(Display *dpy,register long *data,unsigned len),(dpy,data,len),return)
-+SDL_X11_SYM(int,_XData32,(Display *dpy,register _Xconst long *data,unsigned len),(dpy,data,len),return)
- SDL_X11_SYM(void,_XRead32,(Display *dpy,register long *data,long len),(dpy,data,len),)
- #endif
-
diff --git a/gnu/packages/patches/sway-add-libinput-config-accel.patch b/gnu/packages/patches/sway-add-libinput-config-accel.patch
new file mode 100644
index 0000000000..29d6b13800
--- /dev/null
+++ b/gnu/packages/patches/sway-add-libinput-config-accel.patch
@@ -0,0 +1,49 @@
+From dee032d0a0ecd958c902b88302dc59703d703c7f Mon Sep 17 00:00:00 2001
+From: Simon Ser <contact@emersion.fr>
+Date: Sun, 26 Mar 2023 23:27:40 +0200
+Subject: [PATCH] ipc: add LIBINPUT_CONFIG_ACCEL_PROFILE_CUSTOM entry
+
+This was introduced in the last libinput release.
+
+Fixes the following error:
+
+ ../sway/ipc-json.c:928:17: error: enumeration value 'LIBINPUT_CONFIG_ACCEL_PROFILE_CUSTOM' not handled in switch [-Werror=switch]
+ 928 | switch (libinput_device_config_accel_get_profile(device)) {
+ | ^~~~~~
+---
+ meson.build | 5 +++++
+ sway/ipc-json.c | 5 +++++
+ 2 files changed, 10 insertions(+)
+
+diff --git a/meson.build b/meson.build
+index 84e7c6c56f..d1fbfa38ab 100644
+--- a/meson.build
++++ b/meson.build
+@@ -117,6 +117,11 @@ conf_data.set10('HAVE_LIBSYSTEMD', sdbus.found() and sdbus.name() == 'libsystemd
+ conf_data.set10('HAVE_LIBELOGIND', sdbus.found() and sdbus.name() == 'libelogind')
+ conf_data.set10('HAVE_BASU', sdbus.found() and sdbus.name() == 'basu')
+ conf_data.set10('HAVE_TRAY', have_tray)
++conf_data.set10('HAVE_LIBINPUT_CONFIG_ACCEL_PROFILE_CUSTOM', cc.has_header_symbol(
++ 'libinput.h',
++ 'LIBINPUT_CONFIG_ACCEL_PROFILE_CUSTOM',
++ dependencies: libinput,
++))
+
+ scdoc = dependency('scdoc', version: '>=1.9.2', native: true, required: get_option('man-pages'))
+ if scdoc.found()
+diff --git a/sway/ipc-json.c b/sway/ipc-json.c
+index 51e6a99518..c7cbea0136 100644
+--- a/sway/ipc-json.c
++++ b/sway/ipc-json.c
+@@ -935,6 +935,11 @@ static json_object *describe_libinput_device(struct libinput_device *device) {
+ case LIBINPUT_CONFIG_ACCEL_PROFILE_ADAPTIVE:
+ accel_profile = "adaptive";
+ break;
++#if HAVE_LIBINPUT_CONFIG_ACCEL_PROFILE_CUSTOM
++ case LIBINPUT_CONFIG_ACCEL_PROFILE_CUSTOM:
++ accel_profile = "custom";
++ break;
++#endif
+ }
+ json_object_object_add(object, "accel_profile",
+ json_object_new_string(accel_profile));
diff --git a/gnu/packages/patches/webrtc-audio-processing-big-endian.patch b/gnu/packages/patches/webrtc-audio-processing-big-endian.patch
deleted file mode 100644
index 78333fe7b7..0000000000
--- a/gnu/packages/patches/webrtc-audio-processing-big-endian.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-https://bugs.freedesktop.org/show_bug.cgi?id=95738
-https://bugs.freedesktop.org/attachment.cgi?id=124025
-
-diff -up webrtc-audio-processing-0.2/webrtc/common_audio/wav_file.cc.than webrtc-audio-processing-0.2/webrtc/common_audio/wav_file.cc
---- webrtc-audio-processing-0.2/webrtc/common_audio/wav_file.cc.than 2016-05-24 08:28:45.749940095 -0400
-+++ webrtc-audio-processing-0.2/webrtc/common_audio/wav_file.cc 2016-05-24 08:50:30.361020010 -0400
-@@ -64,9 +64,6 @@ WavReader::~WavReader() {
- }
-
- size_t WavReader::ReadSamples(size_t num_samples, int16_t* samples) {
--#ifndef WEBRTC_ARCH_LITTLE_ENDIAN
--#error "Need to convert samples to big-endian when reading from WAV file"
--#endif
- // There could be metadata after the audio; ensure we don't read it.
- num_samples = std::min(rtc::checked_cast<uint32_t>(num_samples),
- num_samples_remaining_);
-@@ -76,6 +73,12 @@ size_t WavReader::ReadSamples(size_t num
- RTC_CHECK(read == num_samples || feof(file_handle_));
- RTC_CHECK_LE(read, num_samples_remaining_);
- num_samples_remaining_ -= rtc::checked_cast<uint32_t>(read);
-+#ifndef WEBRTC_ARCH_LITTLE_ENDIAN
-+ //convert to big-endian
-+ for(size_t idx = 0; idx < num_samples; idx++) {
-+ samples[idx] = (samples[idx]<<8) | (samples[idx]>>8);
-+ }
-+#endif
- return read;
- }
-
-@@ -120,10 +123,17 @@ WavWriter::~WavWriter() {
-
- void WavWriter::WriteSamples(const int16_t* samples, size_t num_samples) {
- #ifndef WEBRTC_ARCH_LITTLE_ENDIAN
--#error "Need to convert samples to little-endian when writing to WAV file"
--#endif
-+ int16_t * le_samples = new int16_t[num_samples];
-+ for(size_t idx = 0; idx < num_samples; idx++) {
-+ le_samples[idx] = (samples[idx]<<8) | (samples[idx]>>8);
-+ }
-+ const size_t written =
-+ fwrite(le_samples, sizeof(*le_samples), num_samples, file_handle_);
-+ delete []le_samples;
-+#else
- const size_t written =
- fwrite(samples, sizeof(*samples), num_samples, file_handle_);
-+#endif
- RTC_CHECK_EQ(num_samples, written);
- num_samples_ += static_cast<uint32_t>(written);
- RTC_CHECK(written <= std::numeric_limits<uint32_t>::max() ||
-diff -up webrtc-audio-processing-0.2/webrtc/common_audio/wav_header.cc.than webrtc-audio-processing-0.2/webrtc/common_audio/wav_header.cc
---- webrtc-audio-processing-0.2/webrtc/common_audio/wav_header.cc.than 2016-05-24 08:50:52.591379263 -0400
-+++ webrtc-audio-processing-0.2/webrtc/common_audio/wav_header.cc 2016-05-24 08:52:08.552606848 -0400
-@@ -129,7 +129,39 @@ static inline std::string ReadFourCC(uin
- return std::string(reinterpret_cast<char*>(&x), 4);
- }
- #else
--#error "Write be-to-le conversion functions"
-+static inline void WriteLE16(uint16_t* f, uint16_t x) {
-+ *f = ((x << 8) & 0xff00) | ( ( x >> 8) & 0x00ff);
-+}
-+
-+static inline void WriteLE32(uint32_t* f, uint32_t x) {
-+ *f = ( (x & 0x000000ff) << 24 )
-+ | ((x & 0x0000ff00) << 8)
-+ | ((x & 0x00ff0000) >> 8)
-+ | ((x & 0xff000000) >> 24 );
-+}
-+
-+static inline void WriteFourCC(uint32_t* f, char a, char b, char c, char d) {
-+ *f = (static_cast<uint32_t>(a) << 24 )
-+ | (static_cast<uint32_t>(b) << 16)
-+ | (static_cast<uint32_t>(c) << 8)
-+ | (static_cast<uint32_t>(d) );
-+}
-+
-+static inline uint16_t ReadLE16(uint16_t x) {
-+ return (( x & 0x00ff) << 8 )| ((x & 0xff00)>>8);
-+}
-+
-+static inline uint32_t ReadLE32(uint32_t x) {
-+ return ( (x & 0x000000ff) << 24 )
-+ | ( (x & 0x0000ff00) << 8 )
-+ | ( (x & 0x00ff0000) >> 8)
-+ | ( (x & 0xff000000) >> 24 );
-+}
-+
-+static inline std::string ReadFourCC(uint32_t x) {
-+ x = ReadLE32(x);
-+ return std::string(reinterpret_cast<char*>(&x), 4);
-+}
- #endif
-
- static inline uint32_t RiffChunkSize(uint32_t bytes_in_payload) {
diff --git a/gnu/packages/patches/zig-do-not-link-against-librt.patch b/gnu/packages/patches/zig-do-not-link-against-librt.patch
deleted file mode 100644
index 3239efbdd4..0000000000
--- a/gnu/packages/patches/zig-do-not-link-against-librt.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/src/target.zig 2023-04-22 11:44:47.917416658 +0200
-+++ b/src/target.zig 2023-04-22 11:45:04.577465352 +0200
-@@ -478,7 +478,6 @@
- "-lpthread",
- "-lc",
- "-ldl",
-- "-lrt",
- "-lutil",
- },
- },
diff --git a/gnu/packages/patchutils.scm b/gnu/packages/patchutils.scm
index cdefa48583..eb1066e4b6 100644
--- a/gnu/packages/patchutils.scm
+++ b/gnu/packages/patchutils.scm
@@ -132,7 +132,7 @@ specifying desired matches and transformations in the C code.")
"1va5pzmxbzpi87vdnbjm9qdf9bvzps9xfv0gi4mycgg3bybb0xc8"))))
(build-system gnu-build-system)
(inputs
- (list perl python))
+ (list bash-minimal perl python))
(arguments
'(#:parallel-tests? #f
#:phases
diff --git a/gnu/packages/pciutils.scm b/gnu/packages/pciutils.scm
index 140bbd0e90..d2a352eb6b 100644
--- a/gnu/packages/pciutils.scm
+++ b/gnu/packages/pciutils.scm
@@ -39,7 +39,7 @@
(define-public hwdata
(package
(name "hwdata")
- (version "0.365") ;updated monthly
+ (version "0.374") ;updated monthly
(source (origin
(method git-fetch)
(uri (git-reference
@@ -48,25 +48,15 @@
(file-name (git-file-name name version))
(sha256
(base32
- "00gqx24dyy9l98ygnvx8i087xq8pl9d2393h4d2cm4d5nnvr51d4"))))
+ "1fcmg06lfzqrpq4z4gp12qpk7rd3s0phz4qyhq39ks43r1vxiy26"))))
(build-system gnu-build-system)
- (outputs '("out" "iab" "oui" "pci" "pnp" "usb"))
(arguments
;; Tests require pciutils, python, podman. Disable to avoid recursive dep.
(list
#:tests? #f
;; Do not cross-compile, since the package only contains data.
#:target #f
- #:configure-flags #~(list (string-append "--datadir=" #$output "/share"))
- #:phases
- #~(modify-phases %standard-phases
- (replace 'install
- (lambda _
- (install-file "iab.txt" (string-append #$output:iab "/share/hwdata"))
- (install-file "oui.txt" (string-append #$output:oui "/share/hwdata"))
- (install-file "pci.ids" (string-append #$output:pci "/share/hwdata"))
- (install-file "pnp.ids" (string-append #$output:pnp "/share/hwdata"))
- (install-file "usb.ids" (string-append #$output:usb "/share/hwdata")))))))
+ #:configure-flags #~(list (string-append "--datadir=" #$output "/share"))))
(home-page "https://github.com/vcrhonek/hwdata")
(synopsis "Hardware identification and configuration data")
(description "@code{hwdata} contains various hardware identification and
@@ -159,7 +149,7 @@ Each database is contained in a specific package output, such as the
;; No test suite.
#:tests? #f))
(native-inputs
- (list `(,hwdata "pci") pkg-config which))
+ (list hwdata pkg-config which))
(inputs
`(,@(if (not (target-hurd?))
`(("kmod" ,kmod))
diff --git a/gnu/packages/pcre.scm b/gnu/packages/pcre.scm
index c7471169d9..6f31d3c1d7 100644
--- a/gnu/packages/pcre.scm
+++ b/gnu/packages/pcre.scm
@@ -92,7 +92,7 @@ POSIX regular expression API.")
(define-public pcre2
(package
(name "pcre2")
- (version "10.40")
+ (version "10.42")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/PCRE2Project/pcre2"
@@ -100,7 +100,7 @@ POSIX regular expression API.")
"/pcre2-" version ".tar.bz2"))
(sha256
(base32
- "0s4x2l6g0sb9piwkr3sxqwdswz2g6bk1hhwngv0kv4w38wybir0l"))))
+ "0h78np8h3dxlmvqvpnj558x67267n08n9zsqncmlqapans6csdld"))))
(build-system gnu-build-system)
(outputs '("out" "static"))
(inputs (list bzip2 readline zlib))
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 0c83ff10e1..351c3ab860 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -20,7 +20,7 @@
;;; Copyright © 2020-2024 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2020, 2022 Michael Rohleder <mike@rohleder.de>
;;; Copyright © 2020, 2024 Timotej Lazar <timotej.lazar@araneo.si>
-;;; Copyright © 2020, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2020, 2022, 2023, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2022 Paul A. Patience <paul@apatience.com>
;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com>
@@ -133,8 +133,7 @@
(base32 "0kp1dcww5zl04wnbqbi8vjzpc5qgr8gr8rcx0s6s4xbjnzvqqw8d"))))
(build-system meson-build-system)
(arguments
- (list #:meson meson/newer
- #:configure-flags #~(list "-Dcpp_std=c++23")
+ (list #:configure-flags #~(list "-Dcpp_std=c++23")
#:test-options '(list "plainc")
#:phases
#~(modify-phases %standard-phases
@@ -265,10 +264,10 @@ information.")
`("QT_PLUGIN_PATH" ":" =
(,(string-append qtbase "/lib/qt5/plugins")))
`("QT_QPA_PLATFORM_PLUGIN_PATH" ":" =
- (,(string-append qtbase "/lib/qt5/plugins/platforms"))))
- #t))))))
+ (,(string-append qtbase "/lib/qt5/plugins/platforms"))))))))))
(inputs
- (list python-poppler-qt5
+ (list bash-minimal
+ python-poppler-qt5
python-pypdf2
python-pyqt
qtbase-5))
@@ -918,14 +917,14 @@ line tools for batch rendering @command{pdfdraw}, rewriting files
(define-public qpdf
(package
(name "qpdf")
- (version "11.1.0")
+ (version "11.8.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/qpdf/qpdf/" version
"/qpdf-" version ".tar.gz"))
(sha256
(base32
- "0bg2d4585nxss2zakq105ibhzzsa1bhwpmr0k8752fg2qqxcz9rl"))))
+ "0n8jfk4yf0m36rs9lg82pj9lv6pdqpfh8mhacc1ih9ahpigiycnr"))))
(build-system cmake-build-system)
(arguments
(list #:configure-flags #~'("-DBUILD_STATIC_LIBS=OFF")))
@@ -944,7 +943,7 @@ program capable of converting PDF into other formats.")
;; Prior to the 7.0 release, QPDF was licensed under Artistic 2.0.
;; Users can still choose to use the old license at their option.
(license (list license:asl2.0 license:clarified-artistic))
- (home-page "https://qpdf.sourceforge.net/")))
+ (home-page "https://qpdf.sourceforge.io/")))
(define-public qpdfview
(package
@@ -1200,7 +1199,7 @@ vector formats.")
(,(search-input-file inputs "bin/xpdf"))))
(install-file "impressive.1" man1)))))))
;; TODO: Add dependency on pdftk.
- (inputs (list python-pygame python-pillow sdl xpdf))
+ (inputs (list bash-minimal python-pygame python-pillow sdl xpdf))
(home-page "https://impressive.sourceforge.net")
(synopsis "PDF presentation tool with visual effects")
(description
@@ -1443,7 +1442,7 @@ manage or manipulate PDFs.")
(native-inputs
(list intltool python-distutils-extra))
(inputs
- (list gtk+ poppler))
+ (list bash-minimal gtk+ poppler))
(propagated-inputs
(list img2pdf
python-dateutil
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 57a06f836b..49e5c521b3 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -599,14 +599,7 @@ requires only 10MB of RAM.")
(list libxslt))
(propagated-inputs
(list perl-class-xsaccessor perl-test-trap))
- (native-search-paths
- ;; xsltproc's search paths, to avoid propagating libxslt.
- (list (search-path-specification
- (variable "XML_CATALOG_FILES")
- (separator " ")
- (files '("xml"))
- (file-pattern "^catalog\\.xml$")
- (file-type 'regular))))
+ (native-search-paths %libxslt-search-paths)
(home-page "https://www.shlomifish.org/open-source/projects/docmake/")
(synopsis "Translate DocBook/XML documentation into other file formats")
(description
@@ -4384,6 +4377,8 @@ errors are rethrown automatically.")
(,(getenv "PERL5LIB")
,(string-append out "/lib/perl5/site_perl"))))
#t))))))
+ (inputs
+ `(("bash" ,bash-minimal))) ; for wrap-program
(propagated-inputs
(list perl-moo perl-strictures))
(home-page "https://metacpan.org/release/Eval-WithLexicals")
@@ -5688,16 +5683,16 @@ for immediate access from Perl.")
(define-public perl-inline-c
(package
(name "perl-inline-c")
- (version "0.81")
+ (version "0.82_001")
(source
(origin
(method url-fetch)
(uri (string-append
- "mirror://cpan/authors/id/T/TI/TINITA/Inline-C-"
+ "mirror://cpan/authors/id/E/ET/ETJ/Inline-C-"
version ".tar.gz"))
(sha256
(base32
- "1b3sr39813di3j1kwbgn1xq2z726rhjjdw809ydzgmshj26jb1gi"))))
+ "1njzhvid1g08yhqynv26hpw8d0gpb99m7v96zqk0rwxlywy61hc3"))))
(build-system perl-build-system)
(arguments
`(#:phases
@@ -12197,6 +12192,8 @@ spirit of both the SDL and Perl.")
(wrap-program "bin/sgmlspl"
`("PERL5LIB" suffix (,site))))
#t))))))
+ (inputs
+ `(("bash" ,bash-minimal))) ; for wrap-program
(native-inputs
(list perl-module-build))
(home-page "https://metacpan.org/release/RAAB/SGMLSpm-1.1")
diff --git a/gnu/packages/phabricator.scm b/gnu/packages/phabricator.scm
index df9b369506..d6c0f03d01 100644
--- a/gnu/packages/phabricator.scm
+++ b/gnu/packages/phabricator.scm
@@ -18,6 +18,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages phabricator)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages php)
#:use-module (gnu packages version-control)
#:use-module (guix build-system gnu)
@@ -64,7 +65,7 @@
(string-append (assoc-ref %build-inputs i) "/bin"))
'("php" "git" "mercurial" "subversion")))))))))))
(inputs
- (list php git mercurial subversion))
+ (list bash-minimal php git mercurial subversion))
(home-page "https://github.com/phacility/arcanist")
(synopsis "Command-line interface for Phabricator")
(description
diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm
index 1018d2e801..88a6791822 100644
--- a/gnu/packages/photo.scm
+++ b/gnu/packages/photo.scm
@@ -9,6 +9,7 @@
;;; Copyright © 2020 Sebastian Schott <sschott@mailbox.org>
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
;;; Copyright © 2020. 2021, 2022, 2024 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2022, 2023 John Kehayias <john.kehayias@protonmail.com>
;;; Copyright © 2022 Sharlatan Hellseher <sharlatanus@gmail.com>
;;; Copyright © 2023 Bruno Victal <mirai@makinata.eu>
@@ -116,7 +117,8 @@
(native-inputs
(list file intltool gobject-introspection))
(inputs
- `(("gdk-pixbuf" ,gdk-pixbuf)
+ `(("bash" ,bash-minimal) ; for wrap-program
+ ("gdk-pixbuf" ,gdk-pixbuf)
("gexiv2" ,gexiv2)
("gst-libav" ,gst-libav)
("gst-plugins-base" ,gst-plugins-base)
@@ -330,6 +332,7 @@ MTP, and much more.")
(lib (dirname (dirname (car pm)))))
(wrap-program (string-append #$output "/bin/exiftool")
`("PERL5LIB" prefix (,lib)))))))))
+ (inputs (list bash-minimal))
(home-page "https://metacpan.org/release/Image-ExifTool")
(synopsis "Program and Perl library to manipulate EXIF and other metadata")
(description "This package provides the @code{exiftool} command and the
@@ -720,13 +723,14 @@ such as Batch image processing.")
gettext-minimal
`(,glib "bin")
gobject-introspection
- gtk-doc
+ gtk-doc/stable
itstool
libxml2
perl
pkg-config))
(inputs
- (list gdk-pixbuf
+ (list bash-minimal
+ gdk-pixbuf
gexiv2
gst-plugins-base
gstreamer
diff --git a/gnu/packages/piet.scm b/gnu/packages/piet.scm
index 0b16299482..326520adf3 100644
--- a/gnu/packages/piet.scm
+++ b/gnu/packages/piet.scm
@@ -25,6 +25,7 @@
#:use-module (guix git-download)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix build-system gnu)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages gd)
#:use-module (gnu packages groff)
#:use-module (gnu packages image)
@@ -56,8 +57,7 @@
(,(dirname
(search-input-file
inputs "bin/wish")))))))))))
- (inputs
- (list gd giflib libpng tk))
+ (inputs (list bash-minimal gd giflib libpng tk))
(native-inputs (list groff))
(synopsis "Piet interpreter")
(description
@@ -94,8 +94,7 @@ an Algol-like language
(snippet
'(begin
;; Remove a bundled fork of Marc Majcher's Piet interpreter.
- (delete-file-recursively "interpreter")
- #t))))
+ (delete-file-recursively "interpreter")))))
(build-system gnu-build-system)
(arguments
`(#:modules ((guix build gnu-build-system)
@@ -126,8 +125,7 @@ an Algol-like language
(string-append doc "/" file)))
(list "assembler-samples"
"compiler-samples"
- "README.md")) ; includes the licence grant
- #t)))
+ "README.md"))))) ;includes the licence grant
(add-after 'install 'check
(lambda* (#:key outputs tests? #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@@ -149,13 +147,9 @@ an Algol-like language
;; Don't run the interactive one.
(delete-file "assembler-samples/quest.piet.png")
(for-each (cut invoke "npiet" <>)
- (find-files "." "\\.png$"))
- #t)))))))
- (native-inputs
- ;; For our tests.
- (list netpbm npiet))
- (inputs
- (list perl perl-parse-recdescent))
+ (find-files "." "\\.png$")))))))))
+ (native-inputs (list netpbm npiet)) ;for tests
+ (inputs (list bash-minimal perl perl-parse-recdescent))
(home-page "https://www.toothycat.net/wiki/wiki.pl?MoonShadow/Piet")
(synopsis "Piet compiler and assembler")
(description
diff --git a/gnu/packages/pkg-config.scm b/gnu/packages/pkg-config.scm
index 6292fb05e2..934449aad2 100644
--- a/gnu/packages/pkg-config.scm
+++ b/gnu/packages/pkg-config.scm
@@ -2,7 +2,7 @@
;;; Copyright © 2012, 2013, 2014, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
-;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2022, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
;;;
;;; This file is part of GNU Guix.
@@ -29,12 +29,22 @@
#:use-module (guix build-system gnu)
#:use-module (guix build-system trivial)
#:use-module (gnu packages bash)
+ #:use-module (gnu packages check)
#:use-module (guix memoization)
- #:export (pkg-config))
+ #:use-module (srfi srfi-1)
+ #:export (old-pkg-config ;the original
+ pkg-config ;alias for pkgconf-as-pkg-config
+ pkgconf
+ pkgconf-as-pkg-config))
-;; This is the "primitive" pkg-config package. People should use `pkg-config'
-;; (see below) rather than `%pkg-config', but we export `%pkg-config' so that
-;; `fold-packages' finds it.
+
+;;;
+;;; "Primitive" pkg-config packages.
+;;;
+
+;; The %-less variants defined below should be used instead; the %-prefixed
+;; "primitive" packages are exported so that `fold-packages' can find them,
+;; making them available for use via the Guix CLI.
(define-public %pkg-config
(package
(name "pkg-config")
@@ -81,113 +91,202 @@ on where to find glib (or other libraries). It is language-agnostic, so
it can be used for defining the location of documentation tools, for
instance.")))
-(define cross-pkg-config
+;;; This is the package exposed to the CLI, to ease updates via 'guix
+;;; refresh'.
+(define-public %pkgconf-with-tests
+ (package
+ (name "pkgconf")
+ (version "2.1.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://distfiles.dereferenced.org/"
+ name "/" name "-" version ".tar.xz"))
+ (sha256
+ (base32
+ "0qbpczwrrsq2981mdv3iil26vq9ac8v1sfi9233jpiaixrhmhv96"))))
+ (build-system gnu-build-system)
+ (arguments
+ (list #:phases #~(modify-phases %standard-phases
+ (add-after 'unpack 'set-HOME
+ (lambda _
+ ;; Kyua requires a writable HOME.
+ (setenv "HOME" "/tmp"))))))
+ (native-inputs (list atf kyua))
+ (native-search-paths (list $PKG_CONFIG_PATH))
+ (home-page "http://pkgconf.org/")
+ (synopsis "Package compiler and linker metadata toolkit")
+ (description "@command{pkgconf} is a program which helps to configure
+compiler and linker flags for development libraries. It is similar to
+pkg-config from freedesktop.org. @code{libpkgconf} is a library which
+provides access to most of pkgconf's functionality, to allow other tooling
+such as compilers and IDEs to discover and use libraries configured by
+pkgconf.")
+ (license isc)))
+
+;;; This is the minimal, untested variant used to avoid circular dependencies.
+(define-public %pkgconf
+ (hidden-package
+ (package/inherit %pkgconf-with-tests
+ (arguments (list #:tests? #f))
+ (native-inputs '()))))
+
+(define-public %pkgconf-as-pkg-config
+ (package/inherit %pkgconf
+ (name "pkgconf-as-pkg-config")
+ (build-system gnu-build-system)
+ (arguments
+ (list
+ #:tests? #f
+ #:phases
+ #~(modify-phases %standard-phases
+ (delete 'configure)
+ (delete 'build)
+ (replace 'install
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((pkgconf (search-input-file inputs "bin/pkgconf")))
+ (mkdir-p (string-append #$output "/bin"))
+ (symlink pkgconf (string-append #$output "/bin/pkg-config"))
+
+ ;; Also make 'pkg.m4' available, some packages might expect it.
+ (mkdir-p (string-append #$output "/share"))
+ ;; XXX: Using '#$(this-package-input "pkgconf") here would
+ ;; create a cycle.
+ (symlink (string-append (dirname (dirname pkgconf))
+ "/share/aclocal")
+ (string-append #$output "/share/aclocal"))))))))
+ (native-inputs '())
+ (inputs (list %pkgconf))
+ (propagated-inputs '())
+ (properties (alist-delete 'hidden? (package-properties %pkgconf)))))
+
+
+;;;
+;;; Tooling for generating pkg-config wrappers for cross-compiling.
+;;;
+
+(define (make-cross-pkg-config pkg-config)
(mlambda (target)
- "Return a pkg-config for TARGET, essentially just a wrapper called
-`TARGET-pkg-config', as `configure' scripts like it."
+ "Return a procedure that evaluates to a PKG-CONFIG package for TARGET,
+essentially just a wrapper called `TARGET-pkg-config', as `configure' scripts
+like it."
;; See <http://www.flameeyes.eu/autotools-mythbuster/pkgconfig/cross-compiling.html>
;; for details.
(package
- (inherit %pkg-config)
- (name (string-append (package-name %pkg-config) "-" target))
+ (inherit pkg-config)
+ (name (string-append (package-name pkg-config) "-" target))
(build-system trivial-build-system)
(arguments
- `(#:modules ((guix build utils))
- #:builder (begin
- (use-modules (guix build utils))
-
- (let* ((in (assoc-ref %build-inputs "pkg-config"))
- (out (assoc-ref %outputs "out"))
- (bin (string-append out "/bin"))
- (prog (string-append ,target "-pkg-config"))
- (native (string-append in "/bin/pkg-config")))
-
- (mkdir-p bin)
-
- ;; Create a `TARGET-pkg-config' -> `pkg-config' symlink.
- ;; This satisfies the pkg.m4 macros, which use
- ;; AC_PROG_TOOL to determine the `pkg-config' program
- ;; name.
- (symlink native (string-append bin "/" prog))
-
- ;; Also make 'pkg.m4' available, some packages might
- ;; expect it.
- (mkdir-p (string-append out "/share"))
- (symlink (string-append in "/share/aclocal")
- (string-append out "/share/aclocal"))
- #t))))
- (native-inputs `(("pkg-config" ,%pkg-config)))
+ (list
+ #:builder (with-imported-modules '((guix build utils))
+ #~(begin
+ (use-modules (guix build utils))
+
+ (let* ((in #+pkg-config)
+ (out #$output)
+ (bin (string-append out "/bin"))
+ (prog (string-append #$target "-pkg-config"))
+ (native (string-append in "/bin/pkg-config")))
+
+ (mkdir-p bin)
+
+ ;; Create a `TARGET-pkg-config' -> `pkg-config' symlink.
+ ;; This satisfies the pkg.m4 macros, which use
+ ;; AC_PROG_TOOL to determine the `pkg-config' program
+ ;; name.
+ (symlink native (string-append bin "/" prog))
+
+ ;; Also make 'pkg.m4' available, some packages might
+ ;; expect it.
+ (mkdir-p (string-append out "/share"))
+ (symlink (string-append in "/share/aclocal")
+ (string-append out "/share/aclocal")))))))
;; Ignore native inputs, and set `PKG_CONFIG_PATH' for target inputs.
(native-search-paths '())
- (search-paths (package-native-search-paths %pkg-config)))))
+ (search-paths (package-native-search-paths pkg-config)))))
+
+(define (make-pkg-config-for-target pkg-config)
+ "Return a procedure that evaluates to a `pkg-config' package for TARGET
+built from PKG-CONFIG. The target may be either #f for a native build, or a
+GNU triplet."
+ (let ((cross-pkg-config (make-cross-pkg-config pkg-config)))
+ (lambda (target)
+ (if target
+ (cross-pkg-config target)
+ pkg-config))))
+
+(define pkg-config-for-target
+ (make-pkg-config-for-target %pkg-config))
-(define (pkg-config-for-target target)
- "Return a pkg-config package for TARGET, which may be either #f for a native
-build, or a GNU triplet."
- (if target
- (cross-pkg-config target)
- %pkg-config))
+(define pkgconf-for-target
+ (make-pkg-config-for-target %pkgconf))
-;; This hack allows us to automatically choose the native or the cross
+(define pkgconf-as-pkg-config-for-target
+ (make-pkg-config-for-target %pkgconf-as-pkg-config))
+
+
+;;;
+;;; The final pkg-config package variables to use.
+;;;
+
+;; These are a hacks for automatically choosing the native or the cross
;; `pkg-config' depending on whether it's being used in a cross-build
;; environment or not.
-(define-syntax pkg-config
+(define-syntax old-pkg-config
(identifier-syntax (pkg-config-for-target (%current-target-system))))
-;; This hack allows for using both "pkg-config" and "TARGET-pkg-config"
-;; at the same time. Simply using '%pkg-config' and 'pkg-config' won't
-;; work because they both use the "PKG_CONFIG_PATH" environment variable.
-(define-public pkg-config-for-build
+(define-syntax pkgconf
+ (identifier-syntax (pkgconf-for-target (%current-target-system))))
+
+(define-syntax pkgconf-as-pkg-config
+ (identifier-syntax (pkgconf-as-pkg-config-for-target
+ (%current-target-system))))
+
+;;; This alias is to ensure we use pkgconf instead of pkg-config across Guix,
+;;; which includes welcome refinements such as proper handling of the
+;;; Requires.private field.
+(define pkg-config pkgconf-as-pkg-config)
+
+
+;;;
+;;; pkg-config packages for native use (build-time only).
+;;;
+(define (make-pkg-config-for-build pkg-config)
+ "Return a `pkg-config' package from PKG-CONFIG for use by the builder when
+cross-compiling, that honors a PKG_CONFIG_PATH_FOR_BUILD search path instead
+of PKG_CONFIG_PATH, to avoid conflicting with the target `pkg-config'."
(package
- (inherit (hidden-package %pkg-config))
+ (inherit (hidden-package pkg-config))
(name "pkg-config-for-build")
(version "0")
(source #f)
(build-system trivial-build-system)
- (inputs
- (list bash-minimal %pkg-config))
+ (inputs (list bash-minimal pkg-config))
(arguments
- `(#:modules ((guix build utils))
- #:builder
- ,#~(begin
- (use-modules (guix build utils))
- (define where (string-append #$output "/bin/pkg-config"))
- (mkdir-p (dirname where))
- (call-with-output-file where
- (lambda (port)
- (format port "#!~a
+ (list
+ #:modules '((guix build utils))
+ #:builder
+ #~(begin
+ (use-modules (guix build utils))
+ (define where (string-append #$output "/bin/pkg-config"))
+ (mkdir-p (dirname where))
+ (call-with-output-file where
+ (lambda (port)
+ (format port "#!~a
export PKG_CONFIG_PATH=\"$PKG_CONFIG_PATH_FOR_BUILD\"
exec ~a \"$@\""
- (search-input-file %build-inputs "bin/bash")
- (search-input-file %build-inputs "bin/pkg-config"))))
- (chmod where #o500))))
+ (search-input-file %build-inputs "bin/bash")
+ (search-input-file %build-inputs "bin/pkg-config"))))
+ (chmod where #o500))))
(native-search-paths
(map (lambda (original)
(search-path-specification
(inherit original)
(variable "PKG_CONFIG_PATH_FOR_BUILD")))
- (package-native-search-paths %pkg-config)))))
+ (package-native-search-paths pkg-config)))))
-(define-public pkgconf
- (package
- (name "pkgconf")
- (version "2.0.2")
- (source (origin
- (method url-fetch)
- (uri (string-append "https://distfiles.dereferenced.org/"
- name "/" name "-" version ".tar.xz"))
- (sha256
- (base32
- "00a4cv1f8cxsb4jhpgxxrwrl92b1zdsirqn0gqvva7i5izpjanpa"))))
- (build-system gnu-build-system)
- (arguments (list #:tests? #f)) ;TODO: package kyua
- (home-page "http://pkgconf.org/")
- (synopsis "Package compiler and linker metadata toolkit")
- (description "@command{pkgconf} is a program which helps to configure
-compiler and linker flags for development libraries. It is similar to
-pkg-config from freedesktop.org. @code{libpkgconf} is a library which
-provides access to most of pkgconf's functionality, to allow other tooling
-such as compilers and IDEs to discover and use libraries configured by
-pkgconf.")
- (license isc)))
+(define-public pkg-config-for-build
+ (make-pkg-config-for-build %pkg-config))
+
+(define-public pkgconf-as-pkg-config-for-build
+ (make-pkg-config-for-build %pkgconf-as-pkg-config))
diff --git a/gnu/packages/plan9.scm b/gnu/packages/plan9.scm
index b2d8d75471..801146370c 100644
--- a/gnu/packages/plan9.scm
+++ b/gnu/packages/plan9.scm
@@ -26,7 +26,6 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
- #:use-module (gnu packages commencement)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages perl)
#:use-module (gnu packages xorg))
@@ -162,7 +161,9 @@ reconstruct a Plan 9 terminal-like experience from a non-Plan 9 system.")
fontconfig libx11 libxext libxt))
;; Propagate gcc-toolchain because some programs, like the 9c compiler,
;; are just aliased scripts to gcc equivalents.
- (propagated-inputs (list gcc-toolchain))
+ (propagated-inputs (list (module-ref (resolve-interface
+ '(gnu packages commencement))
+ 'gcc-toolchain)))
(home-page "https://9fans.github.io/plan9port/")
(synopsis "Port of many Plan 9 libraries and programs")
(description
diff --git a/gnu/packages/plotutils.scm b/gnu/packages/plotutils.scm
index c7d4b15c4a..11e8ead495 100644
--- a/gnu/packages/plotutils.scm
+++ b/gnu/packages/plotutils.scm
@@ -131,7 +131,7 @@
(guix build gnu-build-system)
(guix build utils)
(srfi srfi-26))
- #:imported-modules `(,@%gnu-build-system-modules
+ #:imported-modules `(,@%default-gnu-imported-modules
(guix build emacs-utils))
#:configure-flags
#~(list (string-append "--enable-gc=" #$(this-package-input "libgc"))
diff --git a/gnu/packages/polkit.scm b/gnu/packages/polkit.scm
index 337d9b9a73..ef0536e9dd 100644
--- a/gnu/packages/polkit.scm
+++ b/gnu/packages/polkit.scm
@@ -153,7 +153,6 @@
`(,glib "bin") ;for glib-mkenums
docbook-xsl ;for man page generation
gobject-introspection
- libxml2 ;for XML_CATALOG_FILES
libxslt ;for man page generation
perl
pkg-config
diff --git a/gnu/packages/presentation.scm b/gnu/packages/presentation.scm
index 1472a2fcc1..cc02a7eac9 100644
--- a/gnu/packages/presentation.scm
+++ b/gnu/packages/presentation.scm
@@ -21,6 +21,7 @@
#:use-module (guix packages)
#:use-module (guix utils)
#:use-module (guix build-system python)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages figlet)
#:use-module (gnu packages games)
#:use-module (gnu packages image)
@@ -77,7 +78,8 @@
;; XXX: console import test fails to find palette.py from the lib?
(delete 'sanity-check))))
(inputs
- (list cowsay
+ (list bash-minimal
+ cowsay
figlet
jp2a
python-docutils
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index 5a532f8460..4489347130 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -6064,6 +6064,8 @@ event loop. It is implemented in Cython and uses libuv under the hood.")
,(map (lambda (output)
(string-append output sitedir))
(list python out))))))))))
+ (inputs
+ `(("bash" ,bash-minimal))) ;; for wrap-program
(native-inputs
(list binutils ;; for ctypes.util.find_library()
python-aiohttp
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index bac90b1e07..1ba366eddf 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -144,7 +144,7 @@
;;; Copyright © 2023 Parnikkapore <poomklao@yahoo.com>
;;; Copyright © 2023 Foundation Devices, Inc. <hello@foundationdevices.com>
;;; Copyright © c4droid <c4droid@foxmail.com>
-;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2023 Attila Lendvai <attila@lendvai.name>
;;; Copyright © 2023, 2024 Troy Figiel <troy@troyfigiel.com>
;;; Copyright © 2024 Timothee Mathieu <timothee.mathieu@inria.fr>
@@ -5824,14 +5824,14 @@ environments and back.")
(define-public python-pyyaml
(package
(name "python-pyyaml")
- (version "6.0")
+ (version "6.0.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "PyYAML" version))
(sha256
(base32
- "18imkjacvpxfgg1lbpraqywx3j7hr5dv99d242byqvrh2jf53yv8"))))
+ "0hsa7g6ddynifrwdgadqcx80khhblfy94slzpbr7birn2w5ldpxz"))))
(build-system python-build-system)
(inputs
(list libyaml python-cython))
@@ -8073,6 +8073,9 @@ provides additional functionality on the produced Mallard documents.")
;; because we need libpython3.3m.so
(inputs
(list python))
+ (native-inputs
+ ;; Needed for some tests that link against it.
+ (list libxcrypt))
(arguments
`(#:phases
(modify-phases %standard-phases
@@ -8949,7 +8952,8 @@ comparison.
(method url-fetch)
(uri (pypi-uri "matplotlib" version))
(sha256
- (base32 "18amhxyxa6yzy1nwky4ggdgvvxnbl3qz2lki05vfx0dqf6w7ia81"))))
+ (base32 "18amhxyxa6yzy1nwky4ggdgvvxnbl3qz2lki05vfx0dqf6w7ia81"))
+ (patches (search-patches "python-matplotlib-fix-legend-loc-best-test.patch"))))
(build-system pyproject-build-system)
(arguments
(list
@@ -9844,7 +9848,9 @@ Python list with elements of type @code{PIL.Image} (from the
(snippet '(begin
(delete-file-recursively "src/thirdparty")))
(patches
- (search-patches "python-pillow-CVE-2022-45199.patch"))))
+ (search-patches "python-pillow-CVE-2022-45199.patch"
+ ;; Included in 10.1.0.
+ "python-pillow-use-zlib-1.3.patch"))))
(build-system python-build-system)
(native-inputs (list python-pytest))
(inputs (list freetype
@@ -22358,7 +22364,10 @@ implementation of your Python package and its public API surface.")
(when tests?
(invoke "pytest" "-v")))))))
(native-inputs
- (list python-hypothesis python-pytest-cov python-pytest-mock
+ (list glibc-utf8-locales ;; Tests want en_US.UTF-8
+ python-hypothesis
+ python-pytest-cov
+ python-pytest-mock
python-pytest))
(propagated-inputs ; TODO: Add python-fastnumbers.
(list python-pyicu))
@@ -22591,7 +22600,7 @@ OpenSSH Server for example.")
(define-public python-pyelftools
(package
(name "python-pyelftools")
- (version "0.29")
+ (version "0.30")
(home-page "https://github.com/eliben/pyelftools")
(source
(origin
@@ -22600,7 +22609,7 @@ OpenSSH Server for example.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1mi7i9zlhkkap4q50ciak57ia46mj2jzq0713m3dh0x8j05k9xml"))
+ (base32 "0gk47mq5cqv6qz35aydn67wma5m70gv5f9f6pg38zny6vsfavmq3"))
(snippet
;; Delete bundled readelf executable.
'(delete-file "test/external_tools/readelf"))))
@@ -22617,9 +22626,9 @@ OpenSSH Server for example.")
(synopsis
"Analyze binary and library file information")
(description "This Python library provides interfaces for parsing and
- analyzing two binary and library file formats ; the Executable and Linking
- Format (ELF), and debugging information in the Debugging With Attributed
- Record Format (DWARF).")
+analyzing two binary and library file formats ; the Executable and Linking
+Format (ELF), and debugging information in the Debugging With Attributed
+Record Format (DWARF).")
(license license:public-domain)))
(define-public python-pefile
@@ -32587,8 +32596,7 @@ CMake.")
(string-append x11 "/lib/libX11.so.6")))
(substitute* "Screenkey/xlib.py"
(("libXtst.so.6")
- (string-append xtst "/lib/libXtst.so.6")))
- #t)))
+ (string-append xtst "/lib/libXtst.so.6"))))))
(add-after 'install 'wrap-screenkey
(lambda* (#:key outputs #:allow-other-keys)
(wrap-program
@@ -32597,7 +32605,8 @@ CMake.")
`("GI_TYPELIB_PATH"
":" prefix (,(getenv "GI_TYPELIB_PATH")))))))))
(inputs
- (list python-distutils-extra
+ (list bash-minimal
+ python-distutils-extra
python-tokenize-rt
libx11
libxtst
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 5df25ac165..2b002e6a6b 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -84,6 +84,7 @@
#:use-module (gnu packages bash)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages crypto)
#:use-module (gnu packages dbm)
#:use-module (gnu packages libffi)
#:use-module (gnu packages pkg-config)
@@ -211,7 +212,20 @@
"CFLAGS=-fno-semantic-interposition"
(string-append "LDFLAGS=-Wl,-rpath="
(assoc-ref %outputs "out") "/lib"
- " -fno-semantic-interposition"))
+ " -fno-semantic-interposition")
+ ;; Add a reference to libxcrypt in LIBS so that the sysconfigdata
+ ;; file records it and propagates it to programs linking against
+ ;; Python.
+ (let ((libxcrypt
+ (false-if-exception
+ (dirname
+ (search-input-file %build-inputs
+ "lib/libcrypt.so.1")))))
+ (string-append
+ "LIBS="
+ (if libxcrypt
+ (string-append "-L" libxcrypt)
+ ""))))
;; With no -j argument tests use all available cpus, so provide one.
#:make-flags
(list (string-append
@@ -312,6 +326,18 @@
'("email/test" "ctypes/test" "unittest/test" "tkinter/test"
"sqlite3/test" "bsddb/test" "lib-tk/test" "json/tests"
"distutils/tests"))))))))
+ (add-after 'install 'add-libxcrypt-reference-pkgconfig
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (define out (assoc-ref outputs "out"))
+ (define libxcrypt
+ (false-if-exception
+ (dirname (search-input-file inputs "lib/libcrypt.so.1"))))
+ (when libxcrypt
+ (substitute*
+ (find-files (string-append out "/lib/pkgconfig")
+ ".*\\.pc")
+ (("-lcrypt")
+ (string-append "-L" libxcrypt " -lcrypt"))))))
(add-after 'remove-tests 'move-tk-inter
(lambda* (#:key outputs #:allow-other-keys)
;; When Tkinter support is built move it to a separate output so
@@ -387,6 +413,8 @@
expat
gdbm
libffi ; for ctypes
+ libxcrypt ; crypto module slated for removal in 3.13, re-enable
+ ; python tests of libxcrypt when that happens
sqlite ; for sqlite extension
openssl-1.1
readline
@@ -435,6 +463,7 @@ data types.")
"python-3-deterministic-build-info.patch"
"python-3-fix-tests.patch"
"python-3-hurd-configure.patch"
+ "python-3-reproducible-build.patch"
"python-3-search-paths.patch"))
(sha256
(base32
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 21f47ceea5..b31a3134dc 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -3899,10 +3899,10 @@ module provides support functions to the automatically generated code.")
(arguments
`(#:tests? #f ; no check target
#:imported-modules ((guix build python-build-system)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:modules ((srfi srfi-1)
((guix build python-build-system) #:select (python-version))
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:phases
(modify-phases %standard-phases
(replace 'configure
@@ -4402,7 +4402,7 @@ securely. It will not store any data unencrypted unless explicitly requested.")
`(#:tests? #f ; No target
#:imported-modules
((guix build copy-build-system)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:modules
(((guix build copy-build-system) #:prefix copy:)
(guix build gnu-build-system)
diff --git a/gnu/packages/racket.scm b/gnu/packages/racket.scm
index 2b20353159..59c511e075 100644
--- a/gnu/packages/racket.scm
+++ b/gnu/packages/racket.scm
@@ -583,7 +583,7 @@ used to build the name of the resulting store item."
(guix build union)
(ice-9 match))
#:imported-modules `((guix build union)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:phases
#~(modify-phases %standard-phases
(delete 'unpack)
diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm
index 56e674a8ed..46f6f0b554 100644
--- a/gnu/packages/radio.scm
+++ b/gnu/packages/radio.scm
@@ -820,6 +820,7 @@ used by RDS Spy, and audio files containing @dfn{multiplex} signals (MPX).")
xorg-server-for-tests))
(inputs
(list alsa-lib
+ bash-minimal
boost
cairo
codec2
diff --git a/gnu/packages/raspberry-pi.scm b/gnu/packages/raspberry-pi.scm
index c4f03c3ed9..216c74cb9c 100644
--- a/gnu/packages/raspberry-pi.scm
+++ b/gnu/packages/raspberry-pi.scm
@@ -28,7 +28,6 @@
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages bootloaders)
- #:use-module (gnu packages commencement)
#:use-module (gnu packages cross-base)
#:use-module (gnu packages curl)
#:use-module (gnu packages documentation)
@@ -196,7 +195,9 @@ Raspberry Pi. Note: It does not work on Raspberry Pi 1.")
("binutils" ,binutils)
("coreutils" ,coreutils)
("file" ,file)
- ("ld-wrapper" ,ld-wrapper)
+ ("ld-wrapper" ,(module-ref (resolve-interface
+ '(gnu packages commencement))
+ 'ld-wrapper))
("make" ,gnu-make)
("gcc" ,gcc-6)
("locales" ,(libc-utf8-locales-for-target))))
diff --git a/gnu/packages/ratpoison.scm b/gnu/packages/ratpoison.scm
index 14933da5a8..6c8915f06e 100644
--- a/gnu/packages/ratpoison.scm
+++ b/gnu/packages/ratpoison.scm
@@ -48,7 +48,7 @@
(arguments
(list
#:modules `((ice-9 format)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
;; Specify the absolute location of xterm, as the user experience sucks
;; when no terminal is available (can't consult help with 'C-t ?', for
;; example).
diff --git a/gnu/packages/rednotebook.scm b/gnu/packages/rednotebook.scm
index a5dcc26efd..8d13f7573e 100644
--- a/gnu/packages/rednotebook.scm
+++ b/gnu/packages/rednotebook.scm
@@ -22,6 +22,7 @@
#:use-module (guix git-download)
#:use-module (guix build-system python)
#:use-module ((guix licenses) #:prefix license:)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages python)
#:use-module (gnu packages glib)
#:use-module (gnu packages gtk)
@@ -68,10 +69,9 @@
"/lib")))
(wrap-program (string-append out "/bin/rednotebook")
`("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))
- `("LD_LIBRARY_PATH" ":" prefix (,webkitgtk-path)))
- #t))))))
+ `("LD_LIBRARY_PATH" ":" prefix (,webkitgtk-path)))))))))
(inputs
- (list gtk+ gtksourceview-3 python-pyyaml python-pygobject
+ (list bash-minimal gtk+ gtksourceview-3 python-pyyaml python-pygobject
webkitgtk-for-gtk3))
;; TODO: package the following for python3 (if possible), add them as
;; dependencies, and remove them from rednotebook source:
diff --git a/gnu/packages/rpm.scm b/gnu/packages/rpm.scm
index 2c0d971377..21568f40df 100644
--- a/gnu/packages/rpm.scm
+++ b/gnu/packages/rpm.scm
@@ -116,9 +116,8 @@ applying deltarpms, compatible with the original deltarpm packages.")
`(,glib "bin")
`(,glib-with-documentation "doc")
gobject-introspection ;for g-ir-scanner
- gtk-doc
+ gtk-doc/stable
help2man
- libxml2 ;for XML_CATALOG_FILES
pkg-config
python)) ;for 'site-packages' call
(inputs
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 0541bb9562..a8e825e360 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015 Pjotr Prins <pjotr.guix@thebird.nl>
-;;; Copyright © 2014-2017, 2021-2022 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014-2017, 2021-2022, 2024 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org>
;;; Copyright © 2015, 2019 Ricardo Wurmus <rekado@elephly.net>
@@ -179,8 +179,7 @@ a focus on simplicity and productivity.")
(define-public ruby-2.7
(package
(inherit ruby-2.6)
- (version "2.7.6")
- (replacement ruby-2.7-fixed) ; security fixes
+ (version "2.7.8")
(source
(origin
(inherit (package-source ruby-2.6))
@@ -189,7 +188,7 @@ a focus on simplicity and productivity.")
"/ruby-" version ".tar.gz"))
(sha256
(base32
- "042xrdk7hsv4072bayz3f8ffqh61i8zlhvck10nfshllq063n877"))))
+ "182vni66djmiqagwzfsd0za7x9k3zag43b88c590aalgphybdnn2"))))
(arguments
`(#:test-target "test"
#:configure-flags
@@ -230,20 +229,6 @@ a focus on simplicity and productivity.")
'())
(list autoconf)))))
-(define ruby-2.7-fixed
- (package
- (inherit ruby-2.7)
- (version "2.7.8")
- (source
- (origin
- (inherit (package-source ruby-2.7))
- (uri (string-append "https://cache.ruby-lang.org/pub/ruby/"
- (version-major+minor version)
- "/ruby-" version ".tar.gz"))
- (sha256
- (base32
- "182vni66djmiqagwzfsd0za7x9k3zag43b88c590aalgphybdnn2"))))))
-
(define-public ruby-3.0
(package
(inherit ruby-2.7)
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 60aa9b1ea0..1193cfae6e 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -11,7 +11,7 @@
;;; Copyright © 2020, 2021 Jakub Kądziołka <kuba@kadziolka.net>
;;; Copyright © 2020 Pierre Langlois <pierre.langlois@gmx.com>
;;; Copyright © 2020 Matthew James Kraai <kraai@ftbfs.org>
-;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2021, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2021 (unmatched parenthesis <paren@disroot.org>
;;; Copyright © 2022 Zheng Junjie <873216071@qq.com>
;;; Copyright © 2022 Jim Newsome <jnewsome@torproject.org>
@@ -36,6 +36,7 @@
(define-module (gnu packages rust)
#:use-module (gnu packages base)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages bison)
#:use-module (gnu packages bootstrap)
#:use-module (gnu packages cmake)
@@ -187,6 +188,7 @@
(target-riscv64?))
`(("clang" ,clang-13))
`())
+ ("bash-minimal" ,bash-minimal)
("llvm" ,llvm-13)
("openssl" ,openssl-1.1)
("zlib" ,zlib)))
@@ -442,7 +444,7 @@ safety and thread safety guarantees.")
(lambda _
(substitute* (find-files "." "^linker.rs$")
(("linker.env\\(\"LC_ALL\", \"C\"\\);")
- "linker.env(\"LC_ALL\", \"en_US.UTF-8\");"))))
+ "linker.env(\"LC_ALL\", \"C.UTF-8\");"))))
(add-after 'unpack 'add-cc-shim-to-path
(lambda _
(mkdir-p "/tmp/bin")
@@ -537,7 +539,8 @@ ar = \"" binutils "/bin/ar" "\"
("rustc-bootstrap" ,rust-bootstrap)
("cargo-bootstrap" ,rust-bootstrap "cargo")))
(inputs
- `(("llvm" ,llvm-13)
+ `(("bash" ,bash-minimal) ; For wrap-program
+ ("llvm" ,llvm-13)
("openssl" ,openssl)))
;; rustc invokes gcc, so we need to set its search paths accordingly.
(native-search-paths
@@ -1006,236 +1009,235 @@ safety and thread safety guarantees.")
(strip-keyword-arguments '(#:tests?)
(package-arguments base-rust))
((#:phases phases)
- `(modify-phases ,phases
- (add-after 'unpack 'relax-gdb-auto-load-safe-path
- ;; Allow GDB to load binaries from any location, otherwise the
- ;; gdbinfo tests fail. This is only useful when testing with a
- ;; GDB version newer than 8.2.
- (lambda _
- (setenv "HOME" (getcwd))
- (with-output-to-file (string-append (getenv "HOME") "/.gdbinit")
- (lambda _
- (format #t "set auto-load safe-path /~%")))
- ;; Do not launch gdb with '-nx' which causes it to not execute
- ;; any init file.
- (substitute* "src/tools/compiletest/src/runtest.rs"
- (("\"-nx\".as_ref\\(\\), ")
- ""))))
- (add-after 'unpack 'disable-tests-requiring-git
- (lambda _
- (substitute* "src/tools/cargo/tests/testsuite/git.rs"
- ,@(make-ignore-test-list
- '("fn fetch_downloads_with_git2_first_")))))
- (add-after 'unpack 'disable-tests-requiring-mercurial
- (lambda _
- (with-directory-excursion "src/tools/cargo/tests/testsuite/cargo_init"
- (substitute* '("mercurial_autodetect/mod.rs"
- "simple_hg_ignore_exists/mod.rs")
- ,@(make-ignore-test-list
- '("fn case"))))))
- (add-after 'unpack 'disable-tests-using-cargo-publish
- (lambda _
- (with-directory-excursion "src/tools/cargo/tests/testsuite"
- (substitute* "alt_registry.rs"
- ,@(make-ignore-test-list
- '("fn warn_for_unused_fields")))
- (substitute* '("cargo_add/locked_unchanged/mod.rs"
- "cargo_add/lockfile_updated/mod.rs"
- "cargo_remove/update_lock_file/mod.rs")
- ,@(make-ignore-test-list
- '("fn case")))
- (substitute* "git_shallow.rs"
- ,@(make-ignore-test-list
- '("fn gitoxide_clones_git_dependency_with_shallow_protocol_and_git2_is_used_for_followup_fetches"
- "fn gitoxide_clones_registry_with_shallow_protocol_and_aborts_and_updates_again"
- "fn gitoxide_clones_registry_with_shallow_protocol_and_follow_up_fetch_maintains_shallowness"
- "fn gitoxide_clones_registry_with_shallow_protocol_and_follow_up_with_git2_fetch"
- "fn gitoxide_clones_registry_without_shallow_protocol_and_follow_up_fetch_uses_shallowness"
- "fn gitoxide_shallow_clone_followed_by_non_shallow_update"
- "fn gitoxide_clones_shallow_two_revs_same_deps"
- "fn gitoxide_git_dependencies_switch_from_branch_to_rev"
- "fn shallow_deps_work_with_revisions_and_branches_mixed_on_same_dependency")))
- (substitute* "install.rs"
- ,@(make-ignore-test-list
- '("fn failed_install_retains_temp_directory")))
- (substitute* "offline.rs"
- ,@(make-ignore-test-list
- '("fn gitoxide_cargo_compile_offline_with_cached_git_dep_shallow_dep")))
- (substitute* "patch.rs"
- ,@(make-ignore-test-list
- '("fn gitoxide_clones_shallow_old_git_patch"))))))
- ,@(if (target-riscv64?)
- ;; Keep this phase separate so it can be adjusted without needing
- ;; to adjust the skipped tests on other architectures.
- `((add-after 'unpack 'disable-tests-broken-on-riscv64
- (lambda _
- (with-directory-excursion "src/tools/cargo/tests/testsuite"
- (substitute* "build.rs"
- ,@(make-ignore-test-list
- '("fn uplift_dwp_of_bin_on_linux")))
- (substitute* "cache_lock.rs"
- ,@(make-ignore-test-list
- '("fn multiple_download")))))))
- `())
- (add-after 'unpack 'disable-tests-broken-on-aarch64
- (lambda _
- (with-directory-excursion "src/tools/cargo/tests/testsuite/"
- (substitute* "build_script_extra_link_arg.rs"
- ,@(make-ignore-test-list
- '("fn build_script_extra_link_arg_bin_single")))
- (substitute* "build_script.rs"
- ,@(make-ignore-test-list
- '("fn env_test")))
- (substitute* "collisions.rs"
- ,@(make-ignore-test-list
- '("fn collision_doc_profile_split")))
- (substitute* "concurrent.rs"
- ,@(make-ignore-test-list
- '("fn no_deadlock_with_git_dependencies")))
- (substitute* "features2.rs"
- ,@(make-ignore-test-list
- '("fn dep_with_optional_host_deps_activated"))))))
- (add-after 'unpack 'patch-command-exec-tests
- ;; This test suite includes some tests that the stdlib's
- ;; `Command` execution properly handles in situations where
- ;; the environment or PATH variable are empty, but this fails
- ;; since we don't have `echo` available at its usual FHS
- ;; location.
- (lambda _
- (substitute* "tests/ui/command/command-exec.rs"
- (("Command::new\\(\"echo\"\\)")
- (format #f "Command::new(~s)" (which "echo"))))))
- (add-after 'unpack 'patch-command-uid-gid-test
- (lambda _
- (substitute* "tests/ui/command/command-uid-gid.rs"
- (("/bin/sh") (which "sh"))
- (("/bin/ls") (which "ls")))))
- (add-after 'unpack 'skip-shebang-tests
- ;; This test make sure that the parser behaves properly when a
- ;; source file starts with a shebang. Unfortunately, the
- ;; patch-shebangs phase changes the meaning of these edge-cases.
- ;; We skip the test since it's drastically unlikely Guix's
- ;; packaging will introduce a bug here.
- (lambda _
- (delete-file "tests/ui/parser/shebang/sneaky-attrib.rs")))
- (add-after 'unpack 'patch-process-tests
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((bash (assoc-ref inputs "bash")))
- (with-directory-excursion "library/std/src"
- (substitute* "process/tests.rs"
- (("\"/bin/sh\"")
- (string-append "\"" bash "/bin/sh\"")))
- ;; The three tests which are known to fail upstream on QEMU
- ;; emulation on aarch64 and riscv64 also fail on x86_64 in
- ;; Guix's build system. Skip them on all builds.
- (substitute* "sys/unix/process/process_common/tests.rs"
- ;; We can't use make-ignore-test-list because we will get
- ;; build errors due to the double [ignore] block.
- (("target_arch = \"arm\"" arm)
- (string-append "target_os = \"linux\",\n"
- " " arm)))))))
- (add-after 'unpack 'disable-interrupt-tests
- (lambda _
- ;; This test hangs in the build container; disable it.
- (substitute* "src/tools/cargo/tests/testsuite/freshness.rs"
- ,@(make-ignore-test-list
- '("fn linking_interrupted")))
- ;; Likewise for the ctrl_c_kills_everyone test.
- (substitute* "src/tools/cargo/tests/testsuite/death.rs"
- ,@(make-ignore-test-list
- '("fn ctrl_c_kills_everyone")))))
- (add-after 'unpack 'adjust-rpath-values
- ;; This adds %output:out to rpath, allowing us to install utilities in
- ;; different outputs while reusing the shared libraries.
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (substitute* "src/bootstrap/src/core/builder.rs"
+ #~(modify-phases #$phases
+ (add-after 'unpack 'relax-gdb-auto-load-safe-path
+ ;; Allow GDB to load binaries from any location, otherwise the
+ ;; gdbinfo tests fail. This is only useful when testing with a
+ ;; GDB version newer than 8.2.
+ (lambda _
+ (setenv "HOME" (getcwd))
+ (with-output-to-file (string-append (getenv "HOME") "/.gdbinit")
+ (lambda _
+ (format #t "set auto-load safe-path /~%")))
+ ;; Do not launch gdb with '-nx' which causes it to not execute
+ ;; any init file.
+ (substitute* "src/tools/compiletest/src/runtest.rs"
+ (("\"-nx\".as_ref\\(\\), ")
+ ""))))
+ (add-after 'unpack 'disable-tests-requiring-git
+ (lambda _
+ (substitute* "src/tools/cargo/tests/testsuite/git.rs"
+ #$@(make-ignore-test-list
+ '("fn fetch_downloads_with_git2_first_")))))
+ (add-after 'unpack 'disable-tests-requiring-mercurial
+ (lambda _
+ (with-directory-excursion "src/tools/cargo/tests/testsuite/cargo_init"
+ (substitute* '("mercurial_autodetect/mod.rs"
+ "simple_hg_ignore_exists/mod.rs")
+ #$@(make-ignore-test-list
+ '("fn case"))))))
+ (add-after 'unpack 'disable-tests-using-cargo-publish
+ ;; The publish procedure doesn't work in the build environment
+ ;; (see: https://github.com/rust-lang/rust/issues/120340).
+ (lambda _
+ (with-directory-excursion "src/tools/cargo/tests/testsuite"
+ (substitute* "alt_registry.rs"
+ #$@(make-ignore-test-list
+ '("fn warn_for_unused_fields")))
+ (substitute* "registry_auth.rs"
+ #$@(make-ignore-test-list
+ '("fn token_not_logged")))
+ (substitute* '("cargo_add/locked_unchanged/mod.rs"
+ "cargo_add/lockfile_updated/mod.rs"
+ "cargo_remove/update_lock_file/mod.rs")
+ #$@(make-ignore-test-list
+ '("fn case")))
+ (substitute* "git_shallow.rs"
+ #$@(make-ignore-test-list
+ '("fn gitoxide_clones_git_dependency_with_shallow_protocol_and_git2_is_used_for_followup_fetches"
+ "fn gitoxide_clones_registry_with_shallow_protocol_and_aborts_and_updates_again"
+ "fn gitoxide_clones_registry_with_shallow_protocol_and_follow_up_fetch_maintains_shallowness"
+ "fn gitoxide_clones_registry_with_shallow_protocol_and_follow_up_with_git2_fetch"
+ "fn gitoxide_clones_registry_without_shallow_protocol_and_follow_up_fetch_uses_shallowness"
+ "fn gitoxide_shallow_clone_followed_by_non_shallow_update"
+ "fn gitoxide_clones_shallow_two_revs_same_deps"
+ "fn gitoxide_git_dependencies_switch_from_branch_to_rev"
+ "fn shallow_deps_work_with_revisions_and_branches_mixed_on_same_dependency")))
+ (substitute* "install.rs"
+ #$@(make-ignore-test-list
+ '("fn failed_install_retains_temp_directory")))
+ (substitute* "offline.rs"
+ #$@(make-ignore-test-list
+ '("fn gitoxide_cargo_compile_offline_with_cached_git_dep_shallow_dep")))
+ (substitute* "patch.rs"
+ #$@(make-ignore-test-list
+ '("fn gitoxide_clones_shallow_old_git_patch"))))))
+ (add-after 'unpack 'disable-tests-broken-on-aarch64
+ (lambda _
+ (with-directory-excursion "src/tools/cargo/tests/testsuite/"
+ (substitute* "build_script_extra_link_arg.rs"
+ #$@(make-ignore-test-list
+ '("fn build_script_extra_link_arg_bin_single")))
+ (substitute* "build_script.rs"
+ #$@(make-ignore-test-list
+ '("fn env_test")))
+ (substitute* "collisions.rs"
+ #$@(make-ignore-test-list
+ '("fn collision_doc_profile_split")))
+ (substitute* "concurrent.rs"
+ #$@(make-ignore-test-list
+ '("fn no_deadlock_with_git_dependencies")))
+ (substitute* "features2.rs"
+ #$@(make-ignore-test-list
+ '("fn dep_with_optional_host_deps_activated"))))))
+ (add-after 'unpack 'patch-command-exec-tests
+ ;; This test suite includes some tests that the stdlib's
+ ;; `Command` execution properly handles in situations where
+ ;; the environment or PATH variable are empty, but this fails
+ ;; since we don't have `echo` available at its usual FHS
+ ;; location.
+ (lambda _
+ (substitute* "tests/ui/command/command-exec.rs"
+ (("Command::new\\(\"echo\"\\)")
+ (format #f "Command::new(~s)" (which "echo"))))))
+ (add-after 'unpack 'patch-command-uid-gid-test
+ (lambda _
+ (substitute* "tests/ui/command/command-uid-gid.rs"
+ (("/bin/sh") (which "sh"))
+ (("/bin/ls") (which "ls")))))
+ (add-after 'unpack 'skip-shebang-tests
+ ;; This test make sure that the parser behaves properly when a
+ ;; source file starts with a shebang. Unfortunately, the
+ ;; patch-shebangs phase changes the meaning of these edge-cases.
+ ;; We skip the test since it's drastically unlikely Guix's
+ ;; packaging will introduce a bug here.
+ (lambda _
+ (delete-file "tests/ui/parser/shebang/sneaky-attrib.rs")))
+ (add-after 'unpack 'patch-process-tests
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((bash (assoc-ref inputs "bash")))
+ (with-directory-excursion "library/std/src"
+ (substitute* "process/tests.rs"
+ (("\"/bin/sh\"")
+ (string-append "\"" bash "/bin/sh\"")))
+ ;; The three tests which are known to fail upstream on QEMU
+ ;; emulation on aarch64 and riscv64 also fail on x86_64 in
+ ;; Guix's build system. Skip them on all builds.
+ (substitute* "sys/unix/process/process_common/tests.rs"
+ ;; We can't use make-ignore-test-list because we will get
+ ;; build errors due to the double [ignore] block.
+ (("target_arch = \"arm\"" arm)
+ (string-append "target_os = \"linux\",\n"
+ " " arm)))))))
+ (add-after 'unpack 'disable-interrupt-tests
+ (lambda _
+ ;; This test hangs in the build container; disable it.
+ (substitute* "src/tools/cargo/tests/testsuite/freshness.rs"
+ #$@(make-ignore-test-list
+ '("fn linking_interrupted")))
+ ;; Likewise for the ctrl_c_kills_everyone test.
+ (substitute* "src/tools/cargo/tests/testsuite/death.rs"
+ #$@(make-ignore-test-list
+ '("fn ctrl_c_kills_everyone")))))
+ (add-after 'unpack 'adjust-rpath-values
+ ;; This adds %output:out to rpath, allowing us to install utilities in
+ ;; different outputs while reusing the shared libraries.
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (substitute* "src/bootstrap/builder.rs"
((" = rpath.*" all)
(string-append all
" "
"rustflags.arg(\"-Clink-args=-Wl,-rpath="
out "/lib\");\n"))))))
- (add-after 'configure 'add-gdb-to-config
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((gdb (assoc-ref inputs "gdb")))
- (substitute* "config.toml"
- (("^python =.*" all)
- (string-append all
- "gdb = \"" gdb "/bin/gdb\"\n"))))))
- (replace 'build
- ;; Phase overridden to also build more tools.
- (lambda* (#:key parallel-build? #:allow-other-keys)
- (let ((job-spec (string-append
- "-j" (if parallel-build?
- (number->string (parallel-job-count))
- "1"))))
- (invoke "./x.py" job-spec "build"
- "library/std" ;rustc
- "src/tools/cargo"
- "src/tools/clippy"
- "src/tools/rust-analyzer"
- "src/tools/rustfmt"))))
- (replace 'check
- ;; Phase overridden to also test more tools.
- (lambda* (#:key tests? parallel-build? #:allow-other-keys)
- (when tests?
- (let ((job-spec (string-append
- "-j" (if parallel-build?
- (number->string (parallel-job-count))
- "1"))))
- (invoke "./x.py" job-spec "test" "-vv"
- "library/std"
- "src/tools/cargo"
- "src/tools/clippy"
- "src/tools/rust-analyzer"
- "src/tools/rustfmt")))))
- (replace 'install
- ;; Phase overridden to also install more tools.
- (lambda* (#:key outputs #:allow-other-keys)
- (invoke "./x.py" "install")
- (substitute* "config.toml"
- ;; Adjust the prefix to the 'cargo' output.
- (("prefix = \"[^\"]*\"")
- (format #f "prefix = ~s" (assoc-ref outputs "cargo"))))
- (invoke "./x.py" "install" "cargo")
- (substitute* "config.toml"
- ;; Adjust the prefix to the 'tools' output.
- (("prefix = \"[^\"]*\"")
- (format #f "prefix = ~s" (assoc-ref outputs "tools"))))
- (invoke "./x.py" "install" "clippy")
- (invoke "./x.py" "install" "rust-analyzer")
- (invoke "./x.py" "install" "rustfmt")))
- (add-after 'install 'install-rust-src
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "rust-src"))
- (dest "/lib/rustlib/src/rust"))
- (mkdir-p (string-append out dest))
- (copy-recursively "library" (string-append out dest "/library"))
- (copy-recursively "src" (string-append out dest "/src")))))
- (add-after 'install 'remove-uninstall-script
- (lambda* (#:key outputs #:allow-other-keys)
- ;; This script has no use on Guix
- ;; and it retains a reference to the host's bash.
- (delete-file (string-append (assoc-ref outputs "out")
- "/lib/rustlib/uninstall.sh"))))
- (add-after 'install-rust-src 'wrap-rust-analyzer
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((bin (string-append (assoc-ref outputs "tools") "/bin")))
- (rename-file (string-append bin "/rust-analyzer")
- (string-append bin "/.rust-analyzer-real"))
- (call-with-output-file (string-append bin "/rust-analyzer")
- (lambda (port)
- (format port "#!~a
+ (add-after 'unpack 'copy-compiler-rt-source
+ ;; Note: Keep the clang-runtime version in sync with the LLVM
+ ;; version used to build Rust.
+ (lambda _
+ (let ((compiler-rt "src/llvm-project/compiler-rt"))
+ (mkdir-p compiler-rt)
+ (copy-recursively
+ (string-append #$(package-source clang-runtime-15)
+ "/compiler-rt")
+ compiler-rt))))
+ (add-after 'configure 'enable-profiler
+ (lambda _
+ (substitute* "config.toml"
+ (("^profiler =.*") "")
+ (("\\[build]")
+ "[build]\nprofiler = true\n"))))
+ (add-after 'configure 'add-gdb-to-config
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((gdb (assoc-ref inputs "gdb")))
+ (substitute* "config.toml"
+ (("^python =.*" all)
+ (string-append all
+ "gdb = \"" gdb "/bin/gdb\"\n"))))))
+ (replace 'build
+ ;; Phase overridden to also build more tools.
+ (lambda* (#:key parallel-build? #:allow-other-keys)
+ (let ((job-spec (string-append
+ "-j" (if parallel-build?
+ (number->string (parallel-job-count))
+ "1"))))
+ (invoke "./x.py" job-spec "build"
+ "library/std" ;rustc
+ "src/tools/cargo"
+ "src/tools/clippy"
+ "src/tools/rust-analyzer"
+ "src/tools/rustfmt"))))
+ (replace 'check
+ ;; Phase overridden to also test more tools.
+ (lambda* (#:key tests? parallel-build? #:allow-other-keys)
+ (when tests?
+ (let ((job-spec (string-append
+ "-j" (if parallel-build?
+ (number->string (parallel-job-count))
+ "1"))))
+ (invoke "./x.py" job-spec "test" "-vv"
+ "library/std"
+ "src/tools/cargo"
+ "src/tools/clippy"
+ "src/tools/rust-analyzer"
+ "src/tools/rustfmt")))))
+ (replace 'install
+ ;; Phase overridden to also install more tools.
+ (lambda* (#:key outputs #:allow-other-keys)
+ (invoke "./x.py" "install")
+ (substitute* "config.toml"
+ ;; Adjust the prefix to the 'cargo' output.
+ (("prefix = \"[^\"]*\"")
+ (format #f "prefix = ~s" (assoc-ref outputs "cargo"))))
+ (invoke "./x.py" "install" "cargo")
+ (substitute* "config.toml"
+ ;; Adjust the prefix to the 'tools' output.
+ (("prefix = \"[^\"]*\"")
+ (format #f "prefix = ~s" (assoc-ref outputs "tools"))))
+ (invoke "./x.py" "install" "clippy")
+ (invoke "./x.py" "install" "rust-analyzer")
+ (invoke "./x.py" "install" "rustfmt")))
+ (add-after 'install 'install-rust-src
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "rust-src"))
+ (dest "/lib/rustlib/src/rust"))
+ (mkdir-p (string-append out dest))
+ (copy-recursively "library" (string-append out dest "/library"))
+ (copy-recursively "src" (string-append out dest "/src")))))
+ (add-after 'install-rust-src 'wrap-rust-analyzer
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((bin (string-append (assoc-ref outputs "tools") "/bin")))
+ (rename-file (string-append bin "/rust-analyzer")
+ (string-append bin "/.rust-analyzer-real"))
+ (call-with-output-file (string-append bin "/rust-analyzer")
+ (lambda (port)
+ (format port "#!~a
if test -z \"${RUST_SRC_PATH}\";then export RUST_SRC_PATH=~S;fi;
exec -a \"$0\" \"~a\" \"$@\""
- (which "bash")
- (string-append (assoc-ref outputs "rust-src")
- "/lib/rustlib/src/rust/library")
- (string-append bin "/.rust-analyzer-real"))))
- (chmod (string-append bin "/rust-analyzer") #o755))))))))
- (inputs
- (modify-inputs (package-inputs base-rust)
- (prepend curl libffi `(,nghttp2 "lib") zlib)))
+ (which "bash")
+ (string-append (assoc-ref outputs "rust-src")
+ "/lib/rustlib/src/rust/library")
+ (string-append bin "/.rust-analyzer-real"))))
+ (chmod (string-append bin "/rust-analyzer") #o755))))))))
;; Add test inputs.
(native-inputs (cons* `("gdb" ,gdb/pinned)
`("procps" ,procps)
@@ -1252,84 +1254,84 @@ exec -a \"$0\" \"~a\" \"$@\""
(outputs '("out"))
(arguments
(substitute-keyword-arguments (package-arguments base-rust)
- ((#:tests? _ #f) #f) ; This package for cross-building.
+ ((#:tests? _ #f) #f) ; This package for cross-building.
((#:phases phases)
- `(modify-phases ,phases
- (add-after 'unpack 'unbundle-xz
- (lambda _
- (delete-file-recursively "vendor/lzma-sys/xz-5.2")
- ;; Remove the option of using the static library.
- ;; This is necessary for building the sysroot.
- (substitute* "vendor/lzma-sys/build.rs"
- (("!want_static && ") ""))))
- ,@(if (target-mingw? target)
- `((add-after 'set-env 'patch-for-mingw
- (lambda* (#:key inputs #:allow-other-keys)
- (setenv "LIBRARY_PATH"
- (string-join
- (delete
- (string-append
- (or (assoc-ref inputs "mingw-w64-i686-winpthreads")
- (assoc-ref inputs "mingw-w64-x86_64-winpthreads"))
- "/lib")
- (string-split (getenv "LIBRARY_PATH") #\:))
- ":"))
- (setenv "CPLUS_INCLUDE_PATH"
- (string-join
- (delete
- (string-append
- (or (assoc-ref inputs "mingw-w64-i686-winpthreads")
- (assoc-ref inputs "mingw-w64-x86_64-winpthreads"))
- "/include")
- (string-split (getenv "CPLUS_INCLUDE_PATH") #\:))
- ":"))
- ;; When building a rust-sysroot this crate is only used for
- ;; the rust-installer.
- (substitute* "vendor/num_cpus/src/linux.rs"
- (("\\.ceil\\(\\)") ""))
- ;; gcc doesn't recognize this flag.
- (substitute*
- "compiler/rustc_target/src/spec/base/windows_gnullvm.rs"
- ((", \"--unwindlib=none\"") "")))))
- `())
- (replace 'set-env
- (lambda* (#:key inputs #:allow-other-keys)
- (setenv "SHELL" (which "sh"))
- (setenv "CONFIG_SHELL" (which "sh"))
- (setenv "CC" (which "gcc"))
- ;; The Guix LLVM package installs only shared libraries.
- (setenv "LLVM_LINK_SHARED" "1")
+ #~(modify-phases #$phases
+ (add-after 'unpack 'unbundle-xz
+ (lambda _
+ (delete-file-recursively "vendor/lzma-sys/xz-5.2")
+ ;; Remove the option of using the static library.
+ ;; This is necessary for building the sysroot.
+ (substitute* "vendor/lzma-sys/build.rs"
+ (("!want_static && ") ""))))
+ #$@(if (target-mingw? target)
+ `((add-after 'set-env 'patch-for-mingw
+ (lambda* (#:key inputs #:allow-other-keys)
+ (setenv "LIBRARY_PATH"
+ (string-join
+ (delete
+ (string-append
+ (or (assoc-ref inputs "mingw-w64-i686-winpthreads")
+ (assoc-ref inputs "mingw-w64-x86_64-winpthreads"))
+ "/lib")
+ (string-split (getenv "LIBRARY_PATH") #\:))
+ ":"))
+ (setenv "CPLUS_INCLUDE_PATH"
+ (string-join
+ (delete
+ (string-append
+ (or (assoc-ref inputs "mingw-w64-i686-winpthreads")
+ (assoc-ref inputs "mingw-w64-x86_64-winpthreads"))
+ "/include")
+ (string-split (getenv "CPLUS_INCLUDE_PATH") #\:))
+ ":"))
+ ;; When building a rust-sysroot this crate is only used for
+ ;; the rust-installer.
+ (substitute* "vendor/num_cpus/src/linux.rs"
+ (("\\.ceil\\(\\)") ""))
+ ;; gcc doesn't recognize this flag.
+ (substitute*
+ "compiler/rustc_target/src/spec/windows_gnullvm_base.rs"
+ ((", \"--unwindlib=none\"") "")))))
+ `())
+ (replace 'set-env
+ (lambda* (#:key inputs #:allow-other-keys)
+ (setenv "SHELL" (which "sh"))
+ (setenv "CONFIG_SHELL" (which "sh"))
+ (setenv "CC" (which "gcc"))
+ ;; The Guix LLVM package installs only shared libraries.
+ (setenv "LLVM_LINK_SHARED" "1")
- (setenv "CROSS_LIBRARY_PATH" (getenv "LIBRARY_PATH"))
- (setenv "CROSS_CPLUS_INCLUDE_PATH" (getenv "CPLUS_INCLUDE_PATH"))
- (when (assoc-ref inputs (string-append "glibc-cross-" ,target))
- (setenv "LIBRARY_PATH"
- (string-join
+ (setenv "CROSS_LIBRARY_PATH" (getenv "LIBRARY_PATH"))
+ (setenv "CROSS_CPLUS_INCLUDE_PATH" (getenv "CPLUS_INCLUDE_PATH"))
+ (when (assoc-ref inputs (string-append "glibc-cross-" #$target))
+ (setenv "LIBRARY_PATH"
+ (string-join
(delete
- (string-append
- (assoc-ref inputs
- (string-append "glibc-cross-" ,target))
- "/lib")
- (string-split (getenv "LIBRARY_PATH") #\:))
+ (string-append
+ (assoc-ref inputs
+ (string-append "glibc-cross-" #$target))
+ "/lib")
+ (string-split (getenv "LIBRARY_PATH") #\:))
":"))
- (setenv "CPLUS_INCLUDE_PATH"
- (string-join
+ (setenv "CPLUS_INCLUDE_PATH"
+ (string-join
(delete
- (string-append
- (assoc-ref inputs
- (string-append "glibc-cross-" ,target))
- "/include")
- (string-split (getenv "CPLUS_INCLUDE_PATH") #\:))
+ (string-append
+ (assoc-ref inputs
+ (string-append "glibc-cross-" #$target))
+ "/include")
+ (string-split (getenv "CPLUS_INCLUDE_PATH") #\:))
":")))))
- (replace 'configure
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (target-cc
- (search-input-file
- inputs (string-append "/bin/" ,(cc-for-target target)))))
- (call-with-output-file "config.toml"
- (lambda (port)
- (display (string-append "
+ (replace 'configure
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (target-cc
+ (search-input-file
+ inputs (string-append "/bin/" #$(cc-for-target target)))))
+ (call-with-output-file "config.toml"
+ (lambda (port)
+ (display (string-append "
[llvm]
[build]
cargo = \"" (search-input-file inputs "/bin/cargo") "\"
@@ -1338,7 +1340,7 @@ docs = false
python = \"" (which "python") "\"
vendor = true
submodules = false
-target = [\"" ,(platform-rust-target (lookup-platform-by-target target)) "\"]
+target = [\"" #$(nix-system->gnu-triplet-for-rust (gnu-triplet->nix-system target)) "\"]
[install]
prefix = \"" out "\"
sysconfdir = \"etc\"
@@ -1347,65 +1349,71 @@ debug = false
jemalloc = false
default-linker = \"" target-cc "\"
channel = \"stable\"
-[target." ,(platform-rust-target (lookup-platform-by-system (%current-system))) "]
+[target." #$(nix-system->gnu-triplet-for-rust) "]
# These are all native tools
llvm-config = \"" (search-input-file inputs "/bin/llvm-config") "\"
linker = \"" (which "gcc") "\"
cc = \"" (which "gcc") "\"
cxx = \"" (which "g++") "\"
ar = \"" (which "ar") "\"
-[target." ,(platform-rust-target (lookup-platform-by-target target)) "]
+[target." #$(nix-system->gnu-triplet-for-rust (gnu-triplet->nix-system target)) "]
llvm-config = \"" (search-input-file inputs "/bin/llvm-config") "\"
linker = \"" target-cc "\"
cc = \"" target-cc "\"
-cxx = \"" (search-input-file inputs (string-append "/bin/" ,(cxx-for-target target))) "\"
-ar = \"" (search-input-file inputs (string-append "/bin/" ,(ar-for-target target))) "\"
+cxx = \"" (search-input-file inputs (string-append "/bin/" #$(cxx-for-target target))) "\"
+ar = \"" (search-input-file inputs (string-append "/bin/" #$(ar-for-target target))) "\"
[dist]
") port))))))
- (replace 'build
- ;; Phase overridden to build the necessary directories.
- (lambda* (#:key parallel-build? #:allow-other-keys)
- (let ((job-spec (string-append
- "-j" (if parallel-build?
- (number->string (parallel-job-count))
- "1"))))
- ;; This works for us with the --sysroot flag
- ;; and then we can build ONLY library/std
- (invoke "./x.py" job-spec "build" "library/std"))))
- (replace 'install
- (lambda _
- (invoke "./x.py" "install" "library/std")))
- (delete 'install-rust-src)
- (delete 'wrap-rust-analyzer)
- (delete 'wrap-rustc)))))
+ (replace 'build
+ ;; Phase overridden to build the necessary directories.
+ (lambda* (#:key parallel-build? #:allow-other-keys)
+ (let ((job-spec (string-append
+ "-j" (if parallel-build?
+ (number->string (parallel-job-count))
+ "1"))))
+ ;; This works for us with the --sysroot flag
+ ;; and then we can build ONLY library/std
+ (invoke "./x.py" job-spec "build" "library/std"))))
+ (replace 'install
+ (lambda _
+ (invoke "./x.py" "install" "library/std")))
+ (add-after 'install 'remove-uninstall-script
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; This script has no use on Guix
+ ;; and it retains a reference to the host's bash.
+ (delete-file (string-append (assoc-ref outputs "out")
+ "/lib/rustlib/uninstall.sh"))))
+ (delete 'install-rust-src)
+ (delete 'wrap-rust-analyzer)
+ (delete 'wrap-rustc)))))
(inputs
(modify-inputs (package-inputs base-rust)
- (prepend xz))) ; for lzma-sys
+ (prepend xz))) ; for lzma-sys
(propagated-inputs
(if (target-mingw? target)
- (modify-inputs (package-propagated-inputs base-rust)
- (prepend
- (if (string=? "i686-w64-mingw32" target)
- mingw-w64-i686-winpthreads
- mingw-w64-x86_64-winpthreads)))
- (package-propagated-inputs base-rust)))
+ (modify-inputs (package-propagated-inputs base-rust)
+ (prepend
+ (if (string=? "i686-w64-mingw32" target)
+ mingw-w64-i686-winpthreads
+ mingw-w64-x86_64-winpthreads)))
+ (package-propagated-inputs base-rust)))
(native-inputs
(if (target-mingw? target)
- (modify-inputs (package-native-inputs base-rust)
- (prepend (cross-gcc target
- #:libc (cross-libc target))
- (cross-binutils target)
- (if (string=? "i686-w64-mingw32" target)
- mingw-w64-i686-winpthreads
- mingw-w64-x86_64-winpthreads)))
- (modify-inputs (package-native-inputs base-rust)
- (prepend (cross-gcc target
- #:libc (cross-libc target))
- (cross-libc target)
- (cross-binutils target)))))
+ (modify-inputs (package-native-inputs base-rust)
+ (prepend (cross-gcc target
+ #:libc (cross-libc target))
+ (cross-binutils target)
+ (if (string=? "i686-w64-mingw32" target)
+ mingw-w64-i686-winpthreads
+ mingw-w64-x86_64-winpthreads)
+ libunwind))
+ (modify-inputs (package-native-inputs base-rust)
+ (prepend (cross-gcc target
+ #:libc (cross-libc target))
+ (cross-libc target)
+ (cross-binutils target)))))
(properties
- `((hidden? . #t)
- ,(package-properties base-rust))))))
+ `((hidden? . #t) ,(package-properties base-rust))))))
(define-public rust-analyzer
(package
diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm
index f52b86e1ed..ae3966664f 100644
--- a/gnu/packages/samba.scm
+++ b/gnu/packages/samba.scm
@@ -246,6 +246,7 @@ external dependencies.")
jansson
libarchive
libtirpc
+ libxcrypt
linux-pam
lmdb
mit-krb5
@@ -278,8 +279,7 @@ external dependencies.")
;; For generating man pages.
docbook-xml-4.2
docbook-xsl
- libxslt
- libxml2))) ;for XML_CATALOG_FILES
+ libxslt)))
(home-page "https://www.samba.org/")
(synopsis
"The standard Windows interoperability suite of programs for GNU and Unix")
@@ -322,6 +322,14 @@ Desktops into Active Directory environments using the winbind daemon.")
(arguments
'(#:phases
(modify-phases %standard-phases
+ (add-after 'unpack 'remove-crypt-reference
+ ;; The following is needed because Python.h propagates
+ ;; HAVE_CRYPT_H, which is then seen from lib/replace/ but talloc
+ ;; doesn't need it at all.
+ (lambda _
+ (substitute* "lib/replace/replace.h"
+ (("#include <crypt.h>")
+ ""))))
(replace 'configure
(lambda* (#:key outputs #:allow-other-keys)
;; talloc uses a custom configuration script that runs a Python
@@ -389,6 +397,14 @@ destructors. It is the core memory allocator used in Samba.")
(arguments
'(#:phases
(modify-phases %standard-phases
+ (add-after 'unpack 'remove-crypt-reference
+ ;; The following is needed because Python.h propagates
+ ;; HAVE_CRYPT_H, which is then seen from lib/replace/ but talloc
+ ;; doesn't need it at all.
+ (lambda _
+ (substitute* "lib/replace/replace.h"
+ (("#include <crypt.h>")
+ ""))))
(replace 'configure
;; tevent uses a custom configuration script that runs waf.
(lambda* (#:key outputs #:allow-other-keys)
@@ -435,6 +451,14 @@ many event types, including timers, signals, and the classic file descriptor eve
#:tests? (assoc-ref %build-inputs "lmdb")
#:phases
(modify-phases %standard-phases
+ (add-after 'unpack 'remove-crypt-reference
+ ;; The following is needed because Python.h propagates
+ ;; HAVE_CRYPT_H, which is then seen from lib/replace/ but talloc
+ ;; doesn't need it at all.
+ (lambda _
+ (substitute* "lib/replace/replace.h"
+ (("#include <crypt.h>")
+ ""))))
(replace 'configure
;; ldb use a custom configuration script that runs waf.
(lambda* (#:key outputs #:allow-other-keys)
diff --git a/gnu/packages/sawfish.scm b/gnu/packages/sawfish.scm
index 1870a2950c..ac9f37f3f6 100644
--- a/gnu/packages/sawfish.scm
+++ b/gnu/packages/sawfish.scm
@@ -27,6 +27,7 @@
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages dbm)
#:use-module (gnu packages gettext)
#:use-module (gnu packages gtk)
@@ -167,7 +168,8 @@ backend of Sawfish.")
pkg-config
which))
(inputs
- (list gdk-pixbuf-xlib
+ (list bash-minimal
+ gdk-pixbuf-xlib
gmp
libsm
libxft
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index a91a2d693d..9707c646e9 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -1290,7 +1290,7 @@ Gerbil code within Emacs.")))
(arguments
(list
#:modules `((ice-9 ftw)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:phases
#~(modify-phases %standard-phases
(add-before 'configure 'patch-sh-references
diff --git a/gnu/packages/screen.scm b/gnu/packages/screen.scm
index 7c16ee239a..095f18d85e 100644
--- a/gnu/packages/screen.scm
+++ b/gnu/packages/screen.scm
@@ -7,6 +7,7 @@
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
+;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -33,6 +34,8 @@
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
+ #:use-module (gnu packages bash)
+ #:use-module (gnu packages crypto)
#:use-module (gnu packages hurd)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages perl)
@@ -55,7 +58,7 @@
(native-inputs
(list autoconf automake texinfo))
(inputs
- (list ncurses perl))
+ (list libxcrypt ncurses perl))
(arguments
`(#:configure-flags
;; By default, screen supports 16 colors, but we want 256 when
@@ -119,7 +122,8 @@ controlling terminal and attach to it later.")
(patches (search-patches "byobu-writable-status.patch"))))
(build-system gnu-build-system)
(inputs
- `(("python" ,python-wrapper) ; for config and session GUIs
+ `(("bash" ,bash-minimal) ; for wrap-program
+ ("python" ,python-wrapper) ; for config and session GUIs
("python-newt" ,newt "python")))
(arguments
`(#:phases
diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm
index d3a0e33b19..9edacc58cb 100644
--- a/gnu/packages/sdl.scm
+++ b/gnu/packages/sdl.scm
@@ -43,6 +43,7 @@
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix utils)
+ #:use-module (guix build-system cmake)
#:use-module (guix build-system copy)
#:use-module (guix build-system gnu)
#:use-module (guix build-system trivial)
@@ -67,35 +68,46 @@
#:use-module (gnu packages xorg)
#:export (sdl-union))
-(define-public sdl
+(define-public sdl2
(package
- (name "sdl")
- (version "1.2.15")
+ (name "sdl2")
+ (version "2.30.1")
(source (origin
- (method url-fetch)
- (uri
- (string-append "https://libsdl.org/release/SDL-"
- version ".tar.gz"))
- (sha256
- (base32
- "005d993xcac8236fpvd1iawkz4wqjybkpn8dbwaliqz5jfkidlyn"))
- (patches (search-patches "sdl-libx11-1.6.patch"))))
- (build-system gnu-build-system)
+ (method url-fetch)
+ (uri
+ (string-append "https://libsdl.org/release/SDL2-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0fj7gxc7rlzzrafnx9nmf7ws3paxy583fmx7bcbavi6gr3xmy881"))))
(arguments
- '(;; Explicitly link against shared libraries instead of dlopening them.
- ;; For X11, ALSA, and PulseAudio.
- ;; OpenGL library is still dlopened at runtime.
- #:configure-flags '("--disable-alsa-shared"
- "--disable-pulseaudio-shared"
- "--disable-x11-shared"
- ;; Explicitly link with mesa.
- ;; This add mesa to libsdl's RUNPATH, to make dlopen
- ;; finding the libGL from mesa at runtime.
- "LDFLAGS=-lGL")
-
- #:make-flags '("V=1") ;build verbosely
-
- #:tests? #f)) ; no check target
+ (list
+ #:tests? #f ;no check target
+ ;; Explicitly link against shared libraries instead of dlopening them.
+ ;; For X11, ALSA, and PulseAudio.
+ ;; OpenGL library is still dlopened at runtime.
+ #:configure-flags
+ #~(append
+ '("--disable-wayland-shared"
+ "--enable-video-kmsdrm"
+ "--disable-kmsdrm-shared")
+ '("--disable-alsa-shared"
+ "--disable-pulseaudio-shared"
+ "--disable-x11-shared"
+ ;; Explicitly link with mesa.
+ ;; This add mesa to libsdl's RUNPATH, to make dlopen
+ ;; finding the libGL from mesa at runtime.
+ "LDFLAGS=-lGL"))
+ #:make-flags
+ #~(cons*
+ ;; SDL dlopens libudev and libvulkan, so make sure they are in
+ ;; rpath. This overrides the LDFLAG set in sdl’s configure-flags,
+ ;; which isn’t necessary as sdl2 includes Mesa by default.
+ (string-append "LDFLAGS=-Wl,-rpath,"
+ #$(this-package-input "eudev") "/lib"
+ ",-rpath,"
+ #$(this-package-input "vulkan-loader") "/lib")
+ '("V=1")))) ;build verbosely
(propagated-inputs
;; SDL headers include X11 headers.
(list libx11
@@ -105,60 +117,82 @@
;; change in pkg-config.
mesa))
(native-inputs (list pkg-config))
- (inputs (list libxrandr glu alsa-lib pulseaudio))
+ (inputs
+ ;; SDL2 needs to be built with ibus support otherwise some systems
+ ;; experience a bug where input events are doubled.
+ ;;
+ ;; For more information, see: https://dev.solus-project.com/T1721
+ (list
+ libxrandr
+ glu
+ alsa-lib
+ pulseaudio
+ dbus
+ eudev ;for discovering input devices
+ glib
+ ibus-minimal
+ libxkbcommon
+ libxcursor ;enables X11 cursor support
+ vulkan-loader
+ wayland
+ wayland-protocols))
(outputs '("out" "debug"))
(synopsis "Cross platform game development library")
- (description "Simple DirectMedia Layer is a cross-platform development
-library designed to provide low level access to audio, keyboard, mouse,
-joystick, and graphics hardware.")
+ (description
+ "Simple DirectMedia Layer is a cross-platform development library designed to
+provide low level access to audio, keyboard, mouse, joystick, and graphics
+hardware.")
(home-page "https://libsdl.org/")
- (license license:lgpl2.1)))
+ (license license:bsd-3)))
-(define-public sdl2
+(define-public sdl12-compat
(package
- (inherit sdl)
- (name "sdl2")
- (version "2.30.1")
+ (name "sdl12-compat")
+ (version "1.2.68")
(source (origin
- (method url-fetch)
- (uri
- (string-append "https://libsdl.org/release/SDL2-"
- version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/libsdl-org/sdl12-compat")
+ (commit (string-append "release-" version))))
+ (file-name (git-file-name name version))
(sha256
(base32
- "0fj7gxc7rlzzrafnx9nmf7ws3paxy583fmx7bcbavi6gr3xmy881"))))
+ "0qsjlzi1wqszi6k4pc3k9xdvzid5cx6ql8wbjw6qdapzpvf6arvz"))))
+ (build-system cmake-build-system)
(arguments
- (substitute-keyword-arguments (package-arguments sdl)
- ((#:configure-flags flags)
- #~(append '("--disable-wayland-shared" "--enable-video-kmsdrm"
- "--disable-kmsdrm-shared")
- #$flags))
- ((#:make-flags flags ''())
- #~(cons*
- ;; SDL dlopens libudev and libvulkan, so make sure they are in
- ;; rpath. This overrides the LDFLAG set in sdl’s configure-flags,
- ;; which isn’t necessary as sdl2 includes Mesa by default.
- (string-append "LDFLAGS=-Wl,-rpath,"
- #$(this-package-input "eudev") "/lib"
- ",-rpath,"
- #$(this-package-input "vulkan-loader") "/lib")
- #$flags))))
- (inputs
- ;; SDL2 needs to be built with ibus support otherwise some systems
- ;; experience a bug where input events are doubled.
- ;;
- ;; For more information, see: https://dev.solus-project.com/T1721
- (modify-inputs (package-inputs sdl)
- (append dbus
- eudev ;for discovering input devices
- glib
- ibus-minimal
- libxkbcommon
- libxcursor ;enables X11 cursor support
- vulkan-loader
- wayland
- wayland-protocols)))
- (license license:bsd-3)))
+ (list #:tests? #f ;no check target
+ #:configure-flags
+ ;; This add SDL2 to sdl12-compat's RUNPATH, to make dlopen finding the
+ ;; libSDL2 at runtime.
+ #~'("-DCMAKE_SHARED_LINKER_FLAGS=-lSDL2")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'patch-sdl-config
+ (lambda _
+ ;; Keep the old behaviour to honour "--prefix" option for
+ ;; "--cflags" and "--libs", required by 'perl-alien-sdl'.
+ (substitute* "sdl-config.in"
+ (("echo -I[$][{]includedir[}]") "echo -I${prefix}/include")
+ (("echo -L[$][{]libdir[}]") "echo -L${prefix}/lib"))))
+ (add-after 'install 'install-sdl.pc
+ (lambda _
+ (let ((pcdir (string-append #$output
+ "/lib/pkgconfig")))
+ (symlink (string-append pcdir "/sdl12_compat.pc")
+ (string-append pcdir "/sdl.pc"))))))))
+ (inputs (list sdl2))
+ (propagated-inputs (list glu)) ;required by SDL_opengl.h
+ (synopsis "Cross platform game development library")
+ (description "Simple DirectMedia Layer is a cross-platform development library
+designed to provide low level access to audio, keyboard, mouse, joystick, and
+graphics hardware. This package is a compatibility layer; it provides a binary and
+source compatible API for programs written against SDL 1.2, but it uses SDL 2.0
+behind the scenes.")
+ (home-page "https://libsdl.org/")
+ ;; dr_mp3 code are under public domain.
+ (license (list license:zlib license:public-domain))))
+
+(define-public sdl sdl12-compat)
(define-public sdl2-2.0
(package
@@ -452,6 +486,8 @@ directory.")
(map (match-lambda
(("sdl" _)
`("sdl2" ,sdl2))
+ (("sdl12-compat" _)
+ `("sdl2" ,sdl2))
(other other))
(package-propagated-inputs package)))
diff --git a/gnu/packages/search.scm b/gnu/packages/search.scm
index 8d21a082cb..917bb3282c 100644
--- a/gnu/packages/search.scm
+++ b/gnu/packages/search.scm
@@ -46,6 +46,7 @@
#:use-module (gnu packages aspell)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages compression)
#:use-module (gnu packages check)
#:use-module (gnu packages databases)
@@ -630,7 +631,7 @@ suitable as a default locate on your system.")
;; building: xpdf, catdoc, MP3::Tag, Spreadsheet::ParseExcel,
;; HTML::Entities.
(inputs
- (list perl perl-uri perl-html-parser perl-html-tagset
+ (list bash-minimal perl perl-uri perl-html-parser perl-html-tagset
perl-mime-types))
(arguments
`(;; XXX: This fails to build with zlib (API mismatch) and tests fail
diff --git a/gnu/packages/security-token.scm b/gnu/packages/security-token.scm
index 00a7f97582..7481cb7241 100644
--- a/gnu/packages/security-token.scm
+++ b/gnu/packages/security-token.scm
@@ -9,6 +9,7 @@
;;; Copyright © 2018, 2019 Chris Marusich <cmmarusich@gmail.com>
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2020 Raphaël Mélotte <raphael.melotte@mind.be>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2021 Antero Mejr <antero@kodmin.com>
;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
;;; Copyright © 2021 Sergey Trofimov <sarg@sarg.org.ru>
@@ -240,14 +241,14 @@ with a PKCS #11 Cryptographic Token Interface.")
(define-public pcsc-lite
(package
(name "pcsc-lite")
- (version "1.9.8")
+ (version "2.0.0")
(source (origin
(method url-fetch)
(uri (string-append "https://pcsclite.apdu.fr/files/"
"pcsc-lite-" version ".tar.bz2"))
(sha256
(base32
- "12923c6l5qzga1xlcxvm0vzbqrxnxq1qgzlrxf2y5gpcaz2q0bah"))))
+ "0mlk32gpzmzjf5v8qn56lpyyba625jzzw8rkrmpyvr8h8nvf5hyn"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags '("--enable-usbdropdir=/var/lib/pcsc/drivers"
@@ -598,10 +599,9 @@ Notable features:
(list help2man
gengetopt
pkg-config
- gtk-doc
+ gtk-doc/stable
docbook-xml-4.3
- eudev
- libxml2)) ;for XML_CATALOG_FILES
+ eudev))
(home-page "https://developers.yubico.com/libu2f-host/")
;; TRANSLATORS: The U2F protocol has a "server side" and a "host side".
(synopsis "U2F host-side C library and tool")
@@ -642,7 +642,7 @@ operations.")
gengetopt
help2man
pkg-config
- gtk-doc
+ gtk-doc/stable
which))
(home-page "https://developers.yubico.com/libu2f-server/")
;; TRANSLATORS: The U2F protocol has a "server side" and a "host side".
diff --git a/gnu/packages/selinux.scm b/gnu/packages/selinux.scm
index c45570744a..40be497178 100644
--- a/gnu/packages/selinux.scm
+++ b/gnu/packages/selinux.scm
@@ -60,7 +60,8 @@
(file-name (git-file-name "selinux" version))
(sha256
(base32
- "1lcmgmfr0q7g5cwg6b7jm6ncw8cw6c1jblkm93v1g37bfhcgrqc0"))))
+ "1lcmgmfr0q7g5cwg6b7jm6ncw8cw6c1jblkm93v1g37bfhcgrqc0"))
+ (patches (search-patches "libsepol-versioned-docbook.patch"))))
(build-system gnu-build-system)
(arguments
(list
@@ -231,14 +232,6 @@ binary policies.")
(name "secilc")
(arguments
(substitute-keyword-arguments (package-arguments libsepol)
- ((#:make-flags flags)
- #~(let ((xsl (search-input-directory %build-inputs "xml/xsl")))
- (cons (string-append "XMLTO=xmlto --skip-validation -x "
- xsl "/docbook-xsl-"
- #$(package-version
- (this-package-native-input "docbook-xsl"))
- "/manpages/docbook.xsl")
- #$flags)))
((#:phases phases)
#~(modify-phases #$phases
(delete 'portability)
@@ -247,7 +240,7 @@ binary policies.")
(inputs
(list libsepol))
(native-inputs
- (list xmlto docbook-xsl))
+ (list docbook-xml-4.2 docbook-xsl xmlto))
(synopsis "SELinux common intermediate language (CIL) compiler")
(description "The SELinux CIL compiler is a compiler that converts the
@dfn{common intermediate language} (CIL) into a kernel binary policy file.")
@@ -258,7 +251,7 @@ binary policies.")
(name "python-sepolgen")
(arguments
(substitute-keyword-arguments (package-arguments libsepol)
- ((#:modules _ #~%gnu-build-system-modules)
+ ((#:modules _ #~%default-gnu-modules)
'((srfi srfi-1)
(guix build gnu-build-system)
(guix build utils)))
diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm
index ae4e73956e..f7b80d874b 100644
--- a/gnu/packages/shells.scm
+++ b/gnu/packages/shells.scm
@@ -50,6 +50,7 @@
#:use-module (gnu packages crates-crypto)
#:use-module (gnu packages crates-graphics)
#:use-module (gnu packages crates-io)
+ #:use-module (gnu packages crypto)
#:use-module (gnu packages crates-web)
#:use-module (gnu packages crates-windows)
#:use-module (gnu packages curl)
@@ -409,7 +410,7 @@ written by Paul Haahr and Byron Rakitzis.")
'())
(list autoconf perl)))
(inputs
- (list ncurses))
+ (list libxcrypt ncurses))
(arguments
(list
#:phases
diff --git a/gnu/packages/shellutils.scm b/gnu/packages/shellutils.scm
index e58e9e61fc..37b482e9a0 100644
--- a/gnu/packages/shellutils.scm
+++ b/gnu/packages/shellutils.scm
@@ -125,7 +125,7 @@ chart.")
"/etc/boxes-config"))
#:modules
((ice-9 match)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:phases
(modify-phases %standard-phases
(delete 'configure)
diff --git a/gnu/packages/simh.scm b/gnu/packages/simh.scm
index 9f5c04d8fb..b3ded715d8 100644
--- a/gnu/packages/simh.scm
+++ b/gnu/packages/simh.scm
@@ -53,7 +53,7 @@
#:make-flags
#~(list (string-append "GCC=" #$(cc-for-target) " -fcommon"))
#:modules `((ice-9 string-fun)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:phases
#~(modify-phases %standard-phases
(delete 'configure)
diff --git a/gnu/packages/skarnet.scm b/gnu/packages/skarnet.scm
index d5a5af2af3..3428866700 100644
--- a/gnu/packages/skarnet.scm
+++ b/gnu/packages/skarnet.scm
@@ -22,6 +22,7 @@
(define-module (gnu packages skarnet)
#:use-module (gnu packages)
+ #:use-module (gnu packages bash)
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix download)
@@ -74,7 +75,7 @@ and file system operations. It is used by all skarnet.org software.")
(sha256
(base32 "1393xka069n3rvc3dlg6c3ckzl1qgqkhvhlcxv6igl9216kpy0n8"))))
(build-system gnu-build-system)
- (inputs (list skalibs))
+ (inputs (list bash-minimal skalibs))
(arguments
'(#:configure-flags (list
(string-append "--with-lib="
diff --git a/gnu/packages/speech.scm b/gnu/packages/speech.scm
index 36b67ccd93..097aa885f8 100644
--- a/gnu/packages/speech.scm
+++ b/gnu/packages/speech.scm
@@ -76,6 +76,7 @@
;; There numerous issues with the testsuite.
;; Enable all of them once they are fixed in upstream.
`(#:tests? #f
+ #:parallel-build? #f
#:configure-flags
(list
"--enable-shared"
@@ -356,7 +357,7 @@ be used by the sighted.")
#:modules ((guix build gnu-build-system)
(guix build utils)
(guix build emacs-utils))
- #:imported-modules (,@%gnu-build-system-modules
+ #:imported-modules (,@%default-gnu-imported-modules
(guix build emacs-utils))
#:phases
(modify-phases %standard-phases
diff --git a/gnu/packages/sphinx.scm b/gnu/packages/sphinx.scm
index e280c06f2b..51a707554d 100644
--- a/gnu/packages/sphinx.scm
+++ b/gnu/packages/sphinx.scm
@@ -18,6 +18,7 @@
;;; Copyright © 2021, 2022 Vinicius Monego <monego@posteo.net>
;;; Copyright © 2021 Hugo Lecomte <hugo.lecomte@inria.fr>
;;; Copyright © 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2024 Troy Figiel <troy@troyfigiel.com>
;;;
;;; This file is part of GNU Guix.
@@ -75,7 +76,10 @@
"12cdy3m5c09lpf2bbxzbhm5v5y9fk7jgm94qrzggpq86waj28cms"))))
(build-system python-build-system)
(arguments
- '(#:phases
+ `(;; Make sure it is safe to use 'imagemagick' instead of
+ ;; 'imagemagick/stable' (see the comment for the "imagemagick" input).
+ #:disallowed-references (,imagemagick/stable)
+ #:phases
(modify-phases %standard-phases
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
@@ -135,7 +139,11 @@
texlive-wrapfig
texlive-xcolor))
(native-inputs
- (list imagemagick ;for "convert"
+ ;; imagemagick is added for "convert". The store item does not retain a
+ ;; reference to imagemagick, so it should be safe to use
+ ;; 'imagemagick/stable' instead of 'imagemagick'. This is enforced by
+ ;; the '#:disallowed-references' above.
+ (list imagemagick/stable
python-cython
python-html5lib
python-pytest))
diff --git a/gnu/packages/spice.scm b/gnu/packages/spice.scm
index 860b77cf5d..2f9d29e102 100644
--- a/gnu/packages/spice.scm
+++ b/gnu/packages/spice.scm
@@ -194,7 +194,8 @@ which allows users to view a desktop computing environment.")
python-six
vala))
(inputs
- (list cyrus-sasl
+ (list bash-minimal
+ cyrus-sasl
glib-networking
gobject-introspection
json-glib
diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm
index ff39aea9ba..902f935b6d 100644
--- a/gnu/packages/ssh.scm
+++ b/gnu/packages/ssh.scm
@@ -40,6 +40,7 @@
#:use-module (gnu packages admin)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages boost)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
@@ -490,7 +491,8 @@ with optional @acronym{TLS, Transport-Level Security} to protect credentials.")
(native-inputs
(list pkg-config))
(inputs
- (list boost
+ (list bash-minimal
+ boost
ncurses
openssl
perl
diff --git a/gnu/packages/sssd.scm b/gnu/packages/sssd.scm
index 44817d0232..6fb43195e7 100644
--- a/gnu/packages/sssd.scm
+++ b/gnu/packages/sssd.scm
@@ -92,7 +92,6 @@
docbook-xml-4.3
docbook-xsl
libtool
- libxml2 ;for XML_CATALOG_FILES
libxslt
util-linux ;For `rev` command used in tests.
xmlto))
@@ -163,10 +162,7 @@ fundamental object types for C.")
#$(this-package-native-input "docbook-xsl")
"/xml/xsl/docbook-xsl-"
#$(package-version (this-package-native-input "docbook-xsl"))
- "/manpages/docbook.xsl")
- ;; Remove "--postvalid" option, because that requires access to
- ;; online DTDs.
- "XMLLINT_FLAGS = --catalogs --nonet --noent --xinclude --noout")
+ "/manpages/docbook.xsl"))
#:configure-flags
#~(list "--localstatedir=/var" ; for /var/lib/sss, /var/run/sssd.pid, etc.
"--sysconfdir=/etc" ; /etc/sssd
@@ -283,7 +279,7 @@ fundamental object types for C.")
bc ; for tests
check ; for tests
cmocka ; for tests
- docbook-xml
+ docbook-xml-4.4
docbook-xsl
doxygen
gettext-minimal
diff --git a/gnu/packages/stb.scm b/gnu/packages/stb.scm
index 4ee1b4ebd2..64c13225eb 100644
--- a/gnu/packages/stb.scm
+++ b/gnu/packages/stb.scm
@@ -47,7 +47,7 @@
`(#:modules ((ice-9 ftw)
(ice-9 regex)
(srfi srfi-26)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:phases (modify-phases %standard-phases
(delete 'configure)
(delete 'build)
diff --git a/gnu/packages/storage.scm b/gnu/packages/storage.scm
index 0dadd0914a..ab7eb6102c 100644
--- a/gnu/packages/storage.scm
+++ b/gnu/packages/storage.scm
@@ -30,6 +30,7 @@
#:use-module (gnu packages admin)
#:use-module (gnu packages assembly)
#:use-module (gnu packages authentication)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages bdw-gc)
#:use-module (gnu packages boost)
#:use-module (gnu packages compression)
@@ -215,6 +216,7 @@
(list `(,apache-thrift "lib")
`(,apache-thrift "include")
`(,apache-arrow-for-ceph "lib")
+ bash-minimal
boost
curl
cryptsetup
diff --git a/gnu/packages/suckless.scm b/gnu/packages/suckless.scm
index 39cf2e4cc5..9e60b779dc 100644
--- a/gnu/packages/suckless.scm
+++ b/gnu/packages/suckless.scm
@@ -38,6 +38,7 @@
#:use-module (gnu packages)
#:use-module (gnu packages base)
#:use-module (gnu packages crates-io)
+ #:use-module (gnu packages crypto)
#:use-module (gnu packages compression)
#:use-module (gnu packages cups)
#:use-module (gnu packages fonts)
@@ -358,7 +359,7 @@ numbers of user-defined menu items efficiently.")
#:phases #~(modify-phases %standard-phases
(delete 'configure))))
(inputs
- (list libx11 libxext libxinerama libxrandr))
+ (list libx11 libxcrypt libxext libxinerama libxrandr))
(home-page "https://tools.suckless.org/slock/")
(synopsis "Simple X session lock")
(description
diff --git a/gnu/packages/syncthing.scm b/gnu/packages/syncthing.scm
index 366a5f0ebb..6e03aa5a2b 100644
--- a/gnu/packages/syncthing.scm
+++ b/gnu/packages/syncthing.scm
@@ -34,6 +34,7 @@
#:use-module (guix git-download)
#:use-module (guix licenses)
#:use-module (gnu packages)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
@@ -187,7 +188,8 @@ Protocol.")
`("GI_TYPELIB_PATH" ":" prefix
(,(getenv "GI_TYPELIB_PATH"))))))))))
(inputs
- (list gtk+
+ (list bash-minimal
+ gtk+
libappindicator
libnotify
python-bcrypt
diff --git a/gnu/packages/syndication.scm b/gnu/packages/syndication.scm
index 18d3df5b6e..ddebee0fab 100644
--- a/gnu/packages/syndication.scm
+++ b/gnu/packages/syndication.scm
@@ -137,7 +137,8 @@
("xmllint" ,libxml2)
("xorg-server" ,xorg-server-for-tests)))
(inputs
- `(("glib" ,glib)
+ `(("bash" ,bash-minimal) ; for wrap-program
+ ("glib" ,glib)
("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
("gspell" ,gspell)
("gstreamer" ,gstreamer)
@@ -201,7 +202,8 @@ cards.")
(list gtk "bin")
pkg-config))
(inputs
- (list blueprint-compiler-0.4
+ (list bash-minimal
+ blueprint-compiler-0.4
glib
gtk
gtksourceview
@@ -379,7 +381,8 @@ file system, and many more features.")
pkg-config
which))
(inputs
- (list glib
+ (list bash-minimal
+ glib
glib-networking
gnome-keyring
gsettings-desktop-schemas
diff --git a/gnu/packages/task-management.scm b/gnu/packages/task-management.scm
index 96df50d747..af3c49460c 100644
--- a/gnu/packages/task-management.scm
+++ b/gnu/packages/task-management.scm
@@ -30,6 +30,7 @@
#:use-module (guix gexp)
#:use-module (guix packages)
#:use-module (gnu packages)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages check)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gettext)
@@ -330,7 +331,7 @@ a task.")
(build-system meson-build-system)
(arguments
`(#:glib-or-gtk? #t
- #:tests? #f ;the "Validate appstream file" test fails
+ #:tests? #f ;the "Validate appstream file" test fails
#:phases
(modify-phases %standard-phases
(add-after 'wrap 'wrap-libs
@@ -342,20 +343,20 @@ a task.")
(wrap-program (string-append out "/bin/blanket")
`("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))
`("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))
- `("GUIX_PYTHONPATH" ":" prefix (,python-path))))
- #t)))))
+ `("GUIX_PYTHONPATH" ":" prefix (,python-path)))))))))
(native-inputs
- `(("desktop-file-utils" ,desktop-file-utils)
- ("gettext" ,gettext-minimal)
- ("glib:bin" ,glib "bin")
- ("gobject-introspection" ,gobject-introspection)
- ("gtk+:bin" ,gtk+ "bin")
- ("pkg-config" ,pkg-config)))
+ (list desktop-file-utils
+ gettext-minimal
+ `(,glib "bin")
+ gobject-introspection
+ `(,gtk+ "bin")
+ pkg-config))
(inputs
(list appstream-glib
+ bash-minimal
gsettings-desktop-schemas
gst-plugins-bad
- gst-plugins-good ;for ScaleTempo plugin
+ gst-plugins-good ;for ScaleTempo plugin
gtk+
libhandy
python
diff --git a/gnu/packages/telegram.scm b/gnu/packages/telegram.scm
index 358374a5bb..e1a7ae552a 100644
--- a/gnu/packages/telegram.scm
+++ b/gnu/packages/telegram.scm
@@ -618,7 +618,7 @@ formerly a part of telegram-cli, but now being maintained separately.")
#:tests? #f ; No target
#:imported-modules
`((guix build copy-build-system)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:modules
'(((guix build copy-build-system)
#:prefix copy:)
@@ -691,7 +691,7 @@ formerly a part of telegram-cli, but now being maintained separately.")
#:tests? #f ; No target
#:imported-modules
`((guix build copy-build-system)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:modules
'(((guix build copy-build-system)
#:prefix copy:)
diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index f0ae4d4d4d..0711d8b70a 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -347,7 +347,6 @@ compatibility to existing emulators like xterm, gnome-terminal, konsole, etc.")
automake
libtool
libxslt ;to build the man page
- libxml2 ;for XML_CATALOG_FILES
docbook-xsl))
(inputs
`(("libdrm" ,libdrm)
@@ -1085,6 +1084,7 @@ usable with any list--including files, command history, processes and more.")
(string-append zsh-completion "/_fzf"))))))))))
(inputs
`(,@(package-inputs go-github-com-junegunn-fzf)
+ ("bash" ,bash-minimal) ; for wrap-program
("findutils" ,findutils)
("ncurses" ,ncurses)))))
diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index 4e46c1a898..dd71bef421 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -320,6 +320,7 @@ of user-specified directories similar to how shells look up executables.")
"tlpkg/TeXLive/"
"tlpkg/texlive.tlpdb"))
(revision %texlive-revision)))
+ (file-name (git-file-name name version))
(sha256
"0sqbg5kjpzkpm1fq2c9hpf4f21bvjs3xas944dlbqp44lsqhcmsk")))
(outputs '("out" "doc"))
@@ -56933,7 +56934,8 @@ documents as well as DVI output.")
perl-module-build
perl-test-differences))
(inputs
- (list perl
+ (list bash-minimal
+ perl
perl-autovivification
perl-class-accessor
perl-data-dump
diff --git a/gnu/packages/texinfo.scm b/gnu/packages/texinfo.scm
index a5ddc95859..79c21d8b45 100644
--- a/gnu/packages/texinfo.scm
+++ b/gnu/packages/texinfo.scm
@@ -38,6 +38,7 @@
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
+ #:use-module (gnu packages base)
#:use-module (gnu packages compression)
#:use-module (gnu packages gettext)
#:use-module (gnu packages ncurses)
@@ -79,10 +80,12 @@
#:tests? ,(and (not (target-hurd?))
(not (%current-target-system)))))
(inputs (list ncurses perl))
+
;; When cross-compiling, texinfo will build some of its own binaries with
;; the native compiler. This means ncurses is needed both in both inputs
- ;; and native-inputs.
- (native-inputs (list perl ncurses))
+ ;; and native-inputs. Some of its tests require extra locales such as
+ ;; fr_FR.UTF-8.
+ (native-inputs (list perl ncurses (libc-utf8-locales-for-target)))
(native-search-paths
;; This is the variable used by the standalone Info reader.
@@ -230,7 +233,7 @@ is on expressing the content semantically, avoiding physical markup commands.")
#:disallowed-references ,(assoc-ref (package-inputs texinfo)
"perl")
#:modules ((ice-9 ftw) (srfi srfi-1)
- ,@%gnu-build-system-modules)))
+ ,@%default-gnu-modules)))
(synopsis "Standalone Info documentation reader")
(inputs (modify-inputs (package-inputs texinfo)
(prepend gzip)))))
diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm
index b62efabe6e..e1d85d411c 100644
--- a/gnu/packages/text-editors.scm
+++ b/gnu/packages/text-editors.scm
@@ -115,14 +115,14 @@
(define-public ed
(package
(name "ed")
- (version "1.18")
+ (version "1.20.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/ed/ed-"
version ".tar.lz"))
(sha256
(base32
- "0krb8rsb0cd8mgz0c5pqgnjbbrj7zjl7mf9099r8gi80k2nyza5c"))))
+ "1jmvpbs2mnrmk870js11v7g5qr3z8w0ws7sbdj3zjhd1jyr6795i"))))
(build-system gnu-build-system)
(native-inputs (list lzip))
(arguments
@@ -201,7 +201,7 @@ extensions over the standard utility.")
(sha256
(base32 "1jsvg2lg3xqfgi79x08kx94mc34mh62ivca10vsci6fqsk68jbd0"))
(file-name (git-file-name "vis-test" version))))))
- (inputs (list lua ncurses libtermkey lua-lpeg tre))
+ (inputs (list bash-minimal lua ncurses libtermkey lua-lpeg tre))
(synopsis "Vim-like text editor")
(description
"Vis aims to be a modern, legacy free, simple yet efficient vim-like text
@@ -451,6 +451,7 @@ bindings and many of the powerful features of GNU Emacs.")
(list pkg-config xorg-server-for-tests))
(inputs
(list aspell
+ bash-minimal
boost
clang-11 ;XXX: must be the same version as Mesas LLVM
gtkmm-3
@@ -768,7 +769,8 @@ scripts/input/X11/C/Shell/HTML/Dired): 49KB.
(native-inputs
(list pkg-config qttools-5)) ; for lrelease
(inputs
- (list hunspell
+ (list bash-minimal
+ hunspell
qtbase-5
qtdeclarative-5
qtmultimedia-5
@@ -1236,7 +1238,7 @@ used with the Scintilla editing component.")
))
(arguments
`(#:imported-modules ((guix build glib-or-gtk-build-system)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:modules (((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
(guix build gnu-build-system)
(guix build utils))
diff --git a/gnu/packages/time.scm b/gnu/packages/time.scm
index 2612201c11..aeb90aecee 100644
--- a/gnu/packages/time.scm
+++ b/gnu/packages/time.scm
@@ -22,6 +22,7 @@
;;; Copyright © 2021 Foo Chuan Wei <chuanwei.foo@hotmail.com>
;;; Copyright © 2022 Pradana AUMARS <paumars@courrier.dev>
;;; Copyright © 2023 Sharlatan Hellseher <sharlatanus@gmail.com>
+;;; Copyright © 2024 Zheng Junjie <873216071@qq.com>
;;; Copyright © 2024 Liliana Marie Prikler <liliana.prikler@gmail.com>
;;; Copyright © 2024 Sharlatan Hellseher <sharlatanus@gmail.com>
;;;
@@ -135,13 +136,13 @@ expressions.")
(package
(name "python-tzdata")
;; This package should be kept in sync with tzdata in (gnu packages base).
- (version "2022.1")
+ (version "2023.4")
(source
(origin
(method url-fetch)
(uri (pypi-uri "tzdata" version))
(sha256
- (base32 "1lsjhlwzvzxpp4mpa9gy5b58z3qilf9l365k889pbh1xqs76llwb"))
+ (base32 "1ja8c6ybwhbzr37a0r56g4j555gxzss4k5irfwn54ra7557wjm6x"))
(modules '((guix build utils)))
(snippet #~(delete-file-recursively "src/tzdata/zoneinfo"))))
(build-system pyproject-build-system)
@@ -167,14 +168,14 @@ expressions.")
(package
(name "python-pytz")
;; This package should be kept in sync with tzdata in (gnu packages base).
- (version "2022.1")
+ (version "2023.3.post1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pytz" version))
(sha256
(base32
- "19ya5sh7if819flgmszz585glailhi7rr8frng03n5m8wqphwxhy"))))
+ "0yrxykwhk18x22lp0hjlj98mgnzrzlclz8kxam5vl7jap6zdskvv"))))
(build-system python-build-system)
(home-page "http://pythonhosted.org/pytz")
(synopsis "Python timezone library")
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 2f212e9f90..d4c4bbfee0 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -199,8 +199,7 @@ living in the same process.")
(define-public gnutls
(package
(name "gnutls")
- (version "3.7.7")
- (replacement gnutls/fixed)
+ (version "3.8.3")
(source (origin
(method url-fetch)
;; Note: Releases are no longer on ftp.gnu.org since the
@@ -208,11 +207,10 @@ living in the same process.")
(uri (string-append "mirror://gnupg/gnutls/v"
(version-major+minor version)
"/gnutls-" version ".tar.xz"))
- (patches (search-patches "gnutls-skip-trust-store-test.patch"
- "gnutls-cross.patch"))
+ (patches (search-patches "gnutls-skip-trust-store-test.patch"))
(sha256
(base32
- "01i1gl15k6qwvxmxx0by1mn9nlmcmym18wdpm7dn9awfsp8474dy"))))
+ "0ghpyhhfa3nsraph6dws50jb3dc8g2cfl7dizdnyrm179fawakzp"))))
(build-system gnu-build-system)
(arguments
(list #:tests? (not (or (%current-target-system)
@@ -253,6 +251,16 @@ living in the same process.")
(substitute* "tests/fastopen.sh"
(("^unset RETCODE")
"exit 77\n")))) ;skip
+ #$@(if (target-hurd?)
+ #~((add-after 'unpack 'set-path-max
+ (lambda _
+ ;; Fix reference to undefined 'PATH_MAX'. This
+ ;; is fixed in GnuTLS commit
+ ;; 3b6ec1e01de4e96d36276dfe34ee9e183f285264.
+ (substitute* "lib/pathbuf.h"
+ (("^#define GNUTLS_PATH_MAX PATH_MAX")
+ "#define GNUTLS_PATH_MAX 8192\n")))))
+ #~())
#$@(if (target-ppc32?)
;; https://gitlab.com/gnutls/gnutls/-/issues/1354
;; Extend the test timeout from the default of 20 * 1000
@@ -291,7 +299,7 @@ living in the same process.")
(if (string-prefix? "mips64el" system)
'()
(list p11-kit)))))
- (home-page "https://www.gnu.org/software/gnutls/")
+ (home-page "https://gnutls.org")
(synopsis "Transport layer security library")
(description
"GnuTLS is a secure communications library implementing the SSL, TLS
@@ -299,28 +307,11 @@ and DTLS protocols. It is provided in the form of a C library to support the
protocols, as well as to parse and write X.509, PKCS #12, OpenPGP and other
required structures.")
(license license:lgpl2.1+)
- (properties '((ftp-server . "ftp.gnutls.org")
- (ftp-directory . "/gcrypt/gnutls")))))
+ (properties
+ '((release-monitoring-url . "https://gnutls.org/download.html")))))
(define-deprecated/public-alias gnutls-latest gnutls)
-;; Replacement for gnutls@3.7.7 to address GNUTLS-SA-2020-07-14 /
-;; CVE-2023-0361, GNUTLS-SA-2023-10-23 / CVE-2023-5981, GNUTLS-SA-2024-01-14 /
-;; CVE-2024-0553, and GNUTLS-SA-2024-01-09 / CVE-2024-0567
-(define gnutls/fixed
- (package
- (inherit gnutls)
- (version "3.8.3")
- (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
- "0ghpyhhfa3nsraph6dws50jb3dc8g2cfl7dizdnyrm179fawakzp"))))))
-
(define-public gnutls/dane
;; GnuTLS with build libgnutls-dane, implementing DNS-based
;; Authentication of Named Entities. This is required for GNS functionality
@@ -336,7 +327,7 @@ required structures.")
;; This package supersedes the Guile bindings that came with GnuTLS until
;; version 3.7.8 included.
(name "guile-gnutls")
- (version "3.7.14")
+ (version "4.0.0")
(home-page "https://gitlab.com/gnutls/guile/")
(source (origin
;; url-fetch is used here to avoid a circular dependency with
@@ -344,11 +335,11 @@ required structures.")
(method url-fetch)
(uri (string-append
"https://gitlab.com/gnutls/guile/uploads/"
- "1fdc941351d54cd7affda1bb912b9ca5"
+ "9060bc55069cedb40ab46cea49b439c0"
"/guile-gnutls-" version ".tar.gz"))
(sha256
(base32
- "0ldnxq5qxzy92jd8w5c717bgx4038x9qmi43bzl6kmlkzpagqayy"))))
+ "0fdjmy9vfjwk2v616nan1zz6iy9i086vrh5mdcsfqxi00ckbjk2v"))))
(build-system gnu-build-system)
(arguments
(list
@@ -361,7 +352,11 @@ required structures.")
(string-append "--with-guile-site-ccache-dir="
"$(libdir)/guile/$(GUILE_EFFECTIVE_VERSION)/site-ccache")
(string-append "--with-guile-extension-dir="
- "$(libdir)/guile/$(GUILE_EFFECTIVE_VERSION)/extensions"))))
+ "$(libdir)/guile/$(GUILE_EFFECTIVE_VERSION)/extensions"))
+
+ ;; The 'gnutls' package currently lacks support for SRP, making this
+ ;; test fail.
+ #:make-flags #~'("XFAIL_TESTS=tests/srp-base64.scm")))
(native-inputs
(list libtool
pkg-config
@@ -444,8 +439,7 @@ OpenSSL for TARGET."
(define-public openssl-1.1
(package
(name "openssl")
- (version "1.1.1q")
- (replacement openssl/fixed)
+ (version "1.1.1u")
(source (origin
(method url-fetch)
(uri (list (string-append "https://www.openssl.org/source/openssl-"
@@ -458,7 +452,7 @@ OpenSSL for TARGET."
(patches (search-patches "openssl-1.1-c-rehash-in.patch"))
(sha256
(base32
- "1jhhzp4gh6ymidxm1ckjk948l583awp0w3y2nvqdz7022kk9r4yp"))))
+ "1ipbcdlqyxbj5lagasrq2p6gn0036wq6hqp7gdnd1v1ya95xiy72"))))
(build-system gnu-build-system)
(outputs '("out"
"doc" ;6.8 MiB of man3 pages and full HTML documentation
@@ -568,25 +562,6 @@ OpenSSL for TARGET."
(license license:openssl)
(home-page "https://www.openssl.org/")))
-(define openssl/fixed
- (package
- (inherit openssl-1.1)
- (name "openssl")
- (version "1.1.1u")
- (source (origin
- (method url-fetch)
- (uri (list (string-append "https://www.openssl.org/source/openssl-"
- version ".tar.gz")
- (string-append "ftp://ftp.openssl.org/source/"
- "openssl-" version ".tar.gz")
- (string-append "ftp://ftp.openssl.org/source/old/"
- (string-trim-right version char-set:letter)
- "/openssl-" version ".tar.gz")))
- (patches (search-patches "openssl-1.1-c-rehash-in.patch"))
- (sha256
- (base32
- "1ipbcdlqyxbj5lagasrq2p6gn0036wq6hqp7gdnd1v1ya95xiy72"))))))
-
(define-public openssl-3.0
(package
(inherit openssl-1.1)
diff --git a/gnu/packages/tor-browsers.scm b/gnu/packages/tor-browsers.scm
index f25a5c9269..da5a3f468e 100644
--- a/gnu/packages/tor-browsers.scm
+++ b/gnu/packages/tor-browsers.scm
@@ -398,7 +398,7 @@ Browser.")
(rnrs io ports)
(guix elf)
(guix build gremlin)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'apply-guix-specific-patches
diff --git a/gnu/packages/tryton.scm b/gnu/packages/tryton.scm
index f5d193cc6f..7f62e2d339 100644
--- a/gnu/packages/tryton.scm
+++ b/gnu/packages/tryton.scm
@@ -23,6 +23,7 @@
(define-module (gnu packages tryton)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages check)
#:use-module (gnu packages databases)
#:use-module (gnu packages finance)
@@ -123,11 +124,11 @@ and security.")
(let ((out (assoc-ref outputs "out"))
(gi-typelib-path (getenv "GI_TYPELIB_PATH")))
(wrap-program (string-append out "/bin/tryton")
- `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
- #t)))))
+ `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))))))
(native-inputs
- `(("glib-compile-schemas" ,glib "bin")
- ("gobject-introspection" ,gobject-introspection)))
+ (list `(,glib "bin")
+ gobject-introspection))
+ (inputs (list bash-minimal)) ;for wrap-program
(propagated-inputs
(list (librsvg-for-system)
gsettings-desktop-schemas
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 0c7c496c82..0487588935 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -28,7 +28,7 @@
;;; Copyright © 2020 Roel Janssen <roel@gnu.org>
;;; Copyright © 2020, 2021 Brice Waegeneire <brice@waegenei.re>
;;; Copyright © 2020 John D. Boy <jboy@bius.moe>
-;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2023, 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2020, 2021, 2022, 2023 Vinicius Monego <monego@posteo.net>
;;; Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org>
;;; Copyright © 2020, 2021, 2022 Michael Rohleder <mike@rohleder.de>
@@ -48,7 +48,9 @@
;;; Copyright © 2022 Dhruvin Gandhi <contact@dhruvin.dev>
;;; Copyright © 2015, 2022 David Thompson <davet@gnu.org>
;;; Copyright © 2023 Nicolas Graves <ngraves@ngraves.fr>
+;;; Copyright © 2023 Bruno Victal <mirai@makinata.eu>
;;; Copyright © 2023 Kjartan Oli Agustsson <kjartanoli@disroot.org>
+;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
;;; Copyright © 2023 Steve George <steve@futurile.net>
;;; Copyright © 2023 Josselin Poiret <dev@jpoiret.xyz>
;;; Copyright © 2024 Hilton Chain <hako@ultrarare.space>
@@ -235,365 +237,247 @@ Python 3.3 and later, rather than on Python 2.")
(deprecated-package "bazaar" breezy))
(define git-cross-configure-flags
- '("ac_cv_fread_reads_directories=yes"
- "ac_cv_snprintf_returns_bogus=no"
- "ac_cv_iconv_omits_bom=no"))
+ #~(list "ac_cv_fread_reads_directories=yes"
+ "ac_cv_snprintf_returns_bogus=no"
+ "ac_cv_iconv_omits_bom=no"))
-(define-public git
+;; The size of the closure of 'git-minimal' is two thirds that of 'git'.
+;; Its test suite runs slightly faster and most importantly it doesn't
+;; depend on packages that are expensive to build such as Subversion.
+(define-public git-minimal
(package
- (name "git")
- (version "2.41.0")
- (source (origin
- (method url-fetch)
- (uri (string-append "mirror://kernel.org/software/scm/git/git-"
- version ".tar.xz"))
- (sha256
- (base32
- "0h40arw08xbpi2cbf7pvc947v963rjxz3inb2ar81zjc8byvlj77"))))
- (build-system gnu-build-system)
- (native-inputs
- `(("native-perl" ,perl)
- ;; Add bash-minimal explicitly to ensure it comes before bash-for-tests,
- ;; see <https://bugs.gnu.org/39513>.
- ("bash" ,bash-minimal)
- ("bash-for-tests" ,bash)
- ("gettext" ,gettext-minimal)
- ;; To build the man pages from the git sources, we would need a dependency
- ;; on a full XML tool chain, and building it actually takes ages. So we
- ;; use this lazy approach and use released tarball.
- ("git-manpages"
- ,(origin
- (method url-fetch)
- (uri (string-append
- "mirror://kernel.org/software/scm/git/git-manpages-"
- version ".tar.xz"))
- (sha256
- (base32
- "0xsqakgy0s60zpa13ilj6zj420kdh8pf4v3nrp1nziwj8ja4qymw"))))
- ;; For subtree documentation.
- ("asciidoc" ,asciidoc)
- ("docbook2x" ,docbook2x)
- ("docbook-xsl" ,docbook-xsl)
- ("libxslt" ,libxslt)
- ("pkg-config" ,pkg-config)
- ("texinfo" ,texinfo)
- ("xmlto" ,xmlto)))
- (inputs
- `(("curl" ,curl)
- ("expat" ,expat)
- ("openssl" ,openssl)
- ("perl" ,perl)
- ("python" ,python) ; for git-p4
- ("zlib" ,zlib)
-
- ;; For PCRE support in git grep (USE_LIBPCRE2).
- ("pcre" ,pcre2)
-
- ;; For 'gitweb.cgi'.
- ("perl-cgi" ,perl-cgi)
-
- ;; For 'git-svn'.
- ("subversion" ,subversion)
- ("perl-term-readkey" ,perl-term-readkey)
-
- ;; For 'git-send-email'.
- ("perl-authen-sasl" ,perl-authen-sasl)
- ("perl-net-smtp-ssl" ,perl-net-smtp-ssl)
- ("perl-io-socket-ssl" ,perl-io-socket-ssl)
-
- ;; For 'git gui', 'gitk', and 'git citool'.
- ("tcl" ,tcl)
- ("tk" ,tk)
-
- ;; For 'git-credential-libsecret'
- ("glib" ,glib)
- ("libsecret" ,libsecret)))
- (outputs '("out" ; the core
- "send-email" ; for git-send-email
- "svn" ; git-svn
- "credential-netrc" ; git-credential-netrc
- "credential-libsecret" ; git-credential-libsecret
- "subtree" ; git-subtree
- "gui")) ; gitk, git gui
+ (name "git-minimal")
+ (version "2.41.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://kernel.org/software/scm/git/git-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "0h40arw08xbpi2cbf7pvc947v963rjxz3inb2ar81zjc8byvlj77"))))
+ (build-system gnu-build-system)
(arguments
- `(#:make-flags `("V=1" ;more verbose compilation
-
- ,(string-append "SHELL_PATH="
- (assoc-ref %build-inputs "bash")
- "/bin/sh")
-
- ;; Tests require a bash with completion support.
- ,(string-append "TEST_SHELL_PATH="
- (assoc-ref %build-inputs "bash-for-tests")
- "/bin/bash")
-
- "USE_LIBPCRE2=yes"
-
- ;; By default 'make install' creates hard links for
- ;; things in 'libexec/git-core', which leads to huge
- ;; nars; see <https://bugs.gnu.org/21949>.
- "NO_INSTALL_HARDLINKS=indeed")
-
- ;; Make sure the full bash does not end up in the final closure.
- #:disallowed-references (,bash)
-
- #:test-target "test"
-
- ;; The explicit --with-tcltk forces the build system to hardcode the
- ;; absolute file name to 'wish'.
- #:configure-flags (list (string-append "--with-tcltk="
- (assoc-ref %build-inputs "tk")
- "/bin/wish8.6") ; XXX
- ,@(if (%current-target-system)
- git-cross-configure-flags
- '()))
-
- #:modules ((srfi srfi-1)
+ (list
+ #:modules `((srfi srfi-1)
(srfi srfi-26)
+ (ice-9 format)
+ (ice-9 textual-ports)
((guix build gnu-build-system) #:prefix gnu:)
- ,@%gnu-build-system-modules)
- #:phases
- (modify-phases %standard-phases
- ,@(if (%current-target-system)
- ;; The git build system assumes build == host
- `((add-after 'unpack 'use-host-uname_S
- (lambda _
- (substitute* "config.mak.uname"
- (("uname_S := .*" all)
- (if (equal? ,(%current-target-system) "i586-pc-gnu")
- "uname_S := GNU\n"
- all))))))
- ;; We do not have bash-for-tests when cross-compiling.
- `((add-after 'unpack 'modify-PATH
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((path (string-split (getenv "PATH") #\:))
- (bash-full (assoc-ref inputs "bash-for-tests")))
- ;; Drop the test bash from PATH so that (which "sh") and
- ;; similar does the right thing.
- (setenv "PATH" (string-join
- (remove (cut string-prefix? bash-full <>) path)
- ":")))))))
- ;; Add cross curl-config script to PATH when cross-compiling.
- ,@(if (%current-target-system)
- '((add-before 'configure 'add-cross-curl-config
- (lambda* (#:key inputs #:allow-other-keys)
- (setenv "PATH"
- (string-append (assoc-ref inputs "curl") "/bin:"
- (getenv "PATH"))))))
- '())
- (add-after 'configure 'patch-makefiles
- (lambda _
- (substitute* "Makefile"
- (("/usr/bin/perl") (which "perl"))
- (("/usr/bin/python") (which "python3")))))
- (add-after 'configure 'add-PM.stamp
- (lambda _
- ;; Add the "PM.stamp" to avoid "no rule to make target".
- (call-with-output-file "perl/PM.stamp" (const #t))))
- (add-after 'build 'build-subtree
- (lambda* (#:key inputs #:allow-other-keys)
- (with-directory-excursion "contrib/subtree"
- (substitute* "Makefile"
- ;; Apparently `xmlto' does not bother to looks up the stylesheets
- ;; specified in the XML, unlike the above substitution. Instead it
- ;; uses a hard-coded URL. Work around it here, but if this is
- ;; common perhaps we should hardcode this path in xmlto itself.
- (("\\$\\(XMLTO\\) -m \\$\\(MANPAGE_XSL\\)")
- (string-append "$(XMLTO) -x "
- (string-append (assoc-ref inputs "docbook-xsl")
- "/xml/xsl/docbook-xsl-"
- ,(package-version docbook-xsl))
- "/manpages/docbook.xsl -m $(MANPAGE_XSL)")))
- (invoke "make")
- (invoke "make" "install")
- (invoke "make" "install-doc")
- (substitute* "git-subtree"
- (("/bin/sh") (which "sh"))))))
- (add-before 'check 'patch-tests
- (lambda _
- (let ((store-directory (%store-directory)))
- ;; These files contain some funny bytes that Guile is unable
- ;; to decode for shebang patching. Just delete them.
- (for-each delete-file '("t/t4201-shortlog.sh"
- "t/t7813-grep-icase-iso.sh"))
- ;; Many tests contain inline shell scripts (hooks etc).
- (substitute* (find-files "t" "\\.sh$")
- (("#!/bin/sh") (string-append "#!" (which "sh"))))
- ;; Un-do shebang patching here to prevent checksum mismatch.
- (substitute* '("t/t4034/perl/pre" "t/t4034/perl/post")
- (("^#!.*/bin/perl") "#!/usr/bin/perl"))
- (substitute* "t/t5003-archive-zip.sh"
- (("cp /bin/sh") (string-append "cp " (which "sh"))))
- (substitute* "t/t6030-bisect-porcelain.sh"
- (("\"/bin/sh\"") (string-append "\"" (which "sh") "\"")))
- ;; FIXME: This test runs `git commit` with a bogus EDITOR
- ;; and empty commit message, but does not fail the way it's
- ;; expected to. The test passes when invoked interactively.
- (substitute* "t/t7508-status.sh"
- (("\tcommit_template_commented") "\ttrue"))
- ;; More checksum mismatches due to odd shebangs.
- (substitute* "t/t9100-git-svn-basic.sh"
- (((string-append "\"#!" store-directory ".*/bin/sh")) "\"#!/bin/sh") )
- (substitute* "t/t9300-fast-import.sh"
- (((string-append "\t#!" store-directory ".*/bin/sh")) "\t#!/bin/sh")
- (((string-append "'#!" store-directory ".*/bin/sh")) "'#!/bin/sh"))
- ;; FIXME: Some hooks fail with "basename: command not found".
- ;; See 't/trash directory.t9164.../svn-hook.log'.
- (delete-file "t/t9164-git-svn-dcommit-concurrent.sh")
-
- ;; XXX: These tests fail intermittently for unknown reasons:
- ;; <https://bugs.gnu.org/29546>.
- (for-each delete-file
- '("t/t9128-git-svn-cmd-branch.sh"
- "t/t9167-git-svn-cmd-branch-subproject.sh"
- "t/t9141-git-svn-multiple-branches.sh")))))
- (add-after 'install 'install-info-manual
- (lambda* (#:key parallel-build? #:allow-other-keys)
- (define job-count (if parallel-build?
- (number->string (parallel-job-count))
- "1"))
- (invoke "make" "-C" "Documentation" "install-info"
- "-j" job-count
- ;; The Makefile refer to 'docbook2x-texi', but our binary
- ;; is named 'docbook2texi'.
- "DOCBOOK2X_TEXI=docbook2texi" "PERL_PATH=perl")))
- (add-after 'install 'install-shell-completion
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (completions (string-append out "/etc/bash_completion.d")))
- ;; TODO: Install the tcsh and zsh completions in the right place.
- (mkdir-p completions)
- (copy-file "contrib/completion/git-completion.bash"
- (string-append completions "/git")))))
- (add-after 'install 'install-credential-netrc
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((netrc (assoc-ref outputs "credential-netrc")))
- (install-file "contrib/credential/netrc/git-credential-netrc.perl"
- (string-append netrc "/bin"))
- (rename-file (string-append netrc "/bin/git-credential-netrc.perl")
- (string-append netrc "/bin/git-credential-netrc"))
- ;; Previously, Git.pm was automatically found by netrc.
- ;; Perl 5.26 changed how it locates modules so that @INC no
- ;; longer includes the current working directory (the Perl
- ;; community calls this "dotless @INC").
- (wrap-program (string-append netrc "/bin/git-credential-netrc")
- `("PERL5LIB" ":" prefix
- (,(string-append (assoc-ref outputs "out") "/share/perl5")))))))
- (add-after 'install 'install-credential-libsecret
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((libsecret (assoc-ref outputs "credential-libsecret")))
- (with-directory-excursion "contrib/credential/libsecret"
- ((assoc-ref gnu:%standard-phases 'build))
- (install-file "git-credential-libsecret"
- (string-append libsecret "/bin"))))))
- (add-after 'install 'install-subtree
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((subtree (assoc-ref outputs "subtree")))
- (install-file "contrib/subtree/git-subtree"
- (string-append subtree "/bin"))
- (install-file "contrib/subtree/git-subtree.1"
- (string-append subtree "/share/man/man1")))))
- (add-after 'install 'restore-sample-hooks-shebang
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (dir (string-append out "/share/git-core/templates/hooks")))
- (for-each (lambda (file)
- (format #t "restoring shebang on `~a'~%" file)
- (substitute* file
- (("^#!.*/bin/sh") "#!/bin/sh")))
- (find-files dir ".*")))))
- (add-after 'install 'split
- (lambda* (#:key inputs outputs #:allow-other-keys)
- ;; Split the binaries to the various outputs.
- (let* ((out (assoc-ref outputs "out"))
- (se (assoc-ref outputs "send-email"))
- (svn (assoc-ref outputs "svn"))
- (gui (assoc-ref outputs "gui"))
- (gitk (string-append out "/bin/gitk"))
- (gitk* (string-append gui "/bin/gitk"))
- (git-gui (string-append out "/libexec/git-core/git-gui"))
- (git-gui* (string-append gui "/libexec/git-core/git-gui"))
- (git-cit (string-append out "/libexec/git-core/git-citool"))
- (git-cit* (string-append gui "/libexec/git-core/git-citool"))
- (git-se (string-append out "/libexec/git-core/git-send-email"))
- (git-se* (string-append se "/libexec/git-core/git-send-email"))
- (git-svn (string-append out "/libexec/git-core/git-svn"))
- (git-svn* (string-append svn "/libexec/git-core/git-svn"))
- (git-sm (string-append out
- "/libexec/git-core/git-submodule")))
- (mkdir-p (string-append gui "/bin"))
- (mkdir-p (string-append gui "/libexec/git-core"))
- (mkdir-p (string-append se "/libexec/git-core"))
- (mkdir-p (string-append svn "/libexec/git-core"))
-
- (for-each (lambda (old new)
- (copy-file old new)
- (delete-file old)
- (chmod new #o555))
- (list gitk git-gui git-cit git-se git-svn)
- (list gitk* git-gui* git-cit* git-se* git-svn*))
-
- ;; Tell 'git-svn' where Subversion and perl-term-readkey are.
- (wrap-program git-svn*
- `("PATH" ":" prefix
- (,(string-append (assoc-ref inputs "subversion")
- "/bin")))
- `("PERL5LIB" ":" prefix
- ,(map (lambda (i) (string-append (assoc-ref inputs i)
- "/lib/perl5/site_perl"))
- '("subversion" "perl-term-readkey")))
-
- ;; XXX: The .so for SVN/Core.pm lacks a RUNPATH, so
- ;; help it find 'libsvn_client-1.so'.
- `("LD_LIBRARY_PATH" ":" prefix
- (,(string-append (assoc-ref inputs "subversion")
- "/lib"))))
-
- ;; Tell 'git-send-email' where perl modules are.
- (wrap-program git-se*
- `("PERL5LIB" ":" prefix
- ,(map (lambda (o) (string-append o "/lib/perl5/site_perl"))
- (list
- ,@(transitive-input-references
- 'inputs
- (map (lambda (l)
- (assoc l (package-inputs this-package)))
- '("perl-authen-sasl"
- "perl-net-smtp-ssl"
- "perl-io-socket-ssl")))))))
-
- ;; Tell 'gitweb.cgi' where perl modules are.
- (wrap-program (string-append out "/share/gitweb/gitweb.cgi")
- `("PERL5LIB" ":" prefix
- ,(map (lambda (o) (string-append o "/lib/perl5/site_perl"))
- (list
- ,@(transitive-input-references
- 'inputs
- (map (lambda (l)
- (assoc l (package-inputs this-package)))
- '("perl-cgi")))))))
-
- ;; Tell 'git-submodule' where Perl is.
- (wrap-program git-sm
- `("PATH" ":" prefix
- (,(string-append (assoc-ref inputs "perl")
- "/bin")))))))
- (add-after 'split 'install-man-pages
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (man (string-append out "/share/man"))
- (manpages (assoc-ref inputs "git-manpages")))
- (mkdir-p man)
- (with-directory-excursion man
- (invoke "tar" "xvf" manpages)))))
- ,@(if (system-hurd?)
- '((add-after 'unpack 'delete-tests/hurd
- (lambda _
- (delete-file "t/t0052-simple-ipc.sh")
- (delete-file "t/t5562-http-backend-content-length.sh")
- (delete-file "t/t9902-completion.sh"))))
- '()))))
-
+ ,@%default-gnu-modules)
+ ;; Make sure the full bash does not end up in the final closure.
+ #:disallowed-references (list bash perl)
+ #:test-target "test"
+ #:configure-flags
+ (if (%current-target-system)
+ git-cross-configure-flags
+ #~(list))
+ #:make-flags
+ #~(list "V=1" ;more verbose compilation
+ (string-append "SHELL_PATH="
+ #+(this-package-native-input "bash-minimal")
+ "/bin/sh")
+
+ ;; Tests require a bash with completion support.
+ (string-append "TEST_SHELL_PATH="
+ #+(this-package-native-input "bash")
+ "/bin/bash")
+
+ ;; By default 'make install' creates hard links for
+ ;; things in 'libexec/git-core', which leads to huge
+ ;; nars; see <https://bugs.gnu.org/21949>.
+ "NO_INSTALL_HARDLINKS=indeed")
+ #:phases
+ #~(modify-phases %standard-phases
+ #$@(if (%current-target-system)
+ ;; The git build system assumes build == host
+ #~((add-after 'unpack 'use-host-uname_S
+ (lambda _
+ (substitute* "config.mak.uname"
+ (("uname_S := .*" all)
+ (if (equal? #$(%current-target-system) "i586-pc-gnu")
+ "uname_S := GNU\n"
+ all))))))
+ ;; We do not have a full bash when cross-compiling.
+ #~((add-after 'unpack 'modify-PATH
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((path (string-split (getenv "PATH") #\:))
+ (bash-full #$(this-package-native-input "bash")))
+ ;; Drop the test bash from PATH so that (which "sh")
+ ;; and similar does the right thing.
+ (setenv "PATH"
+ (string-join
+ (remove (cut string-prefix? bash-full <>)
+ path)
+ ":")))))))
+ #$@(if (system-hurd?)
+ #~((add-after 'unpack 'delete-tests/hurd
+ (lambda _
+ (delete-file "t/t0052-simple-ipc.sh")
+ (delete-file "t/t5562-http-backend-content-length.sh")
+ (delete-file "t/t9902-completion.sh"))))
+ #~())
+ ;; Add cross curl-config script to PATH when cross-compiling.
+ #$@(if (%current-target-system)
+ #~((add-before 'configure 'add-cross-curl-config
+ (lambda* (#:key inputs #:allow-other-keys)
+ (setenv "PATH"
+ (string-append
+ (dirname (search-input-file
+ inputs "bin/curl-config"))
+ ":" (getenv "PATH"))))))
+ #~())
+ (add-after 'unpack 'patch-commands
+ (lambda* (#:key inputs #:allow-other-keys)
+ (define (prepend-string-to-file text file)
+ "Prepend TEXT to FILE."
+ (let ((content (call-with-input-file file
+ (cut get-string-all <>))))
+ (call-with-output-file file
+ (lambda (port)
+ (display text port)
+ (display content port)))))
+
+ (define PATH-variable-definition
+ (format #f "PATH=~{~a~^:~}${PATH:+:}$PATH~%~%"
+ (map (compose dirname (cut search-input-file inputs <>))
+ '("bin/basename"
+ "bin/sed"))))
+
+ ;; Ensure that coreutils (for basename) and sed are on PATH
+ ;; for any script that sources the 'git-sh-setup.sh' file.
+ (prepend-string-to-file PATH-variable-definition
+ "git-sh-setup.sh")
+
+ ;; Avoid depending on util-linux; it's only used to detect
+ ;; whether the system is MinGW, which we can detect at build
+ ;; time.
+ (substitute* "git-sh-setup.sh"
+ (("\\$\\(uname -s)")
+ (if #$(target-mingw?)
+ "MINGW"
+ "GNU"))) ;matched against '*'
+
+ ;; git-submodule sources 'git-sh-setup.sh', but not before
+ ;; invoking the basename and sed commands... patch them to their
+ ;; absolute location.
+ (substitute* "git-submodule.sh"
+ (("\\$\\(basename")
+ (string-append "$(" (search-input-file inputs "bin/basename")))
+ (("sed -e")
+ (string-append (search-input-file inputs "bin/sed") " -e")))))
+ (add-after 'configure 'patch-makefiles
+ (lambda _
+ (substitute* "Makefile"
+ (("/usr/bin/perl") (which "perl")))))
+ (add-after 'configure 'add-PM.stamp
+ (lambda _
+ ;; Add the "PM.stamp" to avoid "no rule to make target".
+ (call-with-output-file "perl/PM.stamp" (const #t))))
+ (add-before 'check 'patch-tests
+ (lambda _
+ (let ((store-directory (%store-directory)))
+ ;; These files contain some funny bytes that Guile is unable
+ ;; to decode for shebang patching. Just delete them.
+ (for-each delete-file '("t/t4201-shortlog.sh"
+ "t/t7813-grep-icase-iso.sh"))
+ ;; Many tests contain inline shell scripts (hooks etc).
+ (substitute* (find-files "t" "\\.sh$")
+ (("#!/bin/sh") (string-append "#!" (which "sh"))))
+ ;; Un-do shebang patching here to prevent checksum mismatch.
+ (substitute* '("t/t4034/perl/pre" "t/t4034/perl/post")
+ (("^#!.*/bin/perl") "#!/usr/bin/perl"))
+ (substitute* "t/t5003-archive-zip.sh"
+ (("cp /bin/sh") (string-append "cp " (which "sh"))))
+ (substitute* "t/t6030-bisect-porcelain.sh"
+ (("\"/bin/sh\"") (string-append "\"" (which "sh") "\"")))
+ ;; FIXME: This test runs `git commit` with a bogus EDITOR
+ ;; and empty commit message, but does not fail the way it's
+ ;; expected to. The test passes when invoked interactively.
+ (substitute* "t/t7508-status.sh"
+ (("\tcommit_template_commented") "\ttrue"))
+ ;; More checksum mismatches due to odd shebangs.
+ (substitute* "t/t9100-git-svn-basic.sh"
+ (((string-append "\"#!" store-directory ".*/bin/sh"))
+ "\"#!/bin/sh") )
+ (substitute* "t/t9300-fast-import.sh"
+ (((string-append "\t#!" store-directory ".*/bin/sh"))
+ "\t#!/bin/sh")
+ (((string-append "'#!" store-directory ".*/bin/sh"))
+ "'#!/bin/sh"))
+ ;; FIXME: Some hooks fail with "basename: command not found".
+ ;; See 't/trash directory.t9164.../svn-hook.log'.
+ (delete-file "t/t9164-git-svn-dcommit-concurrent.sh")
+
+ ;; XXX: These tests fail intermittently for unknown reasons:
+ ;; <https://bugs.gnu.org/29546>.
+ (for-each delete-file
+ '("t/t9128-git-svn-cmd-branch.sh"
+ "t/t9167-git-svn-cmd-branch-subproject.sh"
+ "t/t9141-git-svn-multiple-branches.sh")))))
+ (add-after 'install 'install-shell-completion
+ (lambda _
+ (let ((bash (string-append #$output "/etc/bash_completion.d"))
+ (zsh (string-append #$output "/share/zsh/site-functions")))
+ ;; TODO: Install the tcsh completions in the right place.
+ (for-each mkdir-p (list bash zsh))
+ (copy-file "contrib/completion/git-completion.bash"
+ (string-append bash "/git"))
+ (copy-file "contrib/completion/git-prompt.sh"
+ (string-append #$output "/bin/git-prompt"))
+ (copy-file "contrib/completion/git-completion.zsh"
+ (string-append zsh "/_git")))))
+ (add-after 'install 'remove-unusable-perl-commands
+ (lambda _
+ (let ((bin (string-append #$output "/bin"))
+ (libexec (string-append #$output "/libexec")))
+ (for-each (lambda (file)
+ (delete-file (string-append libexec
+ "/git-core/" file)))
+ '("git-svn" "git-cvsimport" "git-archimport"
+ "git-cvsserver" "git-request-pull"
+
+ ;; git-add--interactive was removed in Git 2.40 but
+ ;; this phase is inherited by older versions.
+ #$@(if (version>=? (package-version this-package)
+ "2.40.1")
+ #~()
+ #~("git-add--interactive"))
+
+ "git-cvsexportcommit"
+ "git-instaweb" "git-send-email"))
+ (delete-file (string-append bin "/git-cvsserver"))
+
+ ;; These templates typically depend on Perl. Remove them.
+ (delete-file-recursively
+ (string-append #$output "/share/git-core/templates/hooks"))
+
+ ;; Gitweb depends on Perl as well.
+ (delete-file-recursively
+ (string-append #$output "/share/gitweb")))))
+ (add-after 'install 'restore-sample-hooks-shebang
+ (lambda _
+ (let* ((dir (string-append #$output
+ "/share/git-core/templates/hooks")))
+ (for-each (lambda (file)
+ (format #t "restoring shebang on `~a'~%" file)
+ (substitute* file
+ (("^#!.*/bin/sh") "#!/bin/sh")))
+ (find-files dir ".*"))))))))
+ (native-inputs
+ ;; Add bash-minimal explicitly to ensure it comes before bash-for-tests,
+ ;; see <https://bugs.gnu.org/39513>.
+ (list bash-minimal
+ bash
+ gettext-minimal
+ perl))
+ (inputs
+ (list coreutils-minimal
+ curl ;for HTTP(S) access
+ expat ;for 'git push' over HTTP(S)
+ openssl
+ perl
+ sed
+ zlib))
(native-search-paths
;; For HTTPS access, Git needs a single-file certificate bundle, specified
;; with $GIT_SSL_CAINFO.
@@ -606,7 +490,6 @@ Python 3.3 and later, rather than on Python 2.")
(variable "GIT_EXEC_PATH")
(separator #f) ;single entry
(files '("libexec/git-core")))))
-
(synopsis "Distributed version control system")
(description
"Git is a free distributed version control system designed to handle
@@ -628,77 +511,225 @@ everything from small to very large projects with speed and efficiency.")
(license license:gpl2)
(home-page "https://git-scm.com/")))
-(define-public git-minimal
- ;; The size of the closure of 'git-minimal' is two thirds that of 'git'.
- ;; Its test suite runs slightly faster and most importantly it doesn't
- ;; depend on packages that are expensive to build such as Subversion.
- (package
- (inherit git)
- (name "git-minimal")
+(define-public git
+ (package/inherit git-minimal
+ (name "git")
+ (outputs '("out" ;the core
+ "send-email" ;for git-send-email
+ "svn" ;git-svn
+ "credential-netrc" ;git-credential-netrc
+ "credential-libsecret" ;git-credential-libsecret
+ "subtree" ;git-subtree
+ "gui")) ;gitk, git gui
(arguments
- (substitute-keyword-arguments (package-arguments git)
- ((#:phases phases)
+ (substitute-keyword-arguments (package-arguments git-minimal)
+ ((#:disallowed-references disallowed-refs ''())
+ (delete perl disallowed-refs))
+ ((#:make-flags flags #~'())
+ #~(cons "USE_LIBPCRE2=yes" #$flags))
+ ((#:configure-flags flags #~'())
+ ;; The explicit --with-tcltk forces the build system to hardcode the
+ ;; absolute file name to 'wish'.
+ #~(cons (string-append "--with-tcltk="
+ (search-input-file %build-inputs
+ "bin/wish8.6"))
+ #$flags))
+ ((#:phases phases '%standard-phases)
#~(modify-phases #$phases
+ (delete 'remove-unusable-perl-commands)
(replace 'patch-makefiles
(lambda _
(substitute* "Makefile"
- (("/usr/bin/perl") (which "perl")))))
- (delete 'build-subtree)
- (delete 'split)
- (delete 'install-man-pages)
- (delete 'install-info-manual)
- (delete 'install-subtree)
- (delete 'install-credential-netrc)
- (delete 'install-credential-libsecret)
- (add-after 'install 'remove-unusable-perl-commands
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (bin (string-append out "/bin"))
- (libexec (string-append out "/libexec")))
- (for-each (lambda (file)
- (delete-file (string-append libexec
- "/git-core/" file)))
- '("git-svn" "git-cvsimport" "git-archimport"
- "git-cvsserver" "git-request-pull"
-
- ;; git-add--interactive was removed in Git 2.40 but
- ;; this phase is inherited by older versions.
- #$@(if (version>=? (package-version this-package)
- "2.40.1")
- #~()
- #~("git-add--interactive"))
-
- "git-cvsexportcommit"
- "git-instaweb" "git-send-email"))
- (delete-file (string-append bin "/git-cvsserver"))
-
- ;; These templates typically depend on Perl. Remove them.
- (delete-file-recursively
- (string-append out "/share/git-core/templates/hooks"))
-
- ;; Gitweb depends on Perl as well.
- (delete-file-recursively
- (string-append out "/share/gitweb")))))))
- ((#:make-flags flags)
- #~(delete "USE_LIBPCRE2=yes" #$flags))
- ((#:configure-flags flags)
- #~(list #$@(if (%current-target-system)
- git-cross-configure-flags
- '())))
- ((#:disallowed-references lst '())
- `(,perl ,@lst))))
- (outputs '("out"))
+ (("/usr/bin/perl") (which "perl"))
+ (("/usr/bin/python") (which "python3")))))
+ (add-after 'build 'build-subtree
+ (lambda* (#:key native-inputs inputs #:allow-other-keys)
+ (with-directory-excursion "contrib/subtree"
+ (invoke "make")
+ (invoke "make" "install")
+ (invoke "make" "install-doc")
+ (substitute* "git-subtree"
+ (("/bin/sh") (which "sh"))))))
+ (add-after 'install 'install-info-manual
+ (lambda* (#:key parallel-build? #:allow-other-keys)
+ (define job-count (if parallel-build?
+ (number->string (parallel-job-count))
+ "1"))
+ (invoke "make" "-C" "Documentation" "install-info"
+ "-j" job-count
+ ;; The Makefile refer to 'docbook2x-texi', but our
+ ;; binary is named 'docbook2texi'.
+ "DOCBOOK2X_TEXI=docbook2texi" "PERL_PATH=perl")))
+ (add-after 'install 'install-credential-netrc
+ (lambda _
+ (install-file
+ "contrib/credential/netrc/git-credential-netrc.perl"
+ (string-append #$output:credential-netrc "/bin"))
+ (rename-file (string-append #$output:credential-netrc
+ "/bin/git-credential-netrc.perl")
+ (string-append #$output:credential-netrc
+ "/bin/git-credential-netrc"))
+ ;; Previously, Git.pm was automatically found by netrc.
+ ;; Perl 5.26 changed how it locates modules so that @INC no
+ ;; longer includes the current working directory (the Perl
+ ;; community calls this "dotless @INC").
+ (wrap-program (string-append #$output:credential-netrc
+ "/bin/git-credential-netrc")
+ `("PERL5LIB" ":" prefix
+ (,(string-append #$output "/share/perl5"))))))
+ (add-after 'install 'install-credential-libsecret
+ (lambda _
+ (with-directory-excursion "contrib/credential/libsecret"
+ ((assoc-ref gnu:%standard-phases 'build))
+ (install-file "git-credential-libsecret"
+ (string-append #$output:credential-libsecret
+ "/bin")))))
+ (add-after 'install 'install-subtree
+ (lambda _
+ (install-file "contrib/subtree/git-subtree"
+ (string-append #$output:subtree "/bin"))
+ (install-file "contrib/subtree/git-subtree.1"
+ (string-append #$output:subtree
+ "/share/man/man1"))))
+ (add-after 'install 'split
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; Split the binaries to the various outputs.
+ (let* ((out #$output)
+ (se #$output:send-email)
+ (svn #$output:svn)
+ (gui #$output:gui)
+ (gitk (string-append out "/bin/gitk"))
+ (gitk* (string-append gui "/bin/gitk"))
+ (git-gui (string-append
+ out "/libexec/git-core/git-gui"))
+ (git-gui* (string-append
+ gui "/libexec/git-core/git-gui"))
+ (git-cit (string-append
+ out "/libexec/git-core/git-citool"))
+ (git-cit* (string-append
+ gui "/libexec/git-core/git-citool"))
+ (git-se (string-append
+ out "/libexec/git-core/git-send-email"))
+ (git-se* (string-append
+ se "/libexec/git-core/git-send-email"))
+ (git-svn (string-append
+ out "/libexec/git-core/git-svn"))
+ (git-svn* (string-append
+ svn "/libexec/git-core/git-svn"))
+ (git-sm (string-append
+ out "/libexec/git-core/git-submodule")))
+ (mkdir-p (string-append gui "/bin"))
+ (mkdir-p (string-append gui "/libexec/git-core"))
+ (mkdir-p (string-append se "/libexec/git-core"))
+ (mkdir-p (string-append svn "/libexec/git-core"))
+
+ (for-each (lambda (old new)
+ (copy-file old new)
+ (delete-file old)
+ (chmod new #o555))
+ (list gitk git-gui git-cit git-se git-svn)
+ (list gitk* git-gui* git-cit* git-se* git-svn*))
+
+ ;; Tell 'git-svn' where Subversion and perl-term-readkey are.
+
+ ;; FIXME: Old school 'assoc-ref' is used to retrieve
+ ;; subversion here, as #$(this-package-input "subversion")
+ ;; causes a dependency cycle for unknown reasons.
+ (wrap-program git-svn*
+ `("PATH" ":" prefix
+ (,(dirname (search-input-file inputs "bin/perl"))))
+ `("PERL5LIB" ":" prefix
+ ,(search-path-as-list
+ '("lib/perl5/site_perl")
+ (list (assoc-ref inputs "subversion")
+ #$(this-package-input "perl-term-readkey"))))
+
+ ;; XXX: The .so for SVN/Core.pm lacks a RUNPATH, so
+ ;; help it find 'libsvn_client-1.so'.
+ `("LD_LIBRARY_PATH" ":" prefix
+ (,(string-append (assoc-ref inputs "subversion")
+ "/lib"))))
+
+ ;; Tell 'git-send-email' where perl modules are.
+ (wrap-program git-se*
+ `("PERL5LIB" ":" prefix
+ ,(search-path-as-list
+ '("lib/perl5/site_perl")
+ '#$(delete-duplicates
+ (append-map
+ (compose last package-transitive-propagated-inputs)
+ (list (this-package-input "perl-authen-sasl")
+ (this-package-input "perl-net-smtp-ssl")
+ (this-package-input
+ "perl-io-socket-ssl")))))))
+ ;; Tell 'gitweb.cgi' where perl modules are.
+ (wrap-program (string-append out "/share/gitweb/gitweb.cgi")
+ `("PERL5LIB" ":" prefix
+ ,(search-path-as-list
+ '("lib/perl5/site_perl")
+ '#$(delete-duplicates
+ (append-map
+ (compose last package-transitive-propagated-inputs)
+ (list (this-package-input "perl-cgi")))))))
+
+ ;; Tell 'git-submodule' where Perl is.
+ (wrap-program git-sm
+ `("PATH" ":" prefix
+ (,(dirname (search-input-file inputs "bin/perl"))))))))
+ (add-after 'split 'install-man-pages
+ (lambda _
+ (let ((man (string-append #$output "/share/man")))
+ (mkdir-p man)
+ (with-directory-excursion man
+ (invoke
+ "tar" "xvf"
+ #$(origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://kernel.org/software/scm/git/"
+ "git-manpages-" (package-version this-package)
+ ".tar.xz"))
+ (sha256
+ (base32
+ "0xsqakgy0s60zpa13ilj6zj420kdh8pf4v3nrp1nziwj8ja4qymw"))))))))))))
(native-inputs
- `(("bash" ,bash-minimal)
- ("bash-for-tests" ,bash)
- ("native-perl" ,perl)
- ("gettext" ,gettext-minimal)))
+ (modify-inputs (package-native-inputs git-minimal)
+ ;; For subtree documentation.
+ (append asciidoc
+ docbook2x
+ docbook-xml-4.5
+ docbook-xsl
+ libxslt
+ pkg-config
+ texinfo
+ xmlto)))
(inputs
- (list curl ;for HTTP(S) access
- expat ;for 'git push' over HTTP(S)
- openssl
- perl
- zlib))))
+ (modify-inputs (package-inputs git-minimal)
+ (append bash-minimal ;for wrap-program
+ python ;for git-p4
+
+ ;; For PCRE support in git grep (USE_LIBPCRE2).
+ pcre2
+
+ ;; For 'gitweb.cgi'.
+ perl-cgi
+
+ ;; For 'git-svn'.
+ subversion
+ perl-term-readkey
+
+ ;; For 'git-send-email'.
+ perl-authen-sasl
+ perl-net-smtp-ssl
+ perl-io-socket-ssl
+
+ ;; For 'git gui', 'gitk', and 'git citool'.
+ tcl
+ tk
+
+ ;; For 'git-credential-libsecret'
+ glib
+ libsecret)))))
;;; The symbol git-minimal/fixed should be used when git-minimal needs fixes
;;; (security or else) and this deprecation could be removed.
@@ -707,14 +738,14 @@ everything from small to very large projects with speed and efficiency.")
(define-public git-minimal/pinned
;; Version that rarely changes, depended on by Graphene/GTK+.
(package/inherit git-minimal
- (version "2.33.1")
+ (version "2.41.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://kernel.org/software/scm/git/git-"
version ".tar.xz"))
(sha256
(base32
- "0bqz401dyp8wnjj3k5ahrniwk4dalndysqazzwdvv25hqbkacm70"))))))
+ "0h40arw08xbpi2cbf7pvc947v963rjxz3inb2ar81zjc8byvlj77"))))))
(define-public git2cl
(let ((commit "1d74d4c0d933fc69ed5cec838c73502584dead05"))
@@ -757,44 +788,43 @@ logs to GNU ChangeLog format.")
(file-name (git-file-name name version))))
(build-system python-build-system)
(arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'build 'loosen-requirements
- (lambda _
- (substitute* "setup.py"
- ;; Using Guix's python-pygit2 1.1.0 appears to work fine…
- (("pygit2==") "pygit2>="))
- #t))
- (add-before 'check 'prepare-for-tests
- (lambda _
- ;; Find the 'gl' command.
- (rename-file "gl.py" "gl")
- (setenv "PATH" (string-append (getcwd) ":" (getenv "PATH")))
-
- ;; The tests try to run git as if it were already set up.
- (setenv "HOME" (getcwd))
- (invoke "git" "config" "--global" "user.email" "git@example.com")
- (invoke "git" "config" "--global" "user.name" "Guix")))
- (replace 'wrap
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out"))
- (git (assoc-ref inputs "git")))
- (wrap-program (string-append out "/bin/gl")
- `("PATH" ":" prefix (,(string-append git "/bin")))
- `("GUIX_PYTHONPATH" ":" =
- (,(string-append out "/lib/python"
- ,(version-major+minor
- (package-version python))
- "/site-packages:")
- ,(getenv "GUIX_PYTHONPATH"))))
- #t))))))
- (native-inputs
- `(("git-for-tests" ,git-minimal)))
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-before 'build 'loosen-requirements
+ (lambda _
+ (substitute* "setup.py"
+ ;; Using Guix's python-pygit2 1.1.0 appears to work fine…
+ (("pygit2==") "pygit2>="))))
+ (add-before 'check 'prepare-for-tests
+ (lambda _
+ ;; Find the 'gl' command.
+ (rename-file "gl.py" "gl")
+ (setenv "PATH" (string-append (getcwd) ":" (getenv "PATH")))
+
+ ;; The tests try to run git as if it were already set up.
+ (setenv "HOME" (getcwd))
+ (invoke "git" "config" "--global" "user.email" "git@example.com")
+ (invoke "git" "config" "--global" "user.name" "Guix")))
+ (replace 'wrap
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((out #$output)
+ (git (search-input-file inputs "bin/git")))
+ (wrap-program (string-append out "/bin/gl")
+ `("PATH" ":" prefix (,(dirname git)))
+ `("GUIX_PYTHONPATH" ":" =
+ (,(string-append out "/lib/python"
+ #$(version-major+minor
+ (package-version python))
+ "/site-packages:")
+ ,(getenv "GUIX_PYTHONPATH"))))))))))
+ (native-inputs (list git-minimal))
(inputs
- `(("git" ,git-minimal)
- ("python-clint" ,python-clint)
- ("python-pygit2" ,python-pygit2)
- ("python-sh" ,python-sh)))
+ (list bash-minimal
+ git-minimal
+ python-clint
+ python-pygit2
+ python-sh))
(home-page "https://gitless.com")
(synopsis "Simple version control system built on top of Git")
(description
@@ -1048,34 +1078,20 @@ write native speed custom Git applications in any language with bindings.")
(inputs
(list git openssl))
(native-inputs
- (list docbook-xsl libxslt))
+ (list docbook-xml-4.2 docbook-xsl libxslt))
(arguments
- `(#:tests? #f ; No tests.
- #:phases
- (modify-phases %standard-phases
- (delete 'configure)
- (add-after 'unpack 'patch-makefile
- (lambda* (#:key inputs #:allow-other-keys)
- (substitute* "Makefile"
- (("http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl")
- (string-append (assoc-ref inputs "docbook-xsl")
- "/xml/xsl/docbook-xsl-"
- ,(package-version docbook-xsl)
- "/manpages/docbook.xsl")))
- #t))
- (replace 'build
- (lambda _
- ;; Add flag to work around OpenSSL 3 incompatibility.
- ;; See <https://github.com/AGWA/git-crypt/issues/232>.
- (setenv "CXXFLAGS" "-DOPENSSL_API_COMPAT=0x30000000L")
-
- (invoke "make" "ENABLE_MAN=yes")))
- (replace 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (invoke "make" "install"
- "ENABLE_MAN=yes"
- (string-append "PREFIX=" out))))))))
+ (list
+ #:tests? #f ; No tests.
+ #:make-flags
+ #~(list
+ "ENABLE_MAN=yes"
+ ;; Add flag to work around OpenSSL 3 incompatibility.
+ ;; See <https://github.com/AGWA/git-crypt/issues/232>.
+ "CXXFLAGS+=-DOPENSSL_API_COMPAT=0x30000000L"
+ (string-append "PREFIX=" #$output))
+ #:phases
+ #~(modify-phases %standard-phases
+ (delete 'configure))))
(home-page "https://www.agwa.name/projects/git-crypt/")
(synopsis "Transparent encryption of files in a git repository")
(description "git-crypt enables transparent encryption and decryption of
@@ -1956,7 +1972,7 @@ control to Git repositories.")
(build-system gnu-build-system)
(arguments
`(#:imported-modules ((guix build guile-build-system)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:make-flags (list "GUILE_AUTO_COMPILE=0")
#:phases
(modify-phases %standard-phases
@@ -1998,7 +2014,8 @@ control to Git repositories.")
(native-inputs
(list autoconf automake guile-3.0 pkg-config))
(inputs
- (list guile-3.0
+ (list bash-minimal ;for wrap-program
+ guile-3.0
guile-commonmark
guile-fibers
guile-gcrypt
@@ -2896,10 +2913,10 @@ prepare atomic commits.")
"/lib/perl5/site_perl"))
'("perl-encode-locale" "perl-http-date"
"perl-http-message" "perl-html-parser" "perl-libwww"
- "perl-uri" "perl-try-tiny"))))
- #t))))))
+ "perl-uri" "perl-try-tiny"))))))))))
(inputs
- (list perl
+ (list bash-minimal ;for wrap-program
+ perl
perl-encode-locale
perl-html-parser
perl-http-date
@@ -3207,32 +3224,32 @@ specific files and directories.")
"0r9i399kkagpwj08nwf1f7c6lr50xjzzgmzwyjjy6ppgcc53a809"))))
(build-system gnu-build-system)
(arguments
- '(#:make-flags
- (list (string-append "prefix=" (assoc-ref %outputs "out")))
- #:phases
- (modify-phases %standard-phases
- (delete 'configure) ; no 'configure' script
- (add-after 'install 'wrap-program
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (prog (string-append out "/bin/src"))
- (rcs (assoc-ref inputs "rcs")))
- (wrap-program prog
- `("PATH" ":" prefix (,(string-append rcs "/bin"))))
- #t)))
- (replace 'check
- (lambda _
- (setenv "HOME" (getenv "TMPDIR"))
- (invoke "git" "config" "--global" "user.name" "guix")
- (invoke "git" "config" "--global" "user.email" "guix")
- (invoke "./srctest"))))))
+ (list
+ #:make-flags
+ #~(list (string-append "prefix=" #$output))
+ #:phases
+ #~(modify-phases %standard-phases
+ (delete 'configure) ; no 'configure' script
+ (add-after 'install 'wrap-program
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let* ((prog (string-append #$output "/bin/src"))
+ (rcs (search-input-file inputs "bin/rcs")))
+ (wrap-program prog
+ `("PATH" ":" prefix (,(dirname rcs)))))))
+ (replace 'check
+ (lambda _
+ (setenv "HOME" (getenv "TMPDIR"))
+ (invoke "git" "config" "--global" "user.name" "guix")
+ (invoke "git" "config" "--global" "user.email" "guix")
+ (invoke "./srctest"))))))
(native-inputs
;; For testing.
(list git perl))
(inputs
- `(("cssc" ,cssc)
- ("python" ,python-wrapper)
- ("rcs" ,rcs)))
+ (list bash-minimal
+ cssc
+ python-wrapper
+ rcs))
(synopsis "Simple revision control")
(home-page "http://www.catb.org/~esr/src/")
(description
@@ -3269,23 +3286,19 @@ directory full of HOWTOs.")
(lambda* (#:key outputs #:allow-other-keys)
(install-file "bin/git-when-merged"
(string-append (assoc-ref outputs "out")
- "/bin"))
- #t))
+ "/bin"))))
(add-before 'install 'patch-git
(lambda* (#:key inputs #:allow-other-keys)
(let ((git (search-input-file inputs "/bin/git")))
(substitute* "bin/git-when-merged"
- (("'git'") (string-append "'" git "'")))
- #t)))
+ (("'git'") (string-append "'" git "'"))))))
(add-after 'install 'wrap-script
(lambda* (#:key outputs #:allow-other-keys)
(wrap-program (string-append (assoc-ref outputs "out")
"/bin/git-when-merged")
- `("GUIX_PYTHONPATH" ":" prefix (,(getenv "GUIX_PYTHONPATH"))))
- #t)))))
- (inputs
- `(("git" ,git)
- ("python" ,python-wrapper)))
+ `("GUIX_PYTHONPATH" ":" prefix
+ (,(getenv "GUIX_PYTHONPATH")))))))))
+ (inputs (list bash-minimal git python-wrapper))
(home-page "https://github.com/mhagger/git-when-merged")
(synopsis "Determine when a commit was merged into a Git branch")
(description "This Git extension defines a subcommand,
@@ -3319,17 +3332,14 @@ how information about the merge is displayed.")
(lambda* (#:key inputs #:allow-other-keys)
(let ((git (search-input-file inputs "/bin/git")))
(substitute* "git-imerge"
- (("'git'") (string-append "'" git "'")))
- #t)))
+ (("'git'") (string-append "'" git "'"))))))
(add-after 'install 'wrap-script
(lambda* (#:key outputs #:allow-other-keys)
(wrap-program (string-append (assoc-ref outputs "out")
"/bin/git-imerge")
- `("GUIX_PYTHONPATH" ":" prefix (,(getenv "GUIX_PYTHONPATH"))))
- #t)))))
- (inputs
- `(("git" ,git)
- ("python" ,python-wrapper)))
+ `("GUIX_PYTHONPATH" ":" prefix
+ (,(getenv "GUIX_PYTHONPATH")))))))))
+ (inputs (list bash-minimal git python-wrapper))
(home-page "https://github.com/mhagger/git-imerge")
(synopsis "Incremental merge for Git")
(description "This Git extension defines a subcommand, @code{imerge},
@@ -3551,7 +3561,7 @@ standalone agent instead of a server.")
(base32 "11n46bngvca5wbdbfcxzjhjbfdbad7sgf7h9gf956cb1q8swsdm0"))))
(build-system copy-build-system)
(inputs
- (list xdg-utils))
+ (list bash-minimal xdg-utils))
(arguments
`(#:phases
(modify-phases %standard-phases
@@ -3641,7 +3651,7 @@ for historians.")
(base32
"11vkq5njjlvjipic7db44ga875n61drszw1qrdzwxmmfmnz425zz"))))
(inputs
- (list perl ncurses))
+ (list bash-minimal perl ncurses))
(build-system copy-build-system)
(arguments
'(#:phases
@@ -3872,7 +3882,7 @@ using the remote repository URL's host and path.")
"tkrev")))))
#:tests? #f))
(inputs
- (list tk))
+ (list bash-minimal tk))
(home-page "https://tkcvs.sourceforge.io")
(synopsis "Graphical interface to CVS, Subversion, Git, and RCS")
(description
@@ -3939,7 +3949,7 @@ TkDiff is included for browsing and merging your changes.")
(list
#:tests? #f ;No tests.
#:imported-modules
- `(,@%gnu-build-system-modules
+ `(,@%default-gnu-imported-modules
(guix build python-build-system))
#:modules
'((guix build gnu-build-system)
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 00072055d3..e5ec161ba4 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -1257,7 +1257,8 @@ H.264 (MPEG-4 AVC) video streams.")
(native-inputs
(list perl-module-build perl-test-pod perl-test-simple))
(inputs
- (list perl-data-dump
+ (list bash-minimal
+ perl-data-dump
perl-digest-md5
perl-encode
ffmpeg
@@ -1711,6 +1712,7 @@ operate properly.")
soxr
speex
srt
+ svt-av1
twolame
vidstab
x265
@@ -1799,6 +1801,7 @@ operate properly.")
"--enable-libsoxr"
"--enable-libspeex"
"--enable-libsrt"
+ "--enable-libsvtav1"
"--enable-libtheora"
"--enable-libtwolame"
"--enable-libvidstab"
@@ -1888,7 +1891,9 @@ audio/video codec library.")
version ".tar.xz"))
(sha256
(base32
- "14xadxm1yaamp216nq09xwasxg5g133v86dbb33mdg5di1zrlhdg"))))
+ "14xadxm1yaamp216nq09xwasxg5g133v86dbb33mdg5di1zrlhdg"))
+ (patches (search-patches "ffmpeg-remove-compressed_ten_bit_format.patch"
+ "ffmpeg-4-binutils-2.41.patch"))))
(inputs (modify-inputs (package-inputs ffmpeg)
(replace "sdl2" sdl2-2.0)))
(arguments
@@ -1906,10 +1911,11 @@ audio/video codec library.")
version ".tar.xz"))
(sha256
(base32
- "0np0yalqdrm7rn7iykgfzz3ly4vbgigrajg48c1l6n7qrzqvfszv"))))
+ "0np0yalqdrm7rn7iykgfzz3ly4vbgigrajg48c1l6n7qrzqvfszv"))
+ (patches (search-patches "ffmpeg-4-binutils-2.41.patch"))))
(arguments
(substitute-keyword-arguments (package-arguments ffmpeg-4)
- ((#:modules modules %gnu-build-system-modules)
+ ((#:modules modules %default-gnu-modules)
`((srfi srfi-1)
,@modules))
((#:configure-flags flags)
@@ -1917,7 +1923,8 @@ audio/video codec library.")
'("--enable-libdav1d"
"--enable-libaom"
"--enable-librav1e"
- "--enable-libsrt")))))
+ "--enable-libsrt"
+ "--enable-libsvtav1")))))
(inputs (modify-inputs (package-inputs ffmpeg-4)
(delete "dav1d" "libaom" "rav1e" "srt")))))
@@ -1931,7 +1938,8 @@ audio/video codec library.")
version ".tar.xz"))
(sha256
(base32
- "0c8m4hhv2k5fybha908wzrpnf3wqkq52hayl658jq4bah0igdfqz"))))
+ "0c8m4hhv2k5fybha908wzrpnf3wqkq52hayl658jq4bah0igdfqz"))
+ (patches (search-patches "ffmpeg-4-binutils-2.41.patch"))))
(arguments
`(#:tests? #f ; XXX: Enable them later, if required
#:configure-flags
@@ -2473,8 +2481,7 @@ input files is possible, including video files.")
;; Some of the tests require using the display to test out VLC,
;; which fails in our sandboxed build system
(substitute* "test/run_vlc.sh"
- (("./vlc --ignore-config") "echo"))
- #t)))
+ (("./vlc --ignore-config") "echo")))))
(add-after 'strip 'regenerate-plugin-cache
(lambda* (#:key outputs #:allow-other-keys)
;; The 'install-exec-hook' rule in the top-level Makefile.am
@@ -2500,8 +2507,7 @@ input files is possible, including video files.")
(let ((out (assoc-ref outputs "out"))
(plugin-path (getenv "QT_PLUGIN_PATH")))
(wrap-program (string-append out "/bin/vlc")
- `("QT_PLUGIN_PATH" ":" prefix (,plugin-path))))
- #t)))))
+ `("QT_PLUGIN_PATH" ":" prefix (,plugin-path)))))))))
(home-page "https://www.videolan.org/")
(synopsis "Audio and video framework")
(description "VLC is a cross-platform multimedia player and framework
@@ -2642,43 +2648,31 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
"-Ddvdnav=enabled"
"-Dbuild-date=false")))
(native-inputs
- (list perl ;for zsh completion file
- pkg-config
- python-docutils
- python-wrapper))
+ (list perl ; for zsh completion file
+ pkg-config python-docutils python-wrapper))
;; Missing features: libguess, V4L2.
(inputs
- (list enca
- ladspa
- lcms
- libbs2b
- mpg123
- rsound
- vulkan-headers
- vulkan-loader
- yt-dlp))
- ;; XXX: These are propagated for the mpv pkg-config package, as they are
- ;; listed in Requires.private and would break 'pkg-config --exists mpv' if
- ;; unavailable.
- (propagated-inputs
(list alsa-lib
+ enca
ffmpeg
jack-1
+ ladspa
+ lcms
libass
libbluray
libcaca
+ libbs2b
libcdio-paranoia
- libdrm
- libdvdnav
libdvdread
+ libdvdnav
libjpeg-turbo
libplacebo
libva
libvdpau
libx11
libxext
- libxinerama
libxkbcommon
+ libxinerama
libxpresent
libxrandr
libxscrnsaver
@@ -2686,10 +2680,15 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
;; XXX: lua > 5.2 is not currently supported; see meson.build
lua-5.2
mesa
+ mpg123
pulseaudio
+ rsound
shaderc
+ vulkan-headers
+ vulkan-loader
wayland
wayland-protocols
+ yt-dlp
zimg
zlib))
(home-page "https://mpv.io/")
@@ -2907,7 +2906,6 @@ To load this plugin, specify the following option when starting mpv:
(package
(name "libvpx")
(version "1.12.0")
- (replacement libvpx/fixed)
(source (origin
(method git-fetch)
(uri (git-reference
@@ -2917,7 +2915,8 @@ To load this plugin, specify the following option when starting mpv:
(sha256
(base32
"1x12f2bd4jqd532rnixmwvcx8d29yxiacpcxqqh86qczc49la8gm"))
- (patches (search-patches "libvpx-CVE-2016-2818.patch"))))
+ (patches (search-patches "libvpx-CVE-2016-2818.patch"
+ "libvpx-CVE-2023-5217.patch"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags (list "--enable-shared"
@@ -2946,15 +2945,6 @@ To load this plugin, specify the following option when starting mpv:
(license license:bsd-3)
(home-page "https://www.webmproject.org/")))
-(define libvpx/fixed
- (package
- (inherit libvpx)
- (source
- (origin
- (inherit (package-source libvpx))
- (patches (search-patches "libvpx-CVE-2016-2818.patch"
- "libvpx-CVE-2023-5217.patch"))))))
-
(define-public orf-dl
(let ((commit "2dbbe7ef4e0efe0f3c1d59c503108e22d9065999")
(revision "1"))
@@ -3243,7 +3233,8 @@ audio, images) from the Web. It can use either mpv or vlc for playback.")
(native-inputs
(list perl-module-build))
(inputs
- (list perl-data-dump
+ (list bash-minimal
+ perl-data-dump
perl-file-sharedir
perl-gtk2
perl-json
@@ -3277,8 +3268,7 @@ audio, images) from the Web. It can use either mpv or vlc for playback.")
"bin/gtk3-youtube-viewer")
(("'xdg-open'")
(format #f "'~a/bin/xdg-open'"
- (assoc-ref inputs "xdg-utils"))))
- #t))
+ (assoc-ref inputs "xdg-utils"))))))
(add-after 'install 'install-desktop
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@@ -3286,8 +3276,7 @@ audio, images) from the Web. It can use either mpv or vlc for playback.")
(install-file "share/gtk-youtube-viewer.desktop"
(string-append sharedir "/applications"))
(install-file "share/icons/gtk-youtube-viewer.png"
- (string-append sharedir "/pixmaps"))
- #t)))
+ (string-append sharedir "/pixmaps")))))
(add-after 'install 'wrap-program
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@@ -3296,8 +3285,7 @@ audio, images) from the Web. It can use either mpv or vlc for playback.")
(lib-path (getenv "PERL5LIB")))
(for-each (cut wrap-program <>
`("PERL5LIB" ":" prefix (,lib-path ,site-dir)))
- (find-files bin-dir))
- #t))))))
+ (find-files bin-dir))))))))
(synopsis
"Lightweight application for searching and streaming videos from YouTube")
(description
@@ -4439,17 +4427,17 @@ and MPEG system streams.")
(define-public libbdplus
(package
(name "libbdplus")
- (version "0.1.2")
+ (version "0.2.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://ftp.videolan.org/pub/videolan/libbdplus/"
version "/" name "-" version ".tar.bz2"))
(sha256
- (base32 "02n87lysqn4kg2qk7d1ffrp96c44zkdlxdj0n16hbgrlrpiwlcd6"))))
+ (base32 "0n0ayjq2ld7lfhrfcdj9bam96m2hih34phyjan8nwggkmqzflgmr"))))
+ (build-system gnu-build-system)
(inputs
(list libgcrypt))
- (build-system gnu-build-system)
(home-page "https://www.videolan.org/developers/libbdplus.html")
(synopsis "Library for decrypting certain Blu-Ray discs")
(description "libbdplus is a library which implements the BD+ System
@@ -5521,7 +5509,8 @@ API. It includes bindings for Python, Ruby, and other languages.")
(delete-file-recursively "src/images/fonts") #t))))
(build-system python-build-system)
(inputs
- (list ffmpeg
+ (list bash-minimal
+ ffmpeg
font-dejavu
libopenshot
python
@@ -5550,14 +5539,12 @@ API. It includes bindings for Python, Ruby, and other languages.")
(substitute* "src/classes/app.py"
(("info.IMAGES_PATH") (string-append "\"" font "\""))
(("fonts") "share/fonts/truetype")
- (("[A-Za-z_-]+.ttf") "DejaVuSans.ttf")))
- #t))
+ (("[A-Za-z_-]+.ttf") "DejaVuSans.ttf")))))
(add-before 'install 'set-tmp-home
(lambda _
;; src/classes/info.py "needs" to create several
;; directories in $HOME when loaded during build
- (setenv "HOME" "/tmp")
- #t))
+ (setenv "HOME" "/tmp")))
(add-after 'install 'wrap-program
(lambda* (#:key outputs inputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
@@ -5712,7 +5699,8 @@ video from a Wayland session.")
(native-inputs
(list gettext-minimal pkg-config))
(inputs
- (list python-pygobject
+ (list bash-minimal
+ python-pygobject
gtk+
python-pycairo ; Required or else clicking on a subtitle line fails.
python-chardet ; Optional: Character encoding detection.
@@ -6167,7 +6155,10 @@ brightness, contrast, and frame rate.")
`("PERL5LIB" ":"
prefix (,(string-append perllib ":" (getenv "PERL5LIB")))))))))))
(inputs
- (list perl-mojolicious perl-lwp-protocol-https perl-xml-libxml))
+ (list bash-minimal
+ perl-mojolicious
+ perl-lwp-protocol-https
+ perl-xml-libxml))
(home-page "https://github.com/get-iplayer/get_iplayer")
(synopsis "Download or stream available BBC iPlayer TV and radio programmes")
(description "@code{get_iplayer} lists, searches and records BBC iPlayer
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 34cccd6550..1409461a89 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -244,7 +244,7 @@
(srfi srfi-26)
(ice-9 ftw)
(ice-9 match)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:phases
#~(modify-phases %standard-phases
;; Since we removed the bundled firmwares above, many tests
@@ -693,10 +693,10 @@ firmware blobs. You can
"ganeti-relax-dependencies.patch"))))
(build-system gnu-build-system)
(arguments
- `(#:imported-modules (,@%gnu-build-system-modules
+ `(#:imported-modules (,@%default-gnu-imported-modules
(guix build haskell-build-system)
(guix build python-build-system))
- #:modules (,@%gnu-build-system-modules
+ #:modules (,@%default-gnu-modules
((guix build haskell-build-system) #:prefix haskell:)
((guix build python-build-system) #:select (site-packages))
(srfi srfi-1)
@@ -966,7 +966,8 @@ firmware blobs. You can
("shelltestrunner" ,shelltestrunner)
("tzdata" ,tzdata-for-tests)))
(inputs
- (list iputils ;for 'arping'
+ (list bash-minimal
+ iputils ;for 'arping'
curl
fping
iproute
@@ -1265,8 +1266,7 @@ of one or more RISC-V harts.")
(list `(,glib "bin") ;glib-mkenums, etc.
gobject-introspection
gtk-doc/stable
- `(,hwdata "pci")
- `(,hwdata "usb")
+ hwdata
vala
intltool
pkg-config))
@@ -1693,7 +1693,8 @@ virtualization library.")
(add-after 'wrap 'glib-or-gtk-wrap
(assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
(inputs
- (list dconf
+ (list bash-minimal
+ dconf
gtk+
gtk-vnc
gtksourceview-4
@@ -1898,7 +1899,7 @@ client desktops.
(build-system gnu-build-system)
(arguments
`(#:test-target "test"
- #:tests? #f ; tests require mounting as root
+ #:tests? #f ; tests require mounting as root
#:make-flags
(list (string-append "PREFIX=" (assoc-ref %outputs "out"))
(string-append "LIBDIR=$(PREFIX)/lib")
@@ -1913,20 +1914,10 @@ client desktops.
(search-input-file %build-inputs
"/bin/xmlto")))
#:modules ((ice-9 ftw)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-modules)
#:phases
(modify-phases %standard-phases
(delete 'configure) ; no configure script
- (add-after 'unpack 'fix-documentation
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (substitute* "Documentation/Makefile"
- (("-m custom.xsl")
- (string-append
- "-m custom.xsl --skip-validation -x "
- (assoc-ref inputs "docbook-xsl") "/xml/xsl/"
- ,(package-name docbook-xsl) "-"
- ,(package-version docbook-xsl)
- "/manpages/docbook.xsl")))))
(add-after 'unpack 'hardcode-variables
(lambda* (#:key inputs outputs #:allow-other-keys)
;; Hardcode arm version detection
@@ -1934,14 +1925,13 @@ client desktops.
(("ARMV.*:=.*") "ARMV := 7\n"))
;; Hard-code the correct PLUGINDIR above.
(substitute* "criu/include/plugin.h"
- (("/var") (string-append (assoc-ref outputs "out"))))
- ))
+ (("/var") (string-append (assoc-ref outputs "out"))))))
;; TODO: use
;; (@@ (guix build python-build-system) ensure-no-mtimes-pre-1980)
;; when it no longer throws due to trying to call UTIME on symlinks.
(add-after 'unpack 'ensure-no-mtimes-pre-1980
(lambda _
- (let ((early-1980 315619200)) ; 1980-01-02 UTC
+ (let ((early-1980 315619200)) ; 1980-01-02 UTC
(ftw "." (lambda (file stat flag)
(unless (or (<= early-1980 (stat:mtime stat))
(eq? (stat:type stat) 'symlink))
@@ -1975,15 +1965,16 @@ client desktops.
(let ((out (assoc-ref outputs "out")))
(for-each delete-file (find-files out "\\.a$"))))))))
(inputs
- `(("protobuf" ,protobuf)
- ("python-protobuf" ,python-protobuf)
- ("iproute" ,iproute)
- ("libaio" ,libaio)
- ("libcap" ,libcap)
- ("libnet" ,libnet)
- ("libnl" ,libnl)
- ("libbsd" ,libbsd)
- ("nftables" ,nftables)))
+ (list bash-minimal
+ protobuf
+ python-protobuf
+ iproute
+ libaio
+ libcap
+ libnet
+ libnl
+ libbsd
+ nftables))
(native-inputs
(list pkg-config
perl
diff --git a/gnu/packages/vnc.scm b/gnu/packages/vnc.scm
index 7f39488b02..4aca5f2c65 100644
--- a/gnu/packages/vnc.scm
+++ b/gnu/packages/vnc.scm
@@ -38,6 +38,7 @@
#:use-module (gnu packages autotools)
#:use-module (gnu packages avahi)
#:use-module (gnu packages base)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages cmake)
#:use-module (gnu packages compression)
#:use-module (gnu packages crypto)
@@ -125,6 +126,7 @@
(list libappindicator
at-spi2-core
avahi
+ bash-minimal
cairo
cups
ffmpeg
diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm
index 7823ef19eb..ba19311d22 100644
--- a/gnu/packages/vpn.scm
+++ b/gnu/packages/vpn.scm
@@ -903,8 +903,7 @@ traversing network address translators (@dfn{NAT}s) and firewalls.")
"ncurses"
"openvpn"
"procps"
- "which")))))
- #t))
+ "which")))))))
;; The `protonvpn' script wants to write to `~user' to initialize its
;; logger, so simply setting HOME=/tmp won't cut it. Remove
;; sanity-check.
@@ -912,7 +911,8 @@ traversing network address translators (@dfn{NAT}s) and firewalls.")
(native-inputs
(list python-docopt))
(inputs
- (list dialog
+ (list bash-minimal
+ dialog
iproute
iptables
ncurses
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index 0cd2d9972c..7a732c76dd 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -264,7 +264,8 @@ features including, tables, builtin image display, bookmarks, SSL and more.")
(native-inputs
(list pkg-config))
(inputs
- (list glib-networking
+ (list bash-minimal
+ glib-networking
gsettings-desktop-schemas
gtk+
lua-5.1
@@ -375,14 +376,13 @@ systems intended primarily for local access.")
;; Contains executable of 7z and pscp
(delete-file-recursively "ci/tools")
;; Remove bundled fonts
- (delete-file-recursively "src/fonts")
- #t))))
+ (delete-file-recursively "src/fonts")))))
(build-system gnu-build-system)
(arguments
`(#:modules ((guix build gnu-build-system)
(guix build qt-utils)
(guix build utils))
- #:imported-modules (,@%gnu-build-system-modules
+ #:imported-modules (,@%default-gnu-imported-modules
(guix build qt-utils))
#:make-flags
(list (string-append "PREFIX=" %output))
@@ -396,22 +396,21 @@ systems intended primarily for local access.")
;; Patch it to just return the real version number directly.
(substitute* "src/kristall.pro"
(("(KRISTALL_VERSION=).*" _ match)
- (string-append match ,version "\n")))
- #t))
+ (string-append match ,version "\n")))))
(add-before 'build 'dont-use-bundled-cmark
(lambda _
(substitute* "src/kristall.pro"
(("(^include\\(.*cmark.*)" _ match)
(string-append
- "LIBS += -I" (assoc-ref %build-inputs "cmark") " -lcmark")))
- #t))
+ "LIBS += -I" (assoc-ref %build-inputs "cmark")
+ " -lcmark")))))
(add-before 'build 'dont-use-bundled-breeze-stylesheet
(lambda _
(substitute* "src/kristall.pro"
(("../lib/BreezeStyleSheets/breeze.qrc")
(string-append
- (assoc-ref %build-inputs "breeze-stylesheet") "/breeze.qrc")))
- #t))
+ (assoc-ref %build-inputs "breeze-stylesheet")
+ "/breeze.qrc")))))
(add-before 'build 'dont-use-bundled-fonts
(lambda _
(substitute* "src/kristall.pro"
@@ -424,8 +423,7 @@ systems intended primarily for local access.")
(("/fonts/NotoColorEmoji")
(string-append
(assoc-ref %build-inputs "font-google-noto")
- "/share/fonts/truetype/NotoColorEmoji")))
- #t))
+ "/share/fonts/truetype/NotoColorEmoji")))))
(add-after 'install 'wrap-program
(lambda* (#:key outputs inputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
@@ -447,7 +445,8 @@ systems intended primarily for local access.")
(base32
"1kvkxkisi3czldnb43ig60l55pi4a3m2a4ixp7krhpf9fc5wp294")))))))
(inputs
- (list cmark
+ (list bash-minimal
+ cmark
font-google-noto
font-openmoji
openssl
@@ -618,7 +617,7 @@ driven and does not detract you from your daily work.")
(add-before 'build 'fix-common-lisp-cache-folder
(lambda _ (setenv "HOME" "/tmp")))
(add-before 'check 'configure-tests
- (lambda _ (setenv "NYXT_TESTS_NO_NETWORK" "1") #t))
+ (lambda _ (setenv "NYXT_TESTS_NO_NETWORK" "1")))
(add-after 'install 'wrap-program
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((bin (string-append (assoc-ref outputs "out") "/bin/nyxt"))
@@ -642,7 +641,8 @@ driven and does not detract you from your daily work.")
`("LD_LIBRARY_PATH" ":" prefix (,path))
`("XDG_DATA_DIRS" ":" prefix (,xdg-path)))))))))
(native-inputs (list cl-lisp-unit2 sbcl))
- (inputs (list sbcl-alexandria
+ (inputs (list bash-minimal
+ sbcl-alexandria
sbcl-bordeaux-threads
sbcl-calispel
sbcl-cl-base64
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 37fd63ed53..2c0c53f8b5 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -121,6 +121,7 @@
#:use-module (gnu packages cpp)
#:use-module (gnu packages crates-crypto)
#:use-module (gnu packages crates-io)
+ #:use-module (gnu packages crypto)
#:use-module (gnu packages crates-gtk)
#:use-module (gnu packages crates-tls)
#:use-module (gnu packages crates-web)
@@ -232,7 +233,7 @@
`(#:tests? #f ; no target
#:imported-modules
((guix build copy-build-system)
- ,@%gnu-build-system-modules)
+ ,@%default-gnu-imported-modules)
#:modules
(((guix build copy-build-system) #:prefix copy:)
(guix build gnu-build-system)
@@ -298,17 +299,18 @@
"1id45r2ccgkbjm9i998997ch32lvicpyynyx8x6aa4420wmdf5ps"))))
(build-system gnu-build-system)
(native-inputs (list `(,pcre "bin"))) ;for 'pcre-config'
- (inputs (list apr apr-util openssl perl)) ; needed to run bin/apxs
+ (inputs (list apr apr-util libxcrypt openssl perl)) ; needed to run bin/apxs
(arguments
- `(#:test-target "test"
- #:configure-flags (list "--enable-rewrite"
- "--enable-userdir"
- "--enable-vhost-alias"
- "--enable-ssl"
- "--enable-mime-magic"
- (string-append "--sysconfdir="
- (assoc-ref %outputs "out")
- "/etc/httpd"))))
+ (list
+ #:test-target "test"
+ #:configure-flags #~(list "--enable-rewrite"
+ "--enable-userdir"
+ "--enable-vhost-alias"
+ "--enable-ssl"
+ "--enable-mime-magic"
+ (string-append "--sysconfdir="
+ #$output
+ "/etc/httpd"))))
(synopsis "Featureful HTTP server")
(description
"The Apache HTTP Server Project is a collaborative software development
@@ -1540,7 +1542,7 @@ efficiently. It gives the application developer no more than 4 methods.")
(invoke (string-append (assoc-ref outputs "out") "/bin/ktImportText")
"ec.tsv")))))))
(inputs
- (list curl gnu-make perl))
+ (list bash-minimal curl gnu-make perl))
(home-page "https://github.com/marbl/Krona/wiki")
(synopsis "Hierarchical data exploration with zoomable HTML5 pie charts")
(description
@@ -2091,7 +2093,16 @@ changes, and much more.")
(base32
"07w1aq8y8wld43wmbk2q8134p3bfkp2vma78mmsfgw2jn1bh3xhd"))))
(build-system gnu-build-system)
- (arguments '(#:configure-flags '("--enable-nss")))
+ (arguments
+ (list
+ #:configure-flags ''("--enable-nss")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'use-C-unicode-locale
+ (lambda _
+ (substitute* "tests/commontest.c"
+ (("en_US\\.UTF-8")
+ "C.UTF-8")))))))
(native-inputs (list pkg-config))
(propagated-inputs
(list curl nss))
@@ -5073,7 +5084,8 @@ Cloud.")
(_ #t)))))))
(delete 'strip)))) ; As the .go files aren't compatible
(inputs
- (list ephemeralpg
+ (list bash-minimal
+ ephemeralpg
util-linux
postgresql-13
sqitch
@@ -5572,8 +5584,7 @@ NetSurf project.")
'(begin
;; The POT file requires write permission during the build
;; phase.
- (chmod "po/ikiwiki.pot" #o644)
- #t))))
+ (chmod "po/ikiwiki.pot" #o644)))))
(build-system perl-build-system)
(arguments
`(#:phases
@@ -5584,16 +5595,14 @@ NetSurf project.")
(("SYSCONFDIR\\?=") "SYSCONFDIR?=$(PREFIX)"))
(with-directory-excursion "po"
(substitute* "Makefile"
- (("PERL5LIB=") "PERL5LIB=${PERL5LIB}:")))
- #t))
+ (("PERL5LIB=") "PERL5LIB=${PERL5LIB}:")))))
(add-before 'build 'set-modification-times
;; The wiki '--refresh' steps, which are executed during
;; the check phase, require recent timestamps on files in
;; the 'doc' and 'underlays' directories.
(lambda _
(invoke "find" "doc" "underlays" "-type" "f" "-exec"
- "touch" "{}" "+")
- #t))
+ "touch" "{}" "+")))
(add-before 'check 'pre-check
(lambda* (#:key inputs #:allow-other-keys)
;; Six tests use IPC::Run. For these tests the PERL5LIB
@@ -5619,8 +5628,7 @@ NetSurf project.")
(string-append (assoc-ref inputs "shared-mime-info")
"/share"))
;; CC is needed by IkiWiki/Wrapper.pm.
- (setenv "CC" "gcc")
- #t))
+ (setenv "CC" "gcc")))
(add-after 'install 'wrap-programs
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@@ -5629,8 +5637,7 @@ NetSurf project.")
(for-each (lambda (file)
(wrap-program file
`("PERL5LIB" ":" prefix (,path))))
- (find-files bin))
- #t))))))
+ (find-files bin))))))))
(native-inputs
(list which
gettext-minimal
@@ -5640,7 +5647,8 @@ NetSurf project.")
cvs
mercurial))
(inputs
- (list python-wrapper
+ (list bash-minimal
+ python-wrapper
perl-authen-passphrase
perl-cgi-simple
perl-db-file
@@ -6605,7 +6613,7 @@ functions of Tidy.")
`("PATH" ":" prefix (,mbed)))))))))
(inputs
;; TODO: package "hiawatha-monitor", an optional dependency of "hiawatha".
- (list libxslt libxml2 mbedtls-for-hiawatha
+ (list bash-minimal libxslt libxml2 mbedtls-for-hiawatha
`(,nghttp2 "lib") zlib))
(home-page "https://www.hiawatha-webserver.org")
(synopsis "Webserver with focus on security")
@@ -8370,7 +8378,8 @@ It does not support server push.")
(list autoconf automake uglify-js pkg-config
(lookup-package-native-input guix "guile")))
(inputs
- (list (lookup-package-native-input guix "guile")
+ (list bash-minimal
+ (lookup-package-native-input guix "guile")
guix
guile-zlib
guile-commonmark
diff --git a/gnu/packages/wget.scm b/gnu/packages/wget.scm
index d31f192e99..4bd4d3c87a 100644
--- a/gnu/packages/wget.scm
+++ b/gnu/packages/wget.scm
@@ -46,16 +46,15 @@
(define-public wget
(package
(name "wget")
- (version "1.21.3.24")
+ (version "1.21.4")
(source
(origin
(method url-fetch)
- ;;(uri (string-append "mirror://gnu/wget/wget-"
- ;; version ".tar.lz"))
- (uri "https://www.multiprecision.org/wget-1.21.3.24-2b723.tar.lz")
+ (uri (string-append "mirror://gnu/wget/wget-"
+ version ".tar.lz"))
(sha256
(base32
- "17ip94mvax83h0gh4905jqc64g5qf3vgxr3bj9gn02pijjm5lzbp"))))
+ "1nabhxx3rg28h2scba2mlawzjyx3dw07j2kjn76cpvahbyd630rn"))))
(build-system gnu-build-system)
(inputs
(list gnutls libidn2 libpsl))
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index b5e9dca524..bda4bc95ce 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -44,6 +44,7 @@
;;; Copyright © 2021, 2023, 2024 Zheng Junjie <873216071@qq.com>
;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com>
;;; Copyright © 2021 qblade <qblade@protonmail.com>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2021 lasnesne <lasnesne@lagunposprasihopre.org>
;;; Copyright © 2021, 2022 Petr Hodina <phodina@protonmail.com>
;;; Copyright © 2021, 2023 jgart <jgart@dismail.de>
@@ -336,7 +337,7 @@ or musca).
(list asciidoc
perl
pkg-config
- docbook-xsl libxml2 ; for XML_CATALOG_FILES
+ docbook-xsl
xmlto))
(home-page "https://i3wm.org/i3status/")
(synopsis "Status bar for i3bar, dzen2, xmobar or similar programs")
@@ -1212,12 +1213,12 @@ for wlroots-based Wayland compositors.")
doxygen
gperf
imagemagick
- libxml2 ;for XML_CATALOG_FILES
lua-ldoc
pkg-config
xmlto))
(inputs
- (list cairo
+ (list bash-minimal
+ cairo
dbus
gdk-pixbuf
glib
@@ -1298,8 +1299,7 @@ for wlroots-based Wayland compositors.")
(let* ((out (assoc-ref outputs "out"))
(awesome (string-append out "/bin/awesome")))
(substitute* (string-append out "/share/xsessions/awesome.desktop")
- (("Exec=awesome") (string-append "Exec=" awesome)))
- #t)))
+ (("Exec=awesome") (string-append "Exec=" awesome))))))
(add-after 'install 'wrap
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((awesome (assoc-ref outputs "out"))
@@ -1312,8 +1312,7 @@ for wlroots-based Wayland compositors.")
`("LUA_CPATH" ";" suffix
(,(format #f "~a/lib/lua/~a/?.so" lua-lgi lua-version)))
`("GI_TYPELIB_PATH" ":" prefix (,(getenv "GI_TYPELIB_PATH")))
- `("LD_LIBRARY_PATH" suffix (,cairo)))
- #t))))))
+ `("LD_LIBRARY_PATH" suffix (,cairo)))))))))
(home-page "https://awesomewm.org/")
(synopsis "Highly configurable window manager")
(description
@@ -1374,7 +1373,7 @@ all of them. Currently supported window managers include:
(inputs
(list gtk+ gobject-introspection))
(native-inputs
- (list gtk-doc pkg-config))
+ (list gtk-doc/stable pkg-config))
(synopsis "Library for registering global keyboard shortcuts, Gtk3 version")
(description
"Keybinder is a library for registering global keyboard shortcuts.
@@ -1758,7 +1757,7 @@ functionality to display information about the most commonly used services.")
xorg-server-xwayland))
(native-inputs
(cons*
- `(,hwdata "pnp")
+ hwdata
pkg-config
wayland
(if (%current-target-system)
@@ -1844,7 +1843,8 @@ narrow the items to those matching the tokens in the input.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "1n36vgpi4bg2gkiq4fam4khly1z9bjinmjclzq5vfx0z8h7a5bzz"))))
+ (base32 "1n36vgpi4bg2gkiq4fam4khly1z9bjinmjclzq5vfx0z8h7a5bzz"))
+ (patches (search-patches "sway-add-libinput-config-accel.patch"))))
(build-system meson-build-system)
(arguments
(list
@@ -3198,7 +3198,7 @@ for wayland conceptually based on the X11 window manager
(string-append (assoc-ref (or native-inputs inputs)
"hwdata")
"/share/hwdata/pnp.ids"))))))))
- (native-inputs (list `(,hwdata "pnp") python))
+ (native-inputs (list hwdata python))
(synopsis "EDID and DisplayID library")
(description
"This package provides a library to read @acronym{EDID, Extended
diff --git a/gnu/packages/wordnet.scm b/gnu/packages/wordnet.scm
index f46cc27b76..0d977e353e 100644
--- a/gnu/packages/wordnet.scm
+++ b/gnu/packages/wordnet.scm
@@ -23,6 +23,7 @@
#:use-module (guix licenses)
#:use-module (guix download)
#:use-module (gnu packages)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages gcc)
#:use-module (gnu packages tcl))
@@ -81,12 +82,11 @@
`("PATH" ":" prefix
(,(string-append out
"/bin"))))))
- '("wishwn" "wnb"))
- #t))))))
+ '("wishwn" "wnb"))))))))
(outputs '("out"
"tk")) ; for the Tcl/Tk GUI
- (inputs (list tk tcl))
+ (inputs (list bash-minimal tk tcl))
(home-page "https://wordnet.princeton.edu/")
(synopsis "Lexical database for the English language")
(description
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index 30ca9140d0..a2c4a29b83 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -103,6 +103,7 @@
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages cpp)
+ #:use-module (gnu packages crypto)
#:use-module (gnu packages datastructures)
#:use-module (gnu packages docbook)
#:use-module (gnu packages documentation)
@@ -260,7 +261,7 @@ command line, without displaying a keyboard at all.")
(wrap-program (string-append out "/bin/arandr")
`("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))))
#:tests? #f)) ;no tests
- (inputs (list gtk+ python-pycairo python-pygobject xrandr))
+ (inputs (list bash-minimal gtk+ python-pycairo python-pygobject xrandr))
(native-inputs (list gettext-minimal python-docutils))
(home-page "https://christian.amsuess.com/tools/arandr/")
(synopsis "Another RandR graphical user interface")
@@ -518,6 +519,7 @@ avoiding password prompts when X11 forwarding has already been setup.")
(sha256
(base32
"0awwz5pg9x5bj0d7dpg4a7bd4gl6k55mlpxwb12534fkrpn19p0f"))))
+ (outputs '("out" "doc"))
(build-system meson-build-system)
(inputs
(list libx11
@@ -535,13 +537,30 @@ avoiding password prompts when X11 forwarding has already been setup.")
(list pkg-config-for-build)
'())))
(arguments
- (list #:configure-flags
- #~(list (string-append "-Dxkb-config-root="
- (search-input-directory
- %build-inputs "share/X11/xkb"))
- (string-append "-Dx-locale-root="
- (search-input-directory
- %build-inputs "share/X11/locale")))))
+ (list
+ #:configure-flags
+ #~(list (string-append "-Dxkb-config-root="
+ (search-input-directory
+ %build-inputs "share/X11/xkb"))
+ (string-append "-Dx-locale-root="
+ (search-input-directory
+ %build-inputs "share/X11/locale")))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'install 'move-doc
+ (lambda _
+ (let ((old (string-append #$output "/share/doc"))
+ (new (string-append #$output:doc "/share/doc")))
+ (mkdir-p (dirname new))
+ (rename-file old new))))
+ (add-after 'install 'symlink-pc
+ ;; in Requires.private of xkbregistry.pc
+ ;; XXX: Symlink libxml-2.0.pc in order to avoid putting
+ ;; libxml2 as a propagated input.
+ (lambda _
+ (let ((stem "/lib/pkgconfig/libxml-2.0.pc"))
+ (symlink (string-append #$(this-package-input "libxml2") stem)
+ (string-append #$output stem))))))))
(home-page "https://xkbcommon.org/")
(synopsis "Library to handle keyboard descriptions")
(description "Xkbcommon is a library to handle keyboard descriptions,
@@ -1167,7 +1186,7 @@ shows it again when the mouse cursor moves or a mouse button is pressed.")
"/lib/X11/app-defaults"))
#:tests? #f)) ;no such thing as a test suite
(inputs
- (list libx11 libxext libxt linux-pam))
+ (list libx11 libxcrypt libxext libxt linux-pam))
(home-page "https://sillycycle.com/xlockmore.html")
(synopsis "Screen locker for the X Window System")
(description
@@ -1527,7 +1546,7 @@ driver for the X.Org X Server version 1.7 and later (X11R7.5 or later).")
"1fi27b73x85qqar526dbd33av7mahca2ykaqwr7siqiw1qqcby6j"))))
(build-system gnu-build-system)
(arguments
- `(#:imported-modules (,@%gnu-build-system-modules
+ `(#:imported-modules (,@%default-gnu-imported-modules
(guix build python-build-system))
#:phases
(modify-phases %standard-phases
@@ -1553,8 +1572,7 @@ driver for the X.Org X Server version 1.7 and later (X11R7.5 or later).")
(string-append out "/share/" dir)
(string-append gtk "/share/" dir))
(delete-file-recursively dir))
- '("appdata" "icons")))
- #t)))
+ '("appdata" "icons"))))))
(add-after 'split-outputs 'wrap
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((gtk (assoc-ref outputs "gtk"))
@@ -1564,13 +1582,13 @@ driver for the X.Org X Server version 1.7 and later (X11R7.5 or later).")
(wrap-program (string-append gtk "/bin/redshift-gtk")
`("GUIX_PYTHONPATH" ":" prefix
(,(string-append site ":" (getenv "GUIX_PYTHONPATH"))))
- `("GI_TYPELIB_PATH" ":" prefix (,(getenv "GI_TYPELIB_PATH"))))
- #t))))))
+ `("GI_TYPELIB_PATH" ":" prefix (,(getenv "GI_TYPELIB_PATH"))))))))))
(outputs '("out" "gtk"))
(native-inputs
(list pkg-config intltool))
(inputs
- (list libdrm
+ (list bash-minimal
+ libdrm
libx11
libxcb
libxxf86vm
@@ -1710,7 +1728,8 @@ to an arbitrary balanced color.")
libtool
pkg-config))
(inputs
- (list glib
+ (list bash-minimal
+ glib
gtk+
libappindicator
libdrm
@@ -2849,15 +2868,13 @@ Wayland.")
(let ((out (assoc-ref outputs "out"))
(wl-clipboard (assoc-ref inputs "wl-clipboard")))
(wrap-program (string-append out "/bin/wl-clipboard-x11")
- `("PATH" prefix (,(string-append wl-clipboard "/bin")))))
- #t))
+ `("PATH" prefix (,(string-append wl-clipboard "/bin")))))))
(add-after 'wrap-binary 'symlink-utilities
;; As seen in the Makefile.
(lambda* (#:key outputs #:allow-other-keys)
(let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
(symlink "wl-clipboard-x11" (string-append bin "xclip"))
- (symlink "wl-clipboard-x11" (string-append bin "xsel")))
- #t)))))
+ (symlink "wl-clipboard-x11" (string-append bin "xsel"))))))))
(inputs
(list bash-minimal wl-clipboard))
(home-page "https://github.com/brunelli/wl-clipboard-x11")
@@ -3575,7 +3592,7 @@ if there's more than one.")
(base32 "1xa6sgvnwynl2qrjnsppvb2vg4p5v1pisrfhrmnlymw1fzhh6s9p"))))
(build-system gnu-build-system)
(inputs
- (list libx11 perl perl-tk))
+ (list bash-minimal libx11 perl perl-tk))
(arguments
`(#:tests? #f ; There are none.
#:make-flags
@@ -3597,14 +3614,13 @@ if there's more than one.")
(lambda* (#:key outputs #:allow-other-keys)
(wrap-program (string-append (assoc-ref outputs "out")
"/bin/xkbset-gui")
- `("PERL5LIB" ":" prefix (,(getenv "PERL5LIB"))))
- #t))
+ `("PERL5LIB" ":" prefix (,(getenv "PERL5LIB"))))))
(replace 'install-license-files
(lambda* (#:key outputs #:allow-other-keys)
(install-file "COPYRIGHT"
- (string-append (assoc-ref outputs "out")
- "/share/doc/" ,name "-" ,version))
- #t)))))
+ (string-append
+ (assoc-ref outputs "out")
+ "/share/doc/" ,name "-" ,version)))))))
(home-page "https://stephenmontgomerysmith.github.io/software/#xkbset")
(synopsis "User-preference utility for XKB extensions for X")
(description
diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm
index f9d9a81169..7c3c657078 100644
--- a/gnu/packages/xfce.scm
+++ b/gnu/packages/xfce.scm
@@ -255,7 +255,7 @@ to share commonly used Xfce widgets among the Xfce applications.")
(native-inputs
(list pkg-config python-distutils-extra intltool))
(inputs
- (list which xfconf xdg-utils))
+ (list bash-minimal which xfconf xdg-utils))
(propagated-inputs
(list gtk+ python-dbus python-pexpect python-pycairo
python-pygobject))
@@ -1495,7 +1495,7 @@ of data to either CD/DVD/BD.")
`(,glib "bin") ; for glib-compile-schemas.
pkg-config))
(inputs
- (list gtk+ gtksourceview-4 xfconf))
+ (list bash-minimal gtk+ gtksourceview-4 xfconf))
(home-page "https://git.xfce.org/apps/mousepad/")
(synopsis "Simple text editor for Xfce")
(description
diff --git a/gnu/packages/xiph.scm b/gnu/packages/xiph.scm
index 9019029f24..62f181d216 100644
--- a/gnu/packages/xiph.scm
+++ b/gnu/packages/xiph.scm
@@ -262,14 +262,14 @@ It currently supports:
(define-public flac
(package
(name "flac")
- (version "1.3.4")
+ (version "1.4.3")
(source (origin
(method url-fetch)
(uri (string-append "https://downloads.xiph.org/releases/flac/flac-"
version ".tar.xz"))
(sha256
(base32
- "0dz7am8kbc97a6afml1h4yp085274prg8j7csryds8m3fmz61w4g"))))
+ "0w2v40kmvl741vmycv8h5s10n7arbs12n2b1p10z8j13saffcn3c"))))
(build-system gnu-build-system)
(arguments
`(#:parallel-tests? #f))
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index c6ddae50ae..af39317f68 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -33,6 +33,7 @@
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2021 David Larsson <david.larsson@selfhosted.xyz>
;;; Copyright © 2021 Matthew James Kraai <kraai@ftbfs.org>
+;;; Copyright © 2023 Bruno Victal <mirai@makinata.eu>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -82,6 +83,7 @@
#:use-module (guix build-system python)
#:use-module (guix deprecation)
#:use-module (guix utils)
+ #:use-module (guix search-paths)
#:use-module (gnu packages linux)
#:use-module (gnu packages pkg-config))
@@ -196,42 +198,36 @@ hierarchical form with variable field lengths.")
(build-system gnu-build-system)
(outputs '("out" "static" "doc"))
(arguments
- `(#:phases (modify-phases %standard-phases
- (add-after 'install 'use-other-outputs
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((src (assoc-ref outputs "out"))
- (doc (string-append (assoc-ref outputs "doc") "/share"))
- (dst (string-append (assoc-ref outputs "static")
- "/lib")))
- (mkdir-p doc)
- (mkdir-p dst)
- (for-each (lambda (dir)
- (rename-file (string-append src "/share/" dir)
- (string-append doc "/" dir)))
- '("gtk-doc"))
- (for-each (lambda (ar)
- (rename-file ar (string-append dst "/"
- (basename ar))))
- (find-files (string-append src "/lib") "\\.a$"))
-
- ;; Remove reference to the static library from the .la
- ;; file such that Libtool does the right thing when both
- ;; the shared and static variants are available.
- (substitute* (string-append src "/lib/libxml2.la")
- (("^old_library='libxml2.a'") "old_library=''"))))))))
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'install 'use-other-outputs
+ (lambda _
+ (let ((doc (string-append #$output:doc "/share/"))
+ (static (string-append #$output:static "/lib/")))
+ (for-each mkdir-p (list doc static))
+
+ (rename-file (string-append #$output "/share/gtk-doc")
+ (string-append doc "/gtk-doc"))
+
+ (for-each
+ (lambda (ar)
+ (rename-file ar
+ (string-append static (basename ar))))
+ (find-files (string-append #$output "/lib") "\\.a$"))
+
+ ;; Remove reference to the static library from the .la
+ ;; file such that Libtool does the right thing when both
+ ;; the shared and static variants are available.
+ (substitute* (string-append #$output "/lib/libxml2.la")
+ (("^old_library='libxml2.a'") "old_library=''"))))))))
(home-page "http://www.xmlsoft.org/")
(synopsis "C parser for XML")
(inputs (list xz))
(propagated-inputs (list zlib)) ; libxml2.la says '-lz'.
(native-inputs (list perl))
- ;; $XML_CATALOG_FILES lists 'catalog.xml' files found in under the 'xml'
- ;; sub-directory of any given package.
- (native-search-paths (list (search-path-specification
- (variable "XML_CATALOG_FILES")
- (separator " ")
- (files '("xml"))
- (file-pattern "^catalog\\.xml$")
- (file-type 'regular))))
+ (native-search-paths
+ (list $SGML_CATALOG_FILES $XML_CATALOG_FILES))
(search-paths native-search-paths)
(description
"Libxml2 is the XML C parser and toolkit developed for the Gnome
@@ -369,6 +365,7 @@ formulas and hyperlinks to multiple worksheets in an Excel 2007+ XLSX file.")
xz))
(native-inputs
(list pkg-config))
+ (native-search-paths %libxslt-search-paths)
(description
"Libxslt is an XSLT C library developed for the GNOME project. It is
based on libxml for XML parsing, tree manipulation and XPath support.")
@@ -1037,17 +1034,36 @@ RSS 0.91, RSS 1.0, RSS 2.0, Atom")
(define-public perl-xml-xpath
(package
(name "perl-xml-xpath")
- (version "1.44")
+ (version "1.48")
(source (origin
(method url-fetch)
(uri (string-append "mirror://cpan/authors/id/M/MA/MANWAR/"
"XML-XPath-" version ".tar.gz"))
(sha256
(base32
- "03yxj7w5a43ibbpiqsvb3lswj2b71dydsx4rs2fw0p8n0l3i3j8w"))))
+ "1kch6w4zk7rzfimbwakz8qyhjhrvnp97158af0p5p7i3dgimpivv"))))
(build-system perl-build-system)
+ (arguments
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'install 'wrap-xpath
+ (lambda _
+ (let ((xpath (string-append #$output "/bin/xpath"))
+ (perl5lib
+ (search-path-as-list
+ '("/lib/perl5/site_perl")
+ (list #$(this-package-input "perl-xml-parser")
+ #$output))))
+ (wrap-program xpath
+ `("PERL5LIB" ":" prefix ,perl5lib)))))
+ (add-after 'wrap-xpath 'check-wrap
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (unsetenv "PERL5LIB")
+ (invoke/quiet (string-append #$output "/bin/xpath"))))))))
(native-inputs
- (list perl-path-tiny))
+ (list perl-path-tiny perl-test-leaktrace))
(propagated-inputs
(list perl-xml-parser))
(home-page "https://metacpan.org/release/XML-XPath")
@@ -1055,7 +1071,7 @@ RSS 0.91, RSS 1.0, RSS 2.0, Atom")
(description
"This module aims to comply exactly to the @url{XPath specification,
https://www.w3.org/TR/xpath} and yet allow extensions to be added in
-the form of functions.")
+the form of functions. It also provides the command @command{xpath}.")
(license license:perl-license)))
(define-public pugixml
@@ -1126,16 +1142,18 @@ code for classes that correspond to data structures defined by XMLSchema.")
(build-system gnu-build-system)
(arguments
;; Make sure the reference to util-linux's 'getopt' is kept in 'xmlto'.
- '(#:configure-flags (list (string-append "GETOPT="
- (assoc-ref %build-inputs
- "util-linux")
- "/bin/getopt"))))
+ (list
+ #:configure-flags
+ #~(list (string-append "GETOPT="
+ #$(this-package-input "util-linux")
+ "/bin/getopt"))))
(native-inputs
(list util-linux))
(inputs
(list util-linux ; for 'getopt'
libxml2 ; for 'xmllint'
libxslt)) ; for 'xsltproc'
+ (native-search-paths %libxslt-search-paths)
(home-page "http://cyberelk.net/tim/software/xmlto/")
(synopsis "Front-end to an XSL toolchain")
(description
@@ -1748,7 +1766,6 @@ modular implementation of XML-RPC for C and C++.")
(native-inputs
(list docbook-xml-4.1.2
docbook-xsl
- libxml2 ;for XML_CATALOG_DIR
xmlto
;; Dependencies to regenerate the 'configure' script.
autoconf
@@ -1786,14 +1803,7 @@ modular implementation of XML-RPC for C and C++.")
(("^\tOSGMLNORM=`echo osgmlnorm\\|sed '\\$\\(transform\\)'`\\\\")
"\tOSGMLNORM=`echo osgmlnorm|sed '$(transform)'`")
(("^\t\\$\\(SHELL\\)\n") "")))))))
- ;; $SGML_CATALOG_FILES lists 'catalog' or 'CATALOG' or '*.cat' files found
- ;; under the 'sgml' sub-directory of any given package.
- (native-search-paths (list (search-path-specification
- (variable "SGML_CATALOG_FILES")
- (separator ":")
- (files '("sgml"))
- (file-pattern "^catalog$|^CATALOG$|^.*\\.cat$")
- (file-type 'regular))))
+ (native-search-paths (list $SGML_CATALOG_FILES))
(home-page "https://openjade.sourceforge.net/")
(synopsis "Suite of SGML/XML processing tools")
(description "OpenSP is an object-oriented toolkit for SGML parsing and
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 74059a2691..800745263c 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -34,6 +34,7 @@
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2021 qblade <qblade@protonmail.com>
;;; Copyright © 2021 Lu Hui <luhux76@gmail.com>
+;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com>
;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2023, 2024 John Kehayias <john.kehayias@protonmail.com>
@@ -1288,17 +1289,17 @@ with the Cygwin XWin server when running X11 in a rootless mode.")
(define-public libxcomposite
(package
(name "libxcomposite")
- (version "0.4.5")
+ (version "0.4.6")
(source
(origin
(method url-fetch)
(uri (string-append
"mirror://xorg/individual/lib/libXcomposite-"
version
- ".tar.bz2"))
+ ".tar.xz"))
(sha256
(base32
- "13sfcglvz87vl58hd9rszwr73z0z4nwga3c12rfh7f5s2ln8l8dk"))))
+ "11rcvk380l5540gfqy9p8mbzw3l1p5g8l214p870f28smvqbqh7y"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags '("--disable-static")))
@@ -1460,17 +1461,17 @@ treat it as part of their software base when porting.")
(define-public libxres
(package
(name "libxres")
- (version "1.2.1")
+ (version "1.2.2")
(source
(origin
(method url-fetch)
(uri (string-append
"mirror://xorg/individual/lib/libXres-"
version
- ".tar.bz2"))
+ ".tar.xz"))
(sha256
(base32
- "049b7dk6hx47161hg47ryjrm6pwsp27r5pby05b0wqb1pcggprmn"))))
+ "0pvlzahqd8fcyq10wi7ipbxvgrg93hn0vqsymhw7b6sb93rlcx4s"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags '("--disable-static")))
@@ -4049,15 +4050,15 @@ it for output on various types of printers.")
(define-public xprop
(package
(name "xprop")
- (version "1.2.5")
+ (version "1.2.6")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://xorg/individual/app/xprop-"
- version ".tar.bz2"))
+ version ".tar.xz"))
(sha256
(base32
- "18ckr8g1z50zkc01hprkpm1npwbq32yqib4b3l98c95z2q1yv4lv"))))
+ "0vjqnn42gscw1z2wdj24kdwjwvd7mw58pj0nm9203k1fn4jqa2sq"))))
(build-system gnu-build-system)
(inputs
(list libx11 xorgproto))
@@ -4148,17 +4149,17 @@ up your screen.")
(define-public xset
(package
(name "xset")
- (version "1.2.4")
+ (version "1.2.5")
(source
(origin
(method url-fetch)
(uri (string-append
"mirror://xorg/individual/app/xset-"
version
- ".tar.bz2"))
+ ".tar.xz"))
(sha256
(base32
- "0my987wjvra7l92ry6q44ky383yg3phzxhdbn3lqhapm1ll9bzg4"))))
+ "0bsyyx3k32k9vpb8x3ks7hlfr03nm0i14fv3cg6n4f2vcdajsscz"))))
(build-system gnu-build-system)
(inputs
(list xorgproto libxmu libxext libx11))
@@ -4660,7 +4661,7 @@ protocol and arbitrary X extension protocol.")
(,(dirname
(search-input-file inputs "/bin/mkfontscale"))))))))))
(inputs
- (list mkfontscale))
+ (list bash-minimal mkfontscale))
(native-inputs
(list pkg-config automake)) ;For up to date 'config.guess' and 'config.sub'.
(home-page "https://www.x.org/wiki/")
@@ -4707,17 +4708,17 @@ common definitions and porting layer.")
(define-public libice
(package
(name "libice")
- (version "1.0.10")
+ (version "1.1.1")
(source
(origin
(method url-fetch)
(uri (string-append
"mirror://xorg/individual/lib/libICE-"
version
- ".tar.bz2"))
+ ".tar.xz"))
(sha256
(base32
- "0j638yvmyna2k4mz465jywgdybgdchdqppfx6xfazg7l5khxr1kg"))))
+ "0lg4sddalwmmzsnxv3fgdm2hzqp66j8b3syc0ancfhi9yzx7mrq3"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags '("--disable-static")))
@@ -6312,7 +6313,7 @@ X11 servers, Windows, or macOS.")
`(#:modules ((guix build gnu-build-system)
(guix build utils)
(guix build emacs-utils))
- #:imported-modules (,@%gnu-build-system-modules
+ #:imported-modules (,@%default-gnu-imported-modules
(guix build emacs-utils))
#:configure-flags
(list "--with-anthy-utf8"
@@ -6448,14 +6449,14 @@ mouse click. You can do everything mouse can do with a keyboard.")
(define-public transset
(package
(name "transset")
- (version "1.0.2")
+ (version "1.0.3")
(source (origin
(method url-fetch)
(uri (string-append "https://www.x.org/releases/individual/app/"
name "-" version ".tar.gz"))
(sha256
(base32
- "0rya202y87dwl35jnmq8hs3arzdrv5z4vf1xmi0py4rnmhdpszaw"))))
+ "095q1xnr0m1y88gkk85g64plypk813fif0gcfm9bxpmc3nl0vfmd"))))
(build-system gnu-build-system)
(native-inputs
(list pkg-config))
diff --git a/gnu/packages/zig.scm b/gnu/packages/zig.scm
index 6e399dfce3..6994d48818 100644
--- a/gnu/packages/zig.scm
+++ b/gnu/packages/zig.scm
@@ -45,8 +45,7 @@
(sha256
(base32 "0nfvgg23sw50ksy0z0ml6lkdsvmd0278mq29m23dbb2jsirkhry7"))
(patches (search-patches "zig-0.9-riscv-support.patch"
- "zig-use-system-paths.patch"
- "zig-do-not-link-against-librt.patch"))))
+ "zig-use-system-paths.patch"))))
(build-system cmake-build-system)
(arguments
(list
@@ -148,8 +147,7 @@ toolchain. Among other features it provides
(file-name (git-file-name name version))
(sha256
(base32 "1sh5xjsksl52i4cfv1qj36sz5h0ln7cq4pdhgs3960mk8a90im7b"))
- (patches (search-patches "zig-do-not-link-against-librt.patch"
- "zig-use-baseline-cpu-by-default.patch"))))
+ (patches (search-patches "zig-use-baseline-cpu-by-default.patch"))))
(arguments
(substitute-keyword-arguments (package-arguments zig-0.9)
((#:configure-flags flags ''())
diff --git a/guix/build-system/agda.scm b/guix/build-system/agda.scm
index 64983dff60..ec6ad860e0 100644
--- a/guix/build-system/agda.scm
+++ b/guix/build-system/agda.scm
@@ -38,7 +38,7 @@
(define %agda-build-system-modules
`((guix build agda-build-system)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
(define %default-modules
'((guix build agda-build-system)
@@ -69,7 +69,6 @@
(list "ghc" (default-haskell))
(standard-packages))
'())
- ,(assoc "locales" (standard-packages))
,@native-inputs))
(outputs outputs)
(build agda-build)
diff --git a/guix/build-system/android-ndk.scm b/guix/build-system/android-ndk.scm
index aa7cc06279..b8cd56b871 100644
--- a/guix/build-system/android-ndk.scm
+++ b/guix/build-system/android-ndk.scm
@@ -31,7 +31,7 @@
(define %android-ndk-build-system-modules
;; Build-side modules imported by default.
`((guix build android-ndk-build-system)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
(define* (android-ndk-build name inputs
#:key
diff --git a/guix/build-system/ant.scm b/guix/build-system/ant.scm
index 84bf951fab..9816cc061c 100644
--- a/guix/build-system/ant.scm
+++ b/guix/build-system/ant.scm
@@ -43,7 +43,7 @@
(guix build maven plugin)
(guix build maven pom)
(guix build java-utils)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
(define (default-jdk)
"Return the default JDK package."
diff --git a/guix/build-system/asdf.scm b/guix/build-system/asdf.scm
index 2b17cee37b..26b5a5008a 100644
--- a/guix/build-system/asdf.scm
+++ b/guix/build-system/asdf.scm
@@ -56,7 +56,7 @@
`((guix build asdf-build-system)
(guix build lisp-utils)
(guix build union)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
(define %asdf-build-modules
;; Used (visible) build-side modules
diff --git a/guix/build-system/cargo.scm b/guix/build-system/cargo.scm
index c029cc1dda..658a2e525e 100644
--- a/guix/build-system/cargo.scm
+++ b/guix/build-system/cargo.scm
@@ -70,7 +70,7 @@ to NAME and VERSION."
(define %cargo-utils-modules
;; Build-side modules imported by default.
`((guix build cargo-utils)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
(define %cargo-build-system-modules
;; Build-side modules imported by default.
diff --git a/guix/build-system/chicken.scm b/guix/build-system/chicken.scm
index 9f518e66e6..e6fcfa7ee3 100644
--- a/guix/build-system/chicken.scm
+++ b/guix/build-system/chicken.scm
@@ -42,7 +42,7 @@ EXTENSION is the file name extension, such as '.tar.gz'."
;; Build-side modules imported and used by default.
`((guix build chicken-build-system)
(guix build union)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
(define (default-chicken)
;; Lazily resolve the binding to avoid a circular dependency.
diff --git a/guix/build-system/cmake.scm b/guix/build-system/cmake.scm
index aa187c9844..0b8a651ee0 100644
--- a/guix/build-system/cmake.scm
+++ b/guix/build-system/cmake.scm
@@ -42,7 +42,7 @@
(define %cmake-build-system-modules
;; Build-side modules imported by default.
`((guix build cmake-build-system)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
(define (default-cmake target)
"Return the default CMake package."
@@ -116,6 +116,7 @@
(imported-modules %cmake-build-system-modules)
(modules '((guix build cmake-build-system)
(guix build utils)))
+ allowed-references
disallowed-references)
"Build SOURCE using CMAKE, and with INPUTS. This assumes that SOURCE
provides a 'CMakeLists.txt' file as its build system."
@@ -158,6 +159,7 @@ provides a 'CMakeLists.txt' file as its build system."
#:target #f
#:graft? #f
#:substitutable? substitutable?
+ #:allowed-references allowed-references
#:disallowed-references disallowed-references
#:guile-for-build guile)))
@@ -193,6 +195,7 @@ provides a 'CMakeLists.txt' file as its build system."
(imported-modules %cmake-build-system-modules)
(modules '((guix build cmake-build-system)
(guix build utils)))
+ allowed-references
disallowed-references)
"Cross-build NAME using CMAKE for TARGET, where TARGET is a GNU triplet and
with INPUTS. This assumes that SOURCE provides a 'CMakeLists.txt' file as its
@@ -250,6 +253,8 @@ build system."
#:target target
#:graft? #f
#:substitutable? substitutable?
+ #:allowed-references allowed-references
+ #:disallowed-references disallowed-references
#:guile-for-build guile)))
(define cmake-build-system
diff --git a/guix/build-system/copy.scm b/guix/build-system/copy.scm
index d58931b33c..1f2937e0f1 100644
--- a/guix/build-system/copy.scm
+++ b/guix/build-system/copy.scm
@@ -46,7 +46,7 @@
(define %copy-build-system-modules
;; Build-side modules imported by default.
`((guix build copy-build-system)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
(define (default-glibc)
"Return the default glibc package."
diff --git a/guix/build-system/dub.scm b/guix/build-system/dub.scm
index 951c084398..831a34af0d 100644
--- a/guix/build-system/dub.scm
+++ b/guix/build-system/dub.scm
@@ -59,7 +59,7 @@
(define %dub-build-system-modules
;; Build-side modules imported by default.
`((guix build dub-build-system)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
(define* (dub-build name inputs
#:key
diff --git a/guix/build-system/elm.scm b/guix/build-system/elm.scm
index f5321f811b..7405db3d98 100644
--- a/guix/build-system/elm.scm
+++ b/guix/build-system/elm.scm
@@ -88,7 +88,7 @@ given VERSION with sha256 checksum HASH."
`((guix build elm-build-system)
(guix build json)
(guix build union)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
(define %elm-default-modules
;; Modules in scope in the build-side environment.
diff --git a/guix/build-system/emacs.scm b/guix/build-system/emacs.scm
index ebf97a5344..03273d738b 100644
--- a/guix/build-system/emacs.scm
+++ b/guix/build-system/emacs.scm
@@ -46,7 +46,7 @@
;; Build-side modules imported by default.
`((guix build emacs-build-system)
(guix build emacs-utils)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
(define (default-emacs)
"Return the default Emacs package."
diff --git a/guix/build-system/font.scm b/guix/build-system/font.scm
index c57c304f52..a4eeca00ca 100644
--- a/guix/build-system/font.scm
+++ b/guix/build-system/font.scm
@@ -40,7 +40,7 @@
(define %font-build-system-modules
;; Build-side modules imported by default.
`((guix build font-build-system)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
(define* (lower name
#:key source inputs native-inputs outputs system target
@@ -76,6 +76,7 @@
(tests? #t)
(test-target "test")
(configure-flags ''())
+ (license-file-regexp '%license-file-regexp)
(phases '%standard-phases)
(outputs '("out"))
(search-paths '())
@@ -97,6 +98,7 @@
#:system #$system
#:test-target #$test-target
#:tests? #$tests?
+ #:license-file-regexp #$license-file-regexp
#:phases #$(if (pair? phases)
(sexp->gexp phases)
phases)
diff --git a/guix/build-system/glib-or-gtk.scm b/guix/build-system/glib-or-gtk.scm
index 726d19efad..5d026ec5ab 100644
--- a/guix/build-system/glib-or-gtk.scm
+++ b/guix/build-system/glib-or-gtk.scm
@@ -72,7 +72,7 @@
(define %glib-or-gtk-build-system-modules
;; Build-side modules imported and used by default.
`((guix build glib-or-gtk-build-system)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
(define (default-glib)
"Return the default glib package from which we use
diff --git a/guix/build-system/gnu.scm b/guix/build-system/gnu.scm
index cdbb547773..3a314d34b7 100644
--- a/guix/build-system/gnu.scm
+++ b/guix/build-system/gnu.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012-2023 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012-2024 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -19,6 +19,7 @@
(define-module (guix build-system gnu)
#:use-module (guix store)
#:use-module (guix utils)
+ #:use-module (guix deprecation)
#:use-module (guix memoization)
#:use-module (guix gexp)
#:use-module (guix monads)
@@ -27,7 +28,8 @@
#:use-module (guix packages)
#:use-module (srfi srfi-1)
#:use-module (ice-9 match)
- #:export (%gnu-build-system-modules
+ #:export (%default-gnu-imported-modules
+ %default-gnu-modules
%strip-flags
%strip-directories
gnu-build
@@ -48,14 +50,17 @@
;;
;; Code:
-(define %gnu-build-system-modules
+(define %default-gnu-imported-modules
;; Build-side modules imported and used by default.
'((guix build gnu-build-system)
(guix build utils)
(guix build gremlin)
(guix elf)))
-(define %default-modules
+(define-deprecated/public-alias %gnu-build-system-modules
+ %default-gnu-imported-modules)
+
+(define %default-gnu-modules
;; Modules in scope in the build-side environment.
'((guix build gnu-build-system)
(guix build utils)))
@@ -184,21 +189,22 @@ flags for VARIABLE, the associated value is augmented."
(input input))
inputs))
- (package (inherit p)
+ (package
+ (inherit p)
(arguments
(let ((args (package-arguments p)))
(substitute-keyword-arguments args
((#:configure-flags flags)
(let* ((var= (string-append variable "="))
(len (string-length var=)))
- `(cons ,(string-append var= value)
- (map (lambda (flag)
- (if (string-prefix? ,var= flag)
- (string-append
- ,(string-append var= value " ")
- (substring flag ,len))
- flag))
- ,flags)))))))
+ #~(cons #$(string-append var= value)
+ (map (lambda (flag)
+ (if (string-prefix? #$var= flag)
+ (string-append
+ #$(string-append var= value " ")
+ (substring flag #$len))
+ flag))
+ #$flags)))))))
(replacement
(let ((replacement (package-replacement p)))
(and replacement
@@ -237,10 +243,10 @@ exact build phases are defined by PHASES."
(arguments
;; Use the right phases and modules.
(substitute-keyword-arguments (package-arguments p)
- ((#:modules modules %default-modules)
+ ((#:modules modules %default-gnu-modules)
`((guix build gnu-dist)
,@modules))
- ((#:imported-modules modules %gnu-build-system-modules)
+ ((#:imported-modules modules %default-gnu-imported-modules)
`((guix build gnu-dist)
,@modules))
((#:phases _ #f)
@@ -356,11 +362,12 @@ standard packages used as implicit inputs of the GNU build system."
(make-dynamic-linker-cache? #t)
(license-file-regexp %license-file-regexp)
(phases '%standard-phases)
- (locale "en_US.utf8")
+ (locale "C.UTF-8")
+ (separate-from-pid1? #t)
(system (%current-system))
(build (nix-system->gnu-triplet system))
- (imported-modules %gnu-build-system-modules)
- (modules %default-modules)
+ (imported-modules %default-gnu-imported-modules)
+ (modules %default-gnu-modules)
(substitutable? #t)
allowed-references
disallowed-references)
@@ -399,6 +406,7 @@ are allowed to refer to."
(sexp->gexp phases)
phases)
#:locale #$locale
+ #:separate-from-pid1? #$separate-from-pid1?
#:bootstrap-scripts #$bootstrap-scripts
#:configure-flags #$(if (pair? configure-flags)
(sexp->gexp configure-flags)
@@ -499,11 +507,12 @@ is one of `host' or `target'."
(license-file-regexp %license-file-regexp)
(phases '%standard-phases)
- (locale "en_US.utf8")
+ (locale "C.UTF-8")
+ (separate-from-pid1? #t)
(system (%current-system))
(build (nix-system->gnu-triplet system))
- (imported-modules %gnu-build-system-modules)
- (modules %default-modules)
+ (imported-modules %default-gnu-imported-modules)
+ (modules %default-gnu-modules)
(substitutable? #t)
allowed-references
disallowed-references)
@@ -545,6 +554,7 @@ platform."
(sexp->gexp phases)
phases)
#:locale #$locale
+ #:separate-from-pid1? #$separate-from-pid1?
#:bootstrap-scripts #$bootstrap-scripts
#:configure-flags #$configure-flags
#:make-flags #$make-flags
diff --git a/guix/build-system/go.scm b/guix/build-system/go.scm
index 0934fded07..329e760f66 100644
--- a/guix/build-system/go.scm
+++ b/guix/build-system/go.scm
@@ -107,7 +107,7 @@ commit hash and its date rather than a proper release tag."
;; Build-side modules imported and used by default.
`((guix build go-build-system)
(guix build union)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
(define (default-go)
;; Lazily resolve the binding to avoid a circular dependency.
@@ -184,6 +184,8 @@ commit hash and its date rather than a proper release tag."
(unpack-path "")
(build-flags ''())
(tests? #t)
+ (parallel-build? #t)
+ (parallel-tests? #t)
(allow-go-reference? #f)
(system (%current-system))
(goarch #f)
@@ -214,6 +216,8 @@ commit hash and its date rather than a proper release tag."
#:unpack-path #$unpack-path
#:build-flags #$build-flags
#:tests? #$tests?
+ #:parallel-build? #$parallel-build?
+ #:parallel-tests? #$parallel-tests?
#:allow-go-reference? #$allow-go-reference?
#:inputs #$(input-tuples->gexp inputs)))))
diff --git a/guix/build-system/guile.scm b/guix/build-system/guile.scm
index bd3bb1c870..ee59bb15f2 100644
--- a/guix/build-system/guile.scm
+++ b/guix/build-system/guile.scm
@@ -36,7 +36,7 @@
(define %guile-build-system-modules
;; Build-side modules imported by default.
`((guix build guile-build-system)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
(define* (lower name
#:key source inputs native-inputs outputs system target
@@ -64,7 +64,7 @@
,@native-inputs
,@(if implicit-inputs?
(map (cute assoc <> (standard-packages))
- '("tar" "gzip" "bzip2" "xz" "locales"))
+ '("tar" "gzip" "bzip2" "xz"))
'())))
(outputs outputs)
(build (if target guile-cross-build guile-build))
diff --git a/guix/build-system/haskell.scm b/guix/build-system/haskell.scm
index f8568e33db..b0019dd014 100644
--- a/guix/build-system/haskell.scm
+++ b/guix/build-system/haskell.scm
@@ -55,7 +55,7 @@ to NAME and VERSION."
(define %haskell-build-system-modules
;; Build-side modules imported by default.
`((guix build haskell-build-system)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
(define (default-haskell)
"Return the default Haskell package."
diff --git a/guix/build-system/julia.scm b/guix/build-system/julia.scm
index b5521e38e4..e098749683 100644
--- a/guix/build-system/julia.scm
+++ b/guix/build-system/julia.scm
@@ -42,7 +42,7 @@
(define %julia-build-system-modules
;; Build-side modules imported by default.
`((guix build julia-build-system)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
(define (default-julia)
"Return the default Julia package."
diff --git a/guix/build-system/linux-module.scm b/guix/build-system/linux-module.scm
index e46195b53c..d0654a923e 100644
--- a/guix/build-system/linux-module.scm
+++ b/guix/build-system/linux-module.scm
@@ -41,7 +41,7 @@
(define %linux-module-build-system-modules
;; Build-side modules imported by default.
`((guix build linux-module-build-system)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
(define (default-linux)
"Return the default Linux package."
diff --git a/guix/build-system/maven.scm b/guix/build-system/maven.scm
index 4bbeaed6a4..03e4e96b89 100644
--- a/guix/build-system/maven.scm
+++ b/guix/build-system/maven.scm
@@ -46,7 +46,7 @@
;; Build-side modules imported by default.
`((guix build maven-build-system)
(guix build maven pom)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
(define (default-maven)
"Return the default maven package."
diff --git a/guix/build-system/minify.scm b/guix/build-system/minify.scm
index b377b506b5..98c6e75980 100644
--- a/guix/build-system/minify.scm
+++ b/guix/build-system/minify.scm
@@ -39,7 +39,7 @@
(define %minify-build-system-modules
;; Build-side modules imported by default.
`((guix build minify-build-system)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
(define (default-esbuild)
"Return the default package to minify JavaScript source files."
diff --git a/guix/build-system/mix.scm b/guix/build-system/mix.scm
index 1b04053d70..7e6cdb2606 100644
--- a/guix/build-system/mix.scm
+++ b/guix/build-system/mix.scm
@@ -38,11 +38,6 @@
#:use-module (srfi srfi-26)
#:export (mix-build-system hexpm-uri))
-;; Lazily resolve bindings to avoid circular dependencies.
-(define (default-glibc-utf8-locales)
- (let* ((base (resolve-interface '(gnu packages base))))
- (module-ref base 'glibc-utf8-locales)))
-
(define (default-elixir-hex)
(let ((elixir (resolve-interface '(gnu packages elixir))))
(module-ref elixir 'elixir-hex)))
@@ -144,7 +139,6 @@ See: https://github.com/hexpm/specifications/blob/main/endpoints.md"
#:key
(elixir (default-elixir))
(elixir-hex (default-elixir-hex))
- (glibc-utf8-locales (default-glibc-utf8-locales))
(inputs '())
(native-inputs '())
(propagated-inputs '())
@@ -159,11 +153,10 @@ See: https://github.com/hexpm/specifications/blob/main/endpoints.md"
(let ((private-keywords
'(#:inputs #:native-inputs
#:outputs #:system #:target
- #:elixir #:elixir-hex #:glibc-utf8-locales
+ #:elixir #:elixir-hex
#:rebar3 #:erlang))
(build-inputs
`(,@(standard-packages)
- ("glibc-utf8-locales" ,glibc-utf8-locales)
("erlang" ,(lookup-package-input elixir "erlang"))
("rebar3" ,rebar3)
("elixir" ,elixir)
diff --git a/guix/build-system/node.scm b/guix/build-system/node.scm
index 3f73390809..57fe5f6030 100644
--- a/guix/build-system/node.scm
+++ b/guix/build-system/node.scm
@@ -37,7 +37,7 @@
;; Build-side modules imported by default.
`((guix build node-build-system)
(guix build json)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
(define (default-node)
"Return the default Node package."
diff --git a/guix/build-system/ocaml.scm b/guix/build-system/ocaml.scm
index 582d00b4cd..2f2e6dd62e 100644
--- a/guix/build-system/ocaml.scm
+++ b/guix/build-system/ocaml.scm
@@ -65,7 +65,7 @@
(define %ocaml-build-system-modules
;; Build-side modules imported by default.
`((guix build ocaml-build-system)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
(define (default-ocaml)
"Return the default OCaml package."
diff --git a/guix/build-system/perl.scm b/guix/build-system/perl.scm
index 3f7a2dea27..98d48fec7c 100644
--- a/guix/build-system/perl.scm
+++ b/guix/build-system/perl.scm
@@ -45,7 +45,7 @@
(define %perl-build-system-modules
;; Build-side modules imported by default.
`((guix build perl-build-system)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
(define (default-perl)
"Return the default Perl package."
diff --git a/guix/build-system/pyproject.scm b/guix/build-system/pyproject.scm
index 2a2c3af3f3..9a27ebee35 100644
--- a/guix/build-system/pyproject.scm
+++ b/guix/build-system/pyproject.scm
@@ -98,7 +98,9 @@
(guile #f)
(imported-modules %pyproject-build-system-modules)
(modules '((guix build pyproject-build-system)
- (guix build utils))))
+ (guix build utils)))
+ allowed-references
+ disallowed-references)
"Build SOURCE using PYTHON, and with INPUTS."
(define build
(with-imported-modules imported-modules
@@ -131,7 +133,9 @@
#:system system
#:graft? #f ;consistent with 'gnu-build'
#:target #f
- #:guile-for-build guile)))
+ #:guile-for-build guile
+ #:allowed-references allowed-references
+ #:disallowed-references disallowed-references)))
(define pyproject-build-system
(build-system
diff --git a/guix/build-system/python.scm b/guix/build-system/python.scm
index cca009fb28..a51c033d01 100644
--- a/guix/build-system/python.scm
+++ b/guix/build-system/python.scm
@@ -59,7 +59,7 @@ extension, such as '.tar.gz'."
(define %python-build-system-modules
;; Build-side modules imported by default.
`((guix build python-build-system)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
(define (default-python)
"Return the default Python package."
@@ -179,7 +179,9 @@ pre-defined variants."
(guile #f)
(imported-modules %python-build-system-modules)
(modules '((guix build python-build-system)
- (guix build utils))))
+ (guix build utils)))
+ allowed-references
+ disallowed-references)
"Build SOURCE using PYTHON, and with INPUTS. This assumes that SOURCE
provides a 'setup.py' file as its build system."
(define build
@@ -204,14 +206,15 @@ provides a 'setup.py' file as its build system."
search-paths))
#:inputs %build-inputs)))))
-
(mlet %store-monad ((guile (package->derivation (or guile (default-guile))
system #:graft? #f)))
(gexp->derivation name build
#:system system
#:graft? #f ;consistent with 'gnu-build'
#:target #f
- #:guile-for-build guile)))
+ #:guile-for-build guile
+ #:allowed-references allowed-references
+ #:disallowed-references disallowed-references)))
(define python-build-system
(build-system
diff --git a/guix/build-system/qt.scm b/guix/build-system/qt.scm
index 978aed0fc1..bce2ead212 100644
--- a/guix/build-system/qt.scm
+++ b/guix/build-system/qt.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
@@ -142,7 +143,9 @@
(system (%current-system))
(imported-modules %qt-build-system-modules)
(modules '((guix build qt-build-system)
- (guix build utils))))
+ (guix build utils)))
+ allowed-references
+ disallowed-references)
"Build SOURCE using CMAKE, and with INPUTS. This assumes that SOURCE
provides a 'CMakeLists.txt' file as its build system."
(define builder
@@ -181,7 +184,9 @@ provides a 'CMakeLists.txt' file as its build system."
(gexp->derivation name builder
#:graft? #f ;consistent with 'gnu-build'
#:system system
- #:guile-for-build guile)))
+ #:guile-for-build guile
+ #:allowed-references allowed-references
+ #:disallowed-references disallowed-references)))
;;;
@@ -214,7 +219,9 @@ provides a 'CMakeLists.txt' file as its build system."
(build (nix-system->gnu-triplet system))
(imported-modules %qt-build-system-modules)
(modules '((guix build qt-build-system)
- (guix build utils))))
+ (guix build utils)))
+ allowed-references
+ disallowed-references)
"Cross-build NAME using CMAKE for TARGET, where TARGET is a GNU triplet and
with INPUTS. This assumes that SOURCE provides a 'CMakeLists.txt' file as its
build system."
@@ -268,7 +275,9 @@ build system."
(gexp->derivation name builder
#:graft? #f ;consistent with 'gnu-build'
#:system system
- #:guile-for-build guile)))
+ #:guile-for-build guile
+ #:allowed-references allowed-references
+ #:disallowed-references disallowed-references)))
(define qt-build-system
(build-system
diff --git a/guix/build-system/r.scm b/guix/build-system/r.scm
index 7ab4db82b6..0e6c1d8577 100644
--- a/guix/build-system/r.scm
+++ b/guix/build-system/r.scm
@@ -68,7 +68,7 @@ release corresponding to NAME and VERSION."
(define %r-build-system-modules
;; Build-side modules imported by default.
`((guix build r-build-system)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
(define (default-r)
"Return the default R package."
diff --git a/guix/build-system/rakudo.scm b/guix/build-system/rakudo.scm
index 3b30fdfd0e..ee13c50791 100644
--- a/guix/build-system/rakudo.scm
+++ b/guix/build-system/rakudo.scm
@@ -41,7 +41,7 @@
(define %rakudo-build-system-modules
;; Build-side modules imported by default.
`((guix build rakudo-build-system)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
(define (default-rakudo)
"Return the default Rakudo package."
diff --git a/guix/build-system/rebar.scm b/guix/build-system/rebar.scm
index de1294ec3f..7c7cc5870f 100644
--- a/guix/build-system/rebar.scm
+++ b/guix/build-system/rebar.scm
@@ -56,7 +56,7 @@ and VERSION."
(define %rebar-build-system-modules
;; Build-side modules imported by default.
`((guix build rebar-build-system)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
(define (default-rebar3)
"Return the default Rebar3 package."
diff --git a/guix/build-system/renpy.scm b/guix/build-system/renpy.scm
index 3039e3c63b..015dd7c210 100644
--- a/guix/build-system/renpy.scm
+++ b/guix/build-system/renpy.scm
@@ -44,7 +44,7 @@
`((guix build renpy-build-system)
(guix build json)
(guix build python-build-system)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
(define* (lower name
#:key source inputs native-inputs outputs system target
diff --git a/guix/build-system/ruby.scm b/guix/build-system/ruby.scm
index a3793a9381..33aab5f719 100644
--- a/guix/build-system/ruby.scm
+++ b/guix/build-system/ruby.scm
@@ -39,7 +39,7 @@ NAME and VERSION."
(define %ruby-build-system-modules
;; Build-side modules imported by default.
`((guix build ruby-build-system)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
(define (default-ruby)
"Return the default Ruby package."
diff --git a/guix/build-system/scons.scm b/guix/build-system/scons.scm
index 046ddef740..e76c419b1e 100644
--- a/guix/build-system/scons.scm
+++ b/guix/build-system/scons.scm
@@ -39,7 +39,7 @@
(define %scons-build-system-modules
;; Build-side modules imported by default.
`((guix build scons-build-system)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
(define (default-scons)
"Return the default SCons package."
diff --git a/guix/build-system/texlive.scm b/guix/build-system/texlive.scm
index 88372faa58..2baa35466b 100644
--- a/guix/build-system/texlive.scm
+++ b/guix/build-system/texlive.scm
@@ -78,7 +78,7 @@ level package ID."
;; Build-side modules imported by default.
`((guix build texlive-build-system)
(guix build union)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
(define (default-texlive-bin)
"Return the default texlive-bin package."
diff --git a/guix/build-system/waf.scm b/guix/build-system/waf.scm
index 91b3d0d100..5f24615514 100644
--- a/guix/build-system/waf.scm
+++ b/guix/build-system/waf.scm
@@ -42,7 +42,7 @@
(define %waf-build-system-modules
;; Build-side modules imported by default.
`((guix build waf-build-system)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
(define* (lower name
#:key source inputs native-inputs outputs system target
diff --git a/guix/build-system/zig.scm b/guix/build-system/zig.scm
index 1fa4782a2e..ad8a96b607 100644
--- a/guix/build-system/zig.scm
+++ b/guix/build-system/zig.scm
@@ -39,7 +39,7 @@
(define %zig-build-system-modules
;; Build-side modules imported by default.
`((guix build zig-build-system)
- ,@%gnu-build-system-modules))
+ ,@%default-gnu-imported-modules))
(define* (zig-build name inputs
#:key
diff --git a/guix/build/agda-build-system.scm b/guix/build/agda-build-system.scm
index 49836d5dea..8770710b90 100644
--- a/guix/build/agda-build-system.scm
+++ b/guix/build/agda-build-system.scm
@@ -29,7 +29,8 @@
(define* (set-locpath #:key inputs native-inputs #:allow-other-keys)
(let ((locales (assoc-ref (or native-inputs inputs) "locales")))
- (setenv "GUIX_LOCPATH" (string-append locales "/lib/locale"))))
+ (when locales
+ (setenv "GUIX_LOCPATH" (string-append locales "/lib/locale")))))
(define %agda-possible-extensions
(cons
diff --git a/guix/build/cargo-build-system.scm b/guix/build/cargo-build-system.scm
index 70ddf063d2..fc200764c7 100644
--- a/guix/build/cargo-build-system.scm
+++ b/guix/build/cargo-build-system.scm
@@ -119,7 +119,7 @@ libraries or executables."
(error "Possible pre-generated files found:" pregenerated-files))))
(define* (configure #:key inputs
- target
+ target system
(vendor-dir "guix-vendor")
#:allow-other-keys)
"Vendor Cargo.toml dependencies as guix inputs."
@@ -179,6 +179,10 @@ libraries or executables."
;; Prevent targeting the build machine.
(setenv "CRATE_CC_NO_DEFAULTS" "1"))
+ ;; Support 16k kernel page sizes on aarch64 with jemalloc.
+ (when (string-prefix? "aarch64" (or target system))
+ (setenv "JEMALLOC_SYS_WITH_LG_PAGE" "14"))
+
;; Configure cargo to actually use this new directory with all the crates.
(setenv "CARGO_HOME" (string-append (getcwd) "/.cargo"))
(mkdir-p ".cargo")
diff --git a/guix/build/copy-build-system.scm b/guix/build/copy-build-system.scm
index fb2d1db056..25d3f4c57a 100644
--- a/guix/build/copy-build-system.scm
+++ b/guix/build/copy-build-system.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2023 Bruno Victal <mirai@makinata.eu>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -40,9 +41,9 @@
An install plan is a list of plans in the form:
- (SOURCE TARGET [FILTERS])
+ (SOURCE TARGET [FILTERS] [#:output OUTPUT])
-In the above, FILTERS are optional.
+In the above, FILTERS and OUTPUT are optional.
- When SOURCE matches a file or directory without trailing slash, install it to
TARGET.
@@ -63,6 +64,9 @@ In the above, FILTERS are optional.
If both `#:include*` and `#:exclude*` are specified, the exclusion is done
on the inclusion list.
+- When a package has multiple outputs, the `#:output` argument can be used
+to specify which output label the files should be installed to.
+
Examples:
- `(\"foo/bar\" \"share/my-app/\")`: Install bar to \"share/my-app/bar\".
@@ -72,7 +76,9 @@ Examples:
- `(\"foo/\" \"share/my-app\" #:include (\"sub/file\"))`: Install only \"foo/sub/file\" to
\"share/my-app/sub/file\".
- `(\"foo/sub\" \"share/my-app\" #:include (\"file\"))`: Install \"foo/sub/file\" to
-\"share/my-app/file\"."
+\"share/my-app/file\".
+- `(\"foo/doc\" \"share/my-app/doc\" #:output \"doc\")`: Install \"foo/doc\" to
+\"share/my-app/doc\" within the \"doc\" output."
(define (install-simple source target)
"Install SOURCE to TARGET.
TARGET must point to a store location.
@@ -133,8 +139,10 @@ given, then the predicate always returns DEFAULT-VALUE."
(string-append target "/")))
file-list))))
- (define* (install source target #:key include exclude include-regexp exclude-regexp)
- (let ((final-target (string-append (assoc-ref outputs "out") "/" target))
+ (define* (install source target
+ #:key include exclude include-regexp exclude-regexp
+ (output "out"))
+ (let ((final-target (string-append (assoc-ref outputs output) "/" target))
(filters? (or include exclude include-regexp exclude-regexp)))
(when (and (not (file-is-directory? source))
filters?)
diff --git a/guix/build/font-build-system.scm b/guix/build/font-build-system.scm
index e4784bc17d..0b1542394a 100644
--- a/guix/build/font-build-system.scm
+++ b/guix/build/font-build-system.scm
@@ -23,6 +23,7 @@
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:export (%standard-phases
+ %license-file-regexp
font-build))
;; Commentary:
@@ -56,6 +57,11 @@ archive, or a font file."
(for-each (cut install-file <> (string-append fonts "/web"))
(find-files source "\\.(woff|woff2)$"))))
+(define %license-file-regexp
+ ;; Regexp matching license files commonly found in font packages.
+ "^((COPY(ING|RIGHT)|LICEN[CS]E).*\
+|(([Cc]opy[Rr]ight|[Ll]icen[cs]es?|IPA_.*|OFL(-?1\\.?1)?)(\\.(txt|md)?))$)")
+
(define %standard-phases
(modify-phases gnu:%standard-phases
(replace 'unpack unpack)
diff --git a/guix/build/gnu-build-system.scm b/guix/build/gnu-build-system.scm
index ef5873d793..0b94416a8d 100644
--- a/guix/build/gnu-build-system.scm
+++ b/guix/build/gnu-build-system.scm
@@ -2,7 +2,7 @@
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2020 Brendan Tildesley <mail@brendan.scot>
-;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -72,6 +72,42 @@ there are none."
((first . _) first)
(_ #f)))
+(define* (separate-from-pid1 #:key (separate-from-pid1? #t)
+ #:allow-other-keys)
+ "When running as PID 1 and SEPARATE-FROM-PID1? is true, run build phases as
+a child process; PID 1 then becomes responsible for reaping child processes."
+ (if separate-from-pid1?
+ (if (= 1 (getpid))
+ (dynamic-wind
+ (const #t)
+ (lambda ()
+ (match (primitive-fork)
+ (0 #t)
+ (builder-pid
+ (format (current-error-port)
+ "build process now running as PID ~a~%"
+ builder-pid)
+ (let loop ()
+ ;; Running as PID 1 so take responsibility for reaping
+ ;; child processes.
+ (match (waitpid WAIT_ANY)
+ ((pid . status)
+ (if (= pid builder-pid)
+ (if (zero? status)
+ (primitive-exit 0)
+ (begin
+ (format (current-error-port)
+ "build process ~a exited with status ~a~%"
+ pid status)
+ (primitive-exit 1)))
+ (loop))))))))
+ (const #t))
+ (format (current-error-port) "not running as PID 1 (PID: ~a)~%"
+ (getpid)))
+ (format (current-error-port)
+ "build process running as PID ~a; not forking~%"
+ (getpid))))
+
(define* (set-paths #:key target inputs native-inputs
(search-paths '()) (native-search-paths '())
#:allow-other-keys)
@@ -123,7 +159,7 @@ there are none."
native-search-paths)))
(define* (install-locale #:key
- (locale "en_US.utf8")
+ (locale "C.UTF-8")
(locale-category LC_ALL)
#:allow-other-keys)
"Try to install LOCALE; emit a warning if that fails. The main goal is to
@@ -608,21 +644,36 @@ and 'man/'. This phase moves directories to the right place if needed."
(((names . directories) ...)
(for-each process-directory directories))))
-(define* (compress-documentation #:key outputs
+(define* (compress-documentation #:key
+ outputs
(compress-documentation? #t)
- (documentation-compressor "gzip")
- (documentation-compressor-flags
+ (info-compressor "gzip")
+ (info-compressor-flags
'("--best" "--no-name"))
- (compressed-documentation-extension ".gz")
+ (info-compressor-file-extension ".gz")
+ (man-compressor (if (which "zstd")
+ "zstd"
+ info-compressor))
+ (man-compressor-flags
+ (if (which "zstd")
+ (list "-19" "--rm"
+ "--threads" (number->string
+ (parallel-job-count)))
+ info-compressor-flags))
+ (man-compressor-file-extension
+ (if (which "zstd")
+ ".zst"
+ info-compressor-file-extension))
#:allow-other-keys)
- "When COMPRESS-DOCUMENTATION? is true, compress man pages and Info files
-found in OUTPUTS using DOCUMENTATION-COMPRESSOR, called with
-DOCUMENTATION-COMPRESSOR-FLAGS."
- (define (retarget-symlink link)
+ "When COMPRESS-INFO-MANUALS? is true, compress Info files found in OUTPUTS
+using INFO-COMPRESSOR, called with INFO-COMPRESSOR-FLAGS. Similarly, when
+COMPRESS-MAN-PAGES? is true, compress man pages files found in OUTPUTS using
+MAN-COMPRESSOR, using MAN-COMPRESSOR-FLAGS."
+ (define (retarget-symlink link extension)
(let ((target (readlink link)))
(delete-file link)
- (symlink (string-append target compressed-documentation-extension)
- (string-append link compressed-documentation-extension))))
+ (symlink (string-append target extension)
+ (string-append link extension))))
(define (has-links? file)
;; Return #t if FILE has hard links.
@@ -640,23 +691,23 @@ DOCUMENTATION-COMPRESSOR-FLAGS."
(symbolic-link? target-absolute))
(lambda args
(if (= ENOENT (system-error-errno args))
- (begin
- (format (current-error-port)
- "The symbolic link '~a' target is missing: '~a'\n"
- symlink target-absolute)
- #f)
+ (format (current-error-port)
+ "The symbolic link '~a' target is missing: '~a'\n"
+ symlink target-absolute)
(apply throw args))))))
- (define (maybe-compress-directory directory regexp)
+ (define (maybe-compress-directory directory regexp
+ compressor
+ compressor-flags
+ compressor-extension)
(when (directory-exists? directory)
(match (find-files directory regexp)
- (() ;nothing to compress
+ (() ;nothing to compress
#t)
- ((files ...) ;one or more files
+ ((files ...) ;one or more files
(format #t
"compressing documentation in '~a' with ~s and flags ~s~%"
- directory documentation-compressor
- documentation-compressor-flags)
+ directory compressor compressor-flags)
(call-with-values
(lambda ()
(partition symbolic-link? files))
@@ -666,20 +717,26 @@ DOCUMENTATION-COMPRESSOR-FLAGS."
;; unchanged ('gzip' would refuse to compress them anyway.)
;; Also, do not retarget symbolic links pointing to other
;; symbolic links, since these are not compressed.
- (for-each retarget-symlink
+ (for-each (cut retarget-symlink <> compressor-extension)
(filter (lambda (symlink)
(and (not (points-to-symlink? symlink))
(string-match regexp symlink)))
symlinks))
- (apply invoke documentation-compressor
- (append documentation-compressor-flags
+ (apply invoke compressor
+ (append compressor-flags
(remove has-links? regular-files)))))))))
(define (maybe-compress output)
(maybe-compress-directory (string-append output "/share/man")
- "\\.[0-9]+$")
+ "\\.[0-9]+[:alpha:]*$"
+ man-compressor
+ man-compressor-flags
+ man-compressor-file-extension)
(maybe-compress-directory (string-append output "/share/info")
- "\\.info(-[0-9]+)?$"))
+ "\\.info(-[0-9]+)?$"
+ info-compressor
+ info-compressor-flags
+ info-compressor-file-extension))
(if compress-documentation?
(match outputs
@@ -872,7 +929,8 @@ that traversing all the RUNPATH entries entails."
;; Standard build phases, as a list of symbol/procedure pairs.
(let-syntax ((phases (syntax-rules ()
((_ p ...) `((p . ,p) ...)))))
- (phases set-SOURCE-DATE-EPOCH set-paths install-locale unpack
+ (phases separate-from-pid1
+ set-SOURCE-DATE-EPOCH set-paths install-locale unpack
bootstrap
patch-usr-bin-file
patch-source-shebangs configure patch-generated-file-shebangs
diff --git a/guix/build/go-build-system.scm b/guix/build/go-build-system.scm
index 7f25e05d0d..5346110e86 100644
--- a/guix/build/go-build-system.scm
+++ b/guix/build/go-build-system.scm
@@ -4,7 +4,7 @@
;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2020 Jack Hill <jackhill@jackhill.us>
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
-;;; Copyright © 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2020, 2021, 2023 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
;;;
;;; This file is part of GNU Guix.
@@ -227,9 +227,10 @@ unpacking."
(when (string-null? import-path)
(display "WARNING: The Go import path is unset.\n"))
- (when (string-null? unpack-path)
- (set! unpack-path import-path))
- (let ((dest (string-append (getenv "GOPATH") "/src/" unpack-path)))
+ (let ((dest (string-append (getenv "GOPATH") "/src/"
+ (if (string-null? unpack-path)
+ import-path
+ unpack-path))))
(mkdir-p dest)
(if (file-is-directory? source)
(copy-recursively source dest #:keep-mtime? #t)
@@ -254,8 +255,12 @@ unpacking."
(_ #f))
inputs))))
-(define* (build #:key import-path build-flags #:allow-other-keys)
+(define* (build #:key import-path build-flags (parallel-build? #t)
+ #:allow-other-keys)
"Build the package named by IMPORT-PATH."
+ (let* ((njobs (if parallel-build? (parallel-job-count) 1)))
+ (setenv "GOMAXPROCS" (number->string njobs)))
+
(with-throw-handler
#t
(lambda _
@@ -272,9 +277,12 @@ unpacking."
(invoke "go" "env"))))
;; Can this also install commands???
-(define* (check #:key tests? import-path #:allow-other-keys)
+(define* (check #:key tests? import-path (parallel-tests? #t)
+ #:allow-other-keys)
"Run the tests for the package named by IMPORT-PATH."
(when tests?
+ (let* ((njobs (if parallel-tests? (parallel-job-count) 1)))
+ (setenv "GOMAXPROCS" (number->string njobs)))
(invoke "go" "test" import-path))
#t)
diff --git a/guix/build/utils.scm b/guix/build/utils.scm
index 2352a627e9..94714bf397 100644
--- a/guix/build/utils.scm
+++ b/guix/build/utils.scm
@@ -9,6 +9,7 @@
;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2021, 2022 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2021 Brendan Tildesley <mail@brendan.scot>
+;;; Copyright © 2023 Carlo Zancanaro <carlo@zancanaro.id.au>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -176,6 +177,7 @@ decompress FILE-NAME, based on its file extension, else false."
((string-suffix? "lz" file-name) "lzip")
((string-suffix? "zip" file-name) "unzip")
((string-suffix? "xz" file-name) "xz")
+ ((string-suffix? "zst" file-name) "zstd")
(else #f))) ;no compression used/unknown file extension
(define (tarball? file-name)
@@ -185,7 +187,7 @@ decompress FILE-NAME, based on its file extension, else false."
(define (%xz-parallel-args)
"The xz arguments required to enable bit-reproducible, multi-threaded
compression."
- (list "--memlimit=50%"
+ (list "--memlimit=20%"
(format #f "--threads=~a" (max 2 (parallel-job-count)))))
@@ -430,32 +432,38 @@ name."
(log (current-output-port))
(follow-symlinks? #f)
(copy-file copy-file)
- keep-mtime? keep-permissions?)
- "Copy SOURCE directory to DESTINATION. Follow symlinks if FOLLOW-SYMLINKS?
-is true; otherwise, just preserve them. Call COPY-FILE to copy regular files.
-When KEEP-MTIME? is true, keep the modification time of the files in SOURCE on
-those of DESTINATION. When KEEP-PERMISSIONS? is true, preserve file
-permissions. Write verbose output to the LOG port."
+ keep-mtime? keep-permissions?
+ (select? (const #t)))
+ "Copy SOURCE directory to DESTINATION. Follow symlinks if FOLLOW-SYMLINKS? is
+true; otherwise, just preserve them. Call COPY-FILE to copy regular files. When
+KEEP-MTIME? is true, keep the modification time of the files in SOURCE on those of
+DESTINATION. When KEEP-PERMISSIONS? is true, preserve file permissions. Write
+verbose output to the LOG port. Call (SELECT? FILE STAT) for each entry in source,
+where FILE is the entry's absolute file name and STAT is the result of 'lstat' (or
+'stat' if FOLLOW-SYMLINKS? is true); exclude entries for which SELECT? does not
+return true."
(define strip-source
(let ((len (string-length source)))
(lambda (file)
(substring file len))))
- (file-system-fold (const #t) ; enter?
+ (file-system-fold (lambda (file stat result) ; enter?
+ (select? file stat))
(lambda (file stat result) ; leaf
(let ((dest (string-append destination
(strip-source file))))
- (format log "`~a' -> `~a'~%" file dest)
- (case (stat:type stat)
- ((symlink)
- (let ((target (readlink file)))
- (symlink target dest)))
- (else
- (copy-file file dest)
- (when keep-permissions?
- (chmod dest (stat:perms stat)))))
- (when keep-mtime?
- (set-file-time dest stat))))
+ (when (select? file stat)
+ (format log "`~a' -> `~a'~%" file dest)
+ (case (stat:type stat)
+ ((symlink)
+ (let ((target (readlink file)))
+ (symlink target dest)))
+ (else
+ (copy-file file dest)
+ (when keep-permissions?
+ (chmod dest (stat:perms stat)))))
+ (when keep-mtime?
+ (set-file-time dest stat)))))
(lambda (dir stat result) ; down
(let ((target (string-append destination
(strip-source dir))))
@@ -729,18 +737,22 @@ effects, such as displaying warnings or error messages."
(define* (alist-cons-before reference key value alist
#:optional (key=? equal?))
"Insert the KEY/VALUE pair before the first occurrence of a pair whose key
-is REFERENCE in ALIST. Use KEY=? to compare keys."
+is REFERENCE in ALIST. Use KEY=? to compare keys. An error is raised when no
+such pair exists."
(let-values (((before after)
(break (match-lambda
((k . _)
(key=? k reference)))
alist)))
- (append before (alist-cons key value after))))
+ (match after
+ ((_ _ ...)
+ (append before (alist-cons key value after))))))
(define* (alist-cons-after reference key value alist
#:optional (key=? equal?))
"Insert the KEY/VALUE pair after the first occurrence of a pair whose key
-is REFERENCE in ALIST. Use KEY=? to compare keys."
+is REFERENCE in ALIST. Use KEY=? to compare keys. An error is raised when
+no such pair exists."
(let-values (((before after)
(break (match-lambda
((k . _)
@@ -748,9 +760,7 @@ is REFERENCE in ALIST. Use KEY=? to compare keys."
alist)))
(match after
((reference after ...)
- (append before (cons* reference `(,key . ,value) after)))
- (()
- (append before `((,key . ,value)))))))
+ (append before (cons* reference `(,key . ,value) after))))))
(define* (alist-replace key value alist #:optional (key=? equal?))
"Replace the first pair in ALIST whose car is KEY with the KEY/VALUE pair.
diff --git a/guix/git-download.scm b/guix/git-download.scm
index d26a814e07..015e7f8962 100644
--- a/guix/git-download.scm
+++ b/guix/git-download.scm
@@ -121,12 +121,6 @@ respective documentation."
(define gnutls
(module-ref (resolve-interface '(gnu packages tls)) 'guile-gnutls))
- (define glibc-locales
- ;; Note: pick the '-final' variant to avoid circular dependency on
- ;; i586-gnu, where 'glibc-utf8-locales' indirectly depends on Git.
- (module-ref (resolve-interface '(gnu packages commencement))
- 'glibc-utf8-locales-final))
-
(define modules
(delete '(guix config)
(source-module-closure '((guix build git)
@@ -151,9 +145,7 @@ respective documentation."
;; Let Guile interpret file names as UTF-8, otherwise
;; 'delete-file-recursively' might fail to delete all of
;; '.git'--see <https://issues.guix.gnu.org/54893>.
- (setenv "GUIX_LOCPATH"
- #+(file-append glibc-locales "/lib/locale"))
- (setlocale LC_ALL "en_US.utf8")
+ (setlocale LC_ALL "C.UTF-8")
;; The 'git submodule' commands expects Coreutils, sed, grep,
;; etc. to be in $PATH. This also ensures that git extensions are
diff --git a/guix/grafts.scm b/guix/grafts.scm
index f4df513daf..d97e112ba4 100644
--- a/guix/grafts.scm
+++ b/guix/grafts.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014-2023 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014-2024 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -96,12 +96,6 @@
"Return a derivation called NAME, which applies GRAFTS to the specified
OUTPUTS of DRV. This procedure performs \"shallow\" grafting in that GRAFTS
are not recursively applied to dependencies of DRV."
- (define glibc-locales
- (module-ref (resolve-interface '(gnu packages commencement))
- (if (target-hurd? system)
- 'glibc-utf8-locales-final/hurd
- 'glibc-utf8-locales-final)))
-
(define mapping
;; List of store item pairs.
(map (lambda (graft)
@@ -114,11 +108,8 @@ are not recursively applied to dependencies of DRV."
(define set-utf8-locale
(and (%graft-with-utf8-locale?)
- #~(begin
- ;; Let Guile interpret file names as UTF-8.
- (setenv "GUIX_LOCPATH"
- #+(file-append glibc-locales "/lib/locale"))
- (setlocale LC_ALL "en_US.utf8"))))
+ ;; Let Guile interpret file names as UTF-8.
+ #~(setlocale LC_ALL "C.UTF-8")))
(define build
diff --git a/guix/import/crate.scm b/guix/import/crate.scm
index 7a25b2243c..0d1e6ea541 100644
--- a/guix/import/crate.scm
+++ b/guix/import/crate.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2019, 2020 Martin Becze <mjbecze@riseup.net>
;;; Copyright © 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
;;; Copyright © 2022 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2023 Simon Tournier <zimon.toutoune@gmail.com>
;;; Copyright © 2023, 2024 Efraim Flashner <efraim@flashner.co.il>
@@ -141,19 +142,36 @@ record or #f if it was not found."
;;; Converting crates to Guix packages.
;;;
+(define* (package-names->package-inputs names #:optional (output #f))
+ "Given a list of PACKAGE-NAMES or (PACKAGE-NAME VERSION) pairs, and an
+optional OUTPUT, tries to generate a quoted list of inputs, as suitable to
+use in an 'inputs' field of a package definition."
+ (define (make-input input version)
+ (cons* input (list 'unquote (string->symbol
+ (if version
+ (string-append input "-" version)
+ input)))
+ (or (and output (list output))
+ '())))
+
+ (map (match-lambda
+ ((input version) (make-input input version))
+ (input (make-input input #f)))
+ names))
+
(define (maybe-cargo-inputs package-names)
(match (package-names->package-inputs package-names)
(()
'())
((package-inputs ...)
- `(#:cargo-inputs ,package-inputs))))
+ `(#:cargo-inputs (,'unquote (list ,@package-inputs))))))
(define (maybe-cargo-development-inputs package-names)
(match (package-names->package-inputs package-names)
(()
'())
((package-inputs ...)
- `(#:cargo-development-inputs ,package-inputs))))
+ `(#:cargo-development-inputs (,'unquote (list ,@package-inputs))))))
(define (maybe-arguments arguments)
(match arguments
diff --git a/guix/import/utils.scm b/guix/import/utils.scm
index 0cf52cdbde..fdfebffc50 100644
--- a/guix/import/utils.scm
+++ b/guix/import/utils.scm
@@ -408,12 +408,10 @@ LENGTH characters."
optional OUTPUT, tries to generate a quoted list of inputs, as suitable to
use in an 'inputs' field of a package definition."
(define (make-input input version)
- (cons* input (list 'unquote (string->symbol
- (if version
- (string-append input "-" version)
- input)))
- (or (and output (list output))
- '())))
+ (let ((name (if version (string-append input "-" version) input)))
+ (if output
+ (list (string->symbol name) output)
+ (string->symbol name))))
(map (match-lambda
((input version) (make-input input version))
@@ -434,7 +432,7 @@ snippet generated is for regular inputs."
(()
'())
((package-inputs ...)
- `((,field-name (,'quasiquote ,package-inputs)))))))
+ `((,field-name (list ,@package-inputs)))))))
(define* (maybe-native-inputs package-names #:optional (output #f))
"Same as MAYBE-INPUTS, but for native inputs."
diff --git a/guix/man-db.scm b/guix/man-db.scm
index 7d9707a592..9cb07493ba 100644
--- a/guix/man-db.scm
+++ b/guix/man-db.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2022, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -17,7 +18,8 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix man-db)
- #:use-module (zlib)
+ #:autoload (zlib) (call-with-gzip-input-port)
+ #:autoload (zstd) (call-with-zstd-input-port)
#:use-module ((guix build utils) #:select (find-files))
#:use-module (gdbm) ;gdbm-ffi
#:use-module (srfi srfi-9)
@@ -48,7 +50,7 @@
(define-record-type <mandb-entry>
(mandb-entry file-name name section synopsis kind)
mandb-entry?
- (file-name mandb-entry-file-name) ;e.g., "../abiword.1.gz"
+ (file-name mandb-entry-file-name) ;e.g., "../abiword.1.zst"
(name mandb-entry-name) ;e.g., "ABIWORD"
(section mandb-entry-section) ;number
(synopsis mandb-entry-synopsis) ;string
@@ -63,7 +65,7 @@
(string<? (basename file1) (basename file2))))))))
(define abbreviate-file-name
- (let ((man-file-rx (make-regexp "(.+)\\.[0-9][a-z]?(\\.gz)?$")))
+ (let ((man-file-rx (make-regexp "(.+)\\.[0-9][a-z]?(\\.(gz|zst))?$")))
(lambda (file)
(match (regexp-exec man-file-rx (basename file))
(#f
@@ -71,6 +73,14 @@
(matches
(match:substring matches 1))))))
+(define (gzip-compressed? file-name)
+ "True if FILE-NAME is suffixed with the '.gz' file extension."
+ (string-suffix? ".gz" file-name))
+
+(define (zstd-compressed? file-name)
+ "True if FILE-NAME is suffixed with the '.zst' file extension."
+ (string-suffix? ".zst" file-name))
+
(define (entry->string entry)
"Return the wire format for ENTRY as a string."
(match entry
@@ -92,7 +102,11 @@
"\t-\t-\t"
- (if (string-suffix? ".gz" file) "gz" "")
+ (cond
+ ((gzip-compressed? file) "gz")
+ ((zstd-compressed? file) "zst")
+ (else ""))
+
"\t"
synopsis "\x00"))))
@@ -148,7 +162,8 @@
(loop (cons line lines))))))
(define* (man-page->entry file #:optional (resolve identity))
- "Parse FILE, a gzipped man page, and return a <mandb-entry> for it."
+ "Parse FILE, a gzip or zstd compressed man page, and return a <mandb-entry>
+for it."
(define (string->number* str)
(if (and (string-prefix? "\"" str)
(> (string-length str) 1)
@@ -156,8 +171,13 @@
(string->number (string-drop (string-drop-right str 1) 1))
(string->number str)))
- ;; Note: This works for both gzipped and uncompressed files.
- (call-with-gzip-input-port (open-file file "r0")
+ (define call-with-input-port*
+ (cond
+ ((gzip-compressed? file) call-with-gzip-input-port)
+ ((zstd-compressed? file) call-with-zstd-input-port)
+ (else call-with-port)))
+
+ (call-with-input-port* (open-file file "r0")
(lambda (port)
(let loop ((name #f)
(section #f)
@@ -191,14 +211,19 @@
(define (man-files directory)
"Return the list of man pages found under DIRECTORY, recursively."
;; Filter the list to ensure that broken symlinks are excluded.
- (filter file-exists? (find-files directory "\\.[0-9][a-z]?(\\.gz)?$")))
+ (filter file-exists?
+ (find-files directory "\\.[0-9][a-z]?(\\.(gz|zst))?$")))
(define (mandb-entries directory)
"Return mandb entries for the man pages found under DIRECTORY, recursively."
(map (lambda (file)
(man-page->entry file
(lambda (link)
- (let ((file (string-append directory "/" link
- ".gz")))
- (and (file-exists? file) file)))))
+ (let ((file-gz (string-append directory "/" link
+ ".gz"))
+ (file-zst (string-append directory "/" link
+ ".zst")))
+ (and (or (file-exists? file-gz)
+ (file-exists? file-zst) file)
+ file)))))
(man-files directory)))
diff --git a/guix/packages.scm b/guix/packages.scm
index bd72b284b1..2c953d18ee 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -5,7 +5,7 @@
;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
;;; Copyright © 2017, 2019, 2020, 2022 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2020, 2021, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2021 Chris Marusich <cmmarusich@gmail.com>
;;; Copyright © 2022 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2022 jgart <jgart@dismail.de>
@@ -861,17 +861,12 @@ identifiers. The result is inferred from the file names of patches."
(module-ref (resolve-interface module) var))))))
`(("tar" ,(ref '(gnu packages base) 'tar))
("xz" ,(ref '(gnu packages compression) 'xz))
+ ("zstd" ,(ref '(gnu packages compression) 'zstd))
("bzip2" ,(ref '(gnu packages compression) 'bzip2))
("gzip" ,(ref '(gnu packages compression) 'gzip))
("lzip" ,(ref '(gnu packages compression) 'lzip))
("unzip" ,(ref '(gnu packages compression) 'unzip))
- ("patch" ,(ref '(gnu packages base) 'patch))
- ("locales"
- ,(parameterize ((%current-target-system #f)
- (%current-system system))
- (canonical
- ((module-ref (resolve-interface '(gnu packages base))
- 'libc-utf8-locales-for-target))))))))
+ ("patch" ,(ref '(gnu packages base) 'patch)))))
(define (default-guile)
"Return the default Guile package used to run the build code of
@@ -931,32 +926,32 @@ specifies modules in scope when evaluating SNIPPET."
;; Return true if DIRECTORY is a checkout (git, svn, etc).
(string-suffix? "-checkout" directory))
- (define (tarxz-name file-name)
- ;; Return a '.tar.xz' file name based on FILE-NAME.
+ (define (tar-file-name file-name ext)
+ ;; Return a '$filename.tar.$ext' file name based on FILE-NAME and EXT.
(let ((base (if (numeric-extension? file-name)
original-file-name
(file-sans-extension file-name))))
(string-append base
(if (equal? (file-extension base) "tar")
- ".xz"
- ".tar.xz"))))
+ (string-append "." ext)
+ (string-append ".tar." ext)))))
(define instantiate-patch
(match-lambda
- ((? string? patch) ;deprecated
+ ((? string? patch) ;deprecated
(local-file patch #:recursive? #t))
- ((? struct? patch) ;origin, local-file, etc.
+ ((? struct? patch) ;origin, local-file, etc.
patch)))
- (let ((tar (lookup-input "tar"))
- (gzip (lookup-input "gzip"))
- (bzip2 (lookup-input "bzip2"))
- (lzip (lookup-input "lzip"))
- (xz (lookup-input "xz"))
- (patch (lookup-input "patch"))
- (locales (lookup-input "locales"))
- (comp (and=> (compressor source-file-name) lookup-input))
- (patches (map instantiate-patch patches)))
+ (let* ((tar (lookup-input "tar"))
+ (gzip (lookup-input "gzip"))
+ (bzip2 (lookup-input "bzip2"))
+ (lzip (lookup-input "lzip"))
+ (xz (lookup-input "xz"))
+ (zstd (lookup-input "zstd"))
+ (patch (lookup-input "patch"))
+ (comp (and=> (compressor source-file-name) lookup-input))
+ (patches (map instantiate-patch patches)))
(define build
(with-imported-modules '((guix build utils))
#~(begin
@@ -965,14 +960,18 @@ specifies modules in scope when evaluating SNIPPET."
(ice-9 regex)
(srfi srfi-1)
(srfi srfi-26)
+ (srfi srfi-34)
+ (srfi srfi-35)
(guix build utils))
;; The --sort option was added to GNU tar in version 1.28, released
;; 2014-07-28. During bootstrap we must cope with older versions.
(define tar-supports-sort?
- (zero? (system* (string-append #+tar "/bin/tar")
+ (guard (c ((message-condition? c) #f))
+ (invoke/quiet (string-append #+tar "/bin/tar")
"cf" "/dev/null" "--files-from=/dev/null"
- "--sort=name")))
+ "--sort=name")
+ #t))
(define (apply-patch patch)
(format (current-error-port) "applying '~a'...~%" patch)
@@ -1013,26 +1012,36 @@ specifies modules in scope when evaluating SNIPPET."
'("--no-recursion"
"--files-from=.file_list"))))
+ (let ((line (cond-expand (guile-2.0 _IOLBF)
+ (else 'line))))
+ (setvbuf (current-output-port) line)
+ (setvbuf (current-error-port) line))
+
;; Encoding/decoding errors shouldn't be silent.
(fluid-set! %default-port-conversion-strategy 'error)
- (when #+locales
- ;; First of all, install a UTF-8 locale so that UTF-8 file names
- ;; are correctly interpreted. During bootstrap, LOCALES is #f.
- (setenv "LOCPATH"
- (string-append #+locales "/lib/locale/"
- #+(and locales
- (version-major+minor
- (package-version locales)))))
- (setlocale LC_ALL "en_US.utf8"))
+ ;; First of all, install a UTF-8 locale so that UTF-8 file names
+ ;; are correctly interpreted. During bootstrap, locales are
+ ;; missing.
+ (let ((locale "C.UTF-8"))
+ (catch 'system-error
+ (lambda ()
+ (setlocale LC_ALL locale))
+ (lambda args
+ (format (current-error-port)
+ "failed to install '~a' locale: ~a~%"
+ locale (system-error-errno args)))))
(setenv "PATH"
- (string-append #+xz "/bin"
- (if #+comp
- (string-append ":" #+comp "/bin")
- "")))
+ (string-join
+ (map (cut string-append <> "/bin")
+ ;; Fallback to xz in case zstd is not
+ ;; available, such as for bootstrap packages.
+ (delete-duplicates
+ (filter-map identity (list #+zstd #+xz #+comp))))
+ ":"))
- (setenv "XZ_DEFAULTS" (string-join (%xz-parallel-args)))
+ (setenv "ZSTD_NBTHREADS" (number->string (parallel-job-count)))
;; SOURCE may be either a directory, a tarball or a simple file.
(let ((name (strip-store-file-name #+source))
@@ -1087,10 +1096,13 @@ specifies modules in scope when evaluating SNIPPET."
(else ;single uncompressed file
(copy-file file #$output)))))))
- (let ((name (if (or (checkout? original-file-name)
- (not (compressor original-file-name)))
- original-file-name
- (tarxz-name original-file-name))))
+ (let* ((ext (if zstd
+ "zst" ;usual case
+ "xz")) ;zstd-less bootstrap-origin
+ (name (if (or (checkout? original-file-name)
+ (not (compressor original-file-name)))
+ original-file-name
+ (tar-file-name original-file-name ext))))
(gexp->derivation name build
#:graft? #f
#:system system
diff --git a/guix/profiles.scm b/guix/profiles.scm
index d41802422b..2545a0aa56 100644
--- a/guix/profiles.scm
+++ b/guix/profiles.scm
@@ -7,7 +7,7 @@
;;; Copyright © 2016, 2017, 2018, 2019, 2021, 2022 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
;;; Copyright © 2017 Huang Ying <huang.ying.caritas@gmail.com>
-;;; Copyright © 2017, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2017, 2021, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2019 Kyle Meyer <kyle@kyleam.com>
;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2020 Danny Milosavljevic <dannym@scratchpost.org>
@@ -1127,11 +1127,6 @@ certificates in the /etc/ssl/certs sub-directories of the packages in
MANIFEST. Single-file bundles are required by programs such as Git and Lynx."
;; See <http://lists.gnu.org/archive/html/guix-devel/2015-02/msg00429.html>
;; for a discussion.
-
- (define libc-utf8-locales-for-target ;lazy reference
- (module-ref (resolve-interface '(gnu packages base))
- 'libc-utf8-locales-for-target))
-
(define build
(with-imported-modules '((guix build utils))
#~(begin
@@ -1163,13 +1158,7 @@ MANIFEST. Single-file bundles are required by programs such as Git and Lynx."
;; Some file names in the NSS certificates are UTF-8 encoded so
;; install a UTF-8 locale.
- (setenv "LOCPATH"
- (string-append #+(libc-utf8-locales-for-target system)
- "/lib/locale/"
- #+(version-major+minor
- (package-version
- (libc-utf8-locales-for-target system)))))
- (setlocale LC_ALL "en_US.utf8")
+ (setlocale LC_ALL "C.UTF-8")
(match (append-map ca-files '#$(manifest-inputs manifest))
(()
@@ -1714,6 +1703,9 @@ the entries in MANIFEST."
(define guile-zlib
(module-ref (resolve-interface '(gnu packages guile)) 'guile-zlib))
+ (define guile-zstd
+ (module-ref (resolve-interface '(gnu packages guile)) 'guile-zstd))
+
(define modules
(delete '(guix config)
(source-module-closure `((guix build utils)
@@ -1722,7 +1714,8 @@ the entries in MANIFEST."
(define build
(with-imported-modules modules
(with-extensions (list gdbm-ffi ;for (guix man-db)
- guile-zlib)
+ guile-zlib
+ guile-zstd)
#~(begin
(use-modules (guix man-db)
(guix build utils)
@@ -1962,8 +1955,7 @@ with a different version number.) Unless ALLOW-UNSUPPORTED-PACKAGES? is true
or TARGET is set, raise an error if MANIFEST contains a package that does not
support SYSTEM.
-When LOCALES? is true, the build is performed under a UTF-8 locale; this adds
-a dependency on the 'glibc-utf8-locales' package.
+When LOCALES? is true, the build is performed under a UTF-8 locale.
When RELATIVE-SYMLINKS? is true, use relative file names for symlink targets.
This is one of the things to do for the result to be relocatable.
@@ -2006,21 +1998,10 @@ are cross-built for TARGET."
(and (derivation? drv) (gexp-input drv)))
extras))
- (define libc-utf8-locales-for-target ;lazy reference
- (module-ref (resolve-interface '(gnu packages base))
- 'libc-utf8-locales-for-target))
-
(define set-utf8-locale
- ;; Some file names (e.g., in 'nss-certs') are UTF-8 encoded so
- ;; install a UTF-8 locale.
- (let ((locales (libc-utf8-locales-for-target
- (or system (%current-system)))))
- #~(begin
- (setenv "LOCPATH"
- #$(file-append locales "/lib/locale/"
- (version-major+minor
- (package-version locales))))
- (setlocale LC_ALL "en_US.utf8"))))
+ ;; Some file names (e.g., in 'nss-certs') are UTF-8 encoded so install a
+ ;; UTF-8 locale. Assume libc comes with a copy of C.UTF-8.
+ #~(setlocale LC_ALL "C.UTF-8"))
(define builder
(with-imported-modules '((guix build profiles)
diff --git a/guix/scripts/refresh.scm b/guix/scripts/refresh.scm
index d858ed07cb..ec7d38c22a 100644
--- a/guix/scripts/refresh.scm
+++ b/guix/scripts/refresh.scm
@@ -43,7 +43,7 @@
#:use-module (guix gnupg)
#:use-module (guix hash)
#:use-module (gnu packages)
- #:use-module ((gnu packages commencement) #:select (%final-inputs))
+ #:use-module ((gnu packages base) #:select (%final-inputs))
#:use-module (ice-9 match)
#:use-module (ice-9 format)
#:use-module (ice-9 regex)
diff --git a/guix/search-paths.scm b/guix/search-paths.scm
index 5375fae34b..27fcb78054 100644
--- a/guix/search-paths.scm
+++ b/guix/search-paths.scm
@@ -35,6 +35,8 @@
$CPLUS_INCLUDE_PATH
$C_INCLUDE_PATH
+ $OBJC_INCLUDE_PATH
+ $OBJCPLUS_INCLUDE_PATH
$LIBRARY_PATH
$GUIX_EXTENSIONS_PATH
$PATH
@@ -42,8 +44,11 @@
$SSL_CERT_DIR
$SSL_CERT_FILE
$TZDIR
+ $SGML_CATALOG_FILES
+ $XML_CATALOG_FILES
%gcc-search-paths
+ %libxslt-search-paths
search-path-specification->sexp
sexp->search-path-specification
@@ -75,18 +80,30 @@
(file-pattern search-path-specification-file-pattern ;#f | string
(default #f)))
-(define $C_INCLUDE_PATH
+(define $CPLUS_INCLUDE_PATH
(search-path-specification
(variable "CPLUS_INCLUDE_PATH")
;; Add 'include/c++' here so that <cstdlib>'s "#include_next
;; <stdlib.h>" finds GCC's <stdlib.h>, not libc's.
(files '("include/c++" "include"))))
-(define $CPLUS_INCLUDE_PATH
+(define $C_INCLUDE_PATH
(search-path-specification
(variable "C_INCLUDE_PATH")
(files '("include"))))
+(define $OBJC_INCLUDE_PATH
+ (search-path-specification
+ (variable "OBJC_INCLUDE_PATH")
+ (files '("include"))))
+
+(define $OBJCPLUS_INCLUDE_PATH
+ (search-path-specification
+ (variable "OBJCPLUS_INCLUDE_PATH")
+ ;; Add 'include/c++' here so that <cstdlib>'s "#include_next
+ ;; <stdlib.h>" finds GCC's <stdlib.h>, not libc's.
+ (files '("include/c++" "include"))))
+
(define $LIBRARY_PATH
(search-path-specification
(variable "LIBRARY_PATH")
@@ -100,6 +117,8 @@
;; the typical /usr/include headers on an FHS system.
(list $C_INCLUDE_PATH
$CPLUS_INCLUDE_PATH
+ $OBJC_INCLUDE_PATH
+ $OBJCPLUS_INCLUDE_PATH
$LIBRARY_PATH))
(define $PATH
@@ -154,6 +173,32 @@
(files '("share/zoneinfo"))
(separator #f))) ;single entry
+;; Some packages (notably libxml2) make use of 'XML_CATALOG_FILES'
+;; and 'SGML_CATALOG_FILES' for remapping URI references or public/system
+;; identifiers to other URI references.
+(define $SGML_CATALOG_FILES
+ ;; $SGML_CATALOG_FILES lists 'catalog' or 'CATALOG' or '*.cat' files found
+ ;; under the 'sgml' sub-directory of any given package.
+ (search-path-specification
+ (variable "SGML_CATALOG_FILES")
+ (separator ":")
+ (files '("sgml"))
+ (file-pattern "^catalog$|^CATALOG$|^.*\\.cat$")
+ (file-type 'regular)))
+
+(define $XML_CATALOG_FILES
+ ;; $XML_CATALOG_FILES lists 'catalog.xml' files found in under the 'xml'
+ ;; sub-directory of any given package.
+ (search-path-specification
+ (variable "XML_CATALOG_FILES")
+ (separator " ")
+ (files '("xml"))
+ (file-pattern "^catalog\\.xml$")
+ (file-type 'regular)))
+
+(define %libxslt-search-paths
+ (list $SGML_CATALOG_FILES $XML_CATALOG_FILES))
+
(define (search-path-specification->sexp spec)
"Return an sexp representing SPEC, a <search-path-specification>. The sexp
corresponds to the arguments expected by `set-path-environment-variable'."
diff --git a/guix/ui.scm b/guix/ui.scm
index d82fa533cc..bca4c385f5 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -531,7 +531,7 @@ See the \"Application Setup\" section in the manual, for more info.\n"))
;; We're now running in the "C" locale. Try to install a UTF-8 locale
;; instead. This one is guaranteed to be available in 'guix' from 'guix
;; pull'.
- (false-if-exception (setlocale LC_ALL "en_US.utf8")))))
+ (false-if-exception (setlocale LC_ALL "C.UTF-8")))))
(define (initialize-guix)
"Perform the usual initialization for stand-alone Guix commands."
diff --git a/tests/build-utils.scm b/tests/build-utils.scm
index 7f4f12ccc7..3babf5d544 100644
--- a/tests/build-utils.scm
+++ b/tests/build-utils.scm
@@ -41,17 +41,17 @@
'((a . 1) (x . 42) (b . 2) (c . 3))
(alist-cons-before 'b 'x 42 '((a . 1) (b . 2) (c . 3))))
-(test-equal "alist-cons-before, reference not found"
- '((a . 1) (b . 2) (c . 3) (x . 42))
- (alist-cons-before 'z 'x 42 '((a . 1) (b . 2) (c . 3))))
+(test-assert "alist-cons-before, reference not found"
+ (not (false-if-exception
+ (alist-cons-before 'z 'x 42 '((a . 1) (b . 2) (c . 3))))))
(test-equal "alist-cons-after"
'((a . 1) (b . 2) (x . 42) (c . 3))
(alist-cons-after 'b 'x 42 '((a . 1) (b . 2) (c . 3))))
-(test-equal "alist-cons-after, reference not found"
- '((a . 1) (b . 2) (c . 3) (x . 42))
- (alist-cons-after 'z 'x 42 '((a . 1) (b . 2) (c . 3))))
+(test-assert "alist-cons-after, reference not found"
+ (not (false-if-exception
+ (alist-cons-after 'z 'x 42 '((a . 1) (b . 2) (c . 3))))))
(test-equal "alist-replace"
'((a . 1) (b . 77) (c . 3))
diff --git a/tests/crate.scm b/tests/crate.scm
index ce2f08aade..fd2ada103e 100644
--- a/tests/crate.scm
+++ b/tests/crate.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2016 David Craven <david@craven.ch>
;;; Copyright © 2019, 2020, 2022 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2020 Martin Becze <mjbecze@riseup.net>
+;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
;;; Copyright © 2023 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2023 David Elsing <david.elsing@posteo.net>
;;;
@@ -500,7 +501,7 @@
('quasiquote
(#:skip-build? #t
#:cargo-inputs
- (("rust-leaf-alice" ('unquote 'rust-leaf-alice-0.7))))))
+ ('unquote (list rust-leaf-alice-0.7)))))
(home-page "http://example.com")
(synopsis "summary")
(description "summary")
@@ -606,7 +607,7 @@
(string-append name "-" version ".tar.gz"))
(sha256
(base32
- (? string? hash)))))
+ (? string? hash)))))
(build-system cargo-build-system)
(arguments ('quasiquote (#:skip-build? #t)))
(home-page "http://example.com")
@@ -649,8 +650,7 @@
(arguments
('quasiquote (#:skip-build? #t
#:cargo-inputs
- (("rust-leaf-bob"
- ('unquote rust-leaf-bob-3))))))
+ ('unquote (list rust-leaf-bob-3)))))
(home-page "http://example.com")
(synopsis "summary")
(description "summary")
@@ -672,12 +672,9 @@
(arguments
('quasiquote (#:skip-build? #t
#:cargo-inputs
- (("rust-intermediate-b"
- ('unquote rust-intermediate-b-1))
- ("rust-leaf-alice"
- ('unquote 'rust-leaf-alice-0.7))
- ("rust-leaf-bob"
- ('unquote rust-leaf-bob-3))))))
+ ('unquote (list rust-intermediate-b-1
+ rust-leaf-alice-0.7
+ rust-leaf-bob-3)))))
(home-page "http://example.com")
(synopsis "summary")
(description "summary")
@@ -698,17 +695,12 @@
(build-system cargo-build-system)
(arguments
('quasiquote (#:cargo-inputs
- (("rust-intermediate-a"
- ('unquote rust-intermediate-a-1))
- ("rust-intermediate-b"
- ('unquote rust-intermediate-b-1))
- ("rust-leaf-alice"
- ('unquote 'rust-leaf-alice-0.7))
- ("rust-leaf-bob"
- ('unquote rust-leaf-bob-3)))
+ ('unquote (list rust-intermediate-a-1
+ rust-intermediate-b-1
+ rust-leaf-alice-0.7
+ rust-leaf-bob-3))
#:cargo-development-inputs
- (("rust-intermediate-c"
- ('unquote rust-intermediate-c-1))))))
+ ('unquote (list rust-intermediate-c-1)))))
(home-page "http://example.com")
(synopsis "summary")
(description "summary")
@@ -736,8 +728,7 @@
(build-system cargo-build-system)
(arguments
('quasiquote (#:cargo-development-inputs
- (("rust-leaf-alice"
- ('unquote rust-leaf-alice-0.7))))))
+ ('unquote (list rust-leaf-alice-0.7)))))
(home-page "http://example.com")
(synopsis "summary")
(description "summary")
@@ -816,12 +807,9 @@
(build-system cargo-build-system)
(arguments
('quasiquote (#:cargo-inputs
- (("rust-intermediate-b"
- ('unquote rust-intermediate-b-1))
- ("rust-leaf-alice"
- ('unquote 'rust-leaf-alice-0.7))
- ("rust-leaf-bob"
- ('unquote rust-leaf-bob-3))))))
+ ('unquote (list rust-intermediate-b-1
+ rust-leaf-alice-0.7
+ rust-leaf-bob-3)))))
(home-page "http://example.com")
(synopsis "summary")
(description "summary")
@@ -842,17 +830,12 @@
(build-system cargo-build-system)
(arguments
('quasiquote (#:cargo-inputs
- (("rust-intermediate-a"
- ('unquote rust-intermediate-a-1))
- ("rust-intermediate-b"
- ('unquote rust-intermediate-b-1))
- ("rust-leaf-alice"
- ('unquote 'rust-leaf-alice-0.7))
- ("rust-leaf-bob"
- ('unquote rust-leaf-bob-3)))
+ ('unquote (list rust-intermediate-a-1
+ rust-intermediate-b-1
+ rust-leaf-alice-0.7
+ rust-leaf-bob-3))
#:cargo-development-inputs
- (("rust-intermediate-c"
- ('unquote rust-intermediate-c-1))))))
+ ('unquote (list rust-intermediate-c-1)))))
(home-page "http://example.com")
(synopsis "summary")
(description "summary")
@@ -963,13 +946,10 @@
(build-system cargo-build-system)
(arguments
('quasiquote (#:cargo-inputs
- (("rust-leaf-bob"
- ('unquote 'rust-leaf-bob-3)))
+ ('unquote (list rust-leaf-bob-3))
#:cargo-development-inputs
- (("rust-leaf-bob"
- ('unquote 'rust-leaf-bob-3.0.2-yanked))
- ("rust-leaf-bob"
- ('unquote 'rust-leaf-bob-4.0.0-yanked))))))
+ ('unquote (list rust-leaf-bob-3.0.2-yanked
+ rust-leaf-bob-4.0.0-yanked)))))
(home-page "http://example.com")
(synopsis "summary")
(description "summary")
@@ -1094,13 +1074,10 @@
(build-system cargo-build-system)
(arguments
('quasiquote (#:cargo-inputs
- (("rust-leaf-bob"
- ('unquote 'rust-leaf-bob-3)))
+ ('unquote (list rust-leaf-bob-3))
#:cargo-development-inputs
- (("rust-leaf-bob"
- ('unquote 'rust-leaf-bob-3.0.2-yanked))
- ("rust-leaf-bob"
- ('unquote 'rust-leaf-bob-4.0.0-yanked))))))
+ ('unquote (list rust-leaf-bob-3.0.2-yanked
+ rust-leaf-bob-4.0.0-yanked)))))
(home-page "http://example.com")
(synopsis "summary")
(description "summary")
diff --git a/tests/go.scm b/tests/go.scm
index d2e8846b30..f925c485c1 100644
--- a/tests/go.scm
+++ b/tests/go.scm
@@ -389,7 +389,7 @@ require github.com/kr/pretty v0.2.1
(arguments
(list #:import-path "github.com/go-check/check"))
(propagated-inputs
- `(("go-github-com-kr-pretty" ,go-github-com-kr-pretty)))
+ (list go-github-com-kr-pretty))
(home-page "https://github.com/go-check/check")
(synopsis "Instructions")
(description "Package check is a rich testing extension for Go's testing \
diff --git a/tests/modules.scm b/tests/modules.scm
index e70d2d9e08..904f91e365 100644
--- a/tests/modules.scm
+++ b/tests/modules.scm
@@ -18,7 +18,7 @@
(define-module (test-modules)
#:use-module (guix modules)
- #:use-module ((guix build-system gnu) #:select (%gnu-build-system-modules))
+ #:use-module ((guix build-system gnu) #:select (%default-gnu-imported-modules))
#:use-module ((guix utils) #:select (call-with-temporary-directory))
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-34)
@@ -30,9 +30,9 @@
(lset= equal?
(live-module-closure '((guix build gnu-build-system)))
(source-module-closure '((guix build gnu-build-system)))
- %gnu-build-system-modules
- (source-module-closure %gnu-build-system-modules)
- (live-module-closure %gnu-build-system-modules)))
+ %default-gnu-imported-modules
+ (source-module-closure %default-gnu-imported-modules)
+ (live-module-closure %default-gnu-imported-modules)))
(test-assert "closure of (gnu build install)"
(lset= equal?
diff --git a/tests/profiles.scm b/tests/profiles.scm
index ddd6d74f3b..e448137cff 100644
--- a/tests/profiles.scm
+++ b/tests/profiles.scm
@@ -463,7 +463,6 @@
(target -> "arm-linux-gnueabihf")
(grep (package->cross-derivation packages:grep target))
(sed (package->cross-derivation packages:sed target))
- (locales (package->derivation (packages:libc-utf8-locales-for-target)))
(drv (profile-derivation manifest
#:hooks '()
#:locales? #t
@@ -475,15 +474,11 @@
(and (string-suffix? name input) input)))
(derivation-inputs drv))))
- ;; The inputs for grep and sed should be cross-build derivations, but that
- ;; for the glibc-utf8-locales should be a native build.
(return (and (string=? (derivation-system drv) (%current-system))
(string=? (find-input packages:grep)
(derivation-file-name grep))
(string=? (find-input packages:sed)
- (derivation-file-name sed))
- (string=? (find-input (packages:libc-utf8-locales-for-target))
- (derivation-file-name locales))))))
+ (derivation-file-name sed))))))
(test-assert "package->manifest-entry defaults to \"out\""
(let ((outputs (package-outputs packages:glibc)))