diff options
Diffstat (limited to 'gnu/packages')
69 files changed, 3373 insertions, 2681 deletions
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 42ae928419..c368fc94bd 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -1362,7 +1362,7 @@ connection alive.") (list config perl file)) (inputs `(("inetutils" ,inetutils) - ("bash" ,(canonical-package bash-minimal)) ;for wrap-program + ("bash" ,bash-minimal) ,@(if (hurd-target?) '() `(("net-tools" ,net-tools) ("iproute" ,iproute))) diff --git a/gnu/packages/adns.scm b/gnu/packages/adns.scm index 5703016549..432f7367b7 100644 --- a/gnu/packages/adns.scm +++ b/gnu/packages/adns.scm @@ -76,9 +76,7 @@ scripts.") "0gcincjvpll2qmlc906jx6mfq97s87mgi0zby0753ki0rr2ch0s8")))) (build-system gnu-build-system) (arguments - '(;; FIXME: Some tests require network access - #:tests? #f - #:phases + '(#:phases (modify-phases %standard-phases (add-before 'check 'filter-live-tests (lambda _ diff --git a/gnu/packages/autotools.scm b/gnu/packages/autotools.scm index 118f25ba09..480e80d65d 100644 --- a/gnu/packages/autotools.scm +++ b/gnu/packages/autotools.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2015, 2017, 2018 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016 David Thompson <davet@gnu.org> ;;; Copyright © 2017 Nikita <nikita@n0.is> -;;; Copyright © 2017, 2019, 2021 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2017, 2019, 2021, 2022 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2019 Pierre-Moana Levesque <pierre.moana.levesque@gmail.com> @@ -324,14 +324,14 @@ output is indexed in many ways to simplify browsing.") (define-public automake (package (name "automake") - (version "1.16.3") + (version "1.16.4") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/automake/automake-" version ".tar.xz")) (sha256 (base32 - "0fmz2fhmzcpacnprl5msphvaflwiy0hvpgmqlgfny72ddijzfazz")) + "0v8kbw4fan7apbjwziylyjl5z708w452r5q6kpafcmssi04wryl0")) (patches (search-patches "automake-skip-amhello-tests.patch")))) (build-system gnu-build-system) @@ -451,25 +451,26 @@ Makefile, simplifying the entire process for the developer.") (define-public libtool (package (name "libtool") - (version "2.4.6") + (version "2.4.7") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/libtool/libtool-" version ".tar.xz")) (sha256 (base32 - "0vxj52zm709125gwv9qqlw02silj8bnjnh4y07arrz60r31ai1vw")) + "0pb3l4x37k6fj1lwnpzws55gi3pxl0hx56jm4bzmbrkw0mzj2zsg")) (patches (search-patches "libtool-skip-tests2.patch")))) (build-system gnu-build-system) (propagated-inputs (list m4)) - (native-inputs `(("m4" ,m4) - ("perl" ,perl) - ;; XXX: this shouldn't be necessary, but without it test - ;; 102 fails because it cannot find ltdl/libltdl.la. - ("libltdl" ,libltdl) - ("help2man" ,help2man) ;because we modify ltmain.sh - ("automake" ,automake) ;some tests rely on 'aclocal' - ("autoconf" ,autoconf-wrapper))) ;others on 'autom4te' + (native-inputs + (list m4 + perl + ;; XXX: this shouldn't be necessary, but without it test + ;; 102 fails because it cannot find ltdl/libltdl.la. + libltdl + help2man ; because we modify ltmain.sh + automake ; some tests rely on 'aclocal' + autoconf-wrapper)) ; others on 'autom4te' (arguments `(;; Libltdl is provided as a separate package, so don't install it here. @@ -485,18 +486,19 @@ Makefile, simplifying the entire process for the developer.") #:phases (modify-phases %standard-phases (add-before 'check 'pre-check - (lambda* (#:key inputs native-inputs #:allow-other-keys) + (lambda* (#:key inputs native-inputs parallel-tests? #:allow-other-keys) ;; Run the test suite in parallel, if possible. (setenv "TESTSUITEFLAGS" (string-append "-j" - (number->string (parallel-job-count)))) + (if parallel-tests? + (number->string (parallel-job-count)) + "1"))) ;; Patch references to /bin/sh. (let ((bash (assoc-ref (or native-inputs inputs) "bash"))) (substitute* "tests/testsuite" (("/bin/sh") - (string-append bash "/bin/sh"))) - #t))) + (string-append bash "/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. @@ -508,8 +510,7 @@ Makefile, simplifying the entire process for the developer.") (format #t "restoring shebang on `~a'~%" file) (substitute* file (("^#!.*/bin/sh") "#!/bin/sh"))) - (find-files dir ".*")) - #t)))))) + (find-files dir)))))))) (synopsis "Generic shared library support tools") (description @@ -585,20 +586,20 @@ configuration in nearly all GNU packages (and many others).") ;; Libtool's extensive test suite isn't run. (package (name "libltdl") - (version "2.4.6") + (version "2.4.7") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/libtool/libtool-" version ".tar.xz")) (sha256 (base32 - "0vxj52zm709125gwv9qqlw02silj8bnjnh4y07arrz60r31ai1vw")))) + "0pb3l4x37k6fj1lwnpzws55gi3pxl0hx56jm4bzmbrkw0mzj2zsg")))) (build-system gnu-build-system) (arguments '(#:configure-flags '("--enable-ltdl-install") ;really install it #:phases (modify-phases %standard-phases (add-before 'configure 'change-directory - (lambda _ (chdir "libltdl") #t))))) + (lambda _ (chdir "libltdl")))))) (synopsis "System-independent dlopen wrapper of GNU libtool") (description (package-description libtool)) diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 33b9a672fc..b69a09a73f 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -1,11 +1,11 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2012-2022 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2019 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org> ;;; Copyright © 2014, 2015, 2016, 2018 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014 Alex Kost <alezost@gmail.com> ;;; Copyright © 2014, 2015 Manolis Fragkiskos Ragkousis <manolis837@gmail.com> -;;; Copyright © 2016, 2017, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2017, 2019, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2016, 2018 Alex Vong <alexvong1995@gmail.com> ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org> @@ -105,14 +105,14 @@ command-line arguments, multiple languages, and so on.") (define-public grep (package (name "grep") - (version "3.6") + (version "3.7") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/grep/grep-" version ".tar.xz")) (sha256 (base32 - "0gipv6bzkm1aihj0ncqpyh164xrzgcxcv9r1kwzyk2g1mzl1azk6")) + "0g42svbc1nq5bamxfj6x7320wli4dlj86padk0hwgbk04hqxl42w")) (patches (search-patches "grep-timing-sensitive-test.patch")))) (build-system gnu-build-system) (native-inputs (list perl)) ;some of the tests require it @@ -293,14 +293,14 @@ interactive means to merge two files.") (define-public findutils (package (name "findutils") - (version "4.8.0") + (version "4.9.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/findutils/findutils-" version ".tar.xz")) (sha256 (base32 - "0r3i72hnw0a30khlczi9k2c51aamaj6kfmp5mk3844nrjxz7n4jp")) + "1zk2sighc26bfdsm97bv7cd1cnvq7r4gll4zqpnp0rs3kp0bigx2")) (patches (search-patches "findutils-localstatedir.patch")))) (build-system gnu-build-system) (arguments @@ -742,6 +742,10 @@ the store.") (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") + #:configure-flags (list "--sysconfdir=/etc" diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm index 72758560cd..b05e22d15d 100644 --- a/gnu/packages/bash.scm +++ b/gnu/packages/bash.scm @@ -1,8 +1,8 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2019, 2020 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2012-2017, 2019-2020, 2022 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015, 2017 Leo Famulari <leo@famulari.name> -;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2017, 2018, 2019, 2022 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com> @@ -72,7 +72,7 @@ ...)) (define %patch-series-5.1 - ;; This is the current patches series for 5.0, generated using + ;; This is the current patches series for 5.1, generated using ;; 'download-patches' below. (patch-series (1 "1ymm8ppss6gyh9ifznjwiabrb4k91npd09c10y7mk66xp8yppc7b") @@ -82,7 +82,15 @@ (5 "19bdyigdr81824nxvqr6a7k0cax60wq7376j6b91afbnwvlvbjyc") (6 "051x8wlwrqk0yr0zg378vh824iklfl5g9pkmcdf62qp8gn9pvqbm") (7 "0fir80pp1gmlpadmqcgkrv4y119pc7xllchjzg05fd7px73viz5c") - (8 "1lfjgshk8i9vch92p5wgc9r90j3phw79aa7gbai89w183b2z6b7j"))) + (8 "1lfjgshk8i9vch92p5wgc9r90j3phw79aa7gbai89w183b2z6b7j") + (9 "1vn36dzd9g4y1h3jiss6418crla0rbcd0d6wwsyv9d5l7aaxlp74") + (10 "0amfmvbzsand7bdypylkjdpcp88fa3cplfshn7vyzv2ff2rdgj52") + (11 "0yq24abb4fzfxqnwl20b330sxl9lr9ds0nc4yi30f81l94b1y6aq") + (12 "165bff97ffih49vfs4mkr5w3z5gn1w6zfyrf773iajkw6v48kw8h") + (13 "1bfmgv3lagbk3aq9a831d29xv7jz4sjq7jhn9hq89limyinvdb67") + (14 "1l43dw4kpddn7l41i8wmj406z9abxky1wb3rk8krcys33g4f0kka") + (15 "1w40vzadzx019v0zhs4q6yqycrk04x1k8xs6qb73vk7ny4p6jdqv") + (16 "0krqqljz4bkp9wrdnwfx51bxkb8rkwf8ivc93as1znx5fr7i96c8"))) (define (download-patches store count) "Download COUNT Bash patches into store. Return a list of @@ -109,7 +117,8 @@ number/base32-hash tuples, directly usable in the 'patch-series' form." "-DSSH_SOURCE_BASHRC") " ")) (configure-flags - ``("--with-installed-readline" + ``("--without-bash-malloc" + "--with-installed-readline" ,,(string-append "CPPFLAGS=" cppflags) ,(string-append "LDFLAGS=-Wl,-rpath -Wl," diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index c53a2920ac..13bd51860d 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -3183,10 +3183,10 @@ data and settings.") texlive-fonts-ec texlive-latex-examplep texlive-hyperref - texlive-latex-ms + texlive-ms texlive-latex-natbib - texlive-bibtex ; style files used by natbib - texlive-pgf ; tikz + texlive-bibtex ;style files used by natbib + texlive-pgf ;tikz texlive-latex-verbatimbox))) ("imagemagick" ,imagemagick))) (home-page "https://dorina.mdc-berlin.de/public/rajewsky/discrover/") @@ -13047,7 +13047,7 @@ to an artifact/contaminant file.") (inputs (list openmpi zlib)) (native-inputs - `(("texlive" ,(texlive-updmap.cfg (list texlive-latex-graphics + `(("texlive" ,(texlive-updmap.cfg (list texlive-graphics texlive-fonts-ec texlive-hyperref))))) (home-page "https://www.ebi.ac.uk/~zerbino/velvet/") diff --git a/gnu/packages/boost.scm b/gnu/packages/boost.scm index ca320c37fb..d28ee5e993 100644 --- a/gnu/packages/boost.scm +++ b/gnu/packages/boost.scm @@ -15,9 +15,8 @@ ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2020 Jonathan Brielmaier <jonathan.brielmaier@web.de> ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> -;;; Copyright © 2021 Greg Hogan <code@greghogan.com> +;;; Copyright © 2021, 2022 Greg Hogan <code@greghogan.com> ;;; Copyright © 2021 Franck Pérignon <franck.perignon@univ-grenoble-alpes.fr> -;;; Copyright © 2021 Greg Hogan <code@greghogan.com> ;;; Copyright © 2021 Aleksandr Vityazev <avityazev@posteo.org> ;;; ;;; This file is part of GNU Guix. @@ -68,15 +67,21 @@ (define-public boost (package (name "boost") - (version "1.77.0") + (version "1.79.0") (source (origin (method url-fetch) (uri (string-append "https://boostorg.jfrog.io/artifactory/main/release/" version "/source/boost_" (version-with-underscores version) ".tar.bz2")) + (patches + (list (boost-patch + ;; 1.79.0 was released with a segmentation fault: + ;; <https://github.com/boostorg/json/issues/692>. + "0001-json-array-erase-relocate.patch" version + "1b0izwj8w92imr8ydzrh522syncprpf82n3kcy6apxn6p54b7p0f"))) (sha256 (base32 - "0m08hhk3l7zvzajyk39qlw566q3fhixayhc2j11328qf0gy8b7zw")))) + "0fggarccddj6q4ifj3kn7g565rbhn4ia1vd45fxb7y57a6fmhpa7")))) (build-system gnu-build-system) (inputs (list icu4c zlib)) (native-inputs diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm index d2914fb5a7..b76efb6fdc 100644 --- a/gnu/packages/bootstrap.scm +++ b/gnu/packages/bootstrap.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2015, 2018, 2019 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2017, 2020 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2018, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> +;;; Copyright © 2018, 2020, 2022 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2019 Carl Dong <contact@carldong.me> ;;; Copyright © 2019 Léo Le Bouter <lle-bout@zaclys.net> ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> @@ -61,8 +61,6 @@ %bootstrap-gcc %bootstrap-glibc %bootstrap-inputs - %bootstrap-mescc-tools - %bootstrap-mes %bootstrap-inputs-for-tests)) @@ -929,112 +927,12 @@ exec ~a/bin/.gcc-wrapped -B~a/lib \ (home-page #f) (license gpl3+))) -(define %bootstrap-mescc-tools - ;; The initial MesCC tools. Uses binaries from a tarball typically built by - ;; %MESCC-TOOLS-BOOTSTRAP-TARBALL. - (package - (name "bootstrap-mescc-tools") - (version "0.5.2") - (source #f) - (build-system trivial-build-system) - (arguments - `(#:guile ,%bootstrap-guile - #:modules ((guix build utils)) - #:builder - (begin - (use-modules (guix build utils) - (ice-9 popen)) - (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 out) - (copy-file tarball "binaries.tar.xz") - (invoke xz "-d" "binaries.tar.xz") - (let ((builddir (getcwd)) - (bindir (string-append out "/bin"))) - (with-directory-excursion out - (invoke tar "xvf" - (string-append builddir "/binaries.tar")))))))) - (inputs - `(("tar" ,(bootstrap-executable "tar" (%current-system))) - ("xz" ,(bootstrap-executable "xz" (%current-system))) - ("tarball" - ,(bootstrap-origin - (origin - (method url-fetch) - (uri (map - (cute string-append <> - "/i686-linux/20190815/" - "mescc-tools-static-stripped-0.5.2-i686-linux.tar.xz") - %bootstrap-base-urls)) - (sha256 - (base32 - "0c3kklgghzh4q2dbpl6asb74cimp7hp6jscdwqwmzxbapgcl6582"))))))) - (synopsis "Bootstrap binaries of MesCC Tools") - (description synopsis) - (home-page #f) - (supported-systems '("i686-linux" "x86_64-linux")) - (license gpl3+))) - -(define %bootstrap-mes - ;; The initial Mes. Uses binaries from a tarball typically built by - ;; %MES-BOOTSTRAP-TARBALL. - (package - (name "bootstrap-mes") - (version "0") - (source #f) - (build-system trivial-build-system) - (arguments - `(#:guile ,%bootstrap-guile - #:modules ((guix build utils)) - #:builder - (begin - (use-modules (guix build utils) - (ice-9 popen)) - (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 out) - (copy-file tarball "binaries.tar.xz") - (invoke xz "-d" "binaries.tar.xz") - (let ((builddir (getcwd)) - (bindir (string-append out "/bin"))) - (with-directory-excursion out - (invoke tar "xvf" - (string-append builddir "/binaries.tar")))))))) - (inputs - `(("tar" ,(bootstrap-executable "tar" (%current-system))) - ("xz" ,(bootstrap-executable "xz" (%current-system))) - ("tarball" - ,(bootstrap-origin - (origin - (method url-fetch) - (uri (map - (cute string-append <> - "/i686-linux/20190815/" - "mes-minimal-stripped-0.19-i686-linux.tar.xz") - %bootstrap-base-urls)) - (sha256 - (base32 - "1q4xjpx6nbn44kxnilpgl12bhpmwy2bblzwszc2ci7xkf400jcpv"))))))) - (supported-systems '("i686-linux" "x86_64-linux")) - (synopsis "Bootstrap binaries of Mes") - (description synopsis) - (home-page #f) - (license gpl3+))) - (define (%bootstrap-inputs) ;; The initial, pre-built inputs. From now on, we can start building our ;; own packages. (match (%current-system) ((or "i686-linux" "x86_64-linux") - `(("linux-libre-headers" ,%bootstrap-linux-libre-headers) - ("bootstrap-mescc-tools" ,%bootstrap-mescc-tools) - ("mes" ,%bootstrap-mes))) + `(("linux-libre-headers" ,%bootstrap-linux-libre-headers))) (_ `(("libc" ,%bootstrap-glibc) ("gcc" ,%bootstrap-gcc) @@ -1046,7 +944,7 @@ exec ~a/bin/.gcc-wrapped -B~a/lib \ (define %bootstrap-inputs-for-tests ;; These are bootstrap inputs that are cheap to produce (no compilation ;; needed) and that are meant to be used for testing. (These are those we - ;; used before the Mes-based reduced bootstrap.) + ;; used before the Mes-based full-source bootstrap.) `(("libc" ,%bootstrap-glibc) ("gcc" ,%bootstrap-gcc) ("binutils" ,%bootstrap-binutils) diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm index 2340ef72d9..05e8193ac1 100644 --- a/gnu/packages/check.scm +++ b/gnu/packages/check.scm @@ -1288,44 +1288,27 @@ same arguments.") (define-public python-pytest-xdist (package (name "python-pytest-xdist") - (version "2.1.0") + (version "2.5.0") (source (origin (method url-fetch) (uri (pypi-uri "pytest-xdist" version)) (sha256 (base32 - "0wh6pn66nncfs6ay0n863bgyriwsgppn8flx5l7551j1lbqkinc2")) - (modules '((guix build utils))) - (snippet - '(begin - ;; Remove pre-compiled .pyc files from source. - (for-each delete-file-recursively - (find-files "." "__pycache__" #:directories? #t)) - (for-each delete-file (find-files "." "\\.pyc$")) - #t)))) + "1psf5dqxvc38qzxvc305mkg5xpdmdkbkkfiyqlmdnkgh7z5dx025")))) (build-system python-build-system) (arguments - '(#:tests? #f ; Lots of tests fail. - #:phases + '(#:phases (modify-phases %standard-phases - (add-after 'unpack 'patch-setup-py - (lambda _ - ;; Relax pytest requirement. - (substitute* "setup.py" - (("pytest>=6\\.0\\.0") "pytest")))) (replace 'check - (lambda* (#:key inputs outputs tests? #:allow-other-keys) + (lambda* (#:key tests? #:allow-other-keys) (when tests? - (add-installed-pythonpath inputs outputs) (invoke "pytest" "-vv" "-n" (number->string (parallel-job-count))))))))) - (native-inputs - (list python-setuptools-scm)) - (propagated-inputs - (list python-execnet python-pytest python-py python-pytest-forked)) - (home-page - "https://github.com/pytest-dev/pytest-xdist") + (native-inputs (list python-setuptools-scm)) + (propagated-inputs (list python-execnet python-pytest python-py + python-pytest-forked)) + (home-page "https://github.com/pytest-dev/pytest-xdist") (synopsis "Plugin for py.test with distributed testing and loop-on-failing modes") (description @@ -1384,7 +1367,7 @@ timeout has been exceeded.") (define-public python-pytest-forked (package (name "python-pytest-forked") - (version "1.3.0") + (version "1.4.0") (source (origin (method git-fetch) ;for tests @@ -1394,29 +1377,24 @@ timeout has been exceeded.") (file-name (git-file-name name version)) (sha256 (base32 - "1aip4kx50ynvykl7kq2mlbsi82vx701dvb8mm64lhp69bbv105rc")))) + "0j9bbjny7h3b4fig6l26f26c697r67mm62fzdd9m9rqyy2bmnqjs")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases - (add-after 'unpack 'disable-setuptools-scm + (add-before 'build 'pretend-version (lambda _ - (substitute* "setup.py" - (("use_scm_version=True") - (format #f "version=~s" ,version)) - (("setup_requires=\\['setuptools_scm'\\],.*") - "")))) + (setenv "SETUPTOOLS_SCM_PRETEND_VERSION" ,version))) (replace 'check - (lambda* (#:key inputs outputs tests? #:allow-other-keys) + (lambda* (#:key tests? #:allow-other-keys) (when tests? - (add-installed-pythonpath inputs outputs) (invoke "pytest" "-vv"))))))) (native-inputs ;; XXX: The bootstrap variant of Pytest is used to ensure the ;; 'hypothesis' plugin is not in the environment (due to ;; <http://issues.guix.gnu.org/25235>), which would cause the test suite ;; to fail (see: https://github.com/pytest-dev/pytest-forked/issues/54). - `(("python-pytest" ,python-pytest-bootstrap))) + (list python-pytest-bootstrap python-setuptools-scm)) (home-page "https://github.com/pytest-dev/pytest-forked") (synopsis "Pytest plugin to run tests in isolated forked subprocesses") (description "This package provides a Pytest plugin which enables running @@ -2740,13 +2718,13 @@ mocks, stubs and fakes.") (define-public python-flaky (package (name "python-flaky") - (version "3.5.3") + (version "3.7.0") (source (origin (method url-fetch) (uri (pypi-uri "flaky" version)) (sha256 (base32 - "1nm1kjf857z5aw7v642ffsy1vwf255c6wjvmil71kckjyd0mxg8j")))) + "03daz352021211kvdb056f3afrd2gsdq0rd1awgr38910xw01l9s")))) (build-system python-build-system) (arguments ;; TODO: Tests require 'coveralls' and 'genty' which are not in Guix yet. diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index 820ff7281f..5b7a697b1f 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -5,9 +5,9 @@ ;;; Copyright © 2014, 2015, 2017 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2017, 2018, 2019, 2021, 2022 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> -;;; Copyright © 2018, 2019, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> +;;; Copyright © 2018, 2019, 2020, 2021, 2022 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2019, 2020, 2021 Marius Bakke <marius@gnu.org> -;;; Copyright © 2020 Timothy Sample <samplet@ngyro.com> +;;; Copyright © 2020, 2022 Timothy Sample <samplet@ngyro.com> ;;; Copyright © 2020 Guy Fleury Iteriteka <gfleury@disroot.org> ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2021 Chris Marusich <cmmarusich@gmail.com> @@ -91,7 +91,7 @@ (define bootar (package (name "bootar") - (version "1a") + (version "1b") (source (origin (method url-fetch) (uri (list (string-append @@ -101,7 +101,7 @@ version ".ses"))) (sha256 (base32 - "0mvp6vgx0q316fvy3z2lddlc5xgq5np3bm1fypgvj6dnayibg9np")))) + "0cf5vj5yxfvkgzvjvh2l7b2nz5ji5l534n9g4mfp8f5jsjqdrqjc")))) (build-system gnu-build-system) (arguments `(#:implicit-inputs? #f @@ -120,9 +120,10 @@ (guile (string-append guile-dir "/bin/guile"))) (invoke guile "--no-auto-compile" source) (chdir "bootar")))) - (replace 'configure (bootstrap-configure ,version "." "scripts")) - (replace 'build (bootstrap-build ".")) - (replace 'install (bootstrap-install "." "scripts")))))) + (replace 'configure (bootstrap-configure "Bootar" ,version + '(".") "scripts")) + (replace 'build (bootstrap-build '("."))) + (replace 'install (bootstrap-install '(".") "scripts")))))) (inputs `(("guile" ,%bootstrap-guile))) (home-page "https://git.ngyro.com/bootar") (synopsis "Tar decompression and extraction in Guile Scheme") @@ -142,9 +143,6 @@ pure Scheme to Tar and decompression in one easy step.") (package (inherit gash) (name "gash-boot") - (source (origin - (inherit (package-source gash)) - (snippet #f))) ;discard snippet for Guile 3.0 support (arguments `(#:implicit-inputs? #f #:tests? #f @@ -156,9 +154,10 @@ pure Scheme to Tar and decompression in one easy step.") (use-modules (guix build gnu-bootstrap)) (modify-phases %standard-phases (replace 'configure - (bootstrap-configure ,(package-version gash) "gash" "scripts")) - (replace 'build (bootstrap-build "gash")) - (replace 'install (bootstrap-install "gash" "scripts")) + (bootstrap-configure "Gash" ,(package-version gash) + '("gash") "scripts")) + (replace 'build (bootstrap-build '("gash"))) + (replace 'install (bootstrap-install '("gash") "scripts")) (add-after 'install 'install-symlinks (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) @@ -173,10 +172,6 @@ pure Scheme to Tar and decompression in one easy step.") (package (inherit gash-utils) (name "gash-utils-boot") - (source (origin - (inherit (package-source gash-utils)) - (patches '()) - (snippet #f))) ;discard snippet for Guile 3.0 support (arguments `(#:implicit-inputs? #f #:tests? #f @@ -208,9 +203,9 @@ pure Scheme to Tar and decompression in one easy step.") (substitute* target (("@UTILITY@") script)))) '("awk" "basename" "cat" "chmod" "cmp" "command" - "compress" "cp" "cut" "diff" "dirname" "expr" - "false" "find" "grep" "head" "ln" "ls" "mkdir" - "mv" "printf" "pwd" "reboot" "rm" "rmdir" + "compress" "cp" "cut" "diff" "dirname" "env" + "expr" "false" "find" "grep" "head" "ln" "ls" + "mkdir" "mv" "printf" "pwd" "reboot" "rm" "rmdir" "sed" "sleep" "sort" "tar" "test" "touch" "tr" "true" "uname" "uniq" "wc" "which")) (format #t "Creating scripts/[.in~%") @@ -219,10 +214,11 @@ pure Scheme to Tar and decompression in one easy step.") (("@UTILITY@") "testb")) (delete-file "scripts/template.in"))) (replace 'configure - (bootstrap-configure ,(package-version gash-utils) - "gash" "scripts")) - (replace 'build (bootstrap-build "gash")) - (replace 'install (bootstrap-install "gash" "scripts")) + (bootstrap-configure "Gash-Utils" ,(package-version gash-utils) + '("gash" "gash-utils") "scripts")) + (replace 'build (bootstrap-build '("gash" "gash-utils"))) + (replace 'install + (bootstrap-install '("gash" "gash-utils") "scripts")) ;; XXX: The scripts should add Gash to their load paths and ;; this phase should not exist. (add-after 'install 'copy-gash @@ -246,7 +242,19 @@ pure Scheme to Tar and decompression in one easy step.") (copy-file (string-append gash-godir "/gash/compat.go") (string-append godir "/gash/compat.go")) (copy-recursively (string-append gash-godir "/gash/compat") - (string-append godir "/gash/compat"))))))))) + (string-append godir "/gash/compat"))))) + ;; We need an external echo. + (add-after 'install 'make-echo + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (gash (assoc-ref inputs "gash"))) + (with-output-to-file (string-append out "/bin/echo") + (lambda () + (display (string-append "#!" gash "/bin/gash\n")) + (newline) + (display "echo \"$@\"") + (newline))) + (chmod (string-append out "/bin/echo") #o755)))))))) (inputs `(("gash" ,gash-boot) ("guile" ,%bootstrap-guile))) (native-inputs `(("bootar" ,bootar))))) @@ -257,186 +265,237 @@ pure Scheme to Tar and decompression in one easy step.") ("bootar" ,bootar) ("guile" ,%bootstrap-guile))) -(define %bootstrap-mes-rewired +(define bootstrap-seeds (package - (inherit mes) - (name "bootstrap-mes-rewired") - (version "0.19") - (source #f) - (native-inputs `(("mes" ,%bootstrap-mes) - ("gash" ,gash-boot))) - (inputs '()) - (propagated-inputs '()) - (outputs '("out")) + (name "bootstrap-seeds") + (version "1.0.0") + (source (origin + (method url-fetch) + (uri (list + (string-append "mirror://gnu/guix/mirror/" + "bootstrap-seeds-" version ".tar.gz") + (string-append + "https://lilypond.org/janneke/guix/20220501/" + "bootstrap-seeds-" version ".tar.gz"))) + (sha256 + (base32 + "0scz2bx8fd8c821h6y1j3x6ywgxxns7iinyn9z32dnkiacfdcpfn")))) + (native-inputs (list bootar)) (build-system trivial-build-system) (arguments - `(#:guile ,%bootstrap-guile - #:modules ((guix build utils)) - - #:builder (begin - (use-modules (guix build utils) - (srfi srfi-26)) - - (let* ((mes (assoc-ref %build-inputs "mes")) - (gash (assoc-ref %build-inputs "gash")) - (mes-bin (string-append mes "/bin")) - (guile (string-append mes-bin "/mes")) - (mes-module (string-append mes "/share/mes/module")) - (out (assoc-ref %outputs "out")) - (bin (string-append out "/bin")) - (mescc (string-append bin "/mescc")) - (module (string-append out "/share/mes/module"))) - (define (rewire file) - (substitute* file - ((mes) out) - (("/gnu/store[^ ]+mes-minimal-[^/)}\"]*") out) - (("/gnu/store[^ ]+guile-[^/]*/bin/guile") guile) - (("/gnu/store[^ ]+bash-[^/)}\"]*") gash))) - - (mkdir-p bin) - (for-each (lambda (file) (install-file file bin)) - (find-files mes-bin)) - (mkdir-p module) - (copy-recursively (string-append mes-module "/mes") - (string-append module "/mes")) - (copy-recursively (string-append mes-module "/srfi") - (string-append module "/srfi")) - (for-each rewire - ;; Cannot easily rewire "mes" because it - ;; contains NUL characters; would require - ;; remove-store-references alike trick - (filter (negate (cut string-suffix? "/mes" <>)) - (find-files bin))) - (rewire (string-append module "/mes/boot-0.scm")) - - (delete-file mescc) - (with-output-to-file mescc - (lambda _ - (display (string-append - "\ -#! " gash "/bin/sh -LANG=C -LC_ALL=C -export LANG LC_ALL - -MES_PREFIX=${MES_REWIRED_PREFIX-" out "/share/mes} -MES=" bin "/mes -export MES MES_PREFIX - -MES_ARENA=${MES_REWIRED_ARENA-10000000} -MES_MAX_ARENA=${MES_REWIRED_ARENA-10000000} -MES_STACK=${MES_REWIRED_STACK-1000000} -export MES_ARENA MES_MAX_ARENA MES_STACK - -$MES -e '(mescc)' module/mescc.scm -- \"$@\" -")))) - (chmod mescc #o555) - - (with-directory-excursion module - (chmod "mes/base.mes" #o644) - (copy-file "mes/base.mes" "mes/base.mes.orig") - (let ((base.mes (open-file "mes/base.mes" "a"))) - (display " -;; A fixed map, from Mes 0.21, required to bootstrap Mes 0.21 -(define (map f h . t) - (if (or (null? h) - (and (pair? t) (null? (car t))) - (and (pair? t) (pair? (cdr t)) (null? (cadr t)))) '() - (if (null? t) (cons (f (car h)) (map f (cdr h))) - (if (null? (cdr t)) - (cons (f (car h) (caar t)) (map f (cdr h) (cdar t))) - (if (null? (cddr t)) - (cons (f (car h) (caar t) (caadr t)) (map f (cdr h) (cdar t) (cdadr t))) - (error 'unsupported (cons* 'map-4: f h t))b ))))) -" base.mes) - (close base.mes)) - - (chmod "mes/guile.mes" #o644) - (copy-file "mes/guile.mes" "mes/guile.mes.orig") - (let ((guile.mes (open-file "mes/guile.mes" "a"))) - (display " -;; After booting guile.scm; use Mes 0.21; especially: MesCC 0.21 -(let* ((self (car (command-line))) - (prefix (dirname (dirname self)))) - (set! %moduledir (string-append prefix \"/mes/module/\")) - (setenv \"%numbered_arch\" \"true\")) + (list #:guile %bootstrap-guile + #:modules '((guix build utils)) + #:builder + #~(begin + (use-modules (guix build utils)) + (let ((source #$(package-source this-package)) + (tar #$(this-package-native-input "bootar")) + (out #$output)) + (setenv "PATH" (string-append tar "/bin:")) + (invoke "tar" "xvf" source) + (mkdir-p out) + (copy-recursively "bootstrap-seeds" out))))) + (home-page "https://github.com/oriansj/bootstrap-seeds") + (synopsis "The initial bootstrap seeds: 357-byte hex0 and kaem shell") + (description + "This package provides pre-built binaries of the bootstrap seeds. It +contains a hex0-seed and an optional kaem-minimal shell. The size of the hex0 +seeds are for knight: 250 bytes, x86-linux: 357 bytes, x86_64-linux: 431 +bytes, and aarch64-linux 526 bytes. These can be used to build stage0: hex0, +hex1, hex2, M1, and M2-Planet.") + (license license:gpl3+))) -" guile.mes) - (close guile.mes))) - #t)))))) +(define stage0-posix + ;; The initial bootstrap package: no binary inputs except those from + ;; `bootstrap-seeds, for x86 a 357 byte binary seed: `x86/hex0-seed'. + (let* ((mescc-tools-version "1.4.0") + (m2-planet-version "1.9.0") + (mescc-tools + (origin + (method url-fetch) + (uri (list + (string-append + "mirror://gnu/guix/mirror/" + "mescc-tools-" mescc-tools-version ".tar.gz") + (string-append + "https://lilypond.org/janneke/guix/20220502/" + "mescc-tools-" mescc-tools-version ".tar.gz"))) + (sha256 + (base32 + "1xi6f48pf5bhajhfis189gpizxij7nbp1vzvsb1aafhz4skkiqvg")))) + (m2-planet + (origin + (method url-fetch) + (uri (list + (string-append + "mirror://gnu/guix/mirror/" + "M2-Planet-" m2-planet-version ".tar.gz") + (string-append + "https://lilypond.org/janneke/guix/20220502/" + "M2-Planet-" m2-planet-version ".tar.gz"))) + (sha256 + (base32 + "1xrn69sc5nz4hwaishqyrcidp1ncxwib9zswl45x378ddz3mmk7g"))))) + (package + (name "stage0-posix") + (version "1.4") + (source (origin + (method url-fetch) + (uri (list + (string-append "mirror://gnu/guix/mirror/" + "stage0-posix-" version ".tar.gz") + (string-append + "https://lilypond.org/janneke/guix/20220502/" + "stage0-posix-" version ".tar.gz"))) + (sha256 + (base32 + "1ammifkj33205qrpfm84yb1c99lwgbn4jsl1hd08aab8c9ffz6p4")))) + (supported-systems '("i686-linux" "x86_64-linux" + "aarch64-linux" + "riscv64-linux")) + (native-inputs + `(("bootstrap-seeds" ,bootstrap-seeds) + ,@(%boot-gash-inputs))) + (build-system trivial-build-system) + (arguments + (list + #:guile %bootstrap-guile + #:modules '((guix build utils)) + #:builder + #~(begin + (use-modules (guix build utils)) + (let* ((bootstrap-seeds #$(this-package-native-input + "bootstrap-seeds")) + (source #$(package-source this-package)) + (tar #$(this-package-native-input "bootar")) + (bash #$(this-package-native-input "bash")) + (coreutils #$(this-package-native-input "coreutils")) + (guile #$(this-package-input "guile")) + (out #$output) + (bindir (string-append out "/bin")) + (target (or #$(%current-target-system) + #$(%current-system))) + (stage0-cpu + (cond + ((or #$(target-x86-64?) #$(target-x86-32?)) + "x86") + (#$(target-aarch64?) + "AArch64") + (#$(target-riscv64?) + "riscv64") + (else + (error "stage0-posix: system not supported" target)))) + (kaem (string-append "../bootstrap-seeds/POSIX/" + stage0-cpu "/kaem-optional-seed"))) + (setenv "PATH" (string-append tar "/bin:" + coreutils "/bin:" + bash "/bin")) + (invoke "tar" "xvf" source) + (chdir (string-append "stage0-posix-" #$version)) + (copy-recursively bootstrap-seeds "bootstrap-seeds") + (invoke "tar" "xvf" #$mescc-tools) + (rmdir "mescc-tools") + (symlink (string-append "mescc-tools-" #$mescc-tools-version) + "mescc-tools") + (invoke "tar" "xvf" #$m2-planet) + (rmdir "M2-Planet") + (symlink (string-append "M2-Planet-" #$m2-planet-version) + "M2-Planet") + (rmdir "M2libc") + (symlink "M2-Planet/M2libc" "M2libc") + (mkdir-p bindir) + (with-directory-excursion stage0-cpu + (with-output-to-file "mes-m2.kaem" + (lambda _ (display ""))) + (with-output-to-file "mescc-tools-extra.kaem" + (lambda _ (display ""))) + (invoke kaem "kaem.run")) + (with-directory-excursion "bin" + (install-file "hex2" bindir) + (install-file "M1" bindir) + (install-file "blood-elf" bindir) + (install-file "kaem" bindir) + (install-file "get_machine" bindir) + (install-file "M2-Planet" bindir)))))) + (home-page "https://github.com/oriansj/stage0-posix/") + (synopsis "The initial bootstrap package, builds stage0 up to M2-Planet") + (description "Starting from the 357-byte hex0-seed binary provided by +the bootstrap-seeds, the stage0-posix package first builds hex0 and then all +the way up: hex1, catm, hex2, M0, cc_x86, M1, M2, get_machine (that's all of +MesCC-Tools), and finally M2-Planet.") + (license license:gpl3+)))) (define mes-boot (package (inherit mes) (name "mes-boot") - (version "0.22") + (version "0.24") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/mes/" "mes-" version ".tar.gz")) (sha256 (base32 - "0p1jsrrmcbc0zrvbvnjbb6iyxr0in71km293q8qj6gnar6bw09av")))) + "00lrpm4x5qg0l840zhbf9mr67mqhp8gljcl24j5dy0y109gf32w2")))) (inputs '()) (propagated-inputs '()) + (supported-systems '("i686-linux" "x86_64-linux")) (native-inputs - `(("nyacc-source" ,(origin (inherit (package-source nyacc-0.99)) - (snippet #f))) - ("mes" ,%bootstrap-mes-rewired) - ("mescc-tools" ,%bootstrap-mescc-tools) + `(("m2-planet" ,stage0-posix) + ("nyacc-source" ,(bootstrap-origin + (origin (inherit (package-source nyacc-1.00.2)) + (snippet #f)))) ,@(%boot-gash-inputs))) (arguments - `(#:implicit-inputs? #f - #:tests? #f - #:guile ,%bootstrap-guile - #:strip-binaries? #f ; binutil's strip b0rkes MesCC/M1/hex2 binaries - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'unpack-seeds - (lambda _ - (let ((nyacc-source (assoc-ref %build-inputs "nyacc-source"))) - (with-directory-excursion ".." - (invoke "tar" "-xvf" nyacc-source))))) - (replace 'configure - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref %outputs "out")) - (gash (assoc-ref %build-inputs "bash")) - (mes (assoc-ref %build-inputs "mes")) - (dir (with-directory-excursion ".." (getcwd)))) - (setenv "AR" (string-append "gash " (getcwd) "/scripts/mesar")) - (setenv "BASH" (string-append gash "/bin/bash")) - (setenv "CC" (string-append mes "/bin/mescc")) - (setenv "GUILE_LOAD_PATH" - (string-append - mes "/share/mes/module" - ":" dir "/nyacc-0.99.0/module")) - (invoke "gash" "configure.sh" - (string-append "--prefix=" out) - (string-append "--host=i686-linux-gnu"))))) - (replace 'build - (lambda _ - (invoke "sh" "bootstrap.sh"))) - (delete 'check) - (replace 'install - (lambda _ - (substitute* "install.sh" ; show some progress - ((" -xf") " -xvf") - (("^( *)((cp|mkdir|tar) [^']*[^\\])\n" all space cmd) - (string-append space "echo '" cmd "'\n" - space cmd "\n"))) - (invoke "sh" "install.sh") - ;; Keep ASCII output, for friendlier comparison and bisection - (let* ((out (assoc-ref %outputs "out")) - (cache (string-append out "/lib/cache"))) - (define (objects-in-dir dir) - (find-files dir - (lambda (name stat) - (and (equal? (dirname name) dir) - (or (string-suffix? ".o" name) - (string-suffix? ".s" name)))))) - (for-each (lambda (x) (install-file x cache)) - (append (objects-in-dir ".") - (objects-in-dir "mescc-lib"))))))))) + (list + #:implicit-inputs? #f + #:tests? #f + #:guile %bootstrap-guile + #:strip-binaries? #f ;no strip yet + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'unpack-seeds + (lambda _ + (let ((nyacc-source #$(this-package-native-input "nyacc-source"))) + (with-directory-excursion ".." + (invoke "tar" "-xvf" nyacc-source))))) + (replace 'configure + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out #$output) + (gash #$(this-package-native-input "bash")) + (dir (with-directory-excursion ".." (getcwd)))) + (setenv "GUILE_LOAD_PATH" (string-append + dir "/nyacc-1.00.2/module")) + (invoke "gash" "configure.sh" + (string-append "--prefix=" out) + "--host=i686-linux-gnu")))) + (replace 'build + (lambda _ + (invoke "gash" "bootstrap.sh"))) + (delete 'check) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "install.sh" ; show some progress + ((" -xf") " -xvf") + (("^( *)((cp|mkdir|tar) [^']*[^\\])\n" all space cmd) + (string-append space "echo '" cmd "'\n" + space cmd "\n"))) + (invoke "gash" "install.sh") + ;; Keep ASCII output, for friendlier comparison and bisection + (let* ((out #$output) + (cache (string-append out "/lib/cache"))) + (define (objects-in-dir dir) + (find-files dir + (lambda (name stat) + (and (equal? (dirname name) dir) + (or (string-suffix? ".M1" name) + (string-suffix? ".hex2" name) + (string-suffix? ".o" name) + (string-suffix? ".s" name)))))) + (for-each (lambda (x) (install-file x cache)) + (append (objects-in-dir "m2") + (objects-in-dir ".") + (objects-in-dir "mescc-lib"))))))))) (native-search-paths (list (search-path-specification (variable "C_INCLUDE_PATH") @@ -451,7 +510,7 @@ $MES -e '(mescc)' module/mescc.scm -- \"$@\" (define tcc-boot0 - ;; Pristine tcc cannot be built by MesCC, we are keeping a delta of 11 + ;; Pristine tcc cannot be built by MesCC, we are keeping a delta of 30 ;; patches. In a very early and rough form they were presented to the ;; TinyCC developers, who at the time showed no interest in supporting the ;; bootstrappable effort; we will try again later. These patches have been @@ -460,82 +519,83 @@ $MES -e '(mescc)' module/mescc.scm -- \"$@\" (package (inherit tcc) (name "tcc-boot0") - (version "0.9.26-1103-g6e62e0e") + (version "0.9.26-1136-g5bba73cc") (source (origin (method url-fetch) - (uri (list (string-append "mirror://gnu/guix/mirror/tcc-" - version ".tar.gz") - (string-append - "http://lilypond.org/janneke/mes/20191117/" - "/tcc-" version ".tar.gz"))) + (uri (list + (string-append "mirror://gnu/guix/mirror/" + "tcc-" version ".tar.gz") + (string-append "https://lilypond.org/janneke/tcc/" + "tcc-" version ".tar.gz"))) (sha256 (base32 - "1qbybw7mxbgkv3sazvz1v7c8byq998vk8f1h25ik8w3d2l63lxng")))) + "1y2f04qwdqg7dgxiscbf0ibybx2gclniwbbcsxpayazzii2cvji3")))) (build-system gnu-build-system) (supported-systems '("i686-linux" "x86_64-linux")) (inputs '()) (propagated-inputs '()) (native-inputs `(("mes" ,mes-boot) - ("nyacc-source" ,(origin (inherit (package-source nyacc-0.99)) - (snippet #f))) - ("mescc-tools" ,%bootstrap-mescc-tools) + ("mescc-tools" ,stage0-posix) + ("nyacc-source" ,(bootstrap-origin + (origin (inherit (package-source nyacc-1.00.2)) + (snippet #f)))) ,@(%boot-gash-inputs))) (arguments - `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile - #:validate-runpath? #f ; no dynamic executables - #:strip-binaries? #f ; no strip yet - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'unpack-seeds - (lambda* (#:key outputs #:allow-other-keys) - (let ((nyacc-source (assoc-ref %build-inputs "nyacc-source"))) - (with-directory-excursion ".." - (invoke "tar" "-xvf" nyacc-source))))) - (replace 'configure - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref %outputs "out")) - (dir (with-directory-excursion ".." (getcwd))) - (interpreter "/lib/mes-loader")) - - (setenv "prefix" out) - (setenv "GUILE_LOAD_PATH" - (string-append dir "/nyacc-0.99.0/module")) - - (substitute* "conftest.c" - (("volatile") "")) - - (invoke "sh" "configure" - "--cc=mescc" - (string-append "--prefix=" out) - (string-append "--elfinterp=" interpreter) - "--crtprefix=." - "--tccdir=.")))) - (replace 'build - (lambda _ - (substitute* "bootstrap.sh" ; Show some progress - (("^( *)((cp|ls|mkdir|rm|[.]/tcc|[.]/[$][{PROGRAM_PREFIX[}]tcc) [^\"]*[^\\])\n" all space cmd) - (string-append space "echo \"" cmd "\"\n" - space cmd "\n"))) - (invoke "sh" "bootstrap.sh"))) - (replace 'check - (lambda _ - ;; fail fast tests - (system* "./tcc" "--help") ; --help exits 1 - ;; (invoke "sh" "test.sh" "mes/scaffold/tests/30-strlen") - ;; (invoke "sh" "-x" "test.sh" "mes/scaffold/tinycc/00_assignment") - ;; TODO: add sensible check target (without depending on make) - ;; (invoke "sh" "check.sh") - #t)) - (replace 'install - (lambda _ - (substitute* "install.sh" ; Show some progress - (("^( *)((cp|ls|mkdir|rm|tar|./[$][{PROGRAM_PREFIX[}]tcc) [^\"]*[^\\])\n" all space cmd) - (string-append space "echo \"" cmd "\"\n" - space cmd "\n"))) - - (invoke "sh" "install.sh")))))) + (list + #:implicit-inputs? #f + #:guile %bootstrap-guile + #:validate-runpath? #f ; no dynamic executables + #:strip-binaries? #f ; no strip yet + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'unpack-extra-sources + (lambda* (#:key outputs #:allow-other-keys) + (let ((nyacc-source #$(this-package-native-input "nyacc-source"))) + (with-directory-excursion ".." + (invoke "tar" "-xvf" nyacc-source))))) + (replace 'configure + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out #$output) + (dir (with-directory-excursion ".." (getcwd))) + (interpreter "/lib/mes-loader") + (mes #$(this-package-native-input "mes")) + (mescc (string-append mes "/bin/mescc"))) + (substitute* "conftest.c" + (("volatile") "")) + (setenv "prefix" out) + (setenv "GUILE_LOAD_PATH" + (string-append dir "/nyacc-1.00.2/module")) + (invoke "sh" "configure" + "--cc=mescc" + (string-append "--prefix=" out) + (string-append "--elfinterp=" interpreter) + "--crtprefix=." + "--tccdir=.")))) + (replace 'build + (lambda _ + (substitute* "bootstrap.sh" ; Show some progress + (("^( *)((cp|ls|mkdir|rm|[.]/tcc|[.]/[$][{program_prefix[}]tcc) [^\"]*[^\\])\n" all space cmd) + (string-append space "echo \"" cmd "\"\n" + space cmd "\n"))) + (invoke "sh" "bootstrap.sh"))) + (replace 'check + (lambda _ + ;; fail fast tests + (system* "./tcc" "--help") ; --help exits 1 + ;; (invoke "sh" "test.sh" "mes/scaffold/tests/30-strlen") + ;; (invoke "sh" "-x" "test.sh" "mes/scaffold/tinycc/00_assignment") + ;; TODO: add sensible check target (without depending on make) + ;; (invoke "sh" "check.sh") + )) + (replace 'install + (lambda _ + (substitute* "install.sh" ; Show some progress + (("^( *)((cp|ls|mkdir|rm|tar|./[$][{PROGRAM_PREFIX[}]tcc) [^\"]*[^\\])\n" all space cmd) + (string-append space "echo \"" cmd "\"\n" + space cmd "\n"))) + + (invoke "sh" "install.sh")))))) (native-search-paths (list (search-path-specification (variable "C_INCLUDE_PATH") @@ -656,152 +716,6 @@ $MES -e '(mescc)' module/mescc.scm -- \"$@\" ("tcc" ,tcc-boot0) ,@(%boot-gash-inputs))) -(define bzip2-mesboot - ;; The initial bzip2 - (package - (inherit bzip2) - (name "bzip2-mesboot") - (version (package-version bzip2)) - (source (bootstrap-origin (package-source bzip2))) - (supported-systems '("i686-linux" "x86_64-linux")) - (inputs '()) - (propagated-inputs '()) - (native-inputs (%boot-tcc0-inputs)) - (outputs '("out")) - (arguments - `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile - #:parallel-build? #f - #:tests? #f ; check is naive, also checks non-built PROGRAMS - #:strip-binaries? #f ; no strip yet - #:make-flags (list "CC=tcc -I ." "AR=tcc -ar" "bzip2" - (string-append "PREFIX=" - (assoc-ref %outputs "out"))) - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'scripted-patch - (lambda _ - (substitute* "Makefile" - (("\tln " all) - (string-append "\t#" all))) - (substitute* "bzip2.c" - (("struct utimbuf uTimBuf;" all) - (string-append "// " all)) - (("uTimBuf[.]" all) - (string-append "// " all)) - (("retVal = utime [(] dstName, &uTimBuf [)];" all) - (string-append "retVal = 0; // " all))))) - (replace 'configure - (lambda _ - (with-output-to-file "utime.h" - (lambda _ (display " -#define fchown(filedes, owner, group) 0 -#define fchmod(filedes, mode) 0 -"))))) - (replace 'check - (lambda _ - (invoke "./bzip2" "--help"))) - ;; FIXME: no compressing gzip yet - (delete 'compress-documentation)))))) - -(define bash-mesboot0 - ;; The initial Bash - (package - (inherit static-bash) - (name "bash-mesboot0") - (version "2.05b") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/bash/bash-" - version ".tar.gz")) - (sha256 - (base32 - "1r1z2qdw3rz668nxrzwa14vk2zcn00hw7mpjn384picck49d80xs")))) - (inputs '()) - (propagated-inputs '()) - (native-inputs (%boot-tcc0-inputs)) - (outputs '("out")) - (arguments - `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile - #:parallel-build? #f - #:strip-binaries? #f ; no strip yet - #:configure-flags - (list "--build=i686-unknown-linux-gnu" - "--host=i686-unknown-linux-gnu" - - "--without-bash-malloc" - "--disable-readline" - "--disable-history" - "--disable-help-builtin" - "--disable-progcomp" - "--disable-net-redirections" - "--disable-nls" - - ;; Pretend 'dlopen' is missing so we don't build loadable - ;; modules and related code. - "ac_cv_func_dlopen=no") - #:make-flags '("bash") - #:phases - (modify-phases %standard-phases - (add-before 'configure 'setenv - (lambda _ - (let* ((gash (assoc-ref %build-inputs "bash")) - (shell (string-append gash "/bin/gash"))) - (setenv "CONFIG_SHELL" shell) - (setenv "SHELL" shell) - (setenv "CC" "tcc") - (setenv "LD" "tcc") - (setenv "AR" "tcc -ar") - (setenv "CFLAGS" "-D _POSIX_VERSION=1")))) - (add-after 'unpack 'scripted-patch - (lambda _ - (substitute* "Makefile.in" - (("mksyntax\\.c\n") "mksyntax.c -lgetopt\n") - (("buildversion[.]o\n") "buildversion.o -lgetopt\n") - ;; No size in Gash - (("\tsize ") "#\tsize")) - (substitute* "lib/sh/oslib.c" - (("int name, namelen;") "char *name; int namelen;")) - (substitute* "lib/sh/snprintf.c" - (("^#if (defined [(]HAVE_LOCALE_H[)])" all define) (string-append "#if 0 //" define))) - (substitute* "configure" - ((" egrep") " grep")))) - (replace 'configure - (lambda* (#:key configure-flags #:allow-other-keys) - (let ((configure-flags (filter (lambda (x) - (and (not (string-prefix? "CONFIG_SHELL=" x)) - (not (string-prefix? "SHELL=" x)))) - configure-flags))) - (format (current-error-port) - "running ./configure ~a\n" (string-join configure-flags))) - (apply invoke (cons "./configure" configure-flags)))) - (add-after 'configure 'configure-fixups - (lambda _ - (substitute* "config.h" - (("#define GETCWD_BROKEN 1") "#undef GETCWD_BROKEN")) - (let ((config.h (open-file "config.h" "a"))) - (display " -// tcc: error: undefined symbol 'enable_hostname_completion' -#define enable_hostname_completion(on_or_off) 0 - -// /gnu/store/…-tcc-boot0-0.9.26-6.c004e9a/lib/libc.a: error: 'sigprocmask' defined twice -#define HAVE_POSIX_SIGNALS 1 -#define endpwent(x) 0 -" - config.h) - (close config.h)))) - (replace 'check - (lambda _ - (invoke "./bash" "--version"))) - (replace 'install - (lambda _ - (let* ((out (assoc-ref %outputs "out")) - (bin (string-append out "/bin"))) - (mkdir-p bin) - (copy-file "bash" (string-append bin "/bash")) - (copy-file "bash" (string-append bin "/sh")))))))))) - (define tcc-boot ;; The final tcc. (package @@ -812,8 +726,7 @@ $MES -e '(mescc)' module/mescc.scm -- \"$@\" (build-system gnu-build-system) (inputs '()) (propagated-inputs '()) - (native-inputs `(("bzip2" ,bzip2-mesboot) - ,@(%boot-tcc0-inputs))) + (native-inputs (%boot-tcc0-inputs)) (arguments `(#:implicit-inputs? #f #:guile ,%bootstrap-guile @@ -821,14 +734,6 @@ $MES -e '(mescc)' module/mescc.scm -- \"$@\" #:strip-binaries? #f ; no strip yet #:phases (modify-phases %standard-phases - ;; tar xvf ..bz2 gives - ;; bzip2: PANIC -- internal consistency error - (replace 'unpack - (lambda* (#:key source #:allow-other-keys) - (copy-file source "tarball.tar.bz2") - (invoke "bzip2" "-d" "tarball.tar.bz2") - (invoke "tar" "xvf" "tarball.tar") - (chdir (string-append "tcc-" ,version)))) (add-after 'unpack 'scripted-patch (lambda* (#:key inputs #:allow-other-keys) (substitute* "libtcc.c" @@ -890,8 +795,8 @@ $MES -e '(mescc)' module/mescc.scm -- \"$@\" (string-append out "/include")) (copy-recursively (string-append tcc "/lib") (string-append out "/lib")) - (invoke "tcc" "-D" "TCC_TARGET_I386=1" "-c" "-o" "libtcc1.o" "lib/libtcc1.c") - (invoke "tcc" "-ar" "rc" "libtcc1.a" "libtcc1.o") + (invoke "./tcc" "-D" "TCC_TARGET_I386=1" "-c" "-o" "libtcc1.o" "lib/libtcc1.c") + (invoke "./tcc" "-ar" "rc" "libtcc1.a" "libtcc1.o") (copy-file "libtcc1.a" (string-append out "/lib/libtcc1.a")) (delete-file (string-append out "/lib/tcc/libtcc1.a")) (copy-file "libtcc1.a" @@ -932,56 +837,9 @@ $MES -e '(mescc)' module/mescc.scm -- \"$@\" ;; FIXME: no compressing gzip yet (delete 'compress-documentation)))))) -(define sed-mesboot0 - ;; The initial sed. - (package - (inherit sed) - (name "sed-mesboot0") - (version "1.18") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/sed/sed-" - version ".tar.gz")) - (sha256 - (base32 - "1hyv7i82jd0q18xcql51ylc8jwadp3gb3irgcqlis3v61p35jsv2")))) - (supported-systems '("i686-linux" "x86_64-linux")) - (inputs '()) - (propagated-inputs '()) - (native-inputs (%boot-tcc0-inputs)) - (arguments - `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile - #:parallel-build? #f - #:configure-flags '("CC=tcc") - #:make-flags '("CC=tcc" "extra_objs=" "DEFS=-D HAVE_BCOPY") - #:strip-binaries? #f ; no strip yet - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'scripted-patch - (lambda _ - (let* ((out (assoc-ref %outputs "out")) - (bash (assoc-ref %build-inputs "bash")) - (shell (string-append bash "/bin/bash"))) - (substitute* "configure" - (("/bin/sh") shell))))) - (replace 'check - (lambda _ - (invoke "./sed" "--version"))) - (replace 'install - (lambda _ - (let* ((out (assoc-ref %outputs "out")) - (bin (string-append out "/bin"))) - (install-file "sed" bin))))))))) - (define (%boot-tcc-inputs) - `(("bash" ,bash-mesboot0) - ("bzip2" ,bzip2-mesboot) - ("gzip" ,gzip-mesboot) + `(("gzip" ,gzip-mesboot) ("patch" ,patch-mesboot) - ("sed" ,sed-mesboot0) - ;; Place lower than sed so we don't override it. - ("gash-utils" ,gash-utils-boot) ("tcc" ,tcc-boot) ,@(alist-delete "tcc" (%boot-tcc0-inputs)))) @@ -990,14 +848,17 @@ $MES -e '(mescc)' module/mescc.scm -- \"$@\" (package (inherit binutils) (name "binutils-mesboot0") - (version "2.14") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/binutils/binutils-" - version ".tar.gz")) - (sha256 - (base32 - "1w8xp7k44bkijr974x9918i4p1sw4g2fcd5mxvspkjpg38m214ds")))) + (version "2.20.1a") + (source (bootstrap-origin + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/binutils/binutils-" + version ".tar.bz2")) + (patches (search-patches "binutils-boot-2.20.1a.patch")) + (patch-guile %bootstrap-guile) + (sha256 + (base32 + "0r7dr0brfpchh5ic0z9r4yxqn4ybzmlh25sbp30cacqk8nb7rlvi"))))) (inputs '()) (propagated-inputs '()) (native-inputs (%boot-tcc-inputs)) @@ -1009,40 +870,21 @@ $MES -e '(mescc)' module/mescc.scm -- \"$@\" #:parallel-build? #f #:strip-binaries? #f ; no strip yet #:configure-flags - (let ((out (assoc-ref %outputs "out"))) - `("--disable-nls" + (let ((cppflags (string-append " -D __GLIBC_MINOR__=6" + " -D MES_BOOTSTRAP=1")) + (bash (assoc-ref %build-inputs "bash"))) + `(,(string-append "CONFIG_SHELL=" bash "/bin/sh") + ,(string-append "CPPFLAGS=" cppflags) + "AR=tcc -ar" + "CXX=false" + "RANLIB=true" + ,(string-append "CC=tcc" cppflags) + "--disable-nls" "--disable-shared" "--disable-werror" - "--build=i386-unknown-linux" - "--host=i386-unknown-linux" - "--target=i386-unknown-linux" - "--with-sysroot=/" - ,(string-append "--prefix=" out))) - #:phases - (modify-phases %standard-phases - (add-before 'configure 'setenv - (lambda _ - (let* ((out (assoc-ref %outputs "out")) - (bash (assoc-ref %build-inputs "bash")) - (shell (string-append bash "/bin/bash"))) - (setenv "CONFIG_SHELL" shell) - (setenv "SHELL" shell) - (setenv "AR" "tcc -ar") - (setenv "RANLIB" "true") - (setenv "CC" "tcc -D __GLIBC_MINOR__=6")))) - (add-after 'unpack 'scripted-patch - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "bfd/configure" - (("^sed -e '/SRC-POTFILES.*" all) - "echo -e 'all:\\n\\ttrue\\n\\ninstall:\\n\\ttrue\\n' > po/Makefile\n")))) - (replace 'configure ; needs classic invocation of configure - (lambda* (#:key configure-flags #:allow-other-keys) - (format (current-error-port) - "running ./configure ~a\n" (string-join configure-flags)) - (apply system* "./configure" configure-flags) - (substitute* "config.status" - (("[.]//dev/null") "/dev/null")) - (invoke "sh" "./config.status")))))))) + "--build=i686-unknown-linux-gnu" + "--host=i686-unknown-linux-gnu" + "--with-sysroot=/")))))) (define gcc-core-mesboot0 ;; Gcc-2.95.3 is the most recent GCC that is supported by what the Mes C @@ -1169,7 +1011,6 @@ ac_cv_c_float_format='IEEE (little-endian)' (define (%boot-mesboot-core-inputs) `(("binutils" ,binutils-mesboot0) - ("gawk" ,gawk-mesboot0) ("gcc" ,gcc-core-mesboot0) ,@(alist-delete "tcc" (%boot-tcc-inputs)))) @@ -1200,72 +1041,6 @@ ac_cv_c_float_format='IEEE (little-endian)' (copy-recursively "include" out) (copy-recursively headers out))))))))) -(define gawk-mesboot0 - ;; The initial Gawk. - (package - (inherit gawk) - (name "gawk-mesboot0") - (version "3.0.0") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/gawk/gawk-" - version ".tar.gz")) - (sha256 - (base32 - "087s7vpc8zawn3l7bwv9f44bf59rc398hvaiid63klw6fkbvabr3")))) - (supported-systems '("i686-linux" "x86_64-linux")) - (inputs '()) - (propagated-inputs '()) - (native-inputs (%boot-tcc-inputs)) - (arguments - `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile - #:configure-flags '("--build=i686-unknown-linux-gnu" - "--host=i686-unknown-linux-gnu" - "--disable-nls") - #:make-flags '("gawk") - #:parallel-build? #f - #:parallel-tests? #f - #:strip-binaries? #f ; no strip yet - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'scripted-patch - (lambda _ - (substitute* "Makefile.in" - (("date ") "echo today ") - ((" autoheader") "true") - ((" -lm ") " ")) - (substitute* "test/Makefile.in" - (("^bigtest:.*") "bigtest: basic\n") - (("( |\t)(childin|convfmt|fflush|longwrds|math|negexp)" all sep) sep)))) - (add-before 'configure 'setenv - (lambda _ - (let* ((out (assoc-ref %outputs "out")) - (bash (assoc-ref %build-inputs "bash")) - (shell (string-append bash "/bin/bash"))) - (setenv "CONFIG_SHELL" shell) - (setenv "SHELL" shell) - (setenv "CC" "tcc") - (setenv "CPP" "tcc -E") - (setenv "LD" "tcc") - (setenv "ac_cv_func_getpgrp_void" "yes") - (setenv "ac_cv_func_tzset" "yes")))) - (replace 'configure ; needs classic invocation of configure - (lambda* (#:key configure-flags #:allow-other-keys) - (let* ((out (assoc-ref %outputs "out")) - (configure-flags - `(,@configure-flags - ,(string-append "--prefix=" out)))) - (format (current-error-port) "running ./configure ~a\n" (string-join configure-flags)) - (system* "touch" "configure") ; aclocal.m4 is newer than configure - (apply invoke (cons "./configure" configure-flags))))) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin"))) - (install-file "gawk" bin) - (symlink "gawk" (string-append bin "/awk")))))))))) - (define glibc-mesboot0 ;; GNU C Library 2.2.5 is the most recent glibc that we managed to build ;; using gcc-2.95.3. Newer versions (2.3.x, 2.6, 2.1x) seem to need a newer @@ -1410,97 +1185,6 @@ ac_cv_c_float_format='IEEE (little-endian)' ("libc" ,glibc-mesboot0) ,@(alist-delete "gcc" (%boot-mesboot-core-inputs)))) -(define tar-mesboot - ;; Initial tar with support for xz compression. - (package - (inherit tar) - (name "tar-mesboot") - (version "1.22") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/tar/tar-" - version ".tar.gz")) - (sha256 - (base32 - "19nvix64y95n5v6rr5g9g3fn08zz85cb5anzd7csfv4a4sz9lw4y")))) - (supported-systems '("i686-linux" "x86_64-linux")) - (inputs '()) - (propagated-inputs '()) - (native-inputs (%boot-mesboot0-inputs)) - (arguments - `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile - #:parallel-build? #f - #:tests? #f ; check is naive, also checks non-built PROGRAMS - #:strip-binaries? #f ; no strip yet - #:configure-flags '("--build=i686-unknown-linux-gnu" - "--host=i686-unknown-linux-gnu" - "--disable-nls") - #:phases - (modify-phases %standard-phases - (replace 'configure - (lambda* (#:key configure-flags #:allow-other-keys) - (let* ((out (assoc-ref %outputs "out")) - (bash (assoc-ref %build-inputs "bash")) - (shell (string-append bash "/bin/bash"))) - (setenv "CONFIG_SHELL" shell) - (setenv "SHELL" shell) - (setenv "LIBS" "-lc -lnss_files -lnss_dns -lresolv") - (setenv "gl_cv_func_rename_dest_works" "yes") - (format (current-error-port) - "running ./configure ~a\n" (string-join configure-flags)) - (apply invoke (cons "./configure" configure-flags))))) - (add-after 'unpack 'scripted-patch - (lambda _ - (let* ((bash (assoc-ref %build-inputs "bash")) - (shell (string-append bash "/bin/bash"))) - (substitute* "configure" - ((" /bin/sh") shell))) - (substitute* "Makefile.in" - (("^SUBDIRS = doc") "SUBDIRS =")))) - (replace 'install - (lambda _ - (let* ((out (assoc-ref %outputs "out")) - (bin (string-append out "/bin"))) - (install-file "src/tar" bin))))))))) - -(define grep-mesboot - ;; The initial grep. - (package - (inherit grep) - (name "grep-mesboot") - (version "2.0") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/grep/grep-" - version ".tar.gz")) - (sha256 - (base32 - "1w862l80lgc5mxvpiy4cfwk761d6xxavn0m3xd2l7xs2kmzvp6lq")))) - (supported-systems '("i686-linux" "x86_64-linux")) - (inputs '()) - (propagated-inputs '()) - (native-inputs (%boot-mesboot0-inputs)) - (arguments - `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile - #:parallel-build? #f - #:phases - (modify-phases %standard-phases - (add-before 'configure 'patch-configure - (lambda _ - (let* ((bash (assoc-ref %build-inputs "bash")) - (shell (string-append bash "/bin/bash"))) - (substitute* "configure" - ((" [|][|] ./config.status") " || sh ./config.status"))))) - (replace 'install - (lambda _ - (let* ((out (assoc-ref %outputs "out")) - (bin (string-append out "/bin"))) - (install-file "grep" bin) - (symlink "grep" (string-append bin "/egrep")) - (symlink "grep" (string-append bin "/fgrep")))))))))) - (define binutils-mesboot1 (package (inherit binutils-mesboot0) @@ -1516,46 +1200,7 @@ ac_cv_c_float_format='IEEE (little-endian)' "--build=i686-unknown-linux-gnu" "--host=i686-unknown-linux-gnu" "--with-sysroot=/" - ,(string-append "--prefix=" out)))) - ((#:phases phases) - `(modify-phases ,phases - (replace 'setenv - (lambda _ - (let* ((out (assoc-ref %outputs "out")) - (bash (assoc-ref %build-inputs "bash")) - (shell (string-append bash "/bin/bash"))) - (setenv "CONFIG_SHELL" shell)))))))))) - -(define coreutils-mesboot0 - (package - (inherit coreutils) - (name "coreutils-mesboot0") - ;; The latest .gz release of Coreutils is 8.13; which does not build with gcc-2.95.3: - ;; randperm.c: In function `sparse_swap': - ;; randperm.c:117: invalid lvalue in unary `&' - (version "5.0") ; 2003-04 - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/coreutils/coreutils-" - version ".tar.gz")) - (sha256 - (base32 - "10wq6k66i8adr4k08p0xmg87ff4ypiazvwzlmi7myib27xgffz62")))) - (native-inputs (%boot-mesboot0-inputs)) - (supported-systems '("i686-linux" "x86_64-linux")) - (inputs '()) - (propagated-inputs '()) - (arguments - `(#:implicit-inputs? #f - #:tests? #f ; WARNING: `perl' is needed, ... - #:parallel-build? #f - #:strip-binaries? #f ; strip: unrecognized option `--only-keep-debug' - #:guile ,%bootstrap-guile - #:configure-flags - '("--disable-doc" - "LIBS=-lc -lnss_files -lnss_dns -lresolv" - "ac_cv_func_gethostbyname=no" - "gl_cv_func_rename_dest_works=yes"))))) + ,(string-append "--prefix=" out)))))))) (define gnu-make-mesboot (package @@ -1589,150 +1234,11 @@ ac_cv_c_float_format='IEEE (little-endian)' (bin (string-append out "/bin"))) (install-file "make" bin))))))))) -(define gawk-mesboot - (package - (inherit gawk) - (name "gawk-mesboot") - (version "3.1.8") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/gawk/gawk-" - version ".tar.gz")) - (sha256 - (base32 - "03d5y7jabq7p2s7ys9alay9446mm7i5g2wvy8nlicardgb6b6ii1")))) - (native-inputs `(,@(%boot-mesboot0-inputs) - ("mesboot-headers" ,mesboot-headers))) - (supported-systems '("i686-linux" "x86_64-linux")) - (inputs '()) - (propagated-inputs '()) - (arguments - `(#:implicit-inputs? #f - #:parallel-build? #f - #:guile ,%bootstrap-guile - #:configure-flags '("ac_cv_func_connect=no") - #:make-flags '("gawk") - #:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ - (invoke "./gawk" "--version"))) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin"))) - (install-file "gawk" bin) - (symlink "gawk" (string-append bin "/awk")))))))))) - -(define sed-mesboot - (package - (inherit sed) - (name "sed-mesboot") - (version "4.0.6") ; 2003-04 - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/sed/sed-" - version ".tar.gz")) - (sha256 - (base32 - "0861ij94cqc4vaaki6r2wlapwcmhpx4ggp4r70f46mb21a8fkvf1")))) - (native-inputs (%boot-mesboot0-inputs)) - (supported-systems '("i686-linux" "x86_64-linux")) - (inputs '()) - (propagated-inputs '()) - (arguments - `(#:implicit-inputs? #f - #:parallel-build? #f - #:guile ,%bootstrap-guile - #:tests? #f ; 8to7 fails - #:phases - (modify-phases %standard-phases - (add-after 'unpack '/bin/sh - (lambda _ - (let* ((bash (assoc-ref %build-inputs "bash")) - (shell (string-append bash "/bin/bash"))) - (substitute* "testsuite/Makefile.tests" - (("^SHELL = /bin/sh") - (string-append "SHELL = " shell))))))))))) - -(define bash-mesboot - (package - (inherit bash-mesboot0) - (version "4.4") - (name "bash-mesboot") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/bash/bash-" - version ".tar.gz")) - (sha256 - (base32 - "1jyz6snd63xjn6skk7za6psgidsd53k05cr3lksqybi0q6936syq")))) - (inputs '()) - (propagated-inputs '()) - (native-inputs (%boot-mesboot0-inputs)) - (outputs '("out")) - (arguments - `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile - #:parallel-build? #f - #:configure-flags - '("--build=i686-unknown-linux-gnu" - "--host=i686-unknown-linux-gnu" - - "--without-bash-malloc" - "--disable-readline" - "--disable-history" - "--disable-help-builtin" - "--disable-progcomp" - "--disable-net-redirections" - "--disable-nls" - - ;; Pretend 'dlopen' is missing so we don't build loadable - ;; modules and related code. - "ac_cv_func_dlopen=no") - #:make-flags '("bash") - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'scripted-patch - (lambda _ - (substitute* "shell.c" - ((";;") ";")))) - (add-before 'configure 'setenv - (lambda _ - (setenv "AWK" "gawk") - (setenv "LIBS" "-lc -lnss_files -lnss_dns -lresolv") - (setenv "gl_cv_func_rename_dest_works" "yes"))) - (add-after 'configure 'configure-fixups - (lambda _ - (let ((config.h (open-file "config.h" "a"))) - (display (string-append " -#define enable_hostname_completion(on_or_off) 0 -") - config.h) - (close config.h)))) - (replace 'check - (lambda _ - (invoke "./bash" "--version"))) - (replace 'install - (lambda _ - (let* ((out (assoc-ref %outputs "out")) - (bin (string-append out "/bin"))) - (mkdir-p bin) - (copy-file "bash" (string-append bin "/bash")) - (copy-file "bash" (string-append bin "/sh")))))))))) - (define (%boot-mesboot1-inputs) - `(("bash" ,bash-mesboot) - ("binutils" ,binutils-mesboot1) - ("coreutils" ,coreutils-mesboot0) - ("gawk" ,gawk-mesboot) - ("grep" ,grep-mesboot) + `(("binutils" ,binutils-mesboot1) ("make" ,gnu-make-mesboot) - ("sed" ,sed-mesboot) - ("tar" ,tar-mesboot) ,@(fold alist-delete (%boot-mesboot0-inputs) - '("bash" "binutils" "bootar" "coreutils" "gash" - "gawk" "grep" "guile" "make" "sed" "tar")))) + '("binutils" "make")))) (define gmp-boot (let ((version "4.3.2")) @@ -1926,57 +1432,22 @@ ac_cv_c_float_format='IEEE (little-endian)' `(("gcc" ,gcc-mesboot1) ,@(alist-delete "gcc" (%boot-mesboot1-inputs)))) -(define xz-mesboot - ;; Finally, we can build xz. - (package - (inherit xz) - (name "xz-mesboot") - (version "5.0.0") - (source (bootstrap-origin - (origin - (method url-fetch) - (uri (list (string-append "http://tukaani.org/xz/xz-" version - ".tar.gz") - (string-append "http://multiprecision.org/guix/xz-" - version ".tar.gz"))) - (sha256 - (base32 - "0kf40ggbs1vaaj5s9k4csycahzqcf65n20pa6lngqhm6j0cj3agb"))))) - (supported-systems '("i686-linux" "x86_64-linux")) - (inputs '()) - (outputs '("out")) - (propagated-inputs '()) - (native-inputs (%boot-mesboot2-inputs)) - (arguments - `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile - #:parallel-build? #f - #:configure-flags - `("--disable-assembler" - "--disable-shared" - "--enable-small" - "--disable-threads" - "--disable-xzdec" - "--disable-lzmadec" - "--disable-lzmainfo" - "--disable-lzma-links" - "--disable-scripts" - "--disable-doc" - "--disable-nls" - "--disable-symbol-versions" - ;; configure disqualifies BASH, CPP, GCC and GREP - ;; all of which seem fine for the build - "ac_cv_prog_cc_c99=-std=gnu9x" - "ac_cv_path_GREP=grep" - "gl_cv_posix_shell=bash" - "ac_cv_have_decl_optreset=no" - "CPPFLAGS=-D__GNUC__=1"))))) - (define hello-mesboot - ;; Check for Scheme-only bootstrap. + ;; Check for Scheme-only bootstrap. Note that newer versions of Hello + ;; break due to the way that newer versions of Gnulib handle + ;; "limits.h". Hence, we stick to 2.10. (package (inherit hello) (name "hello-mesboot") + (version "2.10") + (source + (origin + (inherit (package-source hello)) + (uri (string-append "mirror://gnu/hello/hello-" version + ".tar.gz")) + (sha256 + (base32 + "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i")))) (supported-systems '("i686-linux" "x86_64-linux")) (inputs '()) (propagated-inputs '()) @@ -1996,76 +1467,51 @@ ac_cv_c_float_format='IEEE (little-endian)' (define binutils-mesboot (package - (inherit binutils) + (inherit binutils-mesboot1) (name "binutils-mesboot") - (version "2.20.1a") - (source (bootstrap-origin - (origin - (method url-fetch) - (uri (string-append "mirror://gnu/binutils/binutils-" - version ".tar.bz2")) - (patches (search-patches "binutils-boot-2.20.1a.patch")) - (sha256 - (base32 - "0r7dr0brfpchh5ic0z9r4yxqn4ybzmlh25sbp30cacqk8nb7rlvi"))))) + (native-inputs (%boot-mesboot2-inputs)))) + +;; Sadly we have to introduce Gawk here. The "versions.awk" script of +;; glibc 2.16.0 is too complicated for Gash-Utils. This is the version +;; of Gawk used previously during bootstrap. It's possible that a newer +;; version would work, too, but this one was already ready to go. +(define gawk-mesboot + (package + (inherit gawk) + (name "gawk-mesboot") + (version "3.1.8") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/gawk/gawk-" + version ".tar.gz")) + (sha256 + (base32 + "03d5y7jabq7p2s7ys9alay9446mm7i5g2wvy8nlicardgb6b6ii1")))) + (native-inputs (%boot-mesboot2-inputs)) + (supported-systems '("i686-linux" "x86_64-linux")) (inputs '()) (propagated-inputs '()) - (native-inputs `(("xz" ,xz-mesboot) - ,@(%boot-mesboot2-inputs))) - (supported-systems '("i686-linux" "x86_64-linux")) (arguments `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile - #:tests? #f ; runtest: command not found #:parallel-build? #f - #:strip-binaries? #f ; no strip yet - #:configure-flags - `("CC=gcc" - "CXX=false" - "RANLIB=true" - "--disable-doc" - "--disable-nls" - "--disable-shared" - "--disable-werror" - "--build=i686-unknown-linux-gnu" - "--host=i686-unknown-linux-gnu" - "--with-sysroot=/" - ;; checking for grep that handles long lines and -e - "ac_cv_path_GREP=grep") - ;; FIXME: ac_cv_path_GREP=grep doesn't seem to be forwarded to - ;; cascading configure's? - #:make-flags '("ac_cv_path_GREP=grep") + #:guile ,%bootstrap-guile + #:configure-flags '("ac_cv_func_connect=no") + #:make-flags '("gawk") #:phases (modify-phases %standard-phases - (add-after 'unpack 'scripted-patch + (replace 'check (lambda _ - ;; sed-mesboot0 cannot build these - (copy-file "binutils/Makefile.in" "binutils/Makefile.in.orig") - (substitute* "binutils/Makefile.in" - ;; binutils/binutils uses an amazingly complex install - ;; command, using FOR, SED, READ, IF, ECHO, SED, SED, AWK, - ;; READ, and then LIBTOOL (to do something like - ;; `mkdir $DESTDIR$bindir; cp readline $DESTDIR$bindir ...') - - ;; Some tool [debugme!] cannot handle two escaped newlines - ;; (bash?), and the install stops after $(am__EXEEXT_11) - ;; ("objcopy"), so $(am__EXEEXT_13) ("readelf") and others do - ;; not get installed. Remove the stray newline: - (("^\t@BUILD_NLMCONV@ @BUILD_SRCONV@ @BUILD_DLLTOOL@ @BUILD_WINDRES@ .*") "")) - (substitute* "opcodes/Makefile.in" - (("^SUBDIRS = [.] po") "SUBDIRS = .")) - (substitute* "binutils/Makefile.in" - (("^SUBDIRS = doc po") "SUBDIRS =")) - (substitute* "gas/Makefile.in" - (("^SUBDIRS = doc po") "SUBDIRS =")) - (substitute* "gprof/Makefile.in" - (("^SUBDIRS = po") "SUBDIRS =")) - (substitute* "ld/Makefile.in" - (("^SUBDIRS = po") "SUBDIRS ="))))))))) + (invoke "./gawk" "--version"))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin"))) + (install-file "gawk" bin) + (symlink "gawk" (string-append bin "/awk")))))))))) (define (%boot-mesboot3-inputs) `(("binutils" ,binutils-mesboot) - ("xz" ,xz-mesboot) + ("gawk" ,gawk-mesboot) ,@(alist-delete "binutils" (%boot-mesboot2-inputs)))) (define glibc-headers-mesboot @@ -2142,6 +1588,11 @@ ac_cv_c_float_format='IEEE (little-endian)' (out (assoc-ref outputs "out"))) (apply invoke "make" make-flags) (copy-recursively kernel-headers out)))) + (add-before 'configure 'remove-bashism + (lambda _ + (substitute* "sysdeps/unix/make-syscalls.sh" + (("\\$[{]vdso_symver//\\./_[}]") + "$(echo $vdso_symver | sed -e 's/\\./_/g')")))) (replace 'configure (lambda* (#:key configure-flags #:allow-other-keys) (format (current-error-port) "running ../configure ~a\n" @@ -2187,6 +1638,17 @@ SHELL := " shell " (list (string-append "SHELL=" bash "/bin/sh")))) ((#:phases phases) #~(modify-phases #$phases + (add-after 'unpack 'simplify-intl-tests + (lambda _ + ;; The bootstrap Guile (2.0.9) crashes trying to + ;; perform a regex on non-ASCII text. This gets + ;; triggered by 'intl/po2test.sed' running over + ;; 'po/de.po'. If we ever remove the bootstrap + ;; Guile or add pure-Scheme regex to Gash, this can + ;; be removed. + (substitute* '("catgets/Makefile" + "intl/Makefile") + (("de\\.po") "en_GB.po")))) (replace 'install (lambda* (#:key outputs make-flags #:allow-other-keys) (let* ((kernel-headers (assoc-ref %build-inputs "kernel-headers")) @@ -2208,8 +1670,8 @@ SHELL := " shell " (name "gcc-mesboot1-wrapper") (source #f) (inputs '()) - (native-inputs `(("bash" ,bash-mesboot) - ("coreutils" ,coreutils-mesboot0) + (native-inputs `(("bash" ,gash-boot) + ("coreutils" ,gash-utils-boot) ("libc" ,glibc-mesboot) ("gcc" ,gcc-mesboot1))) (arguments @@ -2347,8 +1809,8 @@ exec " gcc "/bin/" program (version (package-version gcc-mesboot)) (source #f) (inputs '()) - (native-inputs `(("bash" ,bash-mesboot) - ("coreutils" ,coreutils-mesboot0) + (native-inputs `(("bash" ,gash-boot) + ("coreutils" ,gash-utils-boot) ("libc" ,glibc-mesboot) ("gcc" ,gcc-mesboot))))) @@ -2357,24 +1819,59 @@ exec " gcc "/bin/" program ("gcc" ,gcc-mesboot) ,@(fold alist-delete (%boot-mesboot4-inputs) '("gcc" "gcc-wrapper")))) -(define coreutils-mesboot +(define (mesboot-package name pkg) (package - (inherit coreutils) - (name "coreutils-mesboot") - (source (bootstrap-origin (package-source coreutils))) + (inherit pkg) + (name name) + (source (bootstrap-origin (package-source pkg))) (native-inputs (%boot-mesboot5-inputs)) (supported-systems '("i686-linux" "x86_64-linux")) (inputs '()) (propagated-inputs '()) (arguments - `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile - #:tests? #f)))) + (ensure-keyword-arguments (package-arguments pkg) + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:tests? #f))))) + +;; These packages are needed to complete the rest of the bootstrap. +;; In the future, Gash et al. could handle it directly, but it's not +;; ready yet. +(define bash-mesboot (mesboot-package "bash-mesboot" static-bash)) +(define coreutils-mesboot (mesboot-package "coreutils-mesboot" coreutils)) +(define grep-mesboot (mesboot-package "grep-mesboot" grep)) +(define sed-mesboot (mesboot-package "sed-mesboot" sed)) + +;; The XZ implementation in Bootar cannot decompress 'tar'. +(define xz-mesboot + (let ((pkg (mesboot-package "xz-mesboot" xz))) + (package + (inherit pkg) + (arguments + (ensure-keyword-arguments (package-arguments pkg) + ;; XXX: This fails even though the + ;; actual runpaths seem fine. + `(#:validate-runpath? #f)))))) + +;; We don't strictly need Tar here, but it allows us to get rid of +;; Bootar and Gash-Utils and continue with the standard GNU tools. +(define tar-mesboot + (let ((pkg (mesboot-package "tar-mesboot" tar))) + (package + (inherit pkg) + (native-inputs + `(("xz" ,xz-mesboot) + ,@(package-native-inputs pkg)))))) (define (%boot-mesboot6-inputs) - `(("coreutils" ,coreutils-mesboot) + `(("bash" ,bash-mesboot) + ("coreutils" ,coreutils-mesboot) + ("grep" ,grep-mesboot) + ("sed" ,sed-mesboot) + ("tar" ,tar-mesboot) + ("xz" ,xz-mesboot) ,@(fold alist-delete (%boot-mesboot5-inputs) - '("coreutils" "kernel-headers")))) + '("bash" "coreutils" "bootar" "kernel-headers")))) (define (%bootstrap-inputs+toolchain) ;; The traditional bootstrap-inputs. For the i686-linux, x86_64-linux @@ -2545,6 +2042,7 @@ exec " gcc "/bin/" program #:implicit-inputs? #f #:guile ,%bootstrap-guile #:configure-flags '("--disable-bzlib") + #:make-flags '("CFLAGS+=-std=c11") #:strip-binaries? #f #:validate-runpath? #f ,@(package-arguments file))))) @@ -3150,8 +2648,7 @@ memoized as a function of '%current-system'." `(,@(%boot0-inputs) ("expat" ,expat-sans-tests))) ;remove OpenSSL, zlib, etc. (native-inputs ;and pkg-config - `(("sitecustomize.py" ,(local-file (search-auxiliary-file - "python/sitecustomize.py"))))) + `()) (arguments `(#:implicit-inputs? #f #:guile ,%bootstrap-guile @@ -3177,6 +2674,13 @@ memoized as a function of '%current-system'." ;; Prevent the 'ossaudiodev' extension from being ;; built, since it requires Linux headers. (("'linux', ") "")))) + (add-after 'install 'remove-tests + (lambda* (#:key outputs #:allow-other-keys) + (delete-file-recursively + (string-append (assoc-ref outputs "out") + "/lib/python" + ,(version-major+minor version) + "/test")))) ,@(if (hurd-system?) `((add-before 'build 'fix-regen (lambda* (#:key inputs #:allow-other-keys) @@ -3184,11 +2688,14 @@ memoized as a function of '%current-system'." (substitute* "Lib/plat-generic/regen" (("/usr/include/") (string-append libc "/include/"))))))) - '()) - (add-after 'install 'install-sitecustomize.py - ,(customize-site version))))) + '())))) (native-search-paths - (list (guix-pythonpath-search-path version))))) + (list (search-path-specification + (variable "PYTHONPATH") + (files (list (string-append + "lib/python" + (version-major+minor version) + "/site-packages")))))))) (define/system-dependent ld-wrapper-boot0 ;; The first 'ld' wrapper, defined with 'define/system-dependent' because diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm index 382fe348a0..88c6979464 100644 --- a/gnu/packages/compression.scm +++ b/gnu/packages/compression.scm @@ -35,6 +35,7 @@ ;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com> ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2021 Ahmad Jarara <git@ajarara.io> +;;; Copyright © 2022 Greg Hogan <code@greghogan.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -233,43 +234,28 @@ adding and extracting files to/from a tar archive.") (define-public gzip (package (name "gzip") - (version "1.10") + (version "1.12") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/gzip/gzip-" version ".tar.xz")) (sha256 (base32 - "1h6p374d3j8d4cdfydzls021xa2yby8myc0h8d6m8bc7k6ncq9c4")))) + "0mhrx5wk9gazmxdw7vmbpg036yzqqhsww6h12kwf2dzn37jh6pnf")))) (build-system gnu-build-system) (synopsis "General file (de)compression (using lzw)") (arguments ;; FIXME: The test suite wants `less', and optionally Perl. '(#:tests? #f + #:configure-flags '("ac_cv_prog_LESS=\"less\"") #:phases (modify-phases %standard-phases - (add-after 'unpack 'patch-for-glibc-2.28 - (lambda _ - ;; Adjust the bundled gnulib to work with glibc 2.28. See e.g. - ;; "m4-gnulib-libio.patch". This is a phase rather than patch - ;; or snippet to work around <https://bugs.gnu.org/32347>. - (substitute* (find-files "lib" "\\.c$") - (("#if defined _IO_ftrylockfile") - "#if defined _IO_EOF_SEEN")) - (substitute* "lib/stdio-impl.h" - (("^/\\* BSD stdio derived implementations") - (string-append "#if !defined _IO_IN_BACKUP && defined _IO_EOF_SEEN\n" - "# define _IO_IN_BACKUP 0x100\n" - "#endif\n\n" - "/* BSD stdio derived implementations"))) - #t)) (add-after 'unpack 'use-absolute-name-of-gzip (lambda* (#:key outputs #:allow-other-keys) (substitute* "gunzip.in" - (("exec gzip") + (("exec 'gzip'") (string-append "exec " (assoc-ref outputs "out") - "/bin/gzip"))) - #t))))) + "/bin/gzip")))))))) (description "GNU Gzip provides data compression and decompression utilities; the typical extension is \".gz\". Unlike the \"zip\" format, it compresses a single @@ -1579,28 +1565,21 @@ or junctions, and always follows hard links.") (define-public zstd (package (name "zstd") - (version "1.5.0") + (version "1.5.2") (source (origin (method url-fetch) (uri (string-append "https://github.com/facebook/zstd/releases/download/" "v" version "/zstd-" version ".tar.gz")) (sha256 - (base32 "150y541303vnvfhd8wkbih00lfvvm98rd12yijwlbkqzg3xgp52i")))) + (base32 "1l1zm1imcc2ixayykyh4y421shdj3pzp7g2xm2k2js8jmipxahkw")))) (build-system gnu-build-system) - (outputs '("out" ;1.2MiB executables and documentation + (outputs '("out" ;1.5MiB executables and documentation "lib" ;1.2MiB shared library and headers "static")) ;1.2MiB static library (arguments `(#:phases (modify-phases %standard-phases - (add-after 'unpack 'remove-bogus-check - (lambda _ - ;; lib/Makefile falsely claims that no .pc file can be created. - (substitute* "lib/Makefile" - (("error configured .*dir ") - "true ")) - #t)) (add-after 'unpack 'patch-command-file-names ;; Don't require hard requirements to be in $PATH. (lambda* (#:key outputs #:allow-other-keys) diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm index 005ec15f11..bd5e06a9a5 100644 --- a/gnu/packages/cups.scm +++ b/gnu/packages/cups.scm @@ -38,6 +38,7 @@ #:use-module (gnu packages groff) #:use-module (gnu packages image) #:use-module (gnu packages libusb) + #:use-module (gnu packages linux) #:use-module (gnu packages pdf) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) @@ -52,6 +53,7 @@ #:use-module (guix build-system gnu) #:use-module (guix build-system python) #:use-module (guix download) + #:use-module (guix gexp) #:use-module (guix git-download) #:use-module (guix gexp) #:use-module ((guix licenses) #:prefix license:) @@ -128,109 +130,102 @@ driver is known to work with these printers: (define-public cups-filters (package (name "cups-filters") - (version "1.28.9") - (source(origin - (method url-fetch) - (uri - (string-append "https://openprinting.org/download/cups-filters/" - "cups-filters-" version ".tar.xz")) - (sha256 - (base32 - "1bk0x1rrb8wqbhh5c979ppgy6s2kqss8mjdlahgcjvd79wm3fs9g")) - (modules '((guix build utils))) - (snippet - ;; install backends, banners and filters to cups-filters output - ;; directory, not the cups server directory - '(begin - (substitute* "Makefile.in" - (("CUPS_DATADIR = @CUPS_DATADIR@") - "CUPS_DATADIR = $(PREFIX)/share/cups") - (("pkgcupsserverrootdir = \\$\\(CUPS_SERVERROOT\\)") - "pkgcupsserverrootdir = $(PREFIX)") - ;; Choose standard directories notably so that binaries are - ;; stripped. - (("pkgbackenddir = \\$\\(CUPS_SERVERBIN\\)/backend") - "pkgbackenddir = $(PREFIX)/lib/cups/backend") - (("pkgfilterdir = \\$\\(CUPS_SERVERBIN\\)/filter") - "pkgfilterdir = $(PREFIX)/lib/cups/filter")) - ;; Find bannertopdf data such as the print test page in our - ;; output directory, not CUPS's prefix. - (substitute* "configure" - (("\\{CUPS_DATADIR\\}/data") - "{prefix}/share/cups/data")) - #t)))) + (version "1.28.15") + (source + (origin + (method url-fetch) + (uri + (string-append "https://openprinting.org/download/cups-filters/" + "cups-filters-" version ".tar.xz")) + (sha256 + (base32 "12s7s2jgnh4q7ws7r2is6xp3pqq818jhnm4vpyzyywmvkxvfq1x9")) + (modules '((guix build utils))) + (snippet + ;; Install backends, banners and filters to cups-filters output + ;; directory, not the cups server directory. + #~(begin + (substitute* "Makefile.in" + (("CUPS_DATADIR = @CUPS_DATADIR@") + "CUPS_DATADIR = $(PREFIX)/share/cups") + (("pkgcupsserverrootdir = \\$\\(CUPS_SERVERROOT\\)") + "pkgcupsserverrootdir = $(PREFIX)") + ;; Choose standard directories notably so that binaries are + ;; stripped. + (("^pkg(.*)dir = \\$\\(CUPS_SERVERBIN\\)/(.*)" _ type suffix) + (format #f "pkg~adir = $(PREFIX)/lib/cups/~a" type suffix))) + ;; Find bannertopdf data such as the print test page in our + ;; output directory, not CUPS's prefix. + (substitute* "configure" + (("\\{CUPS_DATADIR\\}/data") + "{prefix}/share/cups/data")))))) (build-system gnu-build-system) (arguments - `(#:make-flags (list (string-append "PREFIX=" %output)) - #:configure-flags - `("--disable-driverless" ; TODO: enable this - "--disable-mutool" ; depends on yet another PDF library (mupdf) - - ;; Look for the "domain socket of CUPS" in /var/run/cups. - "--localstatedir=/var" - - ;; Free software for the win. - "--with-acroread-path=evince" - - ,(string-append "--with-test-font-path=" - (assoc-ref %build-inputs "font-dejavu") - "/share/fonts/truetype/DejaVuSans.ttf") - ,(string-append "--with-gs-path=" - (assoc-ref %build-inputs "ghostscript") - "/bin/gsc") - ,(string-append "--with-shell=" - (assoc-ref %build-inputs "bash") - "/bin/bash") - ,(string-append "--with-rcdir=" - (assoc-ref %outputs "out") "/etc/rc.d")) - - #:phases (modify-phases %standard-phases - (add-after 'unpack 'patch-foomatic-hardcoded-file-names - (lambda* (#:key inputs outputs #:allow-other-keys) - ;; Foomatic has hardcoded file names we need to fix. - (let ((out (assoc-ref outputs "out")) - (gs (assoc-ref inputs "ghostscript"))) - (substitute* "filter/foomatic-rip/foomaticrip.c" - (("/usr/local/lib/cups/filter") - (string-append out "/lib/cups/filter"))) - #t))) - (add-after 'install 'wrap-filters - (lambda* (#:key inputs outputs #:allow-other-keys) - ;; Some filters expect to find things in $PATH. We cannot - ;; just hard-code all absolute file names in the source - ;; because foomatic-rip, for example, has tests like - ;; 'startswith(cmd, "gs")'. - (let ((out (assoc-ref outputs "out")) - (ghostscript (assoc-ref inputs "ghostscript")) - (grep (assoc-ref inputs "grep"))) - (for-each (lambda (file) - (wrap-program file - `("PATH" ":" prefix - (,(string-append ghostscript "/bin:" - grep "/bin"))))) - (find-files (string-append - out "/lib/cups/filter"))) - #t)))))) + (list #:make-flags + #~(list (string-append "PREFIX=" #$output)) + #:configure-flags + #~(list "--disable-mutool" ; needs yet another PDF library (mupdf) + + ;; Look for the "domain socket of CUPS" in /var/run/cups. + "--localstatedir=/var" + + ;; Free software for the win. + "--with-acroread-path=evince" + + (string-append "--with-test-font-path=" + #$(this-package-input "font-dejavu") + "/share/fonts/truetype/DejaVuSans.ttf") + (string-append "--with-gs-path=" + #$(this-package-input "ghostscript-with-cups") + "/bin/gsc") + (string-append "--with-shell=" + (assoc-ref %build-inputs "bash") + "/bin/bash") + (string-append "--with-rcdir=" + #$output "/etc/rc.d")) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-foomatic-hardcoded-file-names + (lambda _ + ;; Foomatic has hard-coded file names we need to fix. + (substitute* "filter/foomatic-rip/foomaticrip.c" + (("/usr/local(/lib/cups/filter)" _ file) + (string-append #$output file))))) + (add-after 'install 'wrap-filters + (lambda _ + ;; Some filters expect to find things in $PATH. We cannot + ;; just hard-code all absolute file names in the source + ;; because foomatic-rip, for example, has tests like + ;; 'startswith(cmd, "gs")'. + (for-each + (lambda (file) + (wrap-program file + `("PATH" ":" prefix + (,(string-append + #$(this-package-input "ghostscript-with-cups") + "/bin:" + #$(this-package-input "grep") "/bin"))))) + (find-files (string-append #$output + "/lib/cups/filter")))))))) (native-inputs - (list `(,glib "bin") ; for gdbus-codegen + (list `(,glib "bin") ; for gdbus-codegen pkg-config)) (inputs - `(("avahi" ,avahi) - ("fontconfig" ,fontconfig) - ("freetype" ,freetype) - ("font-dejavu" ,font-dejavu) ; also needed by test suite - ("ghostscript" ,ghostscript/cups) - ("grep" ,grep) - ("ijs" ,ijs) - ("dbus" ,dbus) - ("lcms" ,lcms) - ("libjpeg" ,libjpeg-turbo) - ("libpng" ,libpng) - ("libtiff" ,libtiff) - ("glib" ,glib) - ("qpdf" ,qpdf) - ("poppler" ,poppler) - ("cups-minimal" ,cups-minimal))) + (list avahi + fontconfig + freetype + font-dejavu ; also needed by test suite + ghostscript/cups + grep + ijs + dbus + lcms + libjpeg-turbo + libpng + libtiff + glib + qpdf + poppler + cups-minimal)) (home-page "https://wiki.linuxfoundation.org/openprinting/cups-filters") (synopsis "OpenPrinting CUPS filters and backends") (description @@ -253,84 +248,84 @@ filters for the PDF-centric printing workflow introduced by OpenPrinting.") (define-public cups-minimal (package (name "cups-minimal") - (version "2.3.3op2") + (version "2.4.2") (source (origin (method git-fetch) - ;; Version maintained by the OpenPrinting organization, NOT a fork. The - ;; CUPS author tracks the current Apple CUPS sources and includes common - ;; changes and bug fixes for GNU/Linux. See its README and for example - ;; <https://github.com/apple/cups/issues/5917#issuecomment-819465891>. (uri (git-reference (url "https://github.com/OpenPrinting/cups") (commit (string-append "v" version)))) - (file-name (git-file-name name version)) + ;; Avoid NAME confusion: these are the complete CUPS sources. + (file-name (git-file-name "cups" version)) (sha256 - (base32 "126d6kd3pkhmsvbcflkcpk3y30iqlkdqyvrk9aqq88vbxzjd5ia6")))) + (base32 "01nn6ij7kpf2vzikinn7mk4crjx4ab8m4pplvsccc8gg30a2q9y9")))) (build-system gnu-build-system) (arguments - `(#:configure-flags - '("--disable-launchd" - "--disable-systemd" - "--disable-avahi" - "--disable-dnssd") - ;; Seven tests fail, mostly because of files that are provided by the - ;; cups-filters package. - #:tests? #f - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'never-cupsAdminGetServerSettings - ;; Instead of querying the daemon directly, this part of CUPS assumes - ;; that (1) it has access to a cupsd.conf under CUPS_SERVERROOT, and - ;; (2) the file's contents apply to the running daemon. (1) is false - ;; at least on Guix Systems resulting in extremely long delays when - ;; loading the Web interface's /admin page. (2) isn't valid anywhere - ;; because it ignores, e.g., -c FILE. - ;; Upstream considers this code on ‘life support’ so just neuter it. - (lambda _ - (substitute* "cgi-bin/admin.c" - (("!cupsAdminGetServerSettings" match) - (string-append "0 && " match))))) - (add-after 'unpack 'remove-Web-UI-server-settings - ;; The /admin page's server configuration form is questionable for - ;; the same reason as cupsAdminGetServerSettings, and won't work at - ;; all on Guix Systems. Remove it entirely. - (lambda _ - ;; SUBSTITUTE* and a patch both have (dis)advantages. This is - ;; shorter & should ensure that no translation is forgotten. - (substitute* (find-files "templates" "^admin\\.tmpl$") - ((" class=\"halves\"") "") - (("<FORM.* ACTION=\"/jobs.*</FORM>" match) - (string-append match "</P>{BROKEN? ")) - (("</FORM>}" match) - (string-append match "}"))))) - (add-before 'configure 'patch-makedefs - (lambda _ - (substitute* "Makedefs.in" - (("INITDIR.*=.*@INITDIR@") "INITDIR = @prefix@/@INITDIR@") - (("/bin/sh") (which "sh"))) - #t)) - (add-before 'build 'patch-tests - (lambda _ - (substitute* "tools/ippeveprinter.c" - (("# else /\\* HAVE_AVAHI \\*/") - "#elif defined(HAVE_AVAHI)")) - #t))))) + (list #:configure-flags + ;; This package isn't maximally minimal: "--with-components=libcups" + ;; breaks cups-filters. Disable some other unnecessary features. + #~(list "--without-icondir" + "--without-languages" + "--without-menudir") + ;; Seven tests fail, mostly because of files that are provided by the + ;; cups-filters package. + #:tests? #f + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'never-cupsAdminGetServerSettings + ;; Rather than just ask the daemon, this part of CUPS assumes + ;; that (1) it has access to a cupsd.conf under CUPS_SERVERROOT + ;; and (2) the file's contents apply to the running daemon. + ;; (1) is false at least on Guix Systems resulting in extremely + ;; long delays when loading the Web interface's /admin page. + ;; (2) is never valid: it ignores, e.g., -c FILE. Upstream + ;; considers this code on ‘life support’ so just neuter it. + (lambda _ + (substitute* "cgi-bin/admin.c" + (("!cupsAdminGetServerSettings" match) + (string-append "0 && " match))))) + (add-after 'unpack 'remove-Web-UI-server-settings + ;; The /admin page's server configuration form is questionable + ;; for the same reason as cupsAdminGetServerSettings, and won't + ;; work at all on Guix Systems. Remove it entirely. + (lambda _ + ;; SUBSTITUTE* & patches both have (dis)advantages. This is + ;; shorter & should ensure that no translation is forgotten. + (substitute* (find-files "templates" "^admin\\.tmpl$") + ((" class=\"halves\"") "") + (("<FORM.* ACTION=\"/jobs.*</FORM>" match) + (string-append match "</P>{BROKEN? ")) + (("</FORM>}" match) + (string-append match "}"))))) + (add-before 'configure 'patch-makedefs + (lambda _ + (substitute* "Makedefs.in" + (("INITDIR.*=.*@INITDIR@") "INITDIR = @prefix@/@INITDIR@") + (("/bin/sh") (which "sh"))))) + (add-before 'check 'skip-failing-tests + (lambda _ + (substitute* "test/run-stp-tests.sh" + ;; The number of error/warning lines differs, probably due + ;; to a missing font. Substitute the last observed count. + (("(\\$count != )33" _ prefix) + (string-append prefix "39")))))))) (native-inputs (list pkg-config)) (inputs (list zlib gnutls)) - (home-page "https://openprinting.github.io/") + (home-page "https://openprinting.github.io/cups") (synopsis "The Common Unix Printing System") (description - "CUPS is a printing system that uses the Internet Printing Protocol -(@dfn{IPP}). It provides System V and BSD command-line interfaces, as well -as a Web interface and a C programming interface to manage printers and print -jobs. It supports printing to both local (parallel, serial, USB) and -networked printers, and printers can be shared from one computer to another. -Internally, CUPS uses PostScript Printer Description (@dfn{PPD}) files to -describe printer capabilities and features, and a wide variety of generic and -device-specific programs to convert and print many types of files.") + "CUPS is a printing system that uses @acronym{IPP, the Internet Printing +Protocol} to talk to printers and network clients. It also provides the old +@command{lp} and @command{lpr} commands, a Web interface, and a C programming +interface to manage printers and print jobs. + +CUPS can print to both local (USB, serial, even parallel) and networked +printers. Almost any modern printer supports IPP@tie{}Everywhere, sometimes +sold as AirPrint, and is supported out of the box. Older printers can be +supported through legacy PPD-based printer drivers called ``printer +applications''. These must be installed separately.") ;; CUPS is Apache 2.0 with exceptions, see the NOTICE file. (license license:asl2.0))) @@ -340,127 +335,124 @@ device-specific programs to convert and print many types of files.") (arguments (substitute-keyword-arguments (package-arguments cups-minimal) ((#:tests? _ #t) - ;; Three tests fail: - ;; * two tests in ipp-1.1.test related to "RFC 2911 section 3.2.6: - ;; Get-Jobs Operation" - ;; * test of number of error/warning messages, probably related to a - ;; missing font. - #f) - ((#:configure-flags _ '()) - `(list "--disable-launchd" - "--disable-systemd")) - ((#:phases phases '%standard-phases) - `(modify-phases ,phases - (add-before 'check 'patch-tests - (lambda _ - (let ((filters (assoc-ref %build-inputs "cups-filters")) - (catpath (string-append - (assoc-ref %build-inputs "coreutils") "/bin/")) - (testdir (string-append (getcwd) "/tmp/"))) - (mkdir testdir) - (substitute* "test/run-stp-tests.sh" - ((" *BASE=/tmp/") (string-append "BASE=" testdir)) - - ;; Allow installation of filters from the output directory - ;; and from cups-filters. - (("for dir in /usr/libexec/cups/filter /usr/lib/cups/filter") - (string-append - "for dir in " - (assoc-ref %outputs "out") "/lib/cups/filter " - filters "/lib/cups/filter")) - - ;; Check for charsets in the default cups-filters output. - (("/usr/share/cups/charsets") - (string-append filters "/share/cups/charsets")) - - ;; Install additional required filters. - (("instfilter texttopdf texttopdf pdf") - (string-append - "instfilter texttopdf texttopdf pdf;" - "instfilter imagetoraster imagetoraster raster;" - "instfilter gstoraster gstoraster raster;" - "instfilter urftopdf urftopdf pdf;" - "instfilter rastertopdf rastertopdf pdf;" - "instfilter pstopdf pstopdf pdf")) - - ;; Specify the location of the lpstat binary. - (("description=\"`lpstat -l") - "description=\"`../systemv/lpstat -l") - - ;; Patch the shebangs of embedded scripts. - (("#!/bin/sh") (string-append "#!" (which "sh"))) - - ;; Also link MIME definitions from cups-filters - ;; to enable the additional filters for the test suite. - (("ln -s \\$root/conf/mime\\.types") - (string-append - "ln -s " filters - "/share/cups/mime/cupsfilters.types $BASE/share/mime; " - "ln -s $root/conf/mime.types")) - (("ln -s \\$root/conf/mime\\.convs") - (string-append - "ln -s " filters - "/share/cups/mime/cupsfilters.convs $BASE/share/mime; " - "ln -s $root/conf/mime.convs"))) - - ;; Fix the search path for the "cat" command. - (substitute* "cups/testfile.c" - (("cupsFileFind\\(\"cat\", \"/bin\"") - (string-append "cupsFileFind(\"cat\", \"" catpath "\"")) - (("cupsFileFind\\(\"cat\", \"/bin:/usr/bin\"") - (string-append "cupsFileFind(\"cat\", \"" catpath "\"")))))) - (add-after 'install 'install-cups-filters-symlinks - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (cups-filters (assoc-ref inputs "cups-filters"))) - ;; Charsets. - (symlink - (string-append cups-filters "/share/cups/charsets") - (string-append out "/share/charsets")) - - ;; MIME types, driver files, and PPDs. - (for-each - (lambda (f) - (symlink (string-append cups-filters f) - (string-append out f))) - '("/share/cups/mime/cupsfilters.types" - "/share/cups/mime/cupsfilters.convs" - "/share/cups/drv/cupsfilters.drv" - "/share/ppd")) - - ;; Filters. - (for-each - (lambda (f) - (symlink f - (string-append out "/lib/cups/filter" - (basename f)))) - (find-files (string-append cups-filters "/lib/cups/filter"))) - - ;; Backends. - (for-each - (lambda (f) - (symlink (string-append cups-filters f) - (string-append out "/lib/cups/backend/" - (basename f)))) - '("/lib/cups/backend/parallel" - "/lib/cups/backend/serial")) - - ;; Banners. - (let ((banners "/share/cups/banners")) - (delete-file-recursively (string-append out banners)) - (symlink (string-append cups-filters banners) - (string-append out banners))) - - ;; Assorted data. - (let ((data "/share/cups/data")) - (delete-file-recursively (string-append out data)) - (symlink (string-append cups-filters data) - (string-append out data)))))))))) + #t) + ((#:configure-flags flags #~'()) + #~(append #$flags + (list "--with-languages=all"))) ; no ‘=all’ means none(!) + ((#:phases phases #~%standard-phases) + #~(modify-phases #$phases + (add-before 'check 'patch-tests + (lambda* (#:key outputs #:allow-other-keys) + (let ((filters #$(this-package-input "cups-filters")) + (catpath (string-append + #$(this-package-input "coreutils") "/bin/")) + (testdir (string-append (getcwd) "/tmp/"))) + (mkdir testdir) + (substitute* "test/run-stp-tests.sh" + ((" *BASE=/tmp/") (string-append "BASE=" testdir)) + + ;; Allow installation of filters from the output directory + ;; and from cups-filters. + (("for dir in /usr/libexec/cups/filter /usr/lib/cups/filter") + (string-append + "for dir in " + (assoc-ref outputs "out") "/lib/cups/filter " + filters "/lib/cups/filter")) + + ;; Check for charsets in the default cups-filters output. + (("/usr/share/cups/charsets") + (string-append filters "/share/cups/charsets")) + + ;; Install additional required filters. + (("instfilter texttopdf texttopdf pdf") + (string-append + "instfilter texttopdf texttopdf pdf;" + "instfilter imagetoraster imagetoraster raster;" + "instfilter gstoraster gstoraster raster;" + "instfilter urftopdf urftopdf pdf;" + "instfilter rastertopdf rastertopdf pdf;" + "instfilter pstopdf pstopdf pdf")) + + ;; Specify the location of the lpstat binary. + (("description=\"`lpstat -l") + "description=\"`../systemv/lpstat -l") + + ;; Patch the shebangs of embedded scripts. + (("#!/bin/sh") (string-append "#!" (which "sh"))) + + ;; Also link MIME definitions from cups-filters + ;; to enable the additional filters for the test suite. + (("ln -s \\$root/conf/mime\\.types") + (string-append + "ln -s " filters + "/share/cups/mime/cupsfilters.types $BASE/share/mime; " + "ln -s $root/conf/mime.types")) + (("ln -s \\$root/conf/mime\\.convs") + (string-append + "ln -s " filters + "/share/cups/mime/cupsfilters.convs $BASE/share/mime; " + "ln -s $root/conf/mime.convs"))) + + ;; Fix the search path for the "cat" command. + (substitute* "cups/testfile.c" + (("cupsFileFind\\(\"cat\", \"/bin\"") + (string-append "cupsFileFind(\"cat\", \"" catpath "\"")) + (("cupsFileFind\\(\"cat\", \"/bin:/usr/bin\"") + (string-append "cupsFileFind(\"cat\", \"" catpath "\"")))))) + (add-after 'install 'install-cups-filters-symlinks + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (cups-filters #$(this-package-input "cups-filters"))) + ;; Charsets. + (symlink + (string-append cups-filters "/share/cups/charsets") + (string-append out "/share/charsets")) + + ;; MIME types, driver files, and PPDs. + (for-each + (lambda (f) + (symlink (string-append cups-filters f) + (string-append out f))) + '("/share/cups/mime/cupsfilters.types" + "/share/cups/mime/cupsfilters.convs" + "/share/cups/drv/cupsfilters.drv" + "/share/ppd")) + + ;; Filters. + (for-each + (lambda (f) + (symlink f + (string-append out "/lib/cups/filter" + (basename f)))) + (find-files (string-append cups-filters "/lib/cups/filter"))) + + ;; Backends. + (for-each + (lambda (f) + (symlink (string-append cups-filters f) + (string-append out "/lib/cups/backend/" + (basename f)))) + '("/lib/cups/backend/parallel" + "/lib/cups/backend/serial")) + + ;; Banners. + (let ((banners "/share/cups/banners")) + (delete-file-recursively (string-append out banners)) + (symlink (string-append cups-filters banners) + (string-append out banners))) + + ;; Assorted data. + (let ((data "/share/cups/data")) + (delete-file-recursively (string-append out data)) + (symlink (string-append cups-filters data) + (string-append out data)))))))))) (inputs - `(("avahi" ,avahi) - ("gnutls" ,gnutls) - ("cups-filters" ,cups-filters) - ("zlib" ,zlib))))) + (list avahi + coreutils + cups-filters + gnutls + linux-pam + zlib)))) (define-public cups-pk-helper (package @@ -487,14 +479,14 @@ should only be used as part of the Guix cups-pk-helper service.") (define-public hplip (package (name "hplip") - (version "3.21.10") + (version "3.22.4") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/hplip/hplip/" version "/hplip-" version ".tar.gz")) (sha256 (base32 - "0q3adcp8iygravp4bq4gw14jk20c5rhnawj1333qyw8yvlghw8yy")) + "0461pv3hgbmjxrz7y1kplnp1sp97hagzad7gc1qr2h5cqm3ybsbv")) (modules '((guix build utils))) (snippet '(begin diff --git a/gnu/packages/curl.scm b/gnu/packages/curl.scm index 7fa0261147..dd4e9f76a5 100644 --- a/gnu/packages/curl.scm +++ b/gnu/packages/curl.scm @@ -62,14 +62,14 @@ (define-public curl (package (name "curl") - (version "7.79.1") + (version "7.82.0") (source (origin (method url-fetch) (uri (string-append "https://curl.haxx.se/download/curl-" version ".tar.xz")) (sha256 (base32 - "129n9hi7rbg3s112chyadhp4y27ppb5i65n12wm77aw2255zf1h6")) + "0g2qibjxq3397myjkw3asyxqvhym1pl3qw7jaii9dc04ppbi5aha")) (patches (search-patches "curl-use-ssl-cert-env.patch")))) (build-system gnu-build-system) (outputs '("out" diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index 137627e8de..7ef211be37 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -56,6 +56,7 @@ ;;; Copyright © 2021 jgart <jgart@dismail.de> ;;; Copyright © 2021 Foo Chuan Wei <chuanwei.foo@hotmail.com> ;;; Copyright © 2022 Zhu Zihao <all_but_last@163.com> +;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re> ;;; ;;; This file is part of GNU Guix. ;;; @@ -90,6 +91,7 @@ #:use-module (gnu packages curl) #:use-module (gnu packages cyrus-sasl) #:use-module (gnu packages dbm) + #:use-module (gnu packages docbook) #:use-module (gnu packages emacs) #:use-module (gnu packages flex) #:use-module (gnu packages freedesktop) @@ -1193,38 +1195,43 @@ and high-availability (HA).") (patches (search-patches "postgresql-disable-resolve_symlinks.patch")))) (build-system gnu-build-system) (arguments - `(#:configure-flags '("--with-uuid=e2fs" "--with-openssl" - ;; PostgreSQL installs its own Makefile (should it?). - ;; Prevent it from retaining needless references to - ;; the build tools in order to save size. - "MKDIR_P=mkdir -p" "INSTALL_BIN=install -c" - "LD=ld" "TAR=tar") - #:phases - (modify-phases %standard-phases - (add-before 'configure 'patch-/bin/sh - (lambda _ - ;; Refer to the actual shell. - (substitute* '("src/bin/pg_ctl/pg_ctl.c" - "src/bin/psql/command.c") - (("/bin/sh") (which "sh"))) - #t)) - (add-before 'configure 'set-socket-dir - (lambda _ - (substitute* '("src/include/pg_config_manual.h") - (("DEFAULT_PGSOCKET_DIR[^\n]*") - "DEFAULT_PGSOCKET_DIR \"/var/run/postgresql\"")) - #t)) - (add-after 'build 'build-contrib - (lambda _ - (invoke "make" "-C" "contrib"))) - (add-after 'install 'install-contrib - (lambda _ - (invoke "make" "-C" "contrib" "install")))))) - (inputs - `(("readline" ,readline) - ("libuuid" ,util-linux "lib") - ("openssl" ,openssl) - ("zlib" ,zlib))) + (list + #:configure-flags + #~(list "--with-uuid=e2fs" "--with-openssl" + (string-append "--mandir=" #$output "/share/man") + ;; PostgreSQL installs its own Makefile (should it?). + ;; Prevent it from retaining needless references to + ;; the build tools in order to save size. + "MKDIR_P=mkdir -p" "INSTALL_BIN=install -c" + "LD=ld" "TAR=tar") + #:phases + #~(modify-phases %standard-phases + (add-before 'configure 'patch-/bin/sh + (lambda _ + ;; Refer to the actual shell. + (substitute* '("src/bin/pg_ctl/pg_ctl.c" + "src/bin/psql/command.c") + (("/bin/sh") (which "sh"))))) + (add-before 'configure 'set-socket-dir + (lambda _ + (substitute* '("src/include/pg_config_manual.h") + (("DEFAULT_PGSOCKET_DIR[^\n]*") + "DEFAULT_PGSOCKET_DIR \"/var/run/postgresql\"")))) + (add-after 'build 'build-contrib + (lambda _ + (invoke "make" "-C" "contrib"))) + (add-after 'install 'install-contrib + (lambda _ + (invoke "make" "-C" "contrib" "install"))) + (add-after 'install 'install-manuals + (lambda _ + (with-directory-excursion "doc/src/sgml" + (invoke "make" "install-man") + (invoke "make" "postgres.info") + (install-file "postgres.info" + (string-append #$output "/share/info")))))))) + (native-inputs (list docbook-xml docbook2x libxml2 perl texinfo)) + (inputs (list readline `(,util-linux "lib") openssl zlib)) (home-page "https://www.postgresql.org/") (synopsis "Powerful object-relational database system") (description @@ -1239,36 +1246,15 @@ pictures, sounds, or video.") (define-public postgresql-13 (package (inherit postgresql-14) - (version "13.4") + (version "13.6") (source (origin (inherit (package-source postgresql-14)) (uri (string-append "https://ftp.postgresql.org/pub/source/v" version "/postgresql-" version ".tar.bz2")) (sha256 (base32 - "1kf0gcsrl5n25rjlvkh87aywmn28kbwvakm5c7j1qpr4j01y34za")))) - (arguments - (if (target-riscv64?) - `(,@(substitute-keyword-arguments (package-arguments postgresql-14) - ((#:phases phases) - #~(modify-phases #$phases - (add-after 'unpack 'apply-riscv-spinlock-patch - ;; The patch is applied in this custom phase and not via the - ;; "origin" object above to avoid rebuilding a large number - ;; of packages on other platforms. - (lambda* (#:key inputs #:allow-other-keys) - (let ((patch-file - #$(local-file - (search-patch - "postgresql-riscv-spinlocks.patch")))) - (invoke "patch" "-p1" "-i" patch-file)))))))) - `(,@(package-arguments postgresql-14)))) - (native-inputs - (if (target-riscv64?) - (list - (local-file (search-patch "postgresql-riscv-spinlocks.patch")) - patch) - '())))) + "1z37ix80hb2bqa2smh1hbj9r507ypnl3pil43gkqznnlv6ipzz5s")) + (patches (search-patches "postgresql-riscv-spinlocks.patch")))))) (define-public postgresql-11 (package diff --git a/gnu/packages/dejagnu.scm b/gnu/packages/dejagnu.scm index 08be5a8afd..b51a2f22ad 100644 --- a/gnu/packages/dejagnu.scm +++ b/gnu/packages/dejagnu.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> -;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flasher.co.il> +;;; Copyright © 2016, 2017, 2022 Efraim Flashner <efraim@flasher.co.il> ;;; Copyright © 2018 Mark H Weaver <mhw@netris.org> ;;; ;;; This file is part of GNU Guix. @@ -43,25 +43,25 @@ '(#:phases (modify-phases %standard-phases (replace 'check - (lambda _ + (lambda* (#:key tests? #:allow-other-keys) ;; Note: The test-suite *requires* /dev/pts among the ;; `build-chroot-dirs' of the build daemon when ;; building in a chroot. See ;; <http://thread.gmane.org/gmane.linux.distributions.nixos/1036> ;; for details. - (if (and (directory-exists? "/dev/pts") - (directory-exists? "/proc")) + (when tests? + (if (and (directory-exists? "/dev/pts") + (directory-exists? "/proc")) (begin - ;; Provide `runtest' with a log name, otherwise it - ;; tries to run `whoami', which fails when in a chroot. - (setenv "LOGNAME" "guix-builder") + ;; Provide `runtest' with a log name, otherwise it + ;; tries to run `whoami', which fails when in a chroot. + (setenv "LOGNAME" "guix-builder") - ;; The test-suite needs to have a non-empty stdin: - ;; <http://lists.gnu.org/archive/html/bug-dejagnu/2003-06/msg00002.html>. - (unless (zero? (system "make check < /dev/zero")) - (error "make check failed"))) - (display "test suite cannot be run, skipping\n")) - #t)) + ;; The test-suite needs to have a non-empty stdin: + ;; <http://lists.gnu.org/archive/html/bug-dejagnu/2003-06/msg00002.html>. + (unless (zero? (system "make check < /dev/zero")) + (error "make check failed"))) + (display "test suite cannot be run, skipping\n"))))) (add-after 'install 'post-install (lambda* (#:key inputs outputs #:allow-other-keys) ;; Use the right `expect' binary. @@ -71,8 +71,7 @@ (("^mypath.*$" all) (string-append all "export PATH=" - expect "/bin:$PATH\n"))) - #t)))))) + expect "/bin:$PATH\n"))))))))) (home-page "https://www.gnu.org/software/dejagnu/") (synopsis "GNU software testing framework") diff --git a/gnu/packages/diffoscope.scm b/gnu/packages/diffoscope.scm index 1cb0a7ad76..055d83bf37 100644 --- a/gnu/packages/diffoscope.scm +++ b/gnu/packages/diffoscope.scm @@ -34,7 +34,6 @@ #:use-module (gnu packages compression) #:use-module (gnu packages cpio) #:use-module (gnu packages dbm) - #:use-module (gnu packages file) ;for 'file-next' #:use-module (gnu packages gettext) #:use-module (gnu packages ghostscript) #:use-module (gnu packages gnome) @@ -173,11 +172,6 @@ dtc e2fsprogs ffmpeg - - ;; XXX: Must be the same version as python-magic uses; - ;; remove when 'file' is updated. - file-next - fpc gettext-minimal ghostscript diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm index 46b95eb640..b7d739bea8 100644 --- a/gnu/packages/django.scm +++ b/gnu/packages/django.scm @@ -408,9 +408,7 @@ size and quality.") " and not test_urls_cache_is_cleared"))) (format #t "test suite not run~%"))))))) (native-inputs - (list python-django python-setuptools-scm - ;; For tests. - python-pytest-xdist-next)) + (list python-django python-setuptools-scm python-pytest-xdist)) (propagated-inputs (list python-pytest)) (home-page "https://pytest-django.readthedocs.org/") diff --git a/gnu/packages/djvu.scm b/gnu/packages/djvu.scm index b85193ccdb..4f4f40db1b 100644 --- a/gnu/packages/djvu.scm +++ b/gnu/packages/djvu.scm @@ -151,7 +151,6 @@ a continuous layout.") (sha256 (base32 "0c595yziz81c9izf9s5sskd00qmgz2n1hp2vdcgg0dx81g3xfidb")))) (build-system gnu-build-system) - (arguments (list #:tests? #f)) ;requires Python 2 (native-inputs (list gettext-minimal pkg-config)) (inputs (list djvulibre @@ -160,6 +159,20 @@ a continuous layout.") poppler poppler-data `(,util-linux "lib"))) ;for libuuid + (arguments + `(#:test-target "test" + #:tests? #f ;requires Python 2 + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-tests + (lambda _ + (substitute* "tests/test-xmp-broken.py" + ;; Error message changed in recent versions of XML parser + (("XML parsing failure") + "Error in XMLValidator")))) + (add-before 'check 'set-home-for-tests + (lambda _ + (setenv "HOME" "/tmp")))))) (synopsis "PDF to DjVu converter") (description "@code{pdf2djvu} creates DjVu files from PDF files. diff --git a/gnu/packages/docbook.scm b/gnu/packages/docbook.scm index 6575bf2d75..5ee6fcccde 100644 --- a/gnu/packages/docbook.scm +++ b/gnu/packages/docbook.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2020 Marius Bakke <marius@gnu.org> -;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2021 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2021 Andrew Whatson <whatson@gmail.com> @@ -153,7 +153,8 @@ by no means limited to these applications.) This package provides XML DTDs.") "18hgwvmywh6a5jh38szjmg3hg2r4v5lb6r3ydc3rd8cp9wg61i5c")))))) (define-public docbook-xml-4.1.2 - (package (inherit docbook-xml) + (package + (inherit docbook-xml) (version "4.1.2") (source (origin (method url-fetch) @@ -167,13 +168,22 @@ by no means limited to these applications.) This package provides XML DTDs.") #:builder (begin (use-modules (guix build utils)) - (let ((source (assoc-ref %build-inputs "source")) - (unzip (string-append (assoc-ref %build-inputs "unzip") - "/bin/unzip")) - (dtd (string-append (assoc-ref %outputs "out") - "/xml/dtd/docbook"))) + (let* ((source (assoc-ref %build-inputs "source")) + (unzip (string-append (assoc-ref %build-inputs "unzip") + "/bin/unzip")) + (xmlcatalog (string-append (assoc-ref %build-inputs "libxml2") + "/bin/xmlcatalog")) + (dtd (string-append (assoc-ref %outputs "out") + "/xml/dtd/docbook")) + (catalog.xml (string-append dtd "/catalog.xml"))) (mkdir-p dtd) - (invoke unzip source "-d" dtd))))))) + (invoke unzip source "-d" dtd) + ;; Create a minimal XML catalog, to use with libxml2 tools. + (invoke xmlcatalog "--noout" "--create" catalog.xml) + (invoke xmlcatalog "--noout" "--add" "public" + "-//OASIS//DTD DocBook XML V4.1.2//EN" + (string-append dtd "/docbookx.dtd") catalog.xml))))) + (native-inputs (list libxml2 unzip)))) (define-public docbook-xsl (package @@ -467,29 +477,25 @@ the in DocBook SGML DTDs.") texlive-latex-changebar texlive-latex-colortbl texlive-latex-fancybox - texlive-latex-fancyhdr - texlive-latex-fancyvrb + texlive-fancyhdr + texlive-fancyvrb texlive-latex-float texlive-latex-footmisc texlive-hyperref texlive-latex-jknapltx - - ;; TODO: Use non-deprecated name on - ;; next rebuild cycle. - texlive-latex-listings - + texlive-listings texlive-latex-multirow texlive-latex-overpic - texlive-latex-pdfpages - texlive-latex-refcount - texlive-latex-subfigure - texlive-latex-titlesec + texlive-pdfpages + texlive-refcount + texlive-subfigure + texlive-titlesec texlive-wasysym texlive-fonts-rsfs texlive-stmaryrd - texlive-generic-iftex))) + texlive-iftex))) ("imagemagick" ,imagemagick) ;for convert ("inkscape" ,inkscape) ;for svg conversion ("docbook" ,docbook-xml) diff --git a/gnu/packages/ed.scm b/gnu/packages/ed.scm index a42ba40102..31c41fa5ef 100644 --- a/gnu/packages/ed.scm +++ b/gnu/packages/ed.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org> ;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org> -;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2019, 2022 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -22,31 +22,31 @@ #: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 compression)) (define-public ed (package (name "ed") - (version "1.17") + (version "1.18") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/ed/ed-" version ".tar.lz")) (sha256 (base32 - "0m2yrkfjjraakxr98nsiakqrn351h99n706x9asgmdi57j43kpki")))) + "0krb8rsb0cd8mgz0c5pqgnjbbrj7zjl7mf9099r8gi80k2nyza5c")))) (build-system gnu-build-system) (native-inputs (list lzip)) (arguments - '(#:configure-flags '("CC=gcc") + `(#: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"))) - #t))))) + (("/bin/sh") (which "sh")))))))) (home-page "https://www.gnu.org/software/ed/") (synopsis "Line-oriented text editor") (description diff --git a/gnu/packages/file.scm b/gnu/packages/file.scm index 5e379d888b..3515258be4 100644 --- a/gnu/packages/file.scm +++ b/gnu/packages/file.scm @@ -32,14 +32,14 @@ (define-public file (package (name "file") - (version "5.39") + (version "5.41") (source (origin (method url-fetch) (uri (string-append "ftp://ftp.astron.com/pub/file/file-" version ".tar.gz")) (sha256 (base32 - "1lgs2w2sgamzf27kz5h7pajz7v62554q21fbs11n4mfrfrm2hpgh")))) + "0gv027jgdr0hdkw7m9ck0nwhq583f4aa7vnz4dzdbxv4ng3k5r8k")))) (build-system gnu-build-system) ;; When cross-compiling, this package depends upon a native install of @@ -58,15 +58,3 @@ extensions to tell you the type of a file, but looks at the actual contents of the file. This package provides the libmagic library.") (license bsd-2) (home-page "https://www.darwinsys.com/file/"))) - -(define-public file-next - (package - (inherit file) - (version "5.41") - (source (origin - (method url-fetch) - (uri (string-append "http://ftp.astron.com/pub/file/file-" - version ".tar.gz")) - (sha256 - (base32 - "0gv027jgdr0hdkw7m9ck0nwhq583f4aa7vnz4dzdbxv4ng3k5r8k")))))) diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm index 712517c685..c2686c380f 100644 --- a/gnu/packages/fontutils.scm +++ b/gnu/packages/fontutils.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2014, 2016 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2016 Mark H Weaver <mhw@netris.org> -;;; Copyright © 2016, 2017, 2020 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2017, 2020, 2022 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org> ;;; Copyright © 2017 Leo Famulari <leo@famulari.name> ;;; Copyright © 2017 Nikita <nikita@n0.is> @@ -85,14 +85,14 @@ (define-public freetype (package (name "freetype") - (version "2.10.4") + (version "2.12.1") (source (origin (method url-fetch) (uri (string-append "mirror://savannah/freetype/freetype-" version ".tar.xz")) (sha256 - (base32 "112pyy215chg7f7fmp2l9374chhhpihbh8wgpj5nj6avj3c59a46")))) + (base32 "0zqsqi092sxzvqc31b23n8ww9lcjgy8vz01g576z0k6caw0z4rj7")))) (build-system gnu-build-system) (arguments ;; The use of "freetype-config" is deprecated, but other packages still @@ -112,7 +112,7 @@ It supports both bitmap and scalable formats, including TrueType, OpenType, Type1, CID, CFF, Windows FON/FNT, X11 PCF, and others. It supports high-speed anti-aliased glyph bitmap generation with 256 gray levels.") (license license:freetype) ; some files have other licenses - (home-page "https://www.freetype.org/"))) + (home-page "https://freetype.org/"))) (define-public opentype-sanitizer (package diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm index fc2c45c1f1..bbfdbda0cc 100644 --- a/gnu/packages/freedesktop.scm +++ b/gnu/packages/freedesktop.scm @@ -29,6 +29,7 @@ ;;; Copyright © 2021 John Kehayias <john.kehayias@protonmail.com> ;;; Copyright © 2021, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2022 Daniel Meißner <daniel.meissner-i4k@ruhr-uni-bochum.de> +;;; Copyright © 2022 Wamm K. D. <jaft.r@outlook.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -1028,7 +1029,7 @@ fullscreen) or other display servers.") (define-public wayland-protocols (package (name "wayland-protocols") - (version "1.23") + (version "1.25") (source (origin (method url-fetch) (uri (string-append @@ -1036,7 +1037,7 @@ fullscreen) or other display servers.") "wayland-protocols-" version ".tar.xz")) (sha256 (base32 - "0xizccackgwszjhlq7jjiv2z2gwppljx0w32ga91bxlnby8z22kc")))) + "0q0laxdvf8p8b7ks2cbpqf6q0rwrjycqrp8pf8rxm86hk5qhzzzi")))) (build-system meson-build-system) (inputs (list wayland)) diff --git a/gnu/packages/gettext.scm b/gnu/packages/gettext.scm index d606acf798..bf4c98e36c 100644 --- a/gnu/packages/gettext.scm +++ b/gnu/packages/gettext.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org> ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015, 2017 Ricardo Wurmus <rekado@elephly.net> -;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2019, 2022 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Alex Kost <alezost@gmail.com> ;;; Copyright © 2017, 2019, 2020 Marius Bakke <marius@gnu.org> ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> @@ -60,7 +60,8 @@ version ".tar.gz")) (sha256 (base32 - "04kbg1sx0ncfrsbr85ggjslqkzzb243fcw9nyh3rrv1a22ihszf7")))) + "04kbg1sx0ncfrsbr85ggjslqkzzb243fcw9nyh3rrv1a22ihszf7")) + (patches (search-patches "gettext-libunicode-update.patch")))) (build-system gnu-build-system) (outputs '("out" "doc")) ;9 MiB of HTML diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index d3ee7aed93..4609f6c796 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm @@ -261,7 +261,7 @@ also known as DXTn or DXTC) for Mesa.") (define-public mesa (package (name "mesa") - (version "21.3.2") + (version "21.3.7") (source (origin (method url-fetch) @@ -273,7 +273,7 @@ also known as DXTn or DXTC) for Mesa.") version "/mesa-" version ".tar.xz"))) (sha256 (base32 - "1g96y59bw10ml8h4jl259g41jdmf5ww3jbwqpz1sprq7hgxvmrz2")) + "0ggw3s514z6szasbiy4dv5mdi689121yy2xly2g21gv1mavrvyml")) (patches (search-patches "mesa-skip-tests.patch")))) (build-system meson-build-system) diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm index 09d5a03555..95839a856d 100644 --- a/gnu/packages/glib.scm +++ b/gnu/packages/glib.scm @@ -9,7 +9,7 @@ ;;; Copyright © 2017 Petter <petter@mykolab.ch> ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com> -;;; Copyright © 2019, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org> ;;; Copyright © 2019, 2020, 2021 Marius Bakke <marius@gnu.org> ;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz> @@ -427,14 +427,14 @@ be used when cross-compiling." (define gobject-introspection (package (name "gobject-introspection") - (version "1.66.1") + (version "1.68.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" "gobject-introspection/" (version-major+minor version) "/gobject-introspection-" version ".tar.xz")) (sha256 - (base32 "078n0q7b6z682mf4irclrksm73cyixq295mqnqifl9plwmgaai6x")) + (base32 "09sawnv3xj9pzgy2qrrk87dl3jibfphnswb61i5bh0d2h4j28afj")) (patches (search-patches "gobject-introspection-cc.patch" "gobject-introspection-girepository.patch" @@ -483,11 +483,7 @@ be used when cross-compiling." ("bison" ,bison) ("flex" ,flex))) (inputs - `(,@(if (%current-target-system) - `(("python" ,python)) - `(("bison" ,bison) - ("flex" ,flex) - ("python" ,python-wrapper))) + `(("python" ,python) ("zlib" ,zlib))) (propagated-inputs (list glib diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 90ee724290..f778068821 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -3459,18 +3459,9 @@ for dealing with different structured file formats.") `(,glib "bin") gobject-introspection pkg-config - python-wrapper - ruby vala)) (inputs - (list bzip2 - fontconfig - freetype - harfbuzz - libcroco - libgsf - libxml2 - pango)) + (list freetype harfbuzz libxml2 pango)) (propagated-inputs (list cairo gdk-pixbuf glib)) (synopsis "SVG rendering library") @@ -3561,7 +3552,7 @@ diagrams.") `(,glib "bin") ; glib-mkenums, etc. gobject-introspection)) ; g-ir-compiler, etc. (inputs - (list pango libcroco bzip2 libgsf libxml2)) + (list pango libcroco libxml2)) (propagated-inputs ;; librsvg-2.0.pc refers to all of that. (list cairo gdk-pixbuf glib)) diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 6fbcf12a04..7f02984dd4 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -51,6 +51,7 @@ #:use-module (guix build-system gnu) #:use-module (guix build-system cargo) #:use-module (guix build-system trivial) + #:use-module (guix build-system mozilla) #:use-module (gnu packages admin) #:use-module (gnu packages audio) #:use-module (gnu packages autotools) @@ -96,6 +97,348 @@ (define-public mozjs (package (name "mozjs") + (version "17.0.0") + (source (origin + (method url-fetch) + (uri (string-append + "https://ftp.mozilla.org/pub/mozilla.org/js/" + name version ".tar.gz")) + (sha256 + (base32 + "1fig2wf4f10v43mqx67y68z6h77sy900d1w0pz9qarrqx57rc7ij")) + (patches (search-patches "mozjs17-aarch64-support.patch")) + (modules '((guix build utils))) + (snippet + ;; Fix incompatibility with Perl 5.22+. + '(begin + (substitute* '("js/src/config/milestone.pl") + (("defined\\(@TEMPLATE_FILE)") "@TEMPLATE_FILE")) + #t)))) + (build-system mozilla-build-system) + (native-inputs + `(("perl" ,perl) + ("pkg-config" ,pkg-config) + ("python" ,python-2))) + (propagated-inputs + (list nspr)) ; in the Requires.private field of mozjs-17.0.pc + (inputs + (list zlib)) + (arguments + `(;; XXX: parallel build fails, lacking: + ;; mkdir -p "system_wrapper_js/" + #:parallel-build? #f + #:make-flags '("CXXFLAGS=-fpermissive") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'delete-timedout-test + ;; This test times out on slower hardware. + (lambda _ + (delete-file "js/src/jit-test/tests/basic/bug698584.js") + #t)) + (add-before 'configure 'chdir + (lambda _ + (chdir "js/src") + #t)) + (replace 'configure + ;; configure fails if it is followed by SHELL and CONFIG_SHELL + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (setenv "SHELL" (which "sh")) + (setenv "CONFIG_SHELL" (which "sh")) + (invoke "./configure" (string-append "--prefix=" out) + ,@(if (string=? "aarch64-linux" + (%current-system)) + '("--host=aarch64-unknown-linux-gnu") + '())))))))) + (home-page + "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey") + (synopsis "Mozilla javascript engine") + (description "SpiderMonkey is Mozilla's JavaScript engine written +in C/C++.") + (license license:mpl2.0))) ; and others for some files + +(define-public mozjs-24 + (package (inherit mozjs) + (name "mozjs") + (version "24.2.0") + (source (origin + (method url-fetch) + (uri (string-append + "https://ftp.mozilla.org/pub/mozilla.org/js/" + name "-" version ".tar.bz2")) + (sha256 + (base32 + "1n1phk8r3l8icqrrap4czplnylawa0ddc2cc4cgdz46x3lrkybz6")) + (modules '((guix build utils))) + (patches (search-patches "mozjs24-aarch64-support.patch")) + (snippet + ;; Fix incompatibility with Perl 5.22+. + '(begin + (substitute* '("js/src/config/milestone.pl") + (("defined\\(@TEMPLATE_FILE)") "@TEMPLATE_FILE")) + #t)))) + (arguments + (substitute-keyword-arguments (package-arguments mozjs) + ((#:phases phases) + `(modify-phases ,phases + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + ;; configure fails if it is followed by SHELL and CONFIG_SHELL + (setenv "SHELL" (which "sh")) + (setenv "CONFIG_SHELL" (which "sh")) + (invoke "./configure" + (string-append "--prefix=" out) + "--with-system-nspr" + "--enable-system-ffi" + "--enable-threadsafe" + ,@(if (string=? "aarch64-linux" + (%current-system)) + '("--host=aarch64-unknown-linux-gnu") + '()))))))))) + (inputs + (list libffi zlib)))) + +(define-public mozjs-38 + (package + (inherit mozjs) + (name "mozjs") + (version "38.2.1.rc0") + (source (origin + (method url-fetch) + (uri (string-append + "https://anduin.linuxfromscratch.org/BLFS/mozjs/" + name "-" version ".tar.bz2")) + (sha256 + (base32 + "0p4bmbpgkfsj54xschcny0a118jdrdgg0q29rwxigg3lh5slr681")) + (patches + (search-patches + ;; See https://bugzilla.mozilla.org/show_bug.cgi?id=1269317 for + ;; GCC 6 compatibility. + + "mozjs38-version-detection.patch" ; for 0ad + "mozjs38-tracelogger.patch" + + ;; See https://bugzilla.mozilla.org/show_bug.cgi?id=1339931. + "mozjs38-pkg-config-version.patch" + "mozjs38-shell-version.patch")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Fix incompatibility with sed 4.4. + (substitute* "js/src/configure" + (("\\^\\[:space:\\]") "^[[:space:]]")) + + ;; The headers are symlinks to files that are in /tmp, so they + ;; end up broken. Copy them instead. + (substitute* + "python/mozbuild/mozbuild/backend/recursivemake.py" + (("\\['dist_include'\\].add_symlink") + "['dist_include'].add_copy")) + + ;; Remove bundled libraries. + (for-each delete-file-recursively + '("intl" + "js/src/ctypes/libffi" + "js/src/ctypes/libffi-patches" + "modules/zlib")) + #t)))) + (arguments + `(;; XXX: parallel build fails, lacking: + ;; mkdir -p "system_wrapper_js/" + #:parallel-build? #f + ;; See https://bugzilla.mozilla.org/show_bug.cgi?id=1008470. + #:tests? #f + #:phases + (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (chdir "js/src") + (setenv "SHELL" (which "sh")) + (setenv "CONFIG_SHELL" (which "sh")) + (invoke "./configure" + (string-append "--prefix=" out) + "--enable-ctypes" + "--enable-gcgenerational" + "--enable-optimize" + "--enable-pie" + "--enable-readline" + "--enable-shared-js" + "--enable-system-ffi" + "--enable-threadsafe" + "--enable-xterm-updates" + "--with-system-icu" + "--with-system-nspr" + "--with-system-zlib" + + ;; Intl API requires bundled ICU. + "--without-intl-api"))))))) + (native-inputs + `(("perl" ,perl) + ("pkg-config" ,pkg-config) + ("python-2" ,python-2))) + (inputs + (list libffi readline icu4c zlib)))) + +(define-public mozjs-52 + ;; No releases yet at <https://archive.mozilla.org/pub/spidermonkey/releases/>. + ;; While we could take a snapshot of the complete mozilla-esr52 repository at + ;; <https://treeherder.mozilla.org/#/jobs?repo=mozilla-esr52&filter-searchStr=sm-tc>, + ;; we take the Debian version instead, because it is easier to work with. + (let ((commit "6507e63cc416fd7a3269e390efe712f8b56f374a") + (revision "1")) + (package (inherit mozjs-38) + (version (git-version "52.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://salsa.debian.org/gnome-team/mozjs52.git") + (commit commit))) + (file-name (git-file-name "mozjs" version)) + (sha256 + (base32 + "1ny0s53r8wn4byys87h784xrq1xg767akmfm6gqrbvrz57mlm3q2")))) + (arguments + `(#:tests? #f ; depends on repository metadata + #:configure-flags + '("--enable-ctypes" + "--enable-optimize" + "--enable-pie" + "--enable-readline" + "--enable-shared-js" + "--enable-system-ffi" + "--with-system-icu" + "--with-system-nspr" + "--with-system-zlib" + + ;; Intl API requires bundled ICU. + "--without-intl-api" + + ;; Without this gnome-shell will crash at runtime. + "--disable-jemalloc") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-and-chdir + (lambda* (#:key inputs #:allow-other-keys) + ;; This patch prevents a segfault when executing JS_Init(). + ;; The build does not fail without this patch, but the + ;; configure phase of the gjs package would fail. + ;; See https://bugzilla.mozilla.org/show_bug.cgi?id=1176787 + (make-file-writable "js/src/old-configure.in") + (make-file-writable "js/src/old-configure") + (make-file-writable "mozglue/build/moz.build") + (invoke "patch" "-p1" "--force" + "--input" "debian/patches/disable-mozglue.patch") + (invoke "touch" "js/src/configure") + (chdir "js/src") + #t)) + (replace 'configure + (lambda* (#:key inputs outputs configure-flags #:allow-other-keys) + ;; The configure script does not accept environment variables + ;; as arguments. + (let ((out (assoc-ref outputs "out"))) + (setenv "SHELL" (which "sh")) + (setenv "CONFIG_SHELL" (which "sh")) + (setenv "AUTOCONF" (which "autoconf")) + (apply invoke "./configure" + (cons (string-append "--prefix=" out) + configure-flags)))))))) + (native-inputs + (modify-inputs (package-native-inputs mozjs-38) + (prepend autoconf-2.13 automake)))))) + +(define-public mozjs-60 + ;; No releases yet at <https://archive.mozilla.org/pub/spidermonkey/releases/>. + ;; While we could take a snapshot of the complete mozilla-esr60 repository at + ;; <https://treeherder.mozilla.org/#/jobs?repo=mozilla-esr60&filter-searchStr=sm-tc>, + ;; we take the Debian version instead, because it is easier to work with. + (package + (inherit mozjs-38) + (version "60.2.3-4") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://salsa.debian.org/gnome-team/mozjs60.git") + (commit (string-append "debian/" version)))) + (file-name (git-file-name "mozjs" version)) + (sha256 + (base32 + "1xl6avsj9gkgma71p56jzs7nasc767k3n1frnmri5pad4rj94bij")) + (patches (search-patches "mozjs60-riscv64-support.patch")))) + (arguments + `(#:tests? #f ; FIXME: all tests pass, but then the check phase fails anyway. + #:test-target "check-jstests" + #:configure-flags + ,#~(quasiquote + ("--enable-ctypes" + "--enable-optimize" + "--enable-pie" + "--enable-readline" + "--enable-shared-js" + "--enable-system-ffi" + "--with-system-nspr" + #$@(if (%current-target-system) + #~(,(string-append "--with-nspr-prefix=" + #$(this-package-input "nspr"))) + #~()) + "--with-system-zlib" + "--with-system-icu" + "--with-intl-api" + ;; This is important because without it gjs will segfault during the + ;; configure phase. With jemalloc only the standalone mozjs console + ;; will work. + "--disable-jemalloc")) + #:phases + (modify-phases %standard-phases + ;; Make sure pkg-config will be found. + ,@(if (%current-target-system) + `((add-before 'configure 'set-PKG-CONFIG + (lambda _ + (setenv "PKG_CONFIG" ,(pkg-config-for-target))))) + '()) + (replace 'configure + (lambda* (#:key inputs outputs configure-flags #:allow-other-keys) + ;; The configure script does not accept environment variables as + ;; arguments. It also must be run from a different directory, + ;; but not the root directory either. + (let ((out (assoc-ref outputs "out"))) + (mkdir "run-configure-from-here") + (chdir "run-configure-from-here") + (setenv "SHELL" (which "sh")) + (setenv "CONFIG_SHELL" (which "sh")) + (setenv "AUTOCONF" (which "autoconf")) + (apply invoke "../js/src/configure" + (cons (string-append "--prefix=" out) + configure-flags)) + #t))) + (add-after 'unpack 'update-config-scripts + (lambda* (#:key native-inputs inputs #:allow-other-keys) + (for-each (lambda (file) + (install-file + (search-input-file + (or native-inputs inputs) + (string-append "/bin/" file)) "build/autoconf")) + '("config.guess" "config.sub")))) + (add-after 'unpack 'disable-broken-tests + (lambda _ + ;; This test assumes that /bin exists and contains certain + ;; executables. + (delete-file "js/src/tests/shell/os.js") + #t))))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("config" ,config) + ("which" ,which) + ("perl" ,perl) + ("pkg-config" ,pkg-config) + ("python" ,python-2))))) + +(define-public mozjs-78 + (package + (inherit mozjs-60) (version "78.15.0") (source (origin (method url-fetch) @@ -557,7 +900,7 @@ in C/C++.") (name "icecat") (version %icecat-version) (source icecat-source) - (build-system gnu-build-system) + (build-system mozilla-build-system) (inputs (list alsa-lib bzip2 diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index 820e6b54ab..60ba76b2ea 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -2684,8 +2684,8 @@ packages.") (license license:bsd-3)))) (define-public go-golang-org-x-sys - (let ((commit "05986578812163b26672dabd9b425240ae2bb0ad") - (revision "7")) + (let ((commit "ed5796bab16455f104b6a384d51b7f9990cb9806") + (revision "8")) (package (name "go-golang-org-x-sys") (version (git-version "0.0.0" revision commit)) @@ -2697,7 +2697,7 @@ packages.") (file-name (git-file-name name version)) (sha256 (base32 - "1q2rxb6z5l6pmlckjsz2l0b8lw7bqgk6frhzbmi1dv0y5irb2ka7")))) + "081vs5bg91mwg5bdmlcvy2qyrvg766aicj47smcwfk4bbh0nc0qa")))) (build-system go-build-system) (arguments `(#:import-path "golang.org/x/sys" diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index 3bf986403a..757c4f876b 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -191,7 +191,7 @@ tools have full access to view and control running applications.") ("pkg-config" ,pkg-config) ("python" ,python-wrapper))) (inputs - `(("bash-minimal" ,bash-minimal) + `(("bash-minimal" ,bash-minimal) ;for glib-or-gtk-wrap ("drm" ,libdrm) ("ghostscript" ,ghostscript) ("libspectre" ,libspectre) @@ -657,9 +657,8 @@ highlighting and other features typical of a source code editor.") (with-directory-excursion "docs" (substitute* "meson.build" (("http://docbook.sourceforge.net/release/xsl/current/") - (string-append (assoc-ref ,(if (%current-target-system) - '(or native-inputs inputs) - 'inputs) "docbook-xsl") + (string-append (assoc-ref (or native-inputs inputs) + "docbook-xsl") "/xml/xsl/docbook-xsl-1.79.2/"))) (substitute* (find-files "." "\\.xml$") (("http://www.oasis-open.org/docbook/xml/4\\.3/") @@ -673,11 +672,11 @@ highlighting and other features typical of a source code editor.") (("\\[ 'pixbuf-fail', \\['conform', 'slow'\\], \\],") "")))) ;; The slow tests take longer than the specified timeout. - ,@(if (any (cute string=? <> (%current-system)) - '("armhf-linux" "aarch64-linux")) + ,@(if (target-arm? (%current-system)) '((replace 'check - (lambda _ - (invoke "meson" "test" "--timeout-multiplier" "5")))) + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "meson" "test" "--timeout-multiplier" "5"))))) '())))) (propagated-inputs (list ;; Required by gdk-pixbuf-2.0.pc diff --git a/gnu/packages/libidn.scm b/gnu/packages/libidn.scm index 7c8b77f6fb..e21cbb0e69 100644 --- a/gnu/packages/libidn.scm +++ b/gnu/packages/libidn.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012 Andreas Enge <andreas@enge.fr> -;;; Copyright © 2016, 2017, 2021 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2017, 2021, 2022 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org> @@ -34,14 +34,14 @@ (define-public libidn (package (name "libidn") - (version "1.37") + (version "1.38") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/libidn/libidn-" version ".tar.gz")) (sha256 (base32 - "1hljls9rkilh04dwiwg388wk8djkac8idijrdysqq2nqbh6rg3iw")))) + "1xphpfw58il0vb14nvd0rgfkacj76rchv8nr9nqkpkapyx0bh06y")))) (build-system gnu-build-system) ;; FIXME: No Java and C# libraries are currently built. (arguments @@ -60,14 +60,14 @@ Java libraries.") (define-public libidn2 (package (name "libidn2") - (version "2.3.1") + (version "2.3.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/libidn/" name "-" version ".tar.gz")) (sha256 (base32 - "0b8gsksj2g9f4iywwdma3v4jcg7i9rqvdxfmclwvbf1n72a89xla")))) + "14agfrv7lhwba9l20966kmp96ppzbyr9bld9g4shks3qwza0r53n")))) (inputs (list libunistring)) (build-system gnu-build-system) diff --git a/gnu/packages/libunistring.scm b/gnu/packages/libunistring.scm index fda839be54..eccd053a35 100644 --- a/gnu/packages/libunistring.scm +++ b/gnu/packages/libunistring.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> -;;; Copyright © 2016, 2018 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2018, 2022 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org> @@ -27,6 +27,7 @@ #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix gexp) #:use-module (guix build-system gnu) #:use-module (gnu packages) #:use-module (gnu packages base)) @@ -34,7 +35,7 @@ (define-public libunistring (package (name "libunistring") - (version "0.9.10") + (version "1.0") (source (origin (method url-fetch) (uri (string-append @@ -42,7 +43,7 @@ version ".tar.xz")) (sha256 (base32 - "1mq57h06622m6qc5cv347fc3qk5mj840axw3c0vd7qmnwk1v53zb")))) + "0h97qx3c4970wvh25g51sjgz54xn37lrfy95dg97xmvmkys5basv")))) (propagated-inputs (libiconv-if-needed)) (outputs '("out" "static")) (build-system gnu-build-system) @@ -50,21 +51,20 @@ ;; Work around parallel build issue whereby C files may be compiled before ;; config.h is built: see <http://hydra.gnu.org/build/59381/nixlog/2/raw> and ;; <http://lists.openembedded.org/pipermail/openembedded-core/2012-April/059850.html>. - '(#:parallel-build? #f - #:phases (modify-phases %standard-phases - (add-after 'install 'move-static-library - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (static (assoc-ref outputs "static"))) - (with-directory-excursion (string-append out "/lib") - (install-file "libunistring.a" - (string-append static "/lib")) - (delete-file "libunistring.a") - #t))))))) + (list + #:parallel-build? #f + #:phases + #~(modify-phases %standard-phases + (add-after 'install 'move-static-library + (lambda* (#:key outputs #:allow-other-keys) + (with-directory-excursion (string-append #$output "/lib") + (install-file "libunistring.a" + (string-append #$output:static "/lib")) + (delete-file "libunistring.a"))))))) (synopsis "C library for manipulating Unicode strings") (description "GNU libunistring is a library providing functions to manipulate Unicode strings and for manipulating C strings according to the Unicode standard.") (home-page "https://www.gnu.org/software/libunistring/") - (license (list lgpl3+ gpl2)))) + (license (list lgpl3+ gpl2+)))) diff --git a/gnu/packages/libusb.scm b/gnu/packages/libusb.scm index 45cc2cda0d..9d56b935a8 100644 --- a/gnu/packages/libusb.scm +++ b/gnu/packages/libusb.scm @@ -54,7 +54,7 @@ (define-public libusb (package (name "libusb") - (version "1.0.24") + (version "1.0.25") (source (origin (method url-fetch) @@ -62,7 +62,7 @@ "releases/download/v" version "/libusb-" version ".tar.bz2")) (sha256 - (base32 "0amilbi5qncdnrds3ji21vbiz1wvdm1fwp5qrxnk49xkyy2jdzby")))) + (base32 "0j88ym7afy4wj3x789zzxsr04asyjy0mw29gf31blzkrg8cyya4a")))) (build-system gnu-build-system) ;; XXX: Enabling udev is now recommended, but eudev indirectly depends on diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index b47afea0c6..53b341d7c6 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -50,6 +50,7 @@ ;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com> ;;; Copyright © 2020 David Dashyan <mail@davie.li> ;;; Copyright © 2020 pukkamustard <pukkamustard@posteo.net> +;;; Copyright © 2021 Solene Rapenne <solene@perso.pw> ;;; Copyright © 2021 B. Wilson <elaexuotee@wilsonb.com> ;;; Copyright © 2021 Ivan Gankevich <i.gankevich@spbu.ru> ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> @@ -1591,7 +1592,8 @@ which need to be installed separately.") (sha256 (base32 "1z4jayf69qyyxln1gl6ch4qxfd66ib1g42garnrv2d8i1drl0790")) - (patches (search-patches "linux-pam-no-setfsuid.patch")))) + (patches (search-patches "linux-pam-unix_chkpwd.patch" + "linux-pam-no-setfsuid.patch")))) (build-system gnu-build-system) (native-inputs diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm index a434c70576..1c1d82758b 100644 --- a/gnu/packages/man.scm +++ b/gnu/packages/man.scm @@ -10,6 +10,7 @@ ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net> ;;; Copyright © 2021 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> +;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -125,14 +126,14 @@ a flexible and convenient way.") (define-public man-db (package (name "man-db") - (version "2.9.4") + (version "2.10.2") (source (origin (method url-fetch) (uri (string-append "mirror://savannah/man-db/man-db-" version ".tar.xz")) (sha256 (base32 - "0mk7n7yn6scy785jhg1j14b3q9l0cgvpry49r0ldjsnizbnrjv5n")))) + "0kaiymd5lh4dnp6z15fnvfg0ir81kdxp5l690ccp64ra956rb5zf")))) (build-system gnu-build-system) (arguments (list #:phases @@ -145,9 +146,7 @@ a flexible and convenient way.") (substitute* file (("#! /bin/sh") (string-append "#!" (which "sh"))))) - (remove file-is-directory? - (find-files "src/tests" ".*"))) - #t))) + (find-files "src/tests"))))) (add-after 'unpack 'patch-absolute-paths (lambda* (#:key inputs #:allow-other-keys) (substitute* "src/man.c" @@ -160,64 +159,53 @@ a flexible and convenient way.") (("groff_preconv = NULL") (string-append "groff_preconv = \"" (assoc-ref inputs "groff-minimal") - "/bin/preconv\""))) - #t))) + "/bin/preconv\"")))))) #:configure-flags - #~(let ((groff (assoc-ref %build-inputs "groff")) - (groff-minimal (assoc-ref %build-inputs "groff-minimal")) - (less (assoc-ref %build-inputs "less")) - (gzip (assoc-ref %build-inputs "gzip")) - (bzip2 (assoc-ref %build-inputs "bzip2")) - (xz (assoc-ref %build-inputs "xz")) - (util (assoc-ref %build-inputs "util-linux"))) - ;; Invoke groff, less, gzip, bzip2, & xz directly from the store. - (append (list ;; Disable setuid man user. - "--disable-setuid" - ;; Don't constrain ownership of system-wide cache files. - ;; Otherwise creating the manpage database fails with - ;; man-db > 2.7.5. - "--disable-cache-owner" - (string-append "--with-pager=" less "/bin/less") - (string-append "--with-gzip=" gzip "/bin/gzip") - (string-append "--with-bzip2=" bzip2 "/bin/gzip") - (string-append "--with-xz=" xz "/bin/xz") - (string-append "--with-col=" util "/bin/col") - ;; The default systemd directories ignore --prefix. - ;; XXX TODO: Replace with simply #$OUTPUT on staging. - (string-append "--with-systemdsystemunitdir=" - #$(if (%current-target-system) - #~#$output - #~%output) - "/lib/systemd/system") - (string-append "--with-systemdtmpfilesdir=" - #$(if (%current-target-system) - #~#$output - #~%output) - "/lib/tmpfiles.d")) - (map (lambda (prog) - (string-append "--with-" prog "=" groff-minimal - "/bin/" prog)) - '("nroff" "eqn" "neqn" "tbl" "refer" "pic")))) - + #~(cons* + ;; Disable setuid man user. + "--disable-setuid" + ;; Don't constrain ownership of system-wide cache files. + ;; Otherwise creating the manpage database fails with + ;; man-db > 2.7.5. + "--disable-cache-owner" + (string-append "--with-pager=" + (search-input-file %build-inputs "bin/less")) + (string-append "--with-gzip=" + (search-input-file %build-inputs "bin/gzip")) + (string-append "--with-bzip2=" + (search-input-file %build-inputs "bin/bzip2")) + (string-append "--with-xz=" + (search-input-file %build-inputs "bin/xz")) + (string-append "--with-zstd=" + (search-input-file %build-inputs "bin/zstd")) + (string-append "--with-col=" + (search-input-file %build-inputs "bin/col")) + ;; The default systemd directories ignore --prefix. + (string-append "--with-systemdsystemunitdir=" + #$output "/lib/systemd/system") + (string-append "--with-systemdtmpfilesdir=" + #$output "/lib/tmpfiles.d") + (map (lambda (prog) + (string-append + "--with-" prog "=" + #$(this-package-input "groff-minimal") + (string-append "/bin/" prog))) + '("nroff" "eqn" "neqn" "tbl" "refer" "pic"))) ;; At run time we should refer to GROFF-MINIMAL, not GROFF (the latter ;; pulls in Perl.) - #:disallowed-references - (list groff) - - #:modules '((guix build gnu-build-system) - (guix build utils) - (srfi srfi-1)))) + #:disallowed-references (list groff))) (native-inputs - (list pkg-config flex groff)) ;needed at build time (troff, grops, soelim, etc.) + (list pkg-config flex + ;; Groff is needed at build time for troff, grops, soelim, etc. + groff)) (inputs (list gdbm groff-minimal less libpipeline - ;; FIXME: 4.8 and later can use libseccomp, but it causes test - ;; failures in the build chroot. - ;;("libseccomp" ,libseccomp) - util-linux)) + libseccomp + util-linux + zstd)) (native-search-paths (list (search-path-specification (variable "MANPATH") diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 83f0a1810b..1c408a1520 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -5525,6 +5525,8 @@ set.") texlive-caption texlive-cm texlive-etoolbox + texlive-fancyhdr + texlive-fancyvrb texlive-jknappen texlive-sectsty texlive-tex-gyre @@ -5535,8 +5537,6 @@ set.") texlive-latex-cmap texlive-latex-colortbl texlive-latex-etoc - texlive-latex-fancyhdr - texlive-latex-fancyvrb texlive-latex-float texlive-latex-fncychap texlive-latex-framed @@ -5554,6 +5554,7 @@ set.") texlive-latex-tocloft texlive-latex-upquote texlive-latex-varwidth + texlive-titlesec texlive-ulem texlive-wasysym texlive-wrapfig)))) diff --git a/gnu/packages/nettle.scm b/gnu/packages/nettle.scm index 27bd9efc60..5d89c931ae 100644 --- a/gnu/packages/nettle.scm +++ b/gnu/packages/nettle.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016, 2021 Mark H Weaver <mhw@netris.org> -;;; Copyright © 2017, 2020, 2021 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2017, 2020-2022 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; ;;; This file is part of GNU Guix. @@ -77,14 +77,14 @@ themselves.") ;; This version is not API-compatible with version 2. In particular, lsh ;; cannot use it yet. So keep it separate. (package (inherit nettle-2) - (version "3.7.3") + (version "3.8") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/nettle/nettle-" version ".tar.gz")) (sha256 (base32 - "1w5wwc3q0r97d2ifhx77cw7y8s20bm8x52is9j93p2h47yq5w7v6")))) + "1rp86kr1jcr1nmar81h8wd4r9fjh90d0s5lcn12gd661h62ccxkm")))) (arguments (substitute-keyword-arguments (package-arguments nettle-2) ((#:configure-flags flags) diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index 19fd3b44fc..ffa6d5ae52 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -953,7 +953,7 @@ and SSH, and it can use both TCP and UDP as transport mechanisms.") (define-public socat (package (name "socat") - (version "1.7.4.1") + (version "1.7.4.3") (source (origin (method url-fetch) (uri (string-append @@ -961,7 +961,7 @@ and SSH, and it can use both TCP and UDP as transport mechanisms.") version ".tar.bz2")) (sha256 (base32 - "1sbmqqvni3ss9wyay6ik5v81kxffkra80mh4ypgj74g82iba5b1z")))) + "01w0hpqf5xmgn40s1ablfd4y67dlrx5y9zlx24spc1qm8h81hwyl")))) (build-system gnu-build-system) (arguments '(#:tests? #f)) ; no test suite (inputs (list openssl)) @@ -2283,7 +2283,7 @@ sockets in Perl.") (inputs (list dbus zlib)) (arguments - `(#:phases + '(#:phases (modify-phases %standard-phases (replace 'check (lambda* (#:key tests? #:allow-other-keys) diff --git a/gnu/packages/nss.scm b/gnu/packages/nss.scm index 5e719ad5b8..b18c9213a3 100644 --- a/gnu/packages/nss.scm +++ b/gnu/packages/nss.scm @@ -29,6 +29,7 @@ #:use-module (guix gexp) #:use-module (guix download) #:use-module (guix build-system gnu) + #:use-module (guix build-system mozilla) #:use-module ((guix licenses) #:prefix license:) #:use-module (gnu packages) #:use-module (gnu packages bash) @@ -49,7 +50,7 @@ (sha256 (base32 "1j5b2m8cjlhnnv8sq34587avaagkqvh521w4f95miwgvsn3xlaap")))) - (build-system gnu-build-system) + (build-system mozilla-build-system) (inputs ;; For 'compile-et.pl' and 'nspr-config'. (list perl ;for 'compile-et.pl' @@ -69,16 +70,7 @@ (list "--disable-static" "--enable-64bit" (string-append "LDFLAGS=-Wl,-rpath=" - (assoc-ref %outputs "out") "/lib") - ;; Mozilla deviates from Autotools conventions - ;; due to historical reasons. Adjust to Mozilla conventions, - ;; otherwise the Makefile will try to use TARGET-gcc - ;; as a ‘native’ compiler. - ,@(if (%current-target-system) - `(,(string-append "--host=" - (nix-system->gnu-triplet (%current-system))) - ,(string-append "--target=" (%current-target-system))) - '())) + (assoc-ref %outputs "out") "/lib")) ;; Use fixed timestamps for reproducibility. #:make-flags '("SH_DATE='1970-01-01 00:00:01'" ;; This is epoch 1 in microseconds. diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm index 127cfdf7aa..da140b29ad 100644 --- a/gnu/packages/password-utils.scm +++ b/gnu/packages/password-utils.scm @@ -29,6 +29,7 @@ ;;; Copyright © 2020 Jean-Baptiste Note <jean-baptiste.note@m4x.org> ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de> ;;; Copyright © 2020 Vinicius Monego <monego@posteo.net> +;;; Copyright © 2020 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at> ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz> ;;; Copyright © 2020 Hartmut Goebel <h.goebel@crazy-compilers.com> diff --git a/gnu/packages/patches/gash-utils-ls-test.patch b/gnu/packages/patches/gash-utils-ls-test.patch deleted file mode 100644 index e1dfb9c23b..0000000000 --- a/gnu/packages/patches/gash-utils-ls-test.patch +++ /dev/null @@ -1,25 +0,0 @@ -'ls.scm' monkey-patches (ice-9 getopt-long) to allow it to recognize '-1' -as a valid option. Unfortunately, monkey patching no longer works with -Guile 3.0 due to inlining, so change the test to make do without '-1'. - -diff --git a/tests/core-utils.org b/tests/core-utils.org -index d35ede8..22718e3 100644 ---- a/tests/core-utils.org -+++ b/tests/core-utils.org -@@ -93,14 +93,11 @@ - * ls - :script: - #+begin_src sh -- ls -1 tests/data/star -+ ls tests/data/star - #+end_src - :stdout: - #+begin_example -- 0 -- 1 -- 2 -- 3 -+ 0 1 2 3 - #+end_example - - * test-file diff --git a/gnu/packages/patches/gettext-libunicode-update.patch b/gnu/packages/patches/gettext-libunicode-update.patch new file mode 100644 index 0000000000..2a67f4803a --- /dev/null +++ b/gnu/packages/patches/gettext-libunicode-update.patch @@ -0,0 +1,99 @@ +https://git.savannah.gnu.org/gitweb/?p=gettext.git;a=commit;h=56dc658db752c2894861ee574866d507f12a17f8 +Due to the encoding it needs to be retrieved from a git clone. + +commit 56dc658db752c2894861ee574866d507f12a17f8 +Author: Bruno Haible <bruno@clisp.org> +Date: Sun Jan 2 15:43:41 2022 +0100 + + Update after gnulib changed. + + * gettext-tools/tests/msgcat-17: Update test for changed libunistring line + breaking behaviour. + * gettext-tools/tests/msgfilter-sr-latin-1: Likewise. + * gettext-tools/tests/msgmerge-11: Likewise. + * gettext-tools/tests/xgettext-python-1: Likewise. + +diff --git a/gettext-tools/tests/msgcat-17 b/gettext-tools/tests/msgcat-17 +index 8fecc4039..c4aa220b9 100755 +--- a/gettext-tools/tests/msgcat-17 ++++ b/gettext-tools/tests/msgcat-17 +@@ -39,9 +39,9 @@ msgstr "" + #, c-format + msgid "write error of a big result on a too small disk% s% s" + msgstr "" +-"Fehler beim Schreiben eines großen Ergebnisses auf eine zu kleine Platte% s" +-"% smit der jederzeitigen Möglichkeit eines Fehlers in jedem Moment und an " +-"jeder Stelle" ++"Fehler beim Schreiben eines großen Ergebnisses auf eine zu kleine " ++"Platte% s% smit der jederzeitigen Möglichkeit eines Fehlers in jedem Moment " ++"und an jeder Stelle" + EOF + + : ${DIFF=diff} +diff --git a/gettext-tools/tests/msgfilter-sr-latin-1 b/gettext-tools/tests/msgfilter-sr-latin-1 +index c1cc97875..29e68c04f 100755 +--- a/gettext-tools/tests/msgfilter-sr-latin-1 ++++ b/gettext-tools/tests/msgfilter-sr-latin-1 +@@ -20,8 +20,8 @@ msgstr "" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=CP1251\n" + "Content-Transfer-Encoding: 8bit\n" +-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : (n%10>=2 && n" +-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" ++"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : (n%10>=2 && " ++"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + + #: ../gettext-tools/lib/closeout.c:64 + msgid "write error" +@@ -332,8 +332,8 @@ msgstr "" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : (n%10>=2 && n" +-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" ++"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : (n%10>=2 && " ++"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + + #: ../gettext-tools/lib/closeout.c:64 + msgid "write error" +diff --git a/gettext-tools/tests/msgmerge-11 b/gettext-tools/tests/msgmerge-11 +index ed49db95a..888855940 100755 +--- a/gettext-tools/tests/msgmerge-11 ++++ b/gettext-tools/tests/msgmerge-11 +@@ -19,8 +19,8 @@ msgstr "" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=ISO-8859-1\n" + "Content-Transfer-Encoding: 8bit\n" +-"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" +-"%100==4 ? 2 : 3);\n" ++"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || " ++"n%100==4 ? 2 : 3);\n" + + #:foobar.c:29 + #, c-format +@@ -72,8 +72,8 @@ msgstr "" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=ISO-8859-1\n" + "Content-Transfer-Encoding: 8bit\n" +-"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" +-"%100==4 ? 2 : 3);\n" ++"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || " ++"n%100==4 ? 2 : 3);\n" + + #: foobar.c:32 + #, fuzzy, c-format +diff --git a/gettext-tools/tests/xgettext-python-1 b/gettext-tools/tests/xgettext-python-1 +index 4901c71e3..9695abda4 100755 +--- a/gettext-tools/tests/xgettext-python-1 ++++ b/gettext-tools/tests/xgettext-python-1 +@@ -61,8 +61,8 @@ msgstr "" + #. interpret_ansic = false, interpret_unicode = false + msgid "" + "abc\\\n" +-"\\\\def\\'ghi\\\"jkl\\a\\b\\f\\n\\r\\t\\v x\\040x\\x7ey" +-"\\u0142\\U00010123\\N{LATIN SMALL LETTER Z}" ++"\\\\def\\'ghi\\\"jkl\\a\\b\\f\\n\\r\\t\\v " ++"x\\040x\\x7ey\\u0142\\U00010123\\N{LATIN SMALL LETTER Z}" + msgstr "" + + #. interpret_ansic = true, interpret_unicode = true diff --git a/gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch b/gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch index 956fa617c3..c23b054a39 100644 --- a/gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch +++ b/gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch @@ -1,11 +1,20 @@ -# Names of libraries included in typelib files are opened by dlopen. Here we -# add the full path. -# -# This patch was provided by Luca Bruno <lucabru@src.gnome.org> for -# 'gobject-introspection' 1.40.0 in Nix. -# -# It has since been updated to work with newer versions of -# gobject-introspection. +Names of libraries included in typelib files are opened by dlopen. +Here we add the full path. + +This patch was provided by Luca Bruno <lucabru@src.gnome.org>, +for 'gobject-introspection' 1.40.0 in Nix. + +It has since been updated to work with newer versions of +gobject-introspection. +--- + giscanner/scannermain.py | 37 ++++++++++++++++++++++++++++++++++++ + giscanner/shlibs.py | 30 ++++++++++++++++++++--------- + giscanner/utils.py | 15 +++++---------- + tests/scanner/test_shlibs.py | 3 ++- + 4 files changed, 65 insertions(+), 20 deletions(-) + +diff --git a/giscanner/scannermain.py b/giscanner/scannermain.py +index 957ba0b7..78f9b11b 100644 --- a/giscanner/scannermain.py +++ b/giscanner/scannermain.py @@ -95,6 +95,39 @@ def get_windows_option_group(parser): @@ -48,7 +57,7 @@ def _get_option_parser(): parser = optparse.OptionParser('%prog [options] sources', version='%prog ' + giscanner.__version__) -@@ -205,6 +238,10 @@ match the namespace prefix.""") +@@ -214,6 +247,10 @@ match the namespace prefix.""") parser.add_option("", "--filelist", action="store", dest="filelist", default=[], help="file containing headers and sources to be scanned") @@ -59,6 +68,8 @@ group = get_preprocessor_option_group(parser) parser.add_option_group(group) +diff --git a/giscanner/shlibs.py b/giscanner/shlibs.py +index 9f8ab5df..8aa37c99 100644 --- a/giscanner/shlibs.py +++ b/giscanner/shlibs.py @@ -57,6 +57,14 @@ def _ldd_library_pattern(library_name): @@ -76,7 +87,7 @@ # This is a what we do for non-la files. We assume that we are on an # ELF-like system where ldd exists and the soname extracted with ldd is # a filename that can be opened with dlopen(). -@@ -106,7 +112,8 @@ def _resolve_non_libtool(options, binary, libraries): +@@ -108,7 +116,8 @@ def _resolve_non_libtool(options, binary, libraries): output = output.decode("utf-8", "replace") shlibs = resolve_from_ldd_output(libraries, output) @@ -86,7 +97,7 @@ def sanitize_shlib_path(lib): -@@ -115,19 +122,18 @@ def sanitize_shlib_path(lib): +@@ -117,19 +126,18 @@ def sanitize_shlib_path(lib): # In case we get relative paths on macOS (like @rpath) then we fall # back to the basename as well: # https://gitlab.gnome.org/GNOME/gobject-introspection/issues/222 @@ -111,7 +122,7 @@ if len(patterns) == 0: return [] -@@ -139,8 +145,12 @@ def resolve_from_ldd_output(libraries, output): +@@ -141,8 +149,12 @@ def resolve_from_ldd_output(libraries, output): if line.endswith(':'): continue for word in line.split(): @@ -126,10 +137,11 @@ if m: del patterns[library] shlibs.append(m.group()) - +diff --git a/giscanner/utils.py b/giscanner/utils.py +index 45807f17..8a319cd1 100644 --- a/giscanner/utils.py +++ b/giscanner/utils.py -@@ -111,17 +111,11 @@ def extract_libtool_shlib(la_file): +@@ -113,16 +113,11 @@ def extract_libtool_shlib(la_file): if dlname is None: return None @@ -141,8 +153,7 @@ - if libdir is None: - return dlbasename - return libdir + '/' + dlbasename -- # From the comments in extract_libtool(), older libtools had -- # a path rather than the raw dlname +- # Older libtools had a path rather than the raw dlname - return os.path.basename(dlname) + dlbasename = os.path.basename(dlname) + libdir = _extract_libdir_field(la_file) @@ -151,10 +162,12 @@ + return libdir + '/' + dlbasename - def extract_libtool(la_file): + # Returns arguments for invoking libtool, if applicable, otherwise None +diff --git a/tests/scanner/test_shlibs.py b/tests/scanner/test_shlibs.py +index a8337c60..7f123103 100644 --- a/tests/scanner/test_shlibs.py +++ b/tests/scanner/test_shlibs.py -@@ -40,6 +64,7 @@ class TestLddParser(unittest.TestCase): +@@ -40,7 +40,8 @@ class TestLddParser(unittest.TestCase): self.assertEqual( sanitize_shlib_path('/foo/bar'), @@ -163,4 +176,7 @@ + '/foo/bar') def test_unresolved_library(self): -output = '' + output = '' +-- +2.33.0 + diff --git a/gnu/packages/patches/gobject-introspection-cc.patch b/gnu/packages/patches/gobject-introspection-cc.patch index 6a86b56b44..748a1a0a89 100644 --- a/gnu/packages/patches/gobject-introspection-cc.patch +++ b/gnu/packages/patches/gobject-introspection-cc.patch @@ -1,14 +1,22 @@ Use gcc as the default C compiler if CC is not set. -diff -ru gobject-introspection-1.58.1.orig/giscanner/__init__.py gobject-introspection-1.58.1/giscanner/__init__.py ---- gobject-introspection-1.58.1.orig/giscanner/__init__.py 1970-01-01 01:00:00.000000000 +0100 -+++ gobject-introspection-1.58.1/giscanner/__init__.py 2018-12-03 13:33:28.788971299 +0100 -@@ -22,6 +22,8 @@ +--- + giscanner/__init__.py | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/giscanner/__init__.py b/giscanner/__init__.py +index 7c2f365a..607fe341 100644 +--- a/giscanner/__init__.py ++++ b/giscanner/__init__.py +@@ -21,6 +21,8 @@ import os builddir = os.environ.get('UNINSTALLED_INTROSPECTION_BUILDDIR') if builddir is not None: - __path__.append(os.path.join(builddir, 'giscanner')) + __path__.append(os.path.join(builddir, 'giscanner')) # type: ignore # mypy issue #1422 +if not 'CC' in os.environ: + os.environ['CC'] = 'gcc' try: from ._version import __version__ except ImportError: +-- +2.33.0 + diff --git a/gnu/packages/patches/libtool-skip-tests2.patch b/gnu/packages/patches/libtool-skip-tests2.patch index 3f86191b4f..91beaa903e 100644 --- a/gnu/packages/patches/libtool-skip-tests2.patch +++ b/gnu/packages/patches/libtool-skip-tests2.patch @@ -16,7 +16,7 @@ Skip the nopic test on ARM, MIPS and RISC-V systems. @@ -8741,7 +8741,7 @@ { set +x - $as_echo "$at_srcdir/demo.at:535: case \$host in + $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 @@ -24,7 +24,7 @@ Skip the nopic test on ARM, MIPS and RISC-V systems. *-solaris*|*-sunos*) @@ -8766,7 +8766,7 @@ " - at_fn_check_prepare_notrace 'a `...` command substitution' "demo.at:535" + 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*) diff --git a/gnu/packages/patches/linux-pam-unix_chkpwd.patch b/gnu/packages/patches/linux-pam-unix_chkpwd.patch new file mode 100644 index 0000000000..0e865ff18c --- /dev/null +++ b/gnu/packages/patches/linux-pam-unix_chkpwd.patch @@ -0,0 +1,9 @@ +unix_chkpwd is designed to have a suid bit, but it's not possible to set it +for files in the store. This patch tells unix_pam.so to look for +unix_chkpwd in setuid program directory on Guix System. + +--- a/modules/pam_unix/Makefile.in ++++ b/modules/pam_unix/Makefile.in +@@ -651,1 +651,1 @@ +- -DCHKPWD_HELPER=\"$(sbindir)/unix_chkpwd\" \ ++ -DCHKPWD_HELPER=\"/run/setuid-programs/unix_chkpwd\" \ diff --git a/gnu/packages/patches/python2-pyopenssl-openssl-compat.patch b/gnu/packages/patches/python2-pyopenssl-openssl-compat.patch new file mode 100644 index 0000000000..a185f4172d --- /dev/null +++ b/gnu/packages/patches/python2-pyopenssl-openssl-compat.patch @@ -0,0 +1,51 @@ +Adjust for OpenSSL 1.1.1: + + https://github.com/pyca/pyopenssl/issues/1043 + +Taken from upstream: + + https://github.com/pyca/pyopenssl/commit/cc5c00ae5fd3c19d07fff79b5c4a08f5e58697ad + +diff --git a/src/OpenSSL/SSL.py b/src/OpenSSL/SSL.py +index 59f21cec..fcdee047 100644 +--- a/src/OpenSSL/SSL.py ++++ b/src/OpenSSL/SSL.py +@@ -1421,6 +1421,12 @@ def set_alpn_protos(self, protos): + This list should be a Python list of bytestrings representing the + protocols to offer, e.g. ``[b'http/1.1', b'spdy/2']``. + """ ++ # Different versions of OpenSSL are inconsistent about how they handle empty ++ # proto lists (see #1043), so we avoid the problem entirely by rejecting them ++ # ourselves. ++ if not protos: ++ raise ValueError("at least one protocol must be specified") ++ + # Take the list of protocols and join them together, prefixing them + # with their lengths. + protostr = b"".join( +@@ -2449,6 +2455,12 @@ def set_alpn_protos(self, protos): + This list should be a Python list of bytestrings representing the + protocols to offer, e.g. ``[b'http/1.1', b'spdy/2']``. + """ ++ # Different versions of OpenSSL are inconsistent about how they handle empty ++ # proto lists (see #1043), so we avoid the problem entirely by rejecting them ++ # ourselves. ++ if not protos: ++ raise ValueError("at least one protocol must be specified") ++ + # Take the list of protocols and join them together, prefixing them + # with their lengths. + protostr = b"".join( +diff --git a/tests/test_ssl.py b/tests/test_ssl.py +index ffc505d8..ca363b45 100644 +--- a/tests/test_ssl.py ++++ b/tests/test_ssl.py +@@ -1928,7 +1928,7 @@ def test_alpn_call_failure(self): + protocols list. Ensure that we produce a user-visible error. + """ + context = Context(SSLv23_METHOD) +- with pytest.raises(Error): ++ with pytest.raises(ValueError): + context.set_alpn_protos([]) + + def test_alpn_set_on_connection(self): diff --git a/gnu/packages/pciutils.scm b/gnu/packages/pciutils.scm index 91e3fad33b..6b474af9c1 100644 --- a/gnu/packages/pciutils.scm +++ b/gnu/packages/pciutils.scm @@ -94,6 +94,11 @@ Each database is contained in a specific package output, such as the (arguments `(#:phases (modify-phases %standard-phases + (add-after 'unpack 'unbundle-pci.ids + (lambda* (#:key native-inputs inputs #:allow-other-keys) + (copy-file (search-input-file (or native-inputs inputs) + "share/hwdata/pci.ids") + "pci.ids"))) (replace 'configure (lambda* (#:key outputs #:allow-other-keys) ;; There's no 'configure' script, just a raw makefile. @@ -116,22 +121,29 @@ Each database is contained in a specific package output, such as the (string-append "PREFIX := " (assoc-ref outputs "out") "\n")) (("^MANDIR:=.*$") - ;; By default the thing tries to automatically - ;; determine whether to use $prefix/man or - ;; $prefix/share/man, and wrongly so. + ;; By default the thing tries to automatically + ;; determine whether to use $prefix/man or + ;; $prefix/share/man, and wrongly so. (string-append "MANDIR := " (assoc-ref outputs "out") "/share/man\n")) (("^SHARED=.*$") ;; Build libpciutils.so. "SHARED := yes\n") + (("^ZLIB=.*$") ;; Ask for zlib support, for 'pci.ids.gz' decompression. "ZLIB := yes\n") (("^IDSDIR=.*$") ;; Installation directory of 'pci.ids.gz'. - "IDSDIR = $(SHAREDIR)/hwdata\n")))) + "IDSDIR = $(SHAREDIR)/hwdata\n") + + ;; Do not install the update script nor its man page. + ((".*INSTALL.*update-pciids .*") "") + (("update-pciids update-pciids.8 ") "") + (("(.*INSTALL.*)update-pciids.8(.*)" _ head tail) + (string-append head tail))))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) ;; Install the commands, library, and .pc files. @@ -152,7 +164,7 @@ Each database is contained in a specific package output, such as the ;; No test suite. #:tests? #f)) (native-inputs - (list which pkg-config)) + (list `(,hwdata "pci") pkg-config which)) (inputs `(,@(if (not (hurd-target?)) `(("kmod" ,kmod)) diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm index a0c4b4dc15..5645457411 100644 --- a/gnu/packages/pdf.scm +++ b/gnu/packages/pdf.scm @@ -82,6 +82,7 @@ #:use-module (gnu packages lua) #:use-module (gnu packages man) #:use-module (gnu packages markup) + #:use-module (gnu packages nss) #:use-module (gnu packages pcre) #:use-module (gnu packages perl) #:use-module (gnu packages photo) @@ -222,32 +223,48 @@ times. If you have a second page, Flyer Composer can arrange it the same way This package contains only the command line tool. If you like to use the gui, please install the @code{flyer-composer-gui} package."))) +(define poppler-tests + (let ((poppler-version "22.01.0") ; bump when bumping poppler version + (revision "0") + (commit "0762e0144143e680e24ec8d4c34c46c3716b8713")) + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.freedesktop.org/poppler/test.git") + (commit commit))) + (file-name (git-file-name "poppler-tests" + (git-version poppler-version revision commit))) + (sha256 + (base32 + "1nwgwcddj5fiq200p4f07fl0i5f885c1nfzmvpc6q9p55qxp6brv"))))) + (define-public poppler (package (name "poppler") - (version "21.07.0") + (version "22.01.0") (source (origin (method url-fetch) (uri (string-append "https://poppler.freedesktop.org/poppler-" version ".tar.xz")) (sha256 (base32 - "1m54hsi8z6c13jdbjwz55flkra1mahmkw2igavbf8p86d2gv4sp2")))) + "0giin9klpj7264n4rl8qwvc6rh650ap2qg39bhz431jvdc2r6d3x")))) (build-system cmake-build-system) ;; FIXME: ;; use libcurl: no - (inputs `(("fontconfig" ,fontconfig) - ("freetype" ,freetype) - ("libjpeg" ,libjpeg-turbo) - ("libpng" ,libpng) - ("libtiff" ,libtiff) - ("lcms" ,lcms) - ("openjpeg" ,openjpeg) - ("zlib" ,zlib) - - ;; To build poppler-glib (as needed by Evince), we need Cairo and - ;; GLib. But of course, that Cairo must not depend on Poppler. - ("cairo" ,cairo-sans-poppler))) + (inputs (list fontconfig + freetype + libjpeg-turbo + libpng + libtiff + lcms + nss ;for 'pdfsig' + openjpeg + poppler-data + zlib + ;; To build poppler-glib (as needed by Evince), we need Cairo and + ;; GLib. But of course, that Cairo must not depend on Poppler. + cairo-sans-poppler)) (propagated-inputs ;; As per poppler-cairo and poppler-glib.pc. ;; XXX: Ideally we'd propagate Cairo too, but that would require a @@ -258,22 +275,20 @@ please install the @code{flyer-composer-gui} package."))) `(,glib "bin") ; glib-mkenums, etc. gobject-introspection)) (arguments - `(#:tests? #f ;no test data provided with the tarball - #:configure-flags - (let* ((out (assoc-ref %outputs "out")) - (lib (string-append out "/lib"))) - (list "-DENABLE_UNSTABLE_API_ABI_HEADERS=ON" ;to install header files - "-DENABLE_ZLIB=ON" - "-DENABLE_BOOST=OFF" ;disable Boost to save size - (string-append "-DCMAKE_INSTALL_LIBDIR=" lib) - (string-append "-DCMAKE_INSTALL_RPATH=" lib))) - ,@(if (%current-target-system) - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'set-PKG_CONFIG - (lambda _ - (setenv "PKG_CONFIG" ,(pkg-config-for-target)))))) - '()))) + (list + #:configure-flags + #~(list "-DENABLE_UNSTABLE_API_ABI_HEADERS=ON" ;to install header files + "-DENABLE_ZLIB=ON" + "-DENABLE_BOOST=OFF" ;disable Boost to save size + (string-append "-DCMAKE_INSTALL_LIBDIR=" #$output "/lib") + (string-append "-DCMAKE_INSTALL_RPATH=" #$output "/lib") + (string-append "-DTESTDATADIR=" #+poppler-tests)) + #:phases + (if (%current-target-system) #~%standard-phases + #~(modify-phases %standard-phases + (add-after 'unpack 'set-PKG_CONFIG + (lambda _ + (setenv "PKG_CONFIG" #$(pkg-config-for-target)))))))) (synopsis "PDF rendering library") (description "Poppler is a PDF rendering library based on the xpdf-3.0 code base.") @@ -807,46 +822,47 @@ line tools for batch rendering @command{pdfdraw}, rewriting files (define-public qpdf (package - (name "qpdf") - (version "10.0.1") - (source (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge/qpdf/qpdf/" version - "/qpdf-" version ".tar.gz")) - (sha256 - (base32 - "0yw2cpw7ygfd6jlgpwbi8vsnvv9p55zxp9h17x77z2qq733pf8jx")))) - (build-system gnu-build-system) - (arguments - `(#:disallowed-references (,perl) + (name "qpdf") + (version "10.6.0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/qpdf/qpdf/" version + "/qpdf-" version ".tar.gz")) + (sha256 + (base32 + "07jin19jlcsyxgdxny2ddb08w4kkyl9ivwjw0krn9ncv9wdsa3vg")))) + (build-system gnu-build-system) + (arguments + (list + #:disallowed-references (list perl) #:phases - (modify-phases %standard-phases - (add-before 'configure 'patch-paths - (lambda _ - (substitute* "make/libtool.mk" - (("SHELL=/bin/bash") - (string-append "SHELL=" (which "bash")))) - (substitute* (append - '("qtest/bin/qtest-driver") - (find-files "." "\\.test")) - (("/usr/bin/env") (which "env"))) - #t))))) - (native-inputs - (list pkg-config perl)) - (propagated-inputs - ;; In Requires.private of libqpdf.pc. - (list libjpeg-turbo zlib)) - (synopsis "Command-line tools and library for transforming PDF files") - (description - "QPDF is a command-line program that does structural, content-preserving + #~(modify-phases %standard-phases + (add-before 'configure 'patch-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "make/libtool.mk" + (("SHELL=/bin/bash") + (string-append "SHELL=" + (search-input-file inputs "/bin/bash")))) + (substitute* + (append '("qtest/bin/qtest-driver") + (find-files "." "\\.test")) + (("/usr/bin/env") (which "env")))))))) + (native-inputs + (list perl pkg-config)) + (propagated-inputs + ;; In Requires.private of libqpdf.pc. + (list libjpeg-turbo zlib)) + (synopsis "Command-line tools and library for transforming PDF files") + (description + "QPDF is a command-line program that does structural, content-preserving transformations on PDF files. It could have been called something like pdf-to-pdf. It includes support for merging and splitting PDFs and to manipulate the list of pages in a PDF file. It is not a PDF viewer or a program capable of converting PDF into other formats.") - ;; Prior to the 7.0 release, QPDF was licensed under Artistic 2.0. - ;; Users can still choose to use the old license at their option. - (license (list license:asl2.0 license:clarified-artistic)) - (home-page "http://qpdf.sourceforge.net/"))) + ;; Prior to the 7.0 release, QPDF was licensed under Artistic 2.0. + ;; Users can still choose to use the old license at their option. + (license (list license:asl2.0 license:clarified-artistic)) + (home-page "http://qpdf.sourceforge.net/"))) (define-public qpdfview (package diff --git a/gnu/packages/plotutils.scm b/gnu/packages/plotutils.scm index 569e44a958..e76f74d6f2 100644 --- a/gnu/packages/plotutils.scm +++ b/gnu/packages/plotutils.scm @@ -302,19 +302,19 @@ colors, styles, options and details.") texlive-epsf texlive-etoolbox texlive-fonts-ec - texlive-generic-infwarerr - texlive-generic-kvdefinekeys + texlive-infwarerr + texlive-kvdefinekeys texlive-grfext texlive-hyperref texlive-latex-base texlive-latex-geometry - texlive-latex-graphics - texlive-latex-kvoptions + texlive-graphics + texlive-kvoptions texlive-latex-media9 - texlive-latex-ocgx2 - texlive-latex-pdftexcmds texlive-oberdiek ;for ifluatex + texlive-latex-ocgx2 texlive-latex-parskip + texlive-pdftexcmds texlive-tex-texinfo)))) (inputs (list fftw diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm index cb22972d10..7f9b027a30 100644 --- a/gnu/packages/python-check.scm +++ b/gnu/packages/python-check.scm @@ -151,9 +151,9 @@ interfaces with pytest.") (add-installed-pythonpath inputs outputs) (invoke "pytest"))))))) (native-inputs - (list python-pytest-flake8 python-pytest-xdist-next python-tabulate)) + (list python-pytest-flake8 python-pytest-xdist python-tabulate)) (propagated-inputs - (list python-pytest-6 python-six)) + (list python-pytest python-six)) (home-page "https://github.com/nicoulaj/pytest-csv") (synopsis "CSV reporter for Pytest") (description "This package provides a plugin for Pytest that enables a diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm index 753f6bb503..92c1638c6d 100644 --- a/gnu/packages/python-crypto.scm +++ b/gnu/packages/python-crypto.scm @@ -421,13 +421,13 @@ for example, for recording or replaying web content.") (define-public python-certifi (package (name "python-certifi") - (version "2020.12.5") + (version "2021.10.8") (source (origin (method url-fetch) (uri (pypi-uri "certifi" version)) (sha256 (base32 - "177mdbw0livdjvp17sz6wsfrc32838m9y59v871gpgv2888raj8s")))) + "0wl8ln7acd797i1q7mmb430l6hqwhmk4bd37x8ycw02b3my4x23q")))) (build-system python-build-system) (arguments '(#:tests? #f)) ;no tests (home-page "https://certifi.io/") @@ -440,14 +440,14 @@ is used by the Requests library to verify HTTPS requests.") (define-public python-cryptography-vectors (package (name "python-cryptography-vectors") - (version "3.3.1") + (version "36.0.1") (source (origin (method url-fetch) (uri (pypi-uri "cryptography_vectors" version)) (sha256 (base32 - "192wix3sr678x21brav5hgc6j93l7ab1kh69p2scr3fsblq9qy03")))) + "166mvhhmgglqai1sjkkb76mpdkad2yykam11d2w44hs2snpr117w")))) (build-system python-build-system) (home-page "https://github.com/pyca/cryptography") (synopsis "Test vectors for the cryptography package") @@ -600,50 +600,103 @@ message digests and key derivation functions.") (list python-asn1crypto python-cffi python-six python-idna python-iso8601)) (native-inputs - (list python-cryptography-vectors-next + (list python-cryptography-vectors python-hypothesis python-pretend python-pytz python-pytest python-pytest-subtests python-setuptools-rust - rust `(,rust "cargo"))) - (properties '()))) + rust + `(,rust "cargo"))) + (home-page "https://github.com/pyca/cryptography") + (synopsis "Cryptographic recipes and primitives for Python") + (description + "cryptography is a package which provides cryptographic recipes and +primitives to Python developers. It aims to be the “cryptographic standard +library” for Python. The package includes both high level recipes, and low +level interfaces to common cryptographic algorithms such as symmetric ciphers, +message digests and key derivation functions.") + ;; Distributed under either BSD-3 or ASL2.0 + (license (list license:bsd-3 license:asl2.0)) + (properties `((python2-variant . ,(delay python2-cryptography)))))) + +(define-public python2-cryptography-vectors + (package + (inherit python-cryptography-vectors) + (version "3.3.1") + (source (origin + (method url-fetch) + (uri (pypi-uri "cryptography_vectors" version)) + (sha256 + (base32 + "192wix3sr678x21brav5hgc6j93l7ab1kh69p2scr3fsblq9qy03")))) + (arguments + (list #:python python-2)))) + +(define-public python2-cryptography + (let ((crypto (package-with-python2 + (strip-python2-variant python-cryptography)))) + (package + (inherit crypto) + (version "3.3.1") + (source (origin + (method url-fetch) + (uri (pypi-uri "cryptography" version)) + (sha256 + (base32 + "1ribd1vxq9wwz564mg60dzcy699gng54admihjjkgs9dx95pw5vy")))) + (arguments + `(#:python ,python-2 + #:phases + (modify-phases %standard-phases + ;; The sanity-check attempts attempts to import the non-existent + ;; modules "_openssl" and "_padding". + (delete 'sanity-check)))) + (native-inputs + (list python2-cryptography-vectors python2-hypothesis python2-pretend + python2-pytz python2-pytest)) + (inputs (list openssl)) + (propagated-inputs + (modify-inputs (package-propagated-inputs crypto) + (prepend python2-ipaddress + python2-backport-ssl-match-hostname + python2-enum34)))))) (define-public python-pyopenssl (package (name "python-pyopenssl") - (version "20.0.1") + (version "22.0.0") (source (origin (method url-fetch) (uri (pypi-uri "pyOpenSSL" version)) (sha256 (base32 - "0labcbh2g0jhgisd79wx9kixmi6fip28096d1xb05fj3jmsiq8sc")))) + "1gzihw09sqi71lwx97c69hab7w4rbnl6hhfrl6za3i5a4la1n2v6")))) (build-system python-build-system) (arguments - '(#:phases - (modify-phases %standard-phases - (delete 'check) - (add-after 'install 'check - (lambda* (#:key inputs outputs #:allow-other-keys) - (add-installed-pythonpath inputs outputs) - ;; PyOpenSSL runs tests against a certificate with a fixed - ;; expiry time. To ensure successful builds in the future, - ;; set the time to roughly the release date. - (invoke "faketime" "2021-05-01" "py.test" "-v" "-k" - (string-append - ;; This test tries to look up certificates from - ;; the compiled-in default path in OpenSSL, which - ;; does not exist in the build environment. - "not test_fallback_default_verify_paths " - ;; This test attempts to make a connection to - ;; an external web service. - "and not test_set_default_verify_paths " - ;; Fails on i686-linux and possibly other 32-bit platforms - ;; https://github.com/pyca/pyopenssl/issues/974 - "and not test_verify_with_time"))))))) + (list + #:phases + #~(modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + ;; PyOpenSSL runs tests against a certificate with a fixed + ;; expiry time. To ensure successful builds in the future, + ;; set the time to roughly the release date. + (invoke "faketime" "2022-02-01" "py.test" "-v" "-k" + (string-append + ;; This test tries to look up certificates from + ;; the compiled-in default path in OpenSSL, which + ;; does not exist in the build environment. + "not test_fallback_default_verify_paths " + ;; This test attempts to make a connection to + ;; an external web service. + "and not test_set_default_verify_paths " + ;; Fails on i686-linux and possibly other 32-bit platforms + ;; https://github.com/pyca/pyopenssl/issues/974 + "and not test_verify_with_time")))))))) (propagated-inputs (list python-cryptography python-six)) (inputs @@ -655,6 +708,7 @@ message digests and key derivation functions.") (description "PyOpenSSL is a high-level wrapper around a subset of the OpenSSL library.") + (properties `((python2-variant . ,(delay python2-pyopenssl)))) (license license:asl2.0))) (define-public python-ed25519 diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index 06a0d2593b..0182679acd 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -2773,17 +2773,19 @@ APIs.") (define-public python-requests (package (name "python-requests") - (version "2.26.0") + (version "2.27.1") (source (origin (method url-fetch) (uri (pypi-uri "requests" version)) (sha256 (base32 - "19q73fq7hip7b74fwls3p9x6zwvfwqcwpn6kha3zsgvrrzw5iamq")))) + "0qcsbi919d689xqlgyhw9zkppp1fs6k09wwffa3ri6d8smpwbmv8")))) (build-system python-build-system) (propagated-inputs - (list python-certifi python-chardet python-charset-normalizer - python-idna python-urllib3)) + (list python-certifi + python-charset-normalizer + python-idna + python-urllib3)) (arguments ;; FIXME: Some tests require network access. '(#:tests? #f)) @@ -3032,14 +3034,14 @@ addon for removing tracking fields from URLs.") (define-public python-urllib3 (package (name "python-urllib3") - (version "1.26.7") + (version "1.26.8") (source (origin (method url-fetch) (uri (pypi-uri "urllib3" version)) (sha256 (base32 - "1kkf6gi8a1fs0dqkf6kpmdpsy97iirvliz8q1krxp8ppaiawd1s9")))) + "0g18xk7gfm88gr4bp3f58vgvsbzwps3sq2kqhv5xyz9ylvck6z0f")))) (build-system python-build-system) (arguments `(#:tests? #f)) (propagated-inputs diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index f3d7fab973..7d73c145b7 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -7113,26 +7113,22 @@ a multithreaded image-processing system with low memory needs.") (define-public python-pycparser (package (name "python-pycparser") - (version "2.20") + (version "2.21") (source (origin (method url-fetch) (uri (pypi-uri "pycparser" version)) (sha256 (base32 - "1w0m3xvlrzq4lkbvd1ngfm8mdw64r1yxy6n7djlw6qj5d0km6ird")))) + "01kjlyn5w2nn2saj8w1rhq7v26328pd91xwgqn32z1zp2bngsi76")))) (outputs '("out" "doc")) (build-system python-build-system) - (native-inputs - (list pkg-config)) (arguments `(#:phases (modify-phases %standard-phases (replace 'check (lambda _ - (with-directory-excursion "tests" - (invoke "python" "all_tests.py")) - #t)) + (invoke "python" "-m" "unittest" "discover"))) (add-after 'install 'install-doc (lambda* (#:key outputs #:allow-other-keys) (let* ((data (string-append (assoc-ref outputs "doc") "/share")) @@ -7143,8 +7139,7 @@ a multithreaded image-processing system with low memory needs.") (copy-file (string-append "." file) (string-append doc file))) '("/README.rst" "/CHANGES" "/LICENSE")) - (copy-recursively "examples" examples) - #t)))))) + (copy-recursively "examples" examples))))))) (home-page "https://github.com/eliben/pycparser") (synopsis "C parser in Python") (description @@ -11832,14 +11827,14 @@ for OER and UPER.") (define-public python-idna (package (name "python-idna") - (version "2.10") + (version "3.3") (source (origin (method url-fetch) (uri (pypi-uri "idna" version)) (sha256 (base32 - "1xmk3s92d2vq42684p61wixfmh3qpr2mw762w0n6662vhlpqf1xk")))) + "0v8f6qjfi5i7qc5icsbv2pi24qy6k6m8wjqjvdf2sxjvlpq3yr4x")))) (build-system python-build-system) (home-page "https://github.com/kjd/idna") (synopsis "Internationalized domain names in applications") @@ -11851,6 +11846,7 @@ from the earlier standard from 2003. The library is also intended to act as a suitable drop-in replacement for the “encodings.idna” module that comes with the Python standard library but currently only supports the older 2003 specification.") + (properties `((python2-variant . ,(delay python2-idna)))) (license license:bsd-4))) (define-public python-libsass @@ -12846,12 +12842,45 @@ time.") (inputs (list inkscape pandoc)) (native-inputs - (list python-ipykernel - ;; Adding ipywidgets would create a cycle. - ;;python-ipywidgets - ;;python-pyppeteer ;TODO: package me - python-pytest - python-pytest-xdist)) + `(("python-ipykernel" ,python-ipykernel) + ;; XXX: Disabled, not in guix. + ;;("python-pyppeteer" ,python-pyppeteer) + ("python-pytest" ,python-pytest) + ("python-pytest-cov" ,python-pytest-cov) + ("python-pytest-dependency" ,python-pytest-dependency) + ("texlive" ,(texlive-updmap.cfg + (list texlive-adjustbox + texlive-amsfonts + texlive-booktabs + texlive-caption + texlive-eurosym + texlive-fancyvrb + texlive-fonts-rsfs + texlive-fontspec + texlive-grffile + texlive-hyperref + texlive-iftex + texlive-jknappen + texlive-latex-amsmath + texlive-latex-enumitem + texlive-latex-float + texlive-latex-geometry + texlive-latex-jknapltx + texlive-latex-parskip + texlive-latex-trimspaces + texlive-latex-ucs + texlive-latex-upquote + texlive-lm + texlive-mathpazo + texlive-ms + texlive-oberdiek + texlive-stringenc + texlive-tcolorbox + texlive-titling + texlive-tools + texlive-ulem + texlive-xcolor + texlive-zapfding))))) (propagated-inputs (list python-beautifulsoup4 python-bleach @@ -13191,19 +13220,40 @@ simulation, statistical modeling, machine learning and much more.") (define-public python-chardet (package (name "python-chardet") - (version "3.0.4") + (version "4.0.0") (source (origin (method url-fetch) (uri (pypi-uri "chardet" version)) (sha256 (base32 - "1bpalpia6r5x1kknbk11p1fzph56fmmnp405ds8icksd3knr5aw4")))) + "1ykr04qyhgpc0h5b7dhqw4g92b1xv7ki2ky910mhy4mlbnhm6vqd")))) (native-inputs - (list python-hypothesis python-pytest python-pytest-runner)) + (list python-pytest)) (build-system python-build-system) - ;; XXX: Incompatible with Pytest 4: <https://github.com/chardet/chardet/issues/173>. - (arguments `(#:tests? #f)) + (arguments + (list #:phases + #~(modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "pytest" "-vv"))) + ;; This package provides a 'chardetect' executable that only + ;; depends on Python, so customize the wrap phase to avoid + ;; adding pytest and friends in order to save size. + ;; (See also <https://bugs.gnu.org/25235>.) + (replace 'wrap + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((sitedir (site-packages inputs outputs)) + (python (dirname (dirname + (search-input-file + inputs "bin/python")))) + (python-sitedir + (string-append python "/lib/python" + (python-version python) + "/site-packages"))) + (wrap-program (string-append #$output "/bin/chardetect") + `("GUIX_PYTHONPATH" ":" suffix + ,(list sitedir python-sitedir))))))))) (home-page "https://github.com/chardet/chardet") (synopsis "Universal encoding detector for Python 2 and 3") (description @@ -13214,14 +13264,34 @@ automatically detect a wide range of file encodings.") (define-public python-charset-normalizer (package (name "python-charset-normalizer") - (version "2.0.5") + (version "2.0.11") (source (origin (method url-fetch) (uri (pypi-uri "charset-normalizer" version)) (sha256 - (base32 "0rr3iv2xw4rz5ijnfqk229fw85cq6p6rhqqsilm0ldzncblfg63h")))) + (base32 "071pi2kd222rjjrjdllffqv3iz4bfaj93a9bfs65907fd6fqlfcq")))) (build-system python-build-system) + (arguments + (list #:phases + #~(modify-phases %standard-phases + ;; This package provides a 'normalizer' executable that only + ;; depends on Python, so customize the wrap phase to avoid + ;; adding pytest and friends in order to save size. + ;; (See also <https://bugs.gnu.org/25235>.) + (replace 'wrap + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((sitedir (site-packages inputs outputs)) + (python (dirname (dirname + (search-input-file + inputs "bin/python")))) + (python-sitedir + (string-append python "/lib/python" + (python-version python) + "/site-packages"))) + (wrap-program (string-append #$output "/bin/normalizer") + `("GUIX_PYTHONPATH" ":" suffix + ,(list sitedir python-sitedir))))))))) (native-inputs (list python-pytest)) (home-page "https://github.com/ousret/charset_normalizer") @@ -15351,9 +15421,7 @@ syntax highlighting, markdown and more to the terminal.") (list which)) (inputs ;; python-magic needs to be able to find libmagic.so. - ;; Use a newer version because 5.39 returns bogus for some archives - ;; (notably Chromium .crx extensions), which breaks e.g. 'diffoscope'. - (list file-next)) + (list file)) (synopsis "File type identification using libmagic") (description "This module uses ctypes to access the libmagic file type @@ -25891,7 +25959,7 @@ By default it uses the open Python vulnerability database Safety DB.") (native-inputs `(("texlive" ,(texlive-updmap.cfg (list texlive-amsfonts texlive-fonts-ec - texlive-generic-iftex + texlive-iftex texlive-hyperref texlive-oberdiek texlive-lm diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm index 31d2b0f625..03add6d49d 100644 --- a/gnu/packages/radio.scm +++ b/gnu/packages/radio.scm @@ -532,7 +532,7 @@ used by RDS Spy, and audio files containing @dfn{multiplex} signals (MPX).") ("texlive" ,(texlive-updmap.cfg (list texlive-amsfonts texlive-latex-amsmath ;; TODO: Add newunicodechar. - texlive-latex-graphics))) + texlive-graphics))) ("xorg-server" ,xorg-server-for-tests))) (inputs `(("alsa-lib" ,alsa-lib) @@ -740,7 +740,7 @@ to access different radio hardware.") ("texlive" ,(texlive-updmap.cfg (list texlive-amsfonts texlive-latex-amsmath ;; TODO: Add newunicodechar. - texlive-latex-graphics))))) + texlive-graphics))))) (inputs (list fftwf)) (arguments diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 54dcae9089..0df90f3b20 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -5242,14 +5242,14 @@ across multiple CPU cores.") (define-public ruby-parser (package (name "ruby-parser") - (version "3.0.0.0") + (version "3.1.0.0") (source (origin (method url-fetch) (uri (rubygems-uri "parser" version)) (sha256 (base32 - "1jixakyzmy0j5c1rb0fjrrdhgnyryvrr6vgcybs14jfw09akv5ml")))) + "08q20ckhn58m49lccf93p0yv7pkc7hymmcz3di762kb658d5fd38")))) (build-system ruby-build-system) (arguments '(#:tests? #f)) ; tests not included in gem diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm index 4c38e2f055..89ceb41209 100644 --- a/gnu/packages/sdl.scm +++ b/gnu/packages/sdl.scm @@ -111,23 +111,24 @@ joystick, and graphics hardware.") (license license:lgpl2.1))) (define-public sdl2 - (package (inherit sdl) + (package + (inherit sdl) (name "sdl2") - (version "2.0.14") + (version "2.0.18") (source (origin - (method url-fetch) - (uri - (string-append "https://libsdl.org/release/SDL2-" - version ".tar.gz")) - (sha256 - (base32 - "1g1jahknv5r4yhh1xq5sf0md20ybdw1zh1i15lry26sq39bmn8fq")))) + (method url-fetch) + (uri + (string-append "https://libsdl.org/release/SDL2-" + version ".tar.gz")) + (sha256 + (base32 + "073iwmggkvvl82fssqb7xzbb4awraprjig6zxav0p8dz7pbhrm4l")))) (arguments (substitute-keyword-arguments (package-arguments sdl) ((#:configure-flags flags) `(append '("--disable-wayland-shared" "--enable-video-kmsdrm" "--disable-kmsdrm-shared") - ,flags)) + ,flags)) ((#:make-flags flags ''()) `(cons* ;; SDL dlopens libudev, so make sure it is in rpath. This overrides @@ -141,16 +142,17 @@ joystick, and graphics hardware.") ;; experience a bug where input events are doubled. ;; ;; For more information, see: https://dev.solus-project.com/T1721 - (append `(("dbus" ,dbus) - ("eudev" ,eudev) ; for discovering input devices - ("fcitx" ,fcitx) ; helps with CJK input - ("glib" ,glib) - ("ibus" ,ibus) - ("libxkbcommon" ,libxkbcommon) - ("libxcursor" ,libxcursor) ; enables X11 cursor support - ("wayland" ,wayland) - ("wayland-protocols" ,wayland-protocols)) - (package-inputs sdl))) + (modify-inputs (package-inputs sdl) + (prepend + dbus + eudev ;for discovering input devices + fcitx ;helps with CJK input + glib + ibus + libxkbcommon + libxcursor + wayland ;enables X11 cursor support + wayland-protocols))) (license license:bsd-3))) (define-public libmikmod diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm index 9fe0ed8e27..b7a1f4753e 100644 --- a/gnu/packages/shells.scm +++ b/gnu/packages/shells.scm @@ -897,29 +897,19 @@ scripts.") (define-public gash (package (name "gash") - (version "0.2.0") + (version "0.3.0") (source (origin (method url-fetch) (uri (string-append "mirror://savannah/gash/gash-" version ".tar.gz")) (sha256 (base32 - "13m0yz5h9nj3x40mr6wr5xcpq1lscndfwcicw3skrz801025hhgf")) - (modules '((guix build utils))) - (snippet - '(begin - ;; Allow builds with Guile 3.0. - (substitute* "configure" - (("search=\"2\\.2 2\\.0\"") - "search=\"3.0 2.2 2.0\"")) - #t)))) + "1af2jz4a6rzsshi379wzw4b8d04zvfamdhfzip2pgmk821lyqsjl")))) (build-system gnu-build-system) (native-inputs (list pkg-config)) (inputs (list guile-3.0)) - (arguments - '(#:make-flags '("XFAIL_TESTS=tests/redirects.org"))) (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 @@ -931,23 +921,14 @@ as part of the Guix bootstrap process.") (define-public gash-utils (package (name "gash-utils") - (version "0.1.0") + (version "0.2.0") (source (origin (method url-fetch) (uri (string-append "mirror://savannah/gash/gash-utils-" version ".tar.gz")) (sha256 (base32 - "0ib2p52qmbac5n0s5bys4fiwim461ps546976l1n7pwbs0avh7fk")) - (patches (search-patches "gash-utils-ls-test.patch")) - (modules '((guix build utils))) - (snippet - '(begin - ;; Allow builds with Guile 3.0. - (substitute* "configure" - (("search=\"2\\.2 2\\.0\"") - "search=\"3.0 2.2 2.0\"")) - #t)))) + "18ylb54l9lmaynapbncc1zhbsirhihznrxihhxgqrpqgyjkfbap6")))) (build-system gnu-build-system) (native-inputs (list pkg-config)) diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index bef9de16d1..9fe5bbd95e 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -374,11 +374,11 @@ as.POSIXct(if (\"\" != Sys.getenv(\"SOURCE_DATE_EPOCH\")) {\ texlive-grfext texlive-amsfonts texlive-latex-base - texlive-latex-fancyvrb - texlive-latex-graphics + texlive-fancyvrb + texlive-graphics texlive-hyperref texlive-oberdiek - texlive-latex-tools + texlive-tools texlive-latex-upquote texlive-url texlive-latex-xkeyval))) diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm index 4831cf0933..529ecee891 100644 --- a/gnu/packages/tex.scm +++ b/gnu/packages/tex.scm @@ -20,6 +20,7 @@ ;;; Copyright © 2021 Ivan Gankevich <i.gankevich@spbu.ru> ;;; Copyright © 2021 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2021 Thiago Jung Bauermann <bauermann@kolabnow.com> +;;; Copyright © 2022 Simon South <simon@simonsouth.net> ;;; Copyright © 2022 Jack Hill <jackhill@jackhill.us> ;;; ;;; This file is part of GNU Guix. @@ -3174,41 +3175,93 @@ with the required packages, constitutes what every LaTeX distribution should contain.") (license license:lppl1.3c+)))) -(define-public texlive-latex-atveryend - (package - (inherit (simple-texlive-package - "texlive-latex-atveryend" - '("/doc/latex/atveryend/README.md" - "/tex/latex/atveryend/") - (base32 - "1gz5ssxjlqa53a8blsmdk2qjahzc910ldh26xjxfxgqnqb03rqx7") - #:trivial? #t)) - (home-page "https://www.ctan.org/pkg/atveryend") - (synopsis "Hooks at the very end of a document") - (description - "This LaTeX packages provides two hooks for @code{\\end@{document@}} -that are executed after the hook of @code{\\AtEndDocument}: +(define-public texlive-atveryend + (let ((template (simple-texlive-package + "texlive-atveryend" + (list "doc/latex/atveryend/" + "source/latex/atveryend/" + "tex/latex/atveryend/") + (base32 "1rp805h0m99rxs107a798l951lyahlnp7irfklfadn2a2ljzhafn")))) + (package + (inherit template) + (outputs '("out" "doc")) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:tex-directory _ #t) + "latex/atveryend") + ((#:build-targets _ #t) + #~(list "atveryend.dtx")) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "source/latex/atveryend/"))) + (replace 'copy-files + (lambda* (#:key inputs #:allow-other-keys) + (let ((origin (assoc-ref inputs "source")) + (source (string-append #$output + "/share/texmf-dist/source")) + (doc (string-append #$output:doc + "/share/texmf-dist/doc"))) + (copy-recursively (string-append origin "/source") source) + (copy-recursively (string-append origin "/doc") doc)))) + (add-after 'copy-files 'remove-generated-file + (lambda* (#:key outputs #:allow-other-keys) + (with-directory-excursion #$output + (for-each delete-file + (find-files "." "\\.(drv|ins)$"))))))))) + (home-page "https://ctan.org/macros/latex/contrib/atveryend") + (synopsis "Hooks at the very end of a document") + (description + "This LaTeX packages provides two hooks for @code{\\end{document}} that +are executed after the hook of @code{\\AtEndDocument}: @code{\\AfterLastShipout} can be used for code that is to be executed right after the last @code{\\clearpage} before the @file{.aux} file is closed. -@code{\\AtVeryEndDocument} is used for code after closing and final reading -of the @file{.aux} file.") - (license license:lppl1.3c+))) +@code{\\AtVeryEndDocument} is used for code after closing and final reading of +the @file{.aux} file.") + (license license:lppl1.3+)))) -(define-public texlive-latex-auxhook - (package - (inherit (simple-texlive-package - "texlive-latex-auxhook" - '("/doc/latex/auxhook/README.md" - "/tex/latex/auxhook/") - (base32 - "1xh445shr00rh43nnz03xh8k2mdrxgsr03lllqpgvwhm6yzsydkf") - #:trivial? #t)) - (home-page "https://www.ctan.org/pkg/auxhook") - (synopsis "Hooks for auxiliary files") - (description - "This package provides hooks for adding code at the beginning of +(define-deprecated-package texlive-latex-atveryend texlive-atveryend) + +(define-public texlive-auxhook + (let ((template (simple-texlive-package + "texlive-auxhook" + (list "doc/latex/auxhook/" + "source/latex/auxhook/" + "tex/latex/auxhook/") + (base32 + "1qfs7bz8ryp4prr2fw4hwypnfc6yr4rc4wd8qy4rpmab0hab0vdy")))) + (package + (inherit template) + (outputs '("out" "doc")) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:tex-directory _ '()) + "latex/auxhook") + ((#:build-targets _ '()) + #~(list "auxhook.dtx")) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "source/latex/auxhook"))) + (replace 'copy-files + (lambda* (#:key inputs #:allow-other-keys) + (let ((origin (assoc-ref inputs "source")) + (source (string-append #$output + "/share/texmf-dist/source")) + (doc (string-append #$output:doc + "/share/texmf-dist/doc"))) + (copy-recursively (string-append origin "/source") source) + (copy-recursively (string-append origin "/doc") doc)))))))) + (home-page "https://www.ctan.org/pkg/auxhook") + (synopsis "Hooks for auxiliary files") + (description + "This package provides hooks for adding code at the beginning of @file{.aux} files.") - (license license:lppl1.3c+))) + (license license:lppl1.3c+)))) + +(define-deprecated-package texlive-latex-auxhook texlive-auxhook) (define-public texlive-latex-epstopdf-pkg (package @@ -3275,10 +3328,10 @@ users, via its Plain TeX version.)") (define-deprecated-package texlive-generic-epsf texlive-epsf) -(define-public texlive-latex-fancyvrb +(define-public texlive-fancyvrb (package (inherit (simple-texlive-package - "texlive-latex-fancyvrb" + "texlive-fancyvrb" (list "/doc/latex/fancyvrb/README" "/tex/latex/fancyvrb/") (base32 @@ -3295,6 +3348,8 @@ verbatim mode; build \"example\" environments (showing both result and verbatim source).") (license license:lppl1.0+))) +(define-deprecated-package texlive-latex-fancyvrb texlive-fancyvrb) + (define-public texlive-graphics-def (package (inherit (simple-texlive-package @@ -3331,6 +3386,57 @@ packages.") set default \"driver\" options for the color and graphics packages.") (license license:public-domain))) +(define-public texlive-graphics + (let ((template (simple-texlive-package + "texlive-graphics" + (list "doc/latex/graphics/" + "source/latex/graphics/" + "tex/latex/graphics/") + (base32 + "0prw1zcv4fcj3zg0kyhj0k7ax0530adl60bajzvbv3fi16d7rqlq")))) + (package + (inherit template) + (outputs '("out" "doc")) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:tex-directory _ '()) + "latex/graphics") + ((#:build-targets _ '()) + #~(list "graphics-drivers.ins" "graphics.ins")) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "source/latex/graphics"))) + (replace 'copy-files + (lambda* (#:key inputs #:allow-other-keys) + (let ((origin (assoc-ref inputs "source")) + (source (string-append #$output + "/share/texmf-dist/source")) + (doc (string-append #$output:doc + "/share/texmf-dist/doc"))) + (copy-recursively (string-append origin "/source") source) + (copy-recursively (string-append origin "/doc") doc) + ;; This file is not generated from the sources. + (install-file + (string-append + origin + "/tex/latex/graphics/graphics-2017-06-25.sty") + (string-append + #$output + "/share/texmf-dist/tex/latex/graphics"))))))))) + (propagated-inputs (list texlive-graphics-def texlive-graphics-cfg)) + (home-page "https://ctan.org/macros/latex/required/graphics") + (synopsis "The LaTeX standard graphics bundle") + (description + "This is a collection of LaTeX packages for: producing colour including +graphics (e.g., PostScript) files rotation and scaling of text in LaTeX +documents. It comprises the packages color, graphics, graphicx, trig, epsfig, +keyval, and lscape.") + (license license:lppl1.3c)))) + +(define-deprecated-package texlive-latex-graphics texlive-graphics) + (define-public texlive-greek-fontenc (package (inherit (simple-texlive-package @@ -3348,71 +3454,76 @@ set default \"driver\" options for the color and graphics packages.") for Greek text font encodings for use with fontenc.") (license license:lppl1.3+))) -(define-public texlive-latex-graphics - (package - (name "texlive-latex-graphics") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (texlive-ref "latex" "graphics")) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "0fgjl58f25zvagssz4dwmmsclzw8cr7mx00kdrbx2kcnamcb7h8d")))) - (build-system texlive-build-system) - (arguments '(#:tex-directory "latex/graphics")) - (propagated-inputs - (list texlive-graphics-cfg texlive-graphics-def)) - (home-page "https://www.ctan.org/pkg/latex-graphics") - (synopsis "LaTeX standard graphics bundle") - (description - "This is a collection of LaTeX packages for producing color, including -graphics (e.g. PostScript) files, and rotation and scaling of text in LaTeX -documents. It comprises the packages color, graphics, graphicx, trig, epsfig, -keyval, and lscape.") - (license license:lppl1.3c+))) - -(define-public texlive-latex-hycolor - (package - (inherit (simple-texlive-package - "texlive-latex-hycolor" - (list "/doc/latex/hycolor/README.md" - "/tex/latex/hycolor/") - (base32 - "026lfb4l7b3q8g6zc68siqandhb1x98cbycn7njknqva6s99aiqn") - #:trivial? #t)) - (home-page "https://www.ctan.org/pkg/latex-graphics") - (synopsis "Color for hyperref and bookmark") - (description - "This package provides the code for the @code{color} option that is +(define-public texlive-hycolor + (let ((template (simple-texlive-package + "texlive-hycolor" + (list "doc/latex/hycolor/" + "source/latex/hycolor/" + "tex/latex/hycolor/") + (base32 + "0hmkx37wwmznxjqqnca87shy7qrgqrh2cn5r941ddgivnym31xbh")))) + (package + (inherit template) + (outputs '("out" "doc")) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:tex-directory _ '()) + "latex/hycolor") + ((#:build-targets _ '()) + #~(list "hycolor.dtx")) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "source/latex/hycolor"))) + (replace 'copy-files + (lambda* (#:key inputs #:allow-other-keys) + (let ((origin (assoc-ref inputs "source")) + (source (string-append #$output + "/share/texmf-dist/source")) + (doc (string-append #$output:doc + "/share/texmf-dist/doc"))) + (copy-recursively (string-append origin "/source") source) + (copy-recursively (string-append origin "/doc") doc)))))))) + (home-page "https://www.ctan.org/pkg/latex-graphics") + (synopsis "Color for hyperref and bookmark") + (description + "This package provides the code for the @code{color} option that is used by @code{hyperref} and @code{bookmark}.") - (license license:lppl1.3c+))) + (license license:lppl1.3c+)))) + +(define-deprecated-package texlive-latex-hycolor texlive-hycolor) (define-public texlive-xcolor (let ((template (simple-texlive-package "texlive-xcolor" - (list "/doc/latex/xcolor/" - "/source/latex/xcolor/") + (list "doc/latex/xcolor/" + "dvips/xcolor/" + "source/latex/xcolor/" + "tex/latex/xcolor/") (base32 - "12q6spmpxg30alhvarjmxzigmz7lazapbrb0mc4vhbn6n1sdz7pp")))) + "1d7108b67fcaf1sgyk43ph18l0z5m35iqg3aahqs1ymzwdfnd3f7")))) (package (inherit template) + (outputs '("out" "doc")) (arguments (substitute-keyword-arguments (package-arguments template) - ((#:tex-directory _ #t) + ((#:tex-directory _ '()) "latex/xcolor") + ((#:build-targets _ '()) + #~(list "xcolor.ins")) ((#:phases phases) - `(modify-phases ,phases - (add-after 'unpack 'chdir - (lambda _ (chdir "source/latex/xcolor") #t)) - (add-after 'install 'move-files - (lambda* (#:key outputs #:allow-other-keys) - (let ((share (string-append (assoc-ref outputs "out") - "/share/texmf-dist"))) - (mkdir-p (string-append share "/dvips/xcolor")) - (rename-file (string-append share "/tex/latex/xcolor/xcolor.pro") - (string-append share "/dvips/xcolor/xcolor.pro")) - #t))))))) + #~(modify-phases #$phases + (add-after 'unpack 'chdir + (lambda _ (chdir "source/latex/xcolor") #t)) + (add-after 'install 'move-files + (lambda* (#:key outputs #:allow-other-keys) + (let ((share (string-append (assoc-ref outputs "out") + "/share/texmf-dist"))) + (mkdir-p (string-append share "/dvips/xcolor")) + (rename-file (string-append share "/tex/latex/xcolor/xcolor.pro") + (string-append share "/dvips/xcolor/xcolor.pro")) + #t))))))) ;; TODO: Propagate texlive-hyperref and many others in the next rebuild ;; cycle. Grep for '\usepackage' to see what packages it requires. ;; (propagated-inputs (list texlive-hyperref ...)) @@ -3501,51 +3612,61 @@ XML, using UTF-8 or a suitable 8-bit encoding.") (define-public texlive-hyperref (let ((template (simple-texlive-package "texlive-hyperref" - (list "/doc/latex/hyperref/" - "/source/latex/hyperref/" - ;; These files are not generated from the sources - "/tex/latex/hyperref/minitoc-hyper.sty" - "/tex/latex/hyperref/ntheorem-hyper.sty" - "/tex/latex/hyperref/xr-hyper.sty") - (base32 - "0nmbxaq676m2y9fgdji0bxqchmrli4hwhspijaszx51b3ki6bj2h")))) + (list "doc/latex/hyperref/" + "source/latex/hyperref/" + "tex/latex/hyperref/") + (base32 "052k1nygm4msaivn8245n86km4h41knivigw80q58b7rc13s6hrk")))) (package (inherit template) (arguments (substitute-keyword-arguments (package-arguments template) - ((#:tex-directory _ #t) + ((#:tex-directory _ '()) "latex/hyperref") + ((#:build-targets _ '()) + #~(list "hyperref.ins")) ((#:phases phases) - `(modify-phases ,phases - (add-after 'unpack 'chdir - (lambda _ (chdir "source/latex/hyperref") #t)))))) + #~(modify-phases #$phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "source/latex/hyperref"))) + (replace 'copy-files + (lambda* (#:key inputs #:allow-other-keys) + (let ((origin (assoc-ref inputs "source")) + (source (string-append #$output + "/share/texmf-dist/source")) + (doc (string-append #$output:doc + "/share/texmf-dist/doc"))) + (copy-recursively (string-append origin "/source") source) + (copy-recursively (string-append origin "/doc") doc) + ;; XXX: These files are not auto-generated from the + ;; sources. + (for-each (lambda (f) + (install-file + (string-append origin "/tex/latex/hyperref/" f) + (string-append + #$output + "/share/texmf-dist/tex/latex/hyperref"))) + '("minitoc-hyper.sty" + "ntheorem-hyper.sty" + "xr-hyper.sty"))))))))) (propagated-inputs - (list texlive-generic-atbegshi - texlive-generic-bitset - texlive-generic-etexcmds - texlive-generic-gettitlestring - texlive-generic-iftex - texlive-generic-infwarerr - texlive-generic-intcalc - texlive-generic-kvdefinekeys - texlive-generic-kvsetkeys - texlive-generic-ltxcmds - texlive-generic-pdfescape - texlive-latex-auxhook - texlive-latex-atveryend - texlive-latex-hycolor - texlive-latex-kvoptions - texlive-latex-letltxmacro - texlive-latex-pdftexcmds - texlive-latex-refcount - texlive-latex-rerunfilecheck + (list texlive-atbegshi + texlive-auxhook + texlive-bitset + texlive-etexcmds + texlive-gettitlestring + texlive-hycolor + texlive-intcalc + texlive-kvdefinekeys + texlive-kvsetkeys + texlive-letltxmacro + texlive-ltxcmds + texlive-pdfescape + texlive-refcount + texlive-rerunfilecheck + texlive-stringenc texlive-url - ;; TODO: Add this in next rebuild cycle. - ;;texlive-cm - ;;texlive-latex-graphics ;for keyval - ;;texlive-stringenc - ;;texlive-zapfding - )) + texlive-zapfding)) (home-page "https://www.ctan.org/pkg/hyperref") (synopsis "Extensive support for hypertext in LaTeX") (description @@ -3562,97 +3683,174 @@ pdf and HTML backends. The package is distributed with the @code{backref} and (define-deprecated-package texlive-latex-hyperref texlive-hyperref) (define-public texlive-oberdiek - (package - (name "texlive-oberdiek") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (texlive-ref "latex" "oberdiek")) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "1cadrkpdqs65gxsaszfgfd8wqp8pvpik2sjmlyq3hz5p9yna3p9m")))) - (build-system texlive-build-system) - (arguments - '(#:tex-directory "latex/oberdiek" - #:build-targets '("oberdiek.ins") - #:phases - (modify-phases %standard-phases - ;; "ifpdf.ins" is not generated, so we need to process the dtx file. - (add-after 'unpack 'do-not-process-ifpdf.ins - (lambda _ - (substitute* "oberdiek.ins" - (("ifpdf.ins") "ifpdf.dtx")) - #t))))) - (propagated-inputs - (list texlive-generic-iftex)) - (home-page "https://www.ctan.org/pkg/oberdiek") - (synopsis "Bundle of packages submitted by Heiko Oberdiek") - (description - "The bundle comprises various LaTeX packages, providing among others: + (let ((template (simple-texlive-package + "texlive-oberdiek" + (list "bibtex/bib/oberdiek/" + "doc/latex/oberdiek/" + "source/latex/oberdiek/" + "tex/generic/oberdiek/" + "tex/latex/oberdiek/") + (base32 + "00lp24fckawpy997j7zagsxv89jif40wgjq8fw502v06d225ikp3")))) + (package + (inherit template) + (outputs '("out" "doc")) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:tex-directory _ '()) + "latex/oberdiek") + ((#:build-targets _ '()) + #~(list "oberdiek.ins")) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "source/latex/oberdiek"))) + (replace 'copy-files + (lambda* (#:key inputs #:allow-other-keys) + (let ((origin (assoc-ref inputs "source")) + (source (string-append #$output + "/share/texmf-dist/source")) + (doc (string-append #$output:doc + "/share/texmf-dist/doc"))) + (copy-recursively (string-append origin "/source") source) + (copy-recursively (string-append origin "/doc") doc) + ;; XXX: `#:tex-directory' is limited to one location, but + ;; the package needs to install files elsewhere, so we do + ;; that manually here. + (with-directory-excursion origin + (let ((extra '("bibtex/bib/oberdiek" + "tex/generic/oberdiek"))) + (for-each + (lambda (d) + (for-each (lambda (f) + (install-file + f + (string-append #$output + "/share/texmf-dist/" + d))) + (find-files d))) + extra)))))))))) + (propagated-inputs + (list texlive-auxhook + texlive-grfext + texlive-grffile + texlive-iftex + texlive-infwarerr + texlive-kvoptions + texlive-pdftexcmds)) + (home-page "https://www.ctan.org/pkg/oberdiek") + (synopsis "Bundle of packages submitted by Heiko Oberdiek") + (description + "The bundle comprises various LaTeX packages, providing among others: better accessibility support for PDF files; extensible chemists reaction arrows; record information about document class(es) used; and many more.") - (license license:lppl1.3+))) + (license license:lppl1.3+)))) (define-deprecated-package texlive-latex-oberdiek texlive-oberdiek) -(define-public texlive-latex-rerunfilecheck - (package - (inherit (simple-texlive-package - "texlive-latex-rerunfilecheck" - '("/doc/latex/rerunfilecheck/" - "/tex/latex/rerunfilecheck/") - (base32 - "1myz0d5bxhxvl4220ikywh921qld8n324kk9kscqbc5iw4063g56") - #:trivial? #t)) - (propagated-inputs - (list texlive-generic-infwarerr texlive-generic-uniquecounter - texlive-latex-atveryend texlive-latex-kvoptions - texlive-latex-pdftexcmds)) - (home-page "https://www.ctan.org/pkg/rerunfilecheck") - (synopsis "Checksum based rerun checks on auxiliary files") - (description - "This package provides additional rerun warnings if some auxiliary +(define-public texlive-rerunfilecheck + (let ((template (simple-texlive-package + "texlive-rerunfilecheck" + (list "doc/latex/rerunfilecheck/" + "source/latex/rerunfilecheck/" + "tex/latex/rerunfilecheck/") + (base32 + "0f53b6dlnlrxkzj7h7x750p0489i2gg3isfqn0dlpncpq23w1r36")))) + (package + (inherit template) + (outputs '("out" "doc")) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:tex-directory _ '()) + "latex/rerunfilecheck") + ((#:build-targets _ '()) + #~(list "rerunfilecheck.dtx")) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "source/latex/rerunfilecheck"))) + (replace 'copy-files + (lambda* (#:key inputs #:allow-other-keys) + (let ((origin (assoc-ref inputs "source")) + (source (string-append #$output + "/share/texmf-dist/source")) + (doc (string-append #$output:doc + "/share/texmf-dist/doc"))) + (copy-recursively (string-append origin "/source") source) + (copy-recursively (string-append origin "/doc") doc)))))))) + (propagated-inputs + (list texlive-atveryend + texlive-infwarerr + texlive-kvoptions + texlive-pdftexcmds + texlive-uniquecounter)) + (home-page "https://www.ctan.org/pkg/rerunfilecheck") + (synopsis "Checksum based rerun checks on auxiliary files") + (description + "This package provides additional rerun warnings if some auxiliary files have changed. It is based on MD5 checksum, provided by pdfTeX.") - (license license:lppl1.3c+))) + (license license:lppl1.3c+)))) -(define-public texlive-latex-tools - (package - (name "texlive-latex-tools") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (texlive-ref "latex" "tools")) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "1vm5wfyd0vbmv31a29fc7k8y14xiw00msvdx9n7dzsn9zpfjflqs")))) - (build-system texlive-build-system) - (arguments - '(#:tex-directory "latex/tools" - #:build-targets '("tools.ins") - #:phases (modify-phases %standard-phases - (add-after 'install 'provide-array-2016-10-06.sty - (lambda* (#:key outputs #:allow-other-keys) - ;; XXX: array.sty does: - ;; "DeclareRelease{}{2016-10-06}{array-2016-10-06.sty}" - ;; ...which causes some users (hypre) to look for that - ;; file specifically. Provide it. - (with-directory-excursion (string-append - (assoc-ref outputs "out") - "/share/texmf-dist/tex" - "/latex/tools") - (symlink "array.sty" "array-2016-10-06.sty"))))))) - (home-page "https://www.ctan.org/pkg/latex-tools") - (synopsis "LaTeX standard tools bundle") - (description - "This package is a collection of (variously) simple tools provided as -part of the LaTeX required tools distribution, comprising the following -packages: afterpage, array, bm, calc, dcolumn, delarray, enumerate, fileerr, -fontsmpl, ftnright, hhline, indentfirst, layout, longtable, multicol, -rawfonts, showkeys, somedefs, tabularx, theorem, trace, varioref, verbatim, -xr, and xspace.") - (license license:lppl1.3+))) +(define-deprecated-package texlive-latex-rerunfilecheck texlive-rerunfilecheck) + +(define-public texlive-tools + (let ((template (simple-texlive-package + "texlive-tools" + (list "doc/latex/tools/" + "source/latex/tools/" + "tex/latex/tools/") + (base32 + "0c0ixkcvrlzx6sdj25ak3bx0j65qghf51w66yg5wlnpg08d3awrs")))) + (package + (inherit template) + (outputs '("out" "doc")) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:tex-directory _ '()) + "latex/tools") + ((#:build-targets _ '()) + #~(list "tools.ins")) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "source/latex/tools"))) + (replace 'copy-files + (lambda _ + (let ((origin #$(package-source this-package)) + (source (string-append #$output + "/share/texmf-dist/source")) + (doc (string-append #$output:doc + "/share/texmf-dist/doc"))) + (copy-recursively (string-append origin "/source") source) + (copy-recursively (string-append origin "/doc") doc) + ;; These files are not generated. + (let ((directory "/tex/latex/tools")) + (with-directory-excursion (string-append origin directory) + (for-each + (lambda (f) + (install-file f (string-append #$output + "/share/texmf-dist" + directory))) + '("array-2016-10-06.sty" + "array-2020-02-10.sty" + "multicol-2017-04-11.sty" + "varioref-2016-02-16.sty"))))))))))) + (home-page "https://www.ctan.org/tex-archive/macros/latex/required/tools/") + (synopsis "LaTeX standard tools bundle") + (description "This package provides a collection of simple tools that +are part of the LaTeX required tools distribution, comprising the packages: +@code{afterpage}, @code{array}, @code{bm}, @code{calc}, @code{dcolumn}, +@code{delarray}, @code{enumerate}, @code{fileerr}, @code{fontsmpl}, +@code{ftnright}, @code{hhline}, @code{indentfirst}, @code{layout}, +@code{longtable}, @code{multicol}, @code{rawfonts}, @code{showkeys}, +@code{somedefs}, @code{tabularx}, @code{theorem}, @code{trace}, +@code{varioref}, @code{verbatim}, @code{xr}, and @code{xspace}.") + (license license:lppl1.3+)))) + +(define-deprecated-package texlive-latex-tools texlive-tools) (define-public texlive-url (package @@ -4103,6 +4301,7 @@ definitions.") "0gmdzhgr0h57xhsl61c5jsp4fj4pbmdr8p6k96am5jbyrbbx121q")))) (package (inherit template) + (outputs '("out" "doc")) (arguments (substitute-keyword-arguments (package-arguments template) ((#:tex-directory _ #t) @@ -4540,7 +4739,35 @@ language that is written in a Cyrillic alphabet.") `(modify-phases ,phases (add-after 'unpack 'chdir (lambda _ - (chdir "source/latex/psnfss") #t)))))) + (chdir "source/latex/psnfss"))) + (add-after 'install 'chdir-back + (lambda _ + (chdir "../../.."))) + (add-after 'chdir-back 'clean-installed-files + (lambda _ + ;; Remove the generated .sty files from the build area as + ;; these were already copied to the default output in the + ;; "install" phase. + (delete-file-recursively "source/latex/psnfss/build"))) + (add-after 'clean-installed-files 'move-doc-files + (lambda* (#:key outputs #:allow-other-keys) + (let* ((doc (assoc-ref outputs "doc")) + (doc-root (string-append doc "/share/texmf-dist")) + (doc-path "doc/latex/psnfss") + (source-path "source/latex/psnfss")) + ;; Move the PDF documentation to the "doc" output. + (let* ((file-name "psnfss2e.pdf") + (source (string-append doc-path "/" file-name)) + (target-dir (string-append doc-root "/" doc-path))) + (mkdir-p target-dir) + (copy-file source + (string-append target-dir "/" file-name)) + (delete-file source)) + + ;; Keep the remaining files together with the package's + ;; source, as per the installation instructions. + (copy-recursively doc-path source-path) + (delete-file-recursively "doc")))))))) (native-inputs (list texlive-cm)) (home-page "https://www.ctan.org/pkg/psnfss") @@ -4587,6 +4814,7 @@ part of the LaTeX required set of packages.") texlive-cm texlive-cm-super ; to avoid bitmap fonts texlive-fonts-latex + texlive-graphics texlive-metafont texlive-latex-base texlive-kpathsea ;for mktex.opt @@ -4596,9 +4824,8 @@ part of the LaTeX required set of packages.") texlive-babel texlive-generic-babel-english texlive-latex-cyrillic - texlive-latex-graphics texlive-psnfss - texlive-latex-tools + texlive-tools texlive-tetex))) (package (name "texlive-base") @@ -5133,24 +5360,47 @@ Unicode characters. The document should be processed by (pdf)LaTeX with the Unicode option of @code{inputenc} or @code{inputenx}, or by XeLaTeX/LuaLaTeX.") (license license:lppl1.3c+))) -(define-public texlive-latex-pdftexcmds - (package - (inherit (simple-texlive-package - "texlive-latex-pdftexcmds" - '("/doc/generic/pdftexcmds/" - "/tex/generic/pdftexcmds/") - (base32 - "1hph0djbfc8hlwfc41rzlf8l3ccyyvc0n7a0qdrr9881jwd6iv1b") - #:trivial? #t)) - (propagated-inputs - (list texlive-generic-iftex texlive-generic-infwarerr - texlive-generic-ltxcmds)) - (home-page "https://www.ctan.org/pkg/pdftexcmds") - (synopsis "LuaTeX support for pdfTeX utility functions") - (description - "This package makes a number of utility functions from pdfTeX -available for luaTeX by reimplementing them using Lua.") - (license license:lppl1.3c+))) +(define-public texlive-pdftexcmds + (let ((template (simple-texlive-package + "texlive-pdftexcmds" + (list "doc/generic/pdftexcmds/" + "source/generic/pdftexcmds/" + "tex/generic/pdftexcmds/") + (base32 + "0gad1vi0r5xw7gyj1cb2cp58j4dqrw4awcfxmfrna9xbz91g4sn9")))) + (package + (inherit template) + (outputs '("out" "doc")) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:tex-directory _ '()) + "generic/pdftexcmds") + ((#:build-targets _ '()) + #~(list "pdftexcmds.dtx")) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "source/generic/pdftexcmds"))) + (replace 'copy-files + (lambda* (#:key inputs #:allow-other-keys) + (let ((origin (assoc-ref inputs "source")) + (source (string-append #$output + "/share/texmf-dist/source")) + (doc (string-append #$output:doc + "/share/texmf-dist/doc"))) + (copy-recursively (string-append origin "/source") source) + (copy-recursively (string-append origin "/doc") doc)))))))) + (propagated-inputs + (list texlive-iftex texlive-infwarerr texlive-ltxcmds)) + (home-page "https://www.ctan.org/pkg/pdftexcmds") + (synopsis "LuaTeX support for pdfTeX utility functions") + (description + "This package makes a number of utility functions from pdfTeX +available for LuaTeX by reimplementing them using Lua.") + (license license:lppl1.3c+)))) + +(define-deprecated-package texlive-latex-pdftexcmds texlive-pdftexcmds) (define-public texlive-latex-psfrag (package @@ -5189,12 +5439,12 @@ rotated.") (propagated-inputs (list texlive-latex-bigfoot ; for suffix texlive-filemod - texlive-latex-graphics + texlive-graphics texlive-latex-ifplatform texlive-latex-l3kernel ; for expl3 texlive-oberdiek texlive-latex-psfrag - texlive-latex-tools ; for shellesc + texlive-tools ; for shellesc texlive-latex-trimspaces texlive-latex-xkeyval)) (home-page "https://www.ctan.org/pkg/pstool") @@ -5208,24 +5458,48 @@ re-processing.") (define-deprecated-package texlive-latex-pstool texlive-pstool) -(define-public texlive-latex-refcount - (package - (inherit (simple-texlive-package - "texlive-latex-refcount" - (list "/doc/latex/refcount/" - "/tex/latex/refcount/") - (base32 - "0pkmqj2qihndlv3ks33xzqw91q46jx79r3aygj68d8dflyddi583") - #:trivial? #t)) - (home-page "https://www.ctan.org/pkg/refcount") - (synopsis "Counter operations with label references") - (description - "This package provides the @code{\\setcounterref} and +(define-public texlive-refcount + (let ((template (simple-texlive-package + "texlive-refcount" + (list "doc/latex/refcount/" + "source/latex/refcount/" + "tex/latex/refcount/") + (base32 + "128cvwdl4wcdshvs59yn5iljdxxdrc5jircbxav77y7kc3l33z7z")))) + (package + (inherit template) + (outputs '("out" "doc")) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:tex-directory _ '()) + "latex/refcount") + ((#:build-targets _ '()) + #~(list "refcount.dtx")) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "source/latex/refcount"))) + (replace 'copy-files + (lambda* (#:key inputs #:allow-other-keys) + (let ((origin (assoc-ref inputs "source")) + (source (string-append #$output + "/share/texmf-dist/source")) + (doc (string-append #$output:doc + "/share/texmf-dist/doc"))) + (copy-recursively (string-append origin "/source") source) + (copy-recursively (string-append origin "/doc") doc)))))))) + (home-page "https://www.ctan.org/pkg/refcount") + (synopsis "Counter operations with label references") + (description + "This package provides the @code{\\setcounterref} and @code{\\addtocounterref} commands which use the section (or other) number from the reference as the value to put into the counter. It also provides @code{\\setcounterpageref} and @code{\\addtocounterpageref} that do the corresponding thing with the page reference of the label.") - (license license:lppl1.3c+))) + (license license:lppl1.3c+)))) + +(define-deprecated-package texlive-latex-refcount texlive-refcount) (define-public texlive-seminar (package @@ -6235,39 +6509,45 @@ using box macros and flexible verbatim macros. You can box mathematics, floats, center, flushleft, and flushright, lists, and pages.") (license license:lppl1.2+))) -(define-public texlive-latex-fancyhdr - (package - (name "texlive-latex-fancyhdr") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/tex/latex/fancyhdr")) - (revision %texlive-revision))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "1h2zv7cps0pknqhy2dyfclyi002lmsfshm0rn6ywfl9p4fnvh0bc")))) - (build-system trivial-build-system) - (arguments - `(#:modules ((guix build utils)) - #:builder - (begin - (use-modules (guix build utils)) - (let ((target (string-append (assoc-ref %outputs "out") - "/share/texmf-dist/tex/latex/fancyhdr"))) - (mkdir-p target) - (copy-recursively (assoc-ref %build-inputs "source") target) - #t)))) - (home-page "https://www.ctan.org/pkg/fancyhdr") - (synopsis "Extensive control of page headers and footers in LaTeX2e") - (description - "The package provides extensive facilities, both for constructing headers -and footers, and for controlling their use (for example, at times when LaTeX -would automatically change the heading style in use).") - (license license:lppl))) +(define-public texlive-fancyhdr + (let ((template (simple-texlive-package + "texlive-fancyhdr" + (list "doc/latex/fancyhdr/" + "source/latex/fancyhdr/" + "tex/latex/fancyhdr/") + (base32 + "15fainwxs22gg4xhwsv1vmjgdhg34dbkir26nnk4pb6jprpwb83f")))) + (package + (inherit template) + (outputs '("out" "doc")) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:tex-directory _ '()) + "latex/fancyhdr") + ((#:build-targets _ '()) + #~(list "fancyhdr.ins")) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'chdir + (lambda _ (chdir "source/latex/fancyhdr"))) + (replace 'copy-files + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((origin (assoc-ref inputs "source")) + (source (string-append #$output + "/share/texmf-dist/source")) + (doc (string-append #$output:doc + "/share/texmf-dist/doc"))) + (copy-recursively (string-append origin "/source") source) + (copy-recursively (string-append origin "/doc") doc)))))))) + (home-page "https://www.ctan.org/pkg/fancyhdr") + (synopsis "Extensive control of page headers and footers in LaTeX2e") + (description + "This package provides extensive facilities, both for constructing +headers and footers, and for controlling their use (for example, at times when +LaTeX would automatically change the heading style in use).") + (license license:lppl)))) + +(define-deprecated-package texlive-latex-fancyhdr texlive-fancyhdr) (define-public texlive-latex-float (package @@ -6317,52 +6597,89 @@ the same place. The package also has a range of techniques for labelling footnotes with symbols rather than numbers.") (license license:lppl1.3+))) -(define-public texlive-latex-letltxmacro - (package - (inherit (simple-texlive-package - "texlive-latex-letltxmacro" - (list "/doc/latex/letltxmacro/" - "/tex/latex/letltxmacro/") - (base32 - "0yy1m1jiyxq2pssp0pidaa2swx6lyxw3zwpm2r8m0v2r3lvsyyxx") - #:trivial? #t)) - (home-page "https://www.ctan.org/pkg/letltxmacro") - (synopsis "Let assignment for macros") - (description - "TeX’s @code{\\let} assignment does not work for LaTeX macros with +(define-public texlive-letltxmacro + (let ((template (simple-texlive-package + "texlive-letltxmacro" + (list "doc/latex/letltxmacro/" + "source/latex/letltxmacro/" + "tex/latex/letltxmacro/") + (base32 + "16bmwsng9p80jf78sdmib24apwnw3raw306cs1ms50z5s9dsfdby")))) + (package + (inherit template) + (outputs '("out" "doc")) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:tex-directory _ '()) + "latex/letltxmacro") + ((#:build-targets _ '()) + #~(list "letltxmacro.dtx")) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "source/latex/letltxmacro"))) + (replace 'copy-files + (lambda* (#:key inputs #:allow-other-keys) + (let ((origin (assoc-ref inputs "source")) + (source (string-append #$output + "/share/texmf-dist/source")) + (doc (string-append #$output:doc + "/share/texmf-dist/doc"))) + (copy-recursively (string-append origin "/source") source) + (copy-recursively (string-append origin "/doc") doc)))))))) + (home-page "https://www.ctan.org/pkg/letltxmacro") + (synopsis "Let assignment for macros") + (description + "TeX’s @code{\\let} assignment does not work for LaTeX macros with optional arguments, or for macros that are defined as robust macros by @code{\\DeclareRobustCommand}. This package defines @code{\\LetLtxMacro} that also takes care of the involved internal macros.") - (license license:lppl1.3c+))) + (license license:lppl1.3c+)))) + +(define-deprecated-package texlive-latex-letltxmacro texlive-letltxmacro) (define-public texlive-listings - (package - (name "texlive-listings") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (texlive-ref "latex" "listings")) - (file-name - ;; TODO: Drop "latex-" on next rebuild cycle. - (string-append "texlive-latex-listings-" version "-checkout")) - (sha256 - (base32 - "082zri3gp8s6p2difhk1pbix2vzmvsf6fmld2z78v35xwk3fiya0")))) - (build-system texlive-build-system) - (arguments - '(#:tex-directory "latex/listings" - #:build-targets '("listings.ins"))) - (home-page "https://www.ctan.org/pkg/listings") - (synopsis "Typeset source code listings using LaTeX") - (description - "The package enables the user to typeset programs (programming code) + (let ((template + (simple-texlive-package + "texlive-listings" + (list "doc/latex/listings/" + "source/latex/listings/" + "tex/latex/listings/") + (base32 "15dnm0j86305x84ss3ymhhcczcw45b2liq01vrab6fj204wzsahk")))) + (package + (inherit template) + (outputs '("out" "doc")) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:tex-directory _ '()) + "latex/listings") + ((#:build-targets _ '()) + #~(list "listings.ins")) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "source/latex/listings"))) + (replace 'copy-files + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((origin (assoc-ref inputs "source")) + (source (string-append #$output + "/share/texmf-dist/source")) + (doc (string-append #$output:doc + "/share/texmf-dist/doc"))) + (copy-recursively (string-append origin "/source") source) + (copy-recursively (string-append origin "/doc") doc)))))))) + (home-page "https://www.ctan.org/pkg/listings") + (synopsis "Typeset source code listings using LaTeX") + (description + "The package enables the user to typeset programs (programming code) within LaTeX; the source code is read directly by TeX---no front-end processor is needed. Keywords, comments and strings can be typeset using different styles. Support for @code{hyperref} is provided.") - (license license:lppl1.3+))) + (license license:lppl1.3+)))) -(define-public texlive-latex-listings - (deprecated-package "texlive-latex-listings" texlive-listings)) +(define-deprecated-package texlive-latex-listings texlive-listings) (define-public texlive-latex-jknapltx (package @@ -6403,23 +6720,47 @@ transliterate semitic languages; patches to make (La)TeX formulae embeddable in SGML; use maths minus in text as appropriate; simple Young tableaux.") (license license:gpl2))) -(define-public texlive-latex-kvoptions - (package - (inherit (simple-texlive-package - "texlive-latex-kvoptions" - (list "/doc/latex/kvoptions/" - "/tex/latex/kvoptions/") - (base32 - "02i4n2n3j4lg68d3nam08m63kb4irc99wfhyc2z51r02lm1wwmvw") - #:trivial? #t)) - (propagated-inputs - (list texlive-generic-kvsetkeys texlive-generic-ltxcmds)) - (home-page "https://www.ctan.org/pkg/kvoptions") - (synopsis "Key/value format for package options") - (description - "This package provides facilities for using key-value format in +(define-public texlive-kvoptions + (let ((template (simple-texlive-package + "texlive-kvoptions" + (list "doc/latex/kvoptions/" + "source/latex/kvoptions/" + "tex/latex/kvoptions/") + (base32 + "1b8q93l54160b8gn3fq484n15n6cylrhmf2xk7p42czg2rqw7w3l")))) + (package + (inherit template) + (outputs '("out" "doc")) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:tex-directory _ '()) + "latex/kvoptions") + ((#:build-targets _ '()) + #~(list "kvoptions.dtx")) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "source/latex/kvoptions"))) + (replace 'copy-files + (lambda* (#:key inputs #:allow-other-keys) + (let ((origin (assoc-ref inputs "source")) + (source (string-append #$output + "/share/texmf-dist/source")) + (doc (string-append #$output:doc + "/share/texmf-dist/doc"))) + (copy-recursively (string-append origin "/source") source) + (copy-recursively (string-append origin "/doc") doc)))))))) + (propagated-inputs + (list texlive-kvsetkeys texlive-ltxcmds)) + (home-page "https://www.ctan.org/pkg/kvoptions") + (synopsis "Key/value format for package options") + (description + "This package provides facilities for using key-value format in package options.") - (license license:lppl1.3c+))) + (license license:lppl1.3c+)))) + +(define-deprecated-package texlive-latex-kvoptions texlive-kvoptions) (define-public texlive-fonts-ec (package @@ -6776,26 +7117,53 @@ format. LaTeX support, for using these fonts in mathematics, is available via one of the packages @code{calrsfs} and @code{mathrsfs}.") (license (license:fsf-free "http://mirrors.ctan.org/fonts/rsfs/README")))) -(define-public texlive-latex-eso-pic - (package - (name "texlive-latex-eso-pic") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (texlive-ref "latex" "eso-pic")) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "12f7pbhiav4iz3rra5vq85v9f14h8j1ybi42kvnkzgjsay87p7gf")))) - (build-system texlive-build-system) - (arguments '(#:tex-directory "latex/eso-pic")) - (home-page "https://www.ctan.org/pkg/eso-pic") - (synopsis "Add picture commands (or backgrounds) to every page") - (description - "The package adds one or more user commands to LaTeX's @code{shipout} +(define-public texlive-eso-pic + (let ((template (simple-texlive-package + "texlive-eso-pic" + (list "doc/latex/eso-pic/" + "source/latex/eso-pic/" + "tex/latex/eso-pic/") + (base32 + "05bqm4x209wji0q6xk1jrjp0nzqafp44dlq30hlpcagrggjb3d9s")))) + (package + (inherit template) + (outputs '("out" "doc")) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:tex-directory _ '()) + "latex/eso-pic") + ((#:build-targets _ '()) + #~(list "eso-pic.ins")) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "source/latex/eso-pic"))) + (replace 'copy-files + (lambda _ + (let ((origin #$(package-source this-package)) + (source (string-append #$output + "/share/texmf-dist/source")) + (doc (string-append #$output:doc + "/share/texmf-dist/doc"))) + (copy-recursively (string-append origin "/source") source) + (copy-recursively (string-append origin "/doc") doc) + ;; This file is not generated. + (install-file + (string-append origin + "/tex/latex/eso-pic/showframe.sty") + (string-append + #$output + "/share/texmf-dist/tex/latex/eso-pic"))))))))) + (home-page "https://ctan.org/macros/latex/contrib/eso-pic") + (synopsis "Add picture commands (or backgrounds) to every page") + (description + "The package adds one or more user commands to LaTeX's @code{shipout} routine, which may be used to place the output at fixed positions. The @code{grid} option may be used to find the correct places.") - (license license:lppl1.3+))) + (license license:lppl1.3+)))) + +(define-deprecated-package texlive-latex-eso-pic texlive-eso-pic) (define-public texlive-latex-eepic (package @@ -6945,29 +7313,51 @@ that is untidy; this package (though it is no substitute for a properly designed class) helps alleviate this untidiness.") (license license:lppl))) -(define-public texlive-latex-pdfpages - (package - (name "texlive-latex-pdfpages") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (texlive-ref "latex" "pdfpages")) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "140kl8r7g2ak2frjn5pmwiwibfynyfwp897r9vk8pypmn390lzr2")))) - (build-system texlive-build-system) - (arguments '(#:tex-directory "latex/pdfpages")) - (home-page "https://www.ctan.org/pkg/pdfpages") - (synopsis "Include PDF documents in LaTeX") - (description - "This package simplifies the inclusion of external multi-page PDF +(define-public texlive-pdfpages + (let ((template (simple-texlive-package + "texlive-pdfpages" + (list "doc/latex/pdfpages/" + "source/latex/pdfpages/" + "tex/latex/pdfpages/") + (base32 + "0a68vxkygk20fp51fkp7nvs8mc7h6irdvxal8qsnn9zrgr965d76")))) + (package + (inherit template) + (outputs '("out" "doc")) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:tex-directory _ '()) + "latex/pdfpages") + ((#:build-targets _ '()) + #~(list "pdfpages.ins")) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "source/latex/pdfpages"))) + (replace 'copy-files + (lambda _ + (let ((origin #$(package-source this-package)) + (source (string-append #$output + "/share/texmf-dist/source")) + (doc (string-append #$output:doc + "/share/texmf-dist/doc"))) + (copy-recursively (string-append origin "/source") source) + (copy-recursively (string-append origin "/doc") doc)))))))) + (propagated-inputs + (list texlive-tools texlive-oberdiek texlive-graphics texlive-eso-pic)) + (home-page "https://ctan.org/macros/latex/contrib/pdfpages") + (synopsis "Include PDF documents in LaTeX") + (description + "This package simplifies the inclusion of external multi-page PDF documents in LaTeX documents. Pages may be freely selected and it is possible to put several logical pages onto each sheet of paper. Furthermore a lot of hypertext features like hyperlinks and article threads are provided. The package supports pdfTeX (pdfLaTeX) and VTeX. With VTeX it is even possible to use this package to insert PostScript files, in addition to PDF files.") - (license license:lppl1.3+))) + (license license:lppl1.3+)))) + +(define-deprecated-package texlive-latex-pdfpages texlive-pdfpages) (define-public texlive-stix2-otf (let ((base (simple-texlive-package @@ -7067,23 +7457,41 @@ the whole font.") (define-deprecated-package texlive-fonts-stmaryrd texlive-stmaryrd) -(define-public texlive-latex-subfigure - (package - (name "texlive-latex-subfigure") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (texlive-ref "latex" "subfigure")) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "15spcl5wb7w269qd6y596vp4yi8sa5ppcx8w4z2i9kyp02r3a0yb")))) - (build-system texlive-build-system) - (arguments '(#:tex-directory "latex/subfigure")) - (home-page "https://www.ctan.org/pkg/subfigure") - (synopsis "Figures divided into subfigures") - (description - "This (deprecated) package provides support for the manipulation and +(define-public texlive-subfigure + (let ((template (simple-texlive-package + "texlive-subfigure" + (list "doc/latex/subfigure/" + "source/latex/subfigure/" + "tex/latex/subfigure/") + (base32 + "1327ygajf6gza5msvhfjjnk6r3sw7vb7rxg23v4gx4dmyxqfqrbi")))) + (package + (inherit template) + (outputs '("out" "doc")) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:tex-directory _ '()) + "latex/subfigure") + ((#:build-targets _ '()) + #~(list "subfigure.ins")) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "source/latex/subfigure"))) + (replace 'copy-files + (lambda* (#:key inputs #:allow-other-keys) + (let ((origin (assoc-ref inputs "source")) + (source (string-append #$output + "/share/texmf-dist/source")) + (doc (string-append #$output:doc + "/share/texmf-dist/doc"))) + (copy-recursively (string-append origin "/source") source) + (copy-recursively (string-append origin "/doc") doc)))))))) + (home-page "https://www.ctan.org/pkg/subfigure") + (synopsis "Figures divided into subfigures") + (description + "This (deprecated) package provides support for the manipulation and reference of small or \"sub\" figures and tables within a single figure or table environment. It is convenient to use this package when your subfigures are to be separately captioned, referenced, or are to be included in the @@ -7092,7 +7500,9 @@ used inside a figure environment for each subfigure. An optional first argument is used as the caption for that subfigure. The package is now considered obsolete: it was superseded by @code{subfig}, but users may find the more recent @code{subcaption} package more satisfactory.") - (license license:lppl))) + (license license:lppl)))) + +(define-deprecated-package texlive-latex-subfigure texlive-subfigure) (define-public texlive-latex-tabulary (package @@ -7346,9 +7756,9 @@ Simple Young tableaux. texlive-jknappen texlive-hyperref texlive-latex-colortbl - texlive-latex-fancyhdr - texlive-latex-graphics ;for color.sty - texlive-latex-tools ;for array.sty + texlive-fancyhdr + texlive-graphics ;for color.sty + texlive-tools ;for array.sty texlive-marvosym texlive-tex-ini-files ;for pdftexconfig texlive-ulem)) @@ -7423,33 +7833,15 @@ The (currently) supported encodings are: OT1, T1, IL2, TS1, T2*, X2, QX, and LGR. The package doesn't (currently) support mathematics.") (license license:lppl))) -(define-public texlive-latex-titlesec +(define-public texlive-titlesec (package - (name "texlive-latex-titlesec") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/tex/latex/titlesec")) - (revision %texlive-revision))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "1kw7dvxvdfbf31zw0n8r0g5xak3vcdf25n33fqw93j59zpc5nvbl")))) - (build-system trivial-build-system) - (arguments - `(#:modules ((guix build utils)) - #:builder - (begin - (use-modules (guix build utils)) - (let ((target (string-append (assoc-ref %outputs "out") - "/share/texmf-dist/tex/latex/titlesec"))) - (mkdir-p target) - (copy-recursively (assoc-ref %build-inputs "source") target) - #t)))) - (home-page "https://www.ctan.org/pkg/titlesec") + (inherit + (simple-texlive-package + "texlive-titlesec" + (list "doc/latex/titlesec/" "tex/latex/titlesec/") + (base32 "01nwh4p15xblc3kgivjliihy9kr8yr2cqsf9wn2iwqv1njx0i2zw") + #:trivial? #t)) + (home-page "https://ctan.org/macros/latex/contrib/titlesec") (synopsis "Select alternative section titles") (description "This package provides an interface to sectioning commands for selection @@ -7459,6 +7851,8 @@ styles. It also includes a package to change the page styles when there are floats in a page. You may assign headers/footers to individual floats, too.") (license license:lppl))) +(define-deprecated-package texlive-latex-titlesec texlive-titlesec) + (define-public texlive-latex-type1cm (package (name "texlive-latex-type1cm") @@ -8397,35 +8791,45 @@ including: It also ensures compatibility with the @code{media9} and @code{animate} packages.") (license license:lppl))) -(define-public texlive-latex-ms - (package - (name "texlive-latex-ms") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (texlive-ref "latex" "ms")) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "04ww5abfm7dx81d21yr2gwy9jswaalnfm2384xp4cyx7srd9spfv")))) - (build-system texlive-build-system) - (arguments - '(#:tex-directory "latex/ms" - #:tex-format "latex")) - (home-page "https://ctan.org/pkg/ms") - (synopsis "Various LATEX packages by Martin Schröder") - (description - "A bundle of LATEX packages by Martin Schröder; the collection comprises: +(define-public texlive-ms + (let ((template + (simple-texlive-package + "texlive-ms" + (list "doc/latex/ms/" "source/latex/ms/" "tex/latex/ms/") + (base32 "1cgrpx5mybiirjjdmni8kvqdg37dwfkixq3h9ami0mgxqqqfl2x3")))) + (package + (inherit template) + (outputs '("out" "doc")) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:tex-directory _ '()) + "latex/ms") + ((#:tex-format _ "latex") "latex") + ((#:build-targets _ '()) + #~(list "count1to.ins" "multitoc.ins")) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "source/latex/ms"))) + (replace 'copy-files + (lambda* (#:key inputs #:allow-other-keys) + (let ((origin (assoc-ref inputs "source")) + (source (string-append #$output + "/share/texmf-dist/source")) + (doc (string-append #$output:doc + "/share/texmf-dist/doc"))) + (copy-recursively (string-append origin "/source") source) + (copy-recursively (string-append origin "/doc") doc)))))))) + (home-page "https://ctan.org/macros/latex/contrib/ms") + (synopsis "Various LaTeX packages by Martin Schroder") + (description + "The remains of a bundle of LaTeX packages by Martin Schroder; the +collection comprises: count1to, make use of TeX counters; and multitoc, +typeset the table of contents in multiple columns.") + (license license:lppl)))) -@itemize -@item @command{count1to}, make use of fixed TEX counters; -@item @command{everysel}, set commands to execute every time a font is selected; -@item @command{everyshi}, set commands to execute whenever a page is shipped out; -@item @command{multitoc}, typeset the table of contents in multiple columns; -@item @command{prelim2e}, mark typeset pages as preliminary; and -@item @command{ragged2e}, typeset ragged text and allow hyphenation. -@end itemize\n") - (license license:lppl1.3c+))) +(define-deprecated-package texlive-latex-ms texlive-ms) (define-public texlive-numprint (let ((template @@ -8587,69 +8991,57 @@ from a typewriter. The package also offers double and wavy underlining, and striking out (line through words) and crossing out (/// over words).") (license license:lppl1.3c+))) -(define-deprecated-package texlive-generic-ulem texlive-ulem) - (define-public texlive-pgf (package - (name "texlive-pgf") - (version (number->string %texlive-revision)) - (source - (origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/tex/latex/pgf")) - (revision %texlive-revision))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "1jk10rxz5f8vh46am11b40hxhhikk67h9jr3z877q5qc8kwppgza")))) - (build-system trivial-build-system) - (native-inputs - `(("texlive-latex-pgf-generic" - ,(origin - (method svn-fetch) - (uri (svn-reference - (url (string-append "svn://www.tug.org/texlive/tags/" - %texlive-tag "/Master/texmf-dist/" - "/tex/generic/pgf")) - (revision %texlive-revision))) - (file-name (string-append "texlive-latex-pgf-generic" version "-checkout")) - (sha256 - (base32 - "05zdq7y3am109m5534ahqqp9x5iar3ha68v1r4zkrdly2mijxz2j")))))) + (inherit (simple-texlive-package + "texlive-pgf" + (list "doc/generic/pgf/" + "scripts/pgf/" + "source/generic/pgf/c/" + "source/generic/pgf/testsuite/external/" + "source/generic/pgf/testsuite/mathtest/" + "tex/context/third/pgf/basiclayer/" + "tex/context/third/pgf/frontendlayer/" + "tex/context/third/pgf/math/" + "tex/context/third/pgf/systemlayer/" + "tex/context/third/pgf/utilities/" + "tex/generic/pgf/" + "tex/latex/pgf/basiclayer/" + "tex/latex/pgf/compatibility/" + "tex/latex/pgf/doc/" + "tex/latex/pgf/frontendlayer/" + "tex/latex/pgf/math/" + "tex/latex/pgf/systemlayer/" + "tex/latex/pgf/utilities/" + "tex/plain/pgf/basiclayer/" + "tex/plain/pgf/frontendlayer/" + "tex/plain/pgf/math/" + "tex/plain/pgf/systemlayer/" + "tex/plain/pgf/utilities/") + (base32 + "02qfx9k0ggqfrbrjpfz74w8rkvvzk07rmgr37r7y64gggwpn4cw5") + #:trivial? #t)) (propagated-inputs - (list texlive-xcolor)) - (arguments - `(#:modules ((guix build utils)) - #:builder - (begin - (use-modules (guix build utils)) - (let ((target-generic (string-append (assoc-ref %outputs "out") - "/share/texmf-dist/tex/generic/pgf")) - (target-latex (string-append (assoc-ref %outputs "out") - "/share/texmf-dist/tex/latex/pgf"))) - (mkdir-p target-generic) - (mkdir-p target-latex) - (copy-recursively (assoc-ref %build-inputs "texlive-latex-pgf-generic") target-generic) - (copy-recursively (assoc-ref %build-inputs "source") target-latex) - #t)))) - (home-page "https://www.ctan.org/pkg/tikz") + (list texlive-atveryend + texlive-fp + texlive-graphics + texlive-ms + texlive-pdftexcmds + texlive-xcolor)) + (home-page "https://ctan.org/graphics/pgf/base") (synopsis "Create PostScript and PDF graphics in TeX") (description "PGF is a macro package for creating graphics. It is platform- and format-independent and works together with the most important TeX backend drivers, including pdfTeX and dvips. It comes with a user-friendly syntax layer -called TikZ. +called TikZ. Its usage is similar to pstricks and the standard picture +environment. PGF works with plain (pdf-)TeX, (pdf-)LaTeX, and ConTeXt. Unlike +pstricks, it can produce either PostScript or PDF output.") + ;; The code of the package is dual-license: GPL-2 or LPPL-1.3c+. The + ;; documentation is also dual-license: LPPL-1.3c+ or GFDL-1.2. + (license (list license:gpl2 license:lppl1.3c+ license:fdl1.2+)))) -Its usage is similar to pstricks and the standard picture environment. PGF -works with plain (pdf-)TeX, (pdf-)LaTeX, and ConTeXt. Unlike pstricks, it can -produce either PostScript or PDF output.") - (license license:lppl1.3c+))) - -(define-public texlive-latex-pgf - (deprecated-package "texlive-latex-pgf" texlive-pgf)) +(define-deprecated-package texlive-latex-pgf texlive-pgf) (define-public texlive-latex-koma-script (package @@ -8710,162 +9102,381 @@ refers to the version of scrbook, scrreprt, scrartcl, scrlttr2 and typearea (which are the main parts of the bundle).") (license license:lppl1.3+))) -(define-public texlive-generic-atbegshi - (package - (inherit (simple-texlive-package - "texlive-generic-atbegshi" - '("/doc/latex/atbegshi/" - "/tex/generic/atbegshi/") - (base32 - "184fr5kd3wl44ix63lwb3ll7dhiikkyw1czbnzrl4am4rx0zh4d8") - #:trivial? #t)) - (home-page "https://www.ctan.org/pkg/atbegshi") - (synopsis "Execute commands at @code{\\shipout} time") - (description - "This package is a modern reimplementation of package @code{everyshi}, +(define-public texlive-atbegshi + (let ((template (simple-texlive-package + "texlive-atbegshi" + (list "doc/latex/atbegshi/" + "source/latex/atbegshi/" + "tex/generic/atbegshi/") + (base32 + "0vd90wdjwj5w4g4xka4nms3rgixjw63iwf0hj0v1akcfflwvgn69")))) + (package + (inherit template) + (outputs '("out" "doc")) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:tex-directory _ '()) + "generic/atbegshi") + ((#:build-targets _ '()) + #~(list "atbegshi.dtx")) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "source/latex/atbegshi"))) + (replace 'copy-files + (lambda* (#:key inputs #:allow-other-keys) + (let ((origin (assoc-ref inputs "source")) + (source (string-append #$output + "/share/texmf-dist/source")) + (doc (string-append #$output:doc + "/share/texmf-dist/doc"))) + (copy-recursively (string-append origin "/source") source) + (copy-recursively (string-append origin "/doc") doc)))))))) + (home-page "https://www.ctan.org/pkg/atbegshi") + (synopsis "Execute commands at @code{\\shipout} time") + (description + "This package is a modern reimplementation of package @code{everyshi}, providing various commands to be executed before a @code{\\shipout} command. It makes use of e-TeX’s facilities if they are available. The package may be used either with LaTeX or with plain TeX.") - (license license:lppl1.3c+))) + (license license:lppl1.3c+)))) -(define-public texlive-generic-bigintcalc - (package - (inherit (simple-texlive-package - "texlive-generic-bigintcalc" - '("/doc/latex/bigintcalc/README.md" - "/tex/generic/bigintcalc/") - (base32 - "19grk4p1dh566hgpzhnjyjnrw57hpjijcpr7ci401n9jszcc1xkz") - #:trivial? #t)) - (propagated-inputs - (list texlive-latex-pdftexcmds)) - (home-page "https://www.ctan.org/pkg/bigintcalc") - (synopsis "Integer calculations on very large numbers") - (description - "This package provides expandable arithmetic operations with big +(define-deprecated-package texlive-generic-atbegshi texlive-atbegshi) + +(define-public texlive-bigintcalc + (let ((template (simple-texlive-package + "texlive-bigintcalc" + (list "doc/latex/bigintcalc/" + "source/latex/bigintcalc/" + "tex/generic/bigintcalc/") + (base32 + "1cyv4mcvx83ab782l6h2f86a63ipm845r7hv1m6f1z2336vy7rc5")))) + (package + (inherit template) + (outputs '("out" "doc")) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:tex-directory _ '()) + "generic/bigintcalc") + ((#:build-targets _ '()) + #~(list "bigintcalc.dtx")) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "source/latex/bigintcalc"))) + (replace 'copy-files + (lambda* (#:key inputs #:allow-other-keys) + (let ((origin (assoc-ref inputs "source")) + (source (string-append #$output + "/share/texmf-dist/source")) + (doc (string-append #$output:doc + "/share/texmf-dist/doc"))) + (copy-recursively (string-append origin "/source") source) + (copy-recursively (string-append origin "/doc") doc)))))))) + (propagated-inputs + (list texlive-pdftexcmds)) + (home-page "https://www.ctan.org/pkg/bigintcalc") + (synopsis "Integer calculations on very large numbers") + (description + "This package provides expandable arithmetic operations with big integers that can exceed TeX's number limits.") - (license license:lppl1.3c+))) + (license license:lppl1.3c+)))) -(define-public texlive-generic-bitset - (package - (inherit (simple-texlive-package - "texlive-generic-bitset" - '("/doc/latex/bitset/README.md" - "/tex/generic/bitset/") - (base32 - "0inj6qpzizvsbxdfsaijnl4iq976kyrnchnm3gc1kc2w389zrn1l") - #:trivial? #t)) - (propagated-inputs - (list texlive-generic-infwarerr texlive-generic-intcalc - texlive-generic-bigintcalc)) - (home-page "https://www.ctan.org/pkg/bitset") - (synopsis "Handle bit-vector datatype") - (description - "This package defines and implements the data type bit set, a vector +(define-deprecated-package texlive-generic-bigintcalc texlive-bigintcalc) + +(define-public texlive-bitset + (let ((template (simple-texlive-package + "texlive-bitset" + (list "doc/latex/bitset/" + "source/latex/bitset/" + "tex/generic/bitset/") + (base32 + "1q7vk5gr5a4vaa3l20j178cg2q7a99rxdiyxhzpx9a6lfqfkjddz")))) + (package + (inherit template) + (outputs '("out" "doc")) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:tex-directory _ '()) + "generic/bitset") + ((#:build-targets _ '()) + #~(list "bitset.dtx")) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "source/latex/bitset"))) + (replace 'copy-files + (lambda* (#:key inputs #:allow-other-keys) + (let ((origin (assoc-ref inputs "source")) + (source (string-append #$output + "/share/texmf-dist/source")) + (doc (string-append #$output:doc + "/share/texmf-dist/doc"))) + (copy-recursively (string-append origin "/source") source) + (copy-recursively (string-append origin "/doc") doc)))))))) + (propagated-inputs + (list texlive-bigintcalc texlive-infwarerr texlive-intcalc)) + (home-page "https://www.ctan.org/pkg/bitset") + (synopsis "Handle bit-vector datatype") + (description + "This package defines and implements the data type bit set, a vector of bits. The size of the vector may grow dynamically. Individual bits can be manipulated.") - (license license:lppl1.3c+))) + (license license:lppl1.3c+)))) -(define-public texlive-generic-etexcmds - (package - (inherit (simple-texlive-package - "texlive-generic-etexcmds" - '("/doc/latex/etexcmds/README.md" - "/tex/generic/etexcmds/") - (base32 - "11y6pnlq13bp0ybi7c82g8ds8085zv1zaslgqv3dzhgi3dklpc0c") - #:trivial? #t)) - (propagated-inputs - (list texlive-generic-infwarerr texlive-generic-iftex)) - (home-page "https://www.ctan.org/pkg/etexcmds") - (synopsis "Avoid name clashes with e-TeX commands") - (description - "New primitive commands are introduced in e-TeX; sometimes the names +(define-deprecated-package texlive-generic-bitset texlive-bitset) + +(define-public texlive-etexcmds + (let ((template (simple-texlive-package + "texlive-etexcmds" + (list "doc/latex/etexcmds/" + "source/latex/etexcmds/" + "tex/generic/etexcmds/") + (base32 + "13cf1fs5x9d8749b2jgxmgnkrx0r4hwpl389r15kq3ldz9jfl627")))) + (package + (inherit template) + (outputs '("out" "doc")) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:tex-directory _ '()) + "generic/etexcmds") + ((#:build-targets _ '()) + #~(list "etexcmds.dtx")) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "source/latex/etexcmds"))) + (replace 'copy-files + (lambda* (#:key inputs #:allow-other-keys) + (let ((origin (assoc-ref inputs "source")) + (source (string-append #$output + "/share/texmf-dist/source")) + (doc (string-append #$output:doc + "/share/texmf-dist/doc"))) + (copy-recursively (string-append origin "/source") source) + (copy-recursively (string-append origin "/doc") doc)))))))) + (propagated-inputs + (list texlive-iftex texlive-infwarerr)) + (home-page "https://www.ctan.org/pkg/etexcmds") + (synopsis "Avoid name clashes with e-TeX commands") + (description + "New primitive commands are introduced in e-TeX; sometimes the names collide with existing macros. This package solves the name clashes by adding a prefix to e-TeX’s commands. For example, ε-TeX’s @code{\\unexpanded} is provided as @code{\\etex@@unexpanded}.") - (license license:lppl1.3c+))) + (license license:lppl1.3c+)))) -(define-public texlive-generic-gettitlestring - (package - (inherit (simple-texlive-package - "texlive-generic-gettitlestring" - '("/doc/latex/gettitlestring/" - "/tex/generic/gettitlestring/") - (base32 - "1p4hg9mac03rzvj9dw0ws3zdh55fy1ns954f912algw9f2aq4xgp") - #:trivial? #t)) - (home-page "https://www.ctan.org/pkg/gettitlestring") - (synopsis "Clean up title references") - (description - "This package provides commands for cleaning up the title string +(define-deprecated-package texlive-generic-etexcmds texlive-etexcmds) + +(define-public texlive-gettitlestring + (let ((template (simple-texlive-package + "texlive-gettitlestring" + (list "doc/latex/gettitlestring/" + "source/latex/gettitlestring/" + "tex/generic/gettitlestring/") + (base32 + "1vbvmwrpsvy37gbwdmsqbbsicjiww3i0bh1yqnb75jiya9an0sjb")))) + (package + (inherit template) + (outputs '("out" "doc")) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:tex-directory _ '()) + "generic/gettitlestring") + ((#:build-targets _ '()) + #~(list "gettitlestring.dtx")) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "source/latex/gettitlestring"))) + (replace 'copy-files + (lambda* (#:key inputs #:allow-other-keys) + (let ((origin (assoc-ref inputs "source")) + (source (string-append #$output + "/share/texmf-dist/source")) + (doc (string-append #$output:doc + "/share/texmf-dist/doc"))) + (copy-recursively (string-append origin "/source") source) + (copy-recursively (string-append origin "/doc") doc)))))))) + (home-page "https://www.ctan.org/pkg/gettitlestring") + (synopsis "Clean up title references") + (description + "This package provides commands for cleaning up the title string (such as removing @code{\\label} commands) for packages that typeset such strings.") - (license license:lppl1.3c+))) + (license license:lppl1.3c+)))) -(define-public texlive-generic-infwarerr - (package - (inherit (simple-texlive-package - "texlive-generic-infwarerr" - '("/tex/generic/infwarerr/") - (base32 - "19nlrbfmqbkjrrx9x75s9nd6crg1lzimb2fr3hfblaivj6lx8p4r") - #:trivial? #t)) - (home-page "https://www.ctan.org/pkg/infwarerr") - (synopsis "Information/warning/error macros") - (description - "This package provides a complete set of macros for information, +(define-deprecated-package texlive-generic-gettitlestring texlive-gettitlestring) + +(define-public texlive-infwarerr + (let ((template (simple-texlive-package + "texlive-infwarerr" + (list "doc/latex/infwarerr/" + "source/latex/infwarerr/" + "tex/generic/infwarerr/") + (base32 + "0lpcrpf3d6xfdp68ri22126x57mvmq5dpj9np68ph8p8lhvhqdjd")))) + (package + (inherit template) + (outputs '("out" "doc")) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:tex-directory _ '()) + "generic/infwarerr") + ((#:build-targets _ '()) + #~(list "infwarerr.dtx")) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "source/latex/infwarerr"))) + (replace 'copy-files + (lambda* (#:key inputs #:allow-other-keys) + (let ((origin (assoc-ref inputs "source")) + (source (string-append #$output + "/share/texmf-dist/source")) + (doc (string-append #$output:doc + "/share/texmf-dist/doc"))) + (copy-recursively (string-append origin "/source") source) + (copy-recursively (string-append origin "/doc") doc)))))))) + (home-page "https://www.ctan.org/pkg/infwarerr") + (synopsis "Information/warning/error macros") + (description + "This package provides a complete set of macros for information, warning and error messages. Under LaTeX, the commands are wrappers for the corresponding LaTeX commands; under Plain TeX they are available as complete implementations.") - (license license:lppl1.3c+))) + (license license:lppl1.3c+)))) -(define-public texlive-generic-intcalc - (package - (inherit (simple-texlive-package - "texlive-generic-intcalc" - '("/tex/generic/intcalc/") - (base32 - "0llrnayqwdqxi91yh7panbbiljina3bynv2hxhi6sssaw3pyd92l") - #:trivial? #t)) - (home-page "https://www.ctan.org/pkg/intcalc") - (synopsis "Expandable arithmetic operations with integers") - (description - "This package provides expandable arithmetic operations with integers, +(define-deprecated-package texlive-generic-infwarerr texlive-infwarerr) + +(define-public texlive-intcalc + (let ((template (simple-texlive-package + "texlive-intcalc" + (list "doc/latex/intcalc/" + "source/latex/intcalc/" + "tex/generic/intcalc/") + (base32 + "15alwp9cr8wasfajs3p201p7nqml37vly9mpg1j5l6xv95javk7x")))) + (package + (inherit template) + (outputs '("out" "doc")) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:tex-directory _ '()) + "generic/intcalc") + ((#:build-targets _ '()) + #~(list "intcalc.dtx")) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "source/latex/intcalc"))) + (replace 'copy-files + (lambda* (#:key inputs #:allow-other-keys) + (let ((origin (assoc-ref inputs "source")) + (source (string-append #$output + "/share/texmf-dist/source")) + (doc (string-append #$output:doc + "/share/texmf-dist/doc"))) + (copy-recursively (string-append origin "/source") source) + (copy-recursively (string-append origin "/doc") doc)))))))) + (home-page "https://www.ctan.org/pkg/intcalc") + (synopsis "Expandable arithmetic operations with integers") + (description + "This package provides expandable arithmetic operations with integers, using the e-TeX extension @code{\\numexpr} if it is available.") - (license license:lppl1.3c+))) + (license license:lppl1.3c+)))) -(define-public texlive-generic-kvdefinekeys - (package - (inherit (simple-texlive-package - "texlive-generic-kvdefinekeys" - '("/tex/generic/kvdefinekeys/") - (base32 - "12nn74skhwiszbdhawqds31caz6d59a5pjmwar0r8lmk4f1jr3xh") - #:trivial? #t)) - (home-page "https://www.ctan.org/pkg/kvdefinekeys") - (synopsis "Define keys for use in the @code{kvsetkeys} package") - (description - "This package provides the @code{\\kv@@define@@key} (analogous to +(define-deprecated-package texlive-generic-intcalc texlive-intcalc) + +(define-public texlive-kvdefinekeys + (let ((template (simple-texlive-package + "texlive-kvdefinekeys" + (list "doc/latex/kvdefinekeys/" + "source/latex/kvdefinekeys/" + "tex/generic/kvdefinekeys/") + (base32 + "1026h223ph3nzhs6jqbasa0bzsrdg3zgllfcwwcavfzb5i6p9jdf")))) + (package + (inherit template) + (outputs '("out" "doc")) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:tex-directory _ '()) + "generic/kvdefinekeys") + ((#:build-targets _ '()) + #~(list "kvdefinekeys.dtx")) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "source/latex/kvdefinekeys"))) + (replace 'copy-files + (lambda* (#:key inputs #:allow-other-keys) + (let ((origin (assoc-ref inputs "source")) + (source (string-append #$output + "/share/texmf-dist/source")) + (doc (string-append #$output:doc + "/share/texmf-dist/doc"))) + (copy-recursively (string-append origin "/source") source) + (copy-recursively (string-append origin "/doc") doc)))))))) + (home-page "https://www.ctan.org/pkg/kvdefinekeys") + (synopsis "Define keys for use in the @code{kvsetkeys} package") + (description + "This package provides the @code{\\kv@@define@@key} (analogous to keyval’s @code{\\define@@key}, to define keys for use by @code{kvsetkeys}.") - (license license:lppl1.3c+))) + (license license:lppl1.3c+)))) -(define-public texlive-generic-kvsetkeys - (package - (inherit (simple-texlive-package - "texlive-generic-kvsetkeys" - '("/tex/generic/kvsetkeys/") - (base32 - "149vpmv4vms269dzq4sghlngg380sasvxnb3sx9rfs7d9j0finvi") - #:trivial? #t)) - (home-page "https://www.ctan.org/pkg/kvsetkeys") - (synopsis "Key value parser with default handler support") - (description - "This package provides @code{\\kvsetkeys}, a variant of @code{\\setkeys} +(define-deprecated-package texlive-generic-kvdefinekeys texlive-kvdefinekeys) + +(define-public texlive-kvsetkeys + (let ((template (simple-texlive-package + "texlive-kvsetkeys" + (list "doc/latex/kvsetkeys/" + "source/latex/kvsetkeys/" + "tex/generic/kvsetkeys/") + (base32 + "0b2f2r49vi8x54qshm1h9sh8zhdmy0mc2y44yd05kcmmbiiq7hfz")))) + (package + (inherit template) + (outputs '("out" "doc")) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:tex-directory _ '()) + "generic/kvsetkeys") + ((#:build-targets _ '()) + #~(list "kvsetkeys.dtx")) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "source/latex/kvsetkeys"))) + (replace 'copy-files + (lambda* (#:key inputs #:allow-other-keys) + (let ((origin (assoc-ref inputs "source")) + (source (string-append #$output + "/share/texmf-dist/source")) + (doc (string-append #$output:doc + "/share/texmf-dist/doc"))) + (copy-recursively (string-append origin "/source") source) + (copy-recursively (string-append origin "/doc") doc)))))))) + (home-page "https://www.ctan.org/pkg/kvsetkeys") + (synopsis "Key value parser with default handler support") + (description + "This package provides @code{\\kvsetkeys}, a variant of @code{\\setkeys} from the @code{keyval} package. Users can specify a handler that deals with unknown options. Active commas and equal signs may be used, and only one level of curly braces are removed from the values.") - (license license:lppl1.3c+))) + (license license:lppl1.3c+)))) + +(define-deprecated-package texlive-generic-kvsetkeys texlive-kvsetkeys) (define-public texlive-generic-listofitems (package @@ -8901,56 +9512,130 @@ the parsing character has been selected by the user, and to access any of these items with a simple syntax.") (license license:lppl1.3c+))) -(define-public texlive-generic-ltxcmds - (package - (inherit (simple-texlive-package - "texlive-generic-ltxcmds" - '("/tex/generic/ltxcmds/") - (base32 - "1lr77yai2qivlx26s5094czpfxmg96bhxps5wbm8xn7cpsw0zbd9") - #:trivial? #t)) - (home-page "https://www.ctan.org/pkg/ltxcmds") - (synopsis "LaTeX kernel commands extracted for general use") - (description - "This package exports some utility macros from the LaTeX kernel into +(define-public texlive-ltxcmds + (let ((template (simple-texlive-package + "texlive-ltxcmds" + (list "doc/generic/ltxcmds/" + "source/generic/ltxcmds/" + "tex/generic/ltxcmds/") + (base32 + "1izcw9jl64iij541183hc156sjwamvxm7q9fkpfnz8sppyg31fkb")))) + (package + (inherit template) + (outputs '("out" "doc")) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:tex-directory _ '()) + "generic/ltxcmds") + ((#:build-targets _ '()) + #~(list "ltxcmds.dtx")) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "source/generic/ltxcmds"))) + (replace 'copy-files + (lambda* (#:key inputs #:allow-other-keys) + (let ((origin (assoc-ref inputs "source")) + (source (string-append #$output + "/share/texmf-dist/source")) + (doc (string-append #$output:doc + "/share/texmf-dist/doc"))) + (copy-recursively (string-append origin "/source") source) + (copy-recursively (string-append origin "/doc") doc)))))))) + (home-page "https://www.ctan.org/pkg/ltxcmds") + (synopsis "LaTeX kernel commands extracted for general use") + (description + "This package exports some utility macros from the LaTeX kernel into a separate namespace and also makes them available for other formats such as plain TeX.") - (license license:lppl1.3c+))) + (license license:lppl1.3c+)))) -(define-public texlive-generic-pdfescape - (package - (inherit (simple-texlive-package - "texlive-generic-pdfescape" - '("/tex/generic/pdfescape/") - (base32 - "1vbdjmm9bi9ngzz2z1b8jnf6nzf9xsaj5pvyswg13y4dr00mnz6n") - #:trivial? #t)) - (home-page "https://www.ctan.org/pkg/pdfescape") - (synopsis "pdfTeX's escape features for plain TeX") - (description - "This package implements pdfTeX's escape features (@code{\\pdfescapehex}, +(define-deprecated-package texlive-generic-ltxcmds texlive-ltxcmds) + +(define-public texlive-pdfescape + (let ((template (simple-texlive-package + "texlive-pdfescape" + (list "doc/latex/pdfescape/" + "source/latex/pdfescape/" + "tex/generic/pdfescape/") + (base32 + "16a0rdmpa4wxh6gyf46qwfgyh399rwdind2wc89phqd50ky9b5m4")))) + (package + (inherit template) + (outputs '("out" "doc")) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:tex-directory _ '()) + "generic/pdfescape") + ((#:build-targets _ '()) + #~(list "pdfescape.dtx")) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "source/latex/pdfescape"))) + (replace 'copy-files + (lambda* (#:key inputs #:allow-other-keys) + (let ((origin (assoc-ref inputs "source")) + (source (string-append #$output + "/share/texmf-dist/source")) + (doc (string-append #$output:doc + "/share/texmf-dist/doc"))) + (copy-recursively (string-append origin "/source") source) + (copy-recursively (string-append origin "/doc") doc)))))))) + (home-page "https://www.ctan.org/pkg/pdfescape") + (synopsis "pdfTeX's escape features for plain TeX") + (description + "This package implements pdfTeX's escape features (@code{\\pdfescapehex}, @code{\\pdfunescapehex}, @code{\\pdfescapename}, @code{\\pdfescapestring}) using TeX or e-TeX.") - (license license:lppl1.3c+))) + (license license:lppl1.3c+)))) -(define-public texlive-generic-uniquecounter - (package - (inherit (simple-texlive-package - "texlive-generic-uniquecounter" - '("/doc/latex/uniquecounter/" - "/tex/generic/uniquecounter/") - (base32 - "1bjh8vwiqlkmjqndnh4xp116524x4m3hdcyq2s231jiqy8il8dcc") - #:trivial? #t)) - (propagated-inputs - (list texlive-generic-bigintcalc texlive-generic-infwarerr)) - (home-page "https://www.ctan.org/pkg/uniquecounter") - (synopsis "Unlimited unique counter") - (description - "This package provides a kind of counter that provides unique number +(define-deprecated-package texlive-generic-pdfescape texlive-pdfescape) + +(define-public texlive-uniquecounter + (let ((template (simple-texlive-package + "texlive-uniquecounter" + (list "doc/latex/uniquecounter/" + "source/latex/uniquecounter/" + "tex/generic/uniquecounter/") + (base32 + "1ll3iwk8x44l3qx1dhna399ngg66vbllivv8i3lwzriwkx22xbf3")))) + (package + (inherit template) + (outputs '("out" "doc")) + (arguments + (substitute-keyword-arguments (package-arguments template) + ((#:tex-directory _ '()) + "generic/uniquecounter") + ((#:build-targets _ '()) + #~(list "uniquecounter.dtx")) + ((#:phases phases) + #~(modify-phases #$phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "source/latex/uniquecounter"))) + (replace 'copy-files + (lambda* (#:key inputs #:allow-other-keys) + (let ((origin (assoc-ref inputs "source")) + (source (string-append #$output + "/share/texmf-dist/source")) + (doc (string-append #$output:doc + "/share/texmf-dist/doc"))) + (copy-recursively (string-append origin "/source") source) + (copy-recursively (string-append origin "/doc") doc)))))))) + (propagated-inputs + (list texlive-bigintcalc texlive-infwarerr)) + (home-page "https://www.ctan.org/pkg/uniquecounter") + (synopsis "Unlimited unique counter") + (description + "This package provides a kind of counter that provides unique number values. Several counters can be created with different names. The numeric values are not limited.") - (license license:lppl1.3c+))) + (license license:lppl1.3c+)))) + +(define-deprecated-package texlive-generic-uniquecounter texlive-uniquecounter) (define-public texlive-latex-readarray (package @@ -9468,9 +10153,9 @@ may be used instead of @code{\\marginpar} at almost every place where frames made with the @code{framed} package.") (license license:lppl1.3c+)))) -(define-public texlive-generic-iftex +(define-public texlive-iftex (let ((template (simple-texlive-package - "texlive-generic-iftex" + "texlive-iftex" (list "/doc/generic/iftex/" "/tex/generic/iftex/") (base32 @@ -9488,9 +10173,9 @@ package also provides the @code{\\RequirePDFTeX}, @code{\\RequireXeTeX}, and LuaTeX (respectively) is not the engine in use.") (license license:lppl1.3+)))) -(define-deprecated-package texlive-iftex texlive-generic-iftex) +(define-deprecated-package texlive-generic-iftex texlive-iftex) -(define-deprecated-package texlive-generic-ifxetex texlive-generic-iftex) +(define-deprecated-package texlive-generic-ifxetex texlive-iftex) (define-public texlive-tabu (let ((template @@ -9629,17 +10314,12 @@ are part of the LaTeX required tools distribution, comprising the packages: texlive-graphics-def texlive-xcolor texlive-latex-footmisc - - ;; TODO: Use non-deprecated name on next rebuild cycle. - texlive-latex-listings - - texlive-generic-iftex + texlive-iftex + texlive-listings texlive-pstricks texlive-pst-text texlive-tools - - ;; TODO: Use non-deprecated name on next rebuild cycle. - texlive-latex-pgf)) + texlive-pgf)) (home-page "http://www.ctan.org/pkg/xkeyval") (synopsis "Extension of the keyval package") (description @@ -9971,6 +10651,21 @@ uppercase letters commonly used to represent various number sets. LaTeX macro support is provided in package @code{psnfss}.") (license license:gpl3+))) +(define-public texlive-fp + (package + (inherit + (simple-texlive-package + "texlive-fp" + (list "doc/latex/fp/" "tex/latex/fp/" "tex/plain/fp/") + (base32 "1q555fx71cf88sn3npzb0j2i10ak920k0qc9ccdygz99vqg10dad") + #:trivial? #t)) + (home-page "https://ctan.org/macros/latex/contrib/fp") + (synopsis "Fixed point arithmetic") + (description + "This package provides an extensive collection of arithmetic operations +for fixed point real numbers of high precision.") + (license license:lppl))) + (define-public texlive-fpl (package (inherit (simple-texlive-package @@ -10531,22 +11226,39 @@ The macros were designed for use within other macros.") (define-public texlive-grfext (let ((template (simple-texlive-package "texlive-grfext" - (list "/doc/latex/grfext/README.md" - "/source/latex/grfext/grfext.dtx") + (list "doc/latex/grfext/" + "source/latex/grfext/" + "tex/latex/grfext/") (base32 - "1cdvjp9gcnixxlbl8ibwz1yr799gwax5hm686hwmwsigdgafhzgq")))) + "1x35r10mkjg8dzx7aj99y4dwyf69jgs41qwapdx523lbglywmgxp")))) (package (inherit template) + (outputs '("out" "doc")) (arguments (substitute-keyword-arguments (package-arguments template) - ((#:tex-directory _ '()) + ((#:tex-directory _ #t) "latex/grfext") - ((#:build-targets _ '()) - ''("grfext.dtx")) + ((#:build-targets _ #t) + #~(list "grfext.dtx")) ((#:phases phases) - `(modify-phases ,phases - (add-after 'unpack 'chdir - (lambda _ (chdir "source/latex/grfext"))))))) + #~(modify-phases #$phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "source/latex/grfext"))) + (replace 'copy-files + (lambda* (#:key inputs #:allow-other-keys) + (let ((origin (assoc-ref inputs "source")) + (source (string-append #$output + "/share/texmf-dist/source")) + (doc (string-append #$output:doc + "/share/texmf-dist/doc"))) + (copy-recursively (string-append origin "/source") source) + (copy-recursively (string-append origin "/doc") doc)))) + (add-after 'copy-files 'remove-generated-file + (lambda* (#:key outputs #:allow-other-keys) + (with-directory-excursion #$output + (for-each delete-file + (find-files "." "\\.(drv|ins)$"))))))))) (home-page "https://github.com/ho-tex/grfext") (synopsis "Manipulate the graphics package's list of extensions") (description "This package provides macros for adding to, and reordering @@ -10575,12 +11287,12 @@ the list of graphics file extensions recognised by package graphics.") (native-inputs (list texlive-ydoc)) (propagated-inputs - (list texlive-pgf - texlive-latex-varwidth + (list texlive-latex-varwidth texlive-latex-xkeyval texlive-collectbox texlive-ifoddpage - texlive-storebox)) + texlive-storebox + texlive-pgf)) (home-page "https://www.ctan.org/pkg/adjustbox") (synopsis "Graphics package-alike macros for “general” boxes") (description "The package provides several macros to adjust boxed @@ -10658,8 +11370,7 @@ levels. All functionality is provided by the single @code{\\qrcode} command.") (package (inherit template) (propagated-inputs - (list texlive-etoolbox texlive-latex-environ texlive-pgf - texlive-latex-tools)) + (list texlive-etoolbox texlive-latex-environ texlive-pgf texlive-tools)) (home-page "https://www.ctan.org/pkg/tcolorbox") (synopsis "Colored boxes, for LaTeX examples and theorems, etc") (description "This package provides an environment for colored and diff --git a/gnu/packages/texinfo.scm b/gnu/packages/texinfo.scm index fc1dac9df9..f3c870d9e6 100644 --- a/gnu/packages/texinfo.scm +++ b/gnu/packages/texinfo.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2012, 2013, 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2016 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> -;;; Copyright © 2017, 2019 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2017, 2019, 2022 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2019 Pierre-Moana Levesque <pierre.moana.levesque@gmail.com> ;;; Copyright © 2019, 2020 Mathieu Othacehe <m.othacehe@gmail.com> @@ -45,14 +45,14 @@ (define-public texinfo (package (name "texinfo") - (version "6.7") + (version "6.8") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/texinfo/texinfo-" version ".tar.xz")) (sha256 (base32 - "1aicn1v3czqii08wc91jw089n1x3gfchkf808q2as59dak0h714q")))) + "1i7yb7mrp3inz25zbzv2pllr4y7d58v818f1as7iz8mw53nm7dwf")))) (build-system gnu-build-system) (arguments ;; When cross-compiling, the package is configured twice: once with the diff --git a/gnu/packages/time.scm b/gnu/packages/time.scm index 185bb682f6..5b0ef6af9e 100644 --- a/gnu/packages/time.scm +++ b/gnu/packages/time.scm @@ -338,14 +338,14 @@ ISO 8601 dates, time and duration.") (define-public python-iso8601 (package (name "python-iso8601") - (version "0.1.13") + (version "1.0.2") (source (origin (method url-fetch) (uri (pypi-uri "iso8601" version)) (sha256 (base32 - "1cgfj91khil4ii5gb8s6nxwm73vx7hqc2k79dd9d8990ylmc5ppp")))) + "1ccl6plks706hxm35cn1wsvxhqh3bfwi5cjgjpdxjib81qi07x97")))) (build-system python-build-system) (arguments '(#:phases (modify-phases %standard-phases @@ -353,12 +353,13 @@ ISO 8601 dates, time and duration.") (lambda _ (invoke "pytest" "-vv" "iso8601")))))) (native-inputs - (list python-pytest)) - (home-page "https://bitbucket.org/micktwomey/pyiso8601") + (list python-pytest python-pytz)) + (home-page "https://github.com/micktwomey/pyiso8601") (synopsis "Module to parse ISO 8601 dates") (description "This module parses the most common forms of ISO 8601 date strings (e.g. @code{2007-01-14T20:34:22+00:00}) into @code{datetime} objects.") + (properties `((python2-variant . ,(delay python2-iso8601)))) (license expat))) (define-public python-monotonic diff --git a/gnu/packages/unicode.scm b/gnu/packages/unicode.scm index 23c5de195c..bda0de04cc 100644 --- a/gnu/packages/unicode.scm +++ b/gnu/packages/unicode.scm @@ -78,15 +78,14 @@ renderer.") (define-public ucd (package (name "ucd") - (version "12.0.0") + (version "14.0.0") (source (origin (method url-fetch/zipbomb) (uri (string-append "https://www.unicode.org/Public/zipped/" version "/UCD.zip")) (sha256 - (base32 - "1ighy39cjkmqnv1797wrxjz76mv1fdw7zp5j04q55bkwxsdkvrmh")))) + (base32 "001nq9w52ijma0vps40xwy2q6ylpyf1393lzb128ibypnmv54fh3")))) (build-system copy-build-system) (arguments '(#:install-plan diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 266379ad44..48c7c3a46d 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -46,6 +46,7 @@ ;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@posteo.ro> ;;; Copyright © 2020 Ivan Kozlov <kanichos@yandex.ru> ;;; Copyright © 2020 Antoine Côté <antoine.cote@posteo.net> +;;; Copyright © 2020 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; Copyright © 2021 Alexey Abramov <levenson@mmer.org> ;;; Copyright © 2021 Andrew Tropin <andrew@trop.in> ;;; Copyright © 2021 David Wilson <david@daviwil.com> diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm index ead9e9749e..ad03c4fa53 100644 --- a/gnu/packages/web-browsers.scm +++ b/gnu/packages/web-browsers.scm @@ -15,6 +15,7 @@ ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de> ;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz> ;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@posteo.ro> +;;; Copyright © 2020 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; Copyright © 2021, 2022 Cage <cage-dev@twistfold.it> ;;; Copyright © 2021 Benoit Joly <benoit@benoitj.ca> ;;; Copyright © 2021 Alexander Krotov <krotov@iitp.ru> @@ -486,6 +487,7 @@ interface.") python-markupsafe python-pygments python-pynacl + python-pypeg2 python-pyyaml ;; FIXME: python-pyqtwebengine needs to come before python-pyqt so ;; that it's __init__.py is used first. @@ -501,6 +503,11 @@ interface.") #:tests? #f #:phases (modify-phases %standard-phases + (add-after 'unpack 'patch-systemdir + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* "qutebrowser/utils/standarddir.py" + (("/usr/share") (string-append out "/share")))))) (add-after 'unpack 'find-userscripts (lambda* (#:key outputs #:allow-other-keys) (substitute* "qutebrowser/commands/userscripts.py" @@ -529,14 +536,25 @@ interface.") "/site-packages:" (getenv "GUIX_PYTHONPATH")))) (for-each - (lambda (file) - (wrap-program file - `("GUIX_PYTHONPATH" ":" prefix (,path)))) - (append - (find-files - (string-append out "/share/qutebrowser/scripts") "\\.py$") - (find-files - (string-append out "/share/qutebrowser/userscripts"))))))) + (lambda (i) + (let ((src (format #f "icons/qutebrowser-~dx~d.png" i i)) + (dest (format #f "~a/~dx~d/apps/qutebrowser.png" + hicolor i i))) + (mkdir-p (dirname dest)) + (copy-file src dest))) + '(16 24 32 48 64 128 256 512)) + (install-file "icons/qutebrowser.svg" + (string-append hicolor "/scalable/apps")) + (substitute* "misc/org.qutebrowser.qutebrowser.desktop" + (("Exec=qutebrowser") + (string-append "Exec=" out "/bin/qutebrowser"))) + (install-file "misc/org.qutebrowser.qutebrowser.desktop" app)))) + (add-after 'install 'install-userscripts + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (scripts (string-append out "/share/qutebrowser/userscripts"))) + (mkdir-p scripts) + (copy-recursively "misc/userscripts" scripts)))) (add-after 'wrap 'wrap-qt-process-path (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index e2e6c72974..64d747a312 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -1649,7 +1649,7 @@ used to validate and fix HTML data.") (define-public esbuild (package (name "esbuild") - (version "0.12.9") + (version "0.14.0") (source (origin (method git-fetch) @@ -1658,7 +1658,7 @@ used to validate and fix HTML data.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "10bz1xq2frdja7mbx04m009svg8b5rj7vfq3sc2gc88n31v21b1j")) + (base32 "09r1xy0kk6c9cpz6q0mxr4why373pwxbm439z2ihq3k1d5kk7x4w")) (modules '((guix build utils))) (snippet '(begin diff --git a/gnu/packages/wget.scm b/gnu/packages/wget.scm index 960569f3ed..73338c73b3 100644 --- a/gnu/packages/wget.scm +++ b/gnu/packages/wget.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com> ;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> +;;; Copyright © 2021 Michael Rohleder <mike@rohleder.de> ;;; ;;; This file is part of GNU Guix. ;;; diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm index d345bc461d..b8519e6347 100644 --- a/gnu/packages/xdisorg.scm +++ b/gnu/packages/xdisorg.scm @@ -648,7 +648,7 @@ rasterisation.") (define-public libdrm (package (name "libdrm") - (version "2.4.107") + (version "2.4.110") (source (origin (method url-fetch) (uri (string-append @@ -656,7 +656,7 @@ rasterisation.") version ".tar.xz")) (sha256 (base32 - "127qf1rzhaf13vdd75a58v5q34617hvangjlfnlkcdh37gqcwm65")))) + "0dwpry9m5l27dlhq48j4bsiqwm0247cxdqwv3b7ddmkynk2f9kpf")))) (build-system meson-build-system) (arguments `(#:configure-flags diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm index 1547fdb9f8..7120764a00 100644 --- a/gnu/packages/xorg.scm +++ b/gnu/packages/xorg.scm @@ -26,6 +26,7 @@ ;;; Copyright © 2020, 2021 Michael Rohleder <mike@rohleder.de> ;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2020 Jean-Baptiste Note <jean-baptiste.note@m4x.org> +;;; Copyright © 2021 Matthew James Kraai <kraai@ftbfs.org> ;;; Copyright © 2021 Nicolò Balzarotti <nicolo@nixo.xyz> ;;; Copyright © 2021 Matthew James Kraai <kraai@ftbfs.org> ;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re> @@ -3992,10 +3993,7 @@ extension to the X11 protocol. It includes: (inputs (list libx11 xkbcomp-intermediate)) (native-inputs - `(("gettext" ,gettext-minimal) - ("perl" ,perl) - ("pkg-config" ,pkg-config) - ("python" ,python))) + (list gettext-minimal libxslt perl pkg-config python)) (home-page "https://www.x.org/wiki/") (synopsis "Xorg XKB configuration files") (description |