1
0
forked from tribes/guix

Compare commits

..

9 Commits

Author SHA1 Message Date
Efraim Flashner 5ea6f99ccd gnu: rust-cargo-c: Update to 0.10.21.
* gnu/packages/rust-apps.scm (rust-cargo-c): Update to 0.10.21.
* gnu/packages/rust-crates.scm (lookup-cargo-inputs): Update entry for
rust-cargo-c.

Change-Id: Id2c5d0cc1568d0787257ad44e1865adac7c9377e
2026-03-31 16:47:20 +03:00
Efraim Flashner d22e33ea60 gnu: rust: Update to 1.94.
* gnu/packages/rust.scm (rust): Update to 1.94.
[arguments]: Add a phase to patch more files for the test suite. Adjust
the 'dont-reference-previous-cargo-version phase for changes in the
source.

Change-Id: I965e8b3b4046322820be632d01926331fc9afc38
2026-03-31 16:36:47 +03:00
Efraim Flashner 137491a68e gnu: rust-1.94: Update to 1.94.1.
* gnu/packages/rust.scm (rust-1.94): Update to 1.04.1.

Change-Id: I87806958a0932813da0d98df4754383e97156db1
2026-03-31 09:42:15 +03:00
Efraim Flashner 091c121514 gnu: rav1e: Rewrite the install-completions phase.
* gnu/packages/video.scm (rav1e)[arguments]: Rewrite the
'install-completions phase to make it cleaner.
[native-inputs]: Add rav1e when cross-compiling.

Change-Id: I38e1196ea0fb96986ad5c4ae2221facc06fe746d
2026-03-30 18:41:58 +03:00
Efraim Flashner bc3e92e673 gnu: rust-crates: Unbundle more crates.
* gnu/packages/rust-crates.scm: Unbundle more rust crates.

Change-Id: I93abcf264272b390f526d317fb924941b884376c
2026-03-30 18:40:43 +03:00
Efraim Flashner 7208782e20 gnu: rav1e: Update to 0.8.1.
* gnu/packages/video.scm (rav1e): Update to 0.8.1.
* gnu/packages/rust-crates.scm (lookup-cargo-inputs): Update the rav1e
entry.

Change-Id: I376c812e036d87f669aa035191e43f66665ab1cd
2026-03-30 18:40:29 +03:00
Efraim Flashner 0c3f020dac gnu: dav1d: Update to 1.5.3.
* gnu/packages/video.scm (dav1d): Update to 1.5.3.

Change-Id: Ia14848b247b5b1cc78c78bdfde083362182792d3
2026-03-30 17:32:19 +03:00
Danny Milosavljevic 60f7c740f8 gnu: rust: Install rust-src only once.
* gnu/packages/rust.scm (rust)[arguments]<#:phases>{install}: Install rust-src
only once.
{build}: Explicitly request src/tools/llvm-bitcode-linker (no change).

Closes: guix/guix#6671
Change-Id: I9f64c2d115794126ad82aebb87ad192fcf94abd7
2026-03-30 13:51:48 +03:00
Danny Milosavljevic 42ed3aa37a build-system/cargo: Work around "cargo package" weirdness.
* guix/build/cargo-build-system.scm (package): Modify.

Closes: guix/guix#6825
Change-Id: I0ab97662e52d53ca1558c40bd9c1cbd28eae0197
2026-03-30 13:51:44 +03:00
51 changed files with 3460 additions and 3201 deletions
+2 -4
View File
@@ -1276,9 +1276,7 @@ definition in @samp{$GUIX_CHECKOUT/guix/build/gnu-build-system.scm}:
;; Standard build phases, as a list of symbol/procedure pairs.
(let-syntax ((phases (syntax-rules ()
((_ p ...) `((p . ,p) ...)))))
(phases separate-from-pid1
set-GUIX_GCC_MANGLE_PREFIX_MAP set-SOURCE-DATE-EPOCH
set-paths install-locale unpack
(phases set-SOURCE-DATE-EPOCH set-paths install-locale unpack
bootstrap
patch-usr-bin-file
patch-source-shebangs configure patch-generated-file-shebangs
@@ -1300,7 +1298,7 @@ Or from the REPL:
(add-to-load-path "/path/to/guix/checkout")
,use (guix build gnu-build-system)
(map car %standard-phases)
@result{} (separate-from-pid1 set-GUIX_GCC_MANGLE_PREFIX_MAP set-SOURCE-DATE-EPOCH set-paths install-locale unpack bootstrap patch-usr-bin-file patch-source-shebangs configure patch-generated-file-shebangs build check install patch-shebangs strip validate-runpath validate-documentation-location delete-info-dir-file patch-dot-desktop-files make-dynamic-linker-cache install-license-files reset-gzip-timestamps compress-documentation)
@result{} (set-SOURCE-DATE-EPOCH set-paths install-locale unpack bootstrap patch-usr-bin-file patch-source-shebangs configure patch-generated-file-shebangs build check install patch-shebangs strip validate-runpath validate-documentation-location delete-info-dir-file patch-dot-desktop-files make-dynamic-linker-cache install-license-files reset-gzip-timestamps compress-documentation)
@end lisp
If you want to know more about what happens during those phases, consult the
+3 -5
View File
@@ -75,7 +75,6 @@
# Copyright © 2025 Nigko Yerden <nigko.yerden@gmail.com>
# Copyright © 2025 Cayetano Santos <csantosb@inventati.org>
# Copyright © 2025 bdunahu <bdunahu@operationnull.com>
# Copyright © 2025 Nikita Mitasov <me@ch4og.com>
#
# This file is part of GNU Guix.
#
@@ -1064,7 +1063,6 @@ dist_patch_DATA = \
%D%/packages/patches/binutils-loongson-workaround.patch \
%D%/packages/patches/binutils-mingw-w64-deterministic.patch \
%D%/packages/patches/binutils-2.41-fix-cross.patch \
%D%/packages/patches/binutils-reproducible-tar.patch \
%D%/packages/patches/bloomberg-bde-tools-fix-install-path.patch \
%D%/packages/patches/bmake-run-check-separately.patch \
%D%/packages/patches/boolector-find-googletest.patch \
@@ -1320,7 +1318,6 @@ dist_patch_DATA = \
%D%/packages/patches/flatpak-fix-fonts-icons.patch \
%D%/packages/patches/flatpak-fix-icon-validation.patch \
%D%/packages/patches/flatpak-unset-gdk-pixbuf-for-sandbox.patch \
%D%/packages/patches/flex-fix-make-dependencies.patch \
%D%/packages/patches/fluxbox-1.3.7-no-dynamic-cursor.patch \
%D%/packages/patches/fluxbox-1.3.7-gcc.patch \
%D%/packages/patches/fmt-9-overspecified-tests.patch \
@@ -1378,7 +1375,6 @@ dist_patch_DATA = \
%D%/packages/patches/gcc-fix-texi2pod.patch \
%D%/packages/patches/gcc-hurd-split-stack.patch \
%D%/packages/patches/gcc-libstdc++-newer-gcc.patch \
%D%/packages/patches/gcc-mangle-guix-store.patch \
%D%/packages/patches/gcc-4.8-libsanitizer-fix.patch \
%D%/packages/patches/gcc-4.9-inline.patch \
%D%/packages/patches/gcc-4.9-libsanitizer-fix.patch \
@@ -1446,6 +1442,7 @@ dist_patch_DATA = \
%D%/packages/patches/ghc-basement-fix-32-bit.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-aeson-encodeDouble.patch \
%D%/packages/patches/ghc-basement-fix-32bit.patch \
%D%/packages/patches/ghc-bytestring-handle-ghc9.patch \
@@ -1487,7 +1484,6 @@ dist_patch_DATA = \
%D%/packages/patches/glibc-cross-objdump.patch \
%D%/packages/patches/glibc-dl-cache.patch \
%D%/packages/patches/glibc-guix-locpath.patch \
%D%/packages/patches/glibc-fix-path-attribute-in-getconf.patch \
%D%/packages/patches/glibc-hidden-visibility-ldconfig.patch \
%D%/packages/patches/glibc-hurd-clock_gettime_monotonic.patch \
%D%/packages/patches/glibc-hurd-clock_t_centiseconds.patch \
@@ -1828,6 +1824,8 @@ dist_patch_DATA = \
%D%/packages/patches/libtiff-CVE-2022-34526.patch \
%D%/packages/patches/libtirpc-CVE-2021-46828.patch \
%D%/packages/patches/libtirpc-hurd.patch \
%D%/packages/patches/libtool-grep-compat.patch \
%D%/packages/patches/libtool-skip-tests2.patch \
%D%/packages/patches/libtree-fix-check-non-x86.patch \
%D%/packages/patches/libusb-0.1-disable-tests.patch \
%D%/packages/patches/libusb-for-axoloti.patch \
+2 -2
View File
@@ -43,7 +43,7 @@
(define-public acl
(package
(name "acl")
(version "2.3.2")
(version "2.3.1")
(source
(origin
(method url-fetch)
@@ -51,7 +51,7 @@
version ".tar.gz"))
(sha256
(base32
"0z1gi82zc2xcbchfagd7apn2s7camaagj8y6hmysl1wpcanxnasz"))))
"1bqi7hj0xkpivwg7lx5cv3yvs9ks1i6azvpgbvfpzcq1i736233n"))))
(build-system gnu-build-system)
(arguments
`(#:modules ((ice-9 ftw)
+43 -57
View File
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2012-2018, 2020-2022, 2026 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012-2018, 2020-2022 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
;;; Copyright © 2014 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
;;; Copyright © 2015, 2017, 2018 Mark H Weaver <mhw@netris.org>
@@ -157,7 +157,7 @@ know anything about Autoconf or M4.")
(base32
"0niz4852fgyavfh3gr4h4kzalk01nk70v6vfsja6r3ap349mr25s"))))))
(define-public autoconf autoconf-2.72)
(define-public autoconf autoconf-2.69)
(define-public autoconf-2.68
(package (inherit autoconf)
@@ -438,14 +438,14 @@ Makefile, simplifying the entire process for the developer.")
(define-public automake
(package/inherit automake-1.16.5
(name "automake")
(version "1.18.1")
(version "1.17")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/automake/automake-"
version ".tar.xz"))
(sha256
(base32
"11v8ckqx7z8hv4mq9dnhg58cwnssaa7l9136yndbhlc34xis72hn"))
"146rkdcwri2dkwn3pjrjs9v0wm4xyav9vvq4yw5vj4qy87yc2849"))
(patches
(search-patches "automake-skip-amhello-tests.patch"))))
(arguments
@@ -483,14 +483,16 @@ Makefile, simplifying the entire process for the developer.")
(define-public libtool
(package
(name "libtool")
(version "2.5.4")
(version "2.4.7")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/libtool/libtool-"
version ".tar.xz"))
(sha256
(base32
"0xb64rhambx6mhxwr613xgyad7ybs5hgmpmd9gccf2vbcrh5h7zq"))))
"0pb3l4x37k6fj1lwnpzws55gi3pxl0hx56jm4bzmbrkw0mzj2zsg"))
(patches (search-patches "libtool-skip-tests2.patch"
"libtool-grep-compat.patch"))))
(build-system gnu-build-system)
(propagated-inputs (list m4))
(native-inputs
@@ -504,59 +506,43 @@ Makefile, simplifying the entire process for the developer.")
autoconf-wrapper)) ; others on 'autom4te'
(arguments
(list ;; Libltdl is provided as a separate package, so don't install it here.
#:configure-flags #~'("--disable-ltdl-install")
`(;; Libltdl is provided as a separate package, so don't install it here.
#:configure-flags '("--disable-ltdl-install")
;; The 'libtool' script refers to the toolchain; tolerate it.
#:disallowed-references '()
;; XXX: There are test failures on mips64el-linux starting from 2.4.4:
;; <http://hydra.gnu.org/build/181662>.
;; Also, do not run tests when cross compiling
#:tests? ,(not (or (%current-target-system)
(string-prefix? "mips64"
(%current-system))))
;; XXX: There are test failures on mips64el-linux starting from 2.4.4:
;; <http://hydra.gnu.org/build/181662>.
;; Also, do not run tests when cross compiling
#:tests? (not (or (%current-target-system)
(string-prefix? "mips64"
(%current-system))))
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'skip-some-tests-on-extra-archs
(lambda _
(with-directory-excursion "tests"
(substitute* '("demo.at" "testsuite")
(("hppa\\*\\|amd64\\*\\|x86_64\\*\\|s390\\*"
all)
(string-append all "|arm*|mips*|riscv*"))))))
(add-before 'check 'pre-check
(lambda* (#:key inputs native-inputs parallel-tests?
#:allow-other-keys)
;; Run the test suite in parallel, if possible.
(setenv "TESTSUITEFLAGS"
(string-append
"-j"
(if parallel-tests?
(number->string (parallel-job-count))
"1")))
;; Patch references to /bin/sh.
(let ((/bin/sh (search-input-file (or native-inputs inputs)
"bin/sh")))
(substitute* "tests/testsuite"
(("/bin/sh")
/bin/sh)))))
;; These files may be copied into source trees by libtoolize,
;; therefore they must not point to store file names that would be
;; leaked with tarballs generated by make dist.
(add-after 'install 'restore-build-aux-shebang
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(dir (string-append out
"/share/libtool/build-aux")))
(for-each (lambda (file)
(format #t "restoring shebang on `~a'~%"
file)
(substitute* file
(("^#!.*/bin/sh")
"#!/bin/sh")))
(find-files dir))))))))
#:phases
(modify-phases %standard-phases
(add-before 'check 'pre-check
(lambda* (#:key inputs native-inputs parallel-tests? #:allow-other-keys)
;; Run the test suite in parallel, if possible.
(setenv "TESTSUITEFLAGS"
(string-append
"-j"
(if parallel-tests?
(number->string (parallel-job-count))
"1")))
;; Patch references to /bin/sh.
(let ((/bin/sh (search-input-file (or native-inputs inputs) "bin/sh")))
(substitute* "tests/testsuite"
(("/bin/sh") /bin/sh)))))
;; These files may be copied into source trees by libtoolize,
;; therefore they must not point to store file names that would be
;; leaked with tarballs generated by make dist.
(add-after 'install 'restore-build-aux-shebang
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(dir (string-append out "/share/libtool/build-aux")))
(for-each (lambda (file)
(format #t "restoring shebang on `~a'~%" file)
(substitute* file
(("^#!.*/bin/sh") "#!/bin/sh")))
(find-files dir))))))))
(synopsis "Generic shared library support tools")
(description
+318 -316
View File
@@ -24,7 +24,6 @@
;;; Copyright © 2022, 2026 John Kehayias <john@guixotic.coop>
;;; Copyright © 2023 Josselin Poiret <dev@jpoiret.xyz>
;;; Copyright © 2024, 2025 Zheng Junjie <z572@z572.online>
;;; Copyright © 2025 Nikita Mitasov <me@ch4og.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -120,14 +119,14 @@ command-line arguments, multiple languages, and so on.")
(define-public grep
(package
(name "grep")
(version "3.12")
(version "3.11")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/grep/grep-"
version ".tar.xz"))
(sha256
(base32
"1f87i907dzw31xy1xr8xjj6z9979qq3bwmypvkm35rlh1ryb4j96"))
"1avf4x8skxbqrjp5j2qr9sp5vlf8jkw2i5bdn51fl3cxx3fsxchx"))
(patches (search-patches "grep-timing-sensitive-test.patch"))))
(build-system gnu-build-system)
(native-inputs (list perl)) ;some of the tests require it
@@ -248,49 +247,47 @@ implementation offers several extensions over the standard utility.")
(build-system gnu-build-system)
;; Note: test suite requires ~1GiB of disk space.
(arguments
(append
(cond
((target-hurd?)
'(#:make-flags
(list (string-append
"TESTSUITEFLAGS= -k '"
"!sparse"
",!renamed dirs in incrementals"
",!--exclude-tag option in incremental pass"
",!incremental dumps with -C"
",!incremental dumps of nested directories"
",!incremental restores with -C"
",!concatenated incremental archives (renames)"
",!renamed directory containing subdirectories"
",!renamed subdirectories"
",!chained renames"
",!Directory"
"'"))))
;; 'storing sparse files > 8G' fails on powerpc-linux, likely
;; due to the small HDD and RAM present on these devices.
((target-ppc32?)
'(#:make-flags (list (string-append "TESTSUITEFLAGS= -k "
"'!tricky time stamps"
",!storing sparse files > 8G'"))))
;; https://lists.gnu.org/archive/html/bug-tar/2021-10/msg00007.html
;; tar-1.34 isn't aware of 64-bit time_t and upstream suggests
;; skipping the test for this release on 32-bit systems.
((not (target-64bit?))
'(#:make-flags (list "TESTSUITEFLAGS= -k '!tricky time stamps'")))
(else '()))
;; XXX: 32-bit Hurd platforms don't support 64bit time_t
(if (target-hurd32?)
(list #:configure-flags #~(list "--disable-year2038"))
'())
(list
#:phases
#~(modify-phases %standard-phases
(add-before 'build 'set-shell-file-name
(lambda* (#:key inputs #:allow-other-keys)
;; Do not use "/bin/sh" to run programs.
(substitute* "src/system.c"
(("/bin/sh")
(search-input-file inputs "bin/sh")))))))))
`(,@(cond
((target-hurd?)
'(#:make-flags
(list (string-append
"TESTSUITEFLAGS= -k '"
"!sparse"
",!renamed dirs in incrementals"
",!--exclude-tag option in incremental pass"
",!incremental dumps with -C"
",!incremental dumps of nested directories"
",!incremental restores with -C"
",!concatenated incremental archives (renames)"
",!renamed directory containing subdirectories"
",!renamed subdirectories"
",!chained renames"
",!Directory"
"'"))))
;; 'storing sparse files > 8G' fails on powerpc-linux, likely
;; due to the small HDD and RAM present on these devices.
((target-ppc32?)
'(#:make-flags (list (string-append "TESTSUITEFLAGS= -k "
"'!tricky time stamps"
",!storing sparse files > 8G'"))))
;; https://lists.gnu.org/archive/html/bug-tar/2021-10/msg00007.html
;; tar-1.34 isn't aware of 64-bit time_t and upstream suggests
;; skipping the test for this release on 32-bit systems.
((target-32bit?)
'(#:make-flags (list "TESTSUITEFLAGS= -k '!tricky time stamps'")))
(else '()))
;; XXX: 32-bit Hurd platforms don't support 64bit time_t
,@(if (target-hurd32?)
(list #:configure-flags ''("--disable-year2038"))
'())
#:phases (modify-phases %standard-phases
(add-before 'build 'set-shell-file-name
(lambda* (#:key inputs #:allow-other-keys)
;; Do not use "/bin/sh" to run programs.
(let ((bash (assoc-ref inputs "bash")))
(substitute* "src/system.c"
(("/bin/sh")
(string-append bash "/bin/sh")))))))))
;; When cross-compiling, the 'set-shell-file-name' phase needs to be able
;; to refer to the target Bash.
@@ -309,8 +306,41 @@ standard utility.")
(license gpl3+)
(home-page "https://www.gnu.org/software/tar/")))
;;; TODO: Replace/merge with 'patch' on core-updates.
(define-public patch/pinned
(hidden-package
(package
(name "patch")
(version "2.7.6")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/patch/patch-"
version ".tar.xz"))
(sha256
(base32
"1zfqy4rdcy279vwn2z1kbv19dcfw25d2aqy9nzvdkq5bjzd0nqdc"))
(patches (search-patches "patch-hurd-path-max.patch"))))
(build-system gnu-build-system)
(arguments
;; Work around a cross-compilation bug whereby libpatch.a would provide
;; '__mktime_internal', which conflicts with the one in libc.a.
(if (%current-target-system)
`(#:configure-flags '("gl_cv_func_working_mktime=yes"))
'()))
(native-inputs (list ed))
(synopsis "Apply differences to originals, with optional backups")
(description
"Patch is a program that applies changes to files based on differences
laid out as by the program \"diff\". The changes may be applied to one or more
files depending on the contents of the diff file. It accepts several
different diff formats. It may also be used to revert previously applied
differences.")
(license gpl3+)
(home-page "https://savannah.gnu.org/projects/patch/"))))
(define-public patch
(package
(inherit patch/pinned)
(name "patch")
(version "2.8")
(source (origin
@@ -320,27 +350,13 @@ standard utility.")
(sha256
(base32
"1qssgwgy3mfahkpgg99a35gl38vamlqb15m3c2zzrd62xrlywz7q"))))
(build-system gnu-build-system)
(arguments
(list
#:configure-flags
#~(append
(if #$(%current-target-system)
(list "gl_cv_func_working_mktime=yes")
'())
(if #$(target-hurd32?)
(list "--disable-year2038")
'()))))
(native-inputs (list ed))
(synopsis "Apply differences to originals, with optional backups")
(description
"Patch is a program that applies changes to files based on differences
laid out as by the program \"diff\". The changes may be applied to one or more
files depending on the contents of the diff file. It accepts several
different diff formats. It may also be used to revert previously applied
differences.")
(license gpl3+)
(home-page "https://savannah.gnu.org/projects/patch/")
(substitute-keyword-arguments (package-arguments patch/pinned)
((#:configure-flags flags #~'())
(if (target-hurd32?)
#~(cons* "--disable-year2038"
#$flags)
flags))))
(properties '())))
(define-public diffutils
@@ -616,21 +632,20 @@ standard.")
(inputs (list guile-3.0))
(outputs '("out" "debug"))
(arguments
(append
(if (target-hurd?)
(list #:configure-flags '("CFLAGS=-D__alloca=alloca"
"ac_cv_func_posix_spawn=no"))
(list))
(list
`(,@(if (target-hurd?)
'(#:configure-flags '("CFLAGS=-D__alloca=alloca"
"ac_cv_func_posix_spawn=no"))
'())
#:phases
#~(modify-phases %standard-phases
(add-before 'build 'set-default-shell
(lambda* (#:key inputs #:allow-other-keys)
;; Change the default shell from /bin/sh.
(modify-phases %standard-phases
(add-before 'build 'set-default-shell
(lambda* (#:key inputs #:allow-other-keys)
;; Change the default shell from /bin/sh.
(let ((bash (assoc-ref inputs "bash")))
(substitute* "src/job.c"
(("default_shell =.*$")
(format #f "default_shell = \"~a\";\n"
(search-input-file inputs "/bin/sh"))))))))))
(format #f "default_shell = \"~a/bin/sh\";\n"
bash)))))))))
(synopsis "Remake files automatically")
(description
"Make is a program that is used to control the production of
@@ -654,17 +669,17 @@ change. GNU make offers many powerful extensions over the standard utility.")
(base32
"12f5zzyq2w56g95nni65hc0g5p7154033y2f3qmjvd016szn5qnn"))))
(arguments
(list
#:configure-flags #~(list "CFLAGS=-D__alloca=alloca -D__stat=stat")
#:phases
#~(modify-phases %standard-phases
(add-before 'build 'set-default-shell
(lambda* (#:key inputs #:allow-other-keys)
;; Change the default shell from /bin/sh.
(substitute* "job.c"
(("default_shell =.*$")
(format #f "default_shell = \"~a\";\n"
(search-input-file inputs "/bin/sh")))))))))))
`(#:configure-flags '("CFLAGS=-D__alloca=alloca -D__stat=stat")
#:phases
(modify-phases %standard-phases
(add-before 'build 'set-default-shell
(lambda* (#:key inputs #:allow-other-keys)
;; Change the default shell from /bin/sh.
(let ((bash (assoc-ref inputs "bash")))
(substitute* "job.c"
(("default_shell =.*$")
(format #f "default_shell = \"~a/bin/sh\";\n"
bash)))))))))))
(define-public binutils
(package
@@ -678,7 +693,6 @@ change. GNU make offers many powerful extensions over the standard utility.")
(sha256
(base32 "0fnwaasfglbphqzvz5n25js9gl695p7pjbmb1z81g8gsc6k90qzn"))
(patches (search-patches
"binutils-reproducible-tar.patch"
"binutils-2.41-fix-cross.patch"
"binutils-loongson-workaround.patch"))))
(build-system gnu-build-system)
@@ -714,8 +728,7 @@ change. GNU make offers many powerful extensions over the standard utility.")
;; 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'
perl)) ;needed to build the man pages (pod2man)
(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.
@@ -895,7 +908,6 @@ the store.")
(list "glibc-ldd-powerpc.patch"
"glibc-2.41-ldd-x86_64.patch"
"glibc-2.40-dl-cache.patch"
"glibc-fix-path-attribute-in-getconf.patch"
"glibc-2.37-versioned-locpath.patch"
;; "glibc-allow-kernel-2.6.32.patch"
"glibc-guix-locpath.patch"
@@ -945,257 +957,247 @@ the store.")
"static")) ;9 MiB of .a files
(arguments
(list
#:out-of-source? #t
`(#:out-of-source? #t
;; The libraries have an empty RUNPATH, but some, such as the versioned
;; libraries (libdl-2.24.so, etc.) have ld.so marked as NEEDED. Since
;; these libraries are always going to be found anyway, just skip
;; RUNPATH checks.
#:validate-runpath? #f
;; The libraries have an empty RUNPATH, but some, such as the versioned
;; libraries (libdl-2.24.so, etc.) have ld.so marked as NEEDED. Since
;; these libraries are always going to be found anyway, just skip
;; RUNPATH checks.
#:validate-runpath? #f
#:modules `((ice-9 ftw)
(ice-9 match)
#:modules ((ice-9 ftw)
(srfi srfi-1)
(srfi srfi-26)
(guix build gremlin)
(guix build utils)
(guix build gnu-build-system))
;; Strip binaries but preserve the symbol table needed by Valgrind:
;; <https://lists.gnu.org/archive/html/help-guix/2022-03/msg00036.html>.
#:strip-flags #~'("--strip-debug")
;; Strip binaries but preserve the symbol table needed by Valgrind:
;; <https://lists.gnu.org/archive/html/help-guix/2022-03/msg00036.html>.
#:strip-flags '("--strip-debug")
#:configure-flags
#~(list "--sysconfdir=/etc"
#:configure-flags
(list "--sysconfdir=/etc"
;; Installing a locale archive with all the locales is to
;; expensive (~100 MiB), so we rely on users to install the
;; locales they really want.
;;
;; Set the default locale path. In practice, $LOCPATH may be
;; defined to point whatever locales users want. However, setuid
;; binaries don't honor $LOCPATH, so they'll instead look into
;; $libc_cv_complocaledir; we choose /run/current-system/locale/X.Y,
;; with the idea that it is going to be populated by the sysadmin.
;; The "X.Y" sub-directory is because locale data formats are
;; incompatible across libc versions; see
;; <https://lists.gnu.org/archive/html/guix-devel/2015-08/msg00737.html>.
;;
;; `--localedir' is not honored, so work around it.
;; See <http://sourceware.org/ml/libc-alpha/2013-03/msg00093.html>.
(string-append "libc_cv_complocaledir=/run/current-system/locale/"
#$(version-major+minor version))
;; Installing a locale archive with all the locales is to
;; expensive (~100 MiB), so we rely on users to install the
;; locales they really want.
;;
;; Set the default locale path. In practice, $LOCPATH may be
;; defined to point whatever locales users want. However, setuid
;; binaries don't honor $LOCPATH, so they'll instead look into
;; $libc_cv_complocaledir; we choose /run/current-system/locale/X.Y,
;; with the idea that it is going to be populated by the sysadmin.
;; The "X.Y" sub-directory is because locale data formats are
;; incompatible across libc versions; see
;; <https://lists.gnu.org/archive/html/guix-devel/2015-08/msg00737.html>.
;;
;; `--localedir' is not honored, so work around it.
;; See <http://sourceware.org/ml/libc-alpha/2013-03/msg00093.html>.
(string-append "libc_cv_complocaledir=/run/current-system/locale/"
,(version-major+minor version))
;; Here we need to refer to kernel headers and not glibc-mesboot
(string-append
"--with-headers="
(and=>
(find
(match-lambda
((label . input)
(and (file-exists?
(string-append input "/include/asm/ioctl.h"))
;; Ensure we're not refering to another libc.
(not (file-exists?
(string-append input "/include/locale.h"))))))
#$(if (%current-target-system)
#~%build-target-inputs
#~%build-inputs))
cdr) "/include")
(string-append "--with-headers="
(assoc-ref ,(if (%current-target-system)
'%build-target-inputs
'%build-inputs)
"kernel-headers")
"/include")
;; This is the default for most architectures as of GNU libc 2.26,
;; but we specify it explicitly for clarity and consistency. See
;; "kernel-features.h" in the GNU libc for details.
"--enable-kernel=3.2.0"
;; This is the default for most architectures as of GNU libc 2.26,
;; but we specify it explicitly for clarity and consistency. See
;; "kernel-features.h" in the GNU libc for details.
"--enable-kernel=3.2.0"
;; Use our Bash instead of /bin/sh.
(string-append "BASH_SHELL="
(search-input-file %build-inputs "/bin/bash"))
;; Use our Bash instead of /bin/sh.
(string-append "BASH_SHELL="
(assoc-ref %build-inputs "bash")
"/bin/bash")
;; On GNU/Hurd we get discarded-qualifiers warnings for
;; 'device_write_inband' among other things. Ignore them.
#$@(if (target-hurd?)
#~("--disable-werror")
#~()))
;; On GNU/Hurd we get discarded-qualifiers warnings for
;; 'device_write_inband' among other things. Ignore them.
,@(if (target-hurd?)
`("--disable-werror")
'()))
#:tests? #f ; XXX
#:phases
#~(modify-phases %standard-phases
(add-before 'configure 'pre-configure
(lambda* (#:key inputs native-inputs #:allow-other-keys)
(let* ((bin (string-append #$output "/bin"))
(bash (find
(match-lambda
((label . input)
(let ((sh (string-append input "/bin/sh")))
(and (file-exists? sh)
;; Is it bash-static specifically? The
;; label can't be used because of
;; bash-mesboot during the bootstrap.
(not (file-dynamic-info sh))))))
inputs))
(bash (and=> bash cdr)))
;; Install the rpc data base file under `$out/etc/rpc'.
(substitute* "inet/Makefile"
(("^\\$\\(inst_sysconfdir\\)/rpc(.*)$" _ suffix)
(string-append #$output "/etc/rpc" suffix "\n"))
(("^install-others =.*$")
(string-append "install-others = " #$output "/etc/rpc\n")))
#:tests? #f ; XXX
#:phases (modify-phases %standard-phases
(add-before
'configure 'pre-configure
(lambda* (#:key inputs native-inputs outputs
#:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))
;; FIXME: Normally we would look it up only in INPUTS
;; but cross-base uses it as a native input.
(bash (or (assoc-ref inputs "static-bash")
(assoc-ref native-inputs "static-bash"))))
;; Install the rpc data base file under `$out/etc/rpc'.
(substitute* "inet/Makefile"
(("^\\$\\(inst_sysconfdir\\)/rpc(.*)$" _ suffix)
(string-append out "/etc/rpc" suffix "\n"))
(("^install-others =.*$")
(string-append "install-others = " out "/etc/rpc\n")))
(substitute* "Makeconfig"
;; According to
;; <http://www.linuxfromscratch.org/lfs/view/stable/chapter05/glibc.html>,
;; linking against libgcc_s is not needed with GCC
;; 4.7.1.
((" -lgcc_s") ""))
(substitute* "Makeconfig"
;; According to
;; <http://www.linuxfromscratch.org/lfs/view/stable/chapter05/glibc.html>,
;; linking against libgcc_s is not needed with GCC
;; 4.7.1.
((" -lgcc_s") ""))
;; Tell the ld.so cache code where the store is.
(substitute* "elf/dl-cache.c"
(("@STORE_DIRECTORY@")
(string-append "\"" (%store-directory) "\"")))
;; Tell the ld.so cache code where the store is.
(substitute* "elf/dl-cache.c"
(("@STORE_DIRECTORY@")
(string-append "\"" (%store-directory) "\"")))
;; Have `system' use that Bash.
(substitute* "sysdeps/posix/system.c"
(("#define[[:blank:]]+SHELL_PATH.*$")
(format #f "#define SHELL_PATH \"~a/bin/bash\"\n" bash)))
;; Have `system' use that Bash.
(substitute* "sysdeps/posix/system.c"
(("#define[[:blank:]]+SHELL_PATH.*$")
(format #f "#define SHELL_PATH \"~a/bin/bash\"\n"
bash)))
;; Same for `popen'.
(substitute* "libio/iopopen.c"
(("/bin/sh")
(string-append bash "/bin/sh")))
;; Same for `popen'.
(substitute* "libio/iopopen.c"
(("/bin/sh")
(string-append bash "/bin/sh")))
;; Same for the shell used by the 'exec' functions for
;; scripts that lack a shebang.
(substitute* (find-files "." "^paths\\.h$")
(("#define[[:blank:]]+_PATH_BSHELL[[:blank:]].*$")
(string-append "#define _PATH_BSHELL \""
bash "/bin/sh\"\n")))
;; Same for the shell used by the 'exec' functions for
;; scripts that lack a shebang.
(substitute* (find-files "." "^paths\\.h$")
(("#define[[:blank:]]+_PATH_BSHELL[[:blank:]].*$")
(string-append "#define _PATH_BSHELL \""
bash "/bin/sh\"\n")))
;; Make sure we don't retain a reference to the
;; bootstrap Perl.
(substitute* "malloc/mtrace.pl"
(("^#!.*")
;; The shebang can be omitted, because there's the
;; "bilingual" eval/exec magic at the top of the file.
"")
(("exec @PERL@")
"exec perl")))))
;; Make sure we don't retain a reference to the
;; bootstrap Perl.
(substitute* "malloc/mtrace.pl"
(("^#!.*")
;; The shebang can be omitted, because there's the
;; "bilingual" eval/exec magic at the top of the file.
"")
(("exec @PERL@")
"exec perl")))))
(add-after 'install 'move-static-libs
(lambda _
;; Move static libraries to the "static" output.
;; Note: As of GNU libc 2.34, the contents of some ".a"
;; files have been moved into "libc.so", and *both* empty
;; ".so" and ".a" files have been introduced to avoid
;; breaking existing executables and existing builds
;; respectively. The intent of the seemingly redundant
;; empty ".a" files is to avoid newly-compiled executables
;; from having dependencies on the empty shared libraries,
;; and as such, it is useful to have these ".a" files in
;; OUT in addition to STATIC.
(add-after 'install 'move-static-libs
(lambda* (#:key outputs #:allow-other-keys)
;; Move static libraries to the "static" output.
;; Note: As of GNU libc 2.34, the contents of some ".a"
;; files have been moved into "libc.so", and *both* empty
;; ".so" and ".a" files have been introduced to avoid
;; breaking existing executables and existing builds
;; respectively. The intent of the seemingly redundant
;; empty ".a" files is to avoid newly-compiled executables
;; from having dependencies on the empty shared libraries,
;; and as such, it is useful to have these ".a" files in
;; OUT in addition to STATIC.
(define (empty-static-library? file)
;; Return true if FILE is an 'ar' archive with nothing
;; beyond the header.
(let ((file (string-append #$output "/lib/" file)))
(and (ar-file? file)
(= (stat:size (stat file)) 8))))
(define (empty-static-library? file)
;; 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
;; "_nonshared.a" files are referred to by libc.so,
;; libpthread.so, etc., which are in fact linker
;; scripts.
(and (string-suffix? ".a" file)
(not (string-contains file "_nonshared"))
(not (empty-static-library? file))))
(define (static-library? file)
;; Return true if FILE is a static library. The
;; "_nonshared.a" files are referred to by libc.so,
;; libpthread.so, etc., which are in fact linker
;; scripts.
(and (string-suffix? ".a" file)
(not (string-contains file "_nonshared"))
(not (empty-static-library? file))))
(define (linker-script? file)
;; Guess whether FILE, a ".a" file, is actually a
;; linker script.
(and (not (ar-file? file))
(not (elf-file? file))))
(define (linker-script? file)
;; Guess whether FILE, a ".a" file, is actually a
;; linker script.
(and (not (ar-file? file))
(not (elf-file? file))))
(let* ((lib (string-append #$output "/lib"))
(files (scandir lib static-library?))
(empty (scandir lib empty-static-library?))
(slib (string-append #$output:static "/lib")))
(mkdir-p slib)
(for-each (lambda (base)
(rename-file (string-append lib "/" base)
(string-append slib "/" base)))
files)
(for-each (lambda (base)
(copy-file (string-append lib "/" base)
(string-append slib "/" base)))
empty)
(let* ((out (assoc-ref outputs "out"))
(lib (string-append out "/lib"))
(files (scandir lib static-library?))
(empty (scandir lib empty-static-library?))
(static (assoc-ref outputs "static"))
(slib (string-append static "/lib")))
(mkdir-p slib)
(for-each (lambda (base)
(rename-file (string-append lib "/" base)
(string-append slib "/" base)))
files)
(for-each (lambda (base)
(copy-file (string-append lib "/" base)
(string-append slib "/" base)))
empty)
;; Usually libm.a is a linker script so we need to
;; change the file names in there to refer to STATIC
;; instead of OUT.
(for-each (lambda (ld-script)
(substitute* ld-script
((#$output)
#$output:static)))
(filter linker-script?
(map (cut string-append slib "/" <>)
files))))))
;; Usually libm.a is a linker script so we need to
;; change the file names in there to refer to STATIC
;; instead of OUT.
(for-each (lambda (ld-script)
(substitute* ld-script
((out) static)))
(filter linker-script?
(map (cut string-append slib "/" <>)
files))))))
(add-after 'install 'install-utf8-c-locale
(lambda _
;; Install the C.UTF-8 locale so there's always a UTF-8
;; locale around.
(let ((bin (string-append #$output "/bin"))
(locale (string-append #$output "/lib/locale/"
#$(package-version
this-package))))
(mkdir-p locale)
(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")))))
;; 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 _
(substitute* (string-append #$output "/lib/libc.so")
(("/[^ ]+/lib/libc.so.0.3")
(string-append #$output "/lib/libc.so.0.3"
" libmachuser.so libhurduser.so")))))
(add-after 'install 'create-machine-symlink
(lambda _
(let* ((cpu #$(match (or (%current-target-system)
(%current-system))
((? target-x86-32?)
"i386")
((? target-x86-64?)
"x86_64")))
(machine (string-append #$output
"/include/mach/machine")))
(unless (file-exists? machine)
(symlink cpu machine))))))
'()))))
,@(if (target-hurd?)
`((add-after 'install 'augment-libc.so
(lambda* (#:key outputs #:allow-other-keys)
(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"))))))
(add-after 'install 'create-machine-symlink
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(cpu ,(match (or (%current-target-system)
(%current-system))
((? target-x86-32?)
"i386")
((? target-x86-64?)
"x86_64")))
(machine (string-append
out "/include/mach/machine")))
(unless (file-exists? machine)
(symlink cpu machine))))))
'()))))
(inputs (list static-bash))
(inputs `(("static-bash" ,static-bash)))
;; To build the manual, we need Texinfo and Perl. Gettext is needed to
;; install the message catalogs, with 'msgfmt'.
(native-inputs
(append
(list bison
gettext-minimal
perl
python-minimal
texinfo)
(if (target-hurd?)
(list mig)
(list))))
(native-inputs `(("texinfo" ,texinfo)
("perl" ,perl)
("bison" ,bison)
("gettext" ,gettext-minimal)
("python" ,python-minimal)
,@(if (target-hurd?)
`(("mig" ,mig)
("perl" ,perl))
'())))
(native-search-paths
;; Search path for packages that provide locale data. This is useful
;; primarily in build environments. Use 'GUIX_LOCPATH' rather than
@@ -1298,8 +1300,8 @@ with the Linux kernel.")
;; 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)))))))
`(modify-phases ,phases
(delete 'install-utf8-c-locale)))))))
(define-public glibc-2.33
(package
@@ -1340,9 +1342,9 @@ with the Linux kernel.")
"libc_cv_cxx_link_ok=no"
#$flags))
((#:phases phases)
#~(modify-phases #$phases
;; This phase fails trying to create /etc/ld.so.cache
(delete 'install-utf8-c-locale)))))))
`(modify-phases ,phases
;; This phase fails trying to create /etc/ld.so.cache
(delete 'install-utf8-c-locale)))))))
(define-public (make-gcc-libc base-gcc libc)
"Return a GCC that targets LIBC."
+44 -10
View File
@@ -66,7 +66,7 @@
(define (patch-url seqno)
"Return the URL of Bash patch number SEQNO."
(format #f "mirror://gnu/bash/bash-5.3-patches/bash53-~3,'0d" seqno))
(format #f "mirror://gnu/bash/bash-5.2-patches/bash52-~3,'0d" seqno))
(define (bash-patch seqno sha256-bv)
"Return the origin of Bash patch SEQNO, with expected hash SHA256-BV."
@@ -79,13 +79,47 @@
(list (bash-patch seqno (base32 hash))
...))
(define %patch-series-5.3
;; This is the current patches series for 5.3, generated using
(define %patch-series-5.2
;; This is the current patches series for 5.2, generated using
;; 'download-patches' below.
(patch-series
(1 "0zr8wgg1gb67vxn7ws971n1znrdinczymc688ndnpy2a6qs88q0z")
(2 "009051z55plsy4jmmjdb3ys7li2jraynz99qg7n6a1qk025591g3")
(3 "1vb0gnrkmz49rcfpxjcxy0v0k5278wrlkljk9gc20nizvk3xjigj")))
(1 "02iibpd3jq8p1bhdzgik8ps6gi1145vr463a82gj1hivjbp2ybzl")
(2 "1f6p1z85qh1lavdp3xikgp0bfv0vqhvgpgwmdzlywl35hwdmxk25")
(3 "1zxsi869jd90hksx3nyypgyqwrxhw2ws3r6hmk76yc1lsgdhq2ba")
(4 "04i5liw5cg6dqkdxfgazqc2jrw40bmclx3dx45bwy259pcj7g0iq")
(5 "0mykflv9qnbx3jz71l4f7isadiw9knm4qimqkwsv9cv88dafpq7c")
(6 "13265akl8w6zyrg0l7f0x6arjgqjhllcwl6lk46rl53x4mm5dq6i")
(7 "146lrwkn5wgxzs6vx34wl47g69zsxdy032k40qzi626b47ya6015")
(8 "1s5i8hcayrv25lc8fxcr431v634yx5sii53b8fmip789s0pxjjvb")
(9 "1kfk25151ka9wkmk1myf12irgcmvhsd8b0nfifvhrszah9w82npr")
(10 "1kf1jrwm30js0v3d1r2rk4x09s1pyjp70wnd1qqhf9bmkw15ww67")
(11 "1x5nkvbj6hci7gx42q7qa72hg2a9wwxh85dk79gn521ypwjmy6w3")
(12 "0b6lcwzm7v5bzjiwaz2c8n5aj77w8ckhp2vwk4v3zsdq3z70gc9g")
(13 "1rkwpibd6j2ghppfhqsva2jm4kdni6b7jpdsxdps52643gc4yjq9")
(14 "09766vqqw4ffnmysm725v35qkhp1g9j4qgqag941xvq655pj9y9y")
(15 "12im449abnq5gaqjmdxr5i38kmp02fa8l8wffad3jryvd58r0wzg")
(16 "05arb0hzmng03cr357lf6p8af0x2a1pznsd3psll03nibfy56n0m")
(17 "129cvx4gfz8n23iw1lhbknbw86fyw6vh60jqj1wj3d5pr75wwj0w")
(18 "105am94qxjc27gga4a8asvsi01090xwjfim3s16lafwjvm4xsha6")
(19 "10njgv5mrc5rhsp5lvxcbm0pnzn59a8spi2nhdasifyl1a32cp1j")
(20 "07f0wlmqjdfarp44w3gj9gdqbqm5x20rvlhpn34ngklmxcm2bz5n")
(21 "1kahfqqalcwi4m73pg3ssz6lh0kcqsqax09myac7a15d2y0vhd43")
(22 "0w74aym0g1fh48864a3qxh89f26iaq7wsbg7244c6kjr94527dbq")
(23 "1lywjqbc36j5pdzfcvnz1zy30j76aqmsm190p888av0hw815b45g")
(24 "1hq23djqbr7s9y2324jq9mxr5bwdkmgizn3zgpchbsqp054k85cp")
(25 "0x9hc4silzl4d3zw4p43i5dm7w86k50j47f87lracwfgwy3z8f2i")
(26 "1b1fhm1dsi67r8ip17s0xvx2qq31fsxc1g9n3r931dd0k9a1zvln")
(27 "0fdbhvs9dkf4knncifh98a76q4gylhyvfrffq5p9q3ag5q58jap1")
(28 "1hdacd6sssjshmry1sscdnxxfb2r51bvdyghlfjaqgc9l85phhk0")
(29 "11wrlb20w6v89b96krg0gwxipwhvrda6rq1y9f972m32gsrsqp0j")
(30 "13v9fqgim082dmvkslsr0hs793yzhsij2s91mjswsfhj1qip7zy3")
(31 "15d7rddj6spwc1fy997lxx6zvzq0zbxgf2h20mhi4wgp5nzbglf2")
(32 "05ia6yf32hjprmyyxqawhgckxs3684ikfx8xg08zfgx9xkd7g73v")
(33 "1qm2aad9mf2xah6xwchga7s5pk3v308mrv9lgh50d65d236ccgh1")
(34 "0bi38dhkkwpm2qrzp8zpykglq6gibvv2n9f8m59gwj406cxvp7w9")
(35 "1r8k34y82v02yfkgws17j7i53ybb74dqnwl2jjiv0av9z93hl6l2")
(36 "0mwhr9hfbh2czf8klbxg6nbd2g9xl9kygvgk061vird56r4kzj8m")
(37 "156sbi3srzkyxajkmhb7iigq0j4nvwnpsbw88xdsxn95a4xiqb4a")))
(define (download-patches store count)
"Download COUNT Bash patches into store. Return a list of
@@ -123,7 +157,7 @@ number/base32-hash tuples, directly usable in the 'patch-series' form."
" -Wl,-rpath -Wl,"
(assoc-ref %build-inputs "ncurses")
"/lib")))
(version "5.3"))
(version "5.2"))
(package
(name "bash")
(source (origin
@@ -132,11 +166,11 @@ number/base32-hash tuples, directly usable in the 'patch-series' form."
"mirror://gnu/bash/bash-" version ".tar.gz"))
(sha256
(base32
"1fii1xaxbng9x0klxmxkm0xhmycngfz72jsgyrna4sgqcmlxhp0d"))
"1yrjmf0mqg2q8pqphjlark0mcmgf88b0acq7bqf4gx3zvxkc2fd1"))
(patch-flags '("-p0"))
(patches (cons (search-patch "bash-linux-pgrp-pipe.patch")
%patch-series-5.3))))
(version (string-append version "." (number->string (length %patch-series-5.3))))
%patch-series-5.2))))
(version (string-append version "." (number->string (length %patch-series-5.2))))
(build-system gnu-build-system)
(outputs '("out"
+25 -31
View File
@@ -21,15 +21,14 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages bison)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages flex)
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix utils)
#:use-module (guix build-system gnu)
#:use-module (gnu packages m4)
#:use-module (gnu packages perl)
#:use-module (guix build-system gnu)
#:use-module (guix download)
#:use-module (guix gexp)
#:use-module (guix packages)
#:use-module (guix utils)
#:use-module (gnu packages flex)
#:use-module (srfi srfi-1))
(define-public bison
@@ -46,29 +45,24 @@
"1wjvbbzrr16k1jlby3l436an3kvv492h08arbnf0gwgprha05flv"))))
(build-system gnu-build-system)
(arguments
(list
;; Building in parallel on many-core systems may cause an error such as
;; "mv: cannot stat 'examples/c/reccalc/scan.stamp.tmp': No such file or
;; directory". See <https://bugs.gnu.org/36238>.
#:parallel-build? #f
;; Similarly, when building tests in parallel, Make may produce this error:
;; "./examples/c/reccalc/scan.l:13:10: fatal error: parse.h: No such file
;; or directory". Full log in <https://bugs.gnu.org/36238>.
#:parallel-tests? #f
#:configure-flags
;; On the Hurd with glibc 2.41 bison uses weak symbols from pthread
;; but does not link to it.
(if (target-hurd?)
#~(list "LIBS=-lpthread")
#~(list))))
(native-inputs
(list perl
;; m4 is not present in PATH when cross-building.
m4))
(inputs
(list flex))
(propagated-inputs
(list m4))
`(;; Building in parallel on many-core systems may cause an error such as
;; "mv: cannot stat 'examples/c/reccalc/scan.stamp.tmp': No such file or
;; directory". See <https://bugs.gnu.org/36238>.
#:parallel-build? #f
;; Similarly, when building tests in parallel, Make may produce this error:
;; "./examples/c/reccalc/scan.l:13:10: fatal error: parse.h: No such file
;; or directory". Full log in <https://bugs.gnu.org/36238>.
#:parallel-tests? #f
;; On the Hurd with glibc 2.41 bison uses weak symbols from pthread
;; but does not link to it.
,@(if (target-hurd?)
(list #:configure-flags ''("LIBS=-lpthread"))
'())))
(native-inputs (list perl
;; m4 is not present in PATH when cross-building.
m4))
(inputs (list flex))
(propagated-inputs (list m4))
(home-page "https://www.gnu.org/software/bison/")
(synopsis "Yacc-compatible parser generator")
(description
@@ -78,4 +72,4 @@ grammar. It is versatile enough to have many applications, from parsers for
simple tools through complex programming languages.
Bison also provides an implementation of @command{yacc}, as specified by POSIX.")
(license license:gpl3+)))
(license gpl3+)))
+306 -272
View File
@@ -37,7 +37,7 @@
#:select (raw-derivation derivation-input derivation->output-path))
#:use-module (guix utils)
#:use-module ((guix build utils) #:select (elf-file?))
#:use-module (guix gexp)
#:use-module ((guix gexp) #:select (lower-object local-file))
#:use-module (guix monads)
#:use-module (guix memoization)
#:use-module (guix i18n)
@@ -204,7 +204,10 @@ for system '~a'")
(uri (map (cute string-append <>
(bootstrap-executable-file-name system program))
%bootstrap-executable-base-urls))
(file-name (string-append "bootstrap-" program))
;; XXX: In the long term, migrate all boostrap executables to
;; (string-append "bootstrap-" program), and drop the additional
;; file-name argument.
(file-name file-name)
(hash (content-hash bv sha256))))))))
(define* (bootstrap-executable program system #:optional file-name)
@@ -264,33 +267,32 @@ or false to signal an error."
(version "0")
(build-system trivial-build-system)
(arguments
(list
#:guile %bootstrap-guile
#:modules '((guix build utils))
#:builder
#~(begin
(use-modules (guix build utils))
`(#:guile ,%bootstrap-guile
#:modules ((guix build utils))
#:builder
(begin
(use-modules (guix build utils))
(let ((tar (assoc-ref %build-inputs "bootstrap-tar"))
(xz (assoc-ref %build-inputs "bootstrap-xz"))
(tarball (assoc-ref %build-inputs
#$(string-append name ".tar.xz"))))
(let ((out (assoc-ref %outputs "out"))
(tar (assoc-ref %build-inputs "tar"))
(xz (assoc-ref %build-inputs "xz"))
(tarball (assoc-ref %build-inputs "tarball")))
(mkdir #$output)
(copy-file tarball "binaries.tar.xz")
(invoke xz "-d" "binaries.tar.xz")
(let ((builddir (getcwd)))
(with-directory-excursion #$output
(invoke tar "xvf"
(string-append builddir "/binaries.tar"))
#$@(if snippet (list snippet) '())
(or (not #$program-to-test)
(invoke (string-append "bin/" #$program-to-test)
"--version"))))))))
(mkdir out)
(copy-file tarball "binaries.tar.xz")
(invoke xz "-d" "binaries.tar.xz")
(let ((builddir (getcwd)))
(with-directory-excursion out
(invoke tar "xvf"
(string-append builddir "/binaries.tar"))
,@(if snippet (list snippet) '())
(or (not ,program-to-test)
(invoke (string-append "bin/" ,program-to-test)
"--version"))))))))
(inputs
(list (bootstrap-executable "tar" (%current-system))
(bootstrap-executable "xz" (%current-system))
(bootstrap-origin (source (%current-system)))))
`(("tar" ,(bootstrap-executable "tar" (%current-system)))
("xz" ,(bootstrap-executable "xz" (%current-system)))
("tarball" ,(bootstrap-origin (source (%current-system))))))
(source #f)
(synopsis description)
(description description)
@@ -633,29 +635,37 @@ $out/bin/guile --version~%"
(_
"/20131110/static-binaries.tar.xz")))
%bootstrap-base-urls))
(file-name "bootstrap-binaries.tar.xz")
(sha256
(base32
(match system
("x86_64-linux"
"0c533p9dhczzcsa1117gmfq3pc8w362g4mx84ik36srpr7cx2bg4")
("i686-linux"
"0s5b3jb315n13m1k8095l0a5hfrsz8g0fv1b6riyc5hnxqyphlak")
("armhf-linux"
"0gf0fn2kbpxkjixkmx5f4z6hv6qpmgixl69zgg74dbsfdfj8jdv5")
("aarch64-linux"
"18dfiq6c6xhsdpbidigw6480wh0vdgsxqq3xindq4lpdgqlccpfh")
("powerpc64le-linux"
"0afs2j9z2d1hjq42myz4iwjh0aqgzf59inifw87x6b6p1z9wv92v")
("i586-gnu"
"17kllqnf3fg79gzy9ansgi801c46yh9c23h4d923plvb0nfm1cfn")
("x86_64-gnu"
"04zksa2457h1vcl5ry2hyzhhsg8fckvfdgadp0viba3anwms2463")
("powerpc-linux"
"0kspxy0yczan2vlih6aa9hailr2inz000fqa0gn5x9d1fxxa5y8m")
("riscv64-linux"
"0x0xjlpmyh6rkr51p00gp6pscgl6zjida1rsg8vk3rinyi6rrbkg")
("mips64el-linux"
(match system
("x86_64-linux"
(base32
"0c533p9dhczzcsa1117gmfq3pc8w362g4mx84ik36srpr7cx2bg4"))
("i686-linux"
(base32
"0s5b3jb315n13m1k8095l0a5hfrsz8g0fv1b6riyc5hnxqyphlak"))
("armhf-linux"
(base32
"0gf0fn2kbpxkjixkmx5f4z6hv6qpmgixl69zgg74dbsfdfj8jdv5"))
("aarch64-linux"
(base32
"18dfiq6c6xhsdpbidigw6480wh0vdgsxqq3xindq4lpdgqlccpfh"))
("powerpc64le-linux"
(base32
"0afs2j9z2d1hjq42myz4iwjh0aqgzf59inifw87x6b6p1z9wv92v"))
("i586-gnu"
(base32
"17kllqnf3fg79gzy9ansgi801c46yh9c23h4d923plvb0nfm1cfn"))
("x86_64-gnu"
(base32
"0xnw5p6279m8xazbhal5ld5qxsya0249z2l6jcc7w9ndh2gnx07v"))
("powerpc-linux"
(base32
"0kspxy0yczan2vlih6aa9hailr2inz000fqa0gn5x9d1fxxa5y8m"))
("riscv64-linux"
(base32
"0x0xjlpmyh6rkr51p00gp6pscgl6zjida1rsg8vk3rinyi6rrbkg"))
("mips64el-linux"
(base32
"072y4wyfsj1bs80r6vbybbafy8ya4vfy7qj25dklwk97m6g71753"))))))
"fgrep" ; the program to test
"Bootstrap binaries of Coreutils, Awk, etc."
@@ -683,7 +693,6 @@ $out/bin/guile --version~%"
"/i686-linux/20190815/"
"linux-libre-headers-stripped-4.14.67-i686-linux.tar.xz")
%bootstrap-base-urls))
(file-name "linux-libre-headers-bootstrap.tar.xz")
(sha256
(base32
"0sm2z9x4wk45bh6qfs94p0w1d6hsy6dqx9sw38qsqbvxwa1qzk8s"))))
@@ -691,56 +700,63 @@ $out/bin/guile --version~%"
"Bootstrap linux-libre-headers"))
(define %bootstrap-binutils
(package-from-tarball
"binutils-bootstrap"
(lambda (system)
(origin
(method url-fetch)
(uri (map (cut string-append <> "/" system
(match system
("armhf-linux"
"/20150101/binutils-2.25.tar.xz")
("aarch64-linux"
"/20170217/binutils-2.27.tar.xz")
("powerpc64le-linux"
"/20210106/binutils-static-stripped-2.34-powerpc64le-linux-gnu.tar.xz")
("i586-gnu"
"/20200326/binutils-static-stripped-2.34-i586-pc-gnu.tar.xz")
("x86_64-gnu"
"/20241122/binutils-static-stripped-2.41-x86_64-pc-gnu.tar.xz")
("powerpc-linux"
"/20200923/binutils-2.35.1.tar.xz")
("riscv64-linux"
"/20210725/binutils-2.34.tar.xz")
(_
"/20131110/binutils-2.23.2.tar.xz")))
%bootstrap-base-urls))
(file-name "binutils-bootstrap.tar.xz")
(sha256
(base32
(match system
("x86_64-linux"
"1j5yivz7zkjqfsfmxzrrrffwyayjqyfxgpi89df0w4qziqs2dg20")
("i686-linux"
"14jgwf9gscd7l2pnz610b1zia06dvcm2qyzvni31b8zpgmcai2v9")
("armhf-linux"
"1v7dj6bzn6m36f20gw31l99xaabq4xrhrx3gwqkhhig0mdlmr69q")
("aarch64-linux"
"111s7ilfiby033rczc71797xrmaa3qlv179wdvsaq132pd51xv3n")
("powerpc64le-linux"
"1klxy945c61134mzhqzz2gbk8w0n8jq7arwkrvz78d22ff2q0cwz")
("riscv64-linux"
"0n9qf4vbilfmh1lknhw000waakj4q6s50pnjazr5137skm976z5m")
("i586-gnu"
"11kykv1kmqc5wln57rs4klaqa13hm952smkc57qcsyss21kfjprs")
("x86_64-gnu"
"1fasv76rppnqlshjqc7dbzngic9cqswi5ydzg6w9rc075daqk8kb")
("powerpc-linux"
"0asbg1c4avkrvh057mx0942xwddd136jni382zqsxzn79ls42yq8")
("mips64el-linux"
"1x8kkhcxmfyzg1ddpz2pxs6fbdl6412r7x0nzbmi5n7mj8zw2gy7"))))))
"ld" ; the program to test
"Bootstrap binaries of the GNU Binutils"))
(package-from-tarball "binutils-bootstrap"
(lambda (system)
(origin
(method url-fetch)
(uri (map (cut string-append <> "/" system
(match system
("armhf-linux"
"/20150101/binutils-2.25.tar.xz")
("aarch64-linux"
"/20170217/binutils-2.27.tar.xz")
("powerpc64le-linux"
"/20210106/binutils-static-stripped-2.34-powerpc64le-linux-gnu.tar.xz")
("i586-gnu"
"/20200326/binutils-static-stripped-2.34-i586-pc-gnu.tar.xz")
("x86_64-gnu"
"/20260302/binutils-static-stripped-2.44-x86_64-pc-gnu.tar.xz")
("powerpc-linux"
"/20200923/binutils-2.35.1.tar.xz")
("riscv64-linux"
"/20210725/binutils-2.34.tar.xz")
(_
"/20131110/binutils-2.23.2.tar.xz")))
%bootstrap-base-urls))
(sha256
(match system
("x86_64-linux"
(base32
"1j5yivz7zkjqfsfmxzrrrffwyayjqyfxgpi89df0w4qziqs2dg20"))
("i686-linux"
(base32
"14jgwf9gscd7l2pnz610b1zia06dvcm2qyzvni31b8zpgmcai2v9"))
("armhf-linux"
(base32
"1v7dj6bzn6m36f20gw31l99xaabq4xrhrx3gwqkhhig0mdlmr69q"))
("aarch64-linux"
(base32
"111s7ilfiby033rczc71797xrmaa3qlv179wdvsaq132pd51xv3n"))
("powerpc64le-linux"
(base32
"1klxy945c61134mzhqzz2gbk8w0n8jq7arwkrvz78d22ff2q0cwz"))
("riscv64-linux"
(base32
"0n9qf4vbilfmh1lknhw000waakj4q6s50pnjazr5137skm976z5m"))
("i586-gnu"
(base32
"11kykv1kmqc5wln57rs4klaqa13hm952smkc57qcsyss21kfjprs"))
("x86_64-gnu"
(base32
"033bgmaa012b2lw8g76b02mjgzdnzv2yd3jvaqbhqrr5q9r3xn04"))
("powerpc-linux"
(base32
"0asbg1c4avkrvh057mx0942xwddd136jni382zqsxzn79ls42yq8"))
("mips64el-linux"
(base32
"1x8kkhcxmfyzg1ddpz2pxs6fbdl6412r7x0nzbmi5n7mj8zw2gy7"))))))
"ld" ; the program to test
"Bootstrap binaries of the GNU Binutils"))
(define %bootstrap-glibc
;; The initial libc.
@@ -750,91 +766,99 @@ $out/bin/guile --version~%"
(source #f)
(build-system trivial-build-system)
(arguments
(list
#:guile %bootstrap-guile
#:modules '((guix build utils))
#:builder
#~(begin
(use-modules (guix build utils))
`(#:guile ,%bootstrap-guile
#:modules ((guix build utils))
#:builder
(begin
(use-modules (guix build utils))
(let ((tar (assoc-ref %build-inputs "bootstrap-tar"))
(xz (assoc-ref %build-inputs "bootstrap-xz"))
(tarball (assoc-ref %build-inputs "glibc.tar.xz")))
(let ((out (assoc-ref %outputs "out"))
(tar (assoc-ref %build-inputs "tar"))
(xz (assoc-ref %build-inputs "xz"))
(tarball (assoc-ref %build-inputs "tarball")))
(mkdir #$output)
(copy-file tarball "binaries.tar.xz")
(invoke xz "-d" "binaries.tar.xz")
(let ((builddir (getcwd)))
(with-directory-excursion #$output
(invoke tar "xvf"
(string-append builddir
"/binaries.tar"))
(chmod "lib" #o755)
(mkdir out)
(copy-file tarball "binaries.tar.xz")
(invoke xz "-d" "binaries.tar.xz")
(let ((builddir (getcwd)))
(with-directory-excursion out
(invoke tar "xvf"
(string-append builddir
"/binaries.tar"))
(chmod "lib" #o755)
;; Patch linker scripts so they refer to the right file-names.
(substitute* #$(cond ((target-hurd64?)
''("lib/libc.so" "lib/libm.so"))
((and (not (target-hurd?))
(or (target-x86?)
(target-arm?)))
''("lib/libc.so" "lib/libpthread.so"))
(else
''("lib/libc.so")))
(("/[^ ]+/lib/(libc|libh|libm|libpthread|ld)" _ prefix)
(string-append #$output "/lib/" prefix)))
#$@(if (target-arm32?)
#~((substitute* "lib/libpthread.so"
(("/[^ ]+/lib/libpthread_nonshared\\.a") "")))
#~())))))))
;; Patch linker scripts so they refer to the right file-names.
(substitute* ,(cond ((target-hurd64?)
''("lib/libc.so" "lib/libm.so"))
((and (not (target-hurd?))
(or (target-x86?)
(target-arm?)))
''("lib/libc.so" "lib/libpthread.so"))
(else
''("lib/libc.so")))
(("/[^ ]+/lib/(libc|libh|libm|libpthread|ld)" _ prefix)
(string-append out "/lib/" prefix)))
,@(if (target-arm32?)
`((substitute* "lib/libpthread.so"
(("/[^ ]+/lib/libpthread_nonshared\\.a") "")))
`())))))))
(inputs
(list (bootstrap-executable "tar" (%current-system))
(bootstrap-executable "xz" (%current-system))
(bootstrap-origin
(origin
(method url-fetch)
(uri (map (cut string-append <> "/" (%current-system)
(match (%current-system)
("armhf-linux"
"/20150101/glibc-2.20.tar.xz")
("aarch64-linux"
"/20170217/glibc-2.25.tar.xz")
("powerpc64le-linux"
"/20210106/glibc-stripped-2.31-powerpc64le-linux-gnu.tar.xz")
("i586-gnu"
"/20240816/glibc-stripped-2.39-i586-pc-gnu.tar.xz")
("x86_64-gnu"
"/20241122/glibc-stripped-2.39-x86_64-pc-gnu.tar.xz")
("powerpc-linux"
"/20200923/glibc-2.32.tar.xz")
("riscv64-linux"
"/20210725/glibc-2.31.tar.xz")
(_
"/20131110/glibc-2.18.tar.xz")))
%bootstrap-base-urls))
(file-name "glibc.tar.xz")
(sha256
(base32
(match (%current-system)
("x86_64-linux"
"0jlqrgavvnplj1b083s20jj9iddr4lzfvwybw5xrcis9spbfzk7v")
("i686-linux"
"1hgrccw1zqdc7lvgivwa54d9l3zsim5pqm0dykxg0z522h6gr05w")
("armhf-linux"
"18cmgvpllqfpn6khsmivqib7ys8ymnq0hdzi3qp24prik0ykz8gn")
("aarch64-linux"
"07nx3x8598i2924rjnlrncg6rm61c9bmcczbbcpbx0fb742nvv5c")
("powerpc64le-linux"
"1a1df6z8gkaq09md3jy94lixnh20599p58p0s856p10xwjaqr1iz")
("riscv64-linux"
"0d9x80vm7ca1pd2whcmpm1h14zxpb58kqajlxlwffzm04xfsjnxm")
("i586-gnu"
"0x2x6w611k6v9qdabacawamw2475p04hm3s0q95xcg063wjq4ig2")
("x86_64-gnu"
"1w4h91kxl64a62l646966i73zp2cj6w4dmyc64fh0c1hhdykxass")
("powerpc-linux"
"0smmssyjrlk5cvx49586smmk81gkwff0i6r91n4rir4jm6ba25sb")
("mips64el-linux"
"0k97a3whzx3apsi9n2cbsrr79ad6lh00klxph9hw4fqyp1abkdsg"))))))))
`(("tar" ,(bootstrap-executable "tar" (%current-system)))
("xz" ,(bootstrap-executable "xz" (%current-system)))
("tarball" ,(bootstrap-origin
(origin
(method url-fetch)
(uri (map (cut string-append <> "/" (%current-system)
(match (%current-system)
("armhf-linux"
"/20150101/glibc-2.20.tar.xz")
("aarch64-linux"
"/20170217/glibc-2.25.tar.xz")
("powerpc64le-linux"
"/20210106/glibc-stripped-2.31-powerpc64le-linux-gnu.tar.xz")
("i586-gnu"
"/20240816/glibc-stripped-2.39-i586-pc-gnu.tar.xz")
("x86_64-gnu"
"/20260302/glibc-stripped-2.41-x86_64-pc-gnu.tar.xz")
("powerpc-linux"
"/20200923/glibc-2.32.tar.xz")
("riscv64-linux"
"/20210725/glibc-2.31.tar.xz")
(_
"/20131110/glibc-2.18.tar.xz")))
%bootstrap-base-urls))
(sha256
(match (%current-system)
("x86_64-linux"
(base32
"0jlqrgavvnplj1b083s20jj9iddr4lzfvwybw5xrcis9spbfzk7v"))
("i686-linux"
(base32
"1hgrccw1zqdc7lvgivwa54d9l3zsim5pqm0dykxg0z522h6gr05w"))
("armhf-linux"
(base32
"18cmgvpllqfpn6khsmivqib7ys8ymnq0hdzi3qp24prik0ykz8gn"))
("aarch64-linux"
(base32
"07nx3x8598i2924rjnlrncg6rm61c9bmcczbbcpbx0fb742nvv5c"))
("powerpc64le-linux"
(base32
"1a1df6z8gkaq09md3jy94lixnh20599p58p0s856p10xwjaqr1iz"))
("riscv64-linux"
(base32
"0d9x80vm7ca1pd2whcmpm1h14zxpb58kqajlxlwffzm04xfsjnxm"))
("i586-gnu"
(base32
"0x2x6w611k6v9qdabacawamw2475p04hm3s0q95xcg063wjq4ig2"))
("x86_64-gnu"
(base32
"1lpvk0l7qqvz46cnxm64a1a40zg0gj90j3glyk67i1sh5r4znlmy"))
("powerpc-linux"
(base32
"0smmssyjrlk5cvx49586smmk81gkwff0i6r91n4rir4jm6ba25sb"))
("mips64el-linux"
(base32
"0k97a3whzx3apsi9n2cbsrr79ad6lh00klxph9hw4fqyp1abkdsg")))))))))
(synopsis "Bootstrap binaries and headers of the GNU C Library")
(description synopsis)
(home-page #f)
@@ -849,102 +873,110 @@ $out/bin/guile --version~%"
(source #f)
(build-system trivial-build-system)
(arguments
(list
#:guile %bootstrap-guile
#:modules '((guix build utils))
#:builder
#~(begin
(use-modules (guix build utils)
(ice-9 popen))
`(#:guile ,%bootstrap-guile
#:modules ((guix build utils))
#:builder
(begin
(use-modules (guix build utils)
(ice-9 popen))
(let ((tar (assoc-ref %build-inputs "bootstrap-tar"))
(xz (assoc-ref %build-inputs "bootstrap-xz"))
(bash (assoc-ref %build-inputs "bootstrap-bash"))
(libc (assoc-ref %build-inputs "glibc-bootstrap"))
(tarball (assoc-ref %build-inputs "gcc.tar.xz")))
(let ((out (assoc-ref %outputs "out"))
(tar (assoc-ref %build-inputs "tar"))
(xz (assoc-ref %build-inputs "xz"))
(bash (assoc-ref %build-inputs "bash"))
(libc (assoc-ref %build-inputs "libc"))
(tarball (assoc-ref %build-inputs "tarball")))
(mkdir #$output)
(copy-file tarball "binaries.tar.xz") ;avoid: more than one hard link
(invoke xz "-d" "binaries.tar.xz")
(let ((builddir (getcwd))
(bindir (string-append #$output "/bin")))
(mkdir out)
(copy-file tarball "binaries.tar.xz") ;avoid: more than one hard link
(invoke xz "-d" "binaries.tar.xz")
(let ((builddir (getcwd))
(bindir (string-append out "/bin")))
(define (wrap-program program)
(let ((wrapped (format #f ".~a-wrapped" program)))
(rename-file program wrapped)
(call-with-output-file program
(lambda (p)
(format p "#!~a
(define (wrap-program program)
(let ((wrapped (format #f ".~a-wrapped" program)))
(rename-file program wrapped)
(call-with-output-file program
(lambda (p)
(format p "#!~a
exec ~a/bin/~a -B~a/lib \
-Wl,-rpath -Wl,~a/lib \
-Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
bash
#$output wrapped
libc libc libc
#$(glibc-dynamic-linker)))))
(chmod program #o555))
bash
out wrapped
libc libc libc
,(glibc-dynamic-linker)))))
(chmod program #o555))
(with-directory-excursion #$output
(invoke tar "xvf"
(string-append builddir "/binaries.tar")))
(with-directory-excursion out
(invoke tar "xvf"
(string-append builddir "/binaries.tar")))
(with-directory-excursion bindir
(chmod "." #o755)
(for-each wrap-program
#$(if (target-hurd64?)
''("gcc" "g++")
''("gcc")))))))))
(with-directory-excursion bindir
(chmod "." #o755)
(for-each wrap-program
,(if (target-hurd64?)
''("gcc" "g++")
''("gcc")))))))))
(inputs
(list (bootstrap-executable "tar" (%current-system))
(bootstrap-executable "xz" (%current-system))
(bootstrap-executable "bash" (%current-system))
%bootstrap-glibc
(bootstrap-origin
(origin
(method url-fetch)
(uri (map (cut string-append <> "/" (%current-system)
(match (%current-system)
("armhf-linux"
"/20150101/gcc-4.8.4.tar.xz")
("aarch64-linux"
"/20170217/gcc-5.4.0.tar.xz")
("powerpc64le-linux"
"/20210106/gcc-stripped-5.5.0-powerpc64le-linux-gnu.tar.xz")
("i586-gnu"
"/20200326/gcc-stripped-5.5.0-i586-pc-gnu.tar.xz")
("x86_64-gnu"
"/20241122/gcc-stripped-14.2.0-x86_64-pc-gnu.tar.xz")
("powerpc-linux"
"/20200923/gcc-5.5.0.tar.xz")
("riscv64-linux"
"/20210725/gcc-7.5.0.tar.xz")
(_
"/20131110/gcc-4.8.2.tar.xz")))
%bootstrap-base-urls))
(file-name "gcc.tar.xz")
(sha256
(base32
(match (%current-system)
("x86_64-linux"
"17ga4m6195n4fnbzdkmik834znkhs53nkypp6557pl1ps7dgqbls")
("i686-linux"
"150c1arrf2k8vfy6dpxh59vcgs4p1bgiz2av5m19dynpks7rjnyw")
("armhf-linux"
"0ghz825yzp43fxw53kd6afm8nkz16f7dxi9xi40bfwc8x3nbbr8v")
("aarch64-linux"
"1ar3vdzyqbfm0z36kmvazvfswxhcihlacl2dzdjgiq25cqnq9ih1")
("powerpc64le-linux"
"151kjsai25vz2s667bgzpisx8f281fpl3n9pxz2yrp9jlnadz3m1")
("riscv64-linux"
"1k4mbnb54wj2q37fgshf5dfixixqnhn002vhzvi9pnb57xb9v14d")
("i586-gnu"
"1j2zc58wzil71a34h7c70sd68dmqvcscrw3rmn2whq79vd70zvv5")
("x86_64-gnu"
"1cgbhc76hlccx6v2z7kk7z173lryyq3la5mmbwivl6hbl1zcqg3m")
("powerpc-linux"
"1p7df3yixhm87dw5sccc6yn1i9db1r9hnmsg87wq5xi4rfmirq7w")
("mips64el-linux"
"1m5miqkyng45l745n0sfafdpjkqv9225xf44jqkygwsipj2cv9ks"))))))))
`(("tar" ,(bootstrap-executable "tar" (%current-system)))
("xz" ,(bootstrap-executable "xz" (%current-system)))
("bash" ,(bootstrap-executable "bash" (%current-system)))
("libc" ,%bootstrap-glibc)
("tarball" ,(bootstrap-origin
(origin
(method url-fetch)
(uri (map (cut string-append <> "/" (%current-system)
(match (%current-system)
("armhf-linux"
"/20150101/gcc-4.8.4.tar.xz")
("aarch64-linux"
"/20170217/gcc-5.4.0.tar.xz")
("powerpc64le-linux"
"/20210106/gcc-stripped-5.5.0-powerpc64le-linux-gnu.tar.xz")
("i586-gnu"
"/20200326/gcc-stripped-5.5.0-i586-pc-gnu.tar.xz")
("x86_64-gnu"
"/20260302/gcc-stripped-14.3.0-x86_64-pc-gnu.tar.xz")
("powerpc-linux"
"/20200923/gcc-5.5.0.tar.xz")
("riscv64-linux"
"/20210725/gcc-7.5.0.tar.xz")
(_
"/20131110/gcc-4.8.2.tar.xz")))
%bootstrap-base-urls))
(sha256
(match (%current-system)
("x86_64-linux"
(base32
"17ga4m6195n4fnbzdkmik834znkhs53nkypp6557pl1ps7dgqbls"))
("i686-linux"
(base32
"150c1arrf2k8vfy6dpxh59vcgs4p1bgiz2av5m19dynpks7rjnyw"))
("armhf-linux"
(base32
"0ghz825yzp43fxw53kd6afm8nkz16f7dxi9xi40bfwc8x3nbbr8v"))
("aarch64-linux"
(base32
"1ar3vdzyqbfm0z36kmvazvfswxhcihlacl2dzdjgiq25cqnq9ih1"))
("powerpc64le-linux"
(base32
"151kjsai25vz2s667bgzpisx8f281fpl3n9pxz2yrp9jlnadz3m1"))
("riscv64-linux"
(base32
"1k4mbnb54wj2q37fgshf5dfixixqnhn002vhzvi9pnb57xb9v14d"))
("i586-gnu"
(base32
"1j2zc58wzil71a34h7c70sd68dmqvcscrw3rmn2whq79vd70zvv5"))
("x86_64-gnu"
(base32
"1fhi7f5zld08b6qsyv1d48ha7z0vr8pxr4kf8x7aq1a3kbcv5rkz"))
("powerpc-linux"
(base32
"1p7df3yixhm87dw5sccc6yn1i9db1r9hnmsg87wq5xi4rfmirq7w"))
("mips64el-linux"
(base32
"1m5miqkyng45l745n0sfafdpjkqv9225xf44jqkygwsipj2cv9ks")))))))))
(native-search-paths
(list (search-path-specification
(variable "C_INCLUDE_PATH")
@@ -965,12 +997,14 @@ exec ~a/bin/~a -B~a/lib \
;; own packages.
(match (%current-system)
((or "i686-linux" "x86_64-linux")
(list %bootstrap-linux-libre-headers))
`(("linux-libre-headers" ,%bootstrap-linux-libre-headers)))
(_
(list %bootstrap-glibc
%bootstrap-gcc
%bootstrap-binutils
%bootstrap-coreutils&co))))
`(("libc" ,%bootstrap-glibc)
("gcc" ,%bootstrap-gcc)
("binutils" ,%bootstrap-binutils)
("coreutils&co" ,%bootstrap-coreutils&co)
;; In gnu-build-system.scm, we rely on the availability of Bash.
("bash" ,%bootstrap-coreutils&co)))))
(define %bootstrap-inputs-for-tests
;; These are bootstrap inputs that are cheap to produce (no compilation
+1183 -1195
View File
File diff suppressed because it is too large Load Diff
+7 -8
View File
@@ -406,9 +406,10 @@ file; as a result, it is often used in conjunction with \"tar\", resulting in
;; Don't attempt to run the tests when cross-compiling.
#:tests? (not (%current-target-system))))
(inputs (if (%current-target-system)
(list bash-minimal)
(list)))
(inputs
`(,@(if (%current-target-system)
`(("bash" ,bash-minimal))
'())))
(outputs '("out" "static"))
(synopsis "High-quality data compression program")
(description
@@ -553,7 +554,7 @@ formats, including zstd, xz, gzip, and bgzf.")
(define-public xz
(package
(name "xz")
(version "5.8.1")
(version "5.4.5")
(source (origin
(method url-fetch)
(uri (list (string-append "http://tukaani.org/xz/xz-" version
@@ -562,7 +563,7 @@ formats, including zstd, xz, gzip, and bgzf.")
version ".tar.gz")))
(sha256
(base32
"0hsmg58a27jd1vq0lc6yp405978c1nfhqwndl7f10v1mk6sjay2h"))))
"1mmpwl4kg1vs6n653gkaldyn43dpbjh8gpk7sk0gps5f6jwr0p0k"))))
(build-system gnu-build-system)
(arguments
`(#:phases
@@ -580,7 +581,7 @@ formats, including zstd, xz, gzip, and bgzf.")
(substitute* (string-append out "/lib/liblzma.la")
(("^old_library='liblzma.a'") "old_library=''"))
#t))))))
(outputs '("out" "static" "doc"))
(outputs '("out" "static"))
(inputs
`(,@(if (%current-target-system)
`(("bash" ,bash-minimal))
@@ -597,8 +598,6 @@ compression algorithm is currently LZMA2, which is used inside the .xz
container format. With typical files, XZ Utils create 30 % smaller output
than gzip and 15 % smaller output than bzip2.")
(license (list license:gpl2+ license:lgpl2.1+)) ; bits of both
(properties
`((output-synopsis "doc" "API documentation and example code")))
(home-page "https://tukaani.org/xz/")))
(define-public heatshrink
+75 -72
View File
@@ -567,15 +567,16 @@ the base compiler. Use XBINUTILS as the associated cross-Binutils."
(srfi srfi-26))
,@(package-arguments glibc/hurd-headers))
((#:phases phases)
#~(modify-phases #$phases
(add-after 'unpack 'set-cross-headers-path
(lambda* (#:key inputs #:allow-other-keys)
(let* ((mach (assoc-ref inputs "gnumach-headers"))
(hurd (assoc-ref inputs "hurd-headers"))
(cpath (string-append mach "/include:"
hurd "/include")))
(for-each (cut setenv <> cpath)
'#$%gcc-cross-include-paths))))))
`(modify-phases ,phases
(add-after 'unpack 'set-cross-headers-path
(lambda* (#:key inputs #:allow-other-keys)
(let* ((mach (assoc-ref inputs "gnumach-headers"))
(hurd (assoc-ref inputs "hurd-headers"))
(cpath (string-append mach "/include:"
hurd "/include")))
(for-each (cut setenv <> cpath)
',%gcc-cross-include-paths)
#t)))))
((#:configure-flags flags)
`(cons* ,(string-append "--build=" (%current-system))
,(string-append "--host=" target)
@@ -690,78 +691,80 @@ returned."
(name (string-append "glibc-cross-" target))
(arguments
(substitute-keyword-arguments
`(;; Disable stripping (see above.)
#:strip-binaries? #f
`(;; Disable stripping (see above.)
#:strip-binaries? #f
;; This package is used as a target input, but it should not have
;; the usual cross-compilation inputs since that would include
;; itself.
#:implicit-cross-inputs? #f
;; This package is used as a target input, but it should not have
;; the usual cross-compilation inputs since that would include
;; itself.
#:implicit-cross-inputs? #f
;; We need SRFI 26.
#:modules ((guix build gnu-build-system)
(guix build utils)
(srfi srfi-26))
;; We need SRFI 26.
#:modules ((guix build gnu-build-system)
(guix build utils)
(srfi srfi-26))
,@(package-arguments libc))
((#:configure-flags flags)
#~(cons #$(string-append "--host=" target)
#$(if (target-hurd? target)
#~(append (list "--disable-werror")
#$flags)
,@(package-arguments libc))
((#:configure-flags flags)
`(cons ,(string-append "--host=" target)
,(if (target-hurd? target)
`(append (list "--disable-werror")
,flags)
flags)))
((#:phases phases)
#~(modify-phases #$phases
(add-before 'configure 'set-cross-kernel-headers-path
(lambda* (#:key inputs #:allow-other-keys)
(let* ((kernel (assoc-ref inputs "kernel-headers"))
(cpath (string-append kernel "/include")))
(for-each (cut setenv <> cpath)
'#$%gcc-cross-include-paths)
(setenv "CROSS_LIBRARY_PATH"
(string-append kernel "/lib"))))) ; for Hurd's libihash
(add-before 'configure 'add-cross-binutils-to-PATH
(lambda* (#:key native-inputs 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
(or native-inputs inputs)
(string-append #$target "/bin/objdump")))
((#:phases phases)
`(modify-phases ,phases
(add-before 'configure 'set-cross-kernel-headers-path
(lambda* (#:key inputs #:allow-other-keys)
(let* ((kernel (assoc-ref inputs "kernel-headers"))
(cpath (string-append kernel "/include")))
(for-each (cut setenv <> cpath)
',%gcc-cross-include-paths)
(setenv "CROSS_LIBRARY_PATH"
(string-append kernel "/lib")) ; for Hurd's libihash
#t)))
(add-before 'configure 'add-cross-binutils-to-PATH
(lambda* (#:key native-inputs 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
(or native-inputs inputs)
(string-append ,target "/bin/objdump")))
(define cross-binutils
(dirname cross-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")))))
(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)
;; 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 _
(substitute* (string-append #$output "/lib/libc.so")
(("/[^ ]+/lib/libc.so.0.3")
(string-append #$output "/lib/libc.so.0.3"
" libmachuser.so libhurduser.so")))))
(add-after 'install 'create-machine-symlink
(lambda _
(let ((cpu #$(match target
((? target-x86-32?)
"i386")
((? target-x86-64?)
"x86_64")))
,@(if (target-hurd? target)
`((add-after 'install 'augment-libc.so
(lambda* (#:key outputs #:allow-other-keys)
(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"))))))
(add-after 'install 'create-machine-symlink
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(cpu ,(match target
((? target-x86-32?)
"i386")
((? target-x86-64?)
"x86_64")))
(machine (string-append
#$output
"/include/mach/machine")))
(unless (file-exists? machine)
(symlink cpu machine))))))
#~())))))
out "/include/mach/machine")))
(unless (file-exists? machine)
(symlink cpu machine))))))
'())))))
;; Shadow the native "kernel-headers" because glibc's recipe expects the
;; "kernel-headers" input to point to the right thing.
+16 -2
View File
@@ -113,7 +113,14 @@
(for-each (lambda (x)
(install-file x "aclocal"))
(find-files "aclocal_java"))
(apply (assq-ref %standard-phases 'bootstrap) arguments))))
(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"))))))
#$@(if (or (target-arm?)
(target-riscv64?))
#~((add-after 'unpack 'bdb-configure-patch
@@ -195,7 +202,14 @@ SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
(for-each (lambda (x)
(install-file x "aclocal"))
(find-files "aclocal_java"))
(apply (assq-ref %standard-phases 'bootstrap) arguments))))
(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")
+5 -7
View File
@@ -48,7 +48,7 @@
(define-public nuspell
(package
(name "nuspell")
(version "5.1.7")
(version "5.1.4")
(source
(origin
(method git-fetch)
@@ -58,14 +58,12 @@
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1xvy8qrpw1282akr873xzja61afnr27f1gab6jc4cgy8pkfqq308"))))
(base32 "05j1hmczy6v9dyxp77vxhgyl7y5hff3v45vlp86gyh7m9lgqpmra"))))
(build-system cmake-build-system)
(arguments
(list #:configure-flags
#~(list "-DBUILD_DOCS=OFF" ;do not pull Pandoc
#$@(if (%current-target-system)
'("-DBUILD_TESTING=OFF")
'()))))
(if (%current-target-system)
(list #:configure-flags #~(list "-DBUILD_TESTING=OFF"))
'()))
(native-inputs (list catch2-3 pkg-config))
(propagated-inputs (list icu4c))
(native-search-paths (list (search-path-specification
+9 -11
View File
@@ -135,7 +135,6 @@
#:use-module (gnu packages imagemagick)
#:use-module (gnu packages javascript)
#:use-module (gnu packages jupyter)
#:use-module (gnu packages icu4c)
#:use-module (gnu packages kde-frameworks)
#:use-module (gnu packages libcanberra)
#:use-module (gnu packages libevent)
@@ -2721,17 +2720,16 @@ dynamics is used by FreeCAD 1.0.0 for its new Assembly workbench.")
(define-public freecad
(package
(name "freecad")
(version "1.1.0")
(version "1.0.2")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/FreeCAD/FreeCAD")
(commit version)
(recursive? #t))) ;needed for the AddonManager
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "029ndw1dypx0xhs4fyiinf7gpk8am0vm9b24idvdsx9x7ghrqz4j"))
(base32 "1zyz473fzrz9h073wp4k65qq4bkhqsp245nsv6nv186sl78l99xa"))
(snippet
#~(begin
(use-modules (guix build utils))
@@ -2748,7 +2746,7 @@ dynamics is used by FreeCAD 1.0.0 for its new Assembly workbench.")
#:configure-flags
#~(list
"-DBUILD_FLAT_MESH:BOOL=ON"
"-DBUILD_ENABLE_CXX_STD:STRING=C++20" ; FreeCAD 1.1 requires C++20
"-DBUILD_ENABLE_CXX_STD:STRING=C++17"
"-DENABLE_DEVELOPER_TESTS=OFF" ;; see the above: #:tests? comment
"-DFREECAD_QT_VERSION=6" ;; Build with Qt6
"-DFREECAD_USE_EXTERNAL_ONDSELSOLVER=ON" ;; unbundle ondsel-solver
@@ -2770,13 +2768,12 @@ dynamics is used by FreeCAD 1.0.0 for its new Assembly workbench.")
(list c++-gsl
doxygen
graphviz
pybind11
qttools
pkg-config
swig-4.4))
swig-4.0))
(inputs
(list bash-minimal
boost
boost-1.83
coin3d
double-conversion
eigen
@@ -2786,7 +2783,6 @@ dynamics is used by FreeCAD 1.0.0 for its new Assembly workbench.")
gl2ps
glew
hdf5-1.10
icu4c
jsoncpp
libarea
libjpeg-turbo
@@ -2809,14 +2805,16 @@ dynamics is used by FreeCAD 1.0.0 for its new Assembly workbench.")
python-ply
python-pyside-6
python-pyyaml
python-shiboken-6
python-wrapper
qtsvg
qtwebchannel
qtwebengine
qtwayland
qtx11extras
sqlite
onetbb ;same version as opencascade-occt
vtk
vtk-9.5
xerces-c
yaml-cpp
zlib))
+23 -23
View File
@@ -26,7 +26,6 @@
#:use-module (guix gexp)
#:use-module (guix utils)
#:use-module (gnu packages)
#:use-module (gnu packages bootstrap)
#:use-module (gnu packages m4)
#:use-module (gnu packages man)
#:use-module (gnu packages bison)
@@ -44,9 +43,18 @@
"flex-" version ".tar.gz"))
(sha256
(base32
"15g9bv236nzi665p9ggqjlfn4dwck5835vf0bbw2cz7h5c1swyp8"))
(patches (search-patches "flex-fix-make-dependencies.patch"))))
"15g9bv236nzi665p9ggqjlfn4dwck5835vf0bbw2cz7h5c1swyp8"))))
(build-system gnu-build-system)
(inputs
(let ((bison-for-tests
(package
(inherit bison)
(arguments
;; Disable tests, since they require flex.
(substitute-keyword-arguments arguments
((#:tests? _ #f) #f)))
(inputs (alist-delete "flex" (package-inputs bison))))))
`(("bison" ,bison-for-tests))))
(arguments
(if (%current-target-system)
(list #:configure-flags
@@ -55,29 +63,21 @@
'()))
;; m4 is not present in PATH when cross-building
(native-inputs
(let ((bison-for-tests
(package
(inherit bison)
(arguments
;; Disable tests, since they require flex.
(substitute-keyword-arguments arguments
((#:tests? _ #f) #f)))
(inputs (modify-inputs inputs
(delete "flex"))))))
(list bison-for-tests help2man m4)))
(list help2man m4))
(propagated-inputs (list m4))
(home-page "https://github.com/westes/flex")
(synopsis "Fast lexical analyser generator")
(description
"Flex is a tool for generating scanners. A scanner, sometimes called a
tokenizer, is a program which recognizes lexical patterns in text. The flex
program reads user-specified input files, or its standard input if no file
names are given, for a description of a scanner to generate. The description
is in the form of pairs of regular expressions and C code, called rules. Flex
generates a C source file named @file{lex.yy.c}, which defines the function
@code{yylex()}. The @file{lex.yy.c} can be compiled and linked to produce an
executable. When the executable is run, it analyzes its input for occurrences
of text matching the regular expressions for each rule. Whenever it finds a
match, it executes the corresponding C code.")
"Flex is a tool for generating scanners. A scanner, sometimes
called a tokenizer, is a program which recognizes lexical patterns in
text. The flex program reads user-specified input files, or its standard
input if no file names are given, for a description of a scanner to
generate. The description is in the form of pairs of regular expressions
and C code, called rules. Flex generates a C source file named,
\"lex.yy.c\", which defines the function yylex(). The file \"lex.yy.c\"
can be compiled and linked to produce an executable. When the executable
is run, it analyzes its input for occurrences of text matching the
regular expressions for each rule. Whenever it finds a match, it
executes the corresponding C code.")
(license (non-copyleft "file://COPYING"
"See COPYING in the distribution."))))
+4 -4
View File
@@ -41,13 +41,13 @@
(define-public gawk
(package
(name "gawk")
(version "5.3.2")
(version "5.3.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/gawk/gawk-" version
".tar.xz"))
(sha256
(base32 "1k699kfajwzw4dyw1m9h9kld1gdv00nfy04b2f952w6y15jlihzq"))))
(base32 "02x97iyl9v84as4rkdrrkfk2j4vy4r3hpp3rkp3gh3qxs79id76a"))))
(build-system gnu-build-system)
(arguments
(list #:phases
@@ -56,7 +56,7 @@
(lambda* (#:key inputs #:allow-other-keys)
;; Refer to the right shell.
(let ((/bin/sh (search-input-file inputs "bin/sh")))
(substitute* '("io.c" "builtin.c")
(substitute* "io.c"
(("/bin/sh") /bin/sh))
;; When cross-compiling, remove dependencies on the
@@ -73,7 +73,7 @@
;; Remove dependency on 'more' (from util-linux), which
;; would needlessly complicate bootstrapping.
(substitute* "test/Makefile"
(("\\| \\$\\$\\{PAGER:-more\\}") ""))
(("\\| more") ""))
;; Adjust the shebang in that file since it is then diff'd
;; against the actual test output.
+261 -252
View File
@@ -80,16 +80,16 @@ where the OS part is overloaded to denote a specific ABI---into GCC
(cond ((string-match "^mips64el.*gnuabin?64$" target)
;; Triplets recognized by glibc as denoting the N64 ABI; see
;; ports/sysdeps/mips/preconfigure.
#~(list "--with-abi=64"))
'("--with-abi=64"))
((string-match "^arm.*-gnueabihf$" target)
#~(list "--with-arch=armv7-a"
"--with-float=hard"
"--with-mode=thumb"
"--with-fpu=neon"))
'("--with-arch=armv7-a"
"--with-float=hard"
"--with-mode=thumb"
"--with-fpu=neon"))
((string-match "x86_64-linux-gnux32" target)
#~(list "--with-abi=mx32"))
'("--with-abi=mx32"))
((and (string-suffix? "-gnu" target)
(not (string-contains target "-linux")))
@@ -97,24 +97,36 @@ where the OS part is overloaded to denote a specific ABI---into GCC
;; with:
;; libcilkrts/runtime/os-unix.c:388:2: error: #error "Unknown architecture"
;; Cilk has been removed from GCC 8 anyway.
#~(list "--disable-libcilkrts"))
'("--disable-libcilkrts"))
;; glibc needs the 128-bit long double type on these architectures.
((or (string-prefix? "powerpc64le-" target)
(string-prefix? "powerpc-" target))
#~(list "--with-long-double-128"))
'("--with-long-double-128"))
;; GCC 11.3.0's <libgcov.h> includes <sys/mman.h>, which MinGW lacks:
;; <https://bugs.gentoo.org/show_bug.cgi?id=843989>.
((target-mingw? target)
#~(list "--disable-gcov"))
'("--disable-gcov"))
(else
;; TODO: Add `arm.*-gnueabi', etc.
#~(list))))
'())))
(define-public gcc-base
(let* ((stripped? #t) ;whether to strip the compiler, not the libraries
(maybe-target-tools
(lambda ()
;; Return the `_FOR_TARGET' variables that are needed when
;; cross-compiling GCC.
(let ((target (%current-target-system)))
(if target
(map (lambda (var tool)
(string-append (string-append var "_FOR_TARGET")
"=" target "-" tool))
'("CC" "CXX" "LD" "AR" "NM" "OBJDUMP" "RANLIB" "STRIP")
'("gcc" "g++" "ld" "ar" "nm" "objdump" "ranlib" "strip"))
'()))))
(libdir
(let ((base '(or (assoc-ref outputs "lib")
(assoc-ref outputs "out"))))
@@ -122,7 +134,45 @@ where the OS part is overloaded to denote a specific ABI---into GCC
;; Return the directory that contains lib/libgcc_s.so et al.
(if (%current-target-system)
`(string-append ,base "/" ,(%current-target-system))
base)))))
base))))
(configure-flags
(lambda ()
;; This is terrible. Since we have two levels of quasiquotation,
;; we have to do this convoluted thing just so we can insert the
;; contents of (maybe-target-tools).
(list 'quasiquote
(append
'("--enable-plugin"
"--enable-languages=c,c++,objc,obj-c++"
"--disable-multilib"
"--with-system-zlib"
;; No pre-compiled libstdc++ headers, to save space.
"--disable-libstdcxx-pch"
"--with-local-prefix=/no-gcc-local-prefix"
;; With a separate "lib" output, the build system
;; incorrectly guesses GPLUSPLUS_INCLUDE_DIR, so force
;; it. (Don't use a versioned sub-directory, that's
;; unnecessary.)
,(string-append "--with-gxx-include-dir="
(assoc-ref %outputs "out")
"/include/c++")
,(let ((libc (assoc-ref %build-inputs "libc")))
(if libc
(string-append "--with-native-system-header-dir=" libc
"/include")
"--without-headers")))
;; Pass the right options for the target triplet.
(let ((triplet
(or (%current-target-system)
(nix-system->gnu-triplet (%current-system)))))
(gcc-configure-flags-for-triplet triplet))
(maybe-target-tools))))))
(hidden-package
(package
(name "gcc")
@@ -152,239 +202,201 @@ where the OS part is overloaded to denote a specific ABI---into GCC
texinfo-5))
(arguments
(list
#:out-of-source? #t
#:configure-flags
#~(append
(list "--enable-plugin"
"--enable-languages=c,c++,objc,obj-c++"
"--disable-multilib"
"--with-system-zlib"
`(#:out-of-source? #t
#:configure-flags ,(configure-flags)
;; No pre-compiled libstdc++ headers, to save space.
"--disable-libstdcxx-pch"
#:make-flags
;; None of the flags below are needed when doing a Canadian cross.
;; TODO: Simplify this.
,(if (%current-target-system)
(if stripped?
''("CFLAGS=-g0 -O2")
''())
`(let* ((libc (assoc-ref %build-inputs "libc"))
(libc-native (or (assoc-ref %build-inputs "libc-native")
libc)))
`(,@(if libc
(list (string-append "LDFLAGS_FOR_TARGET="
"-B" libc "/lib "
"-Wl,-dynamic-linker "
"-Wl," libc
,(glibc-dynamic-linker)))
'())
"--with-local-prefix=/no-gcc-local-prefix"
;; Native programs like 'genhooks' also need that right.
,(string-append "LDFLAGS="
"-Wl,-rpath=" libc-native "/lib "
"-Wl,-dynamic-linker "
"-Wl," libc-native ,(glibc-dynamic-linker))
,(string-append "BOOT_CFLAGS=-O2 "
,(if stripped? "-g0" "-g")))))
;; With a separate "lib" output, the build system
;; incorrectly guesses GPLUSPLUS_INCLUDE_DIR, so force
;; it. (Don't use a versioned sub-directory, that's
;; unnecessary.)
(string-append "--with-gxx-include-dir="
#$output "/include/c++")
#:tests? #f
(let ((libc (assoc-ref %build-inputs "libc")))
(if libc
(string-append "--with-native-system-header-dir=" libc
"/include")
"--without-headers")))
;; Pass the right options for the target triplet.
#$(gcc-configure-flags-for-triplet
(or (%current-target-system)
(nix-system->gnu-triplet (%current-system))))
;; Return the `_FOR_TARGET' variables that are needed when
;; cross-compiling GCC.
#$(let ((target (%current-target-system)))
(if target
#~(map (lambda (var tool)
(string-append (string-append var "_FOR_TARGET")
"=" #$target "-" tool))
'("CC" "CXX" "LD" "AR" "NM" "OBJDUMP" "RANLIB" "STRIP")
'("gcc" "g++" "ld" "ar" "nm" "objdump" "ranlib" "strip"))
#~(list))))
#:make-flags
(cond
((and (%current-target-system) stripped?)
#~(list "CFLAGS=-g0 -O2"))
((%current-target-system)
#~(list)) ;None of the flags are needed when doing a Canadian cross.
(else
#~(let* ((libc (assoc-ref %build-inputs "libc"))
(libc-native (or (assoc-ref %build-inputs "libc-native")
libc))
(loader #$(glibc-dynamic-linker)))
(cons*
;; Native programs like 'genhooks' need that right.
(string-append "LDFLAGS="
"-Wl,-rpath=" libc-native "/lib "
"-Wl,-dynamic-linker "
"-Wl," libc-native loader)
(string-append "BOOT_CFLAGS=-O2 "
(if #$stripped? "-g0" "-g"))
(if libc
(list (string-append "LDFLAGS_FOR_TARGET="
"-B" libc "/lib "
"-Wl,-dynamic-linker "
"-Wl," libc loader))
(list))))))
#:tests? #f
#:phases
#~(modify-phases %standard-phases
(add-before 'configure 'relax-gcc-14s-strictness
(lambda* (#:key inputs #:allow-other-keys)
(let ((bash (search-input-file inputs "/bin/bash"))
(wrapper (string-append (getcwd) "/gcc.sh"))
(stage-wrapper (string-append (getcwd) "/stage-gcc.sh")))
(with-output-to-file wrapper
(lambda _
(format #t "#! ~a
#:phases
(modify-phases %standard-phases
(add-before 'configure 'relax-gcc-14s-strictness
(lambda* (#:key inputs #:allow-other-keys)
(let ((bash (assoc-ref inputs "bash"))
(wrapper (string-append (getcwd) "/gcc.sh"))
(stage-wrapper (string-append (getcwd) "/stage-gcc.sh")))
(with-output-to-file wrapper
(lambda _
(format #t "#! ~a/bin/bash
exec gcc \"$@\" \
-Wno-error=implicit-function-declaration"
bash)))
(chmod wrapper #o555)
(with-output-to-file stage-wrapper
(lambda _
(format #t "#! ~a
bash)))
(chmod wrapper #o555)
(with-output-to-file stage-wrapper
(lambda _
(format #t "#! ~a/bin/bash
exec \"$@\" \
-Wno-error=implicit-function-declaration"
bash)))
(chmod stage-wrapper #o555)
;; Rather than adding CC to #:configure-flags and
;; STAGE_CC_WRAPPER to #:make-flags, we add them to the
;; environment in this easily removable stage.
(cond (#$(%current-target-system) ;cross-build?
(setenv "CC_FOR_BUILD" wrapper))
(else
(setenv "CC" wrapper)
(setenv "STAGE_CC_WRAPPER" stage-wrapper))))))
(add-before 'configure 'pre-configure
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((libdir #$(libdir))
(libc (assoc-ref inputs "libc")))
(when libc
;; The following is not performed for `--without-headers'
;; cross-compiler builds.
bash)))
(chmod stage-wrapper #o555)
;; Rather than adding CC to #:configure-flags and
;; STAGE_CC_WRAPPER to #:make-flags, we add them to the
;; environment in this easily removable stage.
(cond (,(%current-target-system) ;cross-build?
(setenv "CC_FOR_BUILD" wrapper))
(else
(setenv "CC" wrapper)
(setenv "STAGE_CC_WRAPPER" stage-wrapper))))))
(add-before 'configure 'pre-configure
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((libdir ,(libdir))
(libc (assoc-ref inputs "libc")))
(when libc
;; The following is not performed for `--without-headers'
;; cross-compiler builds.
;; Join multi-line definitions of GLIBC_DYNAMIC_LINKER* into a
;; single line, to allow the next step to work properly.
(for-each
(lambda (x)
(substitute* (find-files "gcc/config"
"^(linux|gnu|sysv4)(64|-elf|-eabi)?\\.h$")
(("(#define (GLIBC|GNU_USER)_DYNAMIC_LINKER.*)\\\\\n$" _ line)
line)))
'(1 2 3))
;; Join multi-line definitions of GLIBC_DYNAMIC_LINKER* into a
;; single line, to allow the next step to work properly.
(for-each
(lambda (x)
(substitute* (find-files "gcc/config"
"^(linux|gnu|sysv4)(64|-elf|-eabi)?\\.h$")
(("(#define (GLIBC|GNU_USER)_DYNAMIC_LINKER.*)\\\\\n$" _ line)
line)))
'(1 2 3))
;; Fix the dynamic linker's file name.
(substitute* (find-files "gcc/config"
"^(linux|gnu|sysv4)(64|-elf|-eabi)?\\.h$")
(("#define (GLIBC|GNU_USER)_DYNAMIC_LINKER([^ \t]*).*$"
_ gnu-user suffix)
(format #f "#define ~a_DYNAMIC_LINKER~a \"~a\"~%"
gnu-user suffix
(string-append libc #$(glibc-dynamic-linker)))))
;; Fix the dynamic linker's file name.
(substitute* (find-files "gcc/config"
"^(linux|gnu|sysv4)(64|-elf|-eabi)?\\.h$")
(("#define (GLIBC|GNU_USER)_DYNAMIC_LINKER([^ \t]*).*$"
_ gnu-user suffix)
(format #f "#define ~a_DYNAMIC_LINKER~a \"~a\"~%"
gnu-user suffix
(string-append libc ,(glibc-dynamic-linker)))))
;; Tell where to find libstdc++, libc, and `?crt*.o', except
;; `crt{begin,end}.o', which come with GCC.
(substitute* (find-files "gcc/config"
"^gnu-user.*\\.h$")
(("#define GNU_USER_TARGET_LIB_SPEC (.*)$" _ suffix)
;; Help libgcc_s.so be found (see also below.) Always use
;; '-lgcc_s' so that libgcc_s.so is always found by those
;; programs that use 'pthread_cancel' (glibc dlopens
;; libgcc_s.so when pthread_cancel support is needed, but
;; having it in the application's RUNPATH isn't enough; see
;; <http://sourceware.org/ml/libc-help/2013-11/msg00023.html>.)
;;
;; NOTE: The '-lgcc_s' added below needs to be removed in a
;; later phase of %gcc-static. If you change the string
;; below, make sure to update the relevant code in
;; %gcc-static package as needed.
(format #f "#define GNU_USER_TARGET_LIB_SPEC \
;; Tell where to find libstdc++, libc, and `?crt*.o', except
;; `crt{begin,end}.o', which come with GCC.
(substitute* (find-files "gcc/config"
"^gnu-user.*\\.h$")
(("#define GNU_USER_TARGET_LIB_SPEC (.*)$" _ suffix)
;; Help libgcc_s.so be found (see also below.) Always use
;; '-lgcc_s' so that libgcc_s.so is always found by those
;; programs that use 'pthread_cancel' (glibc dlopens
;; libgcc_s.so when pthread_cancel support is needed, but
;; having it in the application's RUNPATH isn't enough; see
;; <http://sourceware.org/ml/libc-help/2013-11/msg00023.html>.)
;;
;; NOTE: The '-lgcc_s' added below needs to be removed in a
;; later phase of %gcc-static. If you change the string
;; below, make sure to update the relevant code in
;; %gcc-static package as needed.
(format #f "#define GNU_USER_TARGET_LIB_SPEC \
\"-L~a/lib %{!static:-rpath=~a/lib %{!static-libgcc:-rpath=~a/lib -lgcc_s}} \" ~a"
libc libc libdir suffix))
(("#define GNU_USER_TARGET_STARTFILE_SPEC.*$" line)
(format #f "#define STANDARD_STARTFILE_PREFIX_1 \"~a/lib/\"
libc libc libdir suffix))
(("#define GNU_USER_TARGET_STARTFILE_SPEC.*$" line)
(format #f "#define STANDARD_STARTFILE_PREFIX_1 \"~a/lib/\"
#define STANDARD_STARTFILE_PREFIX_2 \"\"
~a"
libc line)))
libc line)))
;; The rs6000 (a.k.a. powerpc) config in GCC does not use
;; GNU_USER_* defines. Do the above for this case.
(substitute*
"gcc/config/rs6000/sysv4.h"
(("#define LIB_LINUX_SPEC (.*)$" _ suffix)
(format #f "#define LIB_LINUX_SPEC \
;; The rs6000 (a.k.a. powerpc) config in GCC does not use
;; GNU_USER_* defines. Do the above for this case.
(substitute*
"gcc/config/rs6000/sysv4.h"
(("#define LIB_LINUX_SPEC (.*)$" _ suffix)
(format #f "#define LIB_LINUX_SPEC \
\"-L~a/lib %{!static:-rpath=~a/lib %{!static-libgcc:-rpath=~a/lib -lgcc_s}} \" ~a"
libc libc libdir suffix))
(("#define STARTFILE_LINUX_SPEC.*$" line)
(format #f "#define STANDARD_STARTFILE_PREFIX_1 \"~a/lib/\"
libc libc libdir suffix))
(("#define STARTFILE_LINUX_SPEC.*$" line)
(format #f "#define STANDARD_STARTFILE_PREFIX_1 \"~a/lib/\"
#define STANDARD_STARTFILE_PREFIX_2 \"\"
~a"
libc line))))
libc line))))
(when (file-exists? "gcc/config/rs6000")
;; Force powerpc libdir to be /lib and not /lib64
(substitute* (find-files "gcc/config/rs6000")
(("/lib64") "/lib")))
(when (file-exists? "gcc/config/rs6000")
;; Force powerpc libdir to be /lib and not /lib64
(substitute* (find-files "gcc/config/rs6000")
(("/lib64") "/lib")))
;; Don't retain a dependency on the build-time sed.
(substitute* "fixincludes/fixincl.x"
(("static char const sed_cmd_z\\[\\] =.*;")
"static char const sed_cmd_z[] = \"sed\";"))
;; Don't retain a dependency on the build-time sed.
(substitute* "fixincludes/fixincl.x"
(("static char const sed_cmd_z\\[\\] =.*;")
"static char const sed_cmd_z[] = \"sed\";"))
;; Aarch64 support didn't land in GCC until the 4.8 series.
(when (file-exists? "gcc/config/aarch64")
;; Force Aarch64 libdir to be /lib and not /lib64
(substitute* "gcc/config/aarch64/t-aarch64-linux"
(("lib64") "lib")))
;; Aarch64 support didn't land in GCC until the 4.8 series.
(when (file-exists? "gcc/config/aarch64")
;; Force Aarch64 libdir to be /lib and not /lib64
(substitute* "gcc/config/aarch64/t-aarch64-linux"
(("lib64") "lib")))
;; The STARTFILE_PREFIX_SPEC prevents gcc from finding the
;; gcc:lib output, which causes ld to not find -lgcc_s.
(when (file-exists? "gcc/config/riscv")
(substitute* '("gcc/config/riscv/linux.h"
"gcc/config/riscv/riscv.h") ; GCC < 10
(("define STARTFILE_PREFIX_SPEC")
"define __STARTFILE_PREFIX_SPEC")))
;; The STARTFILE_PREFIX_SPEC prevents gcc from finding the
;; gcc:lib output, which causes ld to not find -lgcc_s.
(when (file-exists? "gcc/config/riscv")
(substitute* '("gcc/config/riscv/linux.h"
"gcc/config/riscv/riscv.h") ; GCC < 10
(("define STARTFILE_PREFIX_SPEC")
"define __STARTFILE_PREFIX_SPEC")))
(when (file-exists? "libbacktrace")
;; GCC 4.8+ comes with libbacktrace. By default it builds
;; with -Werror, which fails with a -Wcast-qual error in glibc
;; 2.21's stdlib-bsearch.h. Remove -Werror.
(substitute* "libbacktrace/configure"
(("WARN_FLAGS=(.*)-Werror" _ flags)
(string-append "WARN_FLAGS=" flags)))
(when (file-exists? "libbacktrace")
;; GCC 4.8+ comes with libbacktrace. By default it builds
;; with -Werror, which fails with a -Wcast-qual error in glibc
;; 2.21's stdlib-bsearch.h. Remove -Werror.
(substitute* "libbacktrace/configure"
(("WARN_FLAGS=(.*)-Werror" _ flags)
(string-append "WARN_FLAGS=" flags)))
(when (file-exists? "libsanitizer/libbacktrace")
;; Same in libsanitizer's bundled copy (!) found in 4.9+.
(substitute* "libsanitizer/libbacktrace/Makefile.in"
(("-Werror")
""))))
(when (file-exists? "libsanitizer/libbacktrace")
;; Same in libsanitizer's bundled copy (!) found in 4.9+.
(substitute* "libsanitizer/libbacktrace/Makefile.in"
(("-Werror")
""))))
;; Add a RUNPATH to libstdc++.so so that it finds libgcc_s.
;; See <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=32354>
;; and <http://bugs.gnu.org/20358>.
(substitute* "libstdc++-v3/src/Makefile.in"
(("^OPT_LDFLAGS = ")
"OPT_LDFLAGS = -Wl,-rpath=$(libdir) "))
;; Add a RUNPATH to libstdc++.so so that it finds libgcc_s.
;; See <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=32354>
;; and <http://bugs.gnu.org/20358>.
(substitute* "libstdc++-v3/src/Makefile.in"
(("^OPT_LDFLAGS = ")
"OPT_LDFLAGS = -Wl,-rpath=$(libdir) "))
;; Move libstdc++*-gdb.py to the "lib" output to avoid a
;; circularity between "out" and "lib". (Note:
;; --with-python-dir is useless because it imposes $(prefix) as
;; the parent directory.)
(substitute* "libstdc++-v3/python/Makefile.in"
(("pythondir = .*$")
(string-append "pythondir = " libdir "/share"
"/gcc-$(gcc_version)/python\n")))
;; Move libstdc++*-gdb.py to the "lib" output to avoid a
;; circularity between "out" and "lib". (Note:
;; --with-python-dir is useless because it imposes $(prefix) as
;; the parent directory.)
(substitute* "libstdc++-v3/python/Makefile.in"
(("pythondir = .*$")
(string-append "pythondir = " libdir "/share"
"/gcc-$(gcc_version)/python\n")))
;; Avoid another circularity between the outputs: this #define
;; ends up in auto-host.h in the "lib" output, referring to
;; "out". (This variable is used to augment cpp's search path,
;; but there's nothing useful to look for here.)
(substitute* "gcc/config.in"
(("PREFIX_INCLUDE_DIR")
"PREFIX_INCLUDE_DIR_isnt_necessary_here")))))
;; Avoid another circularity between the outputs: this #define
;; ends up in auto-host.h in the "lib" output, referring to
;; "out". (This variable is used to augment cpp's search path,
;; but there's nothing useful to look for here.)
(substitute* "gcc/config.in"
(("PREFIX_INCLUDE_DIR")
"PREFIX_INCLUDE_DIR_isnt_necessary_here")))))
(add-after 'configure 'post-configure
(lambda _
;; Don't store configure flags, to avoid retaining references to
;; build-time dependencies---e.g., `--with-ppl=/gnu/store/xxx'.
(substitute* "Makefile"
(("^TOPLEVEL_CONFIGURE_ARGUMENTS=(.*)$" _ rest)
"TOPLEVEL_CONFIGURE_ARGUMENTS=\n")))))))
(add-after 'configure 'post-configure
(lambda _
;; Don't store configure flags, to avoid retaining references to
;; build-time dependencies---e.g., `--with-ppl=/gnu/store/xxx'.
(substitute* "Makefile"
(("^TOPLEVEL_CONFIGURE_ARGUMENTS=(.*)$" _ rest)
"TOPLEVEL_CONFIGURE_ARGUMENTS=\n")))))))
(native-search-paths %gcc-search-paths)
(properties `((gcc-libc . ,(assoc-ref inputs "libc"))))
(synopsis "GNU Compiler Collection")
@@ -428,21 +440,21 @@ Go. It also includes runtime support libraries for these languages.")
`((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"))))))))))
`(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"))))))))))
(supported-systems (fold delete %supported-systems
'("aarch64-linux" "riscv64-linux"
"powerpc64le-linux" "x86_64-gnu")))))
@@ -486,21 +498,21 @@ 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.
((#: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"))))))))))
`(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"))))))))))
(supported-systems (fold delete %supported-systems
'("riscv64-linux" "x86_64-gnu")))
(inputs
@@ -969,8 +981,7 @@ It also includes runtime support libraries for these languages.")
(patches (search-patches "gcc-12-strmov-store-file-names.patch"
"gcc-5.0-libvtv-runpath.patch"
"gcc-13-libsanitizer-no-crypt.patch"
"gcc-libstdc++-newer-gcc.patch"
"gcc-mangle-guix-store.patch"))
"gcc-libstdc++-newer-gcc.patch"))
(modules '((guix build utils)))
(snippet gcc-canadian-cross-objdump-snippet)))
(arguments
@@ -1001,8 +1012,7 @@ It also includes runtime support libraries for these languages.")
(base32
"0fna78ly417g69fdm4i5f3ms96g8xzzjza8gwp41lqr5fqlpgp70"))
(patches (search-patches "gcc-12-strmov-store-file-names.patch"
"gcc-5.0-libvtv-runpath.patch"
"gcc-mangle-guix-store.patch"))
"gcc-5.0-libvtv-runpath.patch"))
(modules '((guix build utils)))
(snippet gcc-canadian-cross-objdump-snippet)))
(arguments (substitute-keyword-arguments arguments
@@ -1035,8 +1045,7 @@ It also includes runtime support libraries for these languages.")
"0knj4ph6y7r7yhnp1v4339af7mki5nkh7ni9b948433bhabdk3s3"))
(patches (search-patches "gcc-12-strmov-store-file-names.patch"
"gcc-5.0-libvtv-runpath.patch"
"gcc-hurd-split-stack.patch"
"gcc-mangle-guix-store.patch"))
"gcc-hurd-split-stack.patch"))
(modules '((guix build utils)))
(snippet gcc-canadian-cross-objdump-snippet)))
(arguments
+38 -40
View File
@@ -13,7 +13,6 @@
;;; Copyright © 2020 EuAndreh <eu@euandre.org>
;;; Copyright © 2022, 2024, 2025 gemmaro <gemmaro.dev@gmail.com>
;;; Copyright © 2023 Maxim Cournoyer maxim@guixotic.coop>
;;; Copyright © 2026 Robin Templeton <robin@guixotic.coop>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -58,21 +57,24 @@
(define-public gettext-minimal
(package
(name "gettext-minimal")
(version "1.0")
(version "0.23.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/gettext/gettext-"
version ".tar.gz"))
(sha256
(base32
"06jgjxnm5xhw0d0zwl9birlwfxfgfqhk9q029j3h9941r5wrpnc5"))))
"0j8fijicvg8jkrisgsqbpnbmfb2mz3gx2p6pcwip82731yb7i9aj"))))
(build-system gnu-build-system)
(outputs '("out"
"doc")) ;9 MiB of HTML
(inputs
(list libunistring
libxml2
libtextstyle))
;; TODO: ncurses is only needed for the 'libtextstyle' library.
;; The next version of gettext can use a separate libtextstyle,
;; but for now we include it here in 'gettext-minimal'.
ncurses))
(arguments
(list #:configure-flags #~'("--with-included-libunistring=no"
"--with-included-libxml=no")
@@ -91,11 +93,11 @@
(("/bin/pwd") "pwd"))))
(add-before 'check 'patch-tests
(lambda* (#:key inputs #:allow-other-keys)
;;libgettextlib-1.0.so => not found
;;libgettextlib-0.23.so => not found
(substitute* "gettext-tools/gnulib-tests/test-execute.sh"
(("^#!.*" all)
(string-append all "exit 77;\n")))
(let* ((bash (search-input-file inputs "bin/sh")))
(let* ((bash (which "sh")))
;; Some of the files we're patching are
;; ISO-8859-1-encoded, so choose it as the default
;; encoding so the byte encoding is preserved.
@@ -104,7 +106,7 @@
(find-files "gettext-tools/tests"
"^(lang-sh|msg(exec|filter)-[0-9])")
(("#![[:blank:]]/bin/sh")
(string-append "#!" bash)))
(format #f "#!~a" bash)))
(substitute* (cons "gettext-tools/src/msginit.c"
(find-files "gettext-tools/gnulib-tests"
@@ -122,14 +124,6 @@
;; See 'coreutils' for the rationale.
((" test-tls\\$\\(EXEEXT\\) ") " ")))
'())))))
(add-after 'install 'patch-gettext.sh
(lambda _
;; This matches only the relevant command invocations, but
;; is sensitive to the formatting of gettext.sh. (The
;; string "gettext" appears in program output.)
(substitute* (string-append #$output "/bin/gettext.sh")
(("(^ |`|; )(gettext|ngettext|envsubst)" _ prefix program)
(string-append prefix #$output "/bin/" program)))))
#$@(if (%current-target-system)
#~((add-after 'install 'patch-cross-shebangs
(lambda _
@@ -157,31 +151,30 @@ translated messages from the catalogs. Nearly all GNU packages use Gettext.")
(cpe-name . "gettext")))
(license gpl3+))) ;some files are under GPLv2+
;; Starting with gettext 0.24 some gnulib files are no longer public.
;; keep this here to easily fix autoreconf
(define-public gettext-minimal-0.23
(define-public gettext-minimal-0.21
(package/inherit gettext-minimal
(version "0.23.1")
(version "0.21")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/gettext/gettext-"
version ".tar.gz"))
(sha256
(base32
"0j8fijicvg8jkrisgsqbpnbmfb2mz3gx2p6pcwip82731yb7i9aj"))))
"04kbg1sx0ncfrsbr85ggjslqkzzb243fcw9nyh3rrv1a22ihszf7"))
(patches (search-patches "gettext-libunicode-update.patch"))))
(arguments
(substitute-keyword-arguments arguments
((#:make-flags flags)
;; these gnulib tests fail with newer libunistring
#~(cons (string-append "XFAIL_TESTS="
"test-uc_tolower "
"test-ctype_alnum "
"test-ctype_alpha "
"test-ctype_graph "
"test-ctype_lower "
"test-ctype_print "
"test-ctype_punct "
"test-ctype_upper") #$flags))))))
((#:phases phases)
#~(modify-phases #$phases
(add-after 'unpack 'touch-test
(lambda _
(with-output-to-file "gettext-tools/gnulib-tests/test-execute.sh"
(lambda _ (display "")))))
(add-before 'check 'patch-test
(lambda _
;; This test fails with ggc-14.
(substitute* "gettext-tools/tests/xgettext-javascript-6"
(("^#!.*" all) (string-append all "exit 77;\n")))))))))))
;; Use that name to avoid clashes with Guile's 'gettext' procedure.
;;
@@ -210,17 +203,22 @@ translated messages from the catalogs. Nearly all GNU packages use Gettext.")
(define-public libtextstyle
(package
(name "libtextstyle")
(version (package-version gnu-gettext))
(source (package-source gnu-gettext))
(version "0.21")
(source (origin
(inherit (package-source gnu-gettext))
(uri (string-append "mirror://gnu/gettext/gettext-"
version ".tar.gz"))
(sha256
(base32
"04kbg1sx0ncfrsbr85ggjslqkzzb243fcw9nyh3rrv1a22ihszf7"))))
(build-system gnu-build-system)
(arguments
(list
#:configure-flags #~(list "--disable-static")
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'chdir
(lambda _
(chdir "libtextstyle"))))))
'(#:configure-flags '("--disable-static")
#:phases (modify-phases %standard-phases
(add-after 'unpack 'chdir
(lambda _
(chdir "libtextstyle")
#t)))))
;; libtextstyle bundles libxml2, glib (a small subset thereof), and
;; libcroco, but it purposefully prevents users from using an external
;; copy, to reduce the startup time of programs using libtextstyle.
+1 -1
View File
@@ -3941,7 +3941,7 @@ $(libdir)/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n")))))))
(list autoconf
automake
texinfo
gettext-minimal-0.23 ;for 'AC_LIB_LINKFLAGS_FROM_LIBS'
gettext-minimal
guile-3.0
pkg-config))
(inputs
+19 -28
View File
@@ -4,7 +4,7 @@
;;; Copyright © 2014, 2016, 2018 David Thompson <davet@gnu.org>
;;; Copyright © 2014, 2017, 2018 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015, 2017 Christine Lemmer-Webber <cwebber@dustycloud.org>
;;; Copyright © 2016, 2023-2025 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2016, 2023, 2024, 2025 Janneke Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016, 2019, 2020 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017 Andy Wingo <wingo@igalia.com>
@@ -212,10 +212,6 @@ without requiring the source code to be rewritten.")
;; <https://bugs.gnu.org/20272>, which affects 2.0, 2.2, and 3.0 so far.
#:parallel-build? #f
#:modules ((guix build gnu-build-system)
(guix build utils)
(ice-9 regex))
#:phases
(modify-phases %standard-phases
,@(if (system-hurd?)
@@ -240,9 +236,22 @@ without requiring the source code to be rewritten.")
(add-before 'configure 'pre-configure
(lambda* (#:key inputs #:allow-other-keys)
;; Tell (ice-9 popen) the file name of Bash.
(substitute* "module/ice-9/popen.scm"
(("/bin/sh")
(search-input-file inputs "/bin/bash")))))
;; TODO: On the next rebuild cycle, unconditionally use
;; 'search-input-file' instead of 'assoc-ref'.
(let ((bash (assoc-ref inputs "bash")))
(substitute* "module/ice-9/popen.scm"
;; If bash is #f allow fallback for user to provide
;; "bash" in PATH. This happens when cross-building to
;; MinGW for which we do not have Bash yet.
(("/bin/sh")
,(cond ((target-mingw?)
"bash")
((%current-target-system)
'(search-input-file inputs "/bin/bash"))
(else
'(string-append bash "/bin/bash")))))
#t)))
(add-after 'install 'add-libxcrypt-reference-pkgconfig
(lambda* (#:key inputs outputs #:allow-other-keys)
(define out (assoc-ref outputs "out"))
@@ -254,26 +263,8 @@ without requiring the source code to be rewritten.")
(find-files (string-append out "/lib/pkgconfig")
".*\\.pc")
(("-lcrypt")
(string-append "-L" libxcrypt " -lcrypt"))))))
,@(if (target-mingw?)
'()
'((add-after 'install 'install-major.minor-symlinks
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (in-vicinity out "bin"))
(m (string-match
".*-([0-9]+[.][0-9]+)[.][0-9]+$" out))
(effective-version (match:substring m 1)))
(define (symlink-version name)
(let ((name-version
(string-append name "-" effective-version)))
(symlink name (in-vicinity bin name-version))))
(for-each symlink-version
'("guild"
"guile"
"guile-config"
"guile-snarf"
"guile-tools"))))))))))
(string-append "-L" libxcrypt " -lcrypt")))))))))
(native-search-paths
(list (search-path-specification
(variable "GUILE_LOAD_PATH")
+11 -13
View File
@@ -1186,7 +1186,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"))
@@ -1240,14 +1241,7 @@ interactive environment for the functional language Haskell.")
(substitute* "libraries/unix/tests/all.T"
(("^test\\('T8108'") "# guix skipped: test('T8108'"))
(substitute* "libraries/unix/tests/libposix/all.T"
(("^test\\('posix010'") "# guix skipped: test('posix010'"))))
;; binutils@2.39 warns for execstack deprecation by default, causing
;; some tests to fail ; explicitely disable during linking instead.
(add-after 'unpack-testsuite 'fix-tests-with-binutils@2.39
(lambda _
(substitute* "testsuite/mk/test.mk"
(("^TEST_HC_OPTS = ")
"TEST_HC_OPTS = -optl -Wl,-z,noexecstack "))))))))
(("^test\\('posix010'") "# guix skipped: test('posix010'"))))))))
(native-search-paths (list (search-path-specification
(variable "GHC_PACKAGE_PATH")
(files (list
@@ -1275,7 +1269,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"))
@@ -1334,7 +1329,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"))
@@ -1529,7 +1525,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.
@@ -1615,7 +1612,8 @@ SRC_HC_OPTS += -optc-mno-outline-atomics
(sha256
(base32
"0cmmwhcwv9fjzvmgjj85d354858qqbmqfzaz5160xqj4yl9zk225"))
(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)
+2 -2
View File
@@ -27,14 +27,14 @@
(define-public libsigsegv
(package
(name "libsigsegv")
(version "2.15")
(version "2.14")
(source (origin
(method url-fetch)
(uri (string-append
"mirror://gnu/libsigsegv/libsigsegv-"
version ".tar.gz"))
(sha256
(base32 "1n992y64ni16bv9lijxsa5h87rscfvk01z4hl4bkijr509k5as03"))))
(base32 "15d2r831xz94s7540nvb1gbfl062g7mrnj88m60wyr1kh10kkb6d"))))
(build-system gnu-build-system)
(home-page "https://www.gnu.org/software/libsigsegv/")
(synopsis "Library for handling page faults")
+2 -2
View File
@@ -36,7 +36,7 @@
(define-public libunistring
(package
(name "libunistring")
(version "1.4.1")
(version "1.3")
(source (origin
(method url-fetch)
(uri (string-append
@@ -44,7 +44,7 @@
version ".tar.xz"))
(sha256
(base32
"0qvp61m14xi9kx2gg44rjnq1g8h2g33ni23q0ccqc9r5i4q89n37"))))
"09wmas38i9fw7l3sv92xkbvy7idcl76ifhzv7l7ia98xhdn7higj"))))
(propagated-inputs (libiconv-if-needed))
(outputs '("out" "static"))
(build-system gnu-build-system)
+1 -1
View File
@@ -495,7 +495,7 @@ interface.")
(build-system trivial-build-system)
(native-inputs
`(("config-patch" ,@(search-patches "cl-asdf-config-directories.patch"))
("patch" ,patch)))
("patch" ,patch/pinned)))
(arguments
`(#:modules ((guix build utils)
(guix build lisp-utils))
+2 -2
View File
@@ -30,14 +30,14 @@
(define-public m4
(package
(name "m4")
(version "1.4.20")
(version "1.4.19")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/m4/m4-"
version ".tar.xz"))
(sha256
(base32
"0axgilr6n88br7msm3ls8m4zlwgk4q3vcjqw1cknqpyg3hxfldp2"))))
"15mghcksh11saylpm86h1zkz4in0rbi0pk8i6nqxkdikdmfdxbk3"))))
(build-system gnu-build-system)
(arguments
`(;; Explicitly disable tests when cross-compiling, otherwise 'make check'
+2 -2
View File
@@ -410,7 +410,7 @@ on any distribution, and the nroff source is included."))))
;; input "locales" contain the original (English) text.
(package
(name "help2man")
(version "1.49.3")
(version "1.49.2")
(source
(origin
(method url-fetch)
@@ -418,7 +418,7 @@ on any distribution, and the nroff source is included."))))
version ".tar.xz"))
(sha256
(base32
"0kzxla1w0w4z5la255lg9q51wy3qx8f1b0i6gbhaz9pcybg4yzjd"))))
"0dnxx96lbcb8ab8yrdkqll14cl5n0bch8qpd9qj3c2ky78hhwbly"))))
(build-system gnu-build-system)
(arguments
(list
+29 -2
View File
@@ -42,10 +42,23 @@
#:use-module ((guix memoization) #:select (mlambda))
#:use-module (ice-9 match))
(define ncurses-rollup-patch
(mlambda (version)
(origin
(method url-fetch)
(uri (match (string-split (version-major+minor+point version) #\.)
((major minor point)
(string-append "https://invisible-mirror.net/archives"
"/ncurses/" major "." minor "/ncurses-"
major "." minor "-" point "-patch.sh.bz2"))))
(sha256
(base32
"1b6522cvi4066bgh9lp93q8lk93zcjjssvnw1512z447xvazy2y6")))))
(define-public ncurses
(package
(name "ncurses")
(version "6.6.20260103")
(version "6.2.20210619")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/ncurses/ncurses-"
@@ -53,7 +66,7 @@
".tar.gz"))
(sha256
(base32
"04gz96vhj83yls2czsajbmc65qsnfrxn2ijcl20h62w8xnxlqnrm"))))
"17bcm2z1rdx5gmzj5fb8cp7f28aw5b4g2z4qvvqg3yg0fq66wc1h"))))
(build-system gnu-build-system)
(outputs '("out"
"doc")) ;1 MiB of man pages
@@ -78,6 +91,18 @@
(cons (string-append "--host=" target)
configure-flags)
configure-flags)))))
(apply-rollup-patch-phase
;; Ncurses distributes "stable" patchsets to be applied on top
;; of the release tarball. These are only available as shell
;; scripts(!) so we decompress and apply them in a phase.
;; See <https://invisible-mirror.net/archives/ncurses/6.1/README>.
#~(lambda* (#:key inputs native-inputs #:allow-other-keys)
(let ((rollup-patch #$(ncurses-rollup-patch
(package-version this-package))))
(copy-file rollup-patch
(string-append (getcwd) "/rollup-patch.sh.bz2"))
(invoke "bzip2" "-d" "rollup-patch.sh.bz2")
(invoke "sh" "rollup-patch.sh"))))
(remove-shebang-phase
#~(lambda _
;; To avoid retaining a reference to the bootstrap Bash via the
@@ -180,6 +205,8 @@
#$@(if (target-mingw?) #~("--enable-term-driver") #~()))
#:tests? #f ; no "check" target
#:phases #~(modify-phases %standard-phases
(add-after 'unpack 'apply-rollup-patch
#$apply-rollup-patch-phase)
(replace 'configure #$configure-phase)
(add-after 'install 'post-install
#$post-install-phase)
@@ -1,26 +0,0 @@
Ensure that the examples tarball is reproducible.
See https://reproducible-builds.org/docs/archives/
diff -upr a/gprofng/doc/Makefile.in b/gprofng/doc/Makefile.in
--- a/gprofng/doc/Makefile.in 2025-02-02 01:00:00.000000000 +0100
+++ b/gprofng/doc/Makefile.in 2026-03-15 11:03:49.597737186 +0100
@@ -894,14 +894,14 @@ gprofng-display-text.1: $(srcdir)/gprofn
info: $(man_MANS)
-examples.tar.gz:
- $(AM_V_at)( tar czf $@ $(srcdir)/../examples )
+examples.tar:
+ $(AM_V_at)( tar --owner=0 --group=0 --sort=name --mtime='2015-10-21 00:00Z' -cf $@ $(srcdir)/../examples )
.PHONY: install-data-local
-install-data-local: examples.tar.gz
+install-data-local: examples.tar
$(mkinstalldirs) $(DESTDIR)$(docdir)/gprofng
- $(INSTALL_DATA) examples.tar.gz $(DESTDIR)$(docdir)/gprofng
+ $(INSTALL_DATA) examples.tar $(DESTDIR)$(docdir)/gprofng
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
@@ -1,54 +0,0 @@
Retrieved from Poky:
https://git.enea.com/cgit/linux/poky.git/plain/meta/recipes-devtools/flex/flex/0001-build-tests-add-missing-parser-scanner-dependencies.patch?id=bf94ea1cc4e966fa2cf55206389f9c34fbd5419d
From 47e3916842ffefd7def84ae85758fdcceeb77839 Mon Sep 17 00:00:00 2001
From: Ross Burton <ross.burton@arm.com>
Date: Thu, 20 Mar 2025 12:16:50 +0000
Subject: [PATCH] build(tests): add missing parser->scanner dependencies
With sufficient parallelism and `make --shuffle` to reorder builds the
test suite occasionally fails to build with errors like this:
tests/bison_yylval_parser.y:36:10: fatal error: bison_yylval_scanner.h: No such file or directory
36 | #include "bison_yylval_scanner.h"
Solve this by adding the missing dependencies to the *_parser.o targets
on the _scanner.h files.
Upstream-Status: Submitted [https://github.com/westes/flex/pull/702]
Signed-off-by: Ross Burton <ross.burton@arm.com>
---
tests/Makefile.am | 3 +++
1 file changed, 3 insertions(+)
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 2cb51df..d0c199d 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -343,6 +343,7 @@ FLEX = $(top_builddir)/src/flex
bison_nr_main.$(OBJEXT): bison_nr_parser.h bison_nr_scanner.h
bison_nr_scanner.$(OBJEXT): bison_nr_parser.h
+bison_nr_parser.$(OBJEXT): bison_nr_scanner.h
bison_nr_scanner.h: bison_nr_scanner.c
@if test ! -f $@; then rm -f $<; else :; fi
@@ -350,6 +351,7 @@ bison_nr_scanner.h: bison_nr_scanner.c
bison_yylloc_main.$(OBJEXT): bison_yylloc_parser.h bison_yylloc_scanner.h
bison_yylloc_scanner.$(OBJEXT): bison_yylloc_parser.h
+bison_yylloc_parser.$(OBJEXT): bison_yylloc_scanner.h
bison_yylloc_scanner.h: bison_yylloc_scanner.c
@if test ! -f $@; then rm -f $<; else :; fi
@@ -357,6 +359,7 @@ bison_yylloc_scanner.h: bison_yylloc_scanner.c
bison_yylval_main.$(OBJEXT): bison_yylval_parser.h bison_yylval_scanner.h
bison_yylval_scanner.$(OBJEXT): bison_yylval_parser.h
+bison_yylval_parser.$(OBJEXT): bison_yylval_scanner.h
bison_yylval_scanner.h: bison_yylval_scanner.c
@if test ! -f $@; then rm -f $<; else :; fi
--
2.43.0
+10 -30
View File
@@ -2,20 +2,9 @@ As for libc's `system', change Awk to look for `sh' in $PATH. This patch is
only meant to be used during bootstrapping, where we don't know in advance the
absolute file name of `sh'.
--- gawk-5.3.2/builtin.c
+++ gawk-5.3.2/builtin.c
@@ -3341,7 +3341,7 @@ gawk_system(const char *command)
if ((childpid = fork()) == 0) {
// child
set_sigpipe_to_default();
- execl("/bin/sh", "sh", "-c", command, NULL);
+ execlp("sh", "sh", "-c", command, NULL);
_exit(errno == ENOENT ? 127 : 126);
} else {
// parent
--- gawk-5.3.2/io.c
+++ gawk-5.3.2/io.c
@@ -2084,7 +2084,7 @@ fork_and_open_slave_pty(const char *slavenam, int master, const char *command, p
--- gawk-4.1.3/io.c 2015-05-19 15:37:20.000000000 +0200
+++ gawk-4.1.3/io.c 2015-06-09 18:39:36.918414881 +0200
@@ -2025,7 +2025,7 @@
set_sigpipe_to_default();
@@ -24,7 +13,7 @@ absolute file name of `sh'.
_exit(errno == ENOENT ? 127 : 126);
case -1:
@@ -2136,7 +2136,7 @@ fork_and_open_slave_pty(const char *slavenam, int master, const char *command, p
@@ -2077,7 +2077,7 @@
signal(SIGPIPE, SIG_DFL);
@@ -33,30 +22,21 @@ absolute file name of `sh'.
_exit(errno == ENOENT ? 127 : 126);
case -1:
@@ -2475,7 +2475,7 @@ use_pipes:
fatal(_("close of pipe failed: %s"), strerror(errno));
@@ -2422,7 +2422,7 @@
fatal(_("close of pipe failed (%s)"), strerror(errno));
/* stderr does NOT get dup'ed onto child's stdout */
set_sigpipe_to_default();
- execl("/bin/sh", "sh", "-c", str, NULL);
+ execlp("sh", "sh", "-c", str, NULL);
_exit(errno == ENOENT ? 127 : 126);
}
#endif /* NOT __MINGW32__ */
@@ -2706,7 +2706,7 @@ gawk_popen(const char *cmd, struct redirect *rp)
#endif /* NOT __EMX__, NOT __MINGW32__ */
@@ -2659,7 +2659,7 @@
if (close(p[0]) == -1 || close(p[1]) == -1)
fatal(_("close of pipe failed: %s"), strerror(errno));
fatal(_("close of pipe failed (%s)"), strerror(errno));
set_sigpipe_to_default();
- execl("/bin/sh", "sh", "-c", cmd, NULL);
+ execlp("sh", "sh", "-c", cmd, NULL);
_exit(errno == ENOENT ? 127 : 126);
}
#endif /* NOT __MINGW32__ */
@@ -4642,7 +4642,7 @@ gawk_popen_write(const char *cmd)
fatal(_("gawk_popen_write: failed to move pipe fd to standard input"));
(void) close(pipefds[0]);
set_sigpipe_to_default();
- execl("/bin/sh", "sh", "-c", cmd, NULL);
+ execlp("sh", "sh", "-c", cmd, NULL);
_exit(errno == ENOENT ? 127 : 126);
} else if (childpid < 0) {
(void) close(pipefds[0]);
#endif /* NOT __EMX__, NOT __MINGW32__ */
@@ -1,70 +0,0 @@
Patch for GCC to mangle store item references to inputs introduced by __FILE__
macros from derivation outputs. This helps reduce the closure size of certain
packages.
This patch is based on:
https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/compilers/gcc/patches/13/mangle-NIX_STORE-in-__FILE__.patch
At the time of writting, this patch applies successfuly for GCC versions from
13 to 16. The patch is not meant to be upstreamed, it provides a solution to
a specific problem of Guix.
---
gcc/file-prefix-map.cc | 28 ++++++++++++++++++++++++++--
1 file changed, 26 insertions(+), 2 deletions(-)
diff --git a/gcc/file-prefix-map.cc b/gcc/file-prefix-map.cc
index 6b432e2a15a..6cc20bacd38 100644
--- a/gcc/file-prefix-map.cc
+++ b/gcc/file-prefix-map.cc
@@ -74,7 +74,7 @@ add_prefix_map (file_prefix_map *&maps, const char *arg, const char *opt)
remapping was performed. */
static const char *
-remap_filename (file_prefix_map *maps, const char *filename)
+remap_filename (file_prefix_map *maps, const char *filename, bool mangle_guix_store = false)
{
file_prefix_map *map;
char *s;
@@ -102,6 +102,30 @@ remap_filename (file_prefix_map *maps, const char *filename)
break;
if (!map)
{
+ if (mangle_guix_store && getenv("GUIX_GCC_MANGLE_PREFIX_MAP"))
+ {
+ /* Remap all fo $NIX_STORE/.{32} paths to uppercase
+ *
+ * That way we avoid argument parameters explosion
+ * and still avoid embedding headers into runtime closure:
+ * https://gcc.gnu.org/PR111527
+ */
+ const char * guix_store = getenv("NIX_STORE") ? getenv("NIX_STORE") : "/gnu/store";
+ size_t guix_store_len = guix_store ? strlen(guix_store) : 0;
+ const char * name = realname ? realname : filename;
+ size_t name_len = strlen(name);
+ if (guix_store && name_len >= guix_store_len + 1 + 32 && memcmp(name, guix_store, guix_store_len) == 0)
+ {
+ s = (char *) ggc_alloc_atomic (name_len + 1);
+ memcpy(s, name, name_len + 1);
+ for (size_t i = guix_store_len + 1; i < guix_store_len + 1 + 32; i++) {
+ s[i] = TOUPPER(s[i]);
+ }
+ if (realname != filename)
+ free (const_cast <char *> (realname));
+ return s;
+ }
+ }
if (realname != filename)
free (const_cast <char *> (realname));
return filename;
@@ -163,7 +187,7 @@ add_profile_prefix_map (const char *arg)
const char *
remap_macro_filename (const char *filename)
{
- return remap_filename (macro_prefix_maps, filename);
+ return remap_filename (macro_prefix_maps, filename, true);
}
/* Remap using -fdebug-prefix-map. Return the GC-allocated new name
--
2.52.0
@@ -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
@@ -1,23 +0,0 @@
This patch is based on patch from NixOS/nixpkgs
pkgs/development/libraries/glibc/fix_path_attribute_in_getconf.patch
It adjusts the CS_PATH definition in sysdeps/unix/confstr.h so that getconf PATH
includes /run/current-system/profile/bin, which is where Guix stores profile binaries.
Unlike traditional distributions, Guix does not use /bin or /usr/bin as actual locations
for executables. This change ensures that tools and scripts relying on getconf PATH
receive a correct and functional PATH.
From bff411feec1f381a51d7127971e5d6fda1167254 Mon Sep 17 00:00:00 2001
From: Nikita Mitasov <me@ch4og.com>
Date: Sun, 13 Jul 2025 17:48:19 +0300
Subject: [PATCH] Add Guix profile path to getconf
diff --git a/sysdeps/unix/confstr.h b/sysdeps/unix/confstr.h
index 15859c3b..837837c7 100644
--- a/sysdeps/unix/confstr.h
+++ b/sysdeps/unix/confstr.h
@@ -1 +1 @@
-#define CS_PATH "/bin:/usr/bin"
+#define CS_PATH "/run/current-system/profile/bin:/bin:/usr/bin"
@@ -0,0 +1,51 @@
Don't escape forward slashes to prevent a warning from grep 3.8.
diff --git a/tests/link-order.at b/tests/link-order.at
--- a/tests/link-order.at
+++ b/tests/link-order.at
@@ -99,12 +99,12 @@ aix* | interix*) ;; # These systems have different path syntax
case $hardcode_direct$hardcode_direct_absolute in
yesno)
AT_CHECK([if $EGREP relinking stderr; then
- $EGREP " .*\/new\/lib/libb$shared_ext .*\/old\/lib/libcee$shared_ext" stdout
+ $EGREP " .*/new/lib/libb$shared_ext .*/old/lib/libcee$shared_ext" stdout
else :; fi], [0], [ignore], [], [echo "wrong link order"])
;;
*)
AT_CHECK([if $EGREP relinking stderr; then
- $EGREP " -L.*\/new\/lib -lb -L.*\/old\/lib -lcee" stdout
+ $EGREP " -L.*/new/lib -lb -L.*/old/lib -lcee" stdout
else :; fi], [0], [ignore], [], [echo "wrong link order"])
;;
esac
diff --git a/tests/testsuite b/tests/testsuite
--- a/tests/testsuite
+++ b/tests/testsuite
@@ -20611,11 +20611,11 @@ aix* | interix*) ;; # These systems have different path syntax
yesno)
{ set +x
$as_echo "$at_srcdir/link-order.at:101: if \$EGREP relinking stderr; then
- \$EGREP \" .*\\/new\\/lib/libb\$shared_ext .*\\/old\\/lib/libcee\$shared_ext\" stdout
+ \$EGREP \" .*/new/lib/libb\$shared_ext .*/old/lib/libcee\$shared_ext\" stdout
else :; fi"
at_fn_check_prepare_notrace 'an embedded newline' "link-order.at:101"
( $at_check_trace; if $EGREP relinking stderr; then
- $EGREP " .*\/new\/lib/libb$shared_ext .*\/old\/lib/libcee$shared_ext" stdout
+ $EGREP " .*/new/lib/libb$shared_ext .*/old/lib/libcee$shared_ext" stdout
else :; fi
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
@@ -20633,11 +20633,11 @@ $at_traceon; }
*)
{ set +x
$as_echo "$at_srcdir/link-order.at:106: if \$EGREP relinking stderr; then
- \$EGREP \" -L.*\\/new\\/lib -lb -L.*\\/old\\/lib -lcee\" stdout
+ \$EGREP \" -L.*/new\\/lib -lb -L.*/old/lib -lcee\" stdout
else :; fi"
at_fn_check_prepare_notrace 'an embedded newline' "link-order.at:106"
( $at_check_trace; if $EGREP relinking stderr; then
- $EGREP " -L.*\/new\/lib -lb -L.*\/old\/lib -lcee" stdout
+ $EGREP " -L.*/new/lib -lb -L.*/old/lib -lcee" stdout
else :; fi
) >>"$at_stdout" 2>>"$at_stderr" 5>&-
at_status=$? at_failed=false
@@ -0,0 +1,33 @@
Skip the nopic test on ARM, MIPS and RISC-V systems.
--- libtool-2.4.6/tests/demo.at.orig 2015-01-16 13:52:04.000000000 -0500
+++ libtool-2.4.6/tests/demo.at 2015-02-16 10:48:51.435851966 -0500
@@ -510,7 +510,7 @@
AT_SETUP([force non-PIC objects])
AT_CHECK([case $host in
-hppa*|x86_64*|s390*)
+hppa*|x86_64*|s390*|arm*|mips*|riscv*)
# These hosts cannot use non-PIC shared libs
exit 77 ;;
*-solaris*|*-sunos*)
--- libtool-2.4.6/tests/testsuite.orig 2015-02-15 11:15:25.000000000 -0500
+++ libtool-2.4.6/tests/testsuite 2015-02-16 10:50:58.736483216 -0500
@@ -8741,7 +8741,7 @@
{ set +x
$as_echo "$at_srcdir/demo.at:513: case \$host in
-hppa*|x86_64*|s390*)
+hppa*|x86_64*|s390*|arm*|mips*|riscv*)
# These hosts cannot use non-PIC shared libs
exit 77 ;;
*-solaris*|*-sunos*)
@@ -8766,7 +8766,7 @@
"
at_fn_check_prepare_notrace 'a `...` command substitution' "demo.at:513"
( $at_check_trace; case $host in
-hppa*|x86_64*|s390*)
+hppa*|x86_64*|s390*|arm*|mips*|riscv*)
# These hosts cannot use non-PIC shared libs
exit 77 ;;
*-solaris*|*-sunos*)
+202 -199
View File
@@ -128,125 +128,126 @@
"perl-reproducible-build-date.patch"))))
(build-system gnu-build-system)
(arguments
(list
#:tests? #f
#:configure-flags
#~(let* ((libc.so (search-input-file %build-inputs "/lib/libc.so"))
(libc (dirname (dirname libc.so))))
(list (string-append "-Dprefix=" #$output)
(string-append "-Dman1dir=" #$output "/share/man/man1")
(string-append "-Dman3dir=" #$output "/share/man/man3")
"-de" "-Dcc=gcc"
"-Uinstallusrbinperl"
"-Dinstallstyle=lib/perl5"
"-Duseshrplib"
(string-append "-Dlocincpth=" libc "/include")
(string-append "-Dloclibpth=" libc "/lib")
"-Dusethreads"))
#:phases
#~(modify-phases %standard-phases
(add-before 'configure 'setup-configure
(lambda* (#:key inputs #:allow-other-keys)
;; Use the right path for `pwd'.
(substitute* "dist/PathTools/Cwd.pm"
(("'/bin/pwd'")
(string-append "'" (search-input-file inputs "bin/pwd") "'")))
`(#:tests? #f
#:configure-flags
(let ((out (assoc-ref %outputs "out"))
(libc (assoc-ref %build-inputs "libc")))
(list
(string-append "-Dprefix=" out)
(string-append "-Dman1dir=" out "/share/man/man1")
(string-append "-Dman3dir=" out "/share/man/man3")
"-de" "-Dcc=gcc"
"-Uinstallusrbinperl"
"-Dinstallstyle=lib/perl5"
"-Duseshrplib"
(string-append "-Dlocincpth=" libc "/include")
(string-append "-Dloclibpth=" libc "/lib")
"-Dusethreads"))
#:phases
(modify-phases %standard-phases
(add-before 'configure 'setup-configure
(lambda* (#:key inputs #:allow-other-keys)
;; Use the right path for `pwd'.
(substitute* "dist/PathTools/Cwd.pm"
(("'/bin/pwd'")
(string-append "'" (search-input-file inputs "bin/pwd") "'")))
;; Build in GNU89 mode to tolerate C++-style comment in libc's
;; <bits/string3.h>.
(substitute* "cflags.SH"
(("-std=c89")
"-std=gnu89"))))
#$@(if (%current-target-system)
#~((add-after 'unpack 'unpack-cross
(lambda* (#:key native-inputs inputs #:allow-other-keys)
(let ((cross-checkout
(assoc-ref native-inputs "perl-cross")))
(rename-file "Artistic" "Artistic.perl")
(rename-file "Copying" "Copying.perl")
(copy-recursively cross-checkout "."))
(let ((bash (search-input-file inputs "bin/bash")))
(substitute* '("Makefile.config.SH"
"cnf/config.guess"
"cnf/config.sub"
"cnf/configure"
"cnf/configure_misc.sh"
"miniperl_top")
(("! */bin/sh")
(string-append "! " bash))
((" /bin/sh")
bash))
(substitute* '("ext/Errno/Errno_pm.PL")
(("\\$cpp < errno.c")
"$Config{cc} -E errno.c")))))
(replace 'configure
(lambda* (#:key configure-flags inputs #:allow-other-keys)
(let* ((store-directory (%store-directory))
(configure-flags
(cons*
;; `perl-cross' confuses target and host
(string-append "--target=" #$(%current-target-system))
(string-append "--prefix=" #$output)
(string-append "-Dcc=" #$(%current-target-system) "-gcc")
"-Dbyteorder=1234"
(remove (lambda (x) (or (string-prefix? "-d" x)
(string-prefix? "-Dcc=" x)))
configure-flags)))
(bash (assoc-ref inputs "bash-minimal")))
(format (current-error-port)
"running ./configure ~a\n"
(string-join configure-flags))
(apply invoke (cons "./configure" configure-flags))
(substitute* "config.sh"
(((string-append store-directory "/[^/]*-bash-[^/]*"))
bash))
(substitute* '("config.h")
(("^#define SH_PATH .*")
(string-append "#define SH_PATH \""
bash "/bin/bash\"\n"))))))
(add-after 'build 'touch-non-built-files-for-install
(lambda _
;; `make install' wants to install these although they do
;; not get built...
(with-directory-excursion "cpan"
(mkdir-p "Pod-Usage/blib/script")
(mkdir-p "Pod-Parser/blib/script")
(for-each (lambda (file)
(call-with-output-file file
(lambda (port) (display "" port))))
'("Pod-Usage/blib/script/pod2text"
"Pod-Usage/blib/script/pod2usage"
"Pod-Checker/blib/script/podchecker"
"Pod-Parser/blib/script/podselect"))))))
#~((replace 'configure
(lambda* (#:key configure-flags #:allow-other-keys)
(format #t "Perl configure flags: ~s~%" configure-flags)
(apply invoke "./Configure" configure-flags)))))
(add-after 'install 'remove-extra-references
(lambda* (#:key inputs #:allow-other-keys)
(let* ((lib-perl5 (string-append #$output "/lib/perl5"))
(libc.so (search-input-file
#$(if (%current-target-system)
#~%build-target-inputs
#~%build-inputs)
"/lib/libc.so"))
(libc (dirname (dirname libc.so)))
(config1 (find-files lib-perl5 "^Config_heavy\\.pl$"))
(config2 (find-files lib-perl5 "^Config\\.pm$")))
;; Force the library search path to contain only libc because
;; it is recorded in Config.pm and Config_heavy.pl; we don't
;; want to keep a reference to everything that's in
;; $LIBRARY_PATH at build time (GCC, Binutils, bzip2, file,
;; etc.)
(substitute* (car config1)
(("^incpth=.*$")
(string-append "incpth='" libc "/include'\n"))
(("^(libpth|plibpth|libspath)=.*$" _ variable)
(string-append variable "='" libc "/lib'\n")))
;; Build in GNU89 mode to tolerate C++-style comment in libc's
;; <bits/string3.h>.
(substitute* "cflags.SH"
(("-std=c89")
"-std=gnu89"))))
,@(if (%current-target-system)
`((add-after 'unpack 'unpack-cross
(lambda* (#:key native-inputs inputs #:allow-other-keys)
(let ((cross-checkout
(assoc-ref native-inputs "perl-cross")))
(rename-file "Artistic" "Artistic.perl")
(rename-file "Copying" "Copying.perl")
(copy-recursively cross-checkout "."))
(let ((bash (search-input-file inputs "bin/bash")))
(substitute* '("Makefile.config.SH"
"cnf/config.guess"
"cnf/config.sub"
"cnf/configure"
"cnf/configure_misc.sh"
"miniperl_top")
(("! */bin/sh") (string-append "! " bash))
((" /bin/sh") bash))
(substitute* '("ext/Errno/Errno_pm.PL")
(("\\$cpp < errno.c") "$Config{cc} -E errno.c")))))
(replace 'configure
(lambda* (#:key configure-flags outputs inputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(store-directory (%store-directory))
(configure-flags
(cons*
;; `perl-cross' confuses target and host
(string-append "--target=" ,(%current-target-system))
(string-append "--prefix=" out)
(string-append "-Dcc=" ,(%current-target-system) "-gcc")
"-Dbyteorder=1234"
(filter (negate
(lambda (x) (or (string-prefix? "-d" x)
(string-prefix? "-Dcc=" x))))
configure-flags)))
(bash (assoc-ref inputs "bash-minimal")))
(format (current-error-port)
"running ./configure ~a\n"
(string-join configure-flags))
(apply invoke (cons "./configure" configure-flags))
(substitute* "config.sh"
(((string-append store-directory "/[^/]*-bash-[^/]*"))
bash))
(substitute* '("config.h")
(("^#define SH_PATH .*")
(string-append "#define SH_PATH \""
bash "/bin/bash\"\n"))))))
(add-after 'build 'touch-non-built-files-for-install
(lambda _
;; `make install' wants to install these although they do
;; not get built...
(with-directory-excursion "cpan"
(mkdir-p "Pod-Usage/blib/script")
(mkdir-p "Pod-Parser/blib/script")
(for-each (lambda (file)
(call-with-output-file file
(lambda (port) (display "" port))))
'("Pod-Usage/blib/script/pod2text"
"Pod-Usage/blib/script/pod2usage"
"Pod-Checker/blib/script/podchecker"
"Pod-Parser/blib/script/podselect"))))))
`((replace 'configure
(lambda* (#:key configure-flags #:allow-other-keys)
(format #t "Perl configure flags: ~s~%" configure-flags)
(apply invoke "./Configure" configure-flags)))))
(add-after 'install 'remove-extra-references
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(libc (assoc-ref inputs
,(if (%current-target-system)
"cross-libc" "libc")))
(config1 (car (find-files (string-append out "/lib/perl5")
"^Config_heavy\\.pl$")))
(config2 (find-files (string-append out "/lib/perl5")
"^Config\\.pm$")))
;; Force the library search path to contain only libc because
;; it is recorded in Config.pm and Config_heavy.pl; we don't
;; want to keep a reference to everything that's in
;; $LIBRARY_PATH at build time (GCC, Binutils, bzip2, file,
;; etc.)
(substitute* config1
(("^incpth=.*$")
(string-append "incpth='" libc "/include'\n"))
(("^(libpth|plibpth|libspath)=.*$" _ variable)
(string-append variable "='" libc "/lib'\n")))
(substitute* config2
(("libpth => .*$")
(string-append "libpth => '" libc "/lib',\n")))))))))
(for-each (lambda (file)
(substitute* config2
(("libpth => .*$")
(string-append "libpth => '" libc
"/lib',\n"))))
config2)))))))
(inputs
(if (%current-target-system)
(list bash-minimal coreutils-minimal)
@@ -295,44 +296,46 @@ more.")
(properties `((release-date . "2013-03-10")))
(build-system gnu-build-system)
(arguments
(list
#:tests? #f
#:phases
#~(modify-phases %standard-phases
(replace 'configure
(lambda* (#:key inputs #:allow-other-keys)
(let ((libc (assoc-ref inputs "libc")))
;; Use the right path for `pwd'.
(substitute* "dist/Cwd/Cwd.pm"
(("/bin/pwd")
(which "pwd")))
'(#:tests? #f
#:phases
(modify-phases %standard-phases
(replace 'configure
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
(libc (assoc-ref inputs "libc")))
;; Use the right path for `pwd'.
(substitute* "dist/Cwd/Cwd.pm"
(("/bin/pwd")
(which "pwd")))
(invoke "./Configure"
(string-append "-Dprefix=" #$output)
(string-append "-Dman1dir=" #$output "/share/man/man1")
(string-append "-Dman3dir=" #$output "/share/man/man3")
"-de" "-Dcc=gcc"
"-Uinstallusrbinperl"
"-Dinstallstyle=lib/perl5"
"-Duseshrplib"
(string-append "-Dlocincpth=" libc "/include")
(string-append "-Dloclibpth=" libc "/lib")
(invoke "./Configure"
(string-append "-Dprefix=" out)
(string-append "-Dman1dir=" out "/share/man/man1")
(string-append "-Dman3dir=" out "/share/man/man3")
"-de" "-Dcc=gcc"
"-Uinstallusrbinperl"
"-Dinstallstyle=lib/perl5"
"-Duseshrplib"
(string-append "-Dlocincpth=" libc "/include")
(string-append "-Dloclibpth=" libc "/lib")
;; Force the library search path to contain only libc
;; because it is recorded in Config.pm and
;; Config_heavy.pl; we don't want to keep a reference
;; to everything that's in $LIBRARY_PATH at build
;; time (Binutils, bzip2, file, etc.)
(string-append "-Dlibpth=" libc "/lib")
(string-append "-Dplibpth=" libc "/lib")))))
;; Force the library search path to contain only libc
;; because it is recorded in Config.pm and
;; Config_heavy.pl; we don't want to keep a reference
;; to everything that's in $LIBRARY_PATH at build
;; time (Binutils, bzip2, file, etc.)
(string-append "-Dlibpth=" libc "/lib")
(string-append "-Dplibpth=" libc "/lib")))))
(add-before 'strip 'make-shared-objects-writable
(lambda _
;; The 'lib/perl5' directory contains ~50 MiB of .so. Make them
;; writable so that 'strip' actually strips them.
(for-each
(lambda (dso) (chmod dso #o755))
(find-files (string-append #$output "/lib") "\\.so$")))))))
(add-before 'strip 'make-shared-objects-writable
(lambda* (#:key outputs #:allow-other-keys)
;; The 'lib/perl5' directory contains ~50 MiB of .so. Make them
;; writable so that 'strip' actually strips them.
(let* ((out (assoc-ref outputs "out"))
(lib (string-append out "/lib")))
(for-each (lambda (dso)
(chmod dso #o755))
(find-files lib "\\.so$"))))))))
(native-inputs
(list gcc-7))
(native-search-paths (list (search-path-specification
@@ -363,55 +366,55 @@ more.")
(hidden? . #t))) ;only for GHC 4.
(build-system gnu-build-system)
(arguments
(list
#:tests? #f
#:phases
#~(modify-phases %standard-phases
(replace 'configure
(lambda* (#:key inputs #:allow-other-keys)
(let ((libc (assoc-ref inputs "libc")))
;; Use the right path for `pwd'.
(substitute* "lib/Cwd.pm"
(("/bin/pwd")
(which "pwd")))
'(#:tests? #f
#:phases
(modify-phases %standard-phases
(replace 'configure
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
(libc (assoc-ref inputs "libc")))
;; Use the right path for `pwd'.
(substitute* "lib/Cwd.pm"
(("/bin/pwd")
(which "pwd")))
(invoke "./Configure"
(string-append "-Dprefix=" #$output)
(string-append "-Dman1dir=" #$output "/share/man/man1")
(string-append "-Dman3dir=" #$output "/share/man/man3")
"-de" "-Dcc=gcc -std=c90"
"-Uinstallusrbinperl"
"-Dinstallstyle=lib/perl5"
"-Duseshrplib"
(string-append "-Dlocincpth=" libc "/include")
(string-append "-Dloclibpth=" libc "/lib")
(invoke "./Configure"
(string-append "-Dprefix=" out)
(string-append "-Dman1dir=" out "/share/man/man1")
(string-append "-Dman3dir=" out "/share/man/man3")
"-de" "-Dcc=gcc -std=c90"
"-Uinstallusrbinperl"
"-Dinstallstyle=lib/perl5"
"-Duseshrplib"
(string-append "-Dlocincpth=" libc "/include")
(string-append "-Dloclibpth=" libc "/lib")
;; Force the library search path to contain only libc
;; because it is recorded in Config.pm and
;; Config_heavy.pl; we don't want to keep a reference
;; to everything that's in $LIBRARY_PATH at build
;; time (Binutils, bzip2, file, etc.)
(string-append "-Dlibpth=" libc "/lib")
(string-append "-Dplibpth=" libc "/lib")))))
(add-after 'configure 'bleh
(lambda _
(substitute* '("makefile" "x2p/makefile")
((".*\\<command-line>.*")
""))
;; Don't look for /usr/include/errno.h.
(substitute* "ext/Errno/Errno_pm.PL"
(("O eq 'linux'")
"O eq 'loonix'"))
(substitute* "ext/IPC/SysV/SysV.xs"
((".*asm/page.h.*")
""))))
(add-before 'strip 'make-shared-objects-writable
(lambda _
;; The 'lib/perl5' directory contains ~50 MiB of .so. Make them
;; writable so that 'strip' actually strips them.
(for-each
(lambda (dso) (chmod dso #o755))
(find-files (string-append #$output "/lib") "\\.so$")))))))
;; Force the library search path to contain only libc
;; because it is recorded in Config.pm and
;; Config_heavy.pl; we don't want to keep a reference
;; to everything that's in $LIBRARY_PATH at build
;; time (Binutils, bzip2, file, etc.)
(string-append "-Dlibpth=" libc "/lib")
(string-append "-Dplibpth=" libc "/lib")))))
(add-after 'configure 'bleh
(lambda _
(substitute* '("makefile"
"x2p/makefile")
((".*\\<command-line>.*") ""))
;; Don't look for /usr/include/errno.h.
(substitute* "ext/Errno/Errno_pm.PL"
(("O eq 'linux'") "O eq 'loonix'"))
(substitute* "ext/IPC/SysV/SysV.xs"
((".*asm/page.h.*") ""))))
(add-before 'strip 'make-shared-objects-writable
(lambda* (#:key outputs #:allow-other-keys)
;; The 'lib/perl5' directory contains ~50 MiB of .so. Make them
;; writable so that 'strip' actually strips them.
(let* ((out (assoc-ref outputs "out"))
(lib (string-append out "/lib")))
(for-each (lambda (dso)
(chmod dso #o755))
(find-files lib "\\.so$"))))))))
(native-inputs '())))
(define-public perl-algorithm-c3
+19 -8
View File
@@ -4,7 +4,6 @@
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2018, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019, 2020, 2022 Marius Bakke <marius@gnu.org>
;;; Copyright © 2025 Maxim Cournoyer <maxim@guixotic.coop>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -51,10 +50,22 @@
(list (readline-patch version seqno (base32 hash))
...))
(define %patch-series-8.3
(define %patch-series-8.2
(patch-series
"8.3"
(1 "1pl4midx7kc56bw4ansrdpdjpanv1vmp0p6jghrrgrnv0qqs1w11")))
"8.2"
(1 "1xxgfgr6hn3ads8m8xsrdi1kbx1f3s69k0danpd9x4haqhg7zydv")
(2 "0ly0siy6qy3l7hv12847adpfa34yq1w4qz9qkw6vrxv25j106rg0")
(3 "1c5cwvvkx9mfmpaapymq9cavmzh4fnagkjlchsqx4vml8sx8gx94")
(4 "1b15sndx9v5vj3x1f3h73099nlagknx4rbfpd5ldrbw2xgm2wmvr")
(5 "16ac25jz1a1mgkpfp1sydqf6qpsfh0s0dcmrnjpqbhg5va3s6av2")
(6 "18gmh6y3klh0vv28cyqz4is3rlb32pl7f1kf5r482kfjq3w5zd67")
(7 "1xmnpahs983n4w0gn3j0wr8nh1dpva33yj7fvfmhm46ph2wsa4ar")
(8 "0smjjzhwxi2ibpdisnk53lh1pzgka6rhlqyh3662xy69v34ysxx1")
(9 "05m1fwbs7mbs3pz3pg87gbbayandrrcgaqawzliqb6g1jbk8b61x")
(10 "0k3vyrjs2g6y2cfs03l2gp37fhxgqpiwvxb1c7z4q88cbb32x3km")
(11 "1msdahvz56l9m5m69a87zp2c7qrfv0dxwd09rj1697isgy83s0g0")
(12 "1lybzig73pqpcbw79im0kn6299lkcbnh24yigygn5jm2sj7dz2kc")
(13 "1a48lyrhvn6nbj5qhradfpbbs3md5maz7wb32yvaghvfgnak990y")))
(define %patch-series-7.0
(patch-series
@@ -68,16 +79,16 @@
(define-public readline
(package
(name "readline")
(version (string-append "8.3."
(number->string (length %patch-series-8.3))))
(version (string-append "8.2."
(number->string (length %patch-series-8.2))))
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/readline/readline-"
(version-major+minor version) ".tar.gz"))
(sha256
(base32
"1k31j1prf9zn86hccay2i49vlzks0cy1v3gfjpa8r0k78hh86lzy"))
(patches (append %patch-series-8.3
"0dbw02ai0z8x6d9s14pl0hnaa2g1kdxnv8qqra1fx13ay5qp3srz"))
(patches (append %patch-series-8.2
(search-patches "readline-link-ncurses.patch")))
(patch-flags '("-p0"))))
(build-system gnu-build-system)
+2 -2
View File
@@ -3794,14 +3794,14 @@ background agent taking care of maintaining the necessary state.")
(define-public rust-cargo-c
(package
(name "rust-cargo-c")
(version "0.10.20+cargo-0.94.0")
(version "0.10.21+cargo-0.95.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "cargo-c" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32 "0q1198xlkcd50nxx722s18lpm6hacnvzqqacb0xdld8ll9z3m5ay"))))
(base32 "14bfybh3gzcrk7h22xxxhib1zc3m95j52ib258wxv64n939gln54"))))
(build-system cargo-build-system)
(arguments (list #:install-source? #f))
(native-inputs
File diff suppressed because it is too large Load Diff
+20 -5
View File
@@ -1830,8 +1830,8 @@ ge13ca993e8ccb9ba9847cc330696e02839f328f7/jemalloc"))
(define-public rust-1.94
(let ((base-rust
(rust-bootstrapped-package
rust-1.93 "1.94.0"
"0k274dla70wnajjli2w80by9k4nqf2wah1lw9xhzy8gkscf94gxq")))
rust-1.93 "1.94.1"
"056mbblkhn5ig62v09r6938qmnb09ygy32n62vvwvqqjbxi2l52c")))
(package
(inherit base-rust)
(source
@@ -1901,7 +1901,7 @@ ge13ca993e8ccb9ba9847cc330696e02839f328f7/jemalloc"))
;;; Here we take the latest included Rust, make it public, and re-enable tests
;;; and extra components such as rustfmt.
(define-public rust
(let ((base-rust rust-1.93))
(let ((base-rust rust-1.94))
(package
(inherit base-rust)
(properties (append
@@ -1922,6 +1922,17 @@ ge13ca993e8ccb9ba9847cc330696e02839f328f7/jemalloc"))
(cons '(srfi srfi-26) modules))
((#:phases phases)
`(modify-phases ,phases
(add-after 'unpack 'patch-shebangs-in-tests
(lambda* (#:key inputs #:allow-other-keys)
(with-directory-excursion
"src/tools/rust-analyzer/crates/parser/test_data"
(substitute* '("lexer/ok/shebang_frontmatter.rast"
"parser/inline/ok/frontmatter.rast")
(("/usr/bin/env cargo")
(search-input-file inputs "bin/cargo")))
(substitute* "lexer/ok/single_line_comments.rast"
(("/usr/bin/env bash")
(search-input-file inputs "bin/bash"))))))
(add-after 'unpack 'disable-tests-requiring-git
(lambda _
(substitute* "src/tools/cargo/tests/testsuite/publish_lockfile.rs"
@@ -2063,6 +2074,7 @@ ge13ca993e8ccb9ba9847cc330696e02839f328f7/jemalloc"))
"library/std" ;rustc
"src/tools/cargo"
"src/tools/clippy"
"src/tools/llvm-bitcode-linker"
"src/tools/rust-analyzer"
"src/tools/rustfmt"))))
(replace 'check
@@ -2082,7 +2094,10 @@ ge13ca993e8ccb9ba9847cc330696e02839f328f7/jemalloc"))
(replace 'install
;; Phase overridden to also install more tools.
(lambda* (#:key outputs #:allow-other-keys)
(invoke "./x.py" "install")
;; Install rustc, std, and llvm-bitcode-linker.
;; rust-src is handled separately in 'install-rust-src'.
(invoke "./x.py" "install" "compiler/rustc" "library/std"
"llvm-bitcode-linker")
(substitute* "config.toml"
;; Adjust the prefix to the 'cargo' output.
(("prefix = \"[^\"]*\"")
@@ -2130,7 +2145,7 @@ ge13ca993e8ccb9ba9847cc330696e02839f328f7/jemalloc"))
(with-directory-excursion
(string-append (assoc-ref outputs "rust-src")
"/lib/rustlib/src/rust/src/tools/")
(substitute* (find-files "." "\\.rs$")
(substitute* (find-files "." "\\.(rs|rast)$")
(("#!.*/bin/cargo")
(string-append "#!" (assoc-ref outputs "cargo")
"/bin/cargo"))))))
+2 -2
View File
@@ -50,14 +50,14 @@
(define-public scribus
(package
(name "scribus")
(version "1.6.5")
(version "1.6.4")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/scribus/scribus/"
version "/scribus-" version ".tar.gz"))
(sha256
(base32 "1jj86a2xydkyqfdyhfikcxxl3m4j861mbbcswdd7779q11wysckq"))))
(base32 "1ddsga862wwq2lb12rlsm6009gfx9nxx3s5323jifs53fs1y3knp"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f ;no test target
+7 -6
View File
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2013, 2016, 2026 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org>
;;; Copyright © 2014 Kevin Lemonnier <lemonnierk@ulrar.net>
;;; Copyright © 2015 Jeff Mickey <j@codemac.net>
@@ -1046,22 +1046,23 @@ JavaScript users who avoid shell.")
(define-public gash
(package
(name "gash")
(version "0.3.2")
(version "0.3.1")
(source
;; Note: Pre-built tarballs are no longer hosted at
;; <https://savannah.nongnu.org/projects/gash>.
;; Use a copy built from the unofficial 'EBADF-fixes' branch,
;; <https://codeberg.org/civodul/gash/commit/7c9bf2110cfe85424fba0cd14445d5f0926c3fbd>.
;; See <https://issues.guix.gnu.org/75658>.
(origin (method url-fetch)
(uri (string-append "mirror://gnu/guix/mirror/gash-"
version ".tar.gz"))
(sha256
(base32
"1r74k5qms2rrpx7cywpg9hdywd3y893rl1f4467l86h1gpkih368"))))
"069wizkfkkifij9n0r6fkwbgcnjyr6xvnjid11ckppx0waixc0s7"))))
(build-system gnu-build-system)
(native-inputs
(list pkg-config))
(inputs
(list guile-3.0))
(home-page "https://codeberg.org/guix/gash")
(home-page "https://savannah.nongnu.org/projects/gash/")
(synopsis "POSIX-compatible shell written in Guile Scheme")
(description "Gash is a POSIX-compatible shell written in Guile
Scheme. It provides both the shell interface, as well as a Guile
+9 -3
View File
@@ -140,18 +140,24 @@
(define-public ed
(package
(name "ed")
(version "1.22.5")
(version "1.21")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/ed/ed-"
version ".tar.lz"))
(sha256
(base32
"1k2ql71ybnsfwh81f95qwcg9wl2ijyziav1pj1kav7gjqbfhgqan"))))
"0xddpcdsdhf1cx7izk9l5dmf8vakjx5ncm1cy1f3libxfac4kqk0"))))
(build-system gnu-build-system)
(native-inputs (list lzip))
(arguments
`(#:configure-flags (list ,(string-append "CC=" (cc-for-target)))))
`(#:configure-flags (list ,(string-append "CC=" (cc-for-target)))
#:phases
(modify-phases %standard-phases
(add-before 'patch-source-shebangs 'patch-test-suite
(lambda _
(substitute* "testsuite/check.sh"
(("/bin/sh") (which "sh"))))))))
(home-page "https://www.gnu.org/software/ed/")
(synopsis "Line-oriented text editor")
(description
-12
View File
@@ -67,7 +67,6 @@
;;; Copyright © 2025 Tomas Volf <~@wolfsden.cz>
;;; Copyright © 2025 Matthew Elwin <elwin@northwestern.edu>
;;; Copyright © 2026 Ingar <ingar@onionmail.info>
;;; Copyright © 2026 Robin Templeton <robin@guixotic.coop>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -444,16 +443,6 @@ Python 3.3 and later, rather than on Python 2.")
"MINGW"
"GNU"))) ;matched against '*'
;; Patch git-sh-i18n.sh to source gettext.sh from
;; gettext-minimal. By default, it uses gettext.sh from $PATH
;; if available, and falls back to English if not.
(let ((gettext-sh (search-input-file inputs "bin/gettext.sh")))
(substitute* "git-sh-i18n.sh"
(("type gettext.sh")
(format #f "type ~a" gettext-sh))
(("\\. gettext.sh")
(format #f ". ~a" gettext-sh))))
;; git-submodule sources 'git-sh-setup.sh', but not before
;; invoking the basename and sed commands... patch them to their
;; absolute location.
@@ -594,7 +583,6 @@ Python 3.3 and later, rather than on Python 2.")
coreutils-minimal
curl ;for HTTP(S) access
expat ;for 'git push' over HTTP(S)
gettext-minimal ;for gettext.sh
openssl
perl
sed
+43 -47
View File
@@ -4223,7 +4223,7 @@ be used for realtime video capture via Linux-specific APIs.")
"-DENABLE_QSV11=OFF"
"-DENABLE_NVENC=OFF"
;; Requires a custom version of websocketpp in inputs, that's
;; patched to be compatible with recent versions of Boost
;; patched to be compatible with recent versions of Boost
"-DENABLE_WEBSOCKET=ON"
;; Browser plugin requires cef, but it is not packaged yet.
;; <https://bitbucket.org/chromiumembedded/cef/src/master/>
@@ -6486,7 +6486,7 @@ and audio capture, network stream playback, and many more.")
(define-public dav1d
(package
(name "dav1d")
(version "1.5.1")
(version "1.5.3")
(source
(origin
(method git-fetch)
@@ -6495,7 +6495,7 @@ and audio capture, network stream playback, and many more.")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "1n0b5m4srdjsqg15plc9fng5kjv14ygqahjxy8863fbzhr13vjx9"))))
(base32 "0x19r721gf91a37xqm70j7qcpadyd3m9lcf1lasxq73wnby5lxqk"))))
(build-system meson-build-system)
(native-inputs
(if (target-x86?)
@@ -6777,63 +6777,59 @@ result in several formats:
(define-public rav1e
(package
(name "rav1e")
(version "0.7.1")
(version "0.8.1")
(source
(origin
(method url-fetch)
(uri (crate-uri "rav1e" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32 "1sawva6nmj2fvynydbcirr3nb7wjyg0id2hz2771qnv6ly0cx1yd"))))
(base32 "0axk3ji3jmlr81svmsy5zvj8shmhpp8lz5nyghkq752xx1bdvdj3"))))
(build-system cargo-build-system)
(arguments
`(#:install-source? #f
(list
#:install-source? #f
#:modules '((guix build cargo-build-system)
(guix build utils)
(ice-9 match))
#:phases
(modify-phases %standard-phases
(replace 'build
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(invoke "cargo" "cinstall" "--release"
;; Only build the dynamic library.
"--library-type" "cdylib"
(string-append "--prefix=" out)))))
(add-after 'install 'install-completions
(lambda* (#:key native-inputs outputs #:allow-other-keys)
(unless ,(%current-target-system)
(let* ((out (assoc-ref outputs "out"))
(share (string-append out "/share"))
(bash-completions-dir
(string-append out "/etc/bash_completion.d"))
(zsh-completions-dir
(string-append share "/zsh/site-functions"))
(fish-completions-dir
(string-append share "/fish/vendor_completions.d"))
(elvish-completions-dir
(string-append share "/elvish/lib"))
(rav1e (string-append out "/bin/rav1e"))
(common-flags '("-" "-o" "-" "advanced" "--completion")))
(mkdir-p bash-completions-dir)
(with-output-to-file
(string-append bash-completions-dir "/rav1e")
(lambda _ (apply invoke rav1e (append common-flags '("bash")))))
(mkdir-p zsh-completions-dir)
;; This one currently fails to build.
;(with-output-to-file
; (string-append zsh-completions-dir "/_rav1e")
; (lambda _ (apply invoke rav1e (append common-flags '("zsh")))))
(mkdir-p fish-completions-dir)
(with-output-to-file
(string-append fish-completions-dir "/rav1e.fish")
(lambda _ (apply invoke rav1e (append common-flags '("fish")))))
(mkdir-p elvish-completions-dir)
(with-output-to-file
(string-append elvish-completions-dir "/rav1e")
(lambda _
(apply invoke rav1e (append common-flags '("elvish"))))))))))))
#~(modify-phases %standard-phases
(replace 'build
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(invoke "cargo" "cinstall" "--release"
;; Only build the dynamic library.
"--library-type" "cdylib"
(string-append "--prefix=" out)))))
(add-after 'install 'install-completions
(lambda* (#:key native-inputs #:allow-other-keys)
(for-each
(match-lambda
((shell . path)
(mkdir-p (in-vicinity #$output (dirname path)))
(let ((binary
(if #$(%current-target-system)
(search-input-file native-inputs "bin/rav1e")
(in-vicinity #$output "bin/rav1e"))))
(with-output-to-file (in-vicinity #$output path)
(lambda _
(invoke binary
"-" "-o"
"-" "advanced"
"--completion" shell))))))
'(("bash" . "share/bash-completion/completions/rav1e")
("elvish" . "share/elvish/lib/rav1e")
("fish" . "share/fish/vendor_completions.d/rav1e.fish")
;; This one currently fails to build.
;("zsh" . "share/zsh/site-functions/_rav1e")
)))))))
(native-inputs
(append (if (target-x86?)
(list nasm)
'())
(if (%current-target-system)
(list this-package)
'())
(list pkg-config rust-cargo-c)))
(inputs
(cons* libgit2-1.9 zlib (cargo-inputs 'rav1e)))
+4 -12
View File
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013-2015, 2020-2022, 2026 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013-2015, 2020-2022 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
@@ -123,6 +123,7 @@
"Return a bag for NAME."
(define private-keywords
`(#:cmake #:inputs #:native-inputs
#:implicit-inputs? #:implicit-cross-inputs?
,@(if target '() '(#:target))))
(bag
@@ -161,10 +162,7 @@
(define* (cmake-build name inputs
#:key guile source
(outputs '("out"))
(implicit-inputs? #t)
(implicit-cross-inputs? #t)
(configure-flags ''())
(outputs '("out")) (configure-flags ''())
(search-paths '())
(make-flags ''())
(out-of-source? #t)
@@ -233,11 +231,7 @@ provides a 'CMakeLists.txt' file as its build system."
#:graft? #f
#:substitutable? substitutable?
#:allowed-references allowed-references
#:disallowed-references
(or disallowed-references
(and implicit-inputs?
(not allowed-references)
(default-disallowed-references system)))
#:disallowed-references disallowed-references
#:guile-for-build guile)))
@@ -250,8 +244,6 @@ provides a 'CMakeLists.txt' file as its build system."
target
build-inputs target-inputs host-inputs
source guile
(implicit-inputs? #t)
(implicit-cross-inputs? #t)
(outputs '("out"))
(configure-flags ''())
(search-paths '())
+2 -24
View File
@@ -37,7 +37,6 @@
gnu-build-system
standard-packages
standard-cross-packages
default-disallowed-references
package-with-explicit-inputs
package-with-extra-configure-variable
static-libgcc-package
@@ -276,20 +275,6 @@ standard packages used as implicit inputs of the GNU build system."
(let ((distro (resolve-module '(gnu packages commencement))))
((module-ref distro '%final-inputs) system)))
(define default-disallowed-references
(mlambda (system)
"Return the set of disallowed references for SYSTEM--i.e., build-time
dependencies that build outputs should not refer to by default."
;; XXX: Ideally we would mark all of them but this is too ambitious at
;; this stage: many packages keep a reference to coreutils, grep, etc.
(filter-map (match-lambda
(("gcc" gcc) gcc)
(("binutils" binutils) binutils)
(("ld-wrapper" ld-wrapper) ld-wrapper)
(("libc:static" libc "static") (gexp-input libc "static"))
(_ #f))
(standard-packages system))))
(define* (lower name
#:key source inputs native-inputs outputs target
(implicit-inputs? #t) (implicit-cross-inputs? #t)
@@ -299,6 +284,7 @@ dependencies that build outputs should not refer to by default."
"Return a bag for NAME from the given arguments."
(define private-keywords
`(#:inputs #:native-inputs #:outputs
#:implicit-inputs? #:implicit-cross-inputs?
,@(if target '() '(#:target))))
(bag
@@ -355,8 +341,6 @@ dependencies that build outputs should not refer to by default."
guile source
(outputs '("out"))
(search-paths '())
(implicit-inputs? #t)
(implicit-cross-inputs? #t)
(bootstrap-scripts %bootstrap-scripts)
(configure-flags ''())
(make-flags ''())
@@ -449,11 +433,7 @@ are allowed to refer to."
#:graft? #f
#:substitutable? substitutable?
#:allowed-references allowed-references
#:disallowed-references
(or disallowed-references
(and implicit-inputs?
(not allowed-references)
(default-disallowed-references system)))
#:disallowed-references disallowed-references
#:guile-for-build guile)))
@@ -498,8 +478,6 @@ is one of `host' or `target'."
target
build-inputs target-inputs host-inputs
guile source
(implicit-inputs? #t)
(implicit-cross-inputs? #t)
(outputs '("out"))
(search-paths '())
(native-search-paths '())
+11 -1
View File
@@ -390,10 +390,20 @@ directory = '" vendor-dir "'") port)
(for-each
(lambda (crate)
(invoke "tar" "xzf" crate "-C" vendor-dir))
(find-files "target/package" "\\.crate$"))
(map (lambda (f) (string-append "target/package/" f))
(scandir "target/package"
(lambda (f) (string-suffix? ".crate" f)))))
(patch-cargo-checksums #:vendor-dir vendor-dir))
cargo-package-crates))
;; Cargo creates target/package/tmp-crate/ as scratch space during
;; packaging and leaves .crate file copies there after uplifting them
;; to target/package/. Delete it so the repacking scandir does not
;; pick the tmp-crate directory instead of the extracted crate
;; directory when crate names sort after "tmp-crate" alphabetically.
(when (file-exists? "target/package/tmp-crate")
(delete-file-recursively "target/package/tmp-crate"))
;; Then unpack the crate, reset the timestamp of all contained files, and
;; repack them. This is necessary to ensure that they are reproducible.
(with-directory-excursion "target/package"
+1 -10
View File
@@ -62,14 +62,6 @@ that incorporate timestamps as a way to tell them to use a fixed timestamp.
See https://reproducible-builds.org/specs/source-date-epoch/."
(setenv "SOURCE_DATE_EPOCH" "1"))
(define* (set-GUIX_GCC_MANGLE_PREFIX_MAP #:rest _)
"Set the 'GUIX_GCC_MANGLE_PREFIX_MAP' environment variable.
Guix applies 'gcc-mangle-guix-store.patch' to ensure that there are no
hardcoded references to inputs from the store in derivation outputs due to
macro expansions of __FILE__. Prefix mangling is enabled when this variable
is set. See https://codeberg.org/guix/guix/issues/2394."
(setenv "GUIX_GCC_MANGLE_PREFIX_MAP" "1"))
(define (first-subdirectory directory)
"Return the file name of the first sub-directory of DIRECTORY or false, when
there are none."
@@ -944,8 +936,7 @@ that traversing all the RUNPATH entries entails."
(let-syntax ((phases (syntax-rules ()
((_ p ...) `((p . ,p) ...)))))
(phases separate-from-pid1
set-GUIX_GCC_MANGLE_PREFIX_MAP set-SOURCE-DATE-EPOCH
set-paths install-locale unpack
set-SOURCE-DATE-EPOCH set-paths install-locale unpack
bootstrap
patch-usr-bin-file
patch-source-shebangs configure patch-generated-file-shebangs
+1 -1
View File
@@ -964,7 +964,7 @@ identifiers. The result is inferred from the file names of patches."
("gzip" ,(ref '(gnu packages compression) 'gzip))
("lzip" ,(ref '(gnu packages compression) 'lzip))
("unzip" ,(ref '(gnu packages compression) 'unzip))
("patch" ,(ref '(gnu packages base) 'patch)))))
("patch" ,(ref '(gnu packages base) 'patch/pinned)))))
(define (default-guile)
"Return the default Guile package used to run the build code of
+19 -16
View File
@@ -437,22 +437,25 @@ default values, and with EXTRA-FIELDS set as specified."
(inherit gnu-make)
(name "make-test-boot0")
(arguments
(cons*
#:guile %bootstrap-guile
#:implicit-inputs? #f
#:tests? #f ;cannot run "make check"
(substitute-keyword-arguments (package-arguments gnu-make)
((#:configure-flags flags ''())
;; As in 'gnu-make-boot0', work around a 'config.status' defect.
#~(cons "--disable-dependency-tracking" #$flags))
((#:phases phases)
#~(modify-phases #$phases
(replace 'build
(lambda _
(invoke "./build.sh")))
(replace 'install
(lambda _
(install-file "make" (string-append #$output "/bin")))))))))
`(#:guile ,%bootstrap-guile
#:implicit-inputs? #f
#:tests? #f ;cannot run "make check"
,@(substitute-keyword-arguments (package-arguments gnu-make)
((#:configure-flags flags ''())
;; As in 'gnu-make-boot0', work around a 'config.status' defect.
`(cons "--disable-dependency-tracking" ,flags))
((#:phases phases)
`(modify-phases ,phases
(replace 'build
(lambda _
(invoke "./build.sh")
#t))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin")))
(install-file "make" bin)
#t))))))))
(native-inputs '()) ;no need for 'pkg-config'
(inputs %bootstrap-inputs-for-tests))))