diff options
124 files changed, 3896 insertions, 5616 deletions
diff --git a/Makefile.am b/Makefile.am index 6c8822138d..254968244c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -151,6 +151,7 @@ MODULES = \ guix/build-system/font.scm \ guix/build-system/go.scm \ guix/build-system/meson.scm \ + guix/build-system/mozilla.scm \ guix/build-system/minify.scm \ guix/build-system/minetest.scm \ guix/build-system/asdf.scm \ diff --git a/doc/guix.texi b/doc/guix.texi index b8c49099a4..8affc235e1 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -36,7 +36,7 @@ Copyright @copyright{} 2016, 2017, 2018, 2021 Chris Marusich@* Copyright @copyright{} 2016, 2017, 2018, 2019, 2020, 2021, 2022 Efraim Flashner@* Copyright @copyright{} 2016 John Darrington@* Copyright @copyright{} 2016, 2017 Nikita Gillmann@* -Copyright @copyright{} 2016, 2017, 2018, 2019, 2020 Jan Nieuwenhuizen@* +Copyright @copyright{} 2016, 2017, 2018, 2019, 2021, 2022 Jan Nieuwenhuizen@* Copyright @copyright{} 2016, 2017, 2018, 2019, 2020, 2021 Julien Lepiller@* Copyright @copyright{} 2016 Alex ter Weele@* Copyright @copyright{} 2016, 2017, 2018, 2019, 2020, 2021 Christopher Baines@* @@ -410,7 +410,7 @@ Installing Debugging Files Bootstrapping -* Reduced Binary Seed Bootstrap:: A Bootstrap worthy of GNU. +* Full-Source Bootstrap:: A Bootstrap worthy of GNU. * Preparing to Use the Bootstrap Binaries:: Building that what matters most. @end detailmenu @@ -9120,6 +9120,15 @@ directory, the parameter @code{#:javascript-files} can be used to specify a list of file names to feed to the minifier. @end defvr +@defvr {Scheme Variable} mozilla-build-system +This variable is exported by @code{(guix build-system mozilla)}. It +sets the @code{--target} and @code{--host} configuration flags to what +software developed by Mozilla expects -- due to historical reasons, +Mozilla software expects @code{--host} to be the system that is +cross-compiled from and @code{--target} to be the system that is +cross-compiled to, contrary to the standard Autotools conventions. +@end defvr + @defvr {Scheme Variable} ocaml-build-system This variable is exported by @code{(guix build-system ocaml)}. It implements a build procedure for @uref{https://ocaml.org, OCaml} packages, which consists @@ -21372,10 +21381,9 @@ Defaults to @samp{#f}. @deftypevr {@code{cups-configuration} parameter} comma-separated-string-list browse-dns-sd-sub-types Specifies a list of DNS-SD sub-types to advertise for each shared printer. -For example, @samp{"_cups" "_print"} will tell network clients that both -CUPS sharing and IPP Everywhere are supported. -Defaults to @samp{"_cups"}. +The default @samp{(list "_cups" "_print" "_universal")} tells clients +that CUPS sharing, IPP Everywhere, AirPrint, and Mopria are supported. @end deftypevr @deftypevr {@code{cups-configuration} parameter} browse-local-protocols browse-local-protocols @@ -21396,22 +21404,6 @@ Specifies whether shared printers are advertised. Defaults to @samp{#f}. @end deftypevr -@deftypevr {@code{cups-configuration} parameter} string classification -Specifies the security classification of the server. Any valid banner -name can be used, including @samp{"classified"}, @samp{"confidential"}, -@samp{"secret"}, @samp{"topsecret"}, and @samp{"unclassified"}, or the -banner can be omitted to disable secure printing functions. - -Defaults to @samp{""}. -@end deftypevr - -@deftypevr {@code{cups-configuration} parameter} boolean classify-override? -Specifies whether users may override the classification (cover page) of -individual print jobs using the @code{job-sheets} option. - -Defaults to @samp{#f}. -@end deftypevr - @deftypevr {@code{cups-configuration} parameter} default-auth-type default-auth-type Specifies the default type of authentication to use. @@ -21547,17 +21539,6 @@ domain sockets. The Listen directive is similar to the Port directive but allows you to restrict access to specific interfaces or networks. @end deftypevr -@deftypevr {@code{cups-configuration} parameter} non-negative-integer listen-back-log -Specifies the number of pending connections that will be allowed. This -normally only affects very busy servers that have reached the MaxClients -limit, but can also be triggered by large numbers of simultaneous -connections. When the limit is reached, the operating system will -refuse additional connections until the scheduler can accept the pending -ones. - -Defaults to @samp{128}. -@end deftypevr - @deftypevr {@code{cups-configuration} parameter} location-access-control-list location-access-controls Specifies a set of additional access controls. @@ -21663,14 +21644,14 @@ Defaults to @samp{500}. @deftypevr {@code{cups-configuration} parameter} non-negative-integer max-jobs-per-printer Specifies the maximum number of simultaneous jobs that are allowed per -printer. A value of 0 allows up to MaxJobs jobs per printer. +printer. A value of 0 allows up to @code{max-jobs} per printer. Defaults to @samp{0}. @end deftypevr @deftypevr {@code{cups-configuration} parameter} non-negative-integer max-jobs-per-user Specifies the maximum number of simultaneous jobs that are allowed per -user. A value of 0 allows up to MaxJobs jobs per user. +user. A value of 0 allows up to @code{max-jobs} per user. Defaults to @samp{0}. @end deftypevr @@ -21689,51 +21670,42 @@ bytes. The value 0 disables log rotation. Defaults to @samp{1048576}. @end deftypevr -@deftypevr {@code{cups-configuration} parameter} non-negative-integer multiple-operation-timeout -Specifies the maximum amount of time to allow between files in a -multiple file print job, in seconds. +@deftypevr {@code{cups-configuration} parameter} non-negative-integer max-subscriptions +Specifies the maximum number of simultaneous event subscriptions that are +allowed. Set to @samp{0} to allow an unlimited number of subscriptions. -Defaults to @samp{900}. +Defaults to @samp{0}. @end deftypevr -@deftypevr {@code{cups-configuration} parameter} string page-log-format -Specifies the format of PageLog lines. Sequences beginning with percent -(@samp{%}) characters are replaced with the corresponding information, -while all other characters are copied literally. The following percent -sequences are recognized: - -@table @samp -@item %% -insert a single percent character - -@item %@{name@} -insert the value of the specified IPP attribute - -@item %C -insert the number of copies for the current page +@deftypevr {@code{cups-configuration} parameter} non-negative-integer max-subscriptions-per-job +Specifies the maximum number of simultaneous event subscriptions that are +allowed per job. A value of @samp{0} allows up to @code{max-subscriptions} +per job. -@item %P -insert the current page number +Defaults to @samp{0}. +@end deftypevr -@item %T -insert the current date and time in common log format +@deftypevr {@code{cups-configuration} parameter} non-negative-integer max-subscriptions-per-printer +Specifies the maximum number of simultaneous event subscriptions that are +allowed per printer. A value of @samp{0} allows up to @code{max-subscriptions} +per printer. -@item %j -insert the job ID +Defaults to @samp{0}. +@end deftypevr -@item %p -insert the printer name +@deftypevr {@code{cups-configuration} parameter} non-negative-integer max-subscriptions-per-user +Specifies the maximum number of simultaneous event subscriptions that are +allowed per user. A value of @samp{0} allows up to @code{max-subscriptions} +per user. -@item %u -insert the username -@end table +Defaults to @samp{0}. +@end deftypevr -A value of the empty string disables page logging. The string @code{%p -%u %j %T %P %C %@{job-billing@} %@{job-originating-host-name@} -%@{job-name@} %@{media@} %@{sides@}} creates a page log with the -standard items. +@deftypevr {@code{cups-configuration} parameter} non-negative-integer multiple-operation-timeout +Specifies the maximum amount of time to allow between files in a +multiple file print job, in seconds. -Defaults to @samp{""}. +Defaults to @samp{900}. @end deftypevr @deftypevr {@code{cups-configuration} parameter} environment-variables environment-variables @@ -21821,6 +21793,17 @@ history is preserved until the MaxJobs limit is reached. Defaults to @samp{#t}. @end deftypevr +@deftypevr {@code{cups-configuration} parameter} comma-separated-string-list-or-#f ready-paper-sizes +Specifies a list of potential paper sizes that are reported as ready, +that is: loaded. The actual list will contain only the sizes that each +printer supports. + +The default value of @code{#f} is a special case: CUPS will use +@samp{(list \"Letter\" \"Legal\" \"Tabloid\" \"4x6\" \"Env10\")} +if the default paper size is \"Letter\", and +@samp{(list \"A3\" \"A4\" \"A5\" \"A6\" \"EnvDL\")} otherwise. +@end deftypevr + @deftypevr {@code{cups-configuration} parameter} non-negative-integer reload-timeout Specifies the amount of time to wait for job completion before restarting the scheduler. @@ -21828,13 +21811,6 @@ restarting the scheduler. Defaults to @samp{30}. @end deftypevr -@deftypevr {@code{cups-configuration} parameter} string rip-cache -Specifies the maximum amount of memory to use when converting documents -into bitmaps for a printer. - -Defaults to @samp{"128m"}. -@end deftypevr - @deftypevr {@code{cups-configuration} parameter} string server-admin Specifies the email address of the server administrator. @@ -40815,12 +40791,12 @@ re-create them if needed (@pxref{Preparing to Use the Bootstrap Binaries}). @menu -* Reduced Binary Seed Bootstrap:: A Bootstrap worthy of GNU. +* Full-Source Bootstrap:: A Bootstrap worthy of GNU. * Preparing to Use the Bootstrap Binaries:: Building that what matters most. @end menu -@node Reduced Binary Seed Bootstrap -@section The Reduced Binary Seed Bootstrap +@node Full-Source Bootstrap +@section The Full-Source Bootstrap Guix---like other GNU/Linux distributions---is traditionally bootstrapped from a set of bootstrap binaries: Bourne shell, command-line tools provided by GNU @@ -40835,28 +40811,47 @@ about 250MB (@pxref{Bootstrappable Builds,,, mes, GNU Mes}). Auditing or even inspecting these is next to impossible. For @code{i686-linux} and @code{x86_64-linux}, Guix now features a -``Reduced Binary Seed'' bootstrap @footnote{We would like to say: ``Full -Source Bootstrap'' and while we are working towards that goal it would -be hyperbole to use that term for what we do now.}. - -The Reduced Binary Seed bootstrap removes the most critical tools---from a -trust perspective---from the bootstrap binaries: GCC, Binutils and the GNU C -Library are replaced by: @code{bootstrap-mescc-tools} (a tiny assembler and -linker) and @code{bootstrap-mes} (a small Scheme Interpreter and a C compiler -written in Scheme and the Mes C Library, built for TinyCC and for GCC). - -Using these new binary seeds the ``missing'' Binutils, GCC, and the GNU -C Library are built from source. From here on the more traditional -bootstrap process resumes. This approach has reduced the bootstrap -binaries in size to about 145MB in Guix v1.1. - -The next step that Guix has taken is to replace the shell and all its +@dfn{full-source bootstrap}. This bootstrap is rooted in +@file{hex0-seed} from the @url{https://savannah.gnu.org/projects/stage0, +Stage0} package. The hex0 program is minimalist assembler: it reads +space-separated hexadecimal digits (nibbles) from a file, possibly +including comments, and emits on standard output the bytes corresponding +to those hexadecimal numbers. The source code of this initial hex0 +program is a file called +@c XXX TODO: udpate to savannah url, once accepted there +@url{https://github.com/oriansj/bootstrap-seeds/blob/master/POSIX/x86/hex0_x86.hex0,@file{hex0_x86.hex0}} +and is written in the @code{hex0} language. + +Hex0 is self-hosting, which means that it can build itself: + +@example +./hex0-seed hex0_x86.hex0 hex0 +@end example + +Hex0 it is the ASCII-equivalent of the binary program and can be +produced by doing something much like: + +@example +sed 's/[;#].*$//g' hex0_x86.hex0 | xxd -r -p > hex0 +chmod +x hex0 +@end example + +It is because of this ASCII-binary equivalence that we can bless this +initial 357-byte binary as source, and hence `full-source bootstrap''. + +The bootstrap then continues: @code{hex0} builds @code{hex1} and then on +to @code{M0}, @code{hex2}, @code{M1}, @code{mescc-tools} and finally +@code{M2-Planet}. Then, using @code{mescc-tools}, @code{M2-Planet} we +build Mes (@pxref{Top, GNU Mes Reference Manual,, mes, GNU Mes}, a +Scheme interpreter and C compiler in Scheme). Frome here on starts +the more traditional @code{C}-based bootstrap of the GNU System. + +Another step that Guix has taken is to replace the shell and all its utilities with implementations in Guile Scheme, the @emph{Scheme-only bootstrap}. Gash (@pxref{Gash,,, gash, The Gash manual}) is a POSIX-compatible shell that replaces Bash, and it comes with Gash Utils which has minimalist replacements for Awk, the GNU Core Utilities, Grep, -Gzip, Sed, and Tar. The rest of the bootstrap binary seeds that were -removed are now built from source. +Gzip, Sed, and Tar. Building the GNU System from source is currently only possible by adding some historical GNU packages as intermediate steps@footnote{Packages @@ -40872,22 +40867,10 @@ The graph below shows the resulting dependency graph for @code{gcc-core-mesboot0}, the bootstrap compiler used for the traditional bootstrap of the rest of the Guix System. -@c ./pre-inst-env guix graph -e '(@@ (gnu packages commencement) gcc-core-mesboot0)' | sed -re 's,((bootstrap-mescc-tools|bootstrap-mes|guile-bootstrap).*shape =) box,\1 ellipse,' > doc/images/gcc-core-mesboot0-graph.dot +@c ./pre-inst-env guix graph -e '(@@ (gnu packages commencement) gcc-core-mesboot0)' | sed -re 's,((bootstrap-seeds|guile-bootstrap).*shape =) box,\1 ellipse,' > doc/images/gcc-core-mesboot0-graph.dot @image{images/gcc-core-mesboot0-graph,6in,,Dependency graph of gcc-core-mesboot0} -The only significant binary bootstrap seeds that remain@footnote{ -Ignoring the 68KB @code{mescc-tools}; that will be removed later, -together with @code{mes}.} are a Scheme interpreter and a Scheme -compiler: GNU Mes and GNU Guile@footnote{Not shown in this graph are the -static binaries for @file{bash}, @code{tar}, and @code{xz} that are used -to get Guile running.}. - -This further reduction has brought down the size of the binary seed to -about 60MB for @code{i686-linux} and @code{x86_64-linux}. - -Work is ongoing to remove all binary blobs from our free software -bootstrap stack, working towards a Full Source Bootstrap. Also ongoing -is work to bring these bootstraps to the @code{arm-linux} and +Work is ongoing to to bring these bootstraps to the @code{arm-linux} and @code{aarch64-linux} architectures and to the Hurd. If you are interested, join us on @samp{#bootstrappable} on the Freenode diff --git a/doc/images/gcc-core-mesboot0-graph.dot b/doc/images/gcc-core-mesboot0-graph.dot index 191582ed4c..ef4e3a441e 100644 --- a/doc/images/gcc-core-mesboot0-graph.dot +++ b/doc/images/gcc-core-mesboot0-graph.dot @@ -1,114 +1,79 @@ digraph "Guix package" { - "139781154519456" [label = "gcc-core-mesboot0@2.95.3", shape = box, fontname = Helvetica]; - "139781154519456" -> "139781154519632" [color = darkgoldenrod]; - "139781154519456" -> "139781154520688" [color = darkgoldenrod]; - "139781154519456" -> "139781034971312" [color = darkgoldenrod]; - "139781154519456" -> "139781154520160" [color = darkgoldenrod]; - "139781154519456" -> "139781034971664" [color = darkgoldenrod]; - "139781154519456" -> "139781154519984" [color = darkgoldenrod]; - "139781154519456" -> "139781154519808" [color = darkgoldenrod]; - "139781154519456" -> "139781154520512" [color = darkgoldenrod]; - "139781154519456" -> "139781034971488" [color = darkgoldenrod]; - "139781154519456" -> "139781034972896" [color = darkgoldenrod]; - "139781154519456" -> "139781034972368" [color = darkgoldenrod]; - "139781154519456" -> "139781034973072" [color = darkgoldenrod]; - "139781154519456" -> "139781131267872" [color = darkgoldenrod]; - "139781154519632" [label = "binutils-mesboot0@2.14", shape = box, fontname = Helvetica]; - "139781154519632" -> "139781154520688" [color = peachpuff4]; - "139781154519632" -> "139781034971312" [color = peachpuff4]; - "139781154519632" -> "139781154520160" [color = peachpuff4]; - "139781154519632" -> "139781034971664" [color = peachpuff4]; - "139781154519632" -> "139781154519984" [color = peachpuff4]; - "139781154519632" -> "139781154519808" [color = peachpuff4]; - "139781154519632" -> "139781154520512" [color = peachpuff4]; - "139781154519632" -> "139781034971488" [color = peachpuff4]; - "139781154519632" -> "139781034972896" [color = peachpuff4]; - "139781154519632" -> "139781034972368" [color = peachpuff4]; - "139781154519632" -> "139781034973072" [color = peachpuff4]; - "139781154519632" -> "139781131267872" [color = peachpuff4]; - "139781154520688" [label = "bash-mesboot0@2.05b", shape = box, fontname = Helvetica]; - "139781154520688" -> "139781034971488" [color = magenta]; - "139781154520688" -> "139781034971840" [color = magenta]; - "139781154520688" -> "139781034972896" [color = magenta]; - "139781154520688" -> "139781034972368" [color = magenta]; - "139781154520688" -> "139781034973072" [color = magenta]; - "139781154520688" -> "139781131267872" [color = magenta]; - "139781034971488" [label = "make-mesboot0@3.80", shape = box, fontname = Helvetica]; - "139781034971488" -> "139781034971840" [color = dimgrey]; - "139781034971488" -> "139781034972896" [color = dimgrey]; - "139781034971488" -> "139781034972368" [color = dimgrey]; - "139781034971488" -> "139781034973072" [color = dimgrey]; - "139781034971488" -> "139781131267872" [color = dimgrey]; - "139781034971840" [label = "tcc-boot0@0.9.26-1103-g6e62e0e", shape = box, fontname = Helvetica]; - "139781034971840" -> "139781034972016" [color = magenta]; - "139781034971840" -> "139781131266816" [color = magenta]; - "139781034971840" -> "139781034972896" [color = magenta]; - "139781034971840" -> "139781034972368" [color = magenta]; - "139781034971840" -> "139781034973072" [color = magenta]; - "139781034971840" -> "139781131267872" [color = magenta]; - "139781034972016" [label = "mes-boot@0.22", shape = box, fontname = Helvetica]; - "139781034972016" -> "139781034972192" [color = cyan3]; - "139781034972016" -> "139781131266816" [color = cyan3]; - "139781034972016" -> "139781034972896" [color = cyan3]; - "139781034972016" -> "139781034972368" [color = cyan3]; - "139781034972016" -> "139781034973072" [color = cyan3]; - "139781034972016" -> "139781131267872" [color = cyan3]; - "139781034972192" [label = "bootstrap-mes-rewired@0.19", shape = ellipse, fontname = Helvetica]; - "139781034972192" -> "139781131266640" [color = darkseagreen]; - "139781034972192" -> "139781034972896" [color = darkseagreen]; - "139781131266640" [label = "bootstrap-mes@0", shape = ellipse, fontname = Helvetica]; - "139781034972896" [label = "gash-boot@0.2.0", shape = box, fontname = Helvetica]; - "139781034972896" -> "139781034973072" [color = darkviolet]; - "139781034972896" -> "139781131267872" [color = darkviolet]; - "139781034973072" [label = "bootar@1", shape = box, fontname = Helvetica]; - "139781034973072" -> "139781131267872" [color = darkviolet]; - "139781131267872" [label = "guile-bootstrap@2.0", shape = ellipse, fontname = Helvetica]; - "139781131266816" [label = "bootstrap-mescc-tools@0.5.2", shape = ellipse, fontname = Helvetica]; - "139781034972368" [label = "gash-utils-boot@0.1.0", shape = box, fontname = Helvetica]; - "139781034972368" -> "139781034973072" [color = darkseagreen]; - "139781034972368" -> "139781034972896" [color = darkseagreen]; - "139781034972368" -> "139781131267872" [color = darkseagreen]; - "139781034971312" [label = "bzip2-mesboot@1.0.8", shape = box, fontname = Helvetica]; - "139781034971312" -> "139781034971488" [color = cyan3]; - "139781034971312" -> "139781034971840" [color = cyan3]; - "139781034971312" -> "139781034972896" [color = cyan3]; - "139781034971312" -> "139781034972368" [color = cyan3]; - "139781034971312" -> "139781034973072" [color = cyan3]; - "139781034971312" -> "139781131267872" [color = cyan3]; - "139781154520160" [label = "diffutils-mesboot@2.7", shape = box, fontname = Helvetica]; - "139781154520160" -> "139781034971488" [color = red]; - "139781154520160" -> "139781034971840" [color = red]; - "139781154520160" -> "139781034972896" [color = red]; - "139781154520160" -> "139781034972368" [color = red]; - "139781154520160" -> "139781034973072" [color = red]; - "139781154520160" -> "139781131267872" [color = red]; - "139781034971664" [label = "gzip-mesboot@1.2.4", shape = box, fontname = Helvetica]; - "139781034971664" -> "139781034971840" [color = red]; - "139781034971664" -> "139781034972896" [color = red]; - "139781034971664" -> "139781034972368" [color = red]; - "139781034971664" -> "139781034973072" [color = red]; - "139781034971664" -> "139781131267872" [color = red]; - "139781154519984" [label = "patch-mesboot@2.5.9", shape = box, fontname = Helvetica]; - "139781154519984" -> "139781034971488" [color = blue]; - "139781154519984" -> "139781034971840" [color = blue]; - "139781154519984" -> "139781034972896" [color = blue]; - "139781154519984" -> "139781034972368" [color = blue]; - "139781154519984" -> "139781034973072" [color = blue]; - "139781154519984" -> "139781131267872" [color = blue]; - "139781154519808" [label = "sed-mesboot0@1.18", shape = box, fontname = Helvetica]; - "139781154519808" -> "139781034971488" [color = red]; - "139781154519808" -> "139781034971840" [color = red]; - "139781154519808" -> "139781034972896" [color = red]; - "139781154519808" -> "139781034972368" [color = red]; - "139781154519808" -> "139781034973072" [color = red]; - "139781154519808" -> "139781131267872" [color = red]; - "139781154520512" [label = "tcc-boot@0.9.27", shape = box, fontname = Helvetica]; - "139781154520512" -> "139781034971312" [color = darkviolet]; - "139781154520512" -> "139781034971488" [color = darkviolet]; - "139781154520512" -> "139781034971840" [color = darkviolet]; - "139781154520512" -> "139781034972896" [color = darkviolet]; - "139781154520512" -> "139781034972368" [color = darkviolet]; - "139781154520512" -> "139781034973072" [color = darkviolet]; - "139781154520512" -> "139781131267872" [color = darkviolet]; + "139803511371136" [label = "gcc-core-mesboot0@2.95.3", shape = box, fontname = sans]; + "139803511371136" -> "139803511371312" [color = red]; + "139803511371136" -> "139803511372016" [color = red]; + "139803511371136" -> "139803511371488" [color = red]; + "139803511371136" -> "139803511371664" [color = red]; + "139803511371136" -> "139803511371840" [color = red]; + "139803511371136" -> "139803507105792" [color = red]; + "139803511371136" -> "139803511373600" [color = red]; + "139803511371136" -> "139803507105968" [color = red]; + "139803511371136" -> "139803749199472" [color = red]; + "139803511371312" [label = "binutils-mesboot0@2.20.1a", shape = box, fontname = sans]; + "139803511371312" -> "139803511372016" [color = dimgrey]; + "139803511371312" -> "139803511371488" [color = dimgrey]; + "139803511371312" -> "139803511371664" [color = dimgrey]; + "139803511371312" -> "139803511371840" [color = dimgrey]; + "139803511371312" -> "139803507105792" [color = dimgrey]; + "139803511371312" -> "139803511373600" [color = dimgrey]; + "139803511371312" -> "139803507105968" [color = dimgrey]; + "139803511371312" -> "139803749199472" [color = dimgrey]; + "139803511372016" [label = "gzip-mesboot@1.2.4", shape = box, fontname = sans]; + "139803511372016" -> "139803511372192" [color = magenta]; + "139803511372016" -> "139803507105792" [color = magenta]; + "139803511372016" -> "139803511373600" [color = magenta]; + "139803511372016" -> "139803507105968" [color = magenta]; + "139803511372016" -> "139803749199472" [color = magenta]; + "139803511372192" [label = "tcc-boot0@0.9.26-1136-g5bba73cc", shape = box, fontname = sans]; + "139803511372192" -> "139803511372368" [color = magenta]; + "139803511372192" -> "139803511372544" [color = magenta]; + "139803511372192" -> "139803507105792" [color = magenta]; + "139803511372192" -> "139803511373600" [color = magenta]; + "139803511372192" -> "139803507105968" [color = magenta]; + "139803511372192" -> "139803749199472" [color = magenta]; + "139803511372368" [label = "mes-boot@0.24", shape = box, fontname = sans]; + "139803511372368" -> "139803511372544" [color = darkviolet]; + "139803511372368" -> "139803507105792" [color = darkviolet]; + "139803511372368" -> "139803511373600" [color = darkviolet]; + "139803511372368" -> "139803507105968" [color = darkviolet]; + "139803511372368" -> "139803749199472" [color = darkviolet]; + "139803511372544" [label = "stage0-posix@1.4", shape = box, fontname = sans]; + "139803511372544" -> "139803511373072" [color = peachpuff4]; + "139803511372544" -> "139803507105792" [color = peachpuff4]; + "139803511372544" -> "139803511373600" [color = peachpuff4]; + "139803511372544" -> "139803507105968" [color = peachpuff4]; + "139803511372544" -> "139803749199472" [color = peachpuff4]; + "139803511373072" [label = "bootstrap-seeds@1.0.0", shape = ellipse, fontname = sans]; + "139803511373072" -> "139803507105968" [color = cyan3]; + "139803507105968" [label = "bootar@1b", shape = box, fontname = sans]; + "139803507105968" -> "139803749199472" [color = dimgrey]; + "139803749199472" [label = "guile-bootstrap@2.0", shape = ellipse, fontname = sans]; + "139803507105792" [label = "gash-boot@0.3.0", shape = box, fontname = sans]; + "139803507105792" -> "139803507105968" [color = darkviolet]; + "139803507105792" -> "139803749199472" [color = darkviolet]; + "139803511373600" [label = "gash-utils-boot@0.2.0", shape = box, fontname = sans]; + "139803511373600" -> "139803507105968" [color = red]; + "139803511373600" -> "139803507105792" [color = red]; + "139803511373600" -> "139803749199472" [color = red]; + "139803511371488" [label = "patch-mesboot@2.5.9", shape = box, fontname = sans]; + "139803511371488" -> "139803511371840" [color = darkseagreen]; + "139803511371488" -> "139803511372192" [color = darkseagreen]; + "139803511371488" -> "139803507105792" [color = darkseagreen]; + "139803511371488" -> "139803511373600" [color = darkseagreen]; + "139803511371488" -> "139803507105968" [color = darkseagreen]; + "139803511371488" -> "139803749199472" [color = darkseagreen]; + "139803511371840" [label = "make-mesboot0@3.80", shape = box, fontname = sans]; + "139803511371840" -> "139803511372192" [color = blue]; + "139803511371840" -> "139803507105792" [color = blue]; + "139803511371840" -> "139803511373600" [color = blue]; + "139803511371840" -> "139803507105968" [color = blue]; + "139803511371840" -> "139803749199472" [color = blue]; + "139803511371664" [label = "tcc-boot@0.9.27", shape = box, fontname = sans]; + "139803511371664" -> "139803511371840" [color = peachpuff4]; + "139803511371664" -> "139803511372192" [color = peachpuff4]; + "139803511371664" -> "139803507105792" [color = peachpuff4]; + "139803511371664" -> "139803511373600" [color = peachpuff4]; + "139803511371664" -> "139803507105968" [color = peachpuff4]; + "139803511371664" -> "139803749199472" [color = peachpuff4]; } diff --git a/gnu/local.mk b/gnu/local.mk index 353b91cfd2..d2617f771f 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -10,7 +10,7 @@ # Copyright © 2016, 2017, 2018, 2019, 2020, 2021, 2022 Ricardo Wurmus <rekado@elephly.net> # Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> # Copyright © 2016, 2017, 2018, 2019 Alex Vong <alexvong1995@gmail.com> -# Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il> +# Copyright © 2016, 2017, 2018, 2019, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il> # Copyright © 2016, 2017, 2018, 2019, 2020, 2021, 2022 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> # Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> # Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org> @@ -907,12 +907,10 @@ dist_patch_DATA = \ %D%/packages/patches/beancount-disable-googleapis-fonts.patch \ %D%/packages/patches/beignet-correct-file-names.patch \ %D%/packages/patches/bidiv-update-fribidi.patch \ - %D%/packages/patches/binutils-2.37-file-descriptor-leak.patch \ %D%/packages/patches/binutils-boot-2.20.1a.patch \ %D%/packages/patches/binutils-loongson-workaround.patch \ %D%/packages/patches/binutils-mingw-w64-timestamp.patch \ %D%/packages/patches/binutils-mingw-w64-deterministic.patch \ - %D%/packages/patches/binutils-CVE-2021-45078.patch \ %D%/packages/patches/bloomberg-bde-cmake-module-path.patch \ %D%/packages/patches/bloomberg-bde-tools-fix-install-path.patch \ %D%/packages/patches/bpftrace-disable-bfd-disasm.patch \ @@ -970,7 +968,6 @@ dist_patch_DATA = \ %D%/packages/patches/cool-retro-term-wctype.patch \ %D%/packages/patches/coreutils-gnulib-tests.patch \ %D%/packages/patches/coq-fix-envvars.patch \ - %D%/packages/patches/coreutils-ls.patch \ %D%/packages/patches/cpuinfo-system-libraries.patch \ %D%/packages/patches/cpulimit-with-glib-2.32.patch \ %D%/packages/patches/crawl-upgrade-saves.patch \ @@ -1086,7 +1083,6 @@ dist_patch_DATA = \ %D%/packages/patches/ganeti-pyyaml-compat.patch \ %D%/packages/patches/ganeti-shepherd-master-failover.patch \ %D%/packages/patches/ganeti-shepherd-support.patch \ - %D%/packages/patches/gash-utils-ls-test.patch \ %D%/packages/patches/gawk-shell.patch \ %D%/packages/patches/gcc-arm-bug-71399.patch \ %D%/packages/patches/gcc-arm-link-spec-fix.patch \ @@ -1143,6 +1139,7 @@ dist_patch_DATA = \ %D%/packages/patches/geeqie-clutter.patch \ %D%/packages/patches/genimage-mke2fs-test.patch \ %D%/packages/patches/geoclue-config.patch \ + %D%/packages/patches/gettext-libunicode-update.patch \ %D%/packages/patches/ghc-4.patch \ %D%/packages/patches/ghc-8.0-fall-back-to-madv_dontneed.patch \ %D%/packages/patches/ghc-testsuite-dlopen-pie.patch \ @@ -1203,7 +1200,6 @@ dist_patch_DATA = \ %D%/packages/patches/gnupg-1-build-with-gcc10.patch \ %D%/packages/patches/gnutls-skip-trust-store-test.patch \ %D%/packages/patches/gnutls-cross.patch \ - %D%/packages/patches/gnutls-guile-eintr-eagain.patch \ %D%/packages/patches/gobject-introspection-absolute-shlib-path.patch \ %D%/packages/patches/gobject-introspection-cc.patch \ %D%/packages/patches/gobject-introspection-girepository.patch \ @@ -1304,7 +1300,6 @@ dist_patch_DATA = \ %D%/packages/patches/itk-snap-alt-glibc-compat.patch \ %D%/packages/patches/json-c-0.13-CVE-2020-12762.patch \ %D%/packages/patches/json-c-0.12-CVE-2020-12762.patch \ - %D%/packages/patches/jsoncpp-pkg-config-version.patch \ %D%/packages/patches/jami-fix-crash-on-quit.patch \ %D%/packages/patches/jami-images-loading.patch \ %D%/packages/patches/jami-memory-usage.patch \ @@ -1335,8 +1330,6 @@ dist_patch_DATA = \ %D%/packages/patches/julia-tracker-16-compat.patch \ %D%/packages/patches/julia-allow-parallel-build.patch \ %D%/packages/patches/kdbusaddons-kinit-file-name.patch \ - %D%/packages/patches/libffi-3.3-powerpc-fixes.patch \ - %D%/packages/patches/libffi-float128-powerpc64le.patch \ %D%/packages/patches/libobjc2-unbundle-robin-map.patch \ %D%/packages/patches/librime-fix-build-with-gcc10.patch \ %D%/packages/patches/libvirt-add-install-prefix.patch \ @@ -1414,7 +1407,6 @@ dist_patch_DATA = \ %D%/packages/patches/libqalculate-3.8.0-libcurl-ssl-fix.patch \ %D%/packages/patches/libquicktime-ffmpeg.patch \ %D%/packages/patches/librecad-support-for-boost-1.76.patch \ - %D%/packages/patches/libssh2-CVE-2019-17498.patch \ %D%/packages/patches/libtar-CVE-2013-4420.patch \ %D%/packages/patches/libtgvoip-disable-sse2.patch \ %D%/packages/patches/libtgvoip-disable-webrtc.patch \ @@ -1429,9 +1421,6 @@ dist_patch_DATA = \ %D%/packages/patches/libutils-remove-damaging-includes.patch \ %D%/packages/patches/libvdpau-va-gl-unbundle.patch \ %D%/packages/patches/libvpx-CVE-2016-2818.patch \ - %D%/packages/patches/libxml2-parent-pointers.patch \ - %D%/packages/patches/libxml2-terminating-newline.patch \ - %D%/packages/patches/libxml2-xpath-recursion-limit.patch \ %D%/packages/patches/libxml2-xpath0-Add-option-xpath0.patch \ %D%/packages/patches/libxmlb-install-xb-tool-into-bindir.patch \ %D%/packages/patches/libxslt-generated-ids.patch \ @@ -1445,6 +1434,7 @@ dist_patch_DATA = \ %D%/packages/patches/linphone-desktop-without-sdk.patch \ %D%/packages/patches/linux-libre-support-for-Pinebook-Pro.patch \ %D%/packages/patches/linux-pam-no-setfsuid.patch \ + %D%/packages/patches/linux-pam-unix_chkpwd.patch \ %D%/packages/patches/linuxdcpp-openssl-1.1.patch \ %D%/packages/patches/lirc-localstatedir.patch \ %D%/packages/patches/lirc-reproducible-build.patch \ @@ -1518,7 +1508,6 @@ dist_patch_DATA = \ %D%/packages/patches/mupen64plus-video-z64-glew-correct-path.patch \ %D%/packages/patches/musl-cross-locale.patch \ %D%/packages/patches/mutt-store-references.patch \ - %D%/packages/patches/m4-gnulib-libio.patch \ %D%/packages/patches/nautilus-add-libportal-gtk3.patch \ %D%/packages/patches/ncompress-fix-softlinks.patch \ %D%/packages/patches/ncftp-reproducible.patch \ @@ -1586,8 +1575,6 @@ dist_patch_DATA = \ %D%/packages/patches/pam-krb5-CVE-2020-10595.patch \ %D%/packages/patches/pango-skip-libthai-test.patch \ %D%/packages/patches/password-store-tree-compat.patch \ - %D%/packages/patches/pciutils-hurd-configure.patch \ - %D%/packages/patches/pciutils-hurd-fix.patch \ %D%/packages/patches/pitivi-fix-build-with-meson-0.60.patch \ %D%/packages/patches/pjproject-install-libpjsua2.patch \ %D%/packages/patches/plasma-framework-fix-KF5PlasmaMacros.cmake.patch \ @@ -1916,8 +1903,6 @@ dist_patch_DATA = \ %D%/packages/patches/upx-CVE-2021-20285.patch \ %D%/packages/patches/ustr-fix-build-with-gcc-5.patch \ %D%/packages/patches/util-linux-tests.patch \ - %D%/packages/patches/util-linux-CVE-2021-3995.patch \ - %D%/packages/patches/util-linux-CVE-2021-3996.patch \ %D%/packages/patches/valgrind-enable-arm.patch \ %D%/packages/patches/valgrind-fix-default-debuginfo-path.patch \ %D%/packages/patches/vboot-utils-fix-format-load-address.patch \ diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 17b7b38a15..49c3256651 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -1437,7 +1437,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..913d885af4 100644 --- a/gnu/packages/adns.scm +++ b/gnu/packages/adns.scm @@ -65,7 +65,7 @@ scripts.") (define-public c-ares (package (name "c-ares") - (version "1.17.2") + (version "1.18.1") (source (origin (method url-fetch) (uri (string-append @@ -73,12 +73,10 @@ scripts.") ".tar.gz")) (sha256 (base32 - "0gcincjvpll2qmlc906jx6mfq97s87mgi0zby0753ki0rr2ch0s8")))) + "1kxviskwsaa7dcgscvssxa8ps88pdq7kq4z93gxvz7sam2l54z8s")))) (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/backup.scm b/gnu/packages/backup.scm index f4a251dd47..2517da85dd 100644 --- a/gnu/packages/backup.scm +++ b/gnu/packages/backup.scm @@ -13,7 +13,7 @@ ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com> ;;; Copyright © 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2019 Alex Vong <alexvong1995@gmail.com> -;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2019, 2022 Marius Bakke <marius@gnu.org> ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2020 Marcin Karpezo <sirmacik@wioo.waw.pl> @@ -239,7 +239,7 @@ backups (called chunks) to allow easy burning to CD/DVD.") (define-public libarchive (package (name "libarchive") - (version "3.5.1") + (version "3.6.1") (source (origin (method url-fetch) @@ -250,7 +250,7 @@ backups (called chunks) to allow easy burning to CD/DVD.") version ".tar.xz"))) (sha256 (base32 - "16r95rlmikll1k8vbhh06vq6x3srkc10hzxjjf3021mjs2ld65qf")))) + "1rj8q5v26lxxr8x4b4nqbrj7p06qvl91hb8cdxi3xx3qp771lhas")))) (build-system gnu-build-system) (inputs (list bzip2 @@ -261,69 +261,59 @@ backups (called chunks) to allow easy burning to CD/DVD.") zlib `(,zstd "lib"))) (arguments - `(#:configure-flags '("--disable-static") - #:phases - (modify-phases %standard-phases - (add-before 'build 'patch-pwd - (lambda _ - (substitute* "Makefile" - (("/bin/pwd") (which "pwd"))) - #t)) - (replace 'check - (lambda* (#:key (tests? #t) #:allow-other-keys) - (if tests? - ;; XXX: The test_owner_parse, test_read_disk, and - ;; test_write_disk_lookup tests expect user 'root' to - ;; exist, but the chroot's /etc/passwd doesn't have - ;; it. Turn off those tests. - ;; - ;; XXX: Adjust test that fails with zstd 1.4.1 - ;; because the default options compresses two bytes - ;; better than this test expects. - ;; https://github.com/libarchive/libarchive/issues/1226 - (begin - (substitute* "libarchive/test/test_write_filter_zstd.c" - (("compression-level\", \"6\"") - "compression-level\", \"7\"")) - - ;; The tests allow one to disable tests matching a globbing pattern. - (invoke "make" - "libarchive_test" - "bsdcpio_test" - "bsdtar_test") + (list + #:configure-flags #~'("--disable-static") + #:phases + #~(modify-phases %standard-phases + (add-before 'build 'patch-pwd + (lambda _ + (substitute* "Makefile" + (("/bin/pwd") (which "pwd"))))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (if tests? + ;; XXX: The test_owner_parse, test_read_disk, and + ;; test_write_disk_lookup tests expect user 'root' to + ;; exist, but the chroot's /etc/passwd doesn't have + ;; it. Turn off those tests. + (begin + ;; The tests allow one to disable tests matching a globbing pattern. + (invoke "make" + "libarchive_test" + "bsdcpio_test" + "bsdtar_test") - ;; XXX: This glob disables too much. - (invoke "./libarchive_test" "^test_*_disk*") - (invoke "./bsdcpio_test" "^test_owner_parse") - (invoke "./bsdtar_test")) - ;; Tests may be disabled if cross-compiling. - (format #t "Test suite not run.~%")))) - (add-after 'install 'add--L-in-libarchive-pc - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (lib (string-append out "/lib")) - (nettle (assoc-ref inputs "nettle")) - (libxml2 (assoc-ref inputs "libxml2")) - (xz (assoc-ref inputs "xz")) - (zlib (assoc-ref inputs "zlib")) - (zstd (assoc-ref inputs "zstd")) - (bzip2 (assoc-ref inputs "bzip2"))) - ;; Embed absolute references to these inputs to avoid propagation. - (substitute* (list (string-append lib "/pkgconfig/libarchive.pc") - (string-append lib "/libarchive.la")) - (("-lnettle") - (string-append "-L" nettle "/lib -lnettle")) - (("-lxml2") - (string-append "-L" libxml2 "/lib -lxml2")) - (("-llzma") - (string-append "-L" xz "/lib -llzma")) - (("-lz") - (string-append "-L" zlib "/lib -lz")) - (("-lzstd") - (string-append "-L" zstd "/lib -lzstd")) - (("-lbz2") - (string-append "-L" bzip2 "/lib -lbz2"))) - #t)))))) + ;; XXX: This glob disables too much. + (invoke "./libarchive_test" "^test_*_disk*") + (invoke "./bsdcpio_test" "^test_owner_parse") + (invoke "./bsdtar_test")) + ;; Tests may be disabled if cross-compiling. + (format #t "Test suite not run.~%")))) + (add-after 'install 'add--L-in-libarchive-pc + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out #$output) + (lib (string-append out "/lib")) + (nettle (assoc-ref inputs "nettle")) + (libxml2 (assoc-ref inputs "libxml2")) + (xz (assoc-ref inputs "xz")) + (zlib (assoc-ref inputs "zlib")) + (zstd (assoc-ref inputs "zstd")) + (bzip2 (assoc-ref inputs "bzip2"))) + ;; Embed absolute references to these inputs to avoid propagation. + (substitute* (list (string-append lib "/pkgconfig/libarchive.pc") + (string-append lib "/libarchive.la")) + (("-lnettle") + (string-append "-L" nettle "/lib -lnettle")) + (("-lxml2") + (string-append "-L" libxml2 "/lib -lxml2")) + (("-llzma") + (string-append "-L" xz "/lib -llzma")) + (("-lz") + (string-append "-L" zlib "/lib -lz")) + (("-lzstd") + (string-append "-L" zstd "/lib -lzstd")) + (("-lbz2") + (string-append "-L" bzip2 "/lib -lbz2"))))))))) (home-page "https://libarchive.org/") (synopsis "Multi-format archive and compression library") (description diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 4bdc3e7792..cf640aad25 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -1,16 +1,16 @@ ;;; 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> ;;; Copyright © 2017, 2020 Mathieu Othacehe <m.othacehe@gmail.com> -;;; Copyright © 2017, 2018, 2020 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2017, 2018, 2020, 2022 Marius Bakke <marius@gnu.org> ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018, 2019, 2022 Ricardo Wurmus <rekado@elephly.net> @@ -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 @@ -328,16 +328,14 @@ used to apply commands with arbitrarily long arguments.") (define-public coreutils (package (name "coreutils") - (version "8.32") + (version "9.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/coreutils/coreutils-" version ".tar.xz")) (sha256 (base32 - "1yjcrh5hw70c0yn8zw55pd6j51dj90anpq8mmg649ps9g3gdhn24")) - (patches (search-patches "coreutils-ls.patch" - "coreutils-gnulib-tests.patch")))) + "08q4b0w7mwfxbqjs712l6wrwl2ijs7k50kssgbryg9wbsw8g98b1")))) (build-system gnu-build-system) (inputs `(,acl ;TODO: add SELinux ,attr ;for xattrs in ls, mv, etc @@ -513,17 +511,15 @@ change. GNU make offers many powerful extensions over the standard utility.") (define-public binutils (package (name "binutils") - (version "2.37") + (version "2.38") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/binutils/binutils-" version ".tar.bz2")) (sha256 - (base32 "1m3b2rdfv1dmdpd0bzg1hy7i8a2qng53szc6livyi3nh6101mz37")) - (patches (search-patches "binutils-loongson-workaround.patch" - "binutils-2.37-file-descriptor-leak.patch" - "binutils-CVE-2021-45078.patch")))) + (base32 "1y0fb4qgxaxfyf81x9fqq9w5609mkah0b7wm1f7ab9kpy0fcf3h7")) + (patches (search-patches "binutils-loongson-workaround.patch")))) (build-system gnu-build-system) (arguments `(#:out-of-source? #t ;recommended in the README @@ -552,7 +548,16 @@ change. GNU make offers many powerful extensions over the standard utility.") "--enable-compressed-debug-sections=all" "--enable-lto" "--enable-separate-code" - "--enable-threads"))) + "--enable-threads") + ;; XXX: binutils 2.38 was released without generated manuals: + ;; <https://sourceware.org/bugzilla/show_bug.cgi?id=28909>. To avoid + ;; a circular dependency on texinfo, prevent the build system from + ;; creating the manuals by calling "true" instead of "makeinfo" ... + #:make-flags '("MAKEINFO=true"))) + + ;; ... and "hide" this package such that users who install binutils get + ;; the version with documentation defined below. + (properties '((hidden? . #t))) (synopsis "Binary utilities: bfd gas gprof ld") (description @@ -565,6 +570,16 @@ included.") (license gpl3+) (home-page "https://www.gnu.org/software/binutils/"))) +(define-public binutils+documentation + (package/inherit binutils + (native-inputs + (list texinfo)) + (arguments + (substitute-keyword-arguments (package-arguments binutils) + ((#:make-flags flags ''()) + ''()))) + (properties '()))) + ;; FIXME: ath9k-firmware-htc-binutils.patch do not apply on 2.34 because of a ;; big refactoring of xtensa-modules.c (commit 567607c11fbf7105 upstream). ;; Keep this version around until the patch is updated. @@ -586,7 +601,7 @@ included.") (properties '()))) (define-public binutils-gold - (package/inherit binutils + (package/inherit binutils+documentation (name "binutils-gold") (arguments (substitute-keyword-arguments (package-arguments binutils) @@ -742,6 +757,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/bdw-gc.scm b/gnu/packages/bdw-gc.scm index 2698d56da0..0be7ff1717 100644 --- a/gnu/packages/bdw-gc.scm +++ b/gnu/packages/bdw-gc.scm @@ -32,14 +32,14 @@ (define-public libgc (package (name "libgc") - (version "8.0.4") + (version "8.0.6") (source (origin (method url-fetch) (uri (string-append "https://github.com/ivmai/bdwgc/releases" "/download/v" version "/gc-" version ".tar.gz")) (sha256 (base32 - "1798rp3mcfkgs38ynkbg2p47bq59pisrc6mn0l20pb5iczf0ssj3")))) + "04ga3c95w5az5sznzm73j19lvvfpf6k4sgkpjqsmjxpsr6mi8j9v")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -124,7 +124,7 @@ C or C++ programs, though that is not its primary goal.") (define-public libatomic-ops (package (name "libatomic-ops") - (version "7.6.10") + (version "7.6.12") (source (origin (method url-fetch) (uri (string-append @@ -132,7 +132,7 @@ C or C++ programs, though that is not its primary goal.") version "/libatomic_ops-" version ".tar.gz")) (sha256 (base32 - "1bwry043f62pc4mgdd37zx3fif19qyrs8f5bw7qxlmkzh5hdyzjq")))) + "0glzah695wsf6c27hs5wwlw4mnq1vfivdshz1rb8pq7w4mp5dazh")))) (build-system gnu-build-system) (outputs '("out" "debug")) (synopsis "Accessing hardware atomic memory update operations") diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 75973b0dd8..22b70a136f 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -3189,10 +3189,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/") @@ -13053,7 +13053,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/bison.scm b/gnu/packages/bison.scm index 5fd25452ff..6cd7abe420 100644 --- a/gnu/packages/bison.scm +++ b/gnu/packages/bison.scm @@ -33,7 +33,7 @@ (define-public bison (package (name "bison") - (version "3.7.6") + (version "3.8.2") (source (origin (method url-fetch) @@ -41,7 +41,7 @@ version ".tar.xz")) (sha256 (base32 - "1kzkxrd3z4262k2sbxmyh9k5g5r2lakw0gv44l2hb4i1wbhqrmk7")))) + "1wjvbbzrr16k1jlby3l436an3kvv492h08arbnf0gwgprha05flv")))) (build-system gnu-build-system) (arguments '(;; Building in parallel on many-core systems may cause an error such as 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 6ad2b1acd8..962dff9ae7 100644 --- a/gnu/packages/check.scm +++ b/gnu/packages/check.scm @@ -1298,44 +1298,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 @@ -1394,7 +1377,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 @@ -1404,29 +1387,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 @@ -2829,7 +2807,7 @@ portable to just about any platform.") (define-public libfaketime (package (name "libfaketime") - (version "0.9.9") + (version "0.9.10") (home-page "https://github.com/wolfcw/libfaketime") (source (origin (method git-fetch) @@ -2838,7 +2816,7 @@ portable to just about any platform.") (commit (string-append "v" version)))) (sha256 (base32 - "1gi1xciqga5hl2xlk7rc3j8wy47ag97pi7ngmdl6ny1d11b2wn1z")) + "112l7x2gv4f47hpffpb8djfwvgrs8w5h9s266h1fshi1c916x10d")) (file-name (git-file-name name version)))) (build-system gnu-build-system) (arguments diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index 820ff7281f..19db0def4e 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 © 2019, 2020, 2021 Marius Bakke <marius@gnu.org> -;;; Copyright © 2020 Timothy Sample <samplet@ngyro.com> +;;; Copyright © 2018, 2019, 2020, 2021, 2022 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> +;;; Copyright © 2019-2022 Marius Bakke <marius@gnu.org> +;;; Copyright © 2020, 2022 Timothy Sample <samplet@ngyro.com> ;;; Copyright © 2020 Guy Fleury Iteriteka <gfleury@disroot.org> ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2021 Chris Marusich <cmmarusich@gmail.com> @@ -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,67 @@ 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 grep-mesboot (mesboot-package "grep-mesboot" grep)) +(define sed-mesboot (mesboot-package "sed-mesboot" sed)) + +;; "sed" from Gash-Utils lacks the 'w' command as of 0.2.0. +(define coreutils-mesboot + (let ((pkg (mesboot-package "coreutils-mesboot" coreutils))) + (package + (inherit pkg) + (native-inputs + `(("sed" ,sed-mesboot) + ,@(package-native-inputs pkg)))))) + +;; 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 +2050,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))))) @@ -2988,7 +2494,18 @@ memoized as a function of '%current-system'." (arguments `(#:guile ,%bootstrap-guile #:implicit-inputs? #f - ,@(package-arguments linux-libre-headers))) + ,@(substitute-keyword-arguments (package-arguments linux-libre-headers) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'unpack 'lower-version-requirements + (lambda _ + ;; Pacify version checks so it works with the bootstrap + ;; toolchain, since we are not building the full kernel. + (substitute* "scripts/min-tool-version.sh" + (("echo 5\\.1\\.0") ;GCC + "echo 4.9.4") + (("echo 2\\.23\\.0") ;binutils + "echo 2.20.1"))))))))) (native-inputs `(("perl" ,perl-boot0) @@ -3150,8 +2667,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 +2693,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 +2707,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 3ba8eea5e9..0ea8b1592d 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 @@ -612,14 +598,14 @@ some compression ratio).") (define-public lzip (package (name "lzip") - (version "1.22") + (version "1.23") (source (origin (method url-fetch) (uri (string-append "mirror://savannah/lzip/lzip-" version ".tar.gz")) (sha256 (base32 - "0j59hx72258334rmkwn57ahr6s69nlrx0a5ip1jw2fbiwr12sd63")))) + "03985xc696210irdzv475mlvf30ylahni3msanfz4ppivm3w14j7")))) (build-system gnu-build-system) (home-page "https://www.nongnu.org/lzip/lzip.html") (synopsis "Lossless data compressor based on the LZMA algorithm") @@ -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/crypto.scm b/gnu/packages/crypto.scm index 6e4b1331e7..3df417e13b 100644 --- a/gnu/packages/crypto.scm +++ b/gnu/packages/crypto.scm @@ -898,7 +898,7 @@ SHA-1, SHA-2, and SHA-3, yet is at least as secure as SHA-3.") (define-public rhash (package (name "rhash") - (version "1.4.2") + (version "1.4.3") (source (origin (method url-fetch) @@ -907,7 +907,7 @@ SHA-1, SHA-2, and SHA-3, yet is at least as secure as SHA-3.") (file-name (string-append "rhash-" version ".tar.gz")) (sha256 (base32 - "0qpc1fq7gdxxl11zya1gqhl9628jjk3x60q9sna43w0yz7sh03b0")))) + "0glaghjvwh9ziiqf599v0fdr6jrgc7lcnriq0h7r41k3jrkglh0y")))) (build-system gnu-build-system) (arguments (list #:configure-flags 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/dbm.scm b/gnu/packages/dbm.scm index 8b6804aa92..8c49094697 100644 --- a/gnu/packages/dbm.scm +++ b/gnu/packages/dbm.scm @@ -164,14 +164,14 @@ SQL, Key/Value, XML/XQuery or Java Object storage for their data model.") (define-public gdbm (package (name "gdbm") - (version "1.20") + (version "1.23") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/gdbm/gdbm-" version ".tar.gz")) (sha256 (base32 - "14m22j0zndd42yc0ps0bcnnjj2iq7agnp66sl882lj5k91bc1sis")))) + "1kfapds42j1sjq6wl7fygipw5904wpbfa5kwppj3mwgz44fhicbl")))) (arguments `(#:configure-flags '("--enable-libgdbm-compat" "--disable-static"))) (build-system gnu-build-system) diff --git a/gnu/packages/dejagnu.scm b/gnu/packages/dejagnu.scm index 08be5a8afd..b97df79f4d 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. @@ -28,7 +28,7 @@ (define-public dejagnu (package (name "dejagnu") - (version "1.6.2") + (version "1.6.3") (source (origin (method url-fetch) @@ -36,32 +36,32 @@ version ".tar.gz")) (sha256 (base32 - "0qfj2wd4qk1yn9yzam6g8nmyxfazcc0knjyyibycb2ainkhp21hd")))) + "1qx2cv6qkxbiqg87jh217jb62hk3s7dmcs4cz1llm2wmsynfznl7")))) (build-system gnu-build-system) (inputs (list expect)) (arguments '(#: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 529f73cc77..0c4acdee0b 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 d78b60ece0..d723e30f0d 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 dcaac3b8d2..91a5e55887 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 @@ -482,29 +492,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..9f1cd897d3 100644 --- a/gnu/packages/file.scm +++ b/gnu/packages/file.scm @@ -1,9 +1,8 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> -;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016-2018, 2022 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> -;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de> ;;; Copyright © 2021 Marius Bakke <marius@gnu.org> ;;; @@ -32,14 +31,14 @@ (define-public file (package (name "file") - (version "5.39") + (version "5.42") (source (origin (method url-fetch) - (uri (string-append "ftp://ftp.astron.com/pub/file/file-" + (uri (string-append "http://ftp.astron.com/pub/file/file-" version ".tar.gz")) (sha256 (base32 - "1lgs2w2sgamzf27kz5h7pajz7v62554q21fbs11n4mfrfrm2hpgh")))) + "1r5h74b3pbrlm05ijiyk0y28dyrcazpn2cy42lzhfx4w096znxn0")))) (build-system gnu-build-system) ;; When cross-compiling, this package depends upon a native install of @@ -47,9 +46,6 @@ (native-inputs (if (%current-target-system) `(("self" ,this-package)) '())) - - (properties - `((release-monitoring-url . "http://ftp.astron.com/pub/file/"))) (synopsis "File type guesser") (description "The file command is a file type guesser, a command-line tool that tells @@ -58,15 +54,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 44b050795d..123d477838 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 4d06235771..adb2212610 100644 --- a/gnu/packages/freedesktop.scm +++ b/gnu/packages/freedesktop.scm @@ -29,6 +29,8 @@ ;;; 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> +;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com> ;;; Copyright © 2022 muradm <mail@muradm.net> ;;; ;;; This file is part of GNU Guix. @@ -1026,7 +1028,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 @@ -1034,7 +1036,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/gawk.scm b/gnu/packages/gawk.scm index 1935e73ab7..55759f47ff 100644 --- a/gnu/packages/gawk.scm +++ b/gnu/packages/gawk.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2021 Marius Bakke <marius@gnu.org> +;;; Copyright © 2021, 2022 Marius Bakke <marius@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -25,61 +25,52 @@ #:use-module (gnu packages bash) #:use-module (gnu packages libsigsegv) #:use-module (guix packages) + #:use-module (guix gexp) #:use-module (guix download) #:use-module (guix build-system gnu)) (define-public gawk (package (name "gawk") - (version "5.1.0") + (version "5.1.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/gawk/gawk-" version ".tar.xz")) (sha256 - (base32 "1gc2cccqy1x1bf6rhwlmd8q7dz7gnam6nwgl38bxapv6qm5flpyg")))) + (base32 "18kybw47fb1sdagav7aj95r9pp09r5gm202y3ahvwjw9dqw2jxnq")))) (build-system gnu-build-system) (arguments - `(#:phases (modify-phases %standard-phases - (add-before 'configure 'set-shell-file-name - (lambda* (#:key inputs #:allow-other-keys) - ;; Refer to the right shell. - (let ((bash (assoc-ref inputs "bash"))) - (substitute* "io.c" - (("/bin/sh") - (string-append bash "/bin/sh"))) + (list #:phases + #~(modify-phases %standard-phases + (add-before 'configure 'set-shell-file-name + (lambda* (#:key inputs #:allow-other-keys) + ;; Refer to the right shell. + (let ((/bin/sh (search-input-file inputs "bin/sh"))) + (substitute* "io.c" + (("/bin/sh") /bin/sh)) - ;; When cross-compiling, remove dependencies on the - ;; `check-for-shared-lib-support' target, which tries - ;; to run the cross-built `gawk'. - ,@(if (%current-target-system) - '((substitute* "extension/Makefile.in" + ;; When cross-compiling, remove dependencies on the + ;; `check-for-shared-lib-support' target, which tries + ;; to run the cross-built `gawk'. + #$@(if (%current-target-system) + '((substitute* "extension/Makefile.in" (("^.*: check-for-shared-lib-support" match) (string-append "### " match)))) - '())))) + '())))) - (add-before 'check 'adjust-test-infrastructure - (lambda _ - ;; Remove dependency on 'more' (from util-linux), which - ;; would needlessly complicate bootstrapping. - (substitute* "test/Makefile" - (("\\| more") "")) + (add-before 'check 'adjust-test-infrastructure + (lambda _ + ;; Remove dependency on 'more' (from util-linux), which + ;; would needlessly complicate bootstrapping. + (substitute* "test/Makefile" + (("\\| more") "")) - ;; Silence a warning from bash about not being able - ;; to change to an ISO-8859-1 locale. The test itself - ;; works fine, but newer versions of bash give a - ;; locale warning which mangles the test output. - (substitute* "test/localenl.sh" - (("for LC_ALL in") - "for LC in") - (("export LC_ALL\n") - "export LC_ALL=$LC 2>/dev/null\n")) - - ;; Adjust the shebang in that file since it is then diff'd - ;; against the actual test output. - (substitute* "test/watchpoint1.ok" - (("#! /usr/bin/gawk") - (string-append "#!" (which "gawk"))))))))) + ;; Adjust the shebang in that file since it is then diff'd + ;; against the actual test output. + (substitute* "test/watchpoint1.ok" + (("#! /usr/bin/gawk") + (string-append "#!" (which "gawk"))))))))) (inputs (list libsigsegv ;; Use the full-fledged Bash package, otherwise the test suite diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index 4c496e31b2..3682368c03 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -1220,17 +1220,17 @@ provides the GNU compiler for the Go programming language.")) (define-public isl (package (name "isl") - (version "0.23") + (version "0.24") (source (origin (method url-fetch) ;; Used to be at isl.gforge.inria.fr. (uri (list (string-append "mirror://sourceforge/libisl/isl-" - version ".tar.bz2") + version ".tar.xz") (string-append %gcc-infrastructure - "isl-" version ".tar.bz2"))) + "isl-" version ".tar.xz"))) (sha256 (base32 - "0k91zck10zxs9sk3yrbb92y1j3w981w3fbwkfwd7kl779b0j52f5")))) + "1bgbk6n93qqn7w8v21kxf4x6dc3z0ypqrzvgfd46nhagak60ac84")))) (build-system gnu-build-system) (outputs '("out" "static")) (arguments 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/glib.scm b/gnu/packages/glib.scm index 98267fcee5..df33374276 100644 --- a/gnu/packages/glib.scm +++ b/gnu/packages/glib.scm @@ -459,14 +459,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" @@ -515,11 +515,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/gnupg.scm b/gnu/packages/gnupg.scm index 08fa1570d6..22fef794b0 100644 --- a/gnu/packages/gnupg.scm +++ b/gnu/packages/gnupg.scm @@ -14,7 +14,7 @@ ;;; Copyright © 2017, 2020 Leo Famulari <leo@famulari.name> ;;; Copyright © 2017 Petter <petter@mykolab.ch> ;;; Copyright © 2018–2022 Tobias Geerinckx-Rice <me@tobias.gr> -;;; Copyright © 2018, 2019 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2018, 2019, 2022 Marius Bakke <marius@gnu.org> ;;; Copyright © 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de> ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2020 Fredrik Salomonsson <plattfot@posteo.net> @@ -91,7 +91,7 @@ (define-public libgpg-error (package (name "libgpg-error") - (version "1.42") + (version "1.45") (source (origin (method url-fetch) @@ -99,7 +99,7 @@ version ".tar.bz2")) (sha256 (base32 - "08syj8mlarww8mh8x3s0x6hjqbnxp2lkg3hab57qqpv1dh7yf1zw")))) + "09haz1kk48b8q0hd58g98whylah0fp121yfgjms7pzsbzgj8w3sp")))) (build-system gnu-build-system) (arguments (if (%current-target-system) @@ -142,7 +142,7 @@ (_ #t))) (#t #t))))))) '())) - (native-inputs `(("gettext" ,gettext-minimal))) + (native-inputs (list gettext-minimal)) (home-page "https://gnupg.org") (synopsis "Library of error values for GnuPG components") (description @@ -157,14 +157,14 @@ Daemon and possibly more in the future.") (define-public libgcrypt (package (name "libgcrypt") - (version "1.8.8") + (version "1.10.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnupg/libgcrypt/libgcrypt-" version ".tar.bz2")) (sha256 (base32 - "1xasrh9zxhgj2n5n8dvpzbwn1mzpmlzy270xhbq2gl8xk2xy4pc9")))) + "1pp9zyx02bzgzjzldxf0mx9kp3530xgaaqcz4n2cv100ddaaw57g")))) (build-system gnu-build-system) (propagated-inputs `(("libgpg-error-host" ,libgpg-error))) @@ -176,10 +176,20 @@ Daemon and possibly more in the future.") ;; 'configure' uses 'gpg-error-config' to determine the '-L' flag, and ;; the 'gpg-error-config' it runs is the native one---i.e., the wrong one. `(#:configure-flags - (list (string-append "--with-gpg-error-prefix=" + (list (string-append "--with-libgpg-error-prefix=" (assoc-ref %build-inputs "libgpg-error-host")) - ;; When cross-compiling, _gcry_mpih_lshift etc are undefined - ,@(if (%current-target-system) '("--disable-asm") + ,@(if (%current-target-system) + ;; When cross-compiling, _gcry_mpih_lshift etc are undefined. + `("--disable-asm" + ;; libgcrypt is transitioning from gpg-error-config to + ;; gpgrt-config, and in the process the + ;; --with-libgpg-error-config prefix defined above is + ;; not respected. See <https://dev.gnupg.org/T5365>. + ;; TODO: transition to pkg-config instead of these scripts. + (string-append "ac_cv_path_GPGRT_CONFIG=" + (assoc-ref %build-inputs + "libgpg-error-host") + "/bin/gpgrt-config")) '())))) (outputs '("out" "debug")) (home-page "https://gnupg.org/") diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 6fbcf12a04..f4c308f8aa 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) @@ -557,7 +558,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/gtk.scm b/gnu/packages/gtk.scm index 4d6a690fbb..bf88930b9c 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/guile.scm b/gnu/packages/guile.scm index d320763a61..8ba4711ca0 100644 --- a/gnu/packages/guile.scm +++ b/gnu/packages/guile.scm @@ -8,7 +8,7 @@ ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name> ;;; Copyright © 2016, 2019, 2020 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017 Andy Wingo <wingo@igalia.com> -;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2017, 2022 Marius Bakke <marius@gnu.org> ;;; Copyright © 2017, 2019 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2017, 2022 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017, 2018 Amirouche <amirouche@hypermove.net> @@ -310,15 +310,15 @@ without requiring the source code to be rewritten.") (package (inherit guile-2.2) (name "guile") - (version "3.0.7") + (version "3.0.8") (source (origin (inherit (package-source guile-2.2)) - (patches '()) ; We no longer need the patches. (uri (string-append "mirror://gnu/guile/guile-" version ".tar.xz")) (sha256 (base32 - "1dwiwsrpm4f96alfnz6wibq378242z4f16vsxgy1n9r00v3qczgm")) + "04wagg0zr0sib0w9ly5jm91jplgfigzfgmy8fjdlx07jaq50d9ys")) + (patches (search-patches "guile-cross-compilation.patch")) ;; Replace the snippet because the oom-test still ;; fails on some 32-bit architectures. (snippet '(begin @@ -334,6 +334,11 @@ without requiring the source code to be rewritten.") (delete "gmp" "libltdl"))) (arguments (substitute-keyword-arguments (package-arguments guile-2.0) + ;; Guile 3.0.8 is bit-reproducible when built in parallel, thanks to + ;; its multi-stage build process for cross-module inlining, except when + ;; cross-compiling. + ((#:parallel-build? _ #f) + (not (%current-target-system))) ((#:configure-flags flags ''()) ;; XXX: JIT-enabled Guile crashes in obscure ways on GNU/Hurd. `(cons* ,@(if (hurd-target?) @@ -369,6 +374,16 @@ without requiring the source code to be rewritten.") (("^GUILE_OPTIMIZATIONS.*") "GUILE_OPTIMIZATIONS = -O1 -Oresolve-primitives -Ocps\n"))))) '()) + ,@(if (target-ppc32?) + `((replace 'adjust-bootstrap-flags + (lambda _ + ;; Upstream knows about suggested solution. + ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=45214 + ;; https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=977223#46 + (substitute* "stage0/Makefile.in" + (("^GUILE_OPTIMIZATIONS.*") + "GUILE_OPTIMIZATIONS = -O1 -Oresolve-primitives -Ocps\n"))))) + '()) ,@(if (or (target-ppc32?) (target-riscv64?)) `((add-after 'unpack 'skip-failing-fdes-test @@ -388,37 +403,7 @@ without requiring the source code to be rewritten.") (files '("lib/guile/3.0/site-ccache" "share/guile/site/3.0"))))))) -(define-public guile-3.0-latest - (package - (inherit guile-3.0) - (version "3.0.8") - (source (origin - (inherit (package-source guile-3.0)) - (uri (string-append "mirror://gnu/guile/guile-" - version ".tar.xz")) - (sha256 - (base32 - "04wagg0zr0sib0w9ly5jm91jplgfigzfgmy8fjdlx07jaq50d9ys")) - (patches (search-patches "guile-cross-compilation.patch")))) - (arguments - (substitute-keyword-arguments (package-arguments guile-3.0) - ;; Guile 3.0.8 is bit-reproducible when built in parallel, thanks to - ;; its multi-stage build process for cross-module inlining, except when - ;; cross-compiling. - ((#:parallel-build? _ #f) - (not (%current-target-system))) - ((#:phases phases) - `(modify-phases ,phases - ,@(if (target-ppc32?) - `((replace 'adjust-bootstrap-flags - (lambda _ - ;; Upstream knows about suggested solution. - ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=45214 - ;; https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=977223#46 - (substitute* "stage0/Makefile.in" - (("^GUILE_OPTIMIZATIONS.*") - "GUILE_OPTIMIZATIONS = -O1 -Oresolve-primitives -Ocps\n"))))) - '()))))))) +(define-public guile-3.0-latest guile-3.0) (define-public guile-3.0/fixed ;; A package of Guile that's rarely changed. It is the one used in the diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index a09e27088b..307b91864c 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -97,6 +97,7 @@ #:use-module (gnu packages fonts) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) + #:use-module (guix gexp) #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix utils) @@ -565,28 +566,26 @@ extracting icontainer icon files.") (define-public libtiff (package (name "libtiff") - (version "4.3.0") + (version "4.4.0") (source (origin (method url-fetch) (uri (string-append "https://download.osgeo.org/libtiff/tiff-" - version ".tar.gz")) + version ".tar.xz")) (sha256 (base32 - "1j3snghqjbhwmnm5vz3dr1zm68dj15mgbx1wqld7vkl7n2nfaihf")))) + "1h8xrcpbyf9id2hw2ms0cmpgx0li8gladjzj82ycgk28018pnc29")))) (build-system gnu-build-system) (outputs '("out" "doc")) ;1.8 MiB of HTML documentation (arguments - ;; Instead of using --docdir, this package has its own --with-docdir. - `(#:configure-flags - (list (string-append "--with-docdir=" - (assoc-ref %outputs "doc") - "/share/doc/" - ,name "-" ,(package-version this-package)) - "--disable-static"))) - (inputs `(("zlib" ,zlib) - ("libjpeg" ,libjpeg-turbo))) + (list #:configure-flags + ;; Instead of using --docdir, this package has its own --with-docdir. + #~(list (string-append "--with-docdir=" #$output:doc "/share/doc/" + #$name "-" #$(package-version this-package)) + "--disable-static"))) + (inputs + (list libjpeg-turbo xz zlib)) (synopsis "Library for handling TIFF files") (description "Libtiff provides support for the Tag Image File Format (TIFF), a format @@ -595,6 +594,8 @@ Included are a library, libtiff, for reading and writing TIFF and a small collection of tools for doing simple manipulations of TIFF images.") (license (license:non-copyleft "file://COPYRIGHT" "See COPYRIGHT in the distribution.")) + (properties + '((upstream-name . "tiff"))) (home-page "http://www.simplesystems.org/libtiff/"))) (define-public leptonica @@ -778,17 +779,17 @@ images of initially unknown height.") (define-public openjpeg-data (package (name "openjpeg-data") - (version "2020.11.30") + (version "2021.09.26") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/uclouvain/openjpeg-data") - (commit "cd724fb1f93e6af41ebc68c4904f4bf2a4cd1e60"))) + (commit "1f3d093030f9a0b43353ec6b48500f65786ff57a"))) (file-name (git-file-name name version)) (sha256 - (base32 "1q2swh4g9r9haqs075fyk42aclqcs9q51lqqzfb57lisszminpwm")))) + (base32 "13jpdaqk7mngk0xw6xbh9zgipip6n25spvqd97hwpfna1zyh8lzh")))) (build-system copy-build-system) (synopsis "Test files for OpenJPEG") (description "OpenJPEG-Data contains all files required to run the openjpeg @@ -800,7 +801,7 @@ test suite, including conformance tests (following Rec. ITU-T T.803 | ISO/IEC (define-public openjpeg (package (name "openjpeg") - (version "2.4.0") + (version "2.5.0") (source (origin (method git-fetch) @@ -809,7 +810,7 @@ test suite, including conformance tests (following Rec. ITU-T T.803 | ISO/IEC (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "143dvy5g6v6129lzvl0r8mrgva2fppkn0zl099qmi9yi9l9h7yyf")))) + (base32 "0xvcxlzqlylnjsyl1j64d7rgzv68ihm4qy6fpdrix3xzbqb3fjpz")))) (build-system cmake-build-system) (arguments `(#:configure-flags @@ -1655,14 +1656,14 @@ is hereby granted.")))) (define-public libjpeg-turbo (package (name "libjpeg-turbo") - (version "2.0.5") + (version "2.1.3") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/libjpeg-turbo/" version "/libjpeg-turbo-" version ".tar.gz")) (sha256 (base32 - "0pbv6pc97kbj7ib31qcwi7lnmm9xg5y3b11aasmkhfjvf7rgdy0n")))) + "1l3n9xgkh85ny1pvy78ps0xnlfmps4h7glvcwlzh6aw30c4k2ys6")))) (build-system cmake-build-system) (native-inputs (list nasm)) diff --git a/gnu/packages/jemalloc.scm b/gnu/packages/jemalloc.scm index 2e25780257..c8e355ccb3 100644 --- a/gnu/packages/jemalloc.scm +++ b/gnu/packages/jemalloc.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2017, 2020, 2021 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2021 Ryan Sundberg <ryan@arctype.co> +;;; Copyright © 2022 Marius Bakke <marius@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -25,16 +26,17 @@ #:use-module (ice-9 match) #:use-module ((guix licenses) #:select (bsd-2)) #:use-module (guix packages) + #:use-module (guix gexp) #:use-module (guix download) #:use-module (guix utils) #:use-module (gnu packages) #:use-module (gnu packages perl) #:use-module (guix build-system gnu)) -(define-public jemalloc-4.5.0 +(define-public jemalloc (package (name "jemalloc") - (version "4.5.0") + (version "5.3.0") (source (origin (method url-fetch) (uri (string-append @@ -42,26 +44,29 @@ version "/jemalloc-" version ".tar.bz2")) (sha256 (base32 - "10373xhpc10pgmai9fkc1z0rs029qlcb3c0qfnvkbwdlcibdh2cl")))) + "1apyxjd1ixy4g8xkr61p0ny8jiz8vyv1j0k4nxqkxpqrf4g2vf1d")))) (build-system gnu-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'delete-thp-test - ;; This test does not check if transparent huge pages are supported - ;; on the system before running the test. - (lambda _ - (substitute* "Makefile.in" - (("\\$\\(srcroot\\)test/unit/pages.c \\\\") "\\")) - #t))) - #:configure-flags - '(,@(match (%current-system) - ((or "i686-linux" "x86_64-linux") - '()) - ("powerpc-linux" - (list "--disable-thp" "CPPFLAGS=-maltivec")) - (_ - (list "--disable-thp")))))) + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'delete-thp-test + ;; This test does not check if transparent huge pages are supported + ;; on the system before running the test. + (lambda _ + (substitute* "Makefile.in" + (("\\$\\(srcroot\\)test/unit/pages.c \\\\") "\\"))))) + #:configure-flags + ;; Disable the thread local storage model in jemalloc 5 to prevent + ;; shared libraries linked to libjemalloc from crashing on dlopen() + ;; https://github.com/jemalloc/jemalloc/issues/937 + #~'("--disable-initial-exec-tls" + #$@(match (%current-system) + ("powerpc-linux" + (list "CPPFLAGS=-maltivec")) + (_ + '()))))) + (inputs (list perl)) ;; Install the scripts to a separate output to avoid referencing Perl and ;; Bash in the default output, saving ~75 MiB on the closure. (outputs '("out" "bin")) @@ -71,24 +76,3 @@ "This library providing a malloc(3) implementation that emphasizes fragmentation avoidance and scalable concurrency support.") (license bsd-2))) - -(define-public jemalloc - (package - (inherit jemalloc-4.5.0) - (version "5.2.1") - (source (origin - (method url-fetch) - (uri (string-append - "https://github.com/jemalloc/jemalloc/releases/download/" - version "/jemalloc-" version ".tar.bz2")) - (sha256 - (base32 - "1xl7z0vwbn5iycg7amka9jd6hxd8nmfk7nahi4p9w2bnw9f0wcrl")))) - (arguments - (substitute-keyword-arguments (package-arguments jemalloc-4.5.0) - ;; Disable the thread local storage model in jemalloc 5 to prevent - ;; shared libraries linked to libjemalloc from crashing on dlopen() - ;; https://github.com/jemalloc/jemalloc/issues/937 - ((#:configure-flags base-configure-flags '()) - `(cons "--disable-initial-exec-tls" ,base-configure-flags)))) - (inputs (list perl)))) diff --git a/gnu/packages/kerberos.scm b/gnu/packages/kerberos.scm index dec09ca791..d96fa661d9 100644 --- a/gnu/packages/kerberos.scm +++ b/gnu/packages/kerberos.scm @@ -12,6 +12,7 @@ ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> +;;; Copyright © 2022 Marius Bakke <marius@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -57,7 +58,7 @@ (define-public mit-krb5 (package (name "mit-krb5") - (version "1.19.2") + (version "1.20") (source (origin (method url-fetch) (uri (list @@ -70,7 +71,7 @@ (patches (search-patches "mit-krb5-hurd.patch")) (sha256 (base32 - "0snz1jm2w4dkk65zcz953jmmv9mqa30fanch2bk8r3rs9vp3yi8h")))) + "0bz16sh0vgzlpy2kx5acmpyy181hl83a1alz7wbk06457kfjn0ky")))) (build-system gnu-build-system) (native-inputs (list bison perl tcl)) ;required for some tests @@ -102,11 +103,13 @@ (chdir "src"))) (add-before 'check 'pre-check (lambda* (#:key inputs native-inputs #:allow-other-keys) - (let ((perl (assoc-ref (or native-inputs inputs) "perl"))) + (let ((perl (search-input-file (or native-inputs inputs) + "bin/perl"))) (substitute* "plugins/kdb/db2/libdb2/test/run.test" - (("/bin/cat") (string-append perl "/bin/perl")) + (("/bin/cat") perl) (("D/bin/sh") (string-append "D" (which "sh"))) - (("bindir=/bin/.") (string-append "bindir=" perl "/bin"))))))))) + (("bindir=/bin/.") (string-append "bindir=" + (dirname perl)))))))))) (synopsis "MIT Kerberos 5") (description "Massachusetts Institute of Technology implementation of Kerberos. diff --git a/gnu/packages/libbsd.scm b/gnu/packages/libbsd.scm index 16a7e8fd89..9759d1b5ad 100644 --- a/gnu/packages/libbsd.scm +++ b/gnu/packages/libbsd.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> +;;; Copyright © 2022 Marius Bakke <marius@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -20,22 +21,35 @@ #:use-module (guix build-system gnu) #:use-module (guix download) #:use-module (guix licenses) - #:use-module (guix packages)) + #:use-module (guix packages) + #:use-module (guix gexp) + #:use-module (gnu packages crypto)) (define-public libbsd (package (name "libbsd") - (version "0.10.0") + (version "0.11.6") (source (origin (method url-fetch) (uri (string-append "https://libbsd.freedesktop.org/releases/" "libbsd-" version ".tar.xz")) (sha256 (base32 - "11x8q45jvjvf2dvgclds64mscyg10lva33qinf2hwgc84v3svf1l")))) + "1pxmk42brddk43bj8lp4a64f9iwhc5ii91y6w7k97xpaf8qqzcqr")))) (build-system gnu-build-system) (arguments - '(#:configure-flags '("--disable-static"))) + (list #:configure-flags #~'("--disable-static") + #:phases #~(modify-phases %standard-phases + (add-before 'check 'disable-pwcache-test + (lambda _ + ;; This test expects the presence of a root + ;; user and group, which do not exist in the + ;; build container. + (substitute* "test/Makefile" + (("pwcache\\$\\(EXEEXT\\) ") + ""))))))) + (inputs + (list libmd)) (synopsis "Utility functions from BSD systems") (description "This library provides useful functions commonly found on BSD systems, and lacking on others like GNU systems, thus making it easier to port diff --git a/gnu/packages/libevent.scm b/gnu/packages/libevent.scm index d807315906..fc96b63c57 100644 --- a/gnu/packages/libevent.scm +++ b/gnu/packages/libevent.scm @@ -59,7 +59,7 @@ '(#:configure-flags '("--disable-libevent-regress" "--disable-openssl"))) (inputs - `(("python" ,python-wrapper))) ;for 'event_rpcgen.py' + (list python-wrapper)) ;for 'event_rpcgen.py' (native-inputs (list which)) (home-page "https://libevent.org/") @@ -105,14 +105,14 @@ limited support for fork events.") (define-public libuv (package (name "libuv") - (version "1.41.1") + (version "1.44.1") (source (origin (method url-fetch) (uri (string-append "https://dist.libuv.org/dist/v" version "/libuv-v" version ".tar.gz")) (sha256 (base32 - "0zb818sjwnxn5yv3qvkxaprjf037yqmjipk5i3a8rg1q4izhrnv5")))) + "0jpnfrx28rlm5k468sd17557id7hv3mrp53b72lr4fzy60sbcdwx")))) (build-system gnu-build-system) (arguments '(#:configure-flags '("--disable-static") diff --git a/gnu/packages/libffi.scm b/gnu/packages/libffi.scm index 701feeb773..76d699f071 100644 --- a/gnu/packages/libffi.scm +++ b/gnu/packages/libffi.scm @@ -43,17 +43,16 @@ (define-public libffi (package (name "libffi") - (version "3.3") + (version "3.4.2") (source (origin (method url-fetch) (uri - (string-append "ftp://sourceware.org/pub/libffi/" + (string-append "https://github.com/libffi/libffi/releases" + "/download/v" version "/" name "-" version ".tar.gz")) (sha256 (base32 - "0mi0cpf8aa40ljjmzxb7im6dbj45bb0kllcd09xgmp834y9agyvj")) - (patches (search-patches "libffi-3.3-powerpc-fixes.patch" - "libffi-float128-powerpc64le.patch")))) + "081nx7wpzds168jbr59m34n6s3lyiq6r8zggvqxvlslsc4hvf3sl")))) (build-system gnu-build-system) (arguments `(;; Prevent the build system from passing -march and -mtune to the diff --git a/gnu/packages/libidn.scm b/gnu/packages/libidn.scm index 7c8b77f6fb..aae26eae9b 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.41") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/libidn/libidn-" version ".tar.gz")) (sha256 (base32 - "1hljls9rkilh04dwiwg388wk8djkac8idijrdysqq2nqbh6rg3iw")))) + "0ic9zlqqppwaqr3i0r8lb8f47rrazzc8d5pfgg8vs6mqciip0kc8")))) (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/libsigsegv.scm b/gnu/packages/libsigsegv.scm index 627447e876..ebbdd2ad90 100644 --- a/gnu/packages/libsigsegv.scm +++ b/gnu/packages/libsigsegv.scm @@ -26,14 +26,14 @@ (define-public libsigsegv (package (name "libsigsegv") - (version "2.13") + (version "2.14") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/libsigsegv/libsigsegv-" version ".tar.gz")) (sha256 - (base32 "06c1qjiv69hjvbq06mcxdi5hzfadhy28sa83zxspqpxhfr0ywy5y")))) + (base32 "15d2r831xz94s7540nvb1gbfl062g7mrnj88m60wyr1kh10kkb6d")))) (build-system gnu-build-system) (home-page "https://www.gnu.org/software/libsigsegv/") (synopsis "Library for handling page faults") 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 8f7b4f4f5b..16a73902a6 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -639,11 +639,11 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." ;; The following package is used in the early bootstrap, and thus must be kept ;; stable and with minimal build requirements. -(define-public linux-libre-headers-5.10.35 - (make-linux-libre-headers "5.10.35" "gnu" - "0q2rnchad55d49f3rajrkazz0fcjv1irwrdb1hwjnl01fzm2gjk3")) +(define-public linux-libre-headers-5.15.49 + (make-linux-libre-headers "5.15.49" "gnu" + "13zqdcm4664vh7g57sxbfrlpsxm7zrma72mxdfdz7d9yndy2gfv8")) -(define-public linux-libre-headers linux-libre-headers-5.10.35) +(define-public linux-libre-headers linux-libre-headers-5.15.49) ;;; @@ -1593,7 +1593,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 @@ -1818,8 +1819,7 @@ providing the system administrator with some help in common tasks.") (define-public util-linux (package (name "util-linux") - (replacement util-linux/fixed) - (version "2.37.2") + (version "2.37.4") (source (origin (method url-fetch) (uri (string-append "mirror://kernel.org/linux/utils/" @@ -1827,7 +1827,7 @@ providing the system administrator with some help in common tasks.") "util-linux-" version ".tar.xz")) (sha256 (base32 - "1ng9517c37mdp858425a4zyybma7dh7jrpd6z1z61yz7mb0n81va")) + "10svcnsqmrsd660bzcm7k6dm8sa7hkknhr3bag1nccwimlb6jkk3")) (patches (search-patches "util-linux-tests.patch")) (modules '((guix build utils))) (snippet @@ -1844,102 +1844,101 @@ providing the system administrator with some help in common tasks.") "lib" ;8.8 MiB shared libraries, headers and locales "static")) ;2.9 MiB static .a libraries (arguments - `(#:configure-flags (list "--disable-use-tty-group" - (string-append - "--enable-fs-paths-default=" - "/run/setuid-programs" - ":/run/current-system/profile/sbin") - ;; Don't try to chown root:root mount and umount - "--disable-makeinstall-chown" - "--localstatedir=/var" - (string-append "--localedir=" - (assoc-ref %outputs "lib") - "/share/locale") - ;; Install completions where our - ;; bash-completion package expects them. - (string-append "--with-bashcompletiondir=" - (assoc-ref %outputs "out") - "/etc/bash_completion.d")) - - ;; FIXME: For now we cannot reliably run tests on GNU/Hurd: - ;; <https://bugs.gnu.org/47791>. - #:tests? ,(and (not (%current-target-system)) - (not (string-suffix? "-gnu" (%current-system)))) + (list #:configure-flags + #~(list "--disable-use-tty-group" + (string-append + "--enable-fs-paths-default=" + "/run/setuid-programs" + ":/run/current-system/profile/sbin") + ;; Don't try to chown root:root mount and umount + "--disable-makeinstall-chown" + "--localstatedir=/var" + (string-append "--localedir=" #$output:lib + "/share/locale") + ;; Install completions where our bash-completion package + ;; expects them. + (string-append "--with-bashcompletiondir=" #$output + "/etc/bash_completion.d")) + + ;; FIXME: For now we cannot reliably run tests on GNU/Hurd: + ;; <https://bugs.gnu.org/47791>. + #:tests? (and (not (%current-target-system)) + (not (string-suffix? "-gnu" (%current-system)))) - #:phases (modify-phases %standard-phases - (add-before 'configure 'patch-build-scripts - (lambda* (#:key outputs #:allow-other-keys) - (substitute* "configure" - ;; The build system assumes that we want to install - ;; libraries below $exec_prefix when $libdir does not - ;; match any of the "usual" locations. Fix that. - (("usrlib_execdir='\\$\\{exec_prefix\\}'\\$libdir") - "usrlib_execdir=$libdir")))) - (add-before 'build 'set-umount-file-name - (lambda* (#:key outputs #:allow-other-keys) - ;; Tell 'eject' the right file name of 'umount'. - (let ((out (assoc-ref outputs "out"))) - (substitute* "sys-utils/eject.c" - (("\"/bin/umount\"") - (string-append "\"" out "/bin/umount\"")))))) - (add-before 'check 'pre-check - (lambda* (#:key native-inputs inputs #:allow-other-keys) - (let ((services (search-input-file (or native-inputs inputs) - "etc/services"))) - ;; Change the test to refer to the right file. - (substitute* "tests/ts/misc/mcookie" - (("/etc/services") - services)) - - ;; The C.UTF-8 locale does not exist in our libc. - (substitute* "tests/ts/column/invalid-multibyte" - (("C\\.UTF-8") "en_US.utf8"))))) - (add-before 'check 'disable-setarch-test - (lambda _ - ;; The setarch tests are unreliable in QEMU's user-mode - ;; emulation, which is our primary method of building - ;; ARMv7 packages. See - ;; <https://github.com/karelzak/util-linux/issues/601>. - (substitute* "tests/ts/misc/setarch" - (("ts_init_subtest.*" all) - (string-append - all "\n" - "ts_skip \"setarch tests are unreliable under QEMU\""))))) - (add-before 'check 'disable-lsns-test - (lambda _ - ;; The lsns tests can fail due to ioctl(_, NS_GET_USERNS) - ;; returning ENOTTY, indicating this kernel does not - ;; support user namespaces. Curiously, this test can fail - ;; on i686 even if the same test passes on x86_64 on the - ;; same machine. See <https://issues.guix.gnu.org/49933>. - (delete-file "tests/ts/lsns/ioctl_ns"))) - (add-after 'install 'move-static-libraries - (lambda* (#:key outputs #:allow-other-keys) - (let ((lib (assoc-ref outputs "lib")) - (static (assoc-ref outputs "static"))) - - ;; Move static libraries to the "static" output. - (mkdir-p (string-append static "/lib")) - (with-directory-excursion lib - (for-each (lambda (file) - (rename-file file - (string-append static "/" - file))) - (find-files "lib" "\\.a$")) - - ;; Remove references to the static library from the '.la' - ;; files so that Libtool does the right thing when both - ;; the shared and static library is available. - (substitute* (find-files "lib" "\\.la$") - (("old_library=.*") "old_library=''\n")))))) - (add-after 'install 'adjust-pkg-config-files - (lambda* (#:key outputs #:allow-other-keys) - (let ((lib (assoc-ref outputs "lib"))) - ;; Drop the unused "prefix=" and "exec_prefix=" variables from - ;; the pkg-config files to avoid a cyclic reference on "out". - (substitute* (find-files (string-append lib "/lib/pkgconfig") - "\\.pc$") - (("^(exec_)?prefix=.*") "")))))))) + #:phases + #~(modify-phases %standard-phases + (add-before 'configure 'patch-build-scripts + (lambda _ + (substitute* "configure" + ;; The build system assumes that we want to install + ;; libraries below $exec_prefix when $libdir does not + ;; match any of the "usual" locations. Fix that. + (("usrlib_execdir='\\$\\{exec_prefix\\}'\\$libdir") + "usrlib_execdir=$libdir")))) + (add-before 'build 'set-umount-file-name + (lambda _ + ;; Tell 'eject' the right file name of 'umount'. + (substitute* "sys-utils/eject.c" + (("\"/bin/umount\"") + (string-append "\"" #$output "/bin/umount\""))))) + (add-before 'check 'pre-check + (lambda* (#:key native-inputs inputs #:allow-other-keys) + (let ((services (search-input-file (or native-inputs inputs) + "etc/services"))) + ;; Change the test to refer to the right file. + (substitute* "tests/ts/misc/mcookie" + (("/etc/services") + services)) + + ;; The C.UTF-8 locale does not exist in our libc. + (substitute* "tests/ts/column/invalid-multibyte" + (("C\\.UTF-8") "en_US.utf8"))))) + (add-before 'check 'disable-setarch-test + (lambda _ + ;; The setarch tests are unreliable in QEMU's user-mode + ;; emulation, which is our primary method of building + ;; ARMv7 packages. See + ;; <https://github.com/karelzak/util-linux/issues/601>. + (substitute* "tests/ts/misc/setarch" + (("ts_init_subtest.*" all) + (string-append + all "\n" + "ts_skip \"setarch tests are unreliable under QEMU\""))))) + (add-before 'check 'disable-lsns-test + (lambda _ + ;; The lsns tests can fail due to ioctl(_, NS_GET_USERNS) + ;; returning ENOTTY, indicating this kernel does not + ;; support user namespaces. Curiously, this test can fail + ;; on i686 even if the same test passes on x86_64 on the + ;; same machine. See <https://issues.guix.gnu.org/49933>. + (delete-file "tests/ts/lsns/ioctl_ns"))) + (add-after 'install 'move-static-libraries + (lambda _ + (let ((lib #$output:lib) + (static #$output:static)) + + ;; Move static libraries to the "static" output. + (mkdir-p (string-append static "/lib")) + (with-directory-excursion lib + (for-each (lambda (file) + (rename-file file + (string-append static "/" + file))) + (find-files "lib" "\\.a$")) + + ;; Remove references to the static library from the '.la' + ;; files so that Libtool does the right thing when both + ;; the shared and static library is available. + (substitute* (find-files "lib" "\\.la$") + (("old_library=.*") "old_library=''\n")))))) + (add-after 'install 'adjust-pkg-config-files + (lambda _ + ;; Drop the unused "prefix=" and "exec_prefix=" variables from + ;; the pkg-config files to avoid a cyclic reference on "out". + (substitute* (find-files (string-append #$output:lib + "/lib/pkgconfig") + "\\.pc$") + (("^(exec_)?prefix=.*") ""))))))) (inputs (list file ;for libmagic ncurses @@ -1971,21 +1970,6 @@ block devices, UUIDs, TTYs, and many other tools.") (modify-inputs (package-inputs util-linux) (prepend eudev))))) -;; This is mostly equivalent to the upstream release version v2.37.3, except -;; that the upstream tarball was generated improperly, which breaks the build. -;; There will not be a v2.37.3-fixed release or anything like that to fix it: -;; https://github.com/util-linux/util-linux/issues/1577 -(define-public util-linux/fixed - (hidden-package - (package - (inherit util-linux) - (source (origin - (inherit (package-source util-linux)) - (patches (append (search-patches "util-linux-CVE-2021-3995.patch" - "util-linux-CVE-2021-3996.patch") - (origin-patches (package-source util-linux))))))))) - - (define-public ddate (package (name "ddate") @@ -2066,38 +2050,35 @@ parameters.") (define-public procps (package (name "procps") - (version "3.3.16") + (version "4.0.0") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/procps-ng/Production/" "procps-ng-" version ".tar.xz")) (sha256 (base32 - "1br0g93ysqhlv13i1k4lfbimsgxnpy5rgs4lxfc9rkzdbpbaqplj")))) + "04v5q5cshzyhbwaw4n9l0k8faaz67n11z31vpfaiqynv9rwr4k8g")))) (build-system gnu-build-system) (arguments - `(#:modules ((guix build utils) - (guix build gnu-build-system) - (srfi srfi-1) - (srfi srfi-26)) - ,@(if (%current-target-system) - '(#:configure-flags - (list - "ac_cv_func_malloc_0_nonnull=yes" - "ac_cv_func_realloc_0_nonnull=yes")) - '()) - #:phases - (modify-phases %standard-phases - (add-after - 'install 'post-install - ;; Remove commands and man pages redudant with - ;; Coreutils. - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (dup (append-map (cut find-files out <>) - '("^kill" "^uptime")))) - (for-each delete-file dup) - #t)))))) + (list #:modules '((guix build utils) + (guix build gnu-build-system) + (srfi srfi-1) + (srfi srfi-26)) + #:configure-flags + (if (%current-target-system) + #~'("ac_cv_func_malloc_0_nonnull=yes" + "ac_cv_func_realloc_0_nonnull=yes") + #~'()) + #:phases + #~(modify-phases %standard-phases + (add-after 'install 'post-install + ;; Remove commands and man pages redudant with + ;; Coreutils. + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out #$output) + (dup (append-map (cut find-files out <>) + '("^kill" "^uptime")))) + (for-each delete-file dup))))))) (inputs (list ncurses)) (home-page "https://gitlab.com/procps-ng/procps/") (synopsis "Utilities that give information about processes") @@ -2647,16 +2628,14 @@ external rate conversion.") (define-public iptables (package (name "iptables") - (version "1.8.7") + (version "1.8.8") (source (origin (method url-fetch) (uri (list (string-append "mirror://netfilter.org/iptables/iptables-" - version ".tar.bz2") - (string-append "https://www.netfilter.org/projects/iptables/" - "files/iptables-" version ".tar.bz2"))) + version ".tar.bz2"))) (sha256 - (base32 "1w6qx3sxzkv80shk21f63rq41c84irpx68k62m2cv629n1mwj2f1")))) + (base32 "17w5a4znq8rdj5djcldmy6mbnxq1v88ibssk2mipc1kivj4miivi")))) (build-system gnu-build-system) (native-inputs (list pkg-config flex bison)) @@ -2681,6 +2660,8 @@ This package also includes @command{ip6tables}, which is used to configure the IPv6 packet filter. Both commands are targeted at system administrators.") + (properties + '((release-monitoring-url . "https://www.netfilter.org/pub/iptables/"))) (license license:gpl2+))) (define-public jitterentropy-rngd @@ -2821,9 +2802,7 @@ that the Ethernet protocol is much simpler than the IP protocol.") "pkg-config"))) #t)))))) (inputs - `(("db4" ,bdb) - ("iptables" ,iptables) - ("libmnl" ,libmnl))) + (list bdb iptables libmnl)) (native-inputs (list bison flex pkg-config)) ;; For tests. @@ -2924,7 +2903,7 @@ configuration (iptunnel, ipmaddr).") (define-public libcap (package (name "libcap") - (version "2.62") + (version "2.64") (source (origin (method url-fetch) (uri (string-append @@ -2932,7 +2911,7 @@ configuration (iptunnel, ipmaddr).") "libcap2/libcap-" version ".tar.xz")) (sha256 (base32 - "18l3pngsbaahdjzz01rmzrjgcqny4zld685fkq96mq5yr6m5n30r")))) + "04qy0z6yhlljb29xxcb2srbdnymcrhsi28wrc705z3861cgmwin8")))) (build-system gnu-build-system) (arguments (list #:phases @@ -7230,7 +7209,7 @@ machines (PowerMac G4 is known to work).") (define-public libmnl (package (name "libmnl") - (version "1.0.4") + (version "1.0.5") (source (origin (method url-fetch) @@ -7238,7 +7217,7 @@ machines (PowerMac G4 is known to work).") "libmnl-" version ".tar.bz2")) (sha256 (base32 - "108zampspaalv44zn0ar9h386dlfixpd149bnxa5hsi8kxlqj7qp")))) + "09851ns07399rbz0y8slrlmnw3fn1nakr8d37pxjn5gkks8rnjr7")))) (build-system gnu-build-system) (home-page "https://www.netfilter.org/projects/libmnl/") (synopsis "Netlink utility library") @@ -7247,6 +7226,8 @@ Netlink developers. There are a lot of common tasks in parsing, validating, constructing of both the Netlink header and TLVs that are repetitive and easy to get wrong. This library aims to provide simple helpers that allows you to re-use code and to avoid re-inventing the wheel.") + (properties + '((release-monitoring-url . "https://www.netfilter.org/pub/libmnl/"))) (license license:lgpl2.1+))) (define-public libnftnl @@ -7277,14 +7258,14 @@ used by nftables.") ;; variant to avoid accidental rebuilds of rust. (define-public libnftnl/fixed (package (inherit libnftnl) - (version "1.2.0") + (version "1.2.2") (source (origin (method url-fetch) (uri (string-append "mirror://netfilter.org/libnftnl/" "libnftnl-" version ".tar.bz2")) (sha256 - (base32 "1xblq1cbcxhr6qmjpy98i1qdza148idgz99vbhjc7s4vzvfizc4h")))) + (base32 "02kdxp4l1ds5lpkw6rxv6f7icc70am6ik3p9z5l8v48mkm7h1z4y")))) (build-system gnu-build-system) (native-inputs (list pkg-config)) diff --git a/gnu/packages/m4.scm b/gnu/packages/m4.scm index 090f5578e3..fbc075a2cb 100644 --- a/gnu/packages/m4.scm +++ b/gnu/packages/m4.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2015 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2022 Marius Bakke <marius@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -27,34 +28,40 @@ (define-public m4 (package (name "m4") - (version "1.4.18") + (version "1.4.19") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/m4/m4-" version ".tar.xz")) - (patches (search-patches "m4-gnulib-libio.patch")) (sha256 (base32 - "01sfjd5a4waqw83bibvmn522g69qfqvwig9i2qlgy154l1nfihgj")))) + "15mghcksh11saylpm86h1zkz4in0rbi0pk8i6nqxkdikdmfdxbk3")))) (build-system gnu-build-system) (arguments `(;; Explicitly disable tests when cross-compiling, otherwise 'make check' ;; proceeds and fails, unsurprisingly. #:tests? ,(not (%current-target-system)) - #:phases (modify-phases %standard-phases - (add-before 'check 'pre-check - (lambda* (#:key inputs #:allow-other-keys) - ;; Fix references to /bin/sh. - (let ((bash (assoc-ref inputs "bash"))) - (for-each patch-shebang - (find-files "tests" "\\.sh$")) - (substitute* (find-files "tests" - "posix_spawn") - (("/bin/sh") - (format #f "~a/bin/sh" bash))) - #t)))))) + (add-after 'unpack 'disable-test + (lambda _ + ;; Test 5 raises SIGINT from a child and immediately returns + ;; code 71, and tests whether the child was killed by a signal. + ;; Since there is no signal handler for SIGINT in the build + ;; container, the parent sees the return code, and fails. + ;; XXX: For some reason adding signal handlers in Guile before + ;; running tests has no effect. + (substitute* "tests/test-execute.sh" + (("4 5 6") + "4 6")))) + (add-after 'unpack 'configure-shell + (lambda* (#:key native-inputs inputs #:allow-other-keys) + (let ((/bin/sh (search-input-file (or native-inputs inputs) + "/bin/sh"))) + ;; Adjust hard-coded /bin/sh for tests. + (substitute* "lib/config.hin" + (("\"/bin/sh\"") + (format #f "\"~a\"" /bin/sh))))))))) (synopsis "Macro processor") (description "GNU M4 is an implementation of the M4 macro language, which features diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm index 4ea97368a9..326ddf561e 100644 --- a/gnu/packages/make-bootstrap.scm +++ b/gnu/packages/make-bootstrap.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018, 2019 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2018, 2019, 2021 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> -;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2019, 2020, 2022 Marius Bakke <marius@gnu.org> ;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2021 Pierre Langlois <pierre.langlois@gmx.com> ;;; @@ -388,6 +388,10 @@ for `sh' in $PATH, and without nscd, and with static NSS modules." (package-arguments binutils)) ((#:configure-flags flags _ ...) flags))) + #:make-flags ,(match (memq #:make-flags (package-arguments binutils)) + ((#:make-flags flags _ ...) + flags) + (_ ''())) #:strip-flags '("--strip-all") #:phases (modify-phases %standard-phases (add-before 'configure 'all-static diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 5e8fd7ae2d..1289a3cbbf 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -5526,6 +5526,8 @@ set.") texlive-cm texlive-courier texlive-etoolbox + texlive-fancyhdr + texlive-fancyvrb texlive-helvetic texlive-jknappen texlive-sectsty @@ -5537,8 +5539,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 @@ -5556,6 +5556,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 b4c50bc783..7bfdb1fc34 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -1038,7 +1038,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 @@ -1046,7 +1046,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)) @@ -2368,7 +2368,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/ninja.scm b/gnu/packages/ninja.scm index 4c4a2f37a7..5c14c76b02 100644 --- a/gnu/packages/ninja.scm +++ b/gnu/packages/ninja.scm @@ -31,7 +31,7 @@ (define-public ninja (package (name "ninja") - (version "1.10.2") + (version "1.11.0") (source (origin (method git-fetch) (uri (git-reference @@ -40,9 +40,9 @@ (file-name (git-file-name name version)) (sha256 (base32 - "0mspq4mvx41qri2v2zlg2y3znx5gfw6d8s3czbcfpr2218qbpz55")))) + "14wqccblr3nc2pjgv1a5fsjznp7iyp6z993jp1ddknz01dvhr765")))) (build-system gnu-build-system) - (inputs `(("python" ,python-wrapper))) + (inputs (list python-wrapper)) (arguments '(#:phases (modify-phases %standard-phases 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/package-management.scm b/gnu/packages/package-management.scm index 103478442e..2f7bd1f188 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -1965,7 +1965,7 @@ cp -r /tmp/locale/*/en_US.*"))) libsoup-minimal-2 libxau libxml2 - p11-kit-next + p11-kit util-linux xdg-dbus-proxy)) (propagated-inputs (list glib-networking gnupg gsettings-desktop-schemas)) diff --git a/gnu/packages/patches/binutils-2.37-file-descriptor-leak.patch b/gnu/packages/patches/binutils-2.37-file-descriptor-leak.patch deleted file mode 100644 index 1fd3d3d9b7..0000000000 --- a/gnu/packages/patches/binutils-2.37-file-descriptor-leak.patch +++ /dev/null @@ -1,231 +0,0 @@ -From 1c611b40e6bfc8029bff7696814330b5bc0ee5c0 Mon Sep 17 00:00:00 2001 -From: "H.J. Lu" <hjl.tools@gmail.com> -Date: Mon, 26 Jul 2021 05:59:55 -0700 -Subject: [PATCH] bfd: Close the file descriptor if there is no archive fd - -Close the file descriptor if there is no archive plugin file descriptor -to avoid running out of file descriptors on thin archives with many -archive members. - -bfd/ - - PR ld/28138 - * plugin.c (bfd_plugin_close_file_descriptor): Close the file - descriptor there is no archive plugin file descriptor. - -ld/ - - PR ld/28138 - * testsuite/ld-plugin/lto.exp: Run tmpdir/pr28138 only for - native build. - - PR ld/28138 - * testsuite/ld-plugin/lto.exp: Run ld/28138 tests. - * testsuite/ld-plugin/pr28138.c: New file. - * testsuite/ld-plugin/pr28138-1.c: Likewise. - * testsuite/ld-plugin/pr28138-2.c: Likewise. - * testsuite/ld-plugin/pr28138-3.c: Likewise. - * testsuite/ld-plugin/pr28138-4.c: Likewise. - * testsuite/ld-plugin/pr28138-5.c: Likewise. - * testsuite/ld-plugin/pr28138-6.c: Likewise. - * testsuite/ld-plugin/pr28138-7.c: Likewise. - -(cherry picked from commit 5a98fb7513b559e20dfebdbaa2a471afda3b4742) -(cherry picked from commit 7dc37e1e1209c80e0bab784df6b6bac335e836f2) ---- - bfd/plugin.c | 8 +++++++ - ld/testsuite/ld-plugin/lto.exp | 34 ++++++++++++++++++++++++++++++ - ld/testsuite/ld-plugin/pr28138-1.c | 6 ++++++ - ld/testsuite/ld-plugin/pr28138-2.c | 6 ++++++ - ld/testsuite/ld-plugin/pr28138-3.c | 6 ++++++ - ld/testsuite/ld-plugin/pr28138-4.c | 6 ++++++ - ld/testsuite/ld-plugin/pr28138-5.c | 6 ++++++ - ld/testsuite/ld-plugin/pr28138-6.c | 6 ++++++ - ld/testsuite/ld-plugin/pr28138-7.c | 6 ++++++ - ld/testsuite/ld-plugin/pr28138.c | 20 ++++++++++++++++++ - 10 files changed, 104 insertions(+) - create mode 100644 ld/testsuite/ld-plugin/pr28138-1.c - create mode 100644 ld/testsuite/ld-plugin/pr28138-2.c - create mode 100644 ld/testsuite/ld-plugin/pr28138-3.c - create mode 100644 ld/testsuite/ld-plugin/pr28138-4.c - create mode 100644 ld/testsuite/ld-plugin/pr28138-5.c - create mode 100644 ld/testsuite/ld-plugin/pr28138-6.c - create mode 100644 ld/testsuite/ld-plugin/pr28138-7.c - create mode 100644 ld/testsuite/ld-plugin/pr28138.c - -diff --git a/bfd/plugin.c b/bfd/plugin.c -index 6cfa2b66470..3bab8febe88 100644 ---- a/bfd/plugin.c -+++ b/bfd/plugin.c -@@ -291,6 +291,14 @@ bfd_plugin_close_file_descriptor (bfd *abfd, int fd) - && !bfd_is_thin_archive (abfd->my_archive)) - abfd = abfd->my_archive; - -+ /* Close the file descriptor if there is no archive plugin file -+ descriptor. */ -+ if (abfd->archive_plugin_fd == -1) -+ { -+ close (fd); -+ return; -+ } -+ - abfd->archive_plugin_fd_open_count--; - /* Dup the archive plugin file descriptor for later use, which - will be closed by _bfd_archive_close_and_cleanup. */ -diff --git a/ld/testsuite/ld-plugin/lto.exp b/ld/testsuite/ld-plugin/lto.exp -index def69e43ab3..999d911ce6a 100644 ---- a/ld/testsuite/ld-plugin/lto.exp -+++ b/ld/testsuite/ld-plugin/lto.exp -@@ -687,6 +687,40 @@ if { [is_elf_format] && [check_lto_shared_available] } { - } - } - -+run_cc_link_tests [list \ -+ [list \ -+ "Build pr28138.a" \ -+ "-T" "" \ -+ {pr28138-1.c pr28138-2.c pr28138-3.c pr28138-4.c pr28138-5.c \ -+ pr28138-6.c pr28138-7.c} {} "pr28138.a" \ -+ ] \ -+ [list \ -+ "Build pr28138.o" \ -+ "" "" \ -+ {pr28138.c} {} \ -+ ] \ -+] -+ -+set exec_output [run_host_cmd "sh" \ -+ "-c \"ulimit -n 20; \ -+ $CC -Btmpdir/ld -o tmpdir/pr28138 \ -+ tmpdir/pr28138.o tmpdir/pr28138.a\""] -+set exec_output [prune_warnings $exec_output] -+if [string match "" $exec_output] then { -+ if { [isnative] } { -+ set exec_output [run_host_cmd "tmpdir/pr28138" ""] -+ if [string match "PASS" $exec_output] then { -+ pass "PR ld/28138" -+ } else { -+ fail "PR ld/28138" -+ } -+ } else { -+ pass "PR ld/28138" -+ } -+} else { -+ fail "PR ld/28138" -+} -+ - set testname "Build liblto-11.a" - remote_file host delete "tmpdir/liblto-11.a" - set catch_output [run_host_cmd "$ar" "rc $plug_opt tmpdir/liblto-11.a tmpdir/lto-11a.o tmpdir/lto-11b.o tmpdir/lto-11c.o"] -diff --git a/ld/testsuite/ld-plugin/pr28138-1.c b/ld/testsuite/ld-plugin/pr28138-1.c -new file mode 100644 -index 00000000000..51d119e1642 ---- /dev/null -+++ b/ld/testsuite/ld-plugin/pr28138-1.c -@@ -0,0 +1,6 @@ -+extern int a0(void); -+int -+a1(void) -+{ -+ return 1 + a0(); -+} -diff --git a/ld/testsuite/ld-plugin/pr28138-2.c b/ld/testsuite/ld-plugin/pr28138-2.c -new file mode 100644 -index 00000000000..1120cd797e9 ---- /dev/null -+++ b/ld/testsuite/ld-plugin/pr28138-2.c -@@ -0,0 +1,6 @@ -+extern int a1(void); -+int -+a2(void) -+{ -+ return 1 + a1(); -+} -diff --git a/ld/testsuite/ld-plugin/pr28138-3.c b/ld/testsuite/ld-plugin/pr28138-3.c -new file mode 100644 -index 00000000000..ec464947ee6 ---- /dev/null -+++ b/ld/testsuite/ld-plugin/pr28138-3.c -@@ -0,0 +1,6 @@ -+extern int a2(void); -+int -+a3(void) -+{ -+ return 1 + a2(); -+} -diff --git a/ld/testsuite/ld-plugin/pr28138-4.c b/ld/testsuite/ld-plugin/pr28138-4.c -new file mode 100644 -index 00000000000..475701b2c5c ---- /dev/null -+++ b/ld/testsuite/ld-plugin/pr28138-4.c -@@ -0,0 +1,6 @@ -+extern int a3(void); -+int -+a4(void) -+{ -+ return 1 + a3(); -+} -diff --git a/ld/testsuite/ld-plugin/pr28138-5.c b/ld/testsuite/ld-plugin/pr28138-5.c -new file mode 100644 -index 00000000000..e24f86c363e ---- /dev/null -+++ b/ld/testsuite/ld-plugin/pr28138-5.c -@@ -0,0 +1,6 @@ -+extern int a4(void); -+int -+a5(void) -+{ -+ return 1 + a4(); -+} -diff --git a/ld/testsuite/ld-plugin/pr28138-6.c b/ld/testsuite/ld-plugin/pr28138-6.c -new file mode 100644 -index 00000000000..b5b938bdb21 ---- /dev/null -+++ b/ld/testsuite/ld-plugin/pr28138-6.c -@@ -0,0 +1,6 @@ -+extern int a5(void); -+int -+a6(void) -+{ -+ return 1 + a5(); -+} -diff --git a/ld/testsuite/ld-plugin/pr28138-7.c b/ld/testsuite/ld-plugin/pr28138-7.c -new file mode 100644 -index 00000000000..4ef75bf0f0c ---- /dev/null -+++ b/ld/testsuite/ld-plugin/pr28138-7.c -@@ -0,0 +1,6 @@ -+extern int a6(void); -+int -+a7(void) -+{ -+ return 1 + a6(); -+} -diff --git a/ld/testsuite/ld-plugin/pr28138.c b/ld/testsuite/ld-plugin/pr28138.c -new file mode 100644 -index 00000000000..68252c9f382 ---- /dev/null -+++ b/ld/testsuite/ld-plugin/pr28138.c -@@ -0,0 +1,20 @@ -+#include <stdio.h> -+ -+extern int a7(void); -+ -+int -+a0(void) -+{ -+ return 0; -+} -+ -+int -+main() -+{ -+ if (a7() == 7) -+ { -+ printf ("PASS\n"); -+ return 0; -+ } -+ return 1; -+} --- -2.27.0 diff --git a/gnu/packages/patches/binutils-CVE-2021-45078.patch b/gnu/packages/patches/binutils-CVE-2021-45078.patch deleted file mode 100644 index fca692bdb5..0000000000 --- a/gnu/packages/patches/binutils-CVE-2021-45078.patch +++ /dev/null @@ -1,257 +0,0 @@ -Fix CVE-2021-45078 (incomplete fix for CVE-2018-12699): - -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-45078 -https://sourceware.org/bugzilla/show_bug.cgi?id=28694 - -Patch copied from upstream source repository: - -https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=161e87d12167b1e36193385485c1f6ce92f74f02 - -From 161e87d12167b1e36193385485c1f6ce92f74f02 Mon Sep 17 00:00:00 2001 -From: Alan Modra <amodra@gmail.com> -Date: Wed, 15 Dec 2021 11:48:42 +1030 -Subject: [PATCH] PR28694, Out-of-bounds write in stab_xcoff_builtin_type - - PR 28694 - * stabs.c (stab_xcoff_builtin_type): Make typenum unsigned. - Negate typenum earlier, simplifying bounds checking. Correct - off-by-one indexing. Adjust switch cases. ---- - binutils/stabs.c | 87 ++++++++++++++++++++++++------------------------ - 1 file changed, 43 insertions(+), 44 deletions(-) - -diff --git a/binutils/stabs.c b/binutils/stabs.c -index 274bfb0e7fa..83ee3ea5fa4 100644 ---- a/binutils/stabs.c -+++ b/binutils/stabs.c -@@ -202,7 +202,7 @@ static debug_type stab_find_type (void *, struct stab_handle *, const int *); - static bool stab_record_type - (void *, struct stab_handle *, const int *, debug_type); - static debug_type stab_xcoff_builtin_type -- (void *, struct stab_handle *, int); -+ (void *, struct stab_handle *, unsigned int); - static debug_type stab_find_tagged_type - (void *, struct stab_handle *, const char *, int, enum debug_type_kind); - static debug_type *stab_demangle_argtypes -@@ -3496,166 +3496,167 @@ stab_record_type (void *dhandle ATTRIBUTE_UNUSED, struct stab_handle *info, - - static debug_type - stab_xcoff_builtin_type (void *dhandle, struct stab_handle *info, -- int typenum) -+ unsigned int typenum) - { - debug_type rettype; - const char *name; - -- if (typenum >= 0 || typenum < -XCOFF_TYPE_COUNT) -+ typenum = -typenum - 1; -+ if (typenum >= XCOFF_TYPE_COUNT) - { -- fprintf (stderr, _("Unrecognized XCOFF type %d\n"), typenum); -+ fprintf (stderr, _("Unrecognized XCOFF type %d\n"), -typenum - 1); - return DEBUG_TYPE_NULL; - } -- if (info->xcoff_types[-typenum] != NULL) -- return info->xcoff_types[-typenum]; -+ if (info->xcoff_types[typenum] != NULL) -+ return info->xcoff_types[typenum]; - -- switch (-typenum) -+ switch (typenum) - { -- case 1: -+ case 0: - /* The size of this and all the other types are fixed, defined - by the debugging format. */ - name = "int"; - rettype = debug_make_int_type (dhandle, 4, false); - break; -- case 2: -+ case 1: - name = "char"; - rettype = debug_make_int_type (dhandle, 1, false); - break; -- case 3: -+ case 2: - name = "short"; - rettype = debug_make_int_type (dhandle, 2, false); - break; -- case 4: -+ case 3: - name = "long"; - rettype = debug_make_int_type (dhandle, 4, false); - break; -- case 5: -+ case 4: - name = "unsigned char"; - rettype = debug_make_int_type (dhandle, 1, true); - break; -- case 6: -+ case 5: - name = "signed char"; - rettype = debug_make_int_type (dhandle, 1, false); - break; -- case 7: -+ case 6: - name = "unsigned short"; - rettype = debug_make_int_type (dhandle, 2, true); - break; -- case 8: -+ case 7: - name = "unsigned int"; - rettype = debug_make_int_type (dhandle, 4, true); - break; -- case 9: -+ case 8: - name = "unsigned"; - rettype = debug_make_int_type (dhandle, 4, true); - break; -- case 10: -+ case 9: - name = "unsigned long"; - rettype = debug_make_int_type (dhandle, 4, true); - break; -- case 11: -+ case 10: - name = "void"; - rettype = debug_make_void_type (dhandle); - break; -- case 12: -+ case 11: - /* IEEE single precision (32 bit). */ - name = "float"; - rettype = debug_make_float_type (dhandle, 4); - break; -- case 13: -+ case 12: - /* IEEE double precision (64 bit). */ - name = "double"; - rettype = debug_make_float_type (dhandle, 8); - break; -- case 14: -+ case 13: - /* This is an IEEE double on the RS/6000, and different machines - with different sizes for "long double" should use different - negative type numbers. See stabs.texinfo. */ - name = "long double"; - rettype = debug_make_float_type (dhandle, 8); - break; -- case 15: -+ case 14: - name = "integer"; - rettype = debug_make_int_type (dhandle, 4, false); - break; -- case 16: -+ case 15: - name = "boolean"; - rettype = debug_make_bool_type (dhandle, 4); - break; -- case 17: -+ case 16: - name = "short real"; - rettype = debug_make_float_type (dhandle, 4); - break; -- case 18: -+ case 17: - name = "real"; - rettype = debug_make_float_type (dhandle, 8); - break; -- case 19: -+ case 18: - /* FIXME */ - name = "stringptr"; - rettype = NULL; - break; -- case 20: -+ case 19: - /* FIXME */ - name = "character"; - rettype = debug_make_int_type (dhandle, 1, true); - break; -- case 21: -+ case 20: - name = "logical*1"; - rettype = debug_make_bool_type (dhandle, 1); - break; -- case 22: -+ case 21: - name = "logical*2"; - rettype = debug_make_bool_type (dhandle, 2); - break; -- case 23: -+ case 22: - name = "logical*4"; - rettype = debug_make_bool_type (dhandle, 4); - break; -- case 24: -+ case 23: - name = "logical"; - rettype = debug_make_bool_type (dhandle, 4); - break; -- case 25: -+ case 24: - /* Complex type consisting of two IEEE single precision values. */ - name = "complex"; - rettype = debug_make_complex_type (dhandle, 8); - break; -- case 26: -+ case 25: - /* Complex type consisting of two IEEE double precision values. */ - name = "double complex"; - rettype = debug_make_complex_type (dhandle, 16); - break; -- case 27: -+ case 26: - name = "integer*1"; - rettype = debug_make_int_type (dhandle, 1, false); - break; -- case 28: -+ case 27: - name = "integer*2"; - rettype = debug_make_int_type (dhandle, 2, false); - break; -- case 29: -+ case 28: - name = "integer*4"; - rettype = debug_make_int_type (dhandle, 4, false); - break; -- case 30: -+ case 29: - /* FIXME */ - name = "wchar"; - rettype = debug_make_int_type (dhandle, 2, false); - break; -- case 31: -+ case 30: - name = "long long"; - rettype = debug_make_int_type (dhandle, 8, false); - break; -- case 32: -+ case 31: - name = "unsigned long long"; - rettype = debug_make_int_type (dhandle, 8, true); - break; -- case 33: -+ case 32: - name = "logical*8"; - rettype = debug_make_bool_type (dhandle, 8); - break; -- case 34: -+ case 33: - name = "integer*8"; - rettype = debug_make_int_type (dhandle, 8, false); - break; -@@ -3664,9 +3665,7 @@ stab_xcoff_builtin_type (void *dhandle, struct stab_handle *info, - } - - rettype = debug_name_type (dhandle, name, rettype); -- -- info->xcoff_types[-typenum] = rettype; -- -+ info->xcoff_types[typenum] = rettype; - return rettype; - } - --- -2.27.0 - diff --git a/gnu/packages/patches/coreutils-ls.patch b/gnu/packages/patches/coreutils-ls.patch deleted file mode 100644 index 59cbbf00b5..0000000000 --- a/gnu/packages/patches/coreutils-ls.patch +++ /dev/null @@ -1,117 +0,0 @@ -Patch taken from upstream to fix cross-compilation for aarch64. This can be -removed on the next coreutils release. - -From 10fcb97bd728f09d4a027eddf8ad2900f0819b0a Mon Sep 17 00:00:00 2001 -From: Paul Eggert <eggert@cs.ucla.edu> -Date: Thu, 5 Mar 2020 17:25:29 -0800 -Subject: [PATCH] ls: restore 8.31 behavior on removed directories - -* NEWS: Mention this. -* src/ls.c: Do not include <sys/sycall.h> -(print_dir): Don't worry about whether the directory is removed. -* tests/ls/removed-directory.sh: Adjust to match new (i.e., old) -behavior. ---- - NEWS | 6 ++++++ - src/ls.c | 22 ---------------------- - tests/ls/removed-directory.sh | 10 ++-------- - 3 files changed, 8 insertions(+), 30 deletions(-) - -diff --git a/NEWS b/NEWS -index fdc8bf5db..653e7178b 100644 ---- a/NEWS -+++ b/NEWS -@@ -2,6 +2,12 @@ GNU coreutils NEWS -*- outline -*- - - * Noteworthy changes in release ?.? (????-??-??) [?] - -+** Changes in behavior -+ -+ On GNU/Linux systems, ls no longer issues an error message on -+ directory merely because it was removed. This reverts a change -+ that was made in release 8.32. -+ - - * Noteworthy changes in release 8.32 (2020-03-05) [stable] - -diff --git a/src/ls.c b/src/ls.c -index 24b983287..4acf5f44d 100644 ---- a/src/ls.c -+++ b/src/ls.c -@@ -49,10 +49,6 @@ - # include <sys/ptem.h> - #endif - --#ifdef __linux__ --# include <sys/syscall.h> --#endif -- - #include <stdio.h> - #include <assert.h> - #include <setjmp.h> -@@ -2896,7 +2892,6 @@ print_dir (char const *name, char const *realname, bool command_line_arg) - struct dirent *next; - uintmax_t total_blocks = 0; - static bool first = true; -- bool found_any_entries = false; - - errno = 0; - dirp = opendir (name); -@@ -2972,7 +2967,6 @@ print_dir (char const *name, char const *realname, bool command_line_arg) - next = readdir (dirp); - if (next) - { -- found_any_entries = true; - if (! file_ignored (next->d_name)) - { - enum filetype type = unknown; -@@ -3018,22 +3012,6 @@ print_dir (char const *name, char const *realname, bool command_line_arg) - if (errno != EOVERFLOW) - break; - } --#ifdef __linux__ -- else if (! found_any_entries) -- { -- /* If readdir finds no directory entries at all, not even "." or -- "..", then double check that the directory exists. */ -- if (syscall (SYS_getdents, dirfd (dirp), NULL, 0) == -1 -- && errno != EINVAL) -- { -- /* We exclude EINVAL as that pertains to buffer handling, -- and we've passed NULL as the buffer for simplicity. -- ENOENT is returned if appropriate before buffer handling. */ -- file_failure (command_line_arg, _("reading directory %s"), name); -- } -- break; -- } --#endif - else - break; - -diff --git a/tests/ls/removed-directory.sh b/tests/ls/removed-directory.sh -index e8c835dab..fe8f929a1 100755 ---- a/tests/ls/removed-directory.sh -+++ b/tests/ls/removed-directory.sh -@@ -26,20 +26,14 @@ case $host_triplet in - *) skip_ 'non linux kernel' ;; - esac - --LS_FAILURE=2 -- --cat <<\EOF >exp-err || framework_failure_ --ls: reading directory '.': No such file or directory --EOF -- - cwd=$(pwd) - mkdir d || framework_failure_ - cd d || framework_failure_ - rmdir ../d || framework_failure_ - --returns_ $LS_FAILURE ls >../out 2>../err || fail=1 -+ls >../out 2>../err || fail=1 - cd "$cwd" || framework_failure_ - compare /dev/null out || fail=1 --compare exp-err err || fail=1 -+compare /dev/null err || fail=1 - - Exit $fail 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/gnutls-guile-eintr-eagain.patch b/gnu/packages/patches/gnutls-guile-eintr-eagain.patch deleted file mode 100644 index e04c945158..0000000000 --- a/gnu/packages/patches/gnutls-guile-eintr-eagain.patch +++ /dev/null @@ -1,56 +0,0 @@ -Fixes <https://issues.guix.gnu.org/47867>. - -This fix was merged upstream -in <https://gitlab.com/gnutls/gnutls/-/merge_requests/1417> and will -be in GnuTLS 3.7.3. Upstream commit: - -commit 110e2172dbef1fbdf7399dab1e80780847b61c0c -Author: Ludovic Courtès <ludo@gnu.org> -Date: Sat Apr 24 22:02:14 2021 +0200 - - guile: Writes to record ports handle EAGAIN/EINTR transparently. - -diff --git a/guile/src/core.c b/guile/src/core.c -index a13670fc7b..0926dc8a97 100644 ---- a/guile/src/core.c -+++ b/guile/src/core.c -@@ -985,7 +985,10 @@ write_to_session_record_port (SCM port, const void *data, size_t size) - c_result = gnutls_record_send (c_session, (char *) data + c_sent, - size - c_sent); - if (EXPECT_FALSE (c_result < 0)) -- scm_gnutls_error (c_result, FUNC_NAME); -+ { -+ if (c_result != GNUTLS_E_AGAIN && c_result != GNUTLS_E_INTERRUPTED) -+ scm_gnutls_error (c_result, FUNC_NAME); -+ } - else - c_sent += c_result; - } -@@ -1069,7 +1072,8 @@ read_from_session_record_port (SCM port, SCM dst, size_t start, size_t count) - #undef FUNC_NAME - - /* Return the file descriptor that backs PORT. This function is called upon a -- blocking read--i.e., 'read_from_session_record_port' returned -1. */ -+ blocking read--i.e., 'read_from_session_record_port' or -+ 'write_to_session_record_port' returned -1. */ - static int - session_record_port_fd (SCM port) - { -@@ -1097,7 +1101,16 @@ write_to_session_record_port (SCM port, SCM src, size_t start, size_t count) - c_session = scm_to_gnutls_session (session, 1, FUNC_NAME); - data = (char *) SCM_BYTEVECTOR_CONTENTS (src) + start; - -- result = gnutls_record_send (c_session, data, count); -+ do -+ result = gnutls_record_send (c_session, data, count); -+ while (result == GNUTLS_E_INTERRUPTED -+ || (result == GNUTLS_E_AGAIN -+ && !SCM_GNUTLS_SESSION_TRANSPORT_IS_FD (c_session))); -+ -+ if (result == GNUTLS_E_AGAIN -+ && SCM_GNUTLS_SESSION_TRANSPORT_IS_FD (c_session)) -+ /* Tell Guile that reading would block. */ -+ return (size_t) -1; - - if (EXPECT_FALSE (result < 0)) - scm_gnutls_error (result, FUNC_NAME); 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/jsoncpp-pkg-config-version.patch b/gnu/packages/patches/jsoncpp-pkg-config-version.patch deleted file mode 100644 index 3983cc300c..0000000000 --- a/gnu/packages/patches/jsoncpp-pkg-config-version.patch +++ /dev/null @@ -1,24 +0,0 @@ -Taken from upstream: https://github.com/open-source-parsers/jsoncpp/issues/1235. - -From ac2870298ed5b5a96a688d9df07461b31f83e906 Mon Sep 17 00:00:00 2001 -From: Derick Vigne <derickvigne@me.com> -Date: Tue, 26 Jan 2021 14:59:12 -0500 -Subject: [PATCH] Fixed pkg-config Version - ---- - pkg-config/jsoncpp.pc.in | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/pkg-config/jsoncpp.pc.in b/pkg-config/jsoncpp.pc.in -index 632a377f5..2a2221069 100644 ---- a/pkg-config/jsoncpp.pc.in -+++ b/pkg-config/jsoncpp.pc.in -@@ -5,7 +5,7 @@ includedir=@includedir_for_pc_file@ - - Name: jsoncpp - Description: A C++ library for interacting with JSON --Version: @JSONCPP_VERSION@ -+Version: @PROJECT_VERSION@ - URL: https://github.com/open-source-parsers/jsoncpp - Libs: -L${libdir} -ljsoncpp - Cflags: -I${includedir} diff --git a/gnu/packages/patches/libffi-3.3-powerpc-fixes.patch b/gnu/packages/patches/libffi-3.3-powerpc-fixes.patch deleted file mode 100644 index 971ed26180..0000000000 --- a/gnu/packages/patches/libffi-3.3-powerpc-fixes.patch +++ /dev/null @@ -1,138 +0,0 @@ -This is a combination of the following 4 commits: -https://github.com/libffi/libffi/commit/01a75ed76ea7e57f1b7a5c183e2b1e890e6aa0fd.patch -https://github.com/libffi/libffi/commit/6663047f56c2932a6b10a790f4ac6666dd181326.patch -https://github.com/libffi/libffi/commit/e50b9ef8b910fa642ef158f6642e60d54d7ad740.patch -https://github.com/libffi/libffi/commit/4d6d2866ae43e55325e8ee96561221804602cd7a.patch - -From 2dbfa92a95e3bacabca431b89d2a5925e48a0e40 Mon Sep 17 00:00:00 2001 -From: Sergei Trofimovich <slyfox@gentoo.org> -Date: Thu, 28 Nov 2019 12:42:41 +0000 - -powerpc: fix build failure on power7 and older (#532) - -Build failure looks as: -``` -libtool: compile: powerpc-unknown-linux-gnu-gcc \ - -O2 -mcpu=powerpc -mtune=powerpc -pipe ... -c src/powerpc/ffi.c ... -In file included from src/powerpc/ffi.c:33: -src/powerpc/ffi_powerpc.h:65:9: error: '__int128' is not supported on this target - 65 | typedef __int128 float128; - | ^~~~~~~~ -``` - -The fix avoids using __int128 in favour of aligned char[16]. - -Closes: https://github.com/libffi/libffi/issues/531 -Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org> - -Address platforms with no __int128. - -powerpc64: Use memcpy to help platforms with no __int128. (#534) - -Signed-off-by: Khem Raj <raj.khem@gmail.com> - -Update powerpc sysv assembly for ffi_powerpc.h changes (#541) - -Some of the flag bits were moved when adding powerpc64 vector support. - -Fixes #536 ---- - src/powerpc/ffi_linux64.c | 12 ++++++------ - src/powerpc/ffi_powerpc.h | 2 +- - src/powerpc/sysv.S | 12 +++++------- - 3 files changed, 12 insertions(+), 14 deletions(-) - -diff --git a/src/powerpc/ffi_linux64.c b/src/powerpc/ffi_linux64.c -index de0d033..4d50878 100644 ---- a/src/powerpc/ffi_linux64.c -+++ b/src/powerpc/ffi_linux64.c -@@ -547,9 +547,9 @@ ffi_prep_args64 (extended_cif *ecif, unsigned long *const stack) - if (next_arg.ul == gpr_end.ul) - next_arg.ul = rest.ul; - if (vecarg_count < NUM_VEC_ARG_REGISTERS64 && i < nfixedargs) -- *vec_base.f128++ = **p_argv.f128; -+ memcpy (vec_base.f128++, *p_argv.f128, sizeof (float128)); - else -- *next_arg.f128 = **p_argv.f128; -+ memcpy (next_arg.f128, *p_argv.f128, sizeof (float128)); - if (++next_arg.f128 == gpr_end.f128) - next_arg.f128 = rest.f128; - vecarg_count++; -@@ -680,9 +680,9 @@ ffi_prep_args64 (extended_cif *ecif, unsigned long *const stack) - { - if (vecarg_count < NUM_VEC_ARG_REGISTERS64 - && i < nfixedargs) -- *vec_base.f128++ = *arg.f128++; -+ memcpy (vec_base.f128++, arg.f128, sizeof (float128)); - else -- *next_arg.f128 = *arg.f128++; -+ memcpy (next_arg.f128, arg.f128++, sizeof (float128)); - if (++next_arg.f128 == gpr_end.f128) - next_arg.f128 = rest.f128; - vecarg_count++; -@@ -986,9 +986,9 @@ ffi_closure_helper_LINUX64 (ffi_cif *cif, - do - { - if (pvec < end_pvec && i < nfixedargs) -- *to.f128 = *pvec++; -+ memcpy (to.f128, pvec++, sizeof (float128)); - else -- *to.f128 = *from.f128; -+ memcpy (to.f128, from.f128, sizeof (float128)); - to.f128++; - from.f128++; - } -diff --git a/src/powerpc/ffi_powerpc.h b/src/powerpc/ffi_powerpc.h -index 5ee2a70..8e2f2f0 100644 ---- a/src/powerpc/ffi_powerpc.h -+++ b/src/powerpc/ffi_powerpc.h -@@ -62,7 +62,7 @@ typedef _Float128 float128; - #elif defined(__FLOAT128__) - typedef __float128 float128; - #else --typedef __int128 float128; -+typedef char float128[16] __attribute__((aligned(16))); - #endif - - void FFI_HIDDEN ffi_closure_SYSV (void); -diff --git a/src/powerpc/sysv.S b/src/powerpc/sysv.S -index 1474ce7..df97734 100644 ---- a/src/powerpc/sysv.S -+++ b/src/powerpc/sysv.S -@@ -104,17 +104,16 @@ ENTRY(ffi_call_SYSV) - bctrl - - /* Now, deal with the return value. */ -- mtcrf 0x01,%r31 /* cr7 */ -+ mtcrf 0x03,%r31 /* cr6-cr7 */ - bt- 31,L(small_struct_return_value) - bt- 30,L(done_return_value) - #ifndef __NO_FPRS__ - bt- 29,L(fp_return_value) - #endif - stw %r3,0(%r30) -- bf+ 28,L(done_return_value) -+ bf+ 27,L(done_return_value) - stw %r4,4(%r30) -- mtcrf 0x02,%r31 /* cr6 */ -- bf 27,L(done_return_value) -+ bf 26,L(done_return_value) - stw %r5,8(%r30) - stw %r6,12(%r30) - /* Fall through... */ -@@ -145,10 +144,9 @@ L(done_return_value): - #ifndef __NO_FPRS__ - L(fp_return_value): - .cfi_restore_state -- bf 28,L(float_return_value) -+ bf 27,L(float_return_value) - stfd %f1,0(%r30) -- mtcrf 0x02,%r31 /* cr6 */ -- bf 27,L(done_return_value) -+ bf 26,L(done_return_value) - stfd %f2,8(%r30) - b L(done_return_value) - L(float_return_value): --- -2.26.0 - diff --git a/gnu/packages/patches/libffi-float128-powerpc64le.patch b/gnu/packages/patches/libffi-float128-powerpc64le.patch deleted file mode 100644 index 4fd32b0102..0000000000 --- a/gnu/packages/patches/libffi-float128-powerpc64le.patch +++ /dev/null @@ -1,58 +0,0 @@ -From de93adfb6f48100946bba2c3abad2a77a0cfde0b Mon Sep 17 00:00:00 2001 -From: Fabrice Fontaine <fontaine.fabrice@gmail.com> -Date: Sun, 24 Nov 2019 09:52:01 +0100 -Subject: [PATCH] ffi_powerpc.h: fix build failure with powerpc7 - -This is a patch pulled down from the following: -https://github.com/buildroot/buildroot/blob/78926f610b1411b03464152472fd430012deb9ac/package/libffi/0004-ffi_powerpc.h-fix-build-failure-with-powerpc7.patch - -This issue is being hit on OpenBMC code when pulling the latest -libffi tag and building on a P8 ppc64le machine. I verified this -patch fixes the issue we are seeing. - -Below is the original commit message: - -Sicne commit 73dd43afc8a447ba98ea02e9aad4c6898dc77fb0, build on powerpc7 -fails on: - -In file included from ../src/powerpc/ffi.c:33:0: -../src/powerpc/ffi_powerpc.h:61:9: error: '_Float128' is not supported on this target - typedef _Float128 float128; - ^~~~~~~~~ - -Fix this build failure by checking for __HAVE_FLOAT128 before using -_Float128, as _Float128 is enabled only on specific conditions, see -output/host/powerpc64-buildroot-linux-gnu/sysroot/usr/include/bits/floatn.h: - - /* Defined to 1 if the current compiler invocation provides a - floating-point type with the IEEE 754 binary128 format, and this glibc - includes corresponding *f128 interfaces for it. */ - #if defined _ARCH_PWR8 && defined __LITTLE_ENDIAN__ && (_CALL_ELF == 2) \ - && defined __FLOAT128__ && !defined __NO_LONG_DOUBLE_MATH - # define __HAVE_FLOAT128 1 - #else - # define __HAVE_FLOAT128 0 - #endif - -Fixes: - - http://autobuild.buildroot.org/results/5c9dd8fb3b6a128882b6250f197c80232d8a3b53 - -Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> -Signed-off-by: Andrew Geissler <geissonator@yahoo.com> ---- - src/powerpc/ffi_powerpc.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/powerpc/ffi_powerpc.h b/src/powerpc/ffi_powerpc.h -index 8e2f2f0e..960a5c42 100644 ---- a/src/powerpc/ffi_powerpc.h -+++ b/src/powerpc/ffi_powerpc.h -@@ -57,7 +57,7 @@ typedef union - double d; - } ffi_dblfl; - --#if defined(__FLOAT128_TYPE__) -+#if defined(__FLOAT128_TYPE__) && defined(__HAVE_FLOAT128) - typedef _Float128 float128; - #elif defined(__FLOAT128__) - typedef __float128 float128; diff --git a/gnu/packages/patches/libssh2-CVE-2019-17498.patch b/gnu/packages/patches/libssh2-CVE-2019-17498.patch deleted file mode 100644 index 6f69e562e2..0000000000 --- a/gnu/packages/patches/libssh2-CVE-2019-17498.patch +++ /dev/null @@ -1,126 +0,0 @@ -https://github.com/libssh2/libssh2/commit/dedcbd106f8e52d5586b0205bc7677e4c9868f9c.patch - -From dedcbd106f8e52d5586b0205bc7677e4c9868f9c Mon Sep 17 00:00:00 2001 -From: Will Cosgrove <will@panic.com> -Date: Fri, 30 Aug 2019 09:57:38 -0700 -Subject: [PATCH] packet.c: improve message parsing (#402) - -* packet.c: improve parsing of packets - -file: packet.c - -notes: -Use _libssh2_get_string API in SSH_MSG_DEBUG/SSH_MSG_DISCONNECT. Additional uint32 bounds check in SSH_MSG_GLOBAL_REQUEST. ---- - src/packet.c | 68 ++++++++++++++++++++++------------------------------ - 1 file changed, 29 insertions(+), 39 deletions(-) - -diff --git a/src/packet.c b/src/packet.c -index 38ab62944..2e01bfc5d 100644 ---- a/src/packet.c -+++ b/src/packet.c -@@ -419,8 +419,8 @@ _libssh2_packet_add(LIBSSH2_SESSION * session, unsigned char *data, - size_t datalen, int macstate) - { - int rc = 0; -- char *message = NULL; -- char *language = NULL; -+ unsigned char *message = NULL; -+ unsigned char *language = NULL; - size_t message_len = 0; - size_t language_len = 0; - LIBSSH2_CHANNEL *channelp = NULL; -@@ -472,33 +472,23 @@ _libssh2_packet_add(LIBSSH2_SESSION * session, unsigned char *data, - - case SSH_MSG_DISCONNECT: - if(datalen >= 5) { -- size_t reason = _libssh2_ntohu32(data + 1); -+ uint32_t reason = 0; -+ struct string_buf buf; -+ buf.data = (unsigned char *)data; -+ buf.dataptr = buf.data; -+ buf.len = datalen; -+ buf.dataptr++; /* advance past type */ - -- if(datalen >= 9) { -- message_len = _libssh2_ntohu32(data + 5); -+ _libssh2_get_u32(&buf, &reason); -+ _libssh2_get_string(&buf, &message, &message_len); -+ _libssh2_get_string(&buf, &language, &language_len); - -- if(message_len < datalen-13) { -- /* 9 = packet_type(1) + reason(4) + message_len(4) */ -- message = (char *) data + 9; -- -- language_len = -- _libssh2_ntohu32(data + 9 + message_len); -- language = (char *) data + 9 + message_len + 4; -- -- if(language_len > (datalen-13-message_len)) { -- /* bad input, clear info */ -- language = message = NULL; -- language_len = message_len = 0; -- } -- } -- else -- /* bad size, clear it */ -- message_len = 0; -- } - if(session->ssh_msg_disconnect) { -- LIBSSH2_DISCONNECT(session, reason, message, -- message_len, language, language_len); -+ LIBSSH2_DISCONNECT(session, reason, (const char *)message, -+ message_len, (const char *)language, -+ language_len); - } -+ - _libssh2_debug(session, LIBSSH2_TRACE_TRANS, - "Disconnect(%d): %s(%s)", reason, - message, language); -@@ -539,24 +529,24 @@ _libssh2_packet_add(LIBSSH2_SESSION * session, unsigned char *data, - int always_display = data[1]; - - if(datalen >= 6) { -- message_len = _libssh2_ntohu32(data + 2); -- -- if(message_len <= (datalen - 10)) { -- /* 6 = packet_type(1) + display(1) + message_len(4) */ -- message = (char *) data + 6; -- language_len = _libssh2_ntohu32(data + 6 + -- message_len); -- -- if(language_len <= (datalen - 10 - message_len)) -- language = (char *) data + 10 + message_len; -- } -+ struct string_buf buf; -+ buf.data = (unsigned char *)data; -+ buf.dataptr = buf.data; -+ buf.len = datalen; -+ buf.dataptr += 2; /* advance past type & always display */ -+ -+ _libssh2_get_string(&buf, &message, &message_len); -+ _libssh2_get_string(&buf, &language, &language_len); - } - - if(session->ssh_msg_debug) { -- LIBSSH2_DEBUG(session, always_display, message, -- message_len, language, language_len); -+ LIBSSH2_DEBUG(session, always_display, -+ (const char *)message, -+ message_len, (const char *)language, -+ language_len); - } - } -+ - /* - * _libssh2_debug will actually truncate this for us so - * that it's not an inordinate about of data -@@ -579,7 +569,7 @@ _libssh2_packet_add(LIBSSH2_SESSION * session, unsigned char *data, - uint32_t len = 0; - unsigned char want_reply = 0; - len = _libssh2_ntohu32(data + 1); -- if(datalen >= (6 + len)) { -+ if((len <= (UINT_MAX - 6)) && (datalen >= (6 + len))) { - want_reply = data[5 + len]; - _libssh2_debug(session, - LIBSSH2_TRACE_CONN, 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/libxml2-parent-pointers.patch b/gnu/packages/patches/libxml2-parent-pointers.patch deleted file mode 100644 index 1f0615c512..0000000000 --- a/gnu/packages/patches/libxml2-parent-pointers.patch +++ /dev/null @@ -1,228 +0,0 @@ -Fix a regression in 2.9.12 where some corrupt XML structures were handled -incorrectly: - - https://gitlab.gnome.org/GNOME/libxml2/-/issues/255 - -This is an amalgamation of these upstream commits: - - https://gitlab.gnome.org/GNOME/libxml2/-/commit/85b1792e37b131e7a51af98a37f92472e8de5f3f - https://gitlab.gnome.org/GNOME/libxml2/-/commit/13ad8736d294536da4cbcd70a96b0a2fbf47070c - -diff --git a/HTMLtree.c b/HTMLtree.c ---- a/HTMLtree.c -+++ b/HTMLtree.c -@@ -744,7 +744,7 @@ void - htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, - xmlNodePtr cur, const char *encoding ATTRIBUTE_UNUSED, - int format) { -- xmlNodePtr root; -+ xmlNodePtr root, parent; - xmlAttrPtr attr; - const htmlElemDesc * info; - -@@ -755,6 +755,7 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, - } - - root = cur; -+ parent = cur->parent; - while (1) { - switch (cur->type) { - case XML_HTML_DOCUMENT_NODE: -@@ -762,13 +763,25 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, - if (((xmlDocPtr) cur)->intSubset != NULL) { - htmlDtdDumpOutput(buf, (xmlDocPtr) cur, NULL); - } -- if (cur->children != NULL) { -+ /* Always validate cur->parent when descending. */ -+ if ((cur->parent == parent) && (cur->children != NULL)) { -+ parent = cur; - cur = cur->children; - continue; - } - break; - - case XML_ELEMENT_NODE: -+ /* -+ * Some users like lxml are known to pass nodes with a corrupted -+ * tree structure. Fall back to a recursive call to handle this -+ * case. -+ */ -+ if ((cur->parent != parent) && (cur->children != NULL)) { -+ htmlNodeDumpFormatOutput(buf, doc, cur, encoding, format); -+ break; -+ } -+ - /* - * Get specific HTML info for that node. - */ -@@ -817,6 +830,7 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, - (cur->name != NULL) && - (cur->name[0] != 'p')) /* p, pre, param */ - xmlOutputBufferWriteString(buf, "\n"); -+ parent = cur; - cur = cur->children; - continue; - } -@@ -825,9 +839,9 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, - (info != NULL) && (!info->isinline)) { - if ((cur->next->type != HTML_TEXT_NODE) && - (cur->next->type != HTML_ENTITY_REF_NODE) && -- (cur->parent != NULL) && -- (cur->parent->name != NULL) && -- (cur->parent->name[0] != 'p')) /* p, pre, param */ -+ (parent != NULL) && -+ (parent->name != NULL) && -+ (parent->name[0] != 'p')) /* p, pre, param */ - xmlOutputBufferWriteString(buf, "\n"); - } - -@@ -842,9 +856,9 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, - break; - if (((cur->name == (const xmlChar *)xmlStringText) || - (cur->name != (const xmlChar *)xmlStringTextNoenc)) && -- ((cur->parent == NULL) || -- ((xmlStrcasecmp(cur->parent->name, BAD_CAST "script")) && -- (xmlStrcasecmp(cur->parent->name, BAD_CAST "style"))))) { -+ ((parent == NULL) || -+ ((xmlStrcasecmp(parent->name, BAD_CAST "script")) && -+ (xmlStrcasecmp(parent->name, BAD_CAST "style"))))) { - xmlChar *buffer; - - buffer = xmlEncodeEntitiesReentrant(doc, cur->content); -@@ -902,13 +916,9 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, - break; - } - -- /* -- * The parent should never be NULL here but we want to handle -- * corrupted documents gracefully. -- */ -- if (cur->parent == NULL) -- return; -- cur = cur->parent; -+ cur = parent; -+ /* cur->parent was validated when descending. */ -+ parent = cur->parent; - - if ((cur->type == XML_HTML_DOCUMENT_NODE) || - (cur->type == XML_DOCUMENT_NODE)) { -@@ -939,9 +949,9 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, - (cur->next != NULL)) { - if ((cur->next->type != HTML_TEXT_NODE) && - (cur->next->type != HTML_ENTITY_REF_NODE) && -- (cur->parent != NULL) && -- (cur->parent->name != NULL) && -- (cur->parent->name[0] != 'p')) /* p, pre, param */ -+ (parent != NULL) && -+ (parent->name != NULL) && -+ (parent->name[0] != 'p')) /* p, pre, param */ - xmlOutputBufferWriteString(buf, "\n"); - } - } -diff --git a/xmlsave.c b/xmlsave.c ---- a/xmlsave.c -+++ b/xmlsave.c -@@ -847,7 +847,7 @@ htmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) { - static void - xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) { - int format = ctxt->format; -- xmlNodePtr tmp, root, unformattedNode = NULL; -+ xmlNodePtr tmp, root, unformattedNode = NULL, parent; - xmlAttrPtr attr; - xmlChar *start, *end; - xmlOutputBufferPtr buf; -@@ -856,6 +856,7 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) { - buf = ctxt->buf; - - root = cur; -+ parent = cur->parent; - while (1) { - switch (cur->type) { - case XML_DOCUMENT_NODE: -@@ -868,7 +869,9 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) { - break; - - case XML_DOCUMENT_FRAG_NODE: -- if (cur->children != NULL) { -+ /* Always validate cur->parent when descending. */ -+ if ((cur->parent == parent) && (cur->children != NULL)) { -+ parent = cur; - cur = cur->children; - continue; - } -@@ -887,7 +890,18 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) { - break; - - case XML_ELEMENT_NODE: -- if ((cur != root) && (ctxt->format == 1) && (xmlIndentTreeOutput)) -+ /* -+ * Some users like lxml are known to pass nodes with a corrupted -+ * tree structure. Fall back to a recursive call to handle this -+ * case. -+ */ -+ if ((cur->parent != parent) && (cur->children != NULL)) { -+ xmlNodeDumpOutputInternal(ctxt, cur); -+ break; -+ } -+ -+ if ((ctxt->level > 0) && (ctxt->format == 1) && -+ (xmlIndentTreeOutput)) - xmlOutputBufferWrite(buf, ctxt->indent_size * - (ctxt->level > ctxt->indent_nr ? - ctxt->indent_nr : ctxt->level), -@@ -942,6 +956,7 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) { - xmlOutputBufferWrite(buf, 1, ">"); - if (ctxt->format == 1) xmlOutputBufferWrite(buf, 1, "\n"); - if (ctxt->level >= 0) ctxt->level++; -+ parent = cur; - cur = cur->children; - continue; - } -@@ -1058,13 +1073,9 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) { - break; - } - -- /* -- * The parent should never be NULL here but we want to handle -- * corrupted documents gracefully. -- */ -- if (cur->parent == NULL) -- return; -- cur = cur->parent; -+ cur = parent; -+ /* cur->parent was validated when descending. */ -+ parent = cur->parent; - - if (cur->type == XML_ELEMENT_NODE) { - if (ctxt->level > 0) ctxt->level--; -diff --git a/xmlsave.c b/xmlsave.c ---- a/xmlsave.c -+++ b/xmlsave.c -@@ -890,6 +890,13 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) { - break; - - case XML_ELEMENT_NODE: -+ if ((cur != root) && (ctxt->format == 1) && -+ (xmlIndentTreeOutput)) -+ xmlOutputBufferWrite(buf, ctxt->indent_size * -+ (ctxt->level > ctxt->indent_nr ? -+ ctxt->indent_nr : ctxt->level), -+ ctxt->indent); -+ - /* - * Some users like lxml are known to pass nodes with a corrupted - * tree structure. Fall back to a recursive call to handle this -@@ -900,13 +907,6 @@ xmlNodeDumpOutputInternal(xmlSaveCtxtPtr ctxt, xmlNodePtr cur) { - break; - } - -- if ((ctxt->level > 0) && (ctxt->format == 1) && -- (xmlIndentTreeOutput)) -- xmlOutputBufferWrite(buf, ctxt->indent_size * -- (ctxt->level > ctxt->indent_nr ? -- ctxt->indent_nr : ctxt->level), -- ctxt->indent); -- - xmlOutputBufferWrite(buf, 1, "<"); - if ((cur->ns != NULL) && (cur->ns->prefix != NULL)) { - xmlOutputBufferWriteString(buf, (const char *)cur->ns->prefix); diff --git a/gnu/packages/patches/libxml2-terminating-newline.patch b/gnu/packages/patches/libxml2-terminating-newline.patch deleted file mode 100644 index 3f5c88dd4e..0000000000 --- a/gnu/packages/patches/libxml2-terminating-newline.patch +++ /dev/null @@ -1,33 +0,0 @@ -Fix a regression in 2.9.12 where serializing empty HTML documents would -not add a terminating newline. - - https://gitlab.gnome.org/GNOME/libxml2/-/issues/266 - -Taken from upstream: - - https://gitlab.gnome.org/GNOME/libxml2/-/commit/92d9ab4c28842a09ca2b76d3ff2f933e01b6cd6f - -diff --git a/HTMLtree.c b/HTMLtree.c ---- a/HTMLtree.c -+++ b/HTMLtree.c -@@ -763,11 +763,15 @@ htmlNodeDumpFormatOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, - if (((xmlDocPtr) cur)->intSubset != NULL) { - htmlDtdDumpOutput(buf, (xmlDocPtr) cur, NULL); - } -- /* Always validate cur->parent when descending. */ -- if ((cur->parent == parent) && (cur->children != NULL)) { -- parent = cur; -- cur = cur->children; -- continue; -+ if (cur->children != NULL) { -+ /* Always validate cur->parent when descending. */ -+ if (cur->parent == parent) { -+ parent = cur; -+ cur = cur->children; -+ continue; -+ } -+ } else { -+ xmlOutputBufferWriteString(buf, "\n"); - } - break; - diff --git a/gnu/packages/patches/libxml2-xpath-recursion-limit.patch b/gnu/packages/patches/libxml2-xpath-recursion-limit.patch deleted file mode 100644 index 051196c635..0000000000 --- a/gnu/packages/patches/libxml2-xpath-recursion-limit.patch +++ /dev/null @@ -1,20 +0,0 @@ -Fix recursion accounting in XPath expressions: - - https://gitlab.gnome.org/GNOME/libxml2/-/issues/264 - -Taken from upstream: - - https://gitlab.gnome.org/GNOME/libxml2/-/commit/3e1aad4fe584747fd7d17cc7b2863a78e2d21a77 - -diff --git a/xpath.c b/xpath.c ---- a/xpath.c -+++ b/xpath.c -@@ -10983,7 +10983,7 @@ xmlXPathCompileExpr(xmlXPathParserContextPtr ctxt, int sort) { - } - - if (xpctxt != NULL) -- xpctxt->depth -= 1; -+ xpctxt->depth -= 10; - } - - /** 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/m4-gnulib-libio.patch b/gnu/packages/patches/m4-gnulib-libio.patch deleted file mode 100644 index a26622ccf3..0000000000 --- a/gnu/packages/patches/m4-gnulib-libio.patch +++ /dev/null @@ -1,128 +0,0 @@ -Adjust the bundled gnulib to cope with removal of libio interface in -glibc 2.28. - -Based on this upstream patch, without hunks that do not apply to m4: -https://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=4af4a4a71827c0bc5e0ec67af23edef4f15cee8e - -diff --git a/lib/fflush.c b/lib/fflush.c -index 983ade0..a6edfa1 100644 ---- a/lib/fflush.c -+++ b/lib/fflush.c -@@ -33,7 +33,7 @@ - #undef fflush - - --#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ -+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ - - /* Clear the stream's ungetc buffer, preserving the value of ftello (fp). */ - static void -@@ -72,7 +72,7 @@ clear_ungetc_buffer (FILE *fp) - - #endif - --#if ! (defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */) -+#if ! (defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */) - - # if (defined __sferror || defined __DragonFly__ || defined __ANDROID__) && defined __SNPT - /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ -@@ -148,7 +148,7 @@ rpl_fflush (FILE *stream) - if (stream == NULL || ! freading (stream)) - return fflush (stream); - --#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ -+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ - - clear_ungetc_buffer_preserving_position (stream); - -diff --git a/lib/fpending.c b/lib/fpending.c -index c84e3a5..789f50e 100644 ---- a/lib/fpending.c -+++ b/lib/fpending.c -@@ -32,7 +32,7 @@ __fpending (FILE *fp) - /* Most systems provide FILE as a struct and the necessary bitmask in - <stdio.h>, because they need it for implementing getc() and putc() as - fast macros. */ --#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ -+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ - return fp->_IO_write_ptr - fp->_IO_write_base; - #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ - /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ -diff --git a/lib/fpurge.c b/lib/fpurge.c -index b1d417c..3aedcc3 100644 ---- a/lib/fpurge.c -+++ b/lib/fpurge.c -@@ -62,7 +62,7 @@ fpurge (FILE *fp) - /* Most systems provide FILE as a struct and the necessary bitmask in - <stdio.h>, because they need it for implementing getc() and putc() as - fast macros. */ --# if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ -+# if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ - fp->_IO_read_end = fp->_IO_read_ptr; - fp->_IO_write_ptr = fp->_IO_write_base; - /* Avoid memory leak when there is an active ungetc buffer. */ -diff --git a/lib/freadahead.c b/lib/freadahead.c -index c2ecb5b..23ec76e 100644 ---- a/lib/freadahead.c -+++ b/lib/freadahead.c -@@ -30,7 +30,7 @@ extern size_t __sreadahead (FILE *); - size_t - freadahead (FILE *fp) - { --#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ -+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ - if (fp->_IO_write_ptr > fp->_IO_write_base) - return 0; - return (fp->_IO_read_end - fp->_IO_read_ptr) -diff --git a/lib/freading.c b/lib/freading.c -index 73c28ac..c24d0c8 100644 ---- a/lib/freading.c -+++ b/lib/freading.c -@@ -31,7 +31,7 @@ freading (FILE *fp) - /* Most systems provide FILE as a struct and the necessary bitmask in - <stdio.h>, because they need it for implementing getc() and putc() as - fast macros. */ --# if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ -+# if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ - return ((fp->_flags & _IO_NO_WRITES) != 0 - || ((fp->_flags & (_IO_NO_READS | _IO_CURRENTLY_PUTTING)) == 0 - && fp->_IO_read_base != NULL)); -diff --git a/lib/fseeko.c b/lib/fseeko.c -index 0101ab5..193f4e8 100644 ---- a/lib/fseeko.c -+++ b/lib/fseeko.c -@@ -47,7 +47,7 @@ fseeko (FILE *fp, off_t offset, int whence) - #endif - - /* These tests are based on fpurge.c. */ --#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ -+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ - if (fp->_IO_read_end == fp->_IO_read_ptr - && fp->_IO_write_ptr == fp->_IO_write_base - && fp->_IO_save_base == NULL) -@@ -123,7 +123,7 @@ fseeko (FILE *fp, off_t offset, int whence) - return -1; - } - --#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ -+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ - fp->_flags &= ~_IO_EOF_SEEN; - fp->_offset = pos; - #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ -diff --git a/lib/stdio-impl.h b/lib/stdio-impl.h -index 78d896e..05c5752 100644 ---- a/lib/stdio-impl.h -+++ b/lib/stdio-impl.h -@@ -18,6 +18,12 @@ - the same implementation of stdio extension API, except that some fields - have different naming conventions, or their access requires some casts. */ - -+/* Glibc 2.28 made _IO_IN_BACKUP private. For now, work around this -+ problem by defining it ourselves. FIXME: Do not rely on glibc -+ internals. */ -+#if !defined _IO_IN_BACKUP && defined _IO_EOF_SEEN -+# define _IO_IN_BACKUP 0x100 -+#endif - - /* BSD stdio derived implementations. */ - diff --git a/gnu/packages/patches/pciutils-hurd-configure.patch b/gnu/packages/patches/pciutils-hurd-configure.patch deleted file mode 100644 index 226891a995..0000000000 --- a/gnu/packages/patches/pciutils-hurd-configure.patch +++ /dev/null @@ -1,35 +0,0 @@ -Add ability to detect GNU/Hurd when configuring. - -Adapted from https://git.hadrons.org/cgit/debian/pkgs/pciutils.git/tree/debian/patches/00-configure-hurd.patch - -From e39a3af22501234a91cf28e8c57b45f9379f9101 Mon Sep 17 00:00:00 2001 -From: Damien Zammit <damien@zamaudio.com> -Date: Fri, 26 Oct 2018 09:24:04 -0400 -Subject: [PATCH 2/2] Add ability to detect GNU/Hurd when configuring - ---- - lib/configure | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - ---- a/lib/configure -+++ b/lib/configure -@@ -25,7 +25,7 @@ if [ -z "$HOST" ] ; then - proc=`/usr/sbin/lsdev -C -c processor -S available -F name | head -1` - cpu=`/usr/sbin/lsattr -F value -l $proc -a type | sed 's/_.*//'` - else -- cpu=`uname -m | sed 's/^i.86$/i386/;s/^sun4u$/sparc64/;s/^i86pc$/i386/;s/^BePC$/i386/;s/^BeMac$/powerpc/;s/^BeBox$/powerpc/'` -+ cpu=`uname -m | sed 's/^i.86-AT386/i386/;s/^i.86$/i386/;s/^sun4u$/sparc64/;s/^i86pc$/i386/;s/^BePC$/i386/;s/^BeMac$/powerpc/;s/^BeBox$/powerpc/'` - fi - if [ "$sys" = "DragonFly" ] - then -@@ -39,6 +39,10 @@ if [ -z "$HOST" ] ; then - then - sys=cygwin - fi -+ if [ "$sys" = "GNU" ] -+ then -+ sys=gnu -+ fi - HOST=${3:-$cpu-$sys} - fi - [ -n "$RELEASE" ] && rel="${RELEASE}" diff --git a/gnu/packages/patches/pciutils-hurd-fix.patch b/gnu/packages/patches/pciutils-hurd-fix.patch deleted file mode 100644 index f1979d4352..0000000000 --- a/gnu/packages/patches/pciutils-hurd-fix.patch +++ /dev/null @@ -1,23 +0,0 @@ -Fix a build error on GNU/Hurd for pciutils 3.7.0. - -commit 053cf6c8b2acafadf828912828336d90fe9b8696 -Author: Martin Mares <mj@ucw.cz> -Date: Sun May 31 11:53:28 2020 +0200 - - HURD backend should compile again - - Fixes a bug introduced by commit 82c06b47dea5a38075ce9d56f743360bc47b4c78. - -diff --git a/lib/hurd.c b/lib/hurd.c -index 7b3b2ae..ccd92f6 100644 ---- a/lib/hurd.c -+++ b/lib/hurd.c -@@ -307,7 +307,6 @@ hurd_fill_regions(struct pci_dev *d) - d->base_addr[i] |= regions[i].is_64 << 2; - d->base_addr[i] |= regions[i].is_prefetchable << 3; - -- if (flags & PCI_FILL_SIZES) -- d->size[i] = regions[i].size; -+ d->size[i] = regions[i].size; - } - } diff --git a/gnu/packages/patches/util-linux-CVE-2021-3995.patch b/gnu/packages/patches/util-linux-CVE-2021-3995.patch deleted file mode 100644 index 7faea83801..0000000000 --- a/gnu/packages/patches/util-linux-CVE-2021-3995.patch +++ /dev/null @@ -1,146 +0,0 @@ -Fix CVE-2021-3995: - -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-3995 -https://seclists.org/oss-sec/2022/q1/66 - -Patch copied from upstream source repository: - -https://github.com/util-linux/util-linux/commit/f3db9bd609494099f0c1b95231c5dfe383346929 - -From f3db9bd609494099f0c1b95231c5dfe383346929 Mon Sep 17 00:00:00 2001 -From: Karel Zak <kzak@redhat.com> -Date: Wed, 24 Nov 2021 13:53:25 +0100 -Subject: [PATCH] libmount: fix UID check for FUSE umount [CVE-2021-3995] - -Improper UID check allows an unprivileged user to unmount FUSE -filesystems of users with similar UID. - -Signed-off-by: Karel Zak <kzak@redhat.com> ---- - include/strutils.h | 2 +- - libmount/src/context_umount.c | 14 +++--------- - libmount/src/mountP.h | 1 + - libmount/src/optstr.c | 42 +++++++++++++++++++++++++++++++++++ - 4 files changed, 47 insertions(+), 12 deletions(-) - -diff --git a/include/strutils.h b/include/strutils.h -index 6e95707ea..a84d29594 100644 ---- a/include/strutils.h -+++ b/include/strutils.h -@@ -106,8 +106,8 @@ static inline char *mem2strcpy(char *dest, const void *src, size_t n, size_t nma - if (n + 1 > nmax) - n = nmax - 1; - -+ memset(dest, '\0', nmax); - memcpy(dest, src, n); -- dest[nmax-1] = '\0'; - return dest; - } - -diff --git a/libmount/src/context_umount.c b/libmount/src/context_umount.c -index 173637a15..8773c65ff 100644 ---- a/libmount/src/context_umount.c -+++ b/libmount/src/context_umount.c -@@ -453,10 +453,7 @@ static int is_fuse_usermount(struct libmnt_context *cxt, int *errsv) - struct libmnt_ns *ns_old; - const char *type = mnt_fs_get_fstype(cxt->fs); - const char *optstr; -- char *user_id = NULL; -- size_t sz; -- uid_t uid; -- char uidstr[sizeof(stringify_value(ULONG_MAX))]; -+ uid_t uid, entry_uid; - - *errsv = 0; - -@@ -473,11 +470,7 @@ static int is_fuse_usermount(struct libmnt_context *cxt, int *errsv) - optstr = mnt_fs_get_fs_options(cxt->fs); - if (!optstr) - return 0; -- -- if (mnt_optstr_get_option(optstr, "user_id", &user_id, &sz) != 0) -- return 0; -- -- if (sz == 0 || user_id == NULL) -+ if (mnt_optstr_get_uid(optstr, "user_id", &entry_uid) != 0) - return 0; - - /* get current user */ -@@ -494,8 +487,7 @@ static int is_fuse_usermount(struct libmnt_context *cxt, int *errsv) - return 0; - } - -- snprintf(uidstr, sizeof(uidstr), "%lu", (unsigned long) uid); -- return strncmp(user_id, uidstr, sz) == 0; -+ return uid == entry_uid; - } - - /* -diff --git a/libmount/src/mountP.h b/libmount/src/mountP.h -index d43a83541..22442ec55 100644 ---- a/libmount/src/mountP.h -+++ b/libmount/src/mountP.h -@@ -399,6 +399,7 @@ extern const struct libmnt_optmap *mnt_optmap_get_entry( - const struct libmnt_optmap **mapent); - - /* optstr.c */ -+extern int mnt_optstr_get_uid(const char *optstr, const char *name, uid_t *uid); - extern int mnt_optstr_remove_option_at(char **optstr, char *begin, char *end); - extern int mnt_optstr_fix_gid(char **optstr, char *value, size_t valsz, char **next); - extern int mnt_optstr_fix_uid(char **optstr, char *value, size_t valsz, char **next); -diff --git a/libmount/src/optstr.c b/libmount/src/optstr.c -index 921b9318e..16800f571 100644 ---- a/libmount/src/optstr.c -+++ b/libmount/src/optstr.c -@@ -1076,6 +1076,48 @@ int mnt_optstr_fix_user(char **optstr) - return rc; - } - -+/* -+ * Converts value from @optstr addressed by @name to uid. -+ * -+ * Returns: 0 on success, 1 if not found, <0 on error -+ */ -+int mnt_optstr_get_uid(const char *optstr, const char *name, uid_t *uid) -+{ -+ char *value = NULL; -+ size_t valsz = 0; -+ char buf[sizeof(stringify_value(UINT64_MAX))]; -+ int rc; -+ uint64_t num; -+ -+ assert(optstr); -+ assert(name); -+ assert(uid); -+ -+ rc = mnt_optstr_get_option(optstr, name, &value, &valsz); -+ if (rc != 0) -+ goto fail; -+ -+ if (valsz > sizeof(buf) - 1) { -+ rc = -ERANGE; -+ goto fail; -+ } -+ mem2strcpy(buf, value, valsz, sizeof(buf)); -+ -+ rc = ul_strtou64(buf, &num, 10); -+ if (rc != 0) -+ goto fail; -+ if (num > ULONG_MAX || (uid_t) num != num) { -+ rc = -ERANGE; -+ goto fail; -+ } -+ *uid = (uid_t) num; -+ -+ return 0; -+fail: -+ DBG(UTILS, ul_debug("failed to convert '%s'= to number [rc=%d]", name, rc)); -+ return rc; -+} -+ - /** - * mnt_match_options: - * @optstr: options string --- -2.34.0 - diff --git a/gnu/packages/patches/util-linux-CVE-2021-3996.patch b/gnu/packages/patches/util-linux-CVE-2021-3996.patch deleted file mode 100644 index 59edf5c7cf..0000000000 --- a/gnu/packages/patches/util-linux-CVE-2021-3996.patch +++ /dev/null @@ -1,233 +0,0 @@ -Fix CVE-2021-3996: - -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-3996 -https://seclists.org/oss-sec/2022/q1/66 - -Patch copied from upstream source repository: - -https://github.com/util-linux/util-linux/commit/018a10907fa9885093f6d87401556932c2d8bd2b - -From 018a10907fa9885093f6d87401556932c2d8bd2b Mon Sep 17 00:00:00 2001 -From: Karel Zak <kzak@redhat.com> -Date: Tue, 4 Jan 2022 10:54:20 +0100 -Subject: [PATCH] libmount: fix (deleted) suffix issue [CVE-2021-3996] - -This issue is related to parsing the /proc/self/mountinfo file allows an -unprivileged user to unmount other user's filesystems that are either -world-writable themselves or mounted in a world-writable directory. - -The support for "(deleted)" is no more necessary as the Linux kernel does -not use it in /proc/self/mountinfo and /proc/self/mount files anymore. - -Signed-off-by: Karel Zak <kzak@redhat.com> ---- - libmount/src/tab_parse.c | 5 ----- - tests/expected/findmnt/filter-options | 1 - - tests/expected/findmnt/filter-options-nameval-neg | 3 +-- - tests/expected/findmnt/filter-types-neg | 1 - - tests/expected/findmnt/outputs-default | 3 +-- - tests/expected/findmnt/outputs-force-tree | 3 +-- - tests/expected/findmnt/outputs-kernel | 3 +-- - tests/expected/libmount/tabdiff-mount | 1 - - tests/expected/libmount/tabdiff-move | 1 - - tests/expected/libmount/tabdiff-remount | 1 - - tests/expected/libmount/tabdiff-umount | 1 - - tests/expected/libmount/tabfiles-parse-mountinfo | 11 ----------- - tests/expected/libmount/tabfiles-py-parse-mountinfo | 11 ----------- - tests/ts/findmnt/files/mountinfo | 1 - - tests/ts/findmnt/files/mountinfo-nonroot | 1 - - tests/ts/libmount/files/mountinfo | 1 - - 16 files changed, 4 insertions(+), 44 deletions(-) - -diff --git a/libmount/src/tab_parse.c b/libmount/src/tab_parse.c -index 917779ab6..4407f9c9c 100644 ---- a/libmount/src/tab_parse.c -+++ b/libmount/src/tab_parse.c -@@ -227,11 +227,6 @@ static int mnt_parse_mountinfo_line(struct libmnt_fs *fs, const char *s) - goto fail; - } - -- /* remove "\040(deleted)" suffix */ -- p = (char *) endswith(fs->target, PATH_DELETED_SUFFIX); -- if (p && *p) -- *p = '\0'; -- - s = skip_separator(s); - - /* (6) vfs options (fs-independent) */ -diff --git a/tests/expected/findmnt/filter-options b/tests/expected/findmnt/filter-options -index 2606bce76..97b0ead0a 100644 ---- a/tests/expected/findmnt/filter-options -+++ b/tests/expected/findmnt/filter-options -@@ -28,5 +28,4 @@ TARGET SOURCE FSTYPE OPTIONS - /home/kzak/.gvfs gvfs-fuse-daemon fuse.gvfs-fuse-daemon rw,nosuid,nodev,relatime,user_id=500,group_id=500 - /var/lib/nfs/rpc_pipefs sunrpc rpc_pipefs rw,relatime - /mnt/sounds //foo.home/bar/ cifs rw,relatime,unc=\\foo.home\bar,username=kzak,domain=SRGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.111.1,posixpaths,serverino,acl,rsize=16384,wsize=57344 --/mnt/foo /fooooo bar rw,relatime - rc=0 -diff --git a/tests/expected/findmnt/filter-options-nameval-neg b/tests/expected/findmnt/filter-options-nameval-neg -index 5471d65af..f0467ef75 100644 ---- a/tests/expected/findmnt/filter-options-nameval-neg -+++ b/tests/expected/findmnt/filter-options-nameval-neg -@@ -29,6 +29,5 @@ TARGET SOURCE FSTYPE OPTIO - |-/home/kzak /dev/mapper/kzak-home ext4 rw,noatime,barrier=1,data=ordered - | `-/home/kzak/.gvfs gvfs-fuse-daemon fuse.gvfs-fuse-daemon rw,nosuid,nodev,relatime,user_id=500,group_id=500 - |-/var/lib/nfs/rpc_pipefs sunrpc rpc_pipefs rw,relatime --|-/mnt/sounds //foo.home/bar/ cifs rw,relatime,unc=\\foo.home\bar,username=kzak,domain=SRGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.111.1,posixpaths,serverino,acl,rsize=16384,wsize=57344 --`-/mnt/foo /fooooo bar rw,relatime -+`-/mnt/sounds //foo.home/bar/ cifs rw,relatime,unc=\\foo.home\bar,username=kzak,domain=SRGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.111.1,posixpaths,serverino,acl,rsize=16384,wsize=57344 - rc=0 -diff --git a/tests/expected/findmnt/filter-types-neg b/tests/expected/findmnt/filter-types-neg -index 2606bce76..97b0ead0a 100644 ---- a/tests/expected/findmnt/filter-types-neg -+++ b/tests/expected/findmnt/filter-types-neg -@@ -28,5 +28,4 @@ TARGET SOURCE FSTYPE OPTIONS - /home/kzak/.gvfs gvfs-fuse-daemon fuse.gvfs-fuse-daemon rw,nosuid,nodev,relatime,user_id=500,group_id=500 - /var/lib/nfs/rpc_pipefs sunrpc rpc_pipefs rw,relatime - /mnt/sounds //foo.home/bar/ cifs rw,relatime,unc=\\foo.home\bar,username=kzak,domain=SRGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.111.1,posixpaths,serverino,acl,rsize=16384,wsize=57344 --/mnt/foo /fooooo bar rw,relatime - rc=0 -diff --git a/tests/expected/findmnt/outputs-default b/tests/expected/findmnt/outputs-default -index 59495797b..01599355e 100644 ---- a/tests/expected/findmnt/outputs-default -+++ b/tests/expected/findmnt/outputs-default -@@ -30,6 +30,5 @@ TARGET SOURCE FSTYPE OPTIO - |-/home/kzak /dev/mapper/kzak-home ext4 rw,noatime,barrier=1,data=ordered - | `-/home/kzak/.gvfs gvfs-fuse-daemon fuse.gvfs-fuse-daemon rw,nosuid,nodev,relatime,user_id=500,group_id=500 - |-/var/lib/nfs/rpc_pipefs sunrpc rpc_pipefs rw,relatime --|-/mnt/sounds //foo.home/bar/ cifs rw,relatime,unc=\\foo.home\bar,username=kzak,domain=SRGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.111.1,posixpaths,serverino,acl,rsize=16384,wsize=57344 --`-/mnt/foo /fooooo bar rw,relatime -+`-/mnt/sounds //foo.home/bar/ cifs rw,relatime,unc=\\foo.home\bar,username=kzak,domain=SRGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.111.1,posixpaths,serverino,acl,rsize=16384,wsize=57344 - rc=0 -diff --git a/tests/expected/findmnt/outputs-force-tree b/tests/expected/findmnt/outputs-force-tree -index 59495797b..01599355e 100644 ---- a/tests/expected/findmnt/outputs-force-tree -+++ b/tests/expected/findmnt/outputs-force-tree -@@ -30,6 +30,5 @@ TARGET SOURCE FSTYPE OPTIO - |-/home/kzak /dev/mapper/kzak-home ext4 rw,noatime,barrier=1,data=ordered - | `-/home/kzak/.gvfs gvfs-fuse-daemon fuse.gvfs-fuse-daemon rw,nosuid,nodev,relatime,user_id=500,group_id=500 - |-/var/lib/nfs/rpc_pipefs sunrpc rpc_pipefs rw,relatime --|-/mnt/sounds //foo.home/bar/ cifs rw,relatime,unc=\\foo.home\bar,username=kzak,domain=SRGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.111.1,posixpaths,serverino,acl,rsize=16384,wsize=57344 --`-/mnt/foo /fooooo bar rw,relatime -+`-/mnt/sounds //foo.home/bar/ cifs rw,relatime,unc=\\foo.home\bar,username=kzak,domain=SRGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.111.1,posixpaths,serverino,acl,rsize=16384,wsize=57344 - rc=0 -diff --git a/tests/expected/findmnt/outputs-kernel b/tests/expected/findmnt/outputs-kernel -index 59495797b..01599355e 100644 ---- a/tests/expected/findmnt/outputs-kernel -+++ b/tests/expected/findmnt/outputs-kernel -@@ -30,6 +30,5 @@ TARGET SOURCE FSTYPE OPTIO - |-/home/kzak /dev/mapper/kzak-home ext4 rw,noatime,barrier=1,data=ordered - | `-/home/kzak/.gvfs gvfs-fuse-daemon fuse.gvfs-fuse-daemon rw,nosuid,nodev,relatime,user_id=500,group_id=500 - |-/var/lib/nfs/rpc_pipefs sunrpc rpc_pipefs rw,relatime --|-/mnt/sounds //foo.home/bar/ cifs rw,relatime,unc=\\foo.home\bar,username=kzak,domain=SRGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.111.1,posixpaths,serverino,acl,rsize=16384,wsize=57344 --`-/mnt/foo /fooooo bar rw,relatime -+`-/mnt/sounds //foo.home/bar/ cifs rw,relatime,unc=\\foo.home\bar,username=kzak,domain=SRGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.111.1,posixpaths,serverino,acl,rsize=16384,wsize=57344 - rc=0 -diff --git a/tests/expected/libmount/tabdiff-mount b/tests/expected/libmount/tabdiff-mount -index 420aeacd5..3c18f8dc4 100644 ---- a/tests/expected/libmount/tabdiff-mount -+++ b/tests/expected/libmount/tabdiff-mount -@@ -1,3 +1,2 @@ - /dev/mapper/kzak-home on /home/kzak: MOUNTED --/fooooo on /mnt/foo: MOUNTED - tmpfs on /mnt/test/foo
bar: MOUNTED -diff --git a/tests/expected/libmount/tabdiff-move b/tests/expected/libmount/tabdiff-move -index 24f9bc791..95820d93e 100644 ---- a/tests/expected/libmount/tabdiff-move -+++ b/tests/expected/libmount/tabdiff-move -@@ -1,3 +1,2 @@ - //foo.home/bar/ on /mnt/music: MOVED to /mnt/music --/fooooo on /mnt/foo: UMOUNTED - tmpfs on /mnt/test/foo
bar: UMOUNTED -diff --git a/tests/expected/libmount/tabdiff-remount b/tests/expected/libmount/tabdiff-remount -index 82ebeab39..876bfd953 100644 ---- a/tests/expected/libmount/tabdiff-remount -+++ b/tests/expected/libmount/tabdiff-remount -@@ -1,4 +1,3 @@ - /dev/mapper/kzak-home on /home/kzak: REMOUNTED from 'rw,noatime,barrier=1,data=ordered' to 'ro,noatime,barrier=1,data=ordered' - //foo.home/bar/ on /mnt/sounds: REMOUNTED from 'rw,relatime,unc=\\foo.home\bar,username=kzak,domain=SRGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.111.1,posixpaths,serverino,acl,rsize=16384,wsize=57344' to 'ro,relatime,unc=\\foo.home\bar,username=kzak,domain=SRGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.111.1,posixpaths,serverino,acl,rsize=16384,wsize=57344' --/fooooo on /mnt/foo: UMOUNTED - tmpfs on /mnt/test/foo
bar: UMOUNTED -diff --git a/tests/expected/libmount/tabdiff-umount b/tests/expected/libmount/tabdiff-umount -index a3e0fe48a..c7be725b9 100644 ---- a/tests/expected/libmount/tabdiff-umount -+++ b/tests/expected/libmount/tabdiff-umount -@@ -1,3 +1,2 @@ - /dev/mapper/kzak-home on /home/kzak: UMOUNTED --/fooooo on /mnt/foo: UMOUNTED - tmpfs on /mnt/test/foo
bar: UMOUNTED -diff --git a/tests/expected/libmount/tabfiles-parse-mountinfo b/tests/expected/libmount/tabfiles-parse-mountinfo -index 47eb77006..d5ba5248e 100644 ---- a/tests/expected/libmount/tabfiles-parse-mountinfo -+++ b/tests/expected/libmount/tabfiles-parse-mountinfo -@@ -351,17 +351,6 @@ id: 47 - parent: 20 - devno: 0:38 - ------ fs: --source: /fooooo --target: /mnt/foo --fstype: bar --optstr: rw,relatime --VFS-optstr: rw,relatime --FS-opstr: rw --root: / --id: 48 --parent: 20 --devno: 0:39 -------- fs: - source: tmpfs - target: /mnt/test/foo
bar - fstype: tmpfs -diff --git a/tests/expected/libmount/tabfiles-py-parse-mountinfo b/tests/expected/libmount/tabfiles-py-parse-mountinfo -index 47eb77006..d5ba5248e 100644 ---- a/tests/expected/libmount/tabfiles-py-parse-mountinfo -+++ b/tests/expected/libmount/tabfiles-py-parse-mountinfo -@@ -351,17 +351,6 @@ id: 47 - parent: 20 - devno: 0:38 - ------ fs: --source: /fooooo --target: /mnt/foo --fstype: bar --optstr: rw,relatime --VFS-optstr: rw,relatime --FS-opstr: rw --root: / --id: 48 --parent: 20 --devno: 0:39 -------- fs: - source: tmpfs - target: /mnt/test/foo
bar - fstype: tmpfs -diff --git a/tests/ts/findmnt/files/mountinfo b/tests/ts/findmnt/files/mountinfo -index 475ea1a33..ff1e664a8 100644 ---- a/tests/ts/findmnt/files/mountinfo -+++ b/tests/ts/findmnt/files/mountinfo -@@ -30,4 +30,3 @@ - 44 41 0:36 / /home/kzak/.gvfs rw,nosuid,nodev,relatime - fuse.gvfs-fuse-daemon gvfs-fuse-daemon rw,user_id=500,group_id=500 - 45 20 0:37 / /var/lib/nfs/rpc_pipefs rw,relatime - rpc_pipefs sunrpc rw - 47 20 0:38 / /mnt/sounds rw,relatime - cifs //foo.home/bar/ rw,unc=\\foo.home\bar,username=kzak,domain=SRGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.111.1,posixpaths,serverino,acl,rsize=16384,wsize=57344 --48 20 0:39 / /mnt/foo\040(deleted) rw,relatime - bar /fooooo rw -diff --git a/tests/ts/findmnt/files/mountinfo-nonroot b/tests/ts/findmnt/files/mountinfo-nonroot -index e15b46701..87b421d2e 100644 ---- a/tests/ts/findmnt/files/mountinfo-nonroot -+++ b/tests/ts/findmnt/files/mountinfo-nonroot -@@ -29,4 +29,3 @@ - 44 41 0:36 / /home/kzak/.gvfs rw,nosuid,nodev,relatime - fuse.gvfs-fuse-daemon gvfs-fuse-daemon rw,user_id=500,group_id=500 - 45 20 0:37 / /var/lib/nfs/rpc_pipefs rw,relatime - rpc_pipefs sunrpc rw - 47 20 0:38 / /mnt/sounds rw,relatime - cifs //foo.home/bar/ rw,unc=\\foo.home\bar,username=kzak,domain=SRGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.111.1,posixpaths,serverino,acl,rsize=16384,wsize=57344 --48 20 0:39 / /mnt/foo\040(deleted) rw,relatime - bar /fooooo rw -diff --git a/tests/ts/libmount/files/mountinfo b/tests/ts/libmount/files/mountinfo -index c06307183..2b0174048 100644 ---- a/tests/ts/libmount/files/mountinfo -+++ b/tests/ts/libmount/files/mountinfo -@@ -30,5 +30,4 @@ - 44 41 0:36 / /home/kzak/.gvfs rw,nosuid,nodev,relatime - fuse.gvfs-fuse-daemon gvfs-fuse-daemon rw,user_id=500,group_id=500 - 45 20 0:37 / /var/lib/nfs/rpc_pipefs rw,relatime - rpc_pipefs sunrpc rw - 47 20 0:38 / /mnt/sounds rw,relatime - cifs //foo.home/bar/ rw,unc=\\foo.home\bar,username=kzak,domain=SRGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.111.1,posixpaths,serverino,acl,rsize=16384,wsize=57344 --48 20 0:39 / /mnt/foo\040(deleted) rw,relatime - bar /fooooo rw - 49 20 0:56 / /mnt/test/foo
bar rw,relatime shared:323 - tmpfs tmpfs rw --- -2.34.0 - diff --git a/gnu/packages/pciutils.scm b/gnu/packages/pciutils.scm index 91e3fad33b..ea6bbb2702 100644 --- a/gnu/packages/pciutils.scm +++ b/gnu/packages/pciutils.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2022 Brendan Tildesley <mail@brendan.scot> +;;; Copyright © 2022 Marius Bakke <marius@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -39,7 +40,7 @@ (define-public hwdata (package (name "hwdata") - (version "0.357") ;updated monthly + (version "0.360") ;updated monthly (source (origin (method git-fetch) (uri (git-reference @@ -48,7 +49,7 @@ (file-name (git-file-name name version)) (sha256 (base32 - "0kvxpdx14w2myqm3dikjvr2mr4j6767y4v5j8v7kffwvcv0ga9gv")))) + "1jm0abqwcz02c3v6z7b4km4swk6yw6fpacip8cg8j7zipmwmhpbl")))) (build-system gnu-build-system) (outputs '("out" "iab" "oui" "pci" "pnp" "usb")) (arguments @@ -80,20 +81,24 @@ Each database is contained in a specific package output, such as the (define-public pciutils (package (name "pciutils") - (version "3.7.0") + (version "3.8.0") (source (origin (method url-fetch) (uri (string-append "mirror://kernel.org/software/utils/pciutils/pciutils-" version ".tar.xz")) - (patches (search-patches "pciutils-hurd-configure.patch")) (sha256 (base32 - "1ss0rnfsx8gvqjxaji4mvbhf9xyih4cadmgadbwwv8mnx1xvjh4x")))) + "01aglgw9ds9qiswcbi2lx90lswncikrlyv8mmp4haix8542bvvci")))) (build-system gnu-build-system) (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,50 +121,50 @@ 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. - (invoke "make" "install" "install-lib"))) - - ,@(if (hurd-target?) - '((add-after 'unpack 'apply-hurd-patch - (lambda* (#:key inputs #:allow-other-keys) - (let ((patch (assoc-ref inputs "hurd-patch"))) - (invoke "patch" "-p1" "--batch" "-i" - patch))))) - '())) + (invoke "make" "install" "install-lib")))) ;; Make sure programs have an RPATH so they can find libpciutils.so. - #:make-flags (list (string-append "LDFLAGS=-Wl,-rpath=" + #:make-flags (list ,(string-append "CC=" + (if (%current-target-system) + (cc-for-target) + "gcc")) + (string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %outputs "out") "/lib")) ;; No test suite. #:tests? #f)) (native-inputs - (list which pkg-config)) + (list `(,hwdata "pci") pkg-config which)) (inputs `(,@(if (not (hurd-target?)) `(("kmod" ,kmod)) '()) - ,@(if (hurd-target?) - `(("hurd-patch" ,(search-patch "pciutils-hurd-fix.patch"))) - '()) ("zlib" ,zlib))) (home-page "https://mj.ucw.cz/sw/pciutils/") (synopsis "Programs for inspecting and manipulating PCI devices") 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/perl.scm b/gnu/packages/perl.scm index 1f947b48fa..321a3887c7 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -96,14 +96,14 @@ ;; Yeah, Perl... It is required early in the bootstrap process by Linux. (package (name "perl") - (version "5.34.0") + (version "5.36.0") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/src/5.0/perl-" version ".tar.gz")) (sha256 (base32 - "16mywn5afpv1mczv9dlc1w84rbgjgrr0pyr4c0hhb2wnif0zq7jm")) + "02p0ljvxgay5g8s8j1kghdylkj581qx3qlwavlmgd5n3iapqaq72")) (patches (search-patches "perl-no-sys-dirs.patch" "perl-autosplit-default-time.patch" @@ -242,10 +242,10 @@ (method git-fetch) (uri (git-reference (url "https://github.com/arsv/perl-cross") - (commit "1.3.6"))) - (file-name (git-file-name "perl-cross" "1.3.6")) + (commit "1.4"))) + (file-name (git-file-name "perl-cross" "1.4")) (sha256 - (base32 "0k5vyj40czbkfl7r3dcwxpc7dvdlp2xliaav358bviq3dq9vq9bb"))))) + (base32 "1ydjvlhrk06ccyj4bm8by7xk90krsll2k380mc3x1mhfrc7r9gzy"))))) '())) (native-search-paths (list (search-path-specification (variable "PERL5LIB") 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 14be55054f..1e59911299 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-xyz.scm b/gnu/packages/python-xyz.scm index 1d43049776..08986569b3 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -13051,12 +13051,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 @@ -15688,9 +15721,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 @@ -26465,7 +26496,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/python.scm b/gnu/packages/python.scm index ad475d8acc..0922fd44a6 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -423,7 +423,7 @@ data types.") (package (inherit python-2) (name "python") - (version "3.9.9") + (version "3.9.13") (source (origin (method url-fetch) (uri (string-append "https://www.python.org/ftp/python/" @@ -437,7 +437,7 @@ data types.") "python-3-no-static-lib.patch")) (sha256 (base32 - "09vd7g71i11iz5ydqghwc8kaxr0vgji94hhwwnj77h3kll28r0h6")) + "03q8lcb476a9n41nih9qvwf1fzfzjbvq6vj0cnmd458yixchqnqj")) (modules '((guix build utils))) (snippet '(begin diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm index c25cdbc20c..1eeabbb809 100644 --- a/gnu/packages/radio.scm +++ b/gnu/packages/radio.scm @@ -568,7 +568,7 @@ used by RDS Spy, and audio files containing @dfn{multiplex} signals (MPX).") ("texlive" ,(texlive-updmap.cfg (list texlive-amsfonts texlive-amsmath ;; TODO: Add newunicodechar. - texlive-latex-graphics))) + texlive-graphics))) ("xorg-server" ,xorg-server-for-tests))) (inputs `(("alsa-lib" ,alsa-lib) @@ -776,7 +776,7 @@ to access different radio hardware.") ("texlive" ,(texlive-updmap.cfg (list texlive-amsfonts texlive-amsmath ;; TODO: Add newunicodechar. - texlive-latex-graphics))))) + texlive-graphics))))) (inputs (list fftwf)) (arguments diff --git a/gnu/packages/readline.scm b/gnu/packages/readline.scm index 5920f1c8e1..b6cdeb4f84 100644 --- a/gnu/packages/readline.scm +++ b/gnu/packages/readline.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2018, 2021 Tobias Geerinckx-Rice <me@tobias.gr> -;;; Copyright © 2019, 2020 Marius Bakke <marius@gnu.org> +;;; Copyright © 2019, 2020, 2022 Marius Bakke <marius@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -27,6 +27,7 @@ #:use-module (gnu packages ncurses) #:use-module (gnu packages perl) #:use-module (guix packages) + #:use-module (guix gexp) #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix build-system gnu) @@ -51,7 +52,8 @@ (define %patch-series-8.1 (patch-series "8.1" - (1 "0i4ikdqgcjnb40y2ss3lm09rq56zih5rzma3bib50dk3d1d4cak8"))) + (1 "0i4ikdqgcjnb40y2ss3lm09rq56zih5rzma3bib50dk3d1d4cak8") + (2 "1p15sfx5xg5k4lam12lyd0givk7dfjddqpnb1jdp3c4clray0nz5"))) (define %patch-series-7.0 (patch-series @@ -79,27 +81,30 @@ (patch-flags '("-p0")))) (build-system gnu-build-system) (propagated-inputs (list ncurses)) - (arguments `(#:configure-flags - (list (string-append "LDFLAGS=-Wl,-rpath -Wl," - (assoc-ref %build-inputs "ncurses") - "/lib") + (arguments + (list #:configure-flags + #~(list (string-append + "LDFLAGS=-Wl,-rpath -Wl," + (dirname (search-input-file %build-inputs + "lib/libncurses.so"))) - ;; This test does an 'AC_TRY_RUN', which aborts when - ;; cross-compiling, so provide the correct answer. - ,@(if (%current-target-system) - '("bash_cv_wcwidth_broken=no") - '()) - ;; MinGW: ncurses provides the termcap api. - ,@(if (target-mingw?) - '("bash_cv_termcap_lib=ncurses") - '())) + ;; This test does an 'AC_TRY_RUN', which aborts when + ;; cross-compiling, so provide the correct answer. + #$@(if (%current-target-system) + '("bash_cv_wcwidth_broken=no") + '()) + ;; MinGW: ncurses provides the termcap api. + #$@(if (target-mingw?) + '("bash_cv_termcap_lib=ncurses") + '())) - ,@(if (target-mingw?) - ;; MinGW: termcap in ncurses - ;; some SIG_* #defined in _POSIX - '(#:make-flags '("TERMCAP_LIB=-lncurses" - "CPPFLAGS=-D_POSIX -D'chown(f,o,g)=0'")) - '()))) + #:make-flags + (if (target-mingw?) + ;; MinGW: termcap in ncurses + ;; some SIG_* #defined in _POSIX + #~'("TERMCAP_LIB=-lncurses" + "CPPFLAGS=-D_POSIX -D'chown(f,o,g)=0'") + #~'()))) (synopsis "Edit command lines while typing, with history support") (description "The GNU readline library allows users to edit command lines as they diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 68e5d8dfd6..d6fe2f9fc0 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/serialization.scm b/gnu/packages/serialization.scm index cec9b68299..960c339ef9 100644 --- a/gnu/packages/serialization.scm +++ b/gnu/packages/serialization.scm @@ -414,17 +414,15 @@ in which the loaded data is arranged in memory.") (define-public jsoncpp (package (name "jsoncpp") - (version "1.9.4") + (version "1.9.5") (home-page "https://github.com/open-source-parsers/jsoncpp") (source (origin (method git-fetch) (uri (git-reference (url home-page) (commit version))) (file-name (git-file-name name version)) - (patches - (search-patches "jsoncpp-pkg-config-version.patch")) (sha256 (base32 - "0qnx5y6c90fphl9mj9d20j2dfgy6s5yr5l0xnzid0vh71zrp6jwv")))) + "06zss7z56ykzwcsfdxarmini63hkf8i8gx70q3yw9wb0bw7wj9rv")))) (build-system cmake-build-system) (arguments `(#:configure-flags '("-DBUILD_SHARED_LIBS:BOOL=YES" 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/sqlite.scm b/gnu/packages/sqlite.scm index c894f563a8..7806aa6222 100644 --- a/gnu/packages/sqlite.scm +++ b/gnu/packages/sqlite.scm @@ -61,14 +61,14 @@ (define-public sqlite (package (name "sqlite") - (version "3.36.0") + (version "3.39.0") (source (origin (method url-fetch) - (uri (sqlite-uri version 2021)) + (uri (sqlite-uri version 2022)) (patches (search-patches "sqlite-hurd.patch")) (sha256 (base32 - "1qxwkfvd185dfcqbakrzikrsw6ffr5jp1gl3dch9dsdyjvmw745x")))) + "1qh9xpjf3g1vkxzh3wf0mv8bzjgkcmmpz1jfxv6kz0fmdppwl2z9")))) (build-system gnu-build-system) (inputs (list readline)) (outputs '("out" "static")) @@ -108,15 +108,3 @@ zero-configuration, transactional SQL database engine. SQLite is the most widely deployed SQL database engine in the world. The source code for SQLite is in the public domain.") (license license:public-domain))) - -;; Newer version required for e.g. fossil. -(define-public sqlite-next - (package - (inherit sqlite) - (version "3.37.0") - (source (origin - (method url-fetch) - (uri (sqlite-uri version 2021)) - (sha256 - (base32 - "1xvrfh2r5x5pljlvakym3zrhml2dvsr8dd8xsb3nzcylsi8lc6kk")))))) diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm index aa540c1012..e459ca7b33 100644 --- a/gnu/packages/ssh.scm +++ b/gnu/packages/ssh.scm @@ -159,7 +159,7 @@ applications.") (define-public libssh2 (package (name "libssh2") - (version "1.9.0") + (version "1.10.0") (source (origin (method url-fetch) (uri (string-append @@ -167,13 +167,14 @@ applications.") version ".tar.gz")) (sha256 (base32 - "1zfsz9nldakfz61d2j70pk29zlmj7w2vv46s9l3x2prhcgaqpyym")) - (patches (search-patches "libssh2-CVE-2019-17498.patch")))) + "0l8xwhhscvss7q007vpbkbv7jh9s43579rx2sf8lnfgd7l7yjr1d")))) (build-system gnu-build-system) ;; The installed libssh2.pc file does not include paths to libgcrypt and ;; zlib libraries, so we need to propagate the inputs. (propagated-inputs (list libgcrypt zlib)) - (arguments `(#:configure-flags `("--with-libgcrypt"))) + (arguments + (list #:configure-flags #~'("--with-libgcrypt" + "--disable-static"))) (synopsis "Client-side C library implementing the SSH2 protocol") (description "libssh2 is a library intended to allow software developers access to diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index 8823150222..88d7f534b4 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/tcl.scm b/gnu/packages/tcl.scm index 4cbc9d84b4..5c26f03147 100644 --- a/gnu/packages/tcl.scm +++ b/gnu/packages/tcl.scm @@ -46,14 +46,14 @@ (define-public tcl (package (name "tcl") - (version "8.6.11") + (version "8.6.12") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/tcl/Tcl/" version "/tcl" version "-src.tar.gz")) (sha256 (base32 - "0n4211j80mxr6ql0xx52rig8r885rcbminfpjdb2qrw6hmk8c14c")))) + "19n1wk6ypx19p26gywvibwbhqs2zapp93n3136qlhzhn1zfrbj96")))) (build-system gnu-build-system) (arguments `(#:phases (modify-phases %standard-phases @@ -193,7 +193,7 @@ X11 GUIs.") (define-public tk (package (name "tk") - (version "8.6.11.1") + (version "8.6.12") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/tcl/Tcl/" @@ -201,7 +201,7 @@ X11 GUIs.") version "-src.tar.gz")) (sha256 (base32 - "1gh9k7l76qg9l0sb78ijw9xz4xl1af47aqbdifb6mjpf3cbsnv00")) + "0c0665h9b55cr3p6civcrgaixx6dldz7k7v870lyssyb7wgmqf8j")) (patches (search-patches "tk-find-library.patch")))) (build-system gnu-build-system) (arguments diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm index de0a6d347c..5207c787e9 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. @@ -599,8 +600,8 @@ This package contains the binaries.") (mkdir-p doc) (copy-recursively (string-append #$source "/doc") doc))))))) - (propagated-inputs (list texlive-generic-iftex - texlive-generic-ltxcmds + (propagated-inputs (list texlive-iftex + texlive-ltxcmds texlive-hyperref texlive-latex-xkeyval texlive-zref)) @@ -3041,41 +3042,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 @@ -3142,10 +3195,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 @@ -3162,6 +3215,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 @@ -3198,6 +3253,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 @@ -3215,71 +3321,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 ...)) @@ -3368,51 +3479,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 @@ -3429,97 +3550,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 @@ -4356,6 +4554,7 @@ language that is written in a Cyrillic alphabet.") "11f14dzhwsy4pli21acccip43d36nf3pac33ihjffnps1i2mhqkd")))) (package (inherit template) + (outputs '("out" "doc")) (arguments (substitute-keyword-arguments (package-arguments template) ((#:tex-directory _ #t) @@ -4365,14 +4564,34 @@ language that is written in a Cyrillic alphabet.") (add-after 'unpack 'chdir (lambda _ (chdir "source/latex/psnfss"))) - (add-before 'copy-files 'unchdir - (lambda _ - (chdir "../../.."))) - (add-after 'copy-files 'delete-extra-files - (lambda* (#:key outputs #:allow-other-keys) - (delete-file-recursively - (string-append (assoc-ref outputs "out") - "/share/texmf-dist/source/latex/psnfss/build")))))))) + (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") @@ -4402,6 +4621,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 @@ -4411,9 +4631,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") @@ -4948,24 +5167,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 @@ -5004,12 +5246,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") @@ -5023,24 +5265,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 @@ -5413,7 +5679,7 @@ BibLaTeX, and is considered experimental.") (arguments '(#:tex-directory "latex/geometry")) (propagated-inputs (list texlive-oberdiek ;for ifpdf - texlive-latex-graphics)) ;for keyval + texlive-graphics)) ;for keyval (home-page "https://www.ctan.org/pkg/geometry") (synopsis "Flexible and complete interface to document dimensions") (description @@ -5558,15 +5824,15 @@ always (re)defines a command. There is also @code{\\makeenvironment} and texlive-booktabs texlive-cm texlive-fontspec - texlive-generic-iftex + texlive-iftex texlive-latex-base texlive-latex-eukdate - texlive-latex-graphics + texlive-graphics texlive-latex-multirow texlive-lm ;for lmroman10-regular texlive-stix2-otf)) - (propagated-inputs (list texlive-fontspec texlive-generic-iftex - texlive-latex-graphics)) + (propagated-inputs (list texlive-fontspec texlive-iftex + texlive-graphics)) (home-page "https://ctan.org/pkg/metalogo") (synopsis "Extended TeX logo macros") (description "This package exposes spacing parameters for various TeX @@ -5682,7 +5948,7 @@ also provides compacted versions of enumerate and itemize.") texlive-booktabs texlive-caption texlive-context - texlive-latex-fancyvrb + texlive-fancyvrb texlive-etoolbox texlive-fonts-latex texlive-fontspec @@ -5692,13 +5958,13 @@ also provides compacted versions of enumerate and itemize.") ;; them. texlive-stringenc texlive-zapfding - texlive-latex-graphics + texlive-graphics texlive-kpathsea ;for cp227.tcx & friends texlive-makecmds texlive-metalogo texlive-microtype texlive-paralist - texlive-latex-tools + texlive-tools texlive-tex-ini-files)) ;for pdftexconfig ;; polyglossia.sty \RequirePackage or \\usepackage these other TexLive ;; packages. @@ -5714,7 +5980,7 @@ also provides compacted versions of enumerate and itemize.") texlive-zapfding texlive-makecmds texlive-latex-l3packages ;expl3, l3keys2e, xparse - texlive-latex-tools + texlive-tools texlive-latex-xkeyval)) (home-page "https://www.ctan.org/pkg/polyglossia") (synopsis "Alternative to Babel for XeLaTeX and LuaLaTeX") @@ -6050,39 +6316,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 @@ -6132,52 +6404,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 @@ -6218,23 +6527,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 @@ -6471,12 +6804,12 @@ Adobe's basic set.") (mkdir-p doc) (copy-recursively (string-append (getenv "ROOT_DIR") "/doc") doc)))))) - (propagated-inputs (list texlive-generic-atbegshi - texlive-generic-gettitlestring - texlive-generic-iftex - texlive-latex-atveryend - texlive-latex-kvoptions - texlive-latex-pdftexcmds + (propagated-inputs (list texlive-atbegshi + texlive-gettitlestring + texlive-iftex + texlive-atveryend + texlive-kvoptions + texlive-pdftexcmds texlive-latex-xkeyval)) (home-page "https://github.com/ho-tex/zref") (synopsis "Reference scheme for LaTeX") @@ -6591,26 +6924,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 @@ -6760,29 +7120,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 @@ -6869,23 +7251,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 @@ -6894,7 +7294,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 @@ -7148,9 +7550,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)) @@ -7225,33 +7627,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 @@ -7261,6 +7645,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") @@ -8199,35 +8585,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 @@ -8389,69 +8785,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 @@ -8512,162 +8896,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 @@ -8703,56 +9306,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 @@ -9291,9 +9968,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 @@ -9311,9 +9988,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 @@ -9359,37 +10036,6 @@ used in place of @code{tabular}, @code{tabular*} and @code{tabularx} environments, as well as the @code{array} environment in maths mode.") (license license:lppl1.3+)))) -(define-public texlive-tools - (let ((template (simple-texlive-package - "texlive-tools" - (list "/doc/latex/tools/" - "/source/latex/tools/") - (base32 - "1xas0b69r3d5x4zhcqysgybyqaikd9avv6r1bdckb947id3iaz58")))) - (package - (inherit template) - (arguments - (substitute-keyword-arguments (package-arguments template) - ((#:tex-directory _ '()) - "latex/tools") - ((#:build-targets _ '()) - ''("tools.ins")) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'unpack 'chdir - (lambda _ (chdir "source/latex/tools") #t)))))) - (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-public texlive-latex-xkeyval (package (name "texlive-latex-xkeyval") @@ -9452,17 +10098,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 @@ -9794,6 +10435,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 @@ -10354,22 +11010,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 @@ -10398,12 +11071,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 @@ -10481,8 +11154,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 8cf90855a3..a1834923c4 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> @@ -47,14 +47,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/tls.scm b/gnu/packages/tls.scm index 9e52225d52..7b2f43d993 100644 --- a/gnu/packages/tls.scm +++ b/gnu/packages/tls.scm @@ -85,7 +85,7 @@ (define-public libtasn1 (package (name "libtasn1") - (version "4.17.0") + (version "4.18.0") (source (origin (method url-fetch) @@ -93,7 +93,7 @@ version ".tar.gz")) (sha256 (base32 - "19a53i1ajs4dd8nnlr2i6gbzvla84ay71g3y1phvh8krx8f5brzc")))) + "160qrlsa707a15bzdl70fvdwcxgfs43vc950cx6dcqrmjmac2ra3")))) (build-system gnu-build-system) (arguments `(#:configure-flags '("--disable-static"))) @@ -137,52 +137,51 @@ in intelligent transportation networks.") (define-public p11-kit (package (name "p11-kit") - (version "0.23.22") + (version "0.24.1") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/p11-glue/p11-kit/releases/" - "download/" version "/p11-kit-" version ".tar.xz")) - (sha256 - (base32 "1dn6br4v033d3gp2max9lsr3y4q0nj6iyr1yq3kzi8ym7lal13wa")))) + (method url-fetch) + (uri (string-append "https://github.com/p11-glue/p11-kit/releases/" + "download/" version "/p11-kit-" version ".tar.xz")) + (sha256 + (base32 "1y5fm9gwhkh902r26p90qf1g2h1ziqrk4hgf9i9sxm2wzlz7ignq")))) (build-system gnu-build-system) (native-inputs - `(,@(if (hurd-target?) - `(("autoconf" ,autoconf) - ("automake" ,automake) - ("gettext" ,gettext-minimal) ;for autopoint - ("libtool" ,libtool)) - '()) - ("pkg-config" ,pkg-config))) + (append (list pkg-config) + (if (hurd-target?) + (list autoconf automake gettext-minimal libtool) + '()))) (inputs - `(("libffi" ,libffi) - ,@(if (hurd-target?) - `(("libbsd" ,libbsd) - ("hurd-patch" ,(search-patch "p11-kit-hurd.patch"))) - '()) - ("libtasn1" ,libtasn1))) + (append (list libffi libtasn1) + (if (hurd-target?) + (list libbsd) + '()))) (arguments - `(#:configure-flags '("--without-trust-paths") - #:phases (modify-phases %standard-phases - ,@(if (hurd-target?) - '((add-after 'unpack 'apply-hurd-patch - (lambda* (#:key inputs #:allow-other-keys) - (let ((patch (assoc-ref inputs "hurd-patch"))) - (invoke "patch" "-p1" "--batch" "-i" - patch)))) - (replace 'bootstrap - (lambda _ - (invoke "autoreconf" "-fiv")))) - '()) - (add-before 'check 'prepare-tests - (lambda _ - ;; "test-runtime" expects XDG_RUNTIME_DIR to be set up - ;; and looks for .cache and other directories (only). - ;; For simplicity just drop it since it is irrelevant - ;; in the build container. - (substitute* "Makefile" - (("test-runtime\\$\\(EXEEXT\\)") "")) - #t))))) + (list #:configure-flags + ;; Use the default certificates so that users such as flatpak + ;; find them. See <https://issues.guix.gnu.org/49957>. + #~'("--with-trust-paths=/etc/ssl/certs/ca-certificates.crt") + #:phases #~(modify-phases %standard-phases + #$@(if (hurd-target?) + #~((add-after 'unpack 'apply-hurd-patch + (lambda* (#:key inputs #:allow-other-keys) + (define patch + #$(local-file + (search-patch "p11-kit-hurd.patch"))) + (invoke "patch" "-p1" "--batch" "-i" + patch))) + (replace 'bootstrap + (lambda _ + (invoke "autoreconf" "-fiv")))) + #~()) + (add-before 'check 'prepare-tests + (lambda _ + ;; "test-runtime" expects XDG_RUNTIME_DIR to be set up + ;; and looks for .cache and other directories (only). + ;; For simplicity just drop it since it is irrelevant + ;; in the build container. + (substitute* "Makefile" + (("test-runtime\\$\\(EXEEXT\\)") ""))))))) (home-page "https://p11-glue.github.io/p11-glue/p11-kit.html") (synopsis "PKCS#11 library") (description @@ -193,28 +192,10 @@ coordinating the use of PKCS#11 by different components or libraries living in the same process.") (license license:bsd-3))) -(define-public p11-kit-next - (package - (inherit p11-kit) - (version "0.24.1") - (source - (origin - (method url-fetch) - (uri (string-append "https://github.com/p11-glue/p11-kit/releases/" - "download/" version "/p11-kit-" version ".tar.xz")) - (sha256 - (base32 "1y5fm9gwhkh902r26p90qf1g2h1ziqrk4hgf9i9sxm2wzlz7ignq")))) - (arguments - ;; Use the default certificates so that users such as flatpak find them. - ;; See <https://issues.guix.gnu.org/49957>. - (substitute-keyword-arguments (package-arguments p11-kit) - ((#:configure-flags flags ''()) - ''("--with-trust-paths=/etc/ssl/certs/ca-certificates.crt")))))) - (define-public gnutls (package (name "gnutls") - (version "3.7.2") + (version "3.7.6") (source (origin (method url-fetch) ;; Note: Releases are no longer on ftp.gnu.org since the @@ -223,101 +204,94 @@ living in the same process.") (version-major+minor version) "/gnutls-" version ".tar.xz")) (patches (search-patches "gnutls-skip-trust-store-test.patch" - "gnutls-cross.patch" - "gnutls-guile-eintr-eagain.patch")) + "gnutls-cross.patch")) (sha256 (base32 - "0li7mwjnm64mbxhacz0rpf6i9qd83f53fvbrx96alpqqk9d6qvk4")))) + "1zv2097v9f6f4c66q7yn3c6gggjk9jz38095ma7v3gs5lccmf1kp")))) (build-system gnu-build-system) (arguments - `(#:tests? ,(not (or (%current-target-system) - (hurd-target?))) - ;; Ensure we don't keep a reference to the tools used for testing. - #:disallowed-references ,(if (hurd-target?) - '() - (list net-tools iproute socat)) - #:configure-flags - (cons* - ;; GnuTLS doesn't consult any environment variables to specify - ;; the location of the system-wide trust store. Instead it has a - ;; configure-time option. Unless specified, its configure script - ;; attempts to auto-detect the location by looking for common - ;; places in the file system, none of which are present in our - ;; chroot build environment. If not found, then no default trust - ;; store is used, so each program has to provide its own - ;; fallback, and users have to configure each program - ;; independently. This seems suboptimal. - "--with-default-trust-store-dir=/etc/ssl/certs" + (list #:tests? (not (or (%current-target-system) + (hurd-target?))) + ;; Ensure we don't keep a reference to the tools used for testing. + #:disallowed-references (if (hurd-target?) + '() + (list net-tools iproute socat)) + #:configure-flags + #~(cons* + ;; GnuTLS doesn't consult any environment variables to specify + ;; the location of the system-wide trust store. Instead it has a + ;; configure-time option. Unless specified, its configure script + ;; attempts to auto-detect the location by looking for common + ;; places in the file system, none of which are present in our + ;; chroot build environment. If not found, then no default trust + ;; store is used, so each program has to provide its own + ;; fallback, and users have to configure each program + ;; independently. This seems suboptimal. + "--with-default-trust-store-dir=/etc/ssl/certs" - ;; Tell the build system that we want Guile bindings installed to - ;; the output instead of Guiles own module directory. - (string-append "--with-guile-site-dir=" - "$(datarootdir)/guile/site/$(GUILE_EFFECTIVE_VERSION)") - (string-append "--with-guile-site-ccache-dir=" - "$(libdir)/guile/$(GUILE_EFFECTIVE_VERSION)/site-ccache") - (string-append "--with-guile-extension-dir=" - "$(libdir)/guile/$(GUILE_EFFECTIVE_VERSION)/extensions") + ;; Tell the build system that we want Guile bindings installed to + ;; the output instead of Guiles own module directory. + (string-append "--with-guile-site-dir=" + "$(datarootdir)/guile/site/$(GUILE_EFFECTIVE_VERSION)") + (string-append "--with-guile-site-ccache-dir=" + "$(libdir)/guile/$(GUILE_EFFECTIVE_VERSION)/site-ccache") + (string-append "--with-guile-extension-dir=" + "$(libdir)/guile/$(GUILE_EFFECTIVE_VERSION)/extensions") - (let ((system ,(or (%current-target-system) - (%current-system)))) - (if (string-prefix? "mips64el" system) - (list - ;; FIXME: Temporarily disable p11-kit support since it is - ;; not working on mips64el. - "--without-p11-kit") - '()))) + (let ((system #$(or (%current-target-system) + (%current-system)))) + (if (string-prefix? "mips64el" system) + (list + ;; FIXME: Temporarily disable p11-kit support since it is + ;; not working on mips64el. + "--without-p11-kit") + '()))) - #:phases (modify-phases %standard-phases - ;; fastopen.sh fails to connect to the server in the builder - ;; environment (see: - ;; https://gitlab.com/gnutls/gnutls/-/issues/1095). - (add-after 'unpack 'disable-failing-tests - (lambda _ - (substitute* "tests/fastopen.sh" - (("^unset RETCODE") - "exit 77\n")))) ;skip - (add-after 'install 'move-doc - (lambda* (#:key outputs #:allow-other-keys) - ;; Copy the 4.1 MiB of section 3 man pages to "doc". - (let* ((out (assoc-ref outputs "out")) - (doc (assoc-ref outputs "doc")) - (mandir (string-append doc "/share/man/man3")) - (oldman (string-append out "/share/man/man3"))) - (mkdir-p mandir) - (copy-recursively oldman mandir) - (delete-file-recursively oldman))))))) + #:phases + #~(modify-phases %standard-phases + ;; fastopen.sh fails to connect to the server in the builder + ;; environment (see: + ;; https://gitlab.com/gnutls/gnutls/-/issues/1095). + (add-after 'unpack 'disable-failing-tests + (lambda _ + (substitute* "tests/fastopen.sh" + (("^unset RETCODE") + "exit 77\n")))) ;skip + (add-after 'install 'move-doc + (lambda* (#:key outputs #:allow-other-keys) + ;; Copy the 4.1 MiB of section 3 man pages to "doc". + (let* ((out (assoc-ref outputs "out")) + (doc (assoc-ref outputs "doc")) + (mandir (string-append doc "/share/man/man3")) + (oldman (string-append out "/share/man/man3"))) + (mkdir-p mandir) + (copy-recursively oldman mandir) + (delete-file-recursively oldman))))))) (outputs '("out" ;4.4 MiB "debug" "doc")) ;4.1 MiB of man pages (native-inputs - `(,@(if (%current-target-system) ;for cross-build - `(("guile" ,guile-3.0)) ;to create .go files - '()) - ,@(if (hurd-target?) - '() - `(("net-tools" ,net-tools) - ("iproute" ,iproute) ;for 'ss' - ("socat" ,socat))) ;several tests rely on it - ("pkg-config" ,pkg-config) - ("texinfo" ,texinfo) - ("which" ,which) - ,@(if (hurd-target?) - '() - `(("datefudge" ,datefudge))) ;tests rely on 'datefudge' - ("util-linux" ,util-linux))) ;one test needs 'setsid' + (append (list pkg-config texinfo which + util-linux) ;one test needs 'setsid' + (if (%current-target-system) ;for cross-build + (list guile-3.0) ;to create .go files + '()) + (if (hurd-target?) + '() + (list net-tools + iproute ;for 'ss' + socat ;several tests rely on it + datefudge)))) ;tests rely on 'datefudge' (inputs (list guile-3.0)) (propagated-inputs ;; These are all in the 'Requires.private' field of gnutls.pc. - `(("libtasn1" ,libtasn1) - ("libidn2" ,libidn2) - ("nettle" ,nettle) - ("zlib" ,zlib) - ,@(let ((system (or (%current-target-system) - (%current-system)))) - (if (string-prefix? "mips64el" system) - '() - `(("p11-kit" ,p11-kit)))))) + (append (list libtasn1 libidn2 nettle zlib) + (let ((system (or (%current-target-system) + (%current-system)))) + (if (string-prefix? "mips64el" system) + '() + (list p11-kit))))) (home-page "https://www.gnu.org/software/gnutls/") (synopsis "Transport layer security library") (description @@ -329,13 +303,6 @@ required structures.") (properties '((ftp-server . "ftp.gnutls.org") (ftp-directory . "/gcrypt/gnutls"))))) -(define-public gnutls/guile-2.0 - ;; GnuTLS for Guile 2.0. - (package/inherit gnutls - (name "guile2.0-gnutls") - (inputs `(("guile" ,guile-2.0) - ,@(alist-delete "guile" (package-inputs gnutls)))))) - (define-public gnutls/dane ;; GnuTLS with build libgnutls-dane, implementing DNS-based ;; Authentication of Named Entities. This is required for GNS functionality @@ -343,15 +310,14 @@ required structures.") ;; to have the choice between GnuTLS with Dane and without Dane. (package/inherit gnutls (name "gnutls-dane") - (inputs `(("unbound" ,unbound) - ,@(package-inputs gnutls))))) + (inputs (modify-inputs (package-inputs gnutls) + (prepend unbound))))) (define-public guile2.2-gnutls (package/inherit gnutls (name "guile2.2-gnutls") - (inputs `(("guile" ,guile-2.2) - ,@(alist-delete "guile" - (package-inputs gnutls)))))) + (inputs (modify-inputs (package-inputs gnutls) + (replace "guile" guile-2.2))))) (define (target->openssl-target target) "Return the value to set CONFIGURE_TARGET_ARCH to when cross-compiling @@ -384,7 +350,7 @@ OpenSSL for TARGET." (define-public openssl (package (name "openssl") - (version "1.1.1l") + (version "1.1.1n") (replacement openssl/fixed) (source (origin (method url-fetch) @@ -398,7 +364,7 @@ OpenSSL for TARGET." (patches (search-patches "openssl-1.1-c-rehash-in.patch")) (sha256 (base32 - "1lbblxps2fhmz7bqh058iywh5wxfignbfx1s1kz2fj63b5g3wyhb")))) + "0ymif8rlc5cf5qp5bh2pxlrgq6xryh7g4sqfvrdjg9gnli8ypp20")))) (build-system gnu-build-system) (outputs '("out" "doc" ;6.8 MiB of man3 pages and full HTML documentation @@ -423,15 +389,20 @@ OpenSSL for TARGET." #$(target->openssl-target (%current-target-system)))))) #~()) - ;; This test seems to be dependant on kernel features. - ;; https://github.com/openssl/openssl/issues/12242 - #$@(if (or (target-arm?) - (target-riscv64?)) - #~((replace 'check - (lambda* (#:key tests? test-target #:allow-other-keys) - (when tests? - (invoke "make" "TESTS=-test_afalg" test-target))))) - #~()) + (replace 'check + (lambda* (#:key tests? test-target #:allow-other-keys) + (when tests? + ;; 'test_ssl_new.t' in 1.1.1n and 3.0.3 fails due to an expired + ;; certificate: + ;; <https://github.com/openssl/openssl/issues/18441>. + ;; Skip it. + ;; + ;; 'test_afalg' seems to be dependent on kernel features: + ;; <https://github.com/openssl/openssl/issues/12242>. + (invoke "make" test-target + #$(if (or (target-arm?) (target-riscv64?)) + "TESTS=-test_afalg -tls_ssl_new" + "TESTS=-test_ssl_new"))))) (replace 'configure (lambda* (#:key configure-flags #:allow-other-keys) (let* ((out #$output) diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index eefb4a01ec..67fec6ff46 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -2698,7 +2698,7 @@ by rclone usable with git-annex.") which ;for tests only ed)) ;ditto (inputs - (list openssl zlib sqlite-next)) ;SQLite 3.37 or later + (list openssl zlib sqlite)) (arguments `(#:configure-flags (list "--with-openssl=auto" "--disable-internal-sqlite") diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm index b327338cd5..ad03c4fa53 100644 --- a/gnu/packages/web-browsers.scm +++ b/gnu/packages/web-browsers.scm @@ -487,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. @@ -502,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" @@ -530,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 006ac26ace..8fef63a896 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -1029,19 +1029,29 @@ libraries for working with JNLP applets.") (define-public jansson (package (name "jansson") - (version "2.13.1") + (version "2.14") (source (origin (method url-fetch) - (uri - (string-append "http://www.digip.org/jansson/releases/jansson-" - version ".tar.bz2")) + (uri (string-append "https://github.com/akheron/jansson" + "/releases/download/v" version + "/jansson-" version ".tar.bz2")) (sha256 (base32 - "1g8h18vh8gyxlwfmvdivdp1siad26ywj5zr4j4avgdyjg7wa147f")))) + "1fdgji964mrrz19glx0zh91asji542fvybymvzk6rrbagkr5dagv")))) (build-system gnu-build-system) (arguments - `(#:configure-flags '("--disable-static"))) - (home-page "http://www.digip.org/jansson/") + (list + #:configure-flags #~'("--disable-static") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-tests + (lambda _ + ;; Take a fix from upstream for testing with symbol versioning: + ;; https://github.com/akheron/jansson/pull/593 + (substitute* "test/suites/api/check-exports" + (("(grep ' \\[DT\\] ' \\$test_log/symbols.*) \\| sort" _ cmd) + (string-append cmd "| sed 's/@@libjansson.*//' | sort")))))))) + (home-page "https://github.com/akheron/jansson") (synopsis "JSON C library") (description "Jansson is a C library for encoding, decoding and manipulating JSON @@ -7476,7 +7486,7 @@ derivation by David Revoy from the original MonsterID by Andreas Gohr.") (define-public nghttp2 (package (name "nghttp2") - (version "1.44.0") + (version "1.48.0") (source (origin (method url-fetch) @@ -7485,7 +7495,7 @@ derivation by David Revoy from the original MonsterID by Andreas Gohr.") "nghttp2-" version ".tar.xz")) (sha256 (base32 - "0p9wvva4g8hwj55x19rbyvnq2dbsnf65rphhxnpqs7ll54xlg6an")))) + "1r0ns1r6g03wji273nk3bhrkmj1s3g5640yicqan5g7iwh7g7n27")))) (build-system gnu-build-system) (outputs (list "out" "lib")) ; only libnghttp2 @@ -7495,44 +7505,42 @@ derivation by David Revoy from the original MonsterID by Andreas Gohr.") cunit python tzdata-for-tests)) (inputs ;; Required to build the tools (i.e. without ‘--enable-lib-only’). - `(("c-ares" ,c-ares) - ("jansson" ,jansson) ; for HPACK tools - ,@(if (hurd-target?) '() - `(("jemalloc" ,jemalloc))) ; fight nghttpd{,x} heap fragmentation - ("libev" ,libev) - ("libxml2" ,libxml2) ; for ‘nghttp -a’ - ("openssl" ,openssl) - ,@(if (hurd-target?) - `(("openssl-static" ,openssl "static")) - '()))) + (append + (if (hurd-target?) + `(,openssl "static") + (list jemalloc)) ; fight nghttpd{,x} heap fragmentation + (list c-ares + jansson ; for HPACK tools + libev + libxml2 ; for ‘nghttp -a’ + openssl))) (arguments - `(#:configure-flags - (list (string-append "--libdir=" (assoc-ref %outputs "lib") "/lib") - "--enable-app" ; build all the tools - "--enable-hpack-tools" ; ...all the tools - "--disable-examples" - "--disable-static" ; don't bother building .a files - ,@(if (%current-target-system) - '("--disable-python-bindings") - '())) - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'break-circular-reference - ;; libnghttp2.pc by default retains a reference to the ‘out’ output, - ;; which is not allowed. Break this cycle. While we could install - ;; only the library to ‘out’ and move everything else to a separate - ;; output, this would inconvenience the majority of (human) users. - (lambda* (#:key outputs #:allow-other-keys) - (substitute* "lib/libnghttp2.pc.in" - (("@prefix@") - (assoc-ref outputs "lib"))) - #t)) - (add-before 'check 'set-timezone-directory - (lambda* (#:key inputs native-inputs #:allow-other-keys) - (setenv "TZDIR" (string-append - (assoc-ref (or native-inputs inputs) "tzdata") - "/share/zoneinfo")) - #t))))) + (list + #:configure-flags + #~(list (string-append "--libdir=" #$output:lib "/lib") + "--enable-app" ; build all the tools + "--enable-hpack-tools" ; ...all the tools + "--disable-examples" + "--disable-static" ; don't bother building .a files + #$@(if (%current-target-system) + '("--disable-python-bindings") + '())) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'break-circular-reference + ;; libnghttp2.pc by default retains a reference to the ‘out’ output, + ;; which is not allowed. Break this cycle. While we could install + ;; only the library to ‘out’ and move everything else to a separate + ;; output, this would inconvenience the majority of (human) users. + (lambda _ + (substitute* "lib/libnghttp2.pc.in" + (("@prefix@") + #$output:lib)))) + (add-before 'check 'set-timezone-directory + (lambda* (#:key inputs native-inputs #:allow-other-keys) + (setenv "TZDIR" (search-input-directory + (or native-inputs inputs) + "share/zoneinfo"))))))) (home-page "https://nghttp2.org/") (synopsis "HTTP/2 protocol client, proxy, server, and library") (description diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm index 8fef7de77b..9703f76031 100644 --- a/gnu/packages/wm.scm +++ b/gnu/packages/wm.scm @@ -45,7 +45,7 @@ ;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com> ;;; Copyright © 2021 qblade <qblade@protonmail.com> ;;; Copyright © 2021 lasnesne <lasnesne@lagunposprasihopre.org> -;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com> +;;; Copyright © 2021, 2022 Petr Hodina <phodina@protonmail.com> ;;; Copyright © 2021 jgart <jgart@dismail.de> ;;; Copyright © 2021 Disseminate Dissent <disseminatedissent@protonmail.com> ;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com> @@ -1395,7 +1395,7 @@ project derived from the original Calm Window Manager.") (define-public dwl (package (name "dwl") - (version "0.2.1") + (version "0.3.1") (source (origin (method git-fetch) (uri (git-reference @@ -1404,7 +1404,7 @@ project derived from the original Calm Window Manager.") (file-name (git-file-name name version)) (sha256 (base32 - "0js8xjc2rx1ml6s58s90jrak5n7vh3kj5na2j4yy3qy0cb501xcm")))) + "0952kajc60ijy6qz14y6s5n7dyyf14ndzrhs4ynxj97k76742z2l")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no tests @@ -1524,16 +1524,16 @@ functionality to display information about the most commonly used services.") (define-public wlroots (package (name "wlroots") - (version "0.14.1") + (version "0.15.1") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/swaywm/wlroots") + (url "https://gitlab.freedesktop.org/wlroots/wlroots") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1sshp3lvlkl1i670kxhwsb4xzxl8raz6769kqvgmxzcb63ns9ay1")))) + (base32 "00s73nhi3sc48l426jdlqwpclg41kx1hv0yk4yxhbzw19gqpfm1h")))) (build-system meson-build-system) (arguments `(#:phases @@ -1570,7 +1570,7 @@ modules for building a Wayland compositor.") (define-public sway (package (name "sway") - (version "1.6.1") + (version "1.7") (source (origin (method git-fetch) @@ -1579,7 +1579,7 @@ modules for building a Wayland compositor.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0j4sdbsrlvky1agacc0pcz9bwmaxjmrapjnzscbd2i0cria2fc5j")))) + (base32 "0ss3l258blyf2d0lwd7pi7ga1fxfj8pxhag058k7cmjhs3y30y5l")))) (build-system meson-build-system) (arguments `(;; elogind is propagated by wlroots -> libseat @@ -2514,7 +2514,7 @@ shows a notification for the user on the screen.") (define-public cagebreak (package (name "cagebreak") - (version "1.8.0") + (version "1.8.3") (source (origin (method git-fetch) (uri (git-reference @@ -2523,13 +2523,18 @@ shows a notification for the user on the screen.") (file-name (git-file-name name version)) (sha256 (base32 - "0296mnzk7qd0zvnhw716jvpp7madjsar373ixx4qcff0m0jwfrxm")))) + "0vm97ak0589v39m3fljf1qhy92dqgiqcrrfp757gg7q58qwa6dkf")))) (build-system meson-build-system) - (arguments '(#:configure-flags '("-Dxwayland=true"))) - (native-inputs - (list pandoc pkg-config)) - (inputs - (list libevdev pango wlroots)) + (arguments + `(#:configure-flags '("-Dxwayland=true") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-data-dir + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "meson.build" + (("/etc/") (string-append (assoc-ref outputs "out") "/etc")))))))) + (native-inputs (list pandoc pkg-config)) + (inputs (list libevdev pango wlroots)) (home-page "https://github.com/project-repo/cagebreak") (synopsis "Tiling wayland compositor inspired by ratpoison") (description @@ -2566,26 +2571,26 @@ read and write, and compatible with JSON.") (define-public hikari (package (name "hikari") - (version "2.3.2") + (version "2.3.3") (source (origin (method url-fetch) (uri (string-append "https://hikari.acmelabs.space/releases/" "hikari-" version ".tar.gz")) (sha256 - (base32 "1jvy21irh6s7czff2hk63spswqibjcjhrpsgmrki5bii9ddi73wy")))) + (base32 "1qjd9dhpmv75idf6jjzwff8wgliad4d0af8pih9526p14vrnyws0")))) (build-system gnu-build-system) (native-inputs (list bmake pkg-config wayland-protocols)) (inputs - `(("cairo" ,cairo) - ("libinput" ,libinput-minimal) - ("libucl" ,libucl) - ("libxkbcommon" ,libxkbcommon) - ("pam" ,linux-pam) - ("pango" ,pango) - ("wayland" ,wayland) - ("wlroots" ,wlroots))) + (list cairo + libinput-minimal + libucl + libxkbcommon + linux-pam + pango + wayland + wlroots)) (arguments `(#:tests? #f ; no tests #:make-flags diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm index d345bc461d..ac08769c7e 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.111") (source (origin (method url-fetch) (uri (string-append @@ -656,24 +656,24 @@ rasterisation.") version ".tar.xz")) (sha256 (base32 - "127qf1rzhaf13vdd75a58v5q34617hvangjlfnlkcdh37gqcwm65")))) + "1adjg96mz0ghjzsgp9hrdr622shrvqmjcz5sxksfcka2fx7idmqs")))) (build-system meson-build-system) (arguments - `(#:configure-flags - '(,@(match (%current-system) + (list #:configure-flags + (match (%current-system) ((or "armhf-linux" "aarch64-linux") - '("-Dexynos=true" - "-Domap=true" - "-Detnaviv=true" - "-Dtegra=true" - "-Dfreedreno-kgsl=true")) - (_ '()))) - - #:phases (modify-phases %standard-phases - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (invoke "meson" "test" "--timeout-multiplier" "5"))))))) + #~(list "-Dexynos=true" + "-Domap=true" + "-Detnaviv=true" + "-Dtegra=true" + "-Dfreedreno-kgsl=true")) + (_ ''())) + #:phases + #~(modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (invoke "meson" "test" "--timeout-multiplier" "5"))))))) (propagated-inputs (list libpciaccess)) (native-inputs diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm index 0ae51d2e2b..5ce2b140a7 100644 --- a/gnu/packages/xml.scm +++ b/gnu/packages/xml.scm @@ -13,7 +13,7 @@ ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; Copyright © 2016–2022 Tobias Geerinckx-Rice <me@tobias.gr> -;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Marius Bakke <marius@gnu.org> +;;; Copyright © 2016-2022 Marius Bakke <marius@gnu.org> ;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com> ;;; Copyright © 2017 Gregor Giesen <giesen@zaehlwerk.net> ;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com> @@ -121,8 +121,7 @@ the entire document.") (define-public expat (package (name "expat") - (version "2.4.1") - (replacement expat/fixed) + (version "2.4.8") (source (let ((dot->underscore (lambda (c) (if (char=? #\. c) #\_ c)))) (origin (method url-fetch) @@ -134,7 +133,7 @@ the entire document.") "/expat-" version ".tar.xz"))) (sha256 (base32 - "0spvyb9d3hijs4ys3x64cfmilsynl8kv6clfahv8d4lvp86js0yg"))))) + "09dgviwz939pms4v1syl68p5pia9hb7xxsmg406kx7kl9f88z6zp"))))) (build-system gnu-build-system) (arguments '(#:phases (modify-phases %standard-phases @@ -158,23 +157,6 @@ stream-oriented parser in which an application registers handlers for things the parser might find in the XML document (like start tags).") (license license:expat))) -(define expat/fixed - (package - (inherit expat) - (version "2.4.7") - (source (let ((dot->underscore (lambda (c) (if (char=? #\. c) #\_ c)))) - (origin - (method url-fetch) - (uri (list (string-append "mirror://sourceforge/expat/expat/" - version "/expat-" version ".tar.xz") - (string-append - "https://github.com/libexpat/libexpat/releases/download/R_" - (string-map dot->underscore version) - "/expat-" version ".tar.xz"))) - (sha256 - (base32 - "0zbss0dssn17mjmvk17qfi5cmvm0lcyzs62cwvqr219hhl864xcq"))))))) - (define-public libebml (package (name "libebml") @@ -202,17 +184,15 @@ hierarchical form with variable field lengths.") (define-public libxml2 (package (name "libxml2") - (version "2.9.12") + (version "2.9.14") (source (origin (method url-fetch) - (uri (string-append "ftp://xmlsoft.org/libxml2/libxml2-" - version ".tar.gz")) + (uri (string-append "https://download.gnome.org/sources/libxml2/" + (version-major+minor version)"/libxml2-" + version ".tar.xz")) (sha256 (base32 - "14hxwzmf5xqppx77z7i0ni9lpzg1a84dqpf8j8l1fvy570g6imn8")) - (patches (search-patches "libxml2-parent-pointers.patch" - "libxml2-terminating-newline.patch" - "libxml2-xpath-recursion-limit.patch")))) + "1vnzk33wfms348lgz9pvkq9li7jm44pvm73lbr3w1khwgljlmmv0")))) (build-system gnu-build-system) (outputs '("out" "static" "doc")) (arguments @@ -228,7 +208,7 @@ hierarchical form with variable field lengths.") (for-each (lambda (dir) (rename-file (string-append src "/share/" dir) (string-append doc "/" dir))) - '("doc" "gtk-doc")) + '("gtk-doc")) (for-each (lambda (ar) (rename-file ar (string-append dst "/" (basename ar)))) @@ -348,14 +328,15 @@ formulas and hyperlinks to multiple worksheets in an Excel 2007+ XLSX file.") (define-public libxslt (package (name "libxslt") - (version "1.1.34") + (version "1.1.35") (source (origin (method url-fetch) - (uri (string-append "ftp://xmlsoft.org/libxslt/libxslt-" - version ".tar.gz")) + (uri (string-append "https://download.gnome.org/sources" + "/libxslt/" (version-major+minor version) + "/libxslt-" version ".tar.xz")) (sha256 (base32 - "0zrzz6kjdyavspzik6fbkpvfpbd25r2qg6py5nnjaabrsr3bvccq")) + "0yfx6hgwx4qcq7mrxb7ywabhpl64qj5h2idab746lb47k8zg6iw2")) (patches (search-patches "libxslt-generated-ids.patch")))) (build-system gnu-build-system) (arguments @@ -367,14 +348,20 @@ formulas and hyperlinks to multiple worksheets in an Excel 2007+ XLSX file.") (substitute* "tests/Makefile" (("exslt plugins fuzz") "exslt plugins")) - #t))))) + ;; Also disable Python tests since they require + ;; python-libxml2 which would introduce a + ;; circular dependency. + (substitute* "python/Makefile" + (("cd tests && \\$\\(MAKE\\) tests") + "$(info Python tests are disabled by Guix.)"))))))) (home-page "http://xmlsoft.org/XSLT/index.html") (synopsis "C library for applying XSLT stylesheets to XML documents") - (inputs `(("libgcrypt" ,libgcrypt) - ("libxml2" ,libxml2) - ("python" ,python-minimal-wrapper) - ("zlib" ,zlib) - ("xz" ,xz))) + (inputs + (list libgcrypt + libxml2 + python-minimal-wrapper + zlib + xz)) (native-inputs (list pkg-config)) (description diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm index 4ad8f07c09..15ac34959c 100644 --- a/gnu/packages/xorg.scm +++ b/gnu/packages/xorg.scm @@ -11,7 +11,7 @@ ;;; Copyright © 2016 Alex Kost <alezost@gmail.com> ;;; Copyright © 2016 David Craven <david@craven.ch> ;;; Copyright © 2016, 2017 John Darrington <jmd@gnu.org> -;;; Copyright © 2017, 2018, 2019, 2020, 2021 Marius Bakke <marius@gnu.org> +;;; Copyright © 2017-2022 Marius Bakke <marius@gnu.org> ;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com> ;;; Copyright © 2017, 2020 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2018–2022 Tobias Geerinckx-Rice <me@tobias.gr> @@ -243,14 +243,14 @@ which can be read by any architecture.") (define-public xorgproto (package (name "xorgproto") - (version "2021.5") + (version "2022.1") (source (origin (method url-fetch) - (uri (string-append "ftp://ftp.freedesktop.org/pub/xorg//individual/proto/" - "xorgproto-" version ".tar.bz2")) + (uri (string-append "mirror://xorg/individual/proto" + "/xorgproto-" version ".tar.bz2")) (sha256 (base32 - "05d0kib351qmnlfimaznaw0220fr0ym7fx2gn9h2jqxxilxncbxa")))) + "19n2ig296x89yhyjc2mcrm4m2wp8sfh9i38z3qn4s8rzjrkcqb8x")))) (build-system gnu-build-system) (propagated-inputs ;; To get util-macros in (almost?) all package inputs. @@ -1330,7 +1330,7 @@ with the Cygwin XWin server when running X11 in a rootless mode.") (define-public libxft (package (name "libxft") - (version "2.3.3") + (version "2.3.4") (source (origin (method url-fetch) @@ -1340,15 +1340,15 @@ with the Cygwin XWin server when running X11 in a rootless mode.") ".tar.bz2")) (sha256 (base32 - "05lja9s54090xwh31r0bqms4v3pimng5xr09g2rdnafx2vk6hp12")))) + "1pdbr6gzfvixc791pjf42i9gg8wvfq6cpq6sdca04h4i42mxmpjp")))) (build-system gnu-build-system) (arguments '(#:configure-flags '("--disable-static"))) (propagated-inputs ;; xft.pc refers to all these. - `(("libxrender" ,libxrender) - ("freetype" ,freetype) - ("fontconfig" ,fontconfig))) + (list libxrender + freetype + fontconfig)) (inputs (list libx11 xorgproto)) (native-inputs @@ -2099,7 +2099,7 @@ emulate a TI-30 or an HP-10C.") (define-public xcb-proto (package (name "xcb-proto") - (version "1.14") + (version "1.15.2") (source (origin (method url-fetch) @@ -2108,17 +2108,10 @@ emulate a TI-30 or an HP-10C.") version ".tar.xz")) (sha256 (base32 - "01d62r286yfc3rpz714nqdgkl0wk9j0wqkd4ylas1d7r4vmkqshq")) - (modules '((guix build utils))) - (snippet - '(begin - ;; fractions.gcd has been deprecated since python-3.5. - (substitute* "xcbgen/align.py" - (("from fractions import gcd") "from math import gcd")) - #t)))) + "1vak6q53abwxnkfn6by7j24m48kd2iy7jnskkqzzx8l0ysqvwwkh")))) (build-system gnu-build-system) (native-inputs - `(("pkg-config" ,pkg-config) ("python" ,python-minimal-wrapper))) + (list pkg-config python-minimal-wrapper)) (home-page "https://xcb.freedesktop.org/") (synopsis "XML-XCB protocol descriptions") (description @@ -3992,10 +3985,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 @@ -5122,17 +5112,15 @@ new API's in libXft, or the legacy API's in libX11.") (define-public libxvmc (package (name "libxvmc") - (version "1.0.12") + (version "1.0.13") (source - (origin - (method url-fetch) - (uri (string-append - "mirror://xorg/individual/lib/libXvMC-" - version - ".tar.bz2")) - (sha256 - (base32 - "1kbdjsvkm5l7axv7g477qj18sab2wnqhliy6197syzizgfbsfgbb")))) + (origin + (method url-fetch) + (uri (string-append "mirror://xorg/individual/lib/libXvMC-" + version ".tar.xz")) + (sha256 + (base32 + "0z35xqna3dnrfxgn9aa1y6jx7mrwsn8vi8dcwm3sg23qx9nvx7ha")))) (build-system gnu-build-system) (arguments `(#:configure-flags '(,@(malloc0-flags) "--disable-static"))) @@ -5183,7 +5171,7 @@ protocol.") (define-public libxcb (package (name "libxcb") - (version "1.14") + (version "1.15") (source (origin (method url-fetch) @@ -5191,7 +5179,7 @@ protocol.") "libxcb-" version ".tar.xz")) (sha256 (base32 - "0d2chjgyn5lr9sfhacfvqgnj9l9faz11vn322a06jd6lk3dxcpm5")))) + "0nd035rf83xf531cnjzsf9ykb5w9rdzz6bbyhi683xkwh57p8f6c")))) (build-system gnu-build-system) (outputs '("out" "doc")) ;5.5 MiB of man pages (propagated-inputs @@ -5199,8 +5187,7 @@ protocol.") (inputs (list xcb-proto libxslt)) (native-inputs - `(("pkg-config" ,pkg-config) - ("python" ,python-minimal-wrapper))) + (list pkg-config python-minimal-wrapper)) (arguments `(#:configure-flags (list "--enable-xkb" "--disable-static" @@ -5546,7 +5533,7 @@ Wayland.") (define-public libx11 (package (name "libx11") - (version "1.7.3.1") + (version "1.8.1") (source (origin (method url-fetch) @@ -5554,7 +5541,7 @@ Wayland.") "/individual/lib/libX11-" version ".tar.xz")) (sha256 (base32 - "1289nvs52q9fnp7zl30bdpbvqggnjjb39vy0zll511zvcrr43z9g")))) + "1xyry8i7zqmlkvpbyyqwi18rrdw6ycczlvfp63rh2570pfhimi0v")))) (build-system gnu-build-system) (outputs '("out" "doc")) ;8 MiB of man pages + XML @@ -5581,17 +5568,15 @@ Wayland.") (define-public libxcursor (package (name "libxcursor") - (version "1.2.0") + (version "1.2.1") (source (origin (method url-fetch) - (uri (string-append - "mirror://xorg/individual/lib/libXcursor-" - version - ".tar.bz2")) + (uri (string-append "mirror://xorg/individual/lib/libXcursor-" + version ".tar.xz")) (sha256 (base32 - "10l7c9fm0jmpkm9ab9dz8r6m1pr87vvgqjnbx1psz50h4pwfklrs")))) + "011195an3w4xld3x0dr534kar1xjf52q96hmf0hgvfhh2rrl7ha6")))) (build-system gnu-build-system) (arguments '(#:configure-flags '("--disable-static"))) diff --git a/gnu/services/cups.scm b/gnu/services/cups.scm index 2e86845e51..8543c51b0d 100644 --- a/gnu/services/cups.scm +++ b/gnu/services/cups.scm @@ -99,6 +99,15 @@ (define (serialize-comma-separated-string-list field-name val) (serialize-field field-name (string-join val ","))) +;; A special case of the above, where we don't want to emit anything at all +;; when #f, to allow CUPS to pick a default we cannot compute ourselves. +;; XXX Ideally, this could be a generic higher-order function, but it's used +;; only once so far: for ready-paper-sizes to handle "Auto" default-paper-size. +(define (comma-separated-string-list-or-#f? val) + (if val (comma-separated-string-list? val) #t)) +(define (serialize-comma-separated-string-list-or-#f field-name val) + (if val (serialize-field field-name (string-join val ",")) #f)) + (define (space-separated-string-list? val) (and (list? val) (and-map (lambda (x) @@ -143,7 +152,7 @@ (define-enumerated-field-type browse-local-protocols (all dnssd none)) (define-enumerated-field-type default-auth-type - (Basic Negotiate)) + (Basic)) (define-enumerated-field-type default-encryption (Never IfRequested Required)) (define-enumerated-field-type error-policy @@ -514,10 +523,10 @@ requests.") "Specifies whether to purge job history data automatically when it is no longer required for quotas.") (browse-dns-sd-sub-types - (comma-separated-string-list (list "_cups")) + (comma-separated-string-list (list "_cups" "_print" "_universal")) "Specifies a list of DNS-SD sub-types to advertise for each shared printer. -For example, @samp{\"_cups\" \"_print\"} will tell network clients that both -CUPS sharing and IPP Everywhere are supported.") +The default @samp{(list \"_cups\" \"_print\" \"_universal\")} tells clients +that CUPS sharing, IPP Everywhere, AirPrint, and Mopria are supported.") (browse-local-protocols (browse-local-protocols 'dnssd) "Specifies which protocols to use for local printer sharing.") @@ -527,16 +536,6 @@ CUPS sharing and IPP Everywhere are supported.") (browsing? (boolean #f) "Specifies whether shared printers are advertised.") - (classification - (string "") - "Specifies the security classification of the server. -Any valid banner name can be used, including \"classified\", \"confidential\", -\"secret\", \"topsecret\", and \"unclassified\", or the banner can be omitted -to disable secure printing functions.") - (classify-override? - (boolean #f) - "Specifies whether users may override the classification (cover page) of -individual print jobs using the @code{job-sheets} option.") (default-auth-type (default-auth-type 'Basic) "Specifies the default type of authentication to use.") @@ -583,10 +582,6 @@ the scheduler to printing a single job at any time.") "Specifies the scheduling priority of filters that are run to print a job. The nice value ranges from 0, the highest priority, to 19, the lowest priority.") - ;; Add this option if the package is built with Kerberos support. - ;; (gss-service-name - ;; (string "http") - ;; "Specifies the service name when using Kerberos authentication.") (host-name-lookups (host-name-lookups #f) "Specifies whether to do reverse lookups on connecting clients. @@ -595,7 +590,7 @@ resolved from the address matches one of the addresses returned for that hostname. Double lookups also prevent clients with unregistered addresses from connecting to your server. Only set this option to @code{#t} or @code{double} if absolutely required.") - ;; Add this option if the package is built with launchd/systemd support. + ;; Add this option if the package is built with socket activation support. ;; (idle-exit-timeout ;; (non-negative-integer 60) ;; "Specifies the length of time to wait before shutting down due to @@ -630,13 +625,6 @@ address enclosed in brackets, an IPv4 address, or @code{*} to indicate all addresses. Values can also be file names of local UNIX domain sockets. The Listen directive is similar to the Port directive but allows you to restrict access to specific interfaces or networks.") - (listen-back-log - (non-negative-integer 128) - "Specifies the number of pending connections that will be allowed. This -normally only affects very busy servers that have reached the MaxClients -limit, but can also be triggered by large numbers of simultaneous connections. -When the limit is reached, the operating system will refuse additional -connections until the scheduler can accept the pending ones.") (location-access-controls (location-access-control-list (list (location-access-control @@ -695,7 +683,7 @@ printer. A value of 0 allows up to MaxJobs jobs per printer.") (max-jobs-per-user (non-negative-integer 0) "Specifies the maximum number of simultaneous jobs that are allowed per -user. A value of 0 allows up to MaxJobs jobs per user.") +user. A value of 0 allows up to @code{max-jobs} jobs per user.") (max-job-time (non-negative-integer 10800) "Specifies the maximum time a job may take to print before it is canceled, @@ -704,39 +692,29 @@ in seconds. Set to 0 to disable cancellation of \"stuck\" jobs.") (non-negative-integer 1048576) "Specifies the maximum size of the log files before they are rotated, in bytes. The value 0 disables log rotation.") + (max-subscriptions + (non-negative-integer 100) + "Specifies the maximum number of simultaneous event subscriptions that are +allowed. Set to @samp{0} to allow an unlimited number of subscriptions.") + (max-subscriptions-per-job + (non-negative-integer 0) + "Specifies the maximum number of simultaneous event subscriptions that are +allowed per job. A value of @samp{0} allows up to @code{max-subscriptions} +per job.") + (max-subscriptions-per-printer + (non-negative-integer 0) + "Specifies the maximum number of simultaneous event subscriptions that are +allowed per printer. A value of @samp{0} allows up to @code{max-subscriptions} +per printer.") + (max-subscriptions-per-user + (non-negative-integer 0) + "Specifies the maximum number of simultaneous event subscriptions that are +allowed per user. A value of @samp{0} allows up to @code{max-subscriptions} +per user.") (multiple-operation-timeout (non-negative-integer 900) "Specifies the maximum amount of time to allow between files in a multiple file print job, in seconds.") - (page-log-format - (string "") - "Specifies the format of PageLog lines. Sequences beginning with -percent (@samp{%}) characters are replaced with the corresponding information, -while all other characters are copied literally. The following percent -sequences are recognized: - -@table @samp -@item %% -insert a single percent character -@item %@{name@} -insert the value of the specified IPP attribute -@item %C -insert the number of copies for the current page -@item %P -insert the current page number -@item %T -insert the current date and time in common log format -@item %j -insert the job ID -@item %p -insert the printer name -@item %u -insert the username -@end table - -A value of the empty string disables page logging. The string @code{%p %u %j -%T %P %C %@{job-billing@} %@{job-originating-host-name@} %@{job-name@} -%@{media@} %@{sides@}} creates a page log with the standard items.") (environment-variables (environment-variables '()) "Passes the specified environment variable(s) to child processes; a list of @@ -794,13 +772,18 @@ indefinitely.") If a numeric value is specified, the job history is preserved for the indicated number of seconds after printing. If @code{#t}, the job history is preserved until the MaxJobs limit is reached.") + (ready-paper-sizes + (comma-separated-string-list-or-#f #f) + "Specifies a list of potential paper sizes that are reported as ready, +that is: loaded. The actual list will contain only the sizes that each +printer supports. If @code{#f}, CUPS will assume +@samp{(list \"Letter\" \"Legal\" \"Tabloid\" \"4x6\" \"Env10\")} +if the default paper size is \"Letter\", and +@samp{(list \"A3\" \"A4\" \"A5\" \"A6\" \"EnvDL\")} otherwise.") (reload-timeout (non-negative-integer 30) "Specifies the amount of time to wait for job completion before restarting the scheduler.") - (rip-cache - (string "128m") - "Specifies the maximum amount of memory to use when converting documents into bitmaps for a printer.") (server-admin (string "root@localhost.localdomain") "Specifies the email address of the server administrator.") diff --git a/gnu/services/security-token.scm b/gnu/services/security-token.scm index 52afad84a6..2356273398 100644 --- a/gnu/services/security-token.scm +++ b/gnu/services/security-token.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net> +;;; Copyright © 2018, 2022 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re> ;;; @@ -74,12 +74,7 @@ '((guix build utils))) #~(begin (use-modules (guix build utils)) - ;; XXX: We can't use (guix utils) because it requires a - ;; dynamically-linked Guile, hence the duplicate switch-symlinks. - (define (switch-symlinks link target) - (let ((pivot (string-append link ".new"))) - (symlink target pivot) - (rename-file pivot link))) + (mkdir-p "/var/lib") (switch-symlinks "/var/lib/pcsc" #$(directory-union diff --git a/gnu/system/pam.scm b/gnu/system/pam.scm index 2574e019f1..b635681642 100644 --- a/gnu/system/pam.scm +++ b/gnu/system/pam.scm @@ -21,6 +21,7 @@ #:use-module (guix derivations) #:use-module (guix gexp) #:use-module (gnu services) + #:use-module (gnu system setuid) #:use-module (ice-9 match) #:use-module (srfi srfi-1) #:use-module (srfi srfi-9) @@ -375,8 +376,13 @@ strings or string-valued gexps." (define pam-root-service-type (service-type (name 'pam) - (extensions (list (service-extension etc-service-type - /etc-entry))) + (extensions + (list (service-extension + setuid-program-service-type + (lambda (_) + (list (file-like->setuid-program + (file-append linux-pam "/sbin/unix_chkpwd"))))) + (service-extension etc-service-type /etc-entry))) ;; Arguments include <pam-service> as well as procedures. (compose concatenate) diff --git a/guix/build-system/font.scm b/guix/build-system/font.scm index 74dc80b5db..c43fb9a542 100644 --- a/guix/build-system/font.scm +++ b/guix/build-system/font.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net> +;;; Copyright © 2017, 2022 Arun Isaac <arunisaac@systemreboot.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -54,20 +54,20 @@ (bag (name name) (system system) - (host-inputs `(,@(if source - `(("source" ,source)) - '()) - ,@inputs - ,(list "tar" (module-ref (resolve-interface '(gnu packages base)) 'tar)) - ,@(let ((compression (resolve-interface '(gnu packages compression)))) - (map (match-lambda - ((name package) - (list name (module-ref compression package)))) - `(("gzip" gzip) - ("bzip2" bzip2) - ("unzip" unzip) - ("xz" xz)))))) - (build-inputs native-inputs) + (host-inputs inputs) + (build-inputs `(,@(if source + `(("source" ,source)) + '()) + ,@native-inputs + ,(list "tar" (module-ref (resolve-interface '(gnu packages base)) 'tar)) + ,@(let ((compression (resolve-interface '(gnu packages compression)))) + (map (match-lambda + ((name package) + (list name (module-ref compression package)))) + `(("gzip" gzip) + ("bzip2" bzip2) + ("unzip" unzip) + ("xz" xz)))))) (outputs outputs) (build font-build) (arguments (strip-keyword-arguments private-keywords arguments)))) diff --git a/guix/build-system/mozilla.scm b/guix/build-system/mozilla.scm new file mode 100644 index 0000000000..b4141c8177 --- /dev/null +++ b/guix/build-system/mozilla.scm @@ -0,0 +1,52 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (guix build-system mozilla) + #:use-module (guix build-system gnu) + #:use-module (guix build-system) + #:use-module (guix utils) + #:export (mozilla-build-system)) + +;; +;; Build procedure for packages using Autotools with the Mozillian conventions +;; for --target, --host and --build, which are different from the GNU +;; conventions. +;; +;; Code: + +(define* (lower-mozilla name #:key system target #:allow-other-keys + #:rest arguments) + (define lower (build-system-lower gnu-build-system)) + (if target + (apply lower + (substitute-keyword-arguments arguments + ;; Override --target and --host to what Mozillian configure + ;; scripts expect. + ((#:configure-flags configure-flags ''()) + `(cons* ,(string-append "--target=" target) + ,(string-append "--host=" (nix-system->gnu-triplet system)) + ,configure-flags)))) + (apply lower name arguments))) ; not cross-compiling + +(define mozilla-build-system + (build-system + (name 'mozilla) + (description "The build system for Mozilla software using the Autotools") + (lower lower-mozilla))) + +;;; mozilla.scm ends here diff --git a/guix/build/font-build-system.scm b/guix/build/font-build-system.scm index 6726595fe1..e4784bc17d 100644 --- a/guix/build/font-build-system.scm +++ b/guix/build/font-build-system.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net> +;;; Copyright © 2017, 2022 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2017 Alex Griffin <a@ajgrf.com> ;;; ;;; This file is part of GNU Guix. @@ -41,8 +41,7 @@ archive, or a font file." (begin (mkdir "source") (chdir "source") - (copy-file source (strip-store-file-name source)) - #t) + (copy-file source (strip-store-file-name source))) (gnu:unpack #:source source))) (define* (install #:key outputs #:allow-other-keys) @@ -54,7 +53,8 @@ archive, or a font file." (find-files source "\\.(ttf|ttc)$")) (for-each (cut install-file <> (string-append fonts "/opentype")) (find-files source "\\.(otf|otc)$")) - #t)) + (for-each (cut install-file <> (string-append fonts "/web")) + (find-files source "\\.(woff|woff2)$")))) (define %standard-phases (modify-phases gnu:%standard-phases diff --git a/guix/build/gnu-bootstrap.scm b/guix/build/gnu-bootstrap.scm index 1cb9dc5512..b4257a3717 100644 --- a/guix/build/gnu-bootstrap.scm +++ b/guix/build/gnu-bootstrap.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2020 Timothy Sample <samplet@ngyro.com> +;;; Copyright © 2020, 2022 Timothy Sample <samplet@ngyro.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -25,17 +25,18 @@ (define-module (guix build gnu-bootstrap) #:use-module (guix build utils) + #:use-module (srfi srfi-1) #:use-module (system base compile) #:export (bootstrap-configure bootstrap-build bootstrap-install)) -(define (bootstrap-configure version modules scripts) +(define (bootstrap-configure name version modules scripts) "Create a procedure that configures an early bootstrap package. The -procedure will search the MODULES directory and configure all of the -'.in' files with VERSION. It will then search the SCRIPTS directory and -configure all of the '.in' files with the bootstrap Guile and its module -and object directories." +procedure will search each directory in MODULES and configure all of the +'.in' files with NAME and VERSION. It will then search the SCRIPTS +directory and configure all of the '.in' files with the bootstrap +Guile and its module and object directories." (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (guile-dir (assoc-ref inputs "guile")) @@ -50,10 +51,10 @@ and object directories." (let ((target (string-drop-right template 3))) (copy-file template target) (substitute* target + (("@PACKAGE_NAME@") name) (("@VERSION@") version)))) - (find-files modules - (lambda (fn st) - (string-suffix? ".in" fn)))) + (append-map (lambda (dir) (find-files dir "\\.in$")) + modules)) (for-each (lambda (template) (format #t "Configuring ~a~%" template) (let ((target (string-drop-right template 3))) @@ -70,7 +71,7 @@ and object directories." (define (bootstrap-build modules) "Create a procedure that builds an early bootstrap package. The -procedure will search the MODULES directory and compile all of the +procedure will search each directory in MODULES and compile all of the '.scm' files." (lambda _ (add-to-load-path (getcwd)) @@ -80,13 +81,15 @@ procedure will search the MODULES directory and compile all of the (dir (dirname scm))) (format #t "Compiling ~a~%" scm) (compile-file scm #:output-file go))) - (find-files modules "\\.scm$")) + (append-map (lambda (dir) (find-files dir "\\.scm$")) + modules)) #t)) (define (bootstrap-install modules scripts) "Create a procedure that installs an early bootstrap package. The -procedure will install all of the '.scm' and '.go' files in the MODULES -directory, and all the executable files in the SCRIPTS directory." +procedure will install all of the '.scm' and '.go' files in each of the +directories in MODULES, and all the executable files in the SCRIPTS +directory." (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (guile-dir (assoc-ref inputs "guile")) @@ -104,7 +107,8 @@ directory, and all the executable files in the SCRIPTS directory." (install-file scm (string-append moddir "/" dir)) (format #t "Installing ~a~%" go) (install-file go (string-append godir "/" dir)))) - (find-files modules "\\.scm$")) + (append-map (lambda (dir) (find-files dir "\\.scm$")) + modules)) (for-each (lambda (script) (format #t "Installing ~a~%" script) (install-file script (string-append out "/bin"))) diff --git a/guix/build/minetest-build-system.scm b/guix/build/minetest-build-system.scm index 5f68686067..4a7a87ab83 100644 --- a/guix/build/minetest-build-system.scm +++ b/guix/build/minetest-build-system.scm @@ -91,15 +91,6 @@ If it is unknown, make an educated guess." #:install-plan (mod-install-plan (apply guess-mod-name arguments)) arguments)) -(define %png-magic-bytes - ;; Magic bytes of PNG images, see ‘5.2 PNG signatures’ in - ;; ‘Portable Network Graphics (PNG) Specification (Second Edition)’ - ;; on <https://www.w3.org/TR/PNG/>. - #vu8(137 80 78 71 13 10 26 10)) - -(define png-file? - ((@@ (guix build utils) file-header-match) %png-magic-bytes)) - (define* (minimise-png #:key inputs native-inputs #:allow-other-keys) "Minimise PNG images found in the working directory." (define optipng (which "optipng")) diff --git a/guix/build/python-build-system.scm b/guix/build/python-build-system.scm index 08871f60cd..aa04664b25 100644 --- a/guix/build/python-build-system.scm +++ b/guix/build/python-build-system.scm @@ -68,7 +68,7 @@ ;; downloading the package source from PyPI (the Python Package Index). Both ;; of them import setuptools and execute the "setup.py" file under their ;; control. Thus the "setup.py" behaves as if the developer had imported -;; setuptools within setup.py - even is still using only distutils. +;; setuptools within setup.py - even if it is still using only distutils. ;; ;; Setuptools' "install" command (to be more precise: the "easy_install" ;; command which is called by "install") will put the path of the currently @@ -176,8 +176,8 @@ without errors." (define (site-packages inputs outputs) "Return the path of the current output's Python site-package." - (let* ((out (python-output outputs)) - (python (assoc-ref inputs "python"))) + (let ((out (python-output outputs)) + (python (assoc-ref inputs "python"))) (string-append out "/lib/python" (python-version python) "/site-packages"))) (define (add-installed-pythonpath inputs outputs) diff --git a/guix/build/qt-utils.scm b/guix/build/qt-utils.scm index fa018a93ac..b9c5a76f34 100644 --- a/guix/build/qt-utils.scm +++ b/guix/build/qt-utils.scm @@ -91,7 +91,7 @@ '("QTWEBENGINEPROCESS_PATH" = regular "/lib/qt5/libexec/QtWebEngineProcess")))) -(define* (wrap-qt-program* program #:key inputs output-dir +(define* (wrap-qt-program* program #:key sh inputs output-dir qt-wrap-excluded-inputs) (define input-directories @@ -106,9 +106,9 @@ (cons output-dir input-directories) output-dir))) (when (not (null? vars-to-wrap)) - (apply wrap-program program vars-to-wrap)))) + (apply wrap-program program #:sh sh vars-to-wrap)))) -(define* (wrap-qt-program program-name #:key inputs output +(define* (wrap-qt-program program-name #:key (sh (which "bash")) inputs output (qt-wrap-excluded-inputs %qt-wrap-excluded-inputs)) "Wrap the specified program (which must reside in the OUTPUT's \"/bin\" directory) with suitably set environment variables. @@ -116,10 +116,11 @@ directory) with suitably set environment variables. This is like qt-build-systems's phase \"qt-wrap\", but only the named program is wrapped." (wrap-qt-program* (string-append output "/bin/" program-name) + #:sh sh #:output-dir output #:inputs inputs #:qt-wrap-excluded-inputs qt-wrap-excluded-inputs)) -(define* (wrap-all-qt-programs #:key inputs outputs +(define* (wrap-all-qt-programs #:key (sh (which "bash")) inputs outputs (qt-wrap-excluded-outputs '()) (qt-wrap-excluded-inputs %qt-wrap-excluded-inputs) #:allow-other-keys) @@ -148,6 +149,7 @@ add a dependency of that output on Qt." ((output . output-dir) (unless (member output qt-wrap-excluded-outputs) (for-each (cut wrap-qt-program* <> + #:sh sh #:output-dir output-dir #:inputs inputs #:qt-wrap-excluded-inputs qt-wrap-excluded-inputs) (find-files-to-wrap output-dir)))))) diff --git a/guix/build/utils.scm b/guix/build/utils.scm index dd5a91f52f..5ea3b98353 100644 --- a/guix/build/utils.scm +++ b/guix/build/utils.scm @@ -3,11 +3,11 @@ ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org> ;;; Copyright © 2015, 2018, 2021 Mark H Weaver <mhw@netris.org> -;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net> +;;; Copyright © 2018, 2022 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> -;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> +;;; Copyright © 2021, 2022 Maxime Devos <maximedevos@telenet.be> ;;; Copyright © 2021 Brendan Tildesley <mail@brendan.scot> ;;; ;;; This file is part of GNU Guix. @@ -60,8 +60,11 @@ directory-exists? executable-file? symbolic-link? + switch-symlinks call-with-temporary-output-file call-with-ascii-input-file + file-header-match + png-file? elf-file? ar-file? gzip-file? @@ -238,6 +241,25 @@ introduce the version part." "Return #t if FILE is a symbolic link (aka. \"symlink\".)" (eq? (stat:type (lstat file)) 'symlink)) +(define (switch-symlinks link target) + "Atomically switch LINK, a symbolic link, to point to TARGET. Works +both when LINK already exists and when it does not." + (let ((pivot (string-append link ".new"))) + ;; Create pivot link, deleting it if it already exists. This can + ;; happen if a previous switch-symlinks was interrupted. + (let symlink/remove-old () + (catch 'system-error + (lambda () + (symlink target pivot)) + (lambda args + (if (= (system-error-errno args) EEXIST) + (begin + ;; Remove old link and retry. + (delete-file pivot) + (symlink/remove-old)) + (apply throw args))))) + (rename-file pivot link))) + (define (call-with-temporary-output-file proc) "Call PROC with a name of a temporary file and open output port to that file; close the file and delete it when leaving the dynamic extent of this @@ -291,6 +313,15 @@ with the bytes in HEADER, a bytevector." #f ;FILE is a directory (apply throw args)))))) +(define %png-magic-bytes + ;; Magic bytes of PNG images, see ‘5.2 PNG signatures’ in + ;; ‘Portable Network Graphics (PNG) Specification (Second Edition)’ + ;; on <https://www.w3.org/TR/PNG/>. + #vu8(137 80 78 71 13 10 26 10)) + +(define png-file? + (file-header-match %png-magic-bytes)) + (define %elf-magic-bytes ;; Magic bytes of ELF files. See <elf.h>. (u8-list->bytevector (map char->integer (string->list "\x7FELF")))) diff --git a/guix/lint.scm b/guix/lint.scm index 73581b518f..2b89f6a02a 100644 --- a/guix/lint.scm +++ b/guix/lint.scm @@ -585,7 +585,6 @@ or \"bash-minimal\" is not in its inputs. 'wrap-script' is not supported." (('wrap-program _ . _) (list (report-wrap-program-error package 'wrap-program))) ;; Wrapper of 'wrap-program' for Qt programs. - ;; TODO #:sh is not yet supported but probably will be. (('wrap-qt-program _ '#:sh . _) '()) (('wrap-qt-program _ . _) (list (report-wrap-program-error package 'wrap-qt-program))) diff --git a/guix/profiles.scm b/guix/profiles.scm index bf50c00a1e..d3ff8379ad 100644 --- a/guix/profiles.scm +++ b/guix/profiles.scm @@ -12,6 +12,7 @@ ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2020 Danny Milosavljevic <dannym@scratchpost.org> ;;; Copyright © 2014 David Thompson <davet@gnu.org> +;;; Copyright © 2022 Arun Isaac <arunisaac@systemreboot.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -32,7 +33,7 @@ #:use-module ((guix config) #:select (%state-directory)) #:use-module ((guix utils) #:hide (package-name->name+version)) #:use-module ((guix build utils) - #:select (package-name->name+version mkdir-p)) + #:select (package-name->name+version mkdir-p switch-symlinks)) #:use-module ((guix diagnostics) #:select (&fix-hint formatted-message)) #:use-module (guix i18n) #:use-module (guix records) diff --git a/guix/scripts/home.scm b/guix/scripts/home.scm index 0f5c3388a1..8ba7693a83 100644 --- a/guix/scripts/home.scm +++ b/guix/scripts/home.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2021 Pierre Langlois <pierre.langlois@gmx.com> ;;; Copyright © 2021 Oleg Pykhalov <go.wigust@gmail.com> ;;; Copyright © 2022 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2022 Arun Isaac <arunisaac@systemreboot.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -63,7 +64,7 @@ #:autoload (guix scripts home edit) (guix-home-edit) #:autoload (guix scripts home import) (import-manifest) #:use-module ((guix status) #:select (with-status-verbosity)) - #:use-module ((guix build utils) #:select (mkdir-p)) + #:use-module ((guix build utils) #:select (mkdir-p switch-symlinks)) #:use-module (guix gexp) #:use-module (guix monads) #:use-module (srfi srfi-1) diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index 99a6cfaa29..14a8e1f5e8 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -11,6 +11,7 @@ ;;; Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com> ;;; Copyright © 2018 Steve Sprang <scs@stevesprang.com> ;;; Copyright © 2022 Josselin Poiret <dev@jpoiret.xyz> +;;; Copyright © 2022 Arun Isaac <arunisaac@systemreboot.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -49,7 +50,7 @@ #:autoload (guix channels) (channel-name channel-commit channel->code) #:autoload (guix store roots) (gc-roots user-owned?) #:use-module ((guix build utils) - #:select (directory-exists? mkdir-p)) + #:select (directory-exists? mkdir-p switch-symlinks)) #:use-module (ice-9 format) #:use-module (ice-9 match) #:autoload (ice-9 pretty-print) (pretty-print) diff --git a/guix/scripts/system/reconfigure.scm b/guix/scripts/system/reconfigure.scm index 9ca66687ee..a173e011b4 100644 --- a/guix/scripts/system/reconfigure.scm +++ b/guix/scripts/system/reconfigure.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2019 Christopher Baines <mail@cbaines.net> ;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.org> +;;; Copyright © 2022 Arun Isaac <arunisaac@systemreboot.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -94,7 +95,8 @@ atomically, and run OS's activation script." #:select? not-config?) ((guix config) => ,(make-config.scm))) #~(begin - (use-modules (guix config) + (use-modules (guix build utils) + (guix config) (guix profiles) (guix utils)) diff --git a/guix/utils.scm b/guix/utils.scm index 745da98a79..ca4fecebc8 100644 --- a/guix/utils.scm +++ b/guix/utils.scm @@ -123,7 +123,6 @@ file-sans-extension tarball-sans-extension compressed-file? - switch-symlinks call-with-temporary-directory with-atomic-file-output @@ -901,13 +900,6 @@ VERSIONS. For example: (->bool (member (file-extension file) '("gz" "bz2" "xz" "lz" "lzma" "tgz" "tbz2" "zip")))) -(define (switch-symlinks link target) - "Atomically switch LINK, a symbolic link, to point to TARGET. Works -both when LINK already exists and when it does not." - (let ((pivot (string-append link ".new"))) - (symlink target pivot) - (rename-file pivot link))) - (define* (string-replace-substring str substr replacement #:optional (start 0) |