diff options
123 files changed, 5062 insertions, 2310 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index d10fbce3a4..3afdccac75 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -25184,7 +25184,80 @@ Binutils, libc, and the other packages mentioned above---the These bootstrap binaries are ``taken for granted'', though we can also re-create them if needed (more on that later). -@unnumberedsec Preparing to Use the Bootstrap Binaries +For @code{i686-linux} and @code{x86_64-linux} the Guix bootstrap process is +more elaborate, @pxref{Reduced Binary Seed Bootstrap}. + +@menu +* Reduced Binary Seed 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 + +Guix---like other GNU/Linux distributions---is traditionally bootstrapped from +a set of bootstrap binaries: Bourne shell, command-line tools provided by GNU +Coreutils, Awk, Findutils, `sed', and `grep' and Guile, GCC, Binutils, and the +GNU C Library (@pxref{Bootstrapping}). Usually, these bootstrap binaries are +``taken for granted.'' + +Taking these binaries for granted means that we consider them to be a correct +and trustworthy `seed' for building the complete system. Therein lies a +problem: the current combined size of these bootstrap binaries is 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 and a new set of +@c +packages@footnote{@c +nyacc-boot, +mes-boot, +tcc-boot0, +tcc-boot, +make-mesboot0, +diffutils-mesboot, +binutils-mesboot0, +gcc-core-mesboot, +mesboot-headers, +glibc-mesboot0, +gcc-mesboot0, +binutils-mesboot, +make-mesboot, +gcc-mesboot1, +gcc-mesboot1-wrapper, +glibc-headers-mesboot, +glibc-mesboot, +gcc-mesboot, +and +gcc-mesboot-wrapper. +} +@c +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 130MB. Work is ongoing to +reduce this further. If you are interested, join us on @code{#bootstrappable} +on the Freenode IRC network. + +@c ./pre-inst-env guix graph --type=bag -e '(begin (use-modules (guix packages)) (%current-system "i686-linux") (@@ (gnu packages commencement) gcc-mesboot))' > doc/images/gcc-mesboot-bag-graph.dot +@c dot -T png doc/images/gcc-mesboot-bag-graph.dot > doc/images/gcc-mesboot-bag-graph.png + +Below is the generated dependency graph for @code{gcc-mesboot}, the bootstrap +compiler used to build the rest of GuixSD. + +@image{images/gcc-mesboot-bag-graph,6in,,Dependency graph of the gcc-mesboot} + +@node Preparing to Use the Bootstrap Binaries +@section Preparing to Use the Bootstrap Binaries @c As of Emacs 24.3, Info-mode displays the image, but since it's a @c large image, it's hard to scroll. Oh well. @@ -25198,7 +25271,15 @@ packages bootstrap)} module. A similar figure can be generated with @example guix graph -t derivation \ -e '(@@@@ (gnu packages bootstrap) %bootstrap-gcc)' \ - | dot -Tps > t.ps + | dot -Tps > gcc.ps +@end example + +or, for the Reduced Binary Seed bootstrap + +@example +guix graph -t derivation \ + -e '(@@@@ (gnu packages bootstrap) %bootstrap-mes)' \ + | dot -Tps > mes.ps @end example At this level of detail, things are @@ -25230,10 +25311,10 @@ write them in an output directory with the right layout. This corresponds to the @code{#:modules} argument of @code{build-expression->derivation} (@pxref{Derivations}). -Finally, the various tarballs are unpacked by the -derivations @code{gcc-bootstrap-0.drv}, @code{glibc-bootstrap-0.drv}, -etc., at which point we have a working C tool chain. - +Finally, the various tarballs are unpacked by the derivations +@code{gcc-bootstrap-0.drv}, @code{glibc-bootstrap-0.drv}, or +@code{bootstrap-mes-0.drv} and @code{bootstrap-mescc-tools-0.drv}, at which +point we have a working C tool chain. @unnumberedsec Building the Build Tools @@ -25298,9 +25379,11 @@ those rarely need to be updated. Nevertheless, it is useful to have an automated way to produce them, should an update occur, and this is what the @code{(gnu packages make-bootstrap)} module provides. -The following command builds the tarballs containing the bootstrap -binaries (Guile, Binutils, GCC, libc, and a tarball containing a mixture -of Coreutils and other basic command-line tools): +The following command builds the tarballs containing the bootstrap binaries +(Binutils, GCC, glibc, for the traditional bootstrap and linux-libre-headers, +bootstrap-mescc-tools, bootstrap-mes for the Reduced Binary Seed bootstrap, +and Guile, and a tarball containing a mixture of Coreutils and other basic +command-line tools): @example guix build bootstrap-tarballs @@ -25318,12 +25401,12 @@ know. @unnumberedsec Reducing the Set of Bootstrap Binaries -Our bootstrap binaries currently include GCC, Guile, etc. That's a lot -of binary code! Why is that a problem? It's a problem because these -big chunks of binary code are practically non-auditable, which makes it -hard to establish what source code produced them. Every unauditable -binary also leaves us vulnerable to compiler backdoors as described by -Ken Thompson in the 1984 paper @emph{Reflections on Trusting Trust}. +Our traditional bootstrap includes GCC, GNU Libc, Guile, etc. That's a lot of +binary code! Why is that a problem? It's a problem because these big chunks +of binary code are practically non-auditable, which makes it hard to establish +what source code produced them. Every unauditable binary also leaves us +vulnerable to compiler backdoors as described by Ken Thompson in the 1984 +paper @emph{Reflections on Trusting Trust}. This is mitigated by the fact that our bootstrap binaries were generated from an earlier Guix revision. Nevertheless it lacks the level of @@ -25335,8 +25418,19 @@ The @uref{http://bootstrappable.org, Bootstrappable.org web site} lists on-going projects to do that. One of these is about replacing the bootstrap GCC with a sequence of assemblers, interpreters, and compilers of increasing complexity, which could be built from source starting from -a simple and auditable assembler. Your help is welcome! - +a simple and auditable assembler. + +Our first major achievement is the replacement of of GCC, the GNU C Library +and Binutils by MesCC-Tools (a simple hex linker and macro assembler) and Mes +(@pxref{Top, GNU Mes Reference Manual,, mes, GNU Mes}, a Scheme interpreter +and C compiler in Scheme). Neither MesCC-Tools nor Mes can be fully +bootstrapped yet and thus we inject them as binary seeds. We call this the +Reduced Binary Seed bootstrap, as it has halved the size of our bootstrap +binaries! Also, it has eliminated the C compiler binary; i686-linux and +x86_64-linux Guix packages are now bootstrapped without any binary C compiler. + +Work is ongoing to make MesCC-Tools and Mes fully bootstrappable and we are +also looking at any other bootstrap binaries. Your help is welcome! @node Porting @chapter Porting to a New Platform diff --git a/doc/images/gcc-mesboot-bag-graph.dot b/doc/images/gcc-mesboot-bag-graph.dot new file mode 100644 index 0000000000..74d1896fb1 --- /dev/null +++ b/doc/images/gcc-mesboot-bag-graph.dot @@ -0,0 +1,123 @@ +digraph "Guix bag" { + "/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" [label = "gcc-mesboot@4.9.4", shape = box, fontname = Helvetica]; + "/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" [color = darkviolet]; + "/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/86dqsl7b3qrzxl0zd049i5rl7l19gnk0-gcc-mesboot1-wrapper-4.7.4.drv" [color = darkviolet]; + "/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" [color = darkviolet]; + "/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" [color = darkviolet]; + "/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkviolet]; + "/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkviolet]; + "/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = darkviolet]; + "/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = darkviolet]; + "/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" [color = darkviolet]; + "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" [label = "binutils-mesboot@2.20.1a", shape = box, fontname = Helvetica]; + "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" [color = dimgrey]; + "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" [color = dimgrey]; + "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" [color = dimgrey]; + "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = dimgrey]; + "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = dimgrey]; + "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = dimgrey]; + "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = dimgrey]; + "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" [color = dimgrey]; + "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" [label = "binutils-mesboot0@2.20.1a", shape = box, fontname = Helvetica]; + "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/xjvyz26a4m191p5aqyifi7fw57vjps15-tcc-boot-0.9.27.drv" [color = peachpuff4]; + "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = peachpuff4]; + "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = peachpuff4]; + "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = peachpuff4]; + "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" [color = peachpuff4]; + "/gnu/store/xjvyz26a4m191p5aqyifi7fw57vjps15-tcc-boot-0.9.27.drv" [label = "tcc-boot@0.9.27", shape = box, fontname = Helvetica]; + "/gnu/store/xjvyz26a4m191p5aqyifi7fw57vjps15-tcc-boot-0.9.27.drv" -> "/gnu/store/as3hax4r1zzxz4ihlzj9yq3rs83gm93c-mes-boot-0.18.drv" [color = cyan3]; + "/gnu/store/xjvyz26a4m191p5aqyifi7fw57vjps15-tcc-boot-0.9.27.drv" -> "/gnu/store/p437zhq42yavzknp3miacrgnaw206h7i-tcc-boot0-0.9.26-5.c7b3f59.drv" [color = cyan3]; + "/gnu/store/xjvyz26a4m191p5aqyifi7fw57vjps15-tcc-boot-0.9.27.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = cyan3]; + "/gnu/store/as3hax4r1zzxz4ihlzj9yq3rs83gm93c-mes-boot-0.18.drv" [label = "mes-boot@0.18", shape = box, fontname = Helvetica]; + "/gnu/store/as3hax4r1zzxz4ihlzj9yq3rs83gm93c-mes-boot-0.18.drv" -> "/gnu/store/gd83makzwnb2aq1x0hylfsi8gaxln5js-bootstrap-mescc-tools-0.5.2.drv" [color = darkviolet]; + "/gnu/store/as3hax4r1zzxz4ihlzj9yq3rs83gm93c-mes-boot-0.18.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkviolet]; + "/gnu/store/as3hax4r1zzxz4ihlzj9yq3rs83gm93c-mes-boot-0.18.drv" -> "/gnu/store/viccpx5izm9z0ci5nvib0xkdrsfqixlr-bootstrap-mes-0.drv" [color = darkviolet]; + "/gnu/store/gd83makzwnb2aq1x0hylfsi8gaxln5js-bootstrap-mescc-tools-0.5.2.drv" [label = "bootstrap-mescc-tools@0.5.2", shape = box, fontname = Helvetica]; + "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [label = "bootstrap-binaries@0", shape = box, fontname = Helvetica]; + "/gnu/store/viccpx5izm9z0ci5nvib0xkdrsfqixlr-bootstrap-mes-0.drv" [label = "bootstrap-mes@0", shape = box, fontname = Helvetica]; + "/gnu/store/p437zhq42yavzknp3miacrgnaw206h7i-tcc-boot0-0.9.26-5.c7b3f59.drv" [label = "tcc-boot0@0.9.26-5.c7b3f59", shape = box, fontname = Helvetica]; + "/gnu/store/p437zhq42yavzknp3miacrgnaw206h7i-tcc-boot0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/as3hax4r1zzxz4ihlzj9yq3rs83gm93c-mes-boot-0.18.drv" [color = dimgrey]; + "/gnu/store/p437zhq42yavzknp3miacrgnaw206h7i-tcc-boot0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/gd83makzwnb2aq1x0hylfsi8gaxln5js-bootstrap-mescc-tools-0.5.2.drv" [color = dimgrey]; + "/gnu/store/p437zhq42yavzknp3miacrgnaw206h7i-tcc-boot0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = dimgrey]; + "/gnu/store/p437zhq42yavzknp3miacrgnaw206h7i-tcc-boot0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/viccpx5izm9z0ci5nvib0xkdrsfqixlr-bootstrap-mes-0.drv" [color = dimgrey]; + "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [label = "diffutils-mesboot@2.7", shape = box, fontname = Helvetica]; + "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" -> "/gnu/store/as3hax4r1zzxz4ihlzj9yq3rs83gm93c-mes-boot-0.18.drv" [color = peachpuff4]; + "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" -> "/gnu/store/xjvyz26a4m191p5aqyifi7fw57vjps15-tcc-boot-0.9.27.drv" [color = peachpuff4]; + "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = peachpuff4]; + "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = peachpuff4]; + "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" -> "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" [color = peachpuff4]; + "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" [label = "make-mesboot0@3.80", shape = box, fontname = Helvetica]; + "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" -> "/gnu/store/xjvyz26a4m191p5aqyifi7fw57vjps15-tcc-boot-0.9.27.drv" [color = darkgoldenrod]; + "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkgoldenrod]; + "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkgoldenrod]; + "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" [label = "glibc-mesboot0@2.2.5", shape = box, fontname = Helvetica]; + "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" [color = darkseagreen]; + "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" [color = darkseagreen]; + "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkseagreen]; + "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkseagreen]; + "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = darkseagreen]; + "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-mesboot-headers-0.18.drv" [color = darkseagreen]; + "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" [color = darkseagreen]; + "/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" [label = "gcc-core-mesboot@2.95.3", shape = box, fontname = Helvetica]; + "/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" [color = dimgrey]; + "/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/xjvyz26a4m191p5aqyifi7fw57vjps15-tcc-boot-0.9.27.drv" [color = dimgrey]; + "/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = dimgrey]; + "/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = dimgrey]; + "/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = dimgrey]; + "/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" [color = dimgrey]; + "/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-mesboot-headers-0.18.drv" [label = "mesboot-headers@0.18", shape = box, fontname = Helvetica]; + "/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-mesboot-headers-0.18.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = cyan3]; + "/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-mesboot-headers-0.18.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = cyan3]; + "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [label = "linux-libre-headers-bootstrap@0", shape = box, fontname = Helvetica]; + "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" [label = "gcc-mesboot0@2.95.3", shape = box, fontname = Helvetica]; + "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" [color = darkseagreen]; + "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" [color = darkseagreen]; + "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" [color = darkseagreen]; + "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkseagreen]; + "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkseagreen]; + "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = darkseagreen]; + "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = darkseagreen]; + "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" [color = darkseagreen]; + "/gnu/store/86dqsl7b3qrzxl0zd049i5rl7l19gnk0-gcc-mesboot1-wrapper-4.7.4.drv" [label = "gcc-mesboot1-wrapper@4.7.4", shape = box, fontname = Helvetica]; + "/gnu/store/86dqsl7b3qrzxl0zd049i5rl7l19gnk0-gcc-mesboot1-wrapper-4.7.4.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = red]; + "/gnu/store/86dqsl7b3qrzxl0zd049i5rl7l19gnk0-gcc-mesboot1-wrapper-4.7.4.drv" -> "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" [color = red]; + "/gnu/store/86dqsl7b3qrzxl0zd049i5rl7l19gnk0-gcc-mesboot1-wrapper-4.7.4.drv" -> "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" [color = red]; + "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" [label = "glibc-mesboot@2.16.0", shape = box, fontname = Helvetica]; + "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" [color = blue]; + "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" [color = blue]; + "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" [color = blue]; + "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" [color = blue]; + "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = blue]; + "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = blue]; + "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = blue]; + "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = blue]; + "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" [color = blue]; + "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" [label = "glibc-headers-mesboot@2.16.0", shape = box, fontname = Helvetica]; + "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" [color = red]; + "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" [color = red]; + "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" [color = red]; + "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-mesboot-headers-0.18.drv" [color = red]; + "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = red]; + "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = red]; + "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = red]; + "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = red]; + "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" [color = red]; + "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" [label = "gcc-mesboot1@4.7.4", shape = box, fontname = Helvetica]; + "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" [color = darkseagreen]; + "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" [color = darkseagreen]; + "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" [color = darkseagreen]; + "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkseagreen]; + "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkseagreen]; + "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = darkseagreen]; + "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = darkseagreen]; + "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" [color = darkseagreen]; + "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" [label = "make-mesboot@3.82", shape = box, fontname = Helvetica]; + "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" -> "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" [color = magenta]; + "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" -> "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" [color = magenta]; + "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" -> "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" [color = magenta]; + "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" -> "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" [color = magenta]; + "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = magenta]; + "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = magenta]; + "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = magenta]; + +} diff --git a/doc/local.mk b/doc/local.mk index 18115fb295..4ad19b5e37 100644 --- a/doc/local.mk +++ b/doc/local.mk @@ -34,6 +34,7 @@ DOT_FILES = \ %D%/images/bootstrap-packages.dot \ %D%/images/coreutils-graph.dot \ %D%/images/coreutils-bag-graph.dot \ + %D%/images/gcc-mesboot-bag-graph.dot \ %D%/images/service-graph.dot \ %D%/images/shepherd-graph.dot diff --git a/gnu/build/cross-toolchain.scm b/gnu/build/cross-toolchain.scm index d430b8afc4..53d6d39187 100644 --- a/gnu/build/cross-toolchain.scm +++ b/gnu/build/cross-toolchain.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com> +;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -36,11 +37,8 @@ (define %gcc-include-paths ;; Environment variables for header search paths. - ;; Note: See <http://bugs.gnu.org/22186> for why not 'CPATH'. - '("C_INCLUDE_PATH" - "CPLUS_INCLUDE_PATH" - "OBJC_INCLUDE_PATH" - "OBJCPLUS_INCLUDE_PATH")) + ;; Note: See <http://bugs.gnu.org/30756> for why not 'C_INCLUDE_PATH' & co. + '("CPATH")) (define %gcc-cross-include-paths ;; Search path for target headers when cross-compiling. diff --git a/gnu/local.mk b/gnu/local.mk index ec82877970..e936343918 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -636,8 +636,6 @@ dist_patch_DATA = \ %D%/packages/patches/a2ps-CVE-2014-0466.patch \ %D%/packages/patches/abiword-explictly-cast-bools.patch \ %D%/packages/patches/abiword-black-drawing-with-gtk322.patch \ - %D%/packages/patches/acl-fix-perl-regex.patch \ - %D%/packages/patches/acl-hurd-path-max.patch \ %D%/packages/patches/adb-add-libraries.patch \ %D%/packages/patches/aegis-constness-error.patch \ %D%/packages/patches/aegis-perl-tempdir1.patch \ @@ -655,6 +653,7 @@ dist_patch_DATA = \ %D%/packages/patches/apr-skip-getservbyname-test.patch \ %D%/packages/patches/aria2-CVE-2019-3500.patch \ %D%/packages/patches/aspell-default-dict-dir.patch \ + %D%/packages/patches/aspell-gcc-compat.patch \ %D%/packages/patches/at-spi2-core-meson-compat.patch \ %D%/packages/patches/ath9k-htc-firmware-binutils.patch \ %D%/packages/patches/ath9k-htc-firmware-gcc.patch \ @@ -673,6 +672,7 @@ dist_patch_DATA = \ %D%/packages/patches/bazaar-CVE-2017-14176.patch \ %D%/packages/patches/beets-python-3.7-fix.patch \ %D%/packages/patches/beignet-correct-file-names.patch \ + %D%/packages/patches/binutils-boot-2.20.1a.patch \ %D%/packages/patches/biber-fix-encoding-write.patch \ %D%/packages/patches/binutils-loongson-workaround.patch \ %D%/packages/patches/blender-2.79-newer-ffmpeg.patch \ @@ -723,7 +723,6 @@ dist_patch_DATA = \ %D%/packages/patches/deja-dup-use-ref-keyword-for-iter.patch \ %D%/packages/patches/dfu-programmer-fix-libusb.patch \ %D%/packages/patches/diffutils-gets-undeclared.patch \ - %D%/packages/patches/diffutils-getopt.patch \ %D%/packages/patches/docbook-xsl-nonrecursive-string-subst.patch \ %D%/packages/patches/doc++-include-directives.patch \ %D%/packages/patches/doc++-segfault-fix.patch \ @@ -781,6 +780,8 @@ dist_patch_DATA = \ %D%/packages/patches/gcc-arm-bug-71399.patch \ %D%/packages/patches/gcc-arm-link-spec-fix.patch \ %D%/packages/patches/gcc-asan-missing-include.patch \ + %D%/packages/patches/gcc-boot-2.95.3.patch \ + %D%/packages/patches/gcc-boot-4.7.4.patch \ %D%/packages/patches/gcc-cross-environment-variables.patch \ %D%/packages/patches/gcc-fix-texi2pod.patch \ %D%/packages/patches/gcc-4.8-libsanitizer-fix.patch \ @@ -828,6 +829,9 @@ dist_patch_DATA = \ %D%/packages/patches/glibc-CVE-2018-11236.patch \ %D%/packages/patches/glibc-CVE-2018-11237.patch \ %D%/packages/patches/glibc-allow-kernel-2.6.32.patch \ + %D%/packages/patches/glibc-boot-2.16.0.patch \ + %D%/packages/patches/glibc-boot-2.2.5.patch \ + %D%/packages/patches/glibc-bootstrap-system-2.16.0.patch \ %D%/packages/patches/glibc-bootstrap-system.patch \ %D%/packages/patches/glibc-hidden-visibility-ldconfig.patch \ %D%/packages/patches/glibc-hurd-magic-pid.patch \ @@ -839,6 +843,7 @@ dist_patch_DATA = \ %D%/packages/patches/glibc-versioned-locpath.patch \ %D%/packages/patches/glibc-2.27-git-fixes.patch \ %D%/packages/patches/glibc-2.28-git-fixes.patch \ + %D%/packages/patches/glibc-supported-locales.patch \ %D%/packages/patches/glusterfs-use-PATH-instead-of-hardcodes.patch \ %D%/packages/patches/glog-gcc-5-demangling.patch \ %D%/packages/patches/gmp-arm-asm-nothumb.patch \ @@ -854,7 +859,6 @@ dist_patch_DATA = \ %D%/packages/patches/gpsbabel-minizip.patch \ %D%/packages/patches/gpsbabel-qstring.patch \ %D%/packages/patches/grep-timing-sensitive-test.patch \ - %D%/packages/patches/groff-source-date-epoch.patch \ %D%/packages/patches/groovy-add-exceptionutilsgenerator.patch \ %D%/packages/patches/grub-binutils-compat.patch \ %D%/packages/patches/grub-check-error-efibootmgr.patch \ @@ -877,6 +881,7 @@ dist_patch_DATA = \ %D%/packages/patches/gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch \ %D%/packages/patches/gtkglext-disable-disable-deprecated.patch \ %D%/packages/patches/gzdoom-search-in-installed-share.patch \ + %D%/packages/patches/handbrake-opt-in-nvenc.patch \ %D%/packages/patches/haskell-mode-unused-variables.patch \ %D%/packages/patches/haskell-mode-make-check.patch \ %D%/packages/patches/hdf4-architectures.patch \ @@ -949,8 +954,6 @@ dist_patch_DATA = \ %D%/packages/patches/liba52-link-with-libm.patch \ %D%/packages/patches/liba52-set-soname.patch \ %D%/packages/patches/liba52-use-mtune-not-mcpu.patch \ - %D%/packages/patches/libarchive-CVE-2017-14166.patch \ - %D%/packages/patches/libarchive-CVE-2017-14502.patch \ %D%/packages/patches/libarchive-CVE-2018-1000877.patch \ %D%/packages/patches/libarchive-CVE-2018-1000878.patch \ %D%/packages/patches/libarchive-CVE-2018-1000880.patch \ @@ -970,7 +973,6 @@ dist_patch_DATA = \ %D%/packages/patches/libevent-2.1-skip-failing-test.patch \ %D%/packages/patches/libexif-CVE-2016-6328.patch \ %D%/packages/patches/libexif-CVE-2017-7544.patch \ - %D%/packages/patches/libgcrypt-make-yat2m-reproducible.patch \ %D%/packages/patches/libgit2-avoid-python.patch \ %D%/packages/patches/libgit2-mtime-0.patch \ %D%/packages/patches/libgdata-fix-tests.patch \ @@ -1045,6 +1047,7 @@ dist_patch_DATA = \ %D%/packages/patches/mcrypt-CVE-2012-4426.patch \ %D%/packages/patches/mcrypt-CVE-2012-4527.patch \ %D%/packages/patches/mesa-skip-disk-cache-test.patch \ + %D%/packages/patches/mescc-tools-boot.patch \ %D%/packages/patches/meson-for-build-rpath.patch \ %D%/packages/patches/metabat-fix-compilation.patch \ %D%/packages/patches/mhash-keygen-test-segfault.patch \ @@ -1163,8 +1166,6 @@ dist_patch_DATA = \ %D%/packages/patches/pygpgme-disable-problematic-tests.patch \ %D%/packages/patches/pyqt-configure.patch \ %D%/packages/patches/pyqt-public-sip.patch \ - %D%/packages/patches/python2-CVE-2018-14647.patch \ - %D%/packages/patches/python2-CVE-2018-1000802.patch \ %D%/packages/patches/python-2-deterministic-build-info.patch \ %D%/packages/patches/python-2.7-adjust-tests.patch \ %D%/packages/patches/python-2.7-search-paths.patch \ @@ -1177,7 +1178,6 @@ dist_patch_DATA = \ %D%/packages/patches/python-axolotl-AES-fix.patch \ %D%/packages/patches/python-cairocffi-dlopen-path.patch \ %D%/packages/patches/python-cffi-x87-stack-clean.patch \ - %D%/packages/patches/python-fix-tests.patch \ %D%/packages/patches/python2-larch-coverage-4.0a6-compatibility.patch \ %D%/packages/patches/python-configobj-setuptools.patch \ %D%/packages/patches/python-faker-fix-build-32bit.patch \ @@ -1188,6 +1188,7 @@ dist_patch_DATA = \ %D%/packages/patches/python-pycrypto-CVE-2013-7459.patch \ %D%/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \ %D%/packages/patches/python-pygpgme-fix-pinentry-tests.patch \ + %D%/packages/patches/python-pytest-pluggy-compat.patch \ %D%/packages/patches/python2-subprocess32-disable-input-test.patch \ %D%/packages/patches/python-unittest2-python3-compat.patch \ %D%/packages/patches/python-unittest2-remove-argparse.patch \ @@ -1239,6 +1240,7 @@ dist_patch_DATA = \ %D%/packages/patches/scotch-build-parallelism.patch \ %D%/packages/patches/scotch-integer-declarations.patch \ %D%/packages/patches/scribus-poppler.patch \ + %D%/packages/patches/scribus-poppler-0.73.patch \ %D%/packages/patches/sdl-libx11-1.6.patch \ %D%/packages/patches/seq24-rename-mutex.patch \ %D%/packages/patches/sharutils-CVE-2018-1000097.patch \ @@ -1269,12 +1271,12 @@ dist_patch_DATA = \ %D%/packages/patches/t1lib-CVE-2011-1552+.patch \ %D%/packages/patches/tar-remove-wholesparse-check.patch \ %D%/packages/patches/tar-skip-unreliable-tests.patch \ + %D%/packages/patches/tcc-boot-0.9.27.patch \ %D%/packages/patches/tclxml-3.2-install.patch \ %D%/packages/patches/tcsh-fix-autotest.patch \ %D%/packages/patches/tcsh-fix-out-of-bounds-read.patch \ %D%/packages/patches/teensy-loader-cli-help.patch \ %D%/packages/patches/teeworlds-use-latest-wavpack.patch \ - %D%/packages/patches/texinfo-perl-compat.patch \ %D%/packages/patches/texinfo-5-perl-compat.patch \ %D%/packages/patches/texlive-bin-luatex-poppler-compat.patch \ %D%/packages/patches/texlive-bin-pdftex-poppler-compat.patch \ @@ -1357,18 +1359,11 @@ MISC_DISTRO_FILES = \ %D%/packages/ld-wrapper.in bootstrapdir = $(guilemoduledir)/%D%/packages/bootstrap -bootstrap_x86_64_linuxdir = $(bootstrapdir)/x86_64-linux bootstrap_i686_linuxdir = $(bootstrapdir)/i686-linux bootstrap_armhf_linuxdir = $(bootstrapdir)/armhf-linux bootstrap_aarch64_linuxdir = $(bootstrapdir)/aarch64-linux bootstrap_mips64el_linuxdir = $(bootstrapdir)/mips64el-linux -dist_bootstrap_x86_64_linux_DATA = \ - %D%/packages/bootstrap/x86_64-linux/bash \ - %D%/packages/bootstrap/x86_64-linux/mkdir \ - %D%/packages/bootstrap/x86_64-linux/tar \ - %D%/packages/bootstrap/x86_64-linux/xz - dist_bootstrap_i686_linux_DATA = \ %D%/packages/bootstrap/i686-linux/bash \ %D%/packages/bootstrap/i686-linux/mkdir \ diff --git a/gnu/packages.scm b/gnu/packages.scm index 9f211ae23c..f9a35588b5 100644 --- a/gnu/packages.scm +++ b/gnu/packages.scm @@ -109,14 +109,18 @@ FILE-NAME found in %PATCH-PATH." (define (search-bootstrap-binary file-name system) "Search the bootstrap binary FILE-NAME for SYSTEM. Raise an error if not found." - (or (search-path (%bootstrap-binaries-path) - (string-append system "/" file-name)) - (raise (condition - (&message - (message - (format #f (G_ "could not find bootstrap binary '~a' \ + ;; On x86_64 always use the i686 binaries. + (let ((system (match system + ("x86_64-linux" "i686-linux") + (_ system)))) + (or (search-path (%bootstrap-binaries-path) + (string-append system "/" file-name)) + (raise (condition + (&message + (message + (format #f (G_ "could not find bootstrap binary '~a' \ for system '~a'") - file-name system))))))) + file-name system)))))))) (define %distro-root-directory ;; Absolute file name of the module hierarchy. Since (gnu packages …) might diff --git a/gnu/packages/acl.scm b/gnu/packages/acl.scm index 8d5f0117f5..0131adcac4 100644 --- a/gnu/packages/acl.scm +++ b/gnu/packages/acl.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2014 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -34,21 +35,18 @@ (define-public acl (package (name "acl") - (version "2.2.52") + (version "2.2.53") (source (origin (method url-fetch) (uri (string-append "mirror://savannah/acl/acl-" - version ".src.tar.gz")) + version ".tar.gz")) (sha256 (base32 - "08qd9s3wfhv0ajswsylnfwr5h0d7j9d4rgip855nrh400nxp940p")) - (patches (search-patches "acl-fix-perl-regex.patch" - "acl-hurd-path-max.patch")))) + "1ir6my3w74s6nfbgbqgzj6w570sn0qjf3524zx8xh67lqrjrigh6")))) (build-system gnu-build-system) (arguments - `(#:test-target "tests" - #:modules ((ice-9 ftw) + `(#:modules ((ice-9 ftw) ,@%gnu-build-system-modules) #:phases (modify-phases %standard-phases @@ -75,13 +73,11 @@ (("\\| sed.*'") "")) ;; These tests require the existence of a user named "bin", but ;; this user does not exist within Guix's build environment. - (for-each (lambda (file) - (delete-file (string-append "test/" file))) - '("setfacl-X.test" "cp.test" "misc.test")) - #t)) - (replace 'install - (lambda _ - (invoke "make" "install" "install-lib" "install-dev")))))) + (substitute* "Makefile.in" + ((".*test/misc\\.test.*") "") + ((".*test/cp\\.test.*") "") + ((".*test/setfacl-X\\.test.*") "")) + #t))))) (inputs `(("attr" ,attr))) (native-inputs `(("gettext" ,gettext-minimal) diff --git a/gnu/packages/adns.scm b/gnu/packages/adns.scm index 28a65667eb..f6df825e7c 100644 --- a/gnu/packages/adns.scm +++ b/gnu/packages/adns.scm @@ -61,32 +61,6 @@ scripts.") (define-public c-ares (package (name "c-ares") - (version "1.14.0") - (source (origin - (method url-fetch) - (uri (string-append - "https://c-ares.haxx.se/download/" name "-" version - ".tar.gz")) - (sha256 - (base32 - "0vnwmbvymw677k780kpb6sb8i3szdp89rzy8mz1fwg1657yw3ls5")))) - (build-system gnu-build-system) - (native-inputs - `(("pkg-config" ,pkg-config))) - (home-page "https://c-ares.haxx.se/") - (synopsis "C library for asynchronous DNS requests") - (description - "C-ares is a C library that performs DNS requests and name resolution -asynchronously. It is intended for applications which need to perform DNS -queries without blocking, or need to perform multiple DNS queries in parallel. -The primary examples of such applications are servers which communicate with -multiple clients and programs with graphical user interfaces.") - (license (x11-style "https://c-ares.haxx.se/license.html")))) - -;; XXX: temporary package for tensorflow / grpc -(define-public c-ares-next - (package - (name "c-ares") (version "1.15.0") (source (origin (method url-fetch) @@ -96,11 +70,7 @@ multiple clients and programs with graphical user interfaces.") (sha256 (base32 "0lk8knip4xk6qzksdkn7085mmgm4ixfczdyyjw656c193y3rgnvc")))) - (build-system cmake-build-system) - (arguments - `(#:tests? #f ; some tests seem to require Internet connection - #:configure-flags - (list "-DCARES_BUILD_TESTS=ON"))) + (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) (home-page "https://c-ares.haxx.se/") diff --git a/gnu/packages/aspell.scm b/gnu/packages/aspell.scm index dd006e8184..7f898b2f88 100644 --- a/gnu/packages/aspell.scm +++ b/gnu/packages/aspell.scm @@ -45,7 +45,8 @@ (sha256 (base32 "1qgn5psfyhbrnap275xjfrzppf5a83fb67gpql0kfqv37al869gm")) - (patches (search-patches "aspell-default-dict-dir.patch")))) + (patches (search-patches "aspell-default-dict-dir.patch" + "aspell-gcc-compat.patch")))) (build-system gnu-build-system) (arguments `(#:phases diff --git a/gnu/packages/assembly.scm b/gnu/packages/assembly.scm index 00ed00e1c1..6cb23ce2a8 100644 --- a/gnu/packages/assembly.scm +++ b/gnu/packages/assembly.scm @@ -38,14 +38,14 @@ (define-public nasm (package (name "nasm") - (version "2.13.03") + (version "2.14.02") (source (origin (method url-fetch) (uri (string-append "http://www.nasm.us/pub/nasm/releasebuilds/" version "/" name "-" version ".tar.xz")) (sha256 (base32 - "0wr58pb2wnyihcl6635hlx98fnscx5yirxm8m84x8nxwvjqcybl1")))) + "1xg8dfr49py15vbwk1rzcjc3zpqydmr49ahlijm56wlgj8zdwjp2")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl) ;for doc and test target ("texinfo" ,texinfo))) diff --git a/gnu/packages/attr.scm b/gnu/packages/attr.scm index ff0a07aa67..3237376d40 100644 --- a/gnu/packages/attr.scm +++ b/gnu/packages/attr.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org> ;;; Copyright © 2012, 2013, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2018 Mark H Weaver <mhw@netris.org> +;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -29,28 +30,18 @@ (define-public attr (package (name "attr") - (version "2.4.47") + (version "2.4.48") (source (origin (method url-fetch) (uri (string-append "mirror://savannah/attr/attr-" - version ".src.tar.gz")) + version ".tar.gz")) (sha256 (base32 - "0nd8y0m6awc9ahv0ciiwf8gy54c8d3j51pw9xg7f7cn579jjyxr5")))) + "1rr4adzwax4bzr2c00f06zcsljv5y6p9wymz1g89ww7cb2rp5bay")))) (build-system gnu-build-system) (arguments `(#:phases (modify-phases %standard-phases - (add-after 'configure 'patch-makefile-SHELL - (lambda _ - (patch-makefile-SHELL "include/buildmacros") - #t)) - (replace 'install - (lambda _ - (invoke "make" - "install" - "install-lib" - "install-dev"))) (replace 'check (lambda* (#:key target #:allow-other-keys) ;; Use the right shell. @@ -80,4 +71,4 @@ (synopsis "Library and tools for manipulating extended attributes") (description "Portable library and tools for manipulating extended attributes.") - (license (list gpl2+ lgpl2.1+)))) + (license lgpl2.1+))) diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm index 682cfe57bc..5e6af1fdb2 100644 --- a/gnu/packages/backup.scm +++ b/gnu/packages/backup.scm @@ -198,18 +198,18 @@ backups (called chunks) to allow easy burning to CD/DVD.") (define-public libarchive (package (name "libarchive") - (replacement libarchive-3.3.3) - (version "3.3.2") + (version "3.3.3") (source (origin (method url-fetch) (uri (string-append "https://libarchive.org/downloads/libarchive-" version ".tar.gz")) - (patches (search-patches "libarchive-CVE-2017-14166.patch" - "libarchive-CVE-2017-14502.patch")) + (patches (search-patches "libarchive-CVE-2018-1000877.patch" + "libarchive-CVE-2018-1000878.patch" + "libarchive-CVE-2018-1000880.patch")) (sha256 (base32 - "1km0mzfl6in7l5vz9kl09a88ajx562rw93ng9h2jqavrailvsbgd")))) + "0bhfncid058p7n1n8v29l6wxm3mhdqfassscihbsxfwz3iwb2zms")))) (build-system gnu-build-system) (inputs `(("zlib" ,zlib) @@ -275,22 +275,6 @@ archive. In particular, note that there is currently no built-in support for random access nor for in-place modification.") (license license:bsd-2))) -(define-public libarchive-3.3.3 - (package - (inherit libarchive) - (version "3.3.3") - (source - (origin - (method url-fetch) - (uri (string-append "https://libarchive.org/downloads/libarchive-" - version ".tar.gz")) - (patches (search-patches "libarchive-CVE-2018-1000877.patch" - "libarchive-CVE-2018-1000878.patch" - "libarchive-CVE-2018-1000880.patch")) - (sha256 - (base32 - "0bhfncid058p7n1n8v29l6wxm3mhdqfassscihbsxfwz3iwb2zms")))))) - (define-public rdup (package (name "rdup") diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index db9cca6faf..37be1ffeb7 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -91,14 +91,14 @@ command-line arguments, multiple languages, and so on.") (define-public grep (package (name "grep") - (version "3.1") + (version "3.3") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/grep/grep-" version ".tar.xz")) (sha256 (base32 - "0zm0ywmyz9g8vn1plw14mn8kj74yipx5qsljndbyfgmvndx5qqnv")) + "055mqp6vrd0brkygmygb2673qwz409a7kyp1mzbfy6cn94f58q5r")) (patches (search-patches "grep-timing-sensitive-test.patch")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl))) ;some of the tests require it @@ -106,15 +106,6 @@ command-line arguments, multiple languages, and so on.") (arguments `(#:phases (modify-phases %standard-phases - (add-before 'check 'disable-failing-tests - (lambda _ - ;; These tests are expected to fail due to a glibc bug which has - ;; been fixed in 2.28, so they are unexpectedly passing. They - ;; should be fixed for grep versions > 3.1. - (substitute* "tests/Makefile.in" - (("^[[:blank:]]+backref-alt[[:blank:]]+\\\\") "\\") - (("^[[:blank:]]+triple-backref[[:blank:]]+\\\\") "\\")) - #t)) (add-after 'install 'fix-egrep-and-fgrep ;; Patch 'egrep' and 'fgrep' to execute 'grep' via its ;; absolute file name instead of searching for it in $PATH. @@ -141,28 +132,16 @@ including, for example, recursive directory searching.") (define-public sed (package (name "sed") - (version "4.5") + (version "4.7") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/sed/sed-" version ".tar.xz")) (sha256 (base32 - "0h3b2jfj57wmz680vkbyavlsrkak556qhvs7m7fdlawwhg477bbs")))) + "0smxcx66vx29djzb542nxcynl7qnzxqa5032ibazi7x2s267d198")))) (build-system gnu-build-system) (synopsis "Stream editor") - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'dont-rebuild-sed.1 - (lambda _ - ;; Make sure we do not attempt to rebuild 'doc/sed.1', which does - ;; not work when cross-compiling because we cannot run 'sed'. - ;; This is fixed upstream as commit a0a25e3. - (substitute* "Makefile.in" - (("^doc/sed\\.1:.*") - "doc/sed.1:\n")) - #t))))) (native-inputs `(("perl" ,perl))) ;for tests (description @@ -177,14 +156,14 @@ implementation offers several extensions over the standard utility.") (define-public tar (package (name "tar") - (version "1.30") + (version "1.32") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/tar/tar-" version ".tar.xz")) (sha256 (base32 - "1lyjyk8z8hdddsxw0ikchrsfg3i0x3fsh7l63a8jgaz1n7dr5gzi")) + "1n7xy657ii0sa42zx6944v2m4v9qrh6sqgmw17l3nch3y43sxlyh")) (patches (search-patches "tar-skip-unreliable-tests.patch" "tar-remove-wholesparse-check.patch")))) (build-system gnu-build-system) @@ -198,27 +177,7 @@ implementation offers several extensions over the standard utility.") (substitute* "src/system.c" (("/bin/sh") (string-append bash "/bin/sh"))) - #t)))) - - ;; Work around a cross-compilation bug whereby libgnu.a would provide - ;; '__mktime_internal', which conflicts with the one in libc.a. - ,@(if (%current-target-system) - `(#:configure-flags '("gl_cv_func_working_mktime=yes")) - '()) - - ;; Test #92 "link mismatch" expects "a/z: Not linked to a/y" but gets - ;; "a/y: Not linked to a/z" and fails, presumably due to differences in - ;; the order in which 'diff' traverses directories. That leads to a - ;; test failure even though conceptually the test passes. Skip it. - ;; Test 117 and 118 are prone to race conditions too, particularly - ;; when cross-compiling, so we skip those as well. All issues have - ;; been fixed upstream in these commits: - ;; <https://git.savannah.gnu.org/cgit/tar.git/commit/?id=847a36f> - ;; <https://git.savannah.gnu.org/cgit/tar.git/commit/?id=64b43fd> - #:make-flags (list (string-append - "TESTSUITEFLAGS= -k '!link mismatch," - "!directory removed before reading," - "!explicitly named directory removed before reading'")))) + #t)))))) ;; When cross-compiling, the 'set-shell-file-name' phase needs to be able ;; to refer to the target Bash. @@ -270,16 +229,16 @@ differences.") (define-public diffutils (package (name "diffutils") - (version "3.6") + (version "3.7") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/diffutils/diffutils-" version ".tar.xz")) (sha256 (base32 - "1mivg0fy3a6fcn535ln8nkgfj6vxh5hsxxs5h6692wxmsjyyh8fn")) - (patches (search-patches "diffutils-getopt.patch")))) + "09isrg0isjinv8c535nxsi1s86wfdfzml80dbw41dj9x3hiad9xk")))) (build-system gnu-build-system) + (native-inputs `(("perl" ,perl))) (synopsis "Comparing and merging files") (description "GNU Diffutils is a package containing tools for finding the @@ -341,14 +300,14 @@ used to apply commands with arbitrarily long arguments.") (define-public coreutils (package (name "coreutils") - (version "8.30") + (version "8.31") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/coreutils/coreutils-" version ".tar.xz")) (sha256 (base32 - "0mxhw43d4wpqmvg0l4znk1vm10fy92biyh90lzdnqjcic2lb6cg8")))) + "1zg9m79x1i2nifj4kb0waf9x3i5h6ydkypkjnbsb9rnwis8rqypz")))) (build-system gnu-build-system) (inputs `(("acl" ,acl) ; TODO: add SELinux ("gmp" ,gmp) ;bignums in 'expr', yay! @@ -390,13 +349,7 @@ used to apply commands with arbitrarily long arguments.") ;; environments with long prefixes (/tmp/guix-build-...). (substitute* "Makefile" (("^.*tests/misc/env-S.pl.*$") "")) - #t))) - - ;; Work around a cross-compilation bug whereby libcoreutils.a would - ;; provide '__mktime_internal', which conflicts with the one in libc.a. - ,@(if (%current-target-system) - `(#:configure-flags '("gl_cv_func_working_mktime=yes")) - '()))) + #t))))) (synopsis "Core GNU utilities (file, text, shell)") (description "GNU Coreutils includes all of the basic command-line tools that are @@ -460,14 +413,14 @@ change. GNU make offers many powerful extensions over the standard utility.") (define-public binutils (package (name "binutils") - (version "2.31.1") + (version "2.32") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/binutils/binutils-" version ".tar.bz2")) (sha256 (base32 - "1l34hn1zkmhr1wcrgf0d4z7r3najxnw3cx2y2fk7v55zjlk3ik7z")) + "0b8767nyal1bc4cyzg5h9iis8kpkln1i3wkamig75cifj1fb2f6y")) (patches (search-patches "binutils-loongson-workaround.patch")))) (build-system gnu-build-system) @@ -637,7 +590,9 @@ store.") "glibc-hidden-visibility-ldconfig.patch" "glibc-versioned-locpath.patch" "glibc-allow-kernel-2.6.32.patch" - "glibc-reinstate-prlimit64-fallback.patch")))) + "glibc-reinstate-prlimit64-fallback.patch" + "glibc-hurd-magic-pid.patch" + "glibc-supported-locales.patch")))) (build-system gnu-build-system) ;; Glibc's <limits.h> refers to <linux/limit.h>, for instance, so glibc @@ -712,18 +667,6 @@ store.") #:tests? #f ; XXX #:phases (modify-phases %standard-phases - ,@(if (hurd-target?) - `((add-after 'unpack 'apply-hurd-patch - (lambda* (#:key inputs native-inputs - #:allow-other-keys) - ;; TODO: Move this to 'patches' field. - (let ((patch (or (assoc-ref native-inputs - "hurd-magic-pid-patch") - (assoc-ref inputs - "hurd-magic-pid-patch")))) - (invoke "patch" "-p1" "--force" "--input" - patch))))) - '()) (add-before 'configure 'pre-configure (lambda* (#:key inputs native-inputs outputs @@ -849,9 +792,7 @@ store.") ,@(if (hurd-target?) `(("mig" ,mig) - ("perl" ,perl) - ("hurd-magic-pid-patch" - ,(search-patch "glibc-hurd-magic-pid.patch"))) + ("perl" ,perl)) '()))) (native-search-paths @@ -893,6 +834,7 @@ with the Linux kernel.") "glibc-versioned-locpath.patch" "glibc-allow-kernel-2.6.32.patch" "glibc-reinstate-prlimit64-fallback.patch" + "glibc-supported-locales.patch" "glibc-CVE-2018-11236.patch" "glibc-CVE-2018-11237.patch")))) (properties `((lint-hidden-cve . ("CVE-2017-18269")))))) ; glibc-2.27-git-fixes diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm index fb4e3f4be3..4a884e6175 100644 --- a/gnu/packages/bash.scm +++ b/gnu/packages/bash.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 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 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. @@ -44,7 +44,7 @@ (define (patch-url seqno) "Return the URL of Bash patch number SEQNO." - (format #f "mirror://gnu/bash/bash-4.4-patches/bash44-~3,'0d" seqno)) + (format #f "mirror://gnu/bash/bash-5.0-patches/bash50-~3,'0d" seqno)) (define (bash-patch seqno sha256) "Return the origin of Bash patch SEQNO, with expected hash SHA256" @@ -57,33 +57,12 @@ (list (bash-patch seqno (base32 hash)) ...)) -(define %patch-series-4.4 - ;; This is the current patches series for 4.4, generated using +(define %patch-series-5.0 + ;; This is the current patches series for 5.0, generated using ;; 'download-patches' below. (patch-series - (1 "03vzy7qwjdd5qvl3ydg99naazas2qmyd0yhnrflgjbbm64axja1y") - (2 "0lrwq6vyqism3yqv9s7kzaf3dsl4q5w9r5svcqz279qp7qca083h") - (3 "1chqww2rj6g42b8s60q5zlzy0jzp684jkpsbrbfy1vzxja8mmpsi") - (4 "1cy8abf96hkrjhw921ndr0shlcnc52bg45rn6xri4v5clhq0l25d") - (5 "0a8515kyk4zsgmvlqvlganjfr7pq0j6kzpr4d6xx02kpbdr4n7i2") - (6 "1f24wgqngmj2mrj9yibwvc2zvlmn5xi53mnw777g3l40c4m2x3ka") - (7 "1bzdsnqaf05gdbqpsixhan8vygjxpcxlz1dd8d9f5jdznw3wq76y") ;CVE-2017-5932 - (8 "1firw915mjm03hbbw9a70ch3cpgrgnvqjpllgdnn6csr8q04f546") - (9 "0g1l56kvw61rpw7dqa9fcl9llkl693h73g631hrhxlm030ddssqb") - (10 "01lfhrkdsdkdz8ypzapr614ras23x7ckjnr60aa5bzkaqprccrc4") - (11 "038p7mhnq9m65g505hi3827jkf9f35nd1cy00w8mwafpyxp44mnx") - (12 "0gh6lbb1rwpk44pvbamm6vzdfi50xnwkqd9v7s8cjwk3pz973hps") - (13 "1djkx0w9v62q78gz3jsvamj1jq53i6hbfrfhhsw86ihwpjnfy98v") - (14 "0z5ikcq9zyxw79d0z36r5p0mspnb5piavbv03jmlan1wnknmrxx7") - (15 "09n307fi1j257abhm295k6ksmnzw47ka2zhnr0i5lbdnpvn04xnk") - (16 "1cgi1y6mifm8hsgv4avj5ih76535js3qba1sqwbfvp7si76927sh") - (17 "0w6jpj2giakji1ir83rpkx1y7n7xqppah3j748m6dm38hywr0gvp") - (18 "1k58h4wxbsg7r4rwhrvzx5hfbapba2nxjysbhh6qp6ki5ys99i2v") - (19 "07n1i5610lbs672x1s8g82qn3qfj06s0ip3z80sri0g8vxp0s5r7") - (20 "0b2jk5n1af1vh590qfc52hv65mafb4vl1xv26s8j5a3byb5y4h0q") - (21 "1hblcd2xmqqlp0idnavw66570n7m0yv5rbbr873c2gkn982mk3xx") - (22 "0yfbjzr79vzjs2hyi5m8iy2b38fq7vikdfa4zqdvjsp36q4iycs5") - (23 "1dlism6qdx60nvzj0v7ndr7lfahl4a8zmzckp13hqgdx7xpj7v2g"))) + (1 "12bjfdy6bg8nhyw27bdgxn7h4paylx8d927skfmi9pxd1wgrxzpj") + (2 "01w7yrzmz10mw06ys0546vhl7isv2v402ziyvfd7k67588spvs47"))) (define (download-patches store count) "Download COUNT Bash patches into store. Return a list of @@ -119,7 +98,7 @@ number/base32-hash tuples, directly usable in the 'patch-series' form." " -Wl,-rpath -Wl," (assoc-ref %build-inputs "ncurses") "/lib"))) - (version "4.4")) + (version "5.0")) (package (name "bash") (source (origin @@ -128,11 +107,10 @@ number/base32-hash tuples, directly usable in the 'patch-series' form." "mirror://gnu/bash/bash-" version ".tar.gz")) (sha256 (base32 - "1jyz6snd63xjn6skk7za6psgidsd53k05cr3lksqybi0q6936syq")) + "0kgvfwqdcd90waczf4gx39xnrxzijhjrzyzv7s8v4w31qqm0za5l")) (patch-flags '("-p0")) - (patches %patch-series-4.4))) - (version (string-append version "." - (number->string (length %patch-series-4.4)))) + (patches %patch-series-5.0))) + (version (string-append version "." (number->string (length %patch-series-5.0)))) (build-system gnu-build-system) (outputs '("out" diff --git a/gnu/packages/bdw-gc.scm b/gnu/packages/bdw-gc.scm index c7491f845f..7196ffcd32 100644 --- a/gnu/packages/bdw-gc.scm +++ b/gnu/packages/bdw-gc.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016, 2018 Leo Famulari <leo@famulari.name> ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org> +;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -30,14 +31,14 @@ (define-public libgc (package (name "libgc") - (version "7.6.6") + (version "7.6.12") (source (origin (method url-fetch) (uri (string-append "https://github.com/ivmai/bdwgc/releases" "/download/v" version "/gc-" version ".tar.gz")) (sha256 (base32 - "1p1r015a7jbpvkkbgzv1y8nxrbbp6dg0mq3ksi6ji0qdz3wfss79")))) + "10jhhi79d5brwlsyhwgpnrmc8nhlf7aan2lk9xhgihk5jc6srbvc")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -53,7 +54,19 @@ ,@(if (hurd-triplet? (or (%current-system) (%current-target-system))) '("--disable-gcj-support") - '())))) + '())) + #:phases (modify-phases %standard-phases + (add-after 'unpack 'adjust-pc-file + (lambda* (#:key inputs #:allow-other-keys) + (let ((libatomic-ops (assoc-ref inputs "libatomic-ops"))) + ;; GC 7.6.10 and later includes -latomic_ops in the + ;; pkg-config file. To avoid propagation, insert an + ;; absolute reference so dependent programs can find it. + (substitute* "bdw-gc.pc.in" + (("@ATOMIC_OPS_LIBS@" match) + (string-append "-L" libatomic-ops "/lib " + match))) + #t)))))) (native-inputs `(("pkg-config" ,pkg-config))) (inputs `(("libatomic-ops" ,libatomic-ops))) (outputs '("out" "debug")) @@ -91,7 +104,7 @@ C or C++ programs, though that is not its primary goal.") (define-public libatomic-ops (package (name "libatomic-ops") - (version "7.6.6") + (version "7.6.10") (source (origin (method url-fetch) (uri (string-append @@ -99,7 +112,7 @@ C or C++ programs, though that is not its primary goal.") version "/libatomic_ops-" version ".tar.gz")) (sha256 (base32 - "0x7071z707msvyrv9dmgahd1sghbkw8fpbagvcag6xs8yp2spzlr")))) + "1bwry043f62pc4mgdd37zx3fif19qyrs8f5bw7qxlmkzh5hdyzjq")))) (build-system gnu-build-system) (outputs '("out" "debug")) (synopsis "Accessing hardware atomic memory update operations") diff --git a/gnu/packages/bison.scm b/gnu/packages/bison.scm index 71de47762d..ae37a8f80c 100644 --- a/gnu/packages/bison.scm +++ b/gnu/packages/bison.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 © 2019 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -30,7 +31,7 @@ (define-public bison (package (name "bison") - (version "3.0.5") + (version "3.3.2") (source (origin (method url-fetch) @@ -38,7 +39,7 @@ version ".tar.xz")) (sha256 (base32 - "0f7kjygrckkx8vas2nm673592jif0a9mw5g8207f6hj6h4pfyp07")))) + "016qp59wxakz3ckxwyrmzxk406q0h286ydz8ww1m0pnrc5dy97h3")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl) ;; m4 is not present in PATH when cross-building. diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm index a3ecbeb076..16ed15c237 100644 --- a/gnu/packages/bootstrap.scm +++ b/gnu/packages/bootstrap.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -43,10 +44,13 @@ %bootstrap-guile %bootstrap-coreutils&co + %bootstrap-linux-libre-headers %bootstrap-binutils %bootstrap-gcc %bootstrap-glibc - %bootstrap-inputs)) + %bootstrap-inputs + %bootstrap-mescc-tools + %bootstrap-mes)) ;;; Commentary: ;;; @@ -97,10 +101,10 @@ (define* (package-from-tarball name source program-to-test description #:key snippet) "Return a package that correspond to the extraction of SOURCE. -PROGRAM-TO-TEST is a program to run after extraction of SOURCE, to check -whether everything is alright. If SNIPPET is provided, it is evaluated after -extracting SOURCE. SNIPPET should raise an exception to signal an error; its -return value is ignored." +PROGRAM-TO-TEST is #f or a string: the program to run after extraction of +SOURCE to check whether everything is alright. If SNIPPET is provided, it is +evaluated after extracting SOURCE. SNIPPET should return true if successful, +or false to signal an error." (package (name name) (version "0") @@ -109,22 +113,25 @@ return value is ignored." `(#:guile ,%bootstrap-guile #:modules ((guix build utils)) #:builder - (let ((out (assoc-ref %outputs "out")) - (tar (assoc-ref %build-inputs "tar")) - (xz (assoc-ref %build-inputs "xz")) - (tarball (assoc-ref %build-inputs "tarball"))) + (begin (use-modules (guix build utils)) - (mkdir out) - (copy-file tarball "binaries.tar.xz") - (invoke xz "-d" "binaries.tar.xz") - (let ((builddir (getcwd))) - (with-directory-excursion out - (invoke tar "xvf" - (string-append builddir "/binaries.tar")) - ,@(if snippet (list snippet) '()) - (invoke (string-append "bin/" ,program-to-test) - "--version")))))) + (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))) + (with-directory-excursion out + (invoke tar "xvf" + (string-append builddir "/binaries.tar")) + ,@(if snippet (list snippet) '()) + (or (not ,program-to-test) + (invoke (string-append "bin/" ,program-to-test) + "--version")))))))) (inputs `(("tar" ,(search-bootstrap-binary "tar" (%current-system))) ("xz" ,(search-bootstrap-binary "xz" (%current-system))) @@ -392,6 +399,22 @@ $out/bin/guile --version~%" (("^exec grep") (string-append (getcwd) "/bin/grep")))) (chmod "bin" #o555)))) +(define-public %bootstrap-linux-libre-headers + (package-from-tarball + "linux-libre-headers-bootstrap" + (lambda (system) + (origin + (method url-fetch) + (uri (map (cute string-append <> + "/i686-linux/20181020/" + "linux-libre-headers-stripped-4.14.67-i686-linux.tar.xz") + %bootstrap-base-urls)) + (sha256 + (base32 + "0sm2z9x4wk45bh6qfs94p0w1d6hsy6dqx9sw38qsqbvxwa1qzk8s")))) + #f ; no program to test + "Bootstrap linux-libre-headers")) + (define %bootstrap-binutils (package-from-tarball "binutils-bootstrap" (lambda (system) @@ -437,28 +460,30 @@ $out/bin/guile --version~%" `(#:guile ,%bootstrap-guile #:modules ((guix build utils)) #:builder - (let ((out (assoc-ref %outputs "out")) - (tar (assoc-ref %build-inputs "tar")) - (xz (assoc-ref %build-inputs "xz")) - (tarball (assoc-ref %build-inputs "tarball"))) + (begin (use-modules (guix build utils)) - (mkdir out) - (copy-file tarball "binaries.tar.xz") - (invoke xz "-d" "binaries.tar.xz") - (let ((builddir (getcwd))) - (with-directory-excursion out - (invoke tar "xvf" - (string-append builddir - "/binaries.tar")) - (chmod "lib" #o755) - - ;; Patch libc.so so it refers to the right path. - (substitute* "lib/libc.so" - (("/[^ ]+/lib/(libc|ld)" _ prefix) - (string-append out "/lib/" prefix))) - - #t))))) + (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))) + (with-directory-excursion out + (invoke tar "xvf" + (string-append builddir + "/binaries.tar")) + (chmod "lib" #o755) + + ;; Patch libc.so so it refers to the right path. + (substitute* "lib/libc.so" + (("/[^ ]+/lib/(libc|ld)" _ prefix) + (string-append out "/lib/" prefix))) + + #t)))))) (inputs `(("tar" ,(search-bootstrap-binary "tar" (%current-system))) ("xz" ,(search-bootstrap-binary "xz" (%current-system))) @@ -508,39 +533,41 @@ $out/bin/guile --version~%" `(#:guile ,%bootstrap-guile #:modules ((guix build utils)) #:builder - (let ((out (assoc-ref %outputs "out")) - (tar (assoc-ref %build-inputs "tar")) - (xz (assoc-ref %build-inputs "xz")) - (bash (assoc-ref %build-inputs "bash")) - (libc (assoc-ref %build-inputs "libc")) - (tarball (assoc-ref %build-inputs "tarball"))) + (begin (use-modules (guix build utils) (ice-9 popen)) - (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"))) - - (with-directory-excursion bindir - (chmod "." #o755) - (rename-file "gcc" ".gcc-wrapped") - (call-with-output-file "gcc" - (lambda (p) - (format p "#!~a + (let ((out (assoc-ref %outputs "out")) + (tar (assoc-ref %build-inputs "tar")) + (xz (assoc-ref %build-inputs "xz")) + (bash (assoc-ref %build-inputs "bash")) + (libc (assoc-ref %build-inputs "libc")) + (tarball (assoc-ref %build-inputs "tarball"))) + + (mkdir 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"))) + + (with-directory-excursion bindir + (chmod "." #o755) + (rename-file "gcc" ".gcc-wrapped") + (call-with-output-file "gcc" + (lambda (p) + (format p "#!~a exec ~a/bin/.gcc-wrapped -B~a/lib \ -Wl,-rpath -Wl,~a/lib \ -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" - bash - out libc libc libc - ,(glibc-dynamic-linker)))) + bash + out libc libc libc + ,(glibc-dynamic-linker)))) - (chmod "gcc" #o555) - #t))))) + (chmod "gcc" #o555) + #t)))))) (inputs `(("tar" ,(search-bootstrap-binary "tar" (%current-system))) ("xz" ,(search-bootstrap-binary "xz" (%current-system))) @@ -548,33 +575,33 @@ exec ~a/bin/.gcc-wrapped -B~a/lib \ ("libc" ,%bootstrap-glibc) ("tarball" ,(bootstrap-origin (origin - (method url-fetch) - (uri (map (cut string-append <> "/" (%current-system) - (match (%current-system) - ("armhf-linux" - "/20150101/gcc-4.8.4.tar.xz") - ("aarch64-linux" - "/20170217/gcc-5.4.0.tar.xz") - (_ - "/20131110/gcc-4.8.2.tar.xz"))) - %bootstrap-base-urls)) - (sha256 - (match (%current-system) - ("x86_64-linux" - (base32 - "17ga4m6195n4fnbzdkmik834znkhs53nkypp6557pl1ps7dgqbls")) - ("i686-linux" - (base32 - "150c1arrf2k8vfy6dpxh59vcgs4p1bgiz2av5m19dynpks7rjnyw")) - ("armhf-linux" - (base32 - "0ghz825yzp43fxw53kd6afm8nkz16f7dxi9xi40bfwc8x3nbbr8v")) - ("aarch64-linux" - (base32 - "1ar3vdzyqbfm0z36kmvazvfswxhcihlacl2dzdjgiq25cqnq9ih1")) - ("mips64el-linux" - (base32 - "1m5miqkyng45l745n0sfafdpjkqv9225xf44jqkygwsipj2cv9ks"))))))))) + (method url-fetch) + (uri (map (cut string-append <> "/" (%current-system) + (match (%current-system) + ("armhf-linux" + "/20150101/gcc-4.8.4.tar.xz") + ("aarch64-linux" + "/20170217/gcc-5.4.0.tar.xz") + (_ + "/20131110/gcc-4.8.2.tar.xz"))) + %bootstrap-base-urls)) + (sha256 + (match (%current-system) + ("x86_64-linux" + (base32 + "17ga4m6195n4fnbzdkmik834znkhs53nkypp6557pl1ps7dgqbls")) + ("i686-linux" + (base32 + "150c1arrf2k8vfy6dpxh59vcgs4p1bgiz2av5m19dynpks7rjnyw")) + ("armhf-linux" + (base32 + "0ghz825yzp43fxw53kd6afm8nkz16f7dxi9xi40bfwc8x3nbbr8v")) + ("aarch64-linux" + (base32 + "1ar3vdzyqbfm0z36kmvazvfswxhcihlacl2dzdjgiq25cqnq9ih1")) + ("mips64el-linux" + (base32 + "1m5miqkyng45l745n0sfafdpjkqv9225xf44jqkygwsipj2cv9ks"))))))))) (native-search-paths (list (search-path-specification (variable "CPATH") @@ -587,12 +614,116 @@ exec ~a/bin/.gcc-wrapped -B~a/lib \ (home-page #f) (license gpl3+))) -(define %bootstrap-inputs +(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" ,(search-bootstrap-binary "tar" (%current-system))) + ("xz" ,(search-bootstrap-binary "xz" (%current-system))) + ("tarball" + ,(bootstrap-origin + (origin + (method url-fetch) + (uri (map + (cute string-append <> + "/i686-linux/20181020/" + "mescc-tools-static-0.5.2-0.bb062b0-i686-linux.tar.xz") + %bootstrap-base-urls)) + (sha256 + (base32 + "11lniw0vg61kmyhvnwkmcnkci9ym6hbmiksiqggd0hkipbq7hvlz"))))))) + (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" ,(search-bootstrap-binary "tar" (%current-system))) + ("xz" ,(search-bootstrap-binary "xz" (%current-system))) + ("tarball" + ,(bootstrap-origin + (origin + (method url-fetch) + (uri (map + (cute string-append <> + "/i686-linux/20181020/" + "mes-minimal-stripped-0.19-i686-linux.tar.xz") + %bootstrap-base-urls)) + (sha256 + (base32 + "0k7kkl68a6xaadv47ij0nr9jm5ca1ffj38n7f2lg80y72wdkwr9h"))))))) + (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. - `(("libc" ,%bootstrap-glibc) - ("gcc" ,%bootstrap-gcc) - ("binutils" ,%bootstrap-binutils) + `(,@(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))) + (_ + `(("libc" ,%bootstrap-glibc) + ("gcc" ,%bootstrap-gcc) + ("binutils" ,%bootstrap-binutils)))) ("coreutils&co" ,%bootstrap-coreutils&co) ;; In gnu-build-system.scm, we rely on the availability of Bash. diff --git a/gnu/packages/bootstrap/x86_64-linux/bash b/gnu/packages/bootstrap/x86_64-linux/bash Binary files differdeleted file mode 100755 index b9c410b7cf..0000000000 --- a/gnu/packages/bootstrap/x86_64-linux/bash +++ /dev/null diff --git a/gnu/packages/bootstrap/x86_64-linux/mkdir b/gnu/packages/bootstrap/x86_64-linux/mkdir Binary files differdeleted file mode 100755 index f8250ae693..0000000000 --- a/gnu/packages/bootstrap/x86_64-linux/mkdir +++ /dev/null diff --git a/gnu/packages/bootstrap/x86_64-linux/tar b/gnu/packages/bootstrap/x86_64-linux/tar Binary files differdeleted file mode 100755 index 90e492f89d..0000000000 --- a/gnu/packages/bootstrap/x86_64-linux/tar +++ /dev/null diff --git a/gnu/packages/bootstrap/x86_64-linux/xz b/gnu/packages/bootstrap/x86_64-linux/xz Binary files differdeleted file mode 100755 index 6bfe3c6d96..0000000000 --- a/gnu/packages/bootstrap/x86_64-linux/xz +++ /dev/null diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm index 9a88a8d873..69fe278728 100644 --- a/gnu/packages/check.scm +++ b/gnu/packages/check.scm @@ -133,14 +133,14 @@ with a flexible variety of user interfaces.") (define-public cppunit (package (name "cppunit") - (version "1.13.2") + (version "1.14.0") (source (origin (method url-fetch) (uri (string-append "http://dev-www.libreoffice.org/src/" name "-" version ".tar.gz")) (sha256 (base32 - "17s2kzmkw3kfjhpp72rfppyd7syr7bdq5s69syj2nvrlwd3d4irz")))) + "1027cyfx5gsjkdkaf6c2wnjh68882grw8n672018cj3vs9lrhmix")))) ;; Explicitly link with libdl. This is expected to be done by packages ;; relying on cppunit for their tests. However, not all of them do. ;; If we added the linker flag to such packages, we would pollute all @@ -155,23 +155,6 @@ unit testing. Test output is in XML for automatic testing and GUI based for supervised tests.") (license license:lgpl2.1))) ; no copyright notices. LGPL2.1 is in the tarball -;; Some packages require this newer version of cppunit. However, it needs -;; C++11 support, which is not enabled by default in our current GCC, and -;; updating in-place would require adding CXXFLAGS to many dependent packages. -;; Thus, keep as a separate variable for now. -;; TODO: Remove this when our default GCC is updated to 6 or higher. -(define-public cppunit-1.14 - (package - (inherit cppunit) - (version "1.14.0") - (source (origin - (method url-fetch) - (uri (string-append "https://dev-www.libreoffice.org/src/" - "cppunit-" version ".tar.gz")) - (sha256 - (base32 - "1027cyfx5gsjkdkaf6c2wnjh68882grw8n672018cj3vs9lrhmix")))))) - ;; When dependent packages upgraded to use newer version of catch, this one should ;; be removed. (define-public catch-framework @@ -701,31 +684,35 @@ standard library.") (define-public python-pytest (package (name "python-pytest") - (version "3.8.0") + (version "4.3.0") (source (origin (method url-fetch) (uri (pypi-uri "pytest" version)) + (patches (search-patches "python-pytest-pluggy-compat.patch")) (sha256 (base32 - "17grcfvd6ggvvqmprwv5y8g319nayam70hr43ssjwj40ws27z858")))) + "077gzimi9xiiyzpc3xjpb5yfgz038xkldg91mmbdvzr7z15isyh6")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases - (add-before 'check 'disable-invalid-tests + (replace 'check (lambda _ - ;; Some tests involves the /usr directory, and fails. - (substitute* "testing/test_argcomplete.py" - (("def test_remove_dir_prefix\\(self\\):") - "@pytest.mark.xfail\n def test_remove_dir_prefix(self):")) - (substitute* "testing/test_argcomplete.py" - (("def test_remove_dir_prefix" line) - (string-append "@pytest.mark.skip" - "(reason=\"Assumes that /usr exists.\")\n " - line))) - #t)) - (replace 'check (lambda _ (invoke "pytest" "-vv")))))) + (invoke "pytest" "-vv" "-k" + (string-append + ;; These tests involve the /usr directory, and fails. + "not test_remove_dir_prefix" + " and not test_argcomplete" + ;; This test tries to override PYTHONPATH, and + ;; subsequently fails to locate the test libraries. + " and not test_collection" + ;; These tests fail when run in verbose mode: + ;; <https://github.com/pytest-dev/pytest/issues/4879>. + " and not test_dont_rewrite_if_hasattr_fails" + " and not test_len" + " and not test_custom_repr" + " and not test_name"))))))) (propagated-inputs `(("python-atomicwrites" ,python-atomicwrites) ("python-attrs" ,python-attrs-bootstrap) @@ -815,14 +802,14 @@ supports coverage of subprocesses.") (define-public python-pytest-runner (package (name "python-pytest-runner") - (version "4.2") + (version "4.4") (source (origin (method url-fetch) (uri (pypi-uri "pytest-runner" version)) (sha256 (base32 - "1gkpyphawxz38ni1gdq1fmwyqcg02m7ypzqvv46z06crwdxi2gyj")))) + "1x0d9n40lsiphblbs61rdc0d5r31f6vh0vcahqdv0mffakbnrb80")))) (build-system python-build-system) (native-inputs `(("python-pytest" ,python-pytest-bootstrap) @@ -1245,14 +1232,14 @@ have failed since the last commit or what tests are currently failing."))) (define-public python-coverage (package (name "python-coverage") - (version "4.4.1") + (version "4.5.3") (source (origin (method url-fetch) (uri (pypi-uri "coverage" version)) (sha256 (base32 - "097l4s3ssxm1vncsn0nw3a1pbzah28773q36c1ab9wz01r04973s")))) + "02f6m073qdispn96rc616hg0rnmw1pgqzw3bgxwiwza4zf9hirlx")))) (build-system python-build-system) (arguments ;; FIXME: 95 tests failed, 539 passed, 6 skipped, 2 errors. @@ -1515,17 +1502,16 @@ instantly.") (define-public python-hypothesis (package (name "python-hypothesis") - (version "3.70.3") + (version "4.7.19") (source (origin (method url-fetch) (uri (pypi-uri "hypothesis" version)) (sha256 (base32 - "1rshs1japfmwgar98yrkq4hg4z2q76hlnq7w2n3lfbjnscn1jd9b")))) + "18740bkpvj4ygmvzxnhakxdmj2igvgyayczyajll9gz5x47d9mjy")))) (build-system python-build-system) (native-inputs - `(;; FIXME: Change to python-flake8 in the next rebuild cycle. - ("python-flake8" ,python-flake8-3.5) + `(("python-flake8" ,python-flake8) ("python-pytest" ,python-pytest-bootstrap))) (propagated-inputs `(("python-attrs" ,python-attrs-bootstrap) diff --git a/gnu/packages/cmake.scm b/gnu/packages/cmake.scm index 7186cf98df..b999c0c170 100644 --- a/gnu/packages/cmake.scm +++ b/gnu/packages/cmake.scm @@ -8,6 +8,8 @@ ;;; Copyright © 2017, 2018 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com> + ;;; ;;; This file is part of GNU Guix. ;;; @@ -39,12 +41,17 @@ #:use-module (gnu packages file) #:use-module (gnu packages libevent) #:use-module (gnu packages ncurses) - #:use-module (gnu packages xml)) + #:use-module (gnu packages python-xyz) + #:use-module (gnu packages texinfo) + #:use-module (gnu packages xml) + #:use-module (srfi srfi-1)) -(define-public cmake +;;; This minimal variant of CMake does not include the documentation. It is +;;; used by the cmake-build-system. +(define-public cmake-minimal (package - (name "cmake") - (version "3.13.1") + (name "cmake-minimal") + (version "3.14.0") (source (origin (method url-fetch) (uri (string-append "https://www.cmake.org/files/v" @@ -52,7 +59,7 @@ "/cmake-" version ".tar.gz")) (sha256 (base32 - "04123d7fgnn1fs5p0nwyq397ss89r0y4wkg9a09qiwkjsvk1rzmy")) + "00jmwwkr3ybsr4hz4hgiv75zaak5yirp110zf131kby2ndkvlxma")) (modules '((guix build utils))) (snippet '(begin @@ -72,6 +79,23 @@ (build-system gnu-build-system) (arguments `(#:test-target "test" + #:configure-flags + (let ((out (assoc-ref %outputs "out")) + (parallel-job-count (number->string (parallel-job-count)))) + (list "--verbose" + (string-append "--parallel=" parallel-job-count) + (string-append "--prefix=" out) + "--system-libs" + "--no-system-jsoncpp" ; FIXME: Circular dependency. + ;; By default, the man pages and other docs land + ;; in PREFIX/man and PREFIX/doc, but we want them + ;; in share/{man,doc}. Note that unlike + ;; autoconf-generated configure scripts, cmake's + ;; configure prepends "PREFIX/" to what we pass + ;; to --mandir and --docdir. + "--mandir=share/man" + ,(string-append "--docdir=share/doc/cmake-" + (version-major+minor version)))) #:make-flags (let ((skipped-tests (list "BundleUtilities" ; This test fails on Guix. @@ -116,27 +140,13 @@ ;; Help cmake's bootstrap process to find system libraries (begin (setenv "CMAKE_LIBRARY_PATH" (getenv "LIBRARY_PATH")) - (setenv "CMAKE_INCLUDE_PATH" (getenv "C_INCLUDE_PATH")) + (setenv "CMAKE_INCLUDE_PATH" (or (getenv "CPATH") + (getenv "C_INCLUDE_PATH"))) #t))) + ;; CMake uses its own configure script. (replace 'configure - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (invoke - "./configure" "--verbose" - (string-append "--parallel=" (number->string (parallel-job-count))) - (string-append "--prefix=" out) - "--system-libs" - "--no-system-jsoncpp" ; FIXME: Circular dependency. - ;; By default, the man pages and other docs land - ;; in PREFIX/man and PREFIX/doc, but we want them - ;; in share/{man,doc}. Note that unlike - ;; autoconf-generated configure scripts, cmake's - ;; configure prepends "PREFIX/" to what we pass - ;; to --mandir and --docdir. - "--mandir=share/man" - ,(string-append - "--docdir=share/doc/cmake-" - (version-major+minor version))))))))) + (lambda* (#:key (configure-flags '()) #:allow-other-keys) + (apply invoke "./configure" configure-flags)))))) (inputs `(("bzip2" ,bzip2) ("curl" ,curl) @@ -158,12 +168,47 @@ CMake is used to control the software compilation process using simple platform and compiler independent configuration files. CMake generates native makefiles and workspaces that can be used in the compiler environment of your choice.") - (license (list license:bsd-3 ; cmake - license:bsd-4 ; cmcompress - license:bsd-2 ; cmlibarchive - license:expat ; cmjsoncpp is dual MIT/public domain + (properties '((hidden? . #t))) + (license (list license:bsd-3 ; cmake + license:bsd-4 ; cmcompress + license:bsd-2 ; cmlibarchive + license:expat ; cmjsoncpp is dual MIT/public domain license:public-domain)))) ; cmlibarchive/archive_getdate.c +(define-public cmake + (package + (inherit cmake-minimal) + (name "cmake") + (arguments + (substitute-keyword-arguments (package-arguments cmake-minimal) + ((#:configure-flags configure-flags ''()) + `(append ,configure-flags + ;; Extra configure flags used to generate the documentation. + '("--sphinx-info" + "--sphinx-man" + "--sphinx-html"))) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'install 'move-html-doc + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (doc (assoc-ref outputs "doc")) + (html (string-append "/share/doc/cmake-" + ,(version-major+minor + (package-version cmake-minimal)) + "/html"))) + (copy-recursively (string-append out html) + (string-append doc html)) + (delete-file-recursively (string-append out html)) + #t))))))) + ;; Extra inputs required to build the documentation. + (native-inputs + `(,@(package-native-inputs cmake-minimal) + ("python-sphinx" ,python-sphinx) + ("texinfo" ,texinfo))) + (outputs '("out" "doc")) + (properties (alist-delete 'hidden? (package-properties cmake-minimal))))) + (define-public emacs-cmake-mode (package (inherit cmake) diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index 0aa65fe638..a76867f426 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -3,8 +3,10 @@ ;;; Copyright © 2014 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org> ;;; Copyright © 2014, 2015, 2017 Mark H Weaver <mhw@netris.org> -;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> +;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -28,6 +30,7 @@ #:use-module (gnu packages bootstrap) #:use-module (gnu packages base) #:use-module (gnu packages bash) + #:use-module (gnu packages c) #:use-module (gnu packages gcc) #:use-module (gnu packages m4) #:use-module (gnu packages code) @@ -39,6 +42,7 @@ #:use-module (gnu packages gettext) #:use-module (gnu packages multiprecision) #:use-module (gnu packages compression) + #:use-module (gnu packages mes) #:use-module (gnu packages perl) #:use-module (gnu packages linux) #:use-module (gnu packages hurd) @@ -78,6 +82,1322 @@ ;;; ;;; Code: +(define mes-boot + (package-with-bootstrap-guile + (package + (inherit mes) + (name "mes-boot") + (inputs '()) + (propagated-inputs '()) + (native-inputs + `(("mescc-tools" ,%bootstrap-mescc-tools) + ("nyacc-source" ,(package-source nyacc)) + + ("coreutils" , %bootstrap-coreutils&co) + ("bootstrap-mes" ,%bootstrap-mes))) + (arguments + `(#:implicit-inputs? #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")) + (bootstrap-mes (assoc-ref %build-inputs "bootstrap-mes"))) + (with-directory-excursion ".." + (and + (mkdir-p "nyacc-source") + (invoke "tar" "--strip=1" "-C" "nyacc-source" "-xvf" nyacc-source) + (symlink (string-append bootstrap-mes "/share/mes/lib") "mes-seed") + #t))))) + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref %outputs "out"))) + (setenv "GUILE" "mes") + (setenv "GUILE_EFFECTIVE_VERSION" "2.2") + (setenv "GUILE_LOAD_PATH" "nyacc") + (symlink (string-append "../nyacc-source/module") "nyacc") + (invoke "bash" "configure.sh" + (string-append "--prefix=" out))))) + (replace 'build + (lambda _ + (let ((mes (assoc-ref %build-inputs "bootstrap-mes"))) + (setenv "MES_PREFIX" (string-append mes "/share/mes")) + (setenv "MES_ARENA" "100000000") + (setenv "MES_MAX_ARENA" "100000000") + (setenv "MES_STACK" "10000000") + (invoke "sh" "bootstrap.sh")))) + (replace 'check + (lambda _ + (and + (setenv "DIFF" "sh scripts/diff.scm") + ;; fail fast tests + ;; (invoke "sh" "-x" "build-aux/test.sh" "scaffold/tests/t") + ;; (invoke "sh" "-x" "build-aux/test.sh" "scaffold/tests/63-struct-cell") + (invoke "sh" "check.sh")))) + (replace 'install + (lambda _ + (invoke "sh" "install.sh")))))) + (native-search-paths + ;; Use the language-specific variables rather than 'CPATH' because they + ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'. + ;; The intent is to allow headers that are in the search path to be + ;; treated as "system headers" (headers exempt from warnings) just like + ;; the typical /usr/include headers on an FHS system. + (list (search-path-specification + (variable "C_INCLUDE_PATH") + (files '("share/mes/include"))) + (search-path-specification + (variable "LIBRARY_PATH") + (files '("share/mes/lib")))))))) + +(define tcc-boot0 + ;; Pristine tcc cannot be built by MesCC, we are keeping a delta of 11 + ;; 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 + ;; ported to 0.9.27, alas the resulting tcc is buggy. Once MesCC is more + ;; mature, this package should use the 0.9.27 sources (or later). + (let ((version "0.9.26") + (revision "6") + (commit "c004e9a34fb026bb44d211ab98bb768e79900eef")) + (package-with-bootstrap-guile + (package + (inherit tcc) + (name "tcc-boot0") + (version (string-append version "-" revision "." (string-take commit 7))) + (source (origin + (method url-fetch) + (uri (string-append "https://gitlab.com/janneke/tinycc" + "/-/archive/" commit + "/tinycc-" commit ".tar.gz")) + (sha256 + (base32 + "1hmzn1pq0x22ppd80hyrn5qzqq94mxd0ychzj6vrr2vnj2frjv5b")))) + (build-system gnu-build-system) + (supported-systems '("i686-linux" "x86_64-linux")) + (inputs '()) + (propagated-inputs '()) + (native-inputs + `(("mes" ,mes-boot) + ("mescc-tools" ,%bootstrap-mescc-tools) + ("nyacc-source" ,(package-source nyacc)) + + ("coreutils" , %bootstrap-coreutils&co) + ("bootstrap-mes" ,%bootstrap-mes))) + (arguments + `(#:implicit-inputs? #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* (#:key outputs #:allow-other-keys) + (let* ((coreutils (assoc-ref %build-inputs "coreutils")) + (nyacc-source (assoc-ref %build-inputs "nyacc-source")) + (bootstrap-mes (assoc-ref %build-inputs "bootstrap-mes"))) + (setenv "PATH" (string-append + coreutils "/bin")) + (format (current-error-port) "PATH=~s\n" (getenv "PATH")) + (with-directory-excursion ".." + (and + (mkdir-p "nyacc-source") + (invoke "tar" "--strip=1" "-C" "nyacc-source" + "-xvf" nyacc-source) + (symlink (string-append bootstrap-mes "/share/mes/lib") "mes-seed") + #t))))) + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref %outputs "out")) + (dir (with-directory-excursion ".." (getcwd))) + (coreutils (assoc-ref %build-inputs "coreutils")) + (mes (assoc-ref %build-inputs "mes")) + (mescc-tools (assoc-ref %build-inputs "mescc-tools")) + (libc (assoc-ref %build-inputs "libc")) + (interpreter (if libc + ;; also for x86_64-linux, we are still on i686-linux + (string-append libc ,(glibc-dynamic-linker "i686-linux")) + (string-append mes "/lib/mes-loader")))) + (setenv "PATH" (string-append + coreutils "/bin" + ":" mes "/bin" + ":" mescc-tools "/bin")) + (format (current-error-port) "PATH=~s\n" (getenv "PATH")) + + (setenv "PREFIX" out) + (symlink (string-append mes "/share/mes") "mes") + (symlink (string-append "../nyacc-source/module") "nyacc") + (setenv "MES_PREFIX" "mes") + (setenv "MES_ARENA" "100000000") + (setenv "MES_MAX_ARENA" "100000000") + (setenv "MES_STACK" "10000000") + (setenv "MES" "mes") + (setenv "GUILE_LOAD_PATH" "nyacc") + (invoke "sh" "configure" + "--prefix=$PREFIX" + (string-append "--elfinterp=" interpreter) + "--crtprefix=." + "--tccdir=.")))) + (replace 'build + (lambda _ + (substitute* "bootstrap.sh" + (("^ cmp") "# cmp")) + (invoke "sh" "bootstrap.sh"))) + (replace 'check + (lambda _ + (setenv "DIFF" "diff.scm") + (setenv "OBJDUMP" "true") + ;; fail fast tests + ;; (invoke "sh" "test.sh" "mes/scaffold/tests/30-strlen") + ;; (invoke "sh" "-x" "test.sh" "mes/scaffold/tinycc/00_assignment") + (setenv "TCC" "./tcc") + (invoke "sh" "check.sh"))) + (replace 'install + (lambda _ + (invoke "sh" "install.sh")))))) + (native-search-paths + ;; Use the language-specific variables rather than 'CPATH' because they + ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'. + ;; The intent is to allow headers that are in the search path to be + ;; treated as "system headers" (headers exempt from warnings) just like + ;; the typical /usr/include headers on an FHS system. + (list (search-path-specification + (variable "C_INCLUDE_PATH") + (files '("include"))) + (search-path-specification + (variable "LIBRARY_PATH") + (files '("lib"))))))))) + +(define tcc-boot + (package-with-bootstrap-guile + (package + (inherit tcc-boot0) + (name "tcc-boot") + (version "0.9.27") + (source (origin + (inherit (package-source tcc)) + (patches (search-patches "tcc-boot-0.9.27.patch")))) + (build-system gnu-build-system) + (inputs '()) + (propagated-inputs '()) + (native-inputs + `(("mes" ,mes-boot) + ("tcc" ,tcc-boot0) + + ("coreutils" , %bootstrap-coreutils&co))) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:strip-binaries? #f ; binutil's strip b0rkes MesCC/M1/hex2 + ; binaries, tcc-boot also comes with + ; MesCC/M1/hex2-built binaries + #:phases + (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref %outputs "out")) + (coreutils (assoc-ref %build-inputs "coreutils")) + (mes (assoc-ref %build-inputs "mes")) + (tcc (assoc-ref %build-inputs "tcc")) + (libc (assoc-ref %build-inputs "libc")) + (interpreter (if libc + ;; also for x86_64-linux, we are still on i686-linux + (string-append libc ,(glibc-dynamic-linker "i686-linux")) + (string-append mes "/lib/mes-loader")))) + ;; unpack + (setenv "PATH" (string-append + coreutils "/bin" + ":" tcc "/bin")) + (format (current-error-port) "PATH=~s\n" (getenv "PATH")) + (invoke "sh" "configure" + (string-append "--cc=tcc") + (string-append "--cpu=i386") + (string-append "--prefix=" out) + (string-append "--elfinterp=" interpreter) + (string-append "--crtprefix=" tcc "/lib") + (string-append "--sysincludepaths=" tcc "/include") + (string-append "--libpaths=" tcc "/lib"))))) + (replace 'build + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref %outputs "out")) + (mes (assoc-ref %build-inputs "mes")) + (tcc (assoc-ref %build-inputs "tcc")) + (libc (assoc-ref %build-inputs "libc")) + (interpreter (if libc + ;; also for x86_64-linux, we are still on i686-linux + (string-append libc ,(glibc-dynamic-linker "i686-linux")) + (string-append mes "/lib/mes-loader")))) + (invoke "tcc" + "-vvv" + "-D" "BOOTSTRAP=1" + "-D" "ONE_SOURCE=1" + "-D" "TCC_TARGET_I386=1" + "-D" "CONFIG_TCC_STATIC=1" + "-D" "CONFIG_USE_LIBGCC=1" + "-D" (string-append "CONFIG_TCCDIR=\"" out "/lib/tcc\"") + "-D" (string-append "CONFIG_TCC_CRTPREFIX=\"" out "/lib:{B}/lib:.\"") + "-D" (string-append "CONFIG_TCC_CRTPREFIX=\"" out "/lib:{B}/lib:.\"") + "-D" (string-append "CONFIG_TCC_ELFINTERP=\"" interpreter "\"") + "-D" (string-append "CONFIG_TCC_LIBPATHS=\"" tcc "/lib:{B}/lib:.\"") + "-D" (string-append "CONFIG_TCC_SYSINCLUDEPATHS=\"" tcc "/include" ":/include:{B}/include\"") + "-D" (string-append "TCC_LIBGCC=\"" tcc "/lib/libc.a\"") + "-o" "tcc" + "tcc.c")))) + (replace 'check + (lambda _ + ;; FIXME: add sensible check target (without depending on make) + ;; ./check.sh ? + (= 1 (status:exit-val (system* "./tcc" "--help"))))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref %outputs "out")) + (tcc (assoc-ref %build-inputs "tcc"))) + (and + (mkdir-p (string-append out "/bin")) + (copy-file "tcc" (string-append out "/bin/tcc")) + (mkdir-p (string-append out "/lib/tcc")) + (copy-recursively (string-append tcc "/include") + (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") + (copy-file "libtcc1.a" (string-append out "/lib/libtcc1.a")) + (delete-file (string-append out "/lib/tcc/libtcc1.a")) + (copy-file "libtcc1.a" (string-append out "/lib/tcc/libtcc1.a")) + #t)))))))))) + +(define make-mesboot0 + (package-with-bootstrap-guile + (package + (inherit gnu-make) + (name "make-mesboot0") + (version "3.80") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/make/make-" + version ".tar.gz")) + (sha256 + (base32 + "1pb7fb7fqf9wz9najm85qdma1xhxzf1rhj5gwrlzdsz2zm0hpcv4")))) + (supported-systems '("i686-linux" "x86_64-linux")) + (inputs '()) + (propagated-inputs '()) + (native-inputs `(("tcc" ,tcc-boot) + + ("bash" ,%bootstrap-coreutils&co) + ("coreutils" ,%bootstrap-coreutils&co))) + (arguments + `(#:implicit-inputs? #f + #:tests? #f ; check depends on perl + #:guile ,%bootstrap-guile + #:configure-flags `("CC=tcc -DO_RDONLY=0" + "LD=tcc" + "--disable-nls") + #:phases + (modify-phases %standard-phases + (add-after 'configure 'configure-fixup + (lambda _ + (substitute* "build.sh" + (("^REMOTE=.*") "REMOTE=stub\n") + (("^extras=.*") "extras=getloadavg.c\n")) + (substitute* "make.h" + (("^extern long int lseek.*" all) (string-append "// " all))) + #t)) + (delete 'patch-generated-file-shebangs) ; no perl + (replace 'build + (lambda _ + (invoke "sh" "./build.sh"))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin"))) + (install-file "make" bin)))))))))) + +(define diffutils-mesboot + (package-with-bootstrap-guile + (package + (inherit diffutils) + (name "diffutils-mesboot") + (version "2.7") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/diffutils/diffutils-" + version ".tar.gz")) + (sha256 + (base32 + "1mirn5i825bn5w7rh6mgn0r8aj9xqanav95dwcl1b8sn82f4iwnm")))) + (supported-systems '("i686-linux" "x86_64-linux")) + (inputs '()) + (propagated-inputs '()) + (native-inputs `(("mes" ,mes-boot) + ("tcc" ,tcc-boot) + + ("bash" ,%bootstrap-coreutils&co) + ("coreutils" ,%bootstrap-coreutils&co) + ("make" ,make-mesboot0))) + (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 + #:phases + (modify-phases %standard-phases + ;; diffutils-2.7 needs more traditional configure + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (bash (assoc-ref %build-inputs "bash"))) + (setenv "CONFIG_SHELL" (string-append bash "/bin/sh")) + (setenv "CC" "tcc") + (setenv "LD" "tcc") + (invoke "./configure" (string-append "--prefix=" out))))) + (add-before 'configure 'remove-diff3-sdiff + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "Makefile.in" + (("PROGRAMS = .*" all) "PROGRAMS = cmp diff")))))))))) + + +(define binutils-mesboot0 + (package-with-bootstrap-guile + (package + (inherit binutils) + (name "binutils-mesboot0") + (version "2.20.1a") + (source (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")))) + (inputs '()) + (propagated-inputs '()) + (native-inputs `(("tcc" ,tcc-boot) + + ("bash" ,%bootstrap-coreutils&co) + ("coreutils" ,%bootstrap-coreutils&co) + ("diffutils" ,diffutils-mesboot) + ("make" ,make-mesboot0))) + (supported-systems '("i686-linux" "x86_64-linux")) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:tests? #f ; runtest: command not found + #:parallel-build? #f + #:strip-binaries? #f ; no strip yet + #:configure-flags + (let ((cppflags (string-append " -D __GLIBC_MINOR__=6" + " -D MES_BOOTSTRAP=1")) + (bash (assoc-ref %build-inputs "bash"))) + `(,(string-append "CONFIG_SHELL=" bash "/bin/sh") + ,(string-append "CPPFLAGS=" cppflags) + "AR=tcc -ar" + "CXX=false" + "RANLIB=true" + ,(string-append "CC=tcc" cppflags) + "--disable-nls" + "--disable-shared" + "--disable-werror" + "--build=i686-unknown-linux-gnu" + "--host=i686-unknown-linux-gnu" + "--with-sysroot=/"))))))) + +(define gcc-core-mesboot + ;; Gcc-2.95.3 is the most recent GCC that is supported by what the Mes C + ;; Library v0.16 offers. Gcc-3.x (and 4.x) place higher demands on a C + ;; library, such as dir.h/struct DIR/readdir, locales, signals... Also, + ;; with gcc-2.95.3, binutils-boot-2.20.1a and glibc-2.2.5 we found a GNU + ;; toolchain triplet "that works". + (package-with-bootstrap-guile + (package + (inherit gcc) + (name "gcc-core-mesboot") + (version "2.95.3") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/gcc/gcc-2.95.3/gcc-core-" + version + ".tar.gz")) + (patches (search-patches "gcc-boot-2.95.3.patch")) + (sha256 + (base32 + "1xvfy4pqhrd5v2cv8lzf63iqg92k09g6z9n2ah6ndd4h17k1x0an")))) + (supported-systems '("i686-linux" "x86_64-linux")) + (inputs '()) + (propagated-inputs '()) + (native-inputs `(("binutils" ,binutils-mesboot0) + ("tcc" ,tcc-boot) + + ("bash" ,%bootstrap-coreutils&co) + ("coreutils" ,%bootstrap-coreutils&co) + ("diffutils" ,diffutils-mesboot) + ("make" ,make-mesboot0))) + (outputs '("out")) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:tests? #f + #:parallel-build? #f + #:strip-binaries? #f + #:configure-flags + (let ((out (assoc-ref %outputs "out"))) + `("--enable-static" + "--disable-shared" + "--disable-werror" + "--build=i686-unknown-linux-gnu" + "--host=i686-unknown-linux-gnu" + ,(string-append "--prefix=" out))) + #:make-flags (list + "CC=tcc -static -D __GLIBC_MINOR__=6" + "OLDCC=tcc -static -D __GLIBC_MINOR__=6" + "CC_FOR_BUILD=tcc -static -D __GLIBC_MINOR__=6" + "AR=ar" + "RANLIB=ranlib" + (string-append "LIBGCC2_INCLUDES=-I " + (assoc-ref %build-inputs "tcc") + "/include") + "LANGUAGES=c" + (string-append "BOOT_LDFLAGS=" + " -B" (assoc-ref %build-inputs "tcc") + "/lib/")) + #:modules ((guix build gnu-build-system) + (guix build utils) + (srfi srfi-1)) + #:phases + (modify-phases %standard-phases + ;; gcc-2.95.3 needs more traditional configure + (add-before 'configure 'setenv + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (bash (assoc-ref %build-inputs "bash")) + (tcc (assoc-ref %build-inputs "tcc")) + (cppflags " -D __GLIBC_MINOR__=6")) + (setenv "CONFIG_SHELL" (string-append bash "/bin/sh")) + (setenv "CPPFLAGS" cppflags) + (setenv "CC" (string-append "tcc" cppflags)) + (setenv "CC_FOR_BUILD" (string-append "tcc" cppflags)) + (setenv "CPP" (string-append "tcc -E" cppflags)) + (with-output-to-file "config.cache" + (lambda _ + (display " +ac_cv_c_float_format='IEEE (little-endian)' +")))))) + (replace 'configure + (lambda* (#:key configure-flags #:allow-other-keys) + (format (current-error-port) + "running ./configure ~a\n" (string-join configure-flags)) + (apply invoke "./configure" configure-flags))) + (add-after 'configure 'remove-info + (lambda _ + ;; no info at this stage + (delete-file-recursively "texinfo") + (invoke "touch" "gcc/cpp.info" "gcc/gcc.info"))) + (add-after 'install 'install2 + (lambda* (#:key outputs #:allow-other-keys) + (let* ((tcc (assoc-ref %build-inputs "tcc")) + (tcc-lib (string-append tcc "/lib/x86-mes-gcc")) + (out (assoc-ref outputs "out")) + (gcc-dir (string-append + out "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3"))) + (and + (mkdir-p "tmp") + (zero? (system (string-append "set -x; cd tmp && ar x ../gcc/libgcc2.a"))) + (zero? (system (string-append "set -x; cd tmp && ar r " gcc-dir "/libgcc.a *.o"))) + (copy-file "gcc/libgcc2.a" (string-append out "/lib/libgcc2.a")) + (copy-file (string-append tcc "/lib/libtcc1.a") + (string-append out "/lib/libtcc1.a")) + (invoke "ar" "r" (string-append gcc-dir "/libc.a") + (string-append tcc-lib "/libc+gnu.o") + (string-append tcc-lib "/libtcc1.o")) + (invoke "ar" "r" (string-append out "/lib/libc.a") + (string-append tcc-lib "/libc+gnu.o") + (string-append tcc-lib "/libtcc1.o")) + (invoke "ls" "-ltrF" gcc-dir) + (copy-recursively (string-append tcc "/include") + (string-append out "/include")) + #t))))))) + (native-search-paths + ;; Use the language-specific variables rather than 'CPATH' because they + ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'. + ;; The intent is to allow headers that are in the search path to be + ;; treated as "system headers" (headers exempt from warnings) just like + ;; the typical /usr/include headers on an FHS system. + (list (search-path-specification + (variable "C_INCLUDE_PATH") + (files '("include" "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3/include"))) + (search-path-specification + (variable "LIBRARY_PATH") + (files '("lib")))))))) + +(define mesboot-headers + (package-with-bootstrap-guile + (package + (inherit mes-boot) + (name "mesboot-headers") + (supported-systems '("i686-linux" "x86_64-linux")) + (inputs '()) + (propagated-inputs '()) + (native-inputs `(("coreutils" ,%bootstrap-coreutils&co) + ("headers" ,%bootstrap-linux-libre-headers))) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:tests? #f + #:strip-binaries? #f + #:phases + (modify-phases %standard-phases + (delete 'configure) + (delete 'build) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (include (string-append out "/include")) + (headers (assoc-ref %build-inputs "headers" ))) + (mkdir-p include) + (copy-recursively "include" out) + (copy-recursively headers out) + #t)))))) + (native-search-paths + ;; Use the language-specific variables rather than 'CPATH' because they + ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'. + ;; The intent is to allow headers that are in the search path to be + ;; treated as "system headers" (headers exempt from warnings) just like + ;; the typical /usr/include headers on an FHS system. + (list (search-path-specification + (variable "C_INCLUDE_PATH") + (files '("include")))))))) + +(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 + ;; gcc. + (package-with-bootstrap-guile + (package + (inherit glibc) + (name "glibc-mesboot0") + (version "2.2.5") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/glibc/glibc-" + version + ".tar.gz")) + (patches (search-patches "glibc-boot-2.2.5.patch")) + (sha256 + (base32 + "1vl48i16gx6h68whjyhgnn1s57vqq32f9ygfa2fls7pdkbsqvp2q")))) + (supported-systems '("i686-linux" "x86_64-linux")) + (inputs '()) + (propagated-inputs '()) + (native-inputs `(("binutils" ,binutils-mesboot0) + ("gcc" ,gcc-core-mesboot) + + ("bash" ,%bootstrap-coreutils&co) + ("coreutils" ,%bootstrap-coreutils&co) + ("diffutils" ,diffutils-mesboot) + ("headers" ,mesboot-headers) + ("make" ,make-mesboot0))) + (outputs '("out")) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:tests? #f + #:strip-binaries? #f + #:parallel-build? #f ; gcc-2.95.3 ICEs on massively parallel builds + #:make-flags (list (string-append + "SHELL=" + (assoc-ref %build-inputs "bash") + "/bin/sh")) + #:configure-flags + (let ((out (assoc-ref %outputs "out")) + (headers (assoc-ref %build-inputs "headers"))) + (list + "--disable-shared" + "--enable-static" + "--disable-sanity-checks" + "--build=i686-unknown-linux-gnu" + "--host=i686-unknown-linux-gnu" + (string-append "--with-headers=" headers "/include") + "--enable-static-nss" + "--without-__thread" + "--without-cvs" + "--without-gd" + "--without-tls" + (string-append "--prefix=" out))) + #:phases + (modify-phases %standard-phases + (add-before 'configure 'setenv + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bash (assoc-ref %build-inputs "bash")) + (gcc (assoc-ref %build-inputs "gcc")) + (headers (assoc-ref %build-inputs "headers")) + (cppflags (string-append + ;;" -D __STDC__=1" + " -D MES_BOOTSTRAP=1" + " -D BOOTSTRAP_GLIBC=1")) + (cflags (string-append " -L " (getcwd)))) + (setenv "CONFIG_SHELL" (string-append bash "/bin/sh")) + (setenv "SHELL" (getenv "CONFIG_SHELL")) + (setenv "CPP" (string-append gcc "/bin/gcc -E " cppflags)) + (setenv "CC" (string-append gcc "/bin/gcc " cppflags cflags)) + #t))) + ;; glibc-2.2.5 needs a more classic invocation of configure + ;; configure: warning: CONFIG_SHELL=/gnu/store/kpxi8h3669afr9r1bgvaf9ij3y4wdyyn-bash-minimal-4.4.12/bin/bash: invalid host type + (replace 'configure + (lambda* (#:key configure-flags #:allow-other-keys) + (format (current-error-port) + "running ./configure ~a\n" (string-join configure-flags)) + (apply invoke "./configure" configure-flags)))))) + (native-search-paths + ;; Use the language-specific variables rather than 'CPATH' because they + ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'. + ;; The intent is to allow headers that are in the search path to be + ;; treated as "system headers" (headers exempt from warnings) just like + ;; the typical /usr/include headers on an FHS system. + (list (search-path-specification + (variable "C_INCLUDE_PATH") + (files '("include"))) + (search-path-specification + (variable "CPLUS_INCLUDE_PATH") + (files '("include"))) + (search-path-specification + (variable "LIBRARY_PATH") + (files '("lib")))))))) + +(define gcc-mesboot0 + (package-with-bootstrap-guile + (package + (inherit gcc-core-mesboot) + (name "gcc-mesboot0") + (native-inputs `(("binutils" ,binutils-mesboot0) + ("gcc" ,gcc-core-mesboot) + ("libc" ,glibc-mesboot0) + + ("bash" ,%bootstrap-coreutils&co) + ("coreutils" ,%bootstrap-coreutils&co) + ("diffutils" ,diffutils-mesboot) + ("kernel-headers" ,%bootstrap-linux-libre-headers) + ("make" ,make-mesboot0))) + (arguments + (substitute-keyword-arguments (package-arguments gcc-core-mesboot) + ((#:phases phases) + `(modify-phases ,phases + (replace 'setenv + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (bash (assoc-ref %build-inputs "bash")) + (gcc (assoc-ref %build-inputs "gcc")) + (glibc (assoc-ref %build-inputs "libc")) + (kernel-headers (assoc-ref %build-inputs "kernel-headers"))) + (setenv "CONFIG_SHELL" (string-append bash "/bin/sh")) + (format (current-error-port) "C_INCLUDE_PATH=~a\n" (getenv "C_INCLUDE_PATH")) + (setenv "C_INCLUDE_PATH" (string-append + gcc "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3/include" + ":" kernel-headers "/include" + ":" glibc "/include")) + (format (current-error-port) "C_INCLUDE_PATH=~a\n" (getenv "C_INCLUDE_PATH")) + (format (current-error-port) "LIBRARY_PATH=~a\n" (getenv "LIBRARY_PATH")) + ;; FIXME: add glibc dirs to paths manually + (setenv "LIBRARY_PATH" (string-join + (list (string-append glibc "/lib") + (getenv "LIBRARY_PATH")) + ":")) + (format (current-error-port) "LIBRARY_PATH=~a\n" (getenv "LIBRARY_PATH")) + (with-output-to-file "config.cache" + (lambda _ + (display " +ac_cv_c_float_format='IEEE (little-endian)' +"))) + #t))) + (replace 'install2 + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (gcc-dir (string-append + out "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3"))) + (and + (mkdir-p "tmp") + (zero? (system (string-append "set -x; cd tmp && ar x ../gcc/libgcc2.a"))) + (zero? (system (string-append "set -x; cd tmp && ar r " gcc-dir "/libgcc.a *.o"))) + (copy-file "gcc/libgcc2.a" (string-append out "/lib/libgcc2.a")))))))) + ((#:configure-flags configure-flags) + `(let ((out (assoc-ref %outputs "out"))) + `("--disable-shared" + "--disable-werror" + "--build=i686-unknown-linux-gnu" + "--host=i686-unknown-linux-gnu" + ,(string-append "--prefix=" out)))) + ((#:make-flags make-flags) + `(let ((gcc (assoc-ref %build-inputs "gcc"))) + `("RANLIB=true" + ,(string-append "LIBGCC2_INCLUDES=-I " gcc "/include") + "LANGUAGES=c")))))))) + +(define binutils-mesboot + (package-with-bootstrap-guile + (package + (inherit binutils-mesboot0) + (name "binutils-mesboot") + (native-inputs `(("binutils" ,binutils-mesboot0) + ("libc" ,glibc-mesboot0) + ("gcc" ,gcc-mesboot0) + + ("bash" ,%bootstrap-coreutils&co) + ("coreutils" ,%bootstrap-coreutils&co) + ("diffutils" ,diffutils-mesboot) + ("kernel-headers" ,%bootstrap-linux-libre-headers) + ("make" ,make-mesboot0))) + (arguments + (substitute-keyword-arguments (package-arguments binutils-mesboot0) + ((#:configure-flags configure-flags) + '(list "--disable-nls" + "--disable-shared" + "--disable-werror" + "--build=i686-unknown-linux-gnu" + "--host=i686-unknown-linux-gnu" + "--with-sysroot=/"))))))) + +(define make-mesboot + (package-with-bootstrap-guile + (package + (inherit make-mesboot0) + (name "make-mesboot") + (version "3.82") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/make/make-" + version ".tar.gz")) + (sha256 + (base32 + "1rs2f9hmvy3q6zkl15jnlmnpgffm0bhw5ax0h5c7q604wqrip69x")))) + (native-inputs `(("binutils" ,binutils-mesboot0) + ("libc" ,glibc-mesboot0) + ("gcc" ,gcc-mesboot0) + ("make" ,make-mesboot0) + + ("bash" ,%bootstrap-coreutils&co) + ("coreutils" ,%bootstrap-coreutils&co) + ("kernel-headers" ,%bootstrap-linux-libre-headers))) + (arguments + (substitute-keyword-arguments (package-arguments make-mesboot0) + ((#:configure-flags configure-flags) + `(let ((out (assoc-ref %outputs "out"))) + `(,(string-append "--prefix=" out)))) + ((#:phases phases) + `(modify-phases ,phases + (delete 'configure-fixup) + (add-before 'configure 'setenv + (lambda _ + (setenv "LIBS" "-lc -lnss_files -lnss_dns -lresolv") + #t))))))))) + +(define gmp-boot + (package + (inherit gmp) + (version "4.3.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/gmp/gmp-" version + ".tar.gz")) + (sha256 (base32 + "15rwq54fi3s11izas6g985y9jklm3xprfsmym3v1g6xr84bavqvv")))))) + +(define mpfr-boot + (package + (inherit mpfr) + (version "2.4.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/mpfr/mpfr-" version + ".tar.gz")) + (sha256 (base32 + "0dxn4904dra50xa22hi047lj8kkpr41d6vb9sd4grca880c7wv94")))))) + +(define mpc-boot + (package + (inherit mpc) + (version "1.0.3") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://gnu/mpc/mpc-" version ".tar.gz")) + (sha256 + (base32 + "1hzci2zrrd7v3g1jk35qindq05hbl0bhjcyyisq9z209xb3fqzb1")))))) + +(define gcc-mesboot1 + (package-with-bootstrap-guile + (package + (inherit gcc-mesboot0) + (name "gcc-mesboot1") + (version "4.7.4") + (source (origin (inherit (package-source gcc-4.7)) + (patches (search-patches "gcc-boot-4.7.4.patch")))) + (inputs `(("gmp-source" ,(package-source gmp-boot)) + ("mpfr-source" ,(package-source mpfr-boot)) + ("mpc-source" ,(package-source mpc-boot)))) + (native-inputs `(("binutils" ,binutils-mesboot) + ("gcc" ,gcc-mesboot0) + ("libc" ,glibc-mesboot0) + + ("bash" ,%bootstrap-coreutils&co) + ("coreutils" ,%bootstrap-coreutils&co) + ("diffutils" ,diffutils-mesboot) + ("kernel-headers" ,%bootstrap-linux-libre-headers) + ("make" ,make-mesboot))) + (arguments + (substitute-keyword-arguments (package-arguments gcc-core-mesboot) + ((#:make-flags make-flags) + `(let* ((libc (assoc-ref %build-inputs "libc")) + (ldflags (string-append + "-B" libc "/lib " + "-Wl,-dynamic-linker " + "-Wl," libc + ,(glibc-dynamic-linker "i686-linux")))) + (list (string-append "LDFLAGS=" ldflags) + (string-append "LDFLAGS_FOR_TARGET=" ldflags)))) + ((#:phases phases) + `(modify-phases ,phases + ;; c&p from commencement.scm:gcc-boot0 + (add-after 'unpack 'unpack-gmp&co + (lambda* (#:key inputs #:allow-other-keys) + (let ((gmp (assoc-ref %build-inputs "gmp-source")) + (mpfr (assoc-ref %build-inputs "mpfr-source")) + (mpc (assoc-ref %build-inputs "mpc-source"))) + + ;; To reduce the set of pre-built bootstrap inputs, build + ;; GMP & co. from GCC. + (for-each (lambda (source) + (or (invoke "tar" "xvf" source) + (error "failed to unpack tarball" + source))) + (list gmp mpfr mpc)) + + ;; Create symlinks like `gmp' -> `gmp-x.y.z'. + ,@(map (lambda (lib) + ;; Drop trailing letters, as gmp-6.0.0a unpacks + ;; into gmp-6.0.0. + `(symlink ,(string-trim-right + (package-full-name lib "-") + char-set:letter) + ,(package-name lib))) + (list gmp-boot mpfr-boot mpc-boot)) + #t))) + (delete 'remove-info) + (replace 'setenv + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (binutils (assoc-ref %build-inputs "binutils")) + (bash (assoc-ref %build-inputs "bash")) + (gcc (assoc-ref %build-inputs "gcc")) + (glibc (assoc-ref %build-inputs "libc")) + (kernel-headers (assoc-ref %build-inputs "kernel-headers"))) + (setenv "CONFIG_SHELL" (string-append bash "/bin/sh")) + (setenv "C_INCLUDE_PATH" (string-append + gcc "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3/include" + ":" kernel-headers "/include" + ":" glibc "/include" + ":" (getcwd) "/mpfr/src")) + (setenv "LIBRARY_PATH" (string-append glibc "/lib" + ":" gcc "/lib")) + (format (current-error-port) "C_INCLUDE_PATH=~a\n" (getenv "C_INCLUDE_PATH")) + (format (current-error-port) "LIBRARY_PATH=~a\n" (getenv "LIBRARY_PATH")) + #t))) + (delete 'install2))) + ((#:configure-flags configure-flags) + `(let ((out (assoc-ref %outputs "out")) + (glibc (assoc-ref %build-inputs "libc"))) + (list (string-append "--prefix=" out) + "--build=i686-unknown-linux-gnu" + "--host=i686-unknown-linux-gnu" + + (string-append "--with-native-system-header-dir=" glibc "/include") + (string-append "--with-build-sysroot=" glibc "/include") + + "--disable-bootstrap" + "--disable-decimal-float" + "--disable-libatomic" + "--disable-libcilkrts" + "--disable-libgomp" + "--disable-libitm" + "--disable-libmudflap" + "--disable-libquadmath" + "--disable-libsanitizer" + "--disable-libssp" + "--disable-libvtv" + "--disable-lto" + "--disable-lto-plugin" + "--disable-multilib" + "--disable-plugin" + "--disable-threads" + "--enable-languages=c,c++" + + "--enable-static" + ;; libstdc++.so: error: depends on 'libgcc_s.so.1', which cannot be found in RUNPATH () + "--disable-shared" + "--enable-threads=single" + + ;; No pre-compiled libstdc++ headers, to save space. + "--disable-libstdcxx-pch" + + ;; for libcpp ... + "--disable-build-with-cxx")))))))) + +(define gcc-mesboot1-wrapper + ;; We need this so gcc-mesboot1 can be used to create shared binaries that + ;; have the correct interpreter, otherwise configuring gcc-mesboot using + ;; --enable-shared will fail. + (package-with-bootstrap-guile + (package + (inherit gcc-mesboot1) + (name "gcc-mesboot1-wrapper") + (source #f) + (inputs '()) + (native-inputs `(("bash" ,%bootstrap-coreutils&co) + ("libc" ,glibc-mesboot) + ("gcc" ,gcc-mesboot1))) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:phases + (modify-phases %standard-phases + (delete 'unpack) + (delete 'configure) + (delete 'install) + (replace 'build + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bash (assoc-ref %build-inputs "bash")) + (libc (assoc-ref %build-inputs "libc")) + (gcc (assoc-ref %build-inputs "gcc")) + (bin (string-append out "/bin"))) + (mkdir-p bin) + (for-each + (lambda (program) + (let ((wrapper (string-append bin "/" program))) + (with-output-to-file wrapper + (lambda _ + (display (string-append "#! " bash "/bin/bash +exec " gcc "/bin/" program +" -Wl,--dynamic-linker" +;; also for x86_64-linux, we are still on i686-linux +" -Wl," libc ,(glibc-dynamic-linker "i686-linux") +" -Wl,--rpath" +" -Wl," libc "/lib" +" \"$@\" +")) + (chmod wrapper #o555))))) + '( + "gcc" + "g++" + "i686-unknown-linux-gnu-gcc" + "i686-unknown-linux-gnu-g++" + )) + #t))) + (replace 'check + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (program (string-append bin "/gcc"))) + (invoke program "--help")))))))))) + +(define glibc-headers-mesboot + (package-with-bootstrap-guile + (package + (inherit glibc-mesboot0) + (name "glibc-headers-mesboot") + (version "2.16.0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/glibc/glibc-" + version + ".tar.gz")) + (patches (search-patches "glibc-boot-2.16.0.patch" + "glibc-bootstrap-system-2.16.0.patch")) + (sha256 + (base32 + "0vlz4x6cgz7h54qq4528q526qlhnsjzbsvgc4iizn76cb0bfanx7")))) + (native-inputs `(("binutils" ,binutils-mesboot) + ("libc" ,glibc-mesboot0) + ("gcc" ,gcc-mesboot1) + ("headers" ,mesboot-headers) + + ("bash" ,%bootstrap-coreutils&co) + ("coreutils" ,%bootstrap-coreutils&co) + ("diffutils" ,diffutils-mesboot) + ("kernel-headers" ,%bootstrap-linux-libre-headers) + ("make" ,make-mesboot))) + + (arguments + (substitute-keyword-arguments (package-arguments glibc-mesboot0) + ((#:configure-flags configure-flags) + `(let ((out (assoc-ref %outputs "out")) + (headers (assoc-ref %build-inputs "headers"))) + (list + (string-append "--prefix=" out) + "--disable-obsolete-rpc" + "--host=i686-unknown-linux-gnu" + (string-append "--with-headers=" headers "/include") + "--enable-static-nss" + "--with-pthread" + "--without-cvs" + "--without-gd" + "--enable-add-ons=nptl"))) + ((#:make-flags make-flags) + `(let ((bash (assoc-ref %build-inputs "bash"))) + (list (string-append "SHELL=" bash "/bin/sh") + "install-bootstrap-headers=yes" "install-headers"))) + ((#:phases phases) + `(modify-phases ,phases + (replace 'setenv + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (headers (assoc-ref %build-inputs "headers")) + (bash (assoc-ref %build-inputs "bash")) + (coreutils (assoc-ref %build-inputs "coreutils")) + (libc (assoc-ref %build-inputs "libc")) + (gcc (assoc-ref %build-inputs "gcc")) + (cppflags (string-append + " -I " (getcwd) "/nptl/sysdeps/pthread/bits" + " -D BOOTSTRAP_GLIBC=1")) + (cflags (string-append " -L " (getcwd) + " -L " libc "/lib"))) + (setenv "libc_cv_friendly_stddef" "yes") + (setenv "CONFIG_SHELL" (string-append bash "/bin/sh")) + (setenv "SHELL" (getenv "CONFIG_SHELL")) + (format (current-error-port) "CONFIG_SHELL=~s\n" (getenv "CONFIG_SHELL")) + + (setenv "CPP" (string-append gcc "/bin/gcc -E " cppflags)) + (setenv "CC" (string-append gcc "/bin/gcc " cppflags cflags)) + + ;; avoid -fstack-protector + (setenv "libc_cv_ssp" "false") + (substitute* "configure" + (("/bin/pwd") (string-append coreutils "/bin/pwd"))) + (setenv "C_INCLUDE_PATH" (string-append libc "/include" + headers "/include")) + (setenv "LIBRARY_PATH" (string-append libc "/lib"))))) + (replace 'install + (lambda* (#:key outputs make-flags #:allow-other-keys) + (let ((kernel-headers (assoc-ref %build-inputs "kernel-headers")) + (out (assoc-ref outputs "out"))) + (and (apply invoke "make" make-flags) + (copy-recursively kernel-headers out) + #t)))) + (replace 'configure + (lambda* (#:key configure-flags #:allow-other-keys) + (format (current-error-port) "running ../configure ~a\n" (string-join configure-flags)) + (mkdir-p "build") + (chdir "build") + (apply invoke "../configure" configure-flags))) + (add-after 'configure 'remove-sunrpc + (lambda _ + (invoke "make" (string-append (getcwd) "/sysd-sorted" ) + (string-append "SHELL=" (getenv "CONFIG_SHELL"))) + (substitute* "sysd-sorted" + ((" sunrpc") " ") + ((" nis") " ")) + ;; 'rpcgen' needs native libc headers to be built. + (substitute* "../Makefile" + (("^SHELL := /bin/sh") (string-append "SHELL := " (getenv "CONFIG_SHELL")))) + (substitute* "../Makeconfig" + (("^SHELL := /bin/sh") (string-append "SHELL := " (getenv "CONFIG_SHELL")))) + (substitute* "../elf/Makefile" + (("^SHELL := /bin/sh") (string-append "SHELL := " (getenv "CONFIG_SHELL"))))))))))))) + +(define glibc-mesboot + (package-with-bootstrap-guile + (package + (inherit glibc-headers-mesboot) + (name "glibc-mesboot") + (native-inputs `(("binutils" ,binutils-mesboot) + ("libc" ,glibc-mesboot0) + ("headers" ,glibc-headers-mesboot) + ("gcc" ,gcc-mesboot1) + + ("bash" ,%bootstrap-coreutils&co) + ("coreutils" ,%bootstrap-coreutils&co) + ("diffutils" ,diffutils-mesboot) + ("kernel-headers" ,%bootstrap-linux-libre-headers) + ("make" ,make-mesboot))) + + (arguments + `(#:validate-runpath? #f ; fails when using --enable-shared + ,@(substitute-keyword-arguments (package-arguments glibc-headers-mesboot) + ((#:make-flags make-flags) + `(let ((bash (assoc-ref %build-inputs "bash"))) + (list (string-append "SHELL=" bash "/bin/sh")))) + ((#:phases phases) + `(modify-phases ,phases + (replace 'install + (lambda* (#:key outputs make-flags #:allow-other-keys) + (let* ((kernel-headers (assoc-ref %build-inputs "kernel-headers")) + (out (assoc-ref outputs "out")) + (install-flags (cons "install" make-flags))) + (and (apply invoke "make" install-flags) + (copy-recursively kernel-headers out) + #t))))))))) + (native-search-paths ;; FIXME: move to glibc-mesboot0 + ;; Use the language-specific variables rather than 'CPATH' because they + ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'. + ;; The intent is to allow headers that are in the search path to be + ;; treated as "system headers" (headers exempt from warnings) just like + ;; the typical /usr/include headers on an FHS system. + (list (search-path-specification + (variable "C_INCLUDE_PATH") + (files '("include"))) + (search-path-specification + (variable "CPLUS_INCLUDE_PATH") + (files '("include"))) + (search-path-specification + (variable "LIBRARY_PATH") + (files '("lib")))))))) + +(define gcc-mesboot + (package-with-bootstrap-guile + (package + (inherit gcc-mesboot1) + (name "gcc-mesboot") + (version "4.9.4") + (source (package-source gcc-4.9)) + (native-inputs `(("binutils" ,binutils-mesboot) + ("gcc-wrapper" ,gcc-mesboot1-wrapper) + ("gcc" ,gcc-mesboot1) + ("libc" ,glibc-mesboot) + + ("bash" ,%bootstrap-coreutils&co) + ("coreutils" ,%bootstrap-coreutils&co) + ("diffutils" ,diffutils-mesboot) + ("kernel-headers" ,%bootstrap-linux-libre-headers) + ("make" ,make-mesboot))) + (arguments + `(#:validate-runpath? #f + ,@(substitute-keyword-arguments (package-arguments gcc-mesboot1) + ((#:configure-flags configure-flags) + `(let ((out (assoc-ref %outputs "out")) + (glibc (assoc-ref %build-inputs "libc"))) + (list (string-append "--prefix=" out) + "--build=i686-unknown-linux-gnu" + "--host=i686-unknown-linux-gnu" + + "--with-host-libstdcxx=-lsupc++" + + (string-append "--with-native-system-header-dir=" glibc "/include") + (string-append "--with-build-sysroot=" glibc "/include") + + "--disable-bootstrap" + "--disable-decimal-float" + "--disable-libatomic" + "--disable-libcilkrts" + "--disable-libgomp" + "--disable-libitm" + "--disable-libmudflap" + "--disable-libquadmath" + "--disable-libsanitizer" + "--disable-libssp" + "--disable-libvtv" + "--disable-lto" + "--disable-lto-plugin" + "--disable-multilib" + "--disable-plugin" + "--disable-threads" + "--enable-languages=c,c++" + + "--enable-static" + "--enable-shared" + "--enable-threads=single" + + ;; No pre-compiled libstdc++ headers, to save space. + "--disable-libstdcxx-pch" + + ;; for libcpp ... + "--disable-build-with-cxx"))) + ((#:phases phases) + `(modify-phases ,phases + (replace 'setenv + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (binutils (assoc-ref %build-inputs "binutils")) + (bash (assoc-ref %build-inputs "bash")) + (gcc (assoc-ref %build-inputs "gcc")) + (glibc (assoc-ref %build-inputs "libc")) + (kernel-headers (assoc-ref %build-inputs "kernel-headers"))) + (setenv "CONFIG_SHELL" (string-append bash "/bin/sh")) + (setenv "C_INCLUDE_PATH" (string-append + gcc "/lib/gcc-lib/i686-unknown-linux-gnu/4.7.4/include" + ":" kernel-headers "/include" + ":" glibc "/include" + ":" (getcwd) "/mpfr/src")) + (setenv "CPLUS_INCLUDE_PATH" (string-append + gcc "/lib/gcc-lib/i686-unknown-linux-gnu/4.7.4/include" + ":" kernel-headers "/include" + ":" glibc "/include" + ":" (getcwd) "/mpfr/src")) + (setenv "LIBRARY_PATH" (string-append glibc "/lib" + ":" gcc "/lib")) + (format (current-error-port) "C_INCLUDE_PATH=~a\n" (getenv "C_INCLUDE_PATH")) + (format (current-error-port) "CPLUS_INCLUDE_PATH=~a\n" (getenv "CPLUS_INCLUDE_PATH")) + (format (current-error-port) "LIBRARY_PATH=~a\n" (getenv "LIBRARY_PATH")) + #t))))))))))) + +(define gcc-mesboot-wrapper + ;; We need this so gcc-mesboot can be used to create shared binaries that + ;; have the correct interpreter and runpath to libc. + (package-with-bootstrap-guile + (package + (inherit gcc-mesboot1-wrapper) + (name "gcc-mesboot-wrapper") + (source #f) + (inputs '()) + (native-inputs `(("bash" ,%bootstrap-coreutils&co) + ("libc" ,glibc-mesboot) + ("gcc" ,gcc-mesboot)))))) + +(define m4-mesboot + (package-with-bootstrap-guile + (package + (inherit m4) + (name "m4-mesboot") + (version "1.4") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/m4/m4-" + version ".tar.gz")) + (sha256 + (base32 + "1f9bxj176kf3pvs350w2dfs8jgwhminywri5pyn01b11yc4yhsjw")))) + (supported-systems '("i686-linux" "x86_64-linux")) + (native-inputs `(("mes" ,mes-boot) + ("tcc" ,tcc-boot))) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (setenv "CONFIG_SHELL" (string-append + (assoc-ref %build-inputs "bash") + "/bin/sh")) + (setenv "CC" "tcc -static") + (setenv "CPP" "tcc -E") + (invoke "./configure" (string-append "--prefix=" out))))))))))) + +(define (%bootstrap-inputs+toolchain) + ;; The traditional bootstrap-inputs. For the i686-linux Reduced Binary Seed + ;; the actual reduced set with bootstrapped toolchain. + (append (match (%current-system) + ((or "i686-linux" "x86_64-linux") + `(("libc" ,glibc-mesboot) + ("binutils" ,binutils-mesboot) + ("gcc-wrapper" ,gcc-mesboot-wrapper) + ("gcc" ,gcc-mesboot))) + (_ + '())) + (%bootstrap-inputs))) + (define gnu-make-boot0 (package-with-bootstrap-guile (package (inherit gnu-make) @@ -100,16 +1420,18 @@ (install-file "make" bin) #t)))))))) (native-inputs '()) ; no need for 'pkg-config' - (inputs %bootstrap-inputs)))) + (inputs (%bootstrap-inputs+toolchain))))) (define diffutils-boot0 (package-with-bootstrap-guile (let ((p (package-with-explicit-inputs diffutils - `(("make" ,gnu-make-boot0) - ,@%bootstrap-inputs) + (lambda _ + `(("make" ,gnu-make-boot0) + ,@(%bootstrap-inputs+toolchain))) #:guile %bootstrap-guile))) (package (inherit p) (name "diffutils-boot0") + (native-inputs `()) (arguments `(#:tests? #f ; the test suite needs diffutils ,@(package-arguments p))))))) @@ -118,9 +1440,10 @@ (package-with-explicit-inputs (package (inherit findutils) (name "findutils-boot0")) - `(("make" ,gnu-make-boot0) - ("diffutils" ,diffutils-boot0) ; for tests - ,@%bootstrap-inputs) + (lambda _ + `(("make" ,gnu-make-boot0) + ("diffutils" ,diffutils-boot0) ; for tests + ,@(%bootstrap-inputs+toolchain))) (current-source-location) #:guile %bootstrap-guile))) @@ -128,19 +1451,22 @@ (package-with-bootstrap-guile (package-with-explicit-inputs (package (inherit file) - (name "file-boot0")) - `(("make" ,gnu-make-boot0) - ,@%bootstrap-inputs) + (name "file-boot0") + (arguments + '(#:strip-binaries? #f + #:validate-runpath? #f))) + (lambda _ + `(("make" ,gnu-make-boot0) + ,@(%bootstrap-inputs+toolchain))) (current-source-location) #:guile %bootstrap-guile))) - -(define %boot0-inputs +(define (%boot0-inputs) `(("make" ,gnu-make-boot0) ("diffutils" ,diffutils-boot0) ("findutils" ,findutils-boot0) ("file" ,file-boot0) - ,@%bootstrap-inputs)) + ,@(%bootstrap-inputs+toolchain))) (define* (boot-triplet #:optional (system (%current-system))) ;; Return the triplet used to create the cross toolchain needed in the @@ -149,8 +1475,9 @@ ;; Following Linux From Scratch, build a cross-toolchain in stage 0. That ;; toolchain actually targets the same OS and arch, but it has the advantage -;; of being independent of the libc and tools in %BOOTSTRAP-INPUTS, since -;; GCC-BOOT0 (below) is built without any reference to the target libc. +;; of being independent of the libc and tools in +;; (%BOOTSTRAP-INPUTS+TOOLCHAIN), since GCC-BOOT0 (below) is built without any +;; reference to the target libc. (define binutils-boot0 (package-with-bootstrap-guile @@ -184,27 +1511,14 @@ ((#:configure-flags cf) `(cons ,(string-append "--target=" (boot-triplet)) ,cf))))) - (inputs %boot0-inputs)))) - -;; Use a "fixed" package source for this early libstdc++ variant so we can -;; update GCC 4.9 without triggering a full rebuild. -(define gcc-for-libstdc++ - (package - (inherit gcc-4.9) - (source (origin - (inherit (package-source gcc-4.9)) - (patches (search-patches "gcc-4.9-libsanitizer-fix.patch" - "gcc-arm-bug-71399.patch" - "gcc-asan-missing-include.patch" - "gcc-libvtv-runpath.patch" - "gcc-fix-texi2pod.patch")))))) + (inputs (%boot0-inputs))))) (define libstdc++-boot0 ;; GCC's libcc1 is always built as a shared library (the top-level ;; 'Makefile.def' forcefully adds --enable-shared) and thus needs to refer ;; to libstdc++.so. We cannot build libstdc++-5.3 because it relies on ;; C++14 features missing in some of our bootstrap compilers. - (let ((lib (package-with-bootstrap-guile (make-libstdc++ gcc-for-libstdc++)))) + (let ((lib (package-with-bootstrap-guile (make-libstdc++ gcc-4.9)))) (package (inherit lib) (name "libstdc++-boot0") @@ -215,8 +1529,20 @@ ;; XXX: libstdc++.so NEEDs ld.so for some reason. #:validate-runpath? #f - ,@(package-arguments lib))) - (inputs %boot0-inputs) + ,@(match (%current-system) + ((or "i686-linux" "x86_64-linux") + (substitute-keyword-arguments (package-arguments lib) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'unpack 'workaround-wrapper-bug + ;; XXX: The crude gcc-cross-wrapper causes "g++ -v" to + ;; fail, which in turn confuses the configure script. + (lambda _ + (substitute* "libstdc++-v3/configure" + (("g\\+\\+ -v") "true")) + #t)))))) + (_ (package-arguments lib))))) + (inputs (%boot0-inputs)) (native-inputs '())))) (define gcc-boot0 @@ -253,6 +1579,7 @@ "--disable-libsanitizer" "--disable-libitm" "--disable-libgomp" + "--disable-libmpx" "--disable-libcilkrts" "--disable-libvtv" "--disable-libssp" @@ -261,6 +1588,17 @@ (remove (cut string-match "--(with-system-zlib|enable-languages.*)" <>) ,flags))) + ((#:make-flags flags) + `(let* ((libc (assoc-ref %build-inputs "libc")) + (libc-native (or (assoc-ref %build-inputs "libc-native") + libc))) + `(,(string-append "LDFLAGS=" + "-Wl,-rpath=" libc-native "/lib " + "-Wl,-dynamic-linker " + "-Wl," libc-native ,(glibc-dynamic-linker + (match (%current-system) + ("x86_64-linux" "i686-linux") + (_ (%current-system)))))))) ((#:phases phases) `(modify-phases ,phases (add-after 'unpack 'unpack-gmp&co @@ -285,6 +1623,22 @@ ,(package-name lib))) (list gmp-6.0 mpfr mpc)) #t))) + ,(match (%current-system) + ((or "i686-linux" "x86_64-linux") + '(add-before 'configure 'fix-libcc1 + (lambda* (#:key inputs #:allow-other-keys) + ;; libcc1.so NEEDs libgcc_s.so, so provide one here + ;; to placate the 'validate-runpath' phase. + (substitute* "libcc1/Makefile.in" + (("la_LDFLAGS =") + (string-append "la_LDFLAGS = -Wl,-rpath=" + (assoc-ref inputs "gcc") "/lib"))) + ;; XXX: "g++ -v" is broken (see also libstdc++ above). + (substitute* "libcc1/configure" + (("g\\+\\+ -v") "true")) + #t))) + (_ '(add-before 'configure 'return-true + (lambda _ #t)))) (add-after 'install 'symlink-libgcc_eh (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "lib"))) @@ -307,8 +1661,8 @@ ;; Call it differently so that the builder can check whether ;; the "libc" input is #f. - ("libc-native" ,@(assoc-ref %boot0-inputs "libc")) - ,@(alist-delete "libc" %boot0-inputs))) + ("libc-native" ,@(assoc-ref (%boot0-inputs) "libc")) + ,@(alist-delete "libc" (%boot0-inputs)))) ;; No need for the native-inputs to build the documentation at this stage. (native-inputs `())))) @@ -319,47 +1673,62 @@ (name "perl-boot0") (arguments ;; At the very least, this must not depend on GCC & co. - (let ((args `(#:disallowed-references + (let ((args `(#:validate-runpath? #f + #:disallowed-references ,(list %bootstrap-binutils)))) - (substitute-keyword-arguments (package-arguments perl) - ((#:phases phases) - `(modify-phases ,phases - ;; Pthread support is missing in the bootstrap compiler - ;; (broken spec file), so disable it. - (add-before 'configure 'disable-pthreads - (lambda _ - (substitute* "Configure" - (("^libswanted=(.*)pthread" _ before) - (string-append "libswanted=" before))) - #t)))) - ;; Do not configure with '-Dusethreads' since pthread - ;; support is missing. - ((#:configure-flags configure-flags) - `(delete "-Dusethreads" ,configure-flags)))))))) + `(,@args + ,@(substitute-keyword-arguments (package-arguments perl) + ((#:phases phases) + `(modify-phases ,phases + ;; Pthread support is missing in the bootstrap compiler + ;; (broken spec file), so disable it. + (add-before 'configure 'disable-pthreads + (lambda _ + (substitute* "Configure" + (("^libswanted=(.*)pthread" _ before) + (string-append "libswanted=" before))) + #t)))) + ;; Do not configure with '-Dusethreads' since pthread + ;; support is missing. + ((#:configure-flags configure-flags) + `(delete "-Dusethreads" ,configure-flags))))))))) (package-with-bootstrap-guile (package-with-explicit-inputs perl %boot0-inputs (current-source-location) #:guile %bootstrap-guile)))) +(define m4-boot0 + (package-with-bootstrap-guile + (package + (inherit m4) + (name "m4-boot0") + (inputs (%boot0-inputs)) + (arguments + `(#:guile ,%bootstrap-guile + #:implicit-inputs? #f + ,@(package-arguments m4)))))) + (define bison-boot0 ;; This Bison is needed to build MiG so we need it early in the process. ;; It is also needed to rebuild Bash's parser, which is modified by ;; its CVE patches. Remove it when it's no longer needed. - (let* ((m4 (package-with-bootstrap-guile - (package-with-explicit-inputs m4 %boot0-inputs - (current-source-location) - #:guile %bootstrap-guile))) - (bison (package (inherit bison) + (let* ((bison (package (inherit bison) (propagated-inputs `(("m4" ,m4))) (inputs '()) ;remove Flex... (arguments - '(#:tests? #f ;... and thus disable tests + `(#:tests? #f ;... and thus disable tests ;; Zero timestamps in liby.a; this must be done ;; explicitly here because the bootstrap Binutils don't ;; do that (default is "cru".) - #:make-flags '("ARFLAGS=crD" "RANLIB=ranlib -D" + #:make-flags `("ARFLAGS=crD" + ,,(match (%current-system) + ;; ranlib: '-D': No such file + ((or "i686-linux" "x86_64-linux") + "RANLIB=ranlib") + (_ + "RANLIB=ranlib -D")) "V=1")))))) (package (inherit (package-with-bootstrap-guile @@ -394,12 +1763,12 @@ ,@(package-arguments linux-libre-headers))) (native-inputs `(("perl" ,perl-boot0) - ,@%boot0-inputs)))))) + ,@(%boot0-inputs))))))) (define gnumach-headers-boot0 (package-with-bootstrap-guile (package-with-explicit-inputs gnumach-headers - %boot0-inputs + (%boot0-inputs) (current-source-location) #:guile %bootstrap-guile))) @@ -413,7 +1782,7 @@ `(,(string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %build-inputs "flex") "/lib/"))))))) (package-with-bootstrap-guile - (package-with-explicit-inputs mig %boot0-inputs + (package-with-explicit-inputs mig (%boot0-inputs) (current-source-location) #:guile %bootstrap-guile)))) @@ -422,7 +1791,7 @@ (native-inputs `(("mig" ,mig-boot0))) (inputs '())))) (package-with-bootstrap-guile - (package-with-explicit-inputs hurd-headers %boot0-inputs + (package-with-explicit-inputs hurd-headers (%boot0-inputs) (current-source-location) #:guile %bootstrap-guile)))) @@ -431,7 +1800,7 @@ (native-inputs `(("mig" ,mig-boot0))) (inputs '())))) (package-with-bootstrap-guile - (package-with-explicit-inputs hurd-minimal %boot0-inputs + (package-with-explicit-inputs hurd-minimal (%boot0-inputs) (current-source-location) #:guile %bootstrap-guile)))) @@ -447,7 +1816,7 @@ the bootstrap environment." `(("gnumach-headers" ,gnumach-headers-boot0) ("hurd-headers" ,hurd-headers-boot0) ("hurd-minimal" ,hurd-minimal-boot0) - ,@%boot0-inputs)))))) + ,@(%boot0-inputs))))))) (define* (kernel-headers-boot0 #:optional (system (%current-system))) (match system @@ -458,7 +1827,7 @@ the bootstrap environment." ;; Texinfo used to build libc's manual. ;; We build without ncurses because it fails to build at this stage, and ;; because we don't need the stand-alone Info reader. - ;; Also, use %BOOT0-INPUTS to avoid building Perl once more. + ;; Also, use (%BOOT0-INPUTS) to avoid building Perl once more. (let ((texinfo (package (inherit texinfo) (native-inputs '()) (inputs `(("perl" ,perl-boot0))) @@ -472,21 +1841,22 @@ the bootstrap environment." (current-source-location) #:guile %bootstrap-guile)))) -(define ld-wrapper-boot0 +(define (ld-wrapper-boot0) ;; We need this so binaries on Hurd will have libmachuser and libhurduser ;; in their RUNPATH, otherwise validate-runpath will fail. (make-ld-wrapper "ld-wrapper-boot0" #:target boot-triplet #:binutils binutils-boot0 #:guile %bootstrap-guile - #:bash (car (assoc-ref %boot0-inputs "bash")))) + #:bash (car (assoc-ref (%boot0-inputs) "bash")) + #:guile-for-build %bootstrap-guile)) -(define %boot1-inputs +(define (%boot1-inputs) ;; 2nd stage inputs. `(("gcc" ,gcc-boot0) - ("ld-wrapper-cross" ,ld-wrapper-boot0) + ("ld-wrapper-cross" ,(ld-wrapper-boot0)) ("binutils-cross" ,binutils-boot0) - ,@(alist-delete "binutils" %boot0-inputs))) + ,@(alist-delete "binutils" (%boot0-inputs)))) (define glibc-final-with-bootstrap-bash ;; The final libc, "cross-built". If everything went well, the resulting @@ -504,11 +1874,7 @@ the bootstrap environment." ((#:configure-flags flags) `(append (list ,(string-append "--host=" (boot-triplet)) ,(string-append "--build=" - (nix-system->gnu-triplet)) - - ;; Build Sun/ONC RPC support. In particular, - ;; install rpc/*.h. - "--enable-obsolete-rpc") + (nix-system->gnu-triplet))) ,flags)) ((#:phases phases) `(modify-phases ,phases @@ -542,7 +1908,7 @@ the bootstrap environment." (inputs `(;; The boot inputs. That includes the bootstrap libc. We don't want ;; it in $CPATH, hence the 'pre-configure' phase above. - ,@%boot1-inputs + ,@(%boot1-inputs) ;; A native MiG is needed to build Glibc on Hurd. ,@(if (hurd-triplet? (%current-system)) @@ -550,11 +1916,11 @@ the bootstrap environment." '()) ;; A native GCC is needed to build `cross-rpcgen'. - ("native-gcc" ,@(assoc-ref %boot0-inputs "gcc")) + ("native-gcc" ,@(assoc-ref (%boot0-inputs) "gcc")) ;; Here, we use the bootstrap Bash, which is not satisfactory ;; because we don't want to depend on bootstrap tools. - ("static-bash" ,@(assoc-ref %boot0-inputs "bash"))))))) + ("static-bash" ,@(assoc-ref (%boot0-inputs) "bash"))))))) (define (cross-gcc-wrapper gcc binutils glibc bash) "Return a wrapper for the pseudo-cross toolchain GCC/BINUTILS/GLIBC @@ -609,35 +1975,41 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" ("bash" ,bash))) (inputs '()))) +(define (gcc-boot0-intermediate-wrapped) + ;; Make the cross-tools GCC-BOOT0 and BINUTILS-BOOT0 available under the + ;; non-cross names. + (cross-gcc-wrapper gcc-boot0 binutils-boot0 + glibc-final-with-bootstrap-bash + (car (assoc-ref (%boot1-inputs) "bash")))) + (define static-bash-for-glibc ;; A statically-linked Bash to be used by GLIBC-FINAL in system(3) & co. - (let* ((gcc (cross-gcc-wrapper gcc-boot0 binutils-boot0 - glibc-final-with-bootstrap-bash - (car (assoc-ref %boot1-inputs "bash")))) - (bash (package - (inherit static-bash) - (arguments - (substitute-keyword-arguments - (package-arguments static-bash) - ((#:guile _ #f) - '%bootstrap-guile) - ((#:configure-flags flags '()) - ;; Add a '-L' flag so that the pseudo-cross-ld of - ;; BINUTILS-BOOT0 can find libc.a. - `(append ,flags - (list (string-append "LDFLAGS=-static -L" - (assoc-ref %build-inputs - "libc:static") - "/lib")))))))) - (inputs `(("gcc" ,gcc) - ("libc" ,glibc-final-with-bootstrap-bash) - ("libc:static" ,glibc-final-with-bootstrap-bash "static") - ,@(fold alist-delete %boot1-inputs - '("gcc" "libc"))))) + (let ((bash (package + (inherit static-bash) + (arguments + (substitute-keyword-arguments + (package-arguments static-bash) + ((#:guile _ #f) + '%bootstrap-guile) + ((#:configure-flags flags '()) + ;; Add a '-L' flag so that the pseudo-cross-ld of + ;; BINUTILS-BOOT0 can find libc.a. + `(append ,flags + (list (string-append "LDFLAGS=-static -L" + (assoc-ref %build-inputs + "libc:static") + "/lib"))))))))) (package-with-bootstrap-guile - (package-with-explicit-inputs bash inputs - (current-source-location) - #:guile %bootstrap-guile)))) + (package-with-explicit-inputs + bash + (lambda _ + `(("gcc" ,(gcc-boot0-intermediate-wrapped)) + ("libc" ,glibc-final-with-bootstrap-bash) + ("libc:static" ,glibc-final-with-bootstrap-bash "static") + ,@(fold alist-delete (%boot1-inputs) + '("gcc" "libc")))) + (current-source-location) + #:guile %bootstrap-guile)))) (define gettext-boot0 ;; A minimal gettext used during bootstrap. @@ -703,18 +2075,18 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" ,@(package-arguments glibc-final-with-bootstrap-bash)))))) -(define gcc-boot0-wrapped +(define (gcc-boot0-wrapped) ;; Make the cross-tools GCC-BOOT0 and BINUTILS-BOOT0 available under the ;; non-cross names. (cross-gcc-wrapper gcc-boot0 binutils-boot0 glibc-final - (car (assoc-ref %boot1-inputs "bash")))) + (car (assoc-ref (%boot1-inputs) "bash")))) -(define %boot2-inputs +(define (%boot2-inputs) ;; 3rd stage inputs. `(("libc" ,glibc-final) ("libc:static" ,glibc-final "static") - ("gcc" ,gcc-boot0-wrapped) - ,@(fold alist-delete %boot1-inputs '("libc" "gcc")))) + ("gcc" ,(gcc-boot0-wrapped)) + ,@(fold alist-delete (%boot1-inputs) '("libc" "gcc" "linux-libre-headers")))) (define binutils-final (package-with-bootstrap-guile @@ -724,7 +2096,7 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" #:implicit-inputs? #f #:allowed-references ("out" ,glibc-final) ,@(package-arguments binutils))) - (inputs %boot2-inputs)))) + (inputs (%boot2-inputs))))) (define libstdc++ ;; Intermediate libstdc++ that will allow us to build the final GCC @@ -744,13 +2116,14 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" ;; except for the configure-flags. ,@(package-arguments lib) #:configure-flags `("--disable-shared" + "--disable-libstdcxx-dual-abi" "--disable-libstdcxx-threads" "--disable-libstdcxx-pch" ,(string-append "--with-gxx-include-dir=" (assoc-ref %outputs "out") "/include")))) (outputs '("out")) - (inputs %boot2-inputs) + (inputs (%boot2-inputs)) (synopsis "GNU C++ standard library (intermediate)")))) (define zlib-final @@ -763,14 +2136,15 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" #:implicit-inputs? #f #:allowed-references ("out" ,glibc-final) ,@(package-arguments zlib))) - (inputs %boot2-inputs)))) + (inputs (%boot2-inputs))))) -(define ld-wrapper-boot3 +(define (ld-wrapper-boot3) ;; A linker wrapper that uses the bootstrap Guile. (make-ld-wrapper "ld-wrapper-boot3" #:binutils binutils-final #:guile %bootstrap-guile - #:bash (car (assoc-ref %boot2-inputs "bash")))) + #:bash (car (assoc-ref (%boot2-inputs) "bash")) + #:guile-for-build %bootstrap-guile)) (define gcc-final ;; The final GCC. @@ -794,17 +2168,7 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" ;; positive, so turn it off. #:validate-runpath? #f - ;; Build again GMP & co. within GCC's build process, because it's hard - ;; to do outside (because GCC-BOOT0 is a cross-compiler, and thus - ;; doesn't honor $LIBRARY_PATH, which breaks `gnu-build-system'.) - ,@(substitute-keyword-arguments (package-arguments gcc-boot0) - ((#:configure-flags boot-flags) - (let loop ((args (package-arguments gcc))) - (match args - ((#:configure-flags normal-flags _ ...) - normal-flags) - ((_ rest ...) - (loop rest))))) + ,@(substitute-keyword-arguments (package-arguments gcc) ((#:make-flags flags) ;; Since $LIBRARY_PATH is not honored, add the relevant flags. `(let ((zlib (assoc-ref %build-inputs "zlib"))) @@ -816,8 +2180,42 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" zlib "/lib") flag)) ,flags))) + ;; Build again GMP & co. within GCC's build process, because it's hard + ;; to do outside (because GCC-BOOT0 is a cross-compiler, and thus + ;; doesn't honor $LIBRARY_PATH, which breaks `gnu-build-system'.) ((#:phases phases) - `(alist-delete 'symlink-libgcc_eh ,phases))))) + `(modify-phases ,phases + (add-after 'unpack 'unpack-gmp&co + (lambda* (#:key inputs #:allow-other-keys) + (let ((gmp (assoc-ref %build-inputs "gmp-source")) + (mpfr (assoc-ref %build-inputs "mpfr-source")) + (mpc (assoc-ref %build-inputs "mpc-source"))) + + ;; To reduce the set of pre-built bootstrap inputs, build + ;; GMP & co. from GCC. + (for-each (lambda (source) + (invoke "tar" "xvf" source)) + (list gmp mpfr mpc)) + + ;; Create symlinks like `gmp' -> `gmp-x.y.z'. + ,@(map (lambda (lib) + ;; Drop trailing letters, as gmp-6.0.0a unpacks + ;; into gmp-6.0.0. + `(symlink ,(string-trim-right + (package-full-name lib "-") + char-set:letter) + ,(package-name lib))) + (list gmp-6.0 mpfr mpc)) + #t))) + (add-before 'configure 'treat-glibc-as-system-header + (lambda* (#:key inputs #:allow-other-keys) + (let ((libc (assoc-ref inputs "libc"))) + ;; Make sure Glibc is treated as a "system header" so + ;; #include_next does the right thing. + (for-each (lambda (var) + (setenv var (string-append libc "/include"))) + '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH")) + #t)))))))) ;; This time we want Texinfo, so we get the manual. Add ;; STATIC-BASH-FOR-GLIBC so that it's used in the final shebangs of @@ -831,17 +2229,17 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" (inputs `(("gmp-source" ,(bootstrap-origin (package-source gmp-6.0))) ("mpfr-source" ,(package-source mpfr)) ("mpc-source" ,(package-source mpc)) - ("ld-wrapper" ,ld-wrapper-boot3) + ("ld-wrapper" ,(ld-wrapper-boot3)) ("binutils" ,binutils-final) ("libstdc++" ,libstdc++) ("zlib" ,zlib-final) - ,@%boot2-inputs)))) + ,@(%boot2-inputs))))) -(define %boot3-inputs +(define (%boot3-inputs) ;; 4th stage inputs. `(("gcc" ,gcc-final) - ("ld-wrapper" ,ld-wrapper-boot3) - ,@(alist-delete "gcc" %boot2-inputs))) + ("ld-wrapper" ,(ld-wrapper-boot3)) + ,@(alist-delete "gcc" (%boot2-inputs)))) (define bash-final ;; Link with `-static-libgcc' to make sure we don't retain a reference @@ -851,7 +2249,7 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" (inherit bash-minimal) (arguments `(#:disallowed-references - ,(assoc-ref %boot3-inputs "coreutils&co") + ,(assoc-ref (%boot3-inputs) "coreutils&co") ,@(package-arguments bash-minimal)))))) (package-with-bootstrap-guile (package-with-explicit-inputs (static-libgcc-package bash) @@ -859,10 +2257,10 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" (current-source-location) #:guile %bootstrap-guile)))) -(define %boot4-inputs +(define (%boot4-inputs) ;; Now use the final Bash. `(("bash" ,bash-final) - ,@(alist-delete "bash" %boot3-inputs))) + ,@(alist-delete "bash" (%boot3-inputs)))) (define-public guile-final ;; This package must be public because other modules refer to it. However, @@ -894,19 +2292,20 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" #:guile guile-final #:bash bash-final)) -(define %boot5-inputs +(define (%boot5-inputs) ;; Now with UTF-8 locales. Remember that the bootstrap binaries were built ;; with an older libc, which cannot load the new locale format. See ;; <https://lists.gnu.org/archive/html/guix-devel/2015-08/msg00737.html>. `(("locales" ,glibc-utf8-locales-final) - ,@%boot4-inputs)) + ,@(%boot4-inputs))) (define gnu-make-final ;; The final GNU Make, which uses the final Guile. (package-with-bootstrap-guile (package-with-explicit-inputs gnu-make - `(("guile" ,guile-final) - ,@%boot5-inputs) + (lambda _ + `(("guile" ,guile-final) + ,@(%boot5-inputs))) (current-source-location)))) (define coreutils-final @@ -934,11 +2333,11 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" (inputs (alist-delete "pcre" (package-inputs grep))) (native-inputs `(("perl" ,perl-boot0)))))) -(define %boot6-inputs +(define (%boot6-inputs) ;; Now use the final Coreutils. `(("coreutils" ,coreutils-final) ("grep" ,grep-final) - ,@%boot5-inputs)) + ,@(%boot5-inputs))) (define sed-final ;; The final sed. @@ -1064,23 +2463,23 @@ and binaries, plus debugging symbols in the 'debug' output), and Binutils.") ("libc-debug" ,glibc-final "debug") ("libc-static" ,glibc-final "static"))))) +(define-public gcc-toolchain + (make-gcc-toolchain gcc-final)) + (define-public gcc-toolchain-4.8 (make-gcc-toolchain gcc-4.8)) (define-public gcc-toolchain-4.9 (make-gcc-toolchain gcc-4.9)) -(define-public gcc-toolchain - (make-gcc-toolchain gcc-final)) - (define-public gcc-toolchain-5 - gcc-toolchain) + (make-gcc-toolchain gcc-5)) (define-public gcc-toolchain-6 (make-gcc-toolchain gcc-6)) (define-public gcc-toolchain-7 - (make-gcc-toolchain gcc-7)) + gcc-toolchain) (define-public gcc-toolchain-8 (make-gcc-toolchain gcc-8)) diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm index fee657c3f8..7412b97aef 100644 --- a/gnu/packages/compression.scm +++ b/gnu/packages/compression.scm @@ -197,14 +197,14 @@ adding and extracting files to/from a tar archive.") (define-public gzip (package (name "gzip") - (version "1.9") + (version "1.10") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/gzip/gzip-" version ".tar.xz")) (sha256 (base32 - "16h8g4acy7fgfxcjacr3wijjsnixwsfd2jhz3zwdi2qrzi262l5f")))) + "1h6p374d3j8d4cdfydzls021xa2yby8myc0h8d6m8bc7k6ncq9c4")))) (build-system gnu-build-system) (synopsis "General file (de)compression (using lzw)") (arguments @@ -420,6 +420,23 @@ compressed with pbzip2 can be decompressed with bzip2).") (base32 "0ibi2zsfaz6l756spjwc5rayf4ckgc9hwmy8qinppcyk4svz64mm")))) (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'install 'move-static-lib + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (static (assoc-ref outputs "static"))) + (mkdir-p (string-append static "/lib")) + (rename-file (string-append out "/lib/liblzma.a") + (string-append static "/lib/liblzma.a")) + ;; Remove reference to the static library from the .la file + ;; so Libtool does the right thing when both the shared and + ;; static library is available. + (substitute* (string-append out "/lib/liblzma.la") + (("^old_library='liblzma.a'") "old_library=''")) + #t)))))) + (outputs '("out" "static")) (synopsis "General-purpose data compression") (description "XZ Utils is free general-purpose data compression software with high @@ -705,7 +722,7 @@ decompression of some loosely related file formats used by Microsoft.") (define-public lz4 (package (name "lz4") - (version "1.8.1.2") + (version "1.8.3") (source (origin (method git-fetch) @@ -713,16 +730,23 @@ decompression of some loosely related file formats used by Microsoft.") (commit (string-append "v" version)))) (sha256 (base32 - "1jggv4lvfav53advnj0pwqgxzn868lrj8dc9zp73iwvqlj82mhmx")) + "0lq00yi7alr9aip6dw0flykzi8yv7z43aay177n86spn9qms7s3g")) (file-name (git-file-name name version)))) (build-system gnu-build-system) - (native-inputs `(("valgrind" ,valgrind))) ; for tests + (native-inputs `(("valgrind" ,valgrind))) ;for tests (arguments `(#:test-target "test" #:make-flags (list "CC=gcc" (string-append "prefix=" (assoc-ref %outputs "out"))) #:phases (modify-phases %standard-phases - (delete 'configure)))) ; no configure script + (delete 'configure) ;no configure script + (add-before 'check 'disable-broken-test + (lambda _ + ;; XXX: test_install.sh fails when prefix is a subdirectory. + (substitute* "tests/Makefile" + (("^test: (.*) test-install" _ targets) + (string-append "test: " targets))) + #t))))) (home-page "https://www.lz4.org") (synopsis "Compression algorithm focused on speed") (description "LZ4 is a lossless compression algorithm, providing diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm index bb3d6d916a..6a092727c1 100644 --- a/gnu/packages/cross-base.scm +++ b/gnu/packages/cross-base.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -51,11 +52,8 @@ (define %gcc-include-paths ;; Environment variables for header search paths. - ;; Note: See <http://bugs.gnu.org/22186> for why not 'CPATH'. - '("C_INCLUDE_PATH" - "CPLUS_INCLUDE_PATH" - "OBJC_INCLUDE_PATH" - "OBJCPLUS_INCLUDE_PATH")) + ;; Note: See <http://bugs.gnu.org/30756> for why not 'C_INCLUDE_PATH' & co. + '("CPATH")) (define %gcc-cross-include-paths ;; Search path for target headers when cross-compiling. @@ -168,7 +166,19 @@ base compiler and using LIBC (which may be either a libc package or #f.)" ,flags)) flags)) ((#:phases phases) - `(cross-gcc-build-phases ,target ,phases)))))) + `(cross-gcc-build-phases + ,target + (modify-phases ,phases + (add-before 'configure 'treat-glibc-as-system-header + (lambda* (#:key inputs #:allow-other-keys) + (let ((libc (assoc-ref inputs "libc"))) + (when libc + ;; For GCC6 and later, make sure Glibc is treated as a "system + ;; header" such that #include_next does the right thing. + (for-each (lambda (var) + (setenv var (string-append libc "/include"))) + '("CROSS_C_INCLUDE_PATH" "CROSS_CPLUS_INCLUDE_PATH"))) + #t)))))))))) (define (cross-gcc-patches target) "Return GCC patches needed for TARGET." @@ -454,23 +464,6 @@ XBINUTILS and the cross tool chain." flags))) ((#:phases phases) `(modify-phases ,phases - ;; XXX: The hack below allows us to make sure the - ;; 'apply-hurd-patch' phase gets added in the first - ;; cross-libc, but does *not* get added twice subsequently - ;; when cross-building another libc. - ,@(if (and (hurd-triplet? target) - (not (hurd-target?))) - `((add-after 'unpack 'apply-hurd-patch - (lambda* (#:key inputs native-inputs - #:allow-other-keys) - ;; TODO: Move this to 'patches' field. - (let ((patch (or (assoc-ref native-inputs - "hurd-magic-pid-patch") - (assoc-ref inputs - "hurd-magic-pid-patch")))) - (invoke "patch" "-p1" "--force" "--input" - patch))))) - '()) (add-before 'configure 'set-cross-kernel-headers-path (lambda* (#:key inputs #:allow-other-keys) (let* ((kernel (assoc-ref inputs "kernel-headers")) @@ -494,9 +487,7 @@ XBINUTILS and the cross tool chain." ,@(if (hurd-triplet? target) `(("cross-mig" ,@(assoc-ref (package-native-inputs xheaders) - "cross-mig")) - ("hurd-magic-pid-patch" - ,(search-patch "glibc-hurd-magic-pid.patch"))) + "cross-mig"))) '()) ,@(package-inputs libc) ;FIXME: static-bash ,@(package-native-inputs libc))))))) diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm index 038db8f488..38e556469a 100644 --- a/gnu/packages/crypto.scm +++ b/gnu/packages/crypto.scm @@ -684,7 +684,7 @@ BLAKE.") (define-public rhash (package (name "rhash") - (version "1.3.6") + (version "1.3.8") (source (origin (method url-fetch) @@ -693,7 +693,7 @@ BLAKE.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "14ngzfgmd1lfp7m78sn49x8ymf2s37nrr67c6p5vas85nrrgjkcn")))) + "0k60ywyhwqwqxa2q2l85vwgf884hcgy31nxir3dqgz7ymib6llxy")))) (build-system gnu-build-system) (arguments `(#:make-flags @@ -712,7 +712,7 @@ BLAKE.") (lambda* (#:key make-flags #:allow-other-keys) (apply invoke "make" "-C" "librhash" - "install-headers" "install-so-link" + "install-lib-headers" "install-so-link" make-flags)))))) (home-page "https://sourceforge.net/projects/rhash/") (synopsis "Utility for computing hash sums") @@ -817,7 +817,7 @@ security.") ("automake" ,automake) ("libtool" ,libtool))) (inputs - `(("openssl" ,openssl-next))) + `(("openssl" ,openssl))) (home-page "https://github.com/vstakhov/asignify") (synopsis "Cryptographic authentication and encryption tool and library") (description "Asignify offers public cryptographic signatures and diff --git a/gnu/packages/curl.scm b/gnu/packages/curl.scm index 9f2c27d623..276fe5c41b 100644 --- a/gnu/packages/curl.scm +++ b/gnu/packages/curl.scm @@ -69,15 +69,14 @@ (define-public curl (package (name "curl") - (replacement curl-7.64.0) - (version "7.63.0") + (version "7.64.0") (source (origin (method url-fetch) (uri (string-append "https://curl.haxx.se/download/curl-" version ".tar.xz")) (sha256 (base32 - "1i38v49233jirzlfqd8fy6jyf80assa953hk7w6qmysbg562604n")))) + "00b0mw4fc1pbmbh55maab24x3ijdvkbpl1s4njfa4jnl6kx16brg")))) (build-system gnu-build-system) (outputs '("out" "doc")) ;1.2 MiB of man3 pages @@ -165,19 +164,6 @@ tunneling, and so on.") "See COPYING in the distribution.")) (home-page "https://curl.haxx.se/"))) -(define-public curl-7.64.0 - (package - (inherit curl) - (version "7.64.0") - (source - (origin - (method url-fetch) - (uri (string-append "https://curl.haxx.se/download/curl-" - version ".tar.xz")) - (sha256 - (base32 - "00b0mw4fc1pbmbh55maab24x3ijdvkbpl1s4njfa4jnl6kx16brg")))))) - (define-public kurly (package (name "kurly") diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index aefcb7ee05..71e7c1b938 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -671,7 +671,7 @@ Language.") ("zlib" ,zlib))) (propagated-inputs ;; mariadb.pc says -lssl -lcrypto, so propagate it. - `(("openssl" ,openssl))) + `(("openssl" ,openssl-1.0))) ;; The test suite is very resource intensive and can take more than three ;; hours on a x86_64 system. Give slow and busy machines some leeway. (properties '((timeout . 64800))) ;18 hours diff --git a/gnu/packages/dbm.scm b/gnu/packages/dbm.scm index bf548a25f3..2f1c88f112 100644 --- a/gnu/packages/dbm.scm +++ b/gnu/packages/dbm.scm @@ -139,14 +139,14 @@ SQL, Key/Value, XML/XQuery or Java Object storage for their data model.") (define-public gdbm (package (name "gdbm") - (version "1.18") + (version "1.18.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/gdbm/gdbm-" version ".tar.gz")) (sha256 (base32 - "1kimnv12bzjjhaqk4c8w2j6chdj9c6bg21lchaf7abcyfss2r0mq")))) + "1p4ibds6z3ccy65lkmd6lm7js0kwifvl53r0fd759fjxgr917rl6")))) (arguments `(#:configure-flags '("--enable-libgdbm-compat"))) (build-system gnu-build-system) (home-page "http://www.gnu.org.ua/software/gdbm") diff --git a/gnu/packages/ed.scm b/gnu/packages/ed.scm index d30d7bcfa8..c2198763ef 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 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -28,14 +28,14 @@ (define-public ed (package (name "ed") - (version "1.14.2") + (version "1.15") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/ed/ed-" version ".tar.lz")) (sha256 (base32 - "1nqhk3n1s1p77g2bjnj55acicsrlyb2yasqxqwpx0w0djfx64ygm")))) + "0x6ivy5k0d7dy5z9g8q8nipr89m4qbk2ink2898qq43smp08ji5d")))) (build-system gnu-build-system) (native-inputs `(("lzip" ,lzip))) (arguments diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm index 04a510cdcf..b02e450f3e 100644 --- a/gnu/packages/emulators.scm +++ b/gnu/packages/emulators.scm @@ -152,11 +152,6 @@ '(#:tests? #f #:phases (modify-phases %standard-phases - (add-before 'configure 'fixgcc7 - (lambda _ - (unsetenv "C_INCLUDE_PATH") - (unsetenv "CPLUS_INCLUDE_PATH") - #t)) (add-before 'configure 'generate-fonts&hardcore-libvulkan-path (lambda* (#:key inputs outputs #:allow-other-keys) (let ((fontfile @@ -190,7 +185,6 @@ "-DX11_FOUND=1"))) (native-inputs `(("pkg-config" ,pkg-config) - ("gcc" ,gcc-7) ; Building with gcc@5 doesn't work anymore. ("gettext" ,gnu-gettext))) (inputs `(("alsa-lib" ,alsa-lib) diff --git a/gnu/packages/file.scm b/gnu/packages/file.scm index 4518c8d3dc..24ed37a9d2 100644 --- a/gnu/packages/file.scm +++ b/gnu/packages/file.scm @@ -31,11 +31,11 @@ (package (name "file") (version "5.33") - (replacement file/fixed) (source (origin (method url-fetch) (uri (string-append "ftp://ftp.astron.com/pub/file/file-" version ".tar.gz")) + (patches (search-patches "file-CVE-2018-10360.patch")) (sha256 (base32 "1iipnwjkag7q04zjkaqic41r9nlw0ml6mhqian6qkkbisb1whlhw")))) @@ -53,10 +53,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 file/fixed - (package - (inherit file) - (source - (origin (inherit (package-source file)) - (patches (search-patches "file-CVE-2018-10360.patch")))))) diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm index 1982d0bf4b..21f8c7d227 100644 --- a/gnu/packages/fontutils.scm +++ b/gnu/packages/fontutils.scm @@ -428,7 +428,7 @@ applications should be.") (define-public graphite2 (package (name "graphite2") - (version "1.3.12") + (version "1.3.13") (source (origin (method url-fetch) @@ -436,7 +436,7 @@ applications should be.") "download/" version "/" name "-" version ".tgz")) (sha256 (base32 - "1l1940d8fz67jm6a0x8cjb5p2dv48cvz3wcskwa83hamd70k15fd")))) + "01jzhwnj1c3d68dmw15jdxly0hwkmd8ja4kw755rbkykn1ly2qyx")))) (build-system cmake-build-system) (native-inputs `(("python" ,python-2) ; because of "import imap" in tests diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index e750d0657e..eac0ae376f 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -2626,16 +2626,12 @@ Transport Tycoon Deluxe.") (copy-recursively (string-append objects "/share/openrct2/objects") "data/object")))) - (add-before 'configure 'fixgcc7 - (lambda _ - (unsetenv "C_INCLUDE_PATH") - (unsetenv "CPLUS_INCLUDE_PATH") - #t)) - (add-after 'fixgcc7 'get-rid-of-errors + (add-before 'configure 'get-rid-of-errors (lambda _ ;; Don't treat warnings as errors. (substitute* "CMakeLists.txt" - (("-Werror") ""))))))) + (("-Werror") "")) + #t))))) (inputs `(("curl" ,curl) ("fontconfig" ,fontconfig) ("freetype" ,freetype) @@ -2651,8 +2647,7 @@ Transport Tycoon Deluxe.") ("speexdsp" ,speexdsp) ("zlib" ,zlib))) (native-inputs - `(("gcc" ,gcc-7) - ("pkg-config" ,pkg-config))) + `(("pkg-config" ,pkg-config))) (home-page "https://github.com/OpenRCT2/OpenRCT2") (synopsis "Free software re-implementation of RollerCoaster Tycoon 2") (description "OpenRCT2 is a free software re-implementation of @@ -3649,7 +3644,8 @@ throwing people around in pseudo-randomly generated buildings.") (add-after 'set-paths 'set-sdl-paths (lambda* (#:key inputs #:allow-other-keys) (setenv "CPATH" - (string-append (assoc-ref inputs "sdl-union") + (string-append (getenv "CPATH") ":" + (assoc-ref inputs "sdl-union") "/include/SDL")))) (replace 'configure (lambda* (#:key inputs outputs #:allow-other-keys) diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index b9a9583410..48d8780212 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -522,7 +522,7 @@ It also includes runtime support libraries for these languages."))) ;; Note: When changing the default gcc version, update ;; the gcc-toolchain-* definitions and the gfortran definition ;; accordingly. -(define-public gcc gcc-5) +(define-public gcc gcc-7) (define-public (make-libstdc++ gcc) "Return a libstdc++ package based on GCC. The primary use case is when @@ -660,7 +660,7 @@ as the 'native-search-paths' field." ;; (custom-gcc gcc "fortran" …) because that would lead to a package object ;; that is not 'eq?' with GFORTRAN-5, and thus 'fold-packages' would ;; report two gfortran@5 that are in fact identical. - gfortran-5) + gfortran-7) (define-public gccgo-4.9 (custom-gcc gcc-4.9 "gccgo" '("go") @@ -724,7 +724,7 @@ as the 'native-search-paths' field." (variable "LIBRARY_PATH") (files '("lib" "lib64")))))) -(define-public gcc-objc gcc-objc-5) +(define-public gcc-objc gcc-objc-7) (define-public gcc-objc++-4.8 (custom-gcc gcc-4.8 "gcc-objc++" '("obj-c++") @@ -780,7 +780,7 @@ as the 'native-search-paths' field." (variable "LIBRARY_PATH") (files '("lib" "lib64")))))) -(define-public gcc-objc++ gcc-objc++-5) +(define-public gcc-objc++ gcc-objc++-7) (define (make-libstdc++-doc gcc) "Return a package with the libstdc++ documentation for GCC." diff --git a/gnu/packages/gd.scm b/gnu/packages/gd.scm index a1593827a0..5b3f8509f8 100644 --- a/gnu/packages/gd.scm +++ b/gnu/packages/gd.scm @@ -39,7 +39,6 @@ (define-public gd (package (name "gd") - (replacement gd/fixed) ;; Note: With libgd.org now pointing to github.com, genuine old ;; tarballs are no longer available. Notably, versions 2.0.x are ;; missing. @@ -55,6 +54,8 @@ (patches (search-patches "gd-CVE-2018-5711.patch" "gd-CVE-2018-1000222.patch" + "gd-CVE-2019-6977.patch" + "gd-CVE-2019-6978.patch" "gd-fix-tests-on-i686.patch" "gd-freetype-test-failure.patch")))) (build-system gnu-build-system) @@ -95,16 +96,6 @@ most common applications of GD involve website development.") "See COPYING file in the distribution.")) (properties '((cpe-name . "libgd"))))) -(define-public gd/fixed - (hidden-package - (package - (inherit gd) - (source (origin - (inherit (package-source gd)) - (patches (append (origin-patches (package-source gd)) - (search-patches "gd-CVE-2019-6977.patch" - "gd-CVE-2019-6978.patch")))))))) - (define-public perl-gd (package (name "perl-gd") diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm index 98b227ca84..3689c31f30 100644 --- a/gnu/packages/glib.scm +++ b/gnu/packages/glib.scm @@ -9,6 +9,7 @@ ;;; Copyright © 2017 Petter <petter@mykolab.ch> ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com> +;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -33,6 +34,8 @@ #:use-module (gnu packages bison) #:use-module (gnu packages check) #:use-module (gnu packages compression) + #:use-module (gnu packages docbook) + #:use-module (gnu packages documentation) #:use-module (gnu packages enlightenment) #:use-module (gnu packages file) #:use-module (gnu packages flex) @@ -118,14 +121,21 @@ "sysconfdir=/tmp/dummy" "install")))))) (native-inputs - `(("pkg-config" ,pkg-config))) + `(("pkg-config" ,pkg-config) + ;; Dependencies to generate the doc. + ("docbook-xml" ,docbook-xml-4.4) + ("docbook-xsl" ,docbook-xsl) + ("doxygen" ,doxygen) + ("xmlto" ,xmlto) + ("libxml2" ,libxml2) ;for XML_CATALOG_FILES + ("libxslt" ,libxslt) + ("yelp-tools" ,yelp-tools))) (inputs `(("expat" ,expat) - ;; Add a dependency on libx11 so that 'dbus-launch' has support for ;; '--autolaunch'. ("libx11" ,libx11))) - + (outputs '("out" "doc")) ;22 MiB of HTML doc (home-page "https://www.freedesktop.org/wiki/Software/dbus/") (synopsis "Message bus for inter-process communication (IPC)") (description diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index cd31dbb5a8..e8c5659a09 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -4328,7 +4328,6 @@ work and the interface is well tested.") ;; These libraries must be on LD_LIBRARY_PATH. (libs '("gtkspell3" "webkitgtk" "libsoup" "libsecret" "atk" "gtk+" "gsettings-desktop-schemas" - "gcc:lib" ; needed b/c webkitgtk is built with gcc-7 "gobject-introspection")) (path (string-join (map (lambda (lib) @@ -4341,8 +4340,7 @@ work and the interface is well tested.") `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH"))))) #t))))) (native-inputs - `(("gcc:lib" ,gcc-7 "lib") ; needed because webkitgtk is built with gcc-7 - ("intltool" ,intltool) + `(("intltool" ,intltool) ("itstool" ,itstool) ("pkg-config" ,pkg-config) ("python" ,python) @@ -4363,7 +4361,7 @@ work and the interface is well tested.") ("libsecret" ,libsecret) ("gtkspell3" ,gtkspell3) ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) - ("webkitgtk" ,webkitgtk-2.24))) + ("webkitgtk" ,webkitgtk))) (home-page "https://wiki.gnome.org/Apps/Eolie") (synopsis "Web browser for GNOME") (description @@ -4401,7 +4399,6 @@ a secret password store, an adblocker, and a modern UI.") `(("dconf" ,dconf))) (native-inputs `(("desktop-file-utils" ,desktop-file-utils) ; for update-desktop-database - ("gcc" ,gcc-7) ; needed because webkitgtk-2.22 is compiled with gcc-7 ("glib:bin" ,glib "bin") ; for glib-mkenums ("gtk+:bin" ,gtk+ "bin") ; for gtk-update-icon-cache ("intltool" ,intltool) @@ -4422,7 +4419,7 @@ a secret password store, an adblocker, and a modern UI.") ("libxslt" ,libxslt) ("nettle" ,nettle) ; for hogweed ("sqlite" ,sqlite) - ("webkitgtk" ,webkitgtk-2.24))) + ("webkitgtk" ,webkitgtk))) (home-page "https://wiki.gnome.org/Apps/Web") (synopsis "GNOME web browser") (description diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm index 22ae435a83..d1d55c3a11 100644 --- a/gnu/packages/gnupg.scm +++ b/gnu/packages/gnupg.scm @@ -15,6 +15,7 @@ ;;; Copyright © 2017 Petter <petter@mykolab.ch> ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de> ;;; ;;; This file is part of GNU Guix. ;;; @@ -76,7 +77,7 @@ (define-public libgpg-error (package (name "libgpg-error") - (version "1.32") + (version "1.35") (source (origin (method url-fetch) @@ -84,7 +85,7 @@ version ".tar.bz2")) (sha256 (base32 - "1jj08ns4sh1hmafqp1giskvdicdz18la516va26jycy27kkwaif3")))) + "0rz00xyrk7qzg7mmcjhvrnm34hddkvyg9zsqq548vj58m1ifxmfb")))) (build-system gnu-build-system) (home-page "https://gnupg.org") (synopsis "Library of error values for GnuPG components") @@ -100,16 +101,14 @@ Daemon and possibly more in the future.") (define-public libgcrypt (package (name "libgcrypt") - (version "1.8.3") + (version "1.8.4") (source (origin (method url-fetch) (uri (string-append "mirror://gnupg/libgcrypt/libgcrypt-" version ".tar.bz2")) (sha256 (base32 - "0z5gs1khzyknyfjr19k8gk4q148s6q987ya85cpn0iv70fz91v36")) - (patches - (search-patches "libgcrypt-make-yat2m-reproducible.patch")))) + "09r27ywj9zplq6n9qw3mn7zmvf6y2jdmwx5d1kg8yqkj0qx18f7n")))) (build-system gnu-build-system) (propagated-inputs `(("libgpg-error-host" ,libgpg-error))) diff --git a/gnu/packages/groff.scm b/gnu/packages/groff.scm index cf392f5468..98f17914bf 100644 --- a/gnu/packages/groff.scm +++ b/gnu/packages/groff.scm @@ -3,6 +3,8 @@ ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2019 Eric Bavier <bavier@member.fsf.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -36,14 +38,13 @@ (define-public groff (package (name "groff") - (version "1.22.3") + (version "1.22.4") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/groff/groff-" version ".tar.gz")) (sha256 (base32 - "1998v2kcs288d3y7kfxpvl369nqi06zbbvjzafyvyl3pr7bajj1s")) - (patches (search-patches "groff-source-date-epoch.patch")))) + "14q2mldnr1vx0l9lqp9v2f6iww24gj28iyh4j2211hyynx67p3p7")))) (build-system gnu-build-system) (outputs '("out" "doc")) ;12MiB of PS, PDF, HTML, and examples @@ -62,9 +63,37 @@ `(#:parallel-build? #f ; parallel build fails #:phases (modify-phases %standard-phases + (add-after 'unpack 'disable-relocatability + (lambda _ + ;; Groff contains a Rube Goldberg-esque relocator for the file + ;; "charset.alias". It tries to find the current executable + ;; using realpath, a do-it-yourself search in $PATH and so on. + ;; Furthermore, the routine that does the search is buggy + ;; in that it doesn't handle error cases when they arise. + ;; This causes preconv to segfault when trying to look up + ;; the file "charset.alias" in the NULL location. + ;; The "charset.alias" parser is a copy of gnulib's, and a + ;; non-broken version of gnulib's "charset.alias" parser is + ;; part of glibc's libcharset. + ;; However, groff unconditionally uses their own + ;; "charset.alias" parser, but then DOES NOT INSTALL the + ;; file "charset.alias" when glibc is too new. + ;; In Guix, our file "charset.alias" only contains an obscure + ;; alias for ASCII and nothing else. So just disable relocation + ;; and make the entire "charset.alias" lookup fail. + ;; See <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=30785> for + ;; details. + (substitute* "Makefile.in" + (("-DENABLE_RELOCATABLE=1") "")) + #t)) (add-after 'unpack 'setenv (lambda _ (setenv "GS_GENERATE_UUIDS" "0") + #t)) + (add-after 'unpack 'fix-docdir + (lambda _ ;see https://savannah.gnu.org/bugs/index.php?55461 + (substitute* "Makefile.in" + (("^docdir =.*") "docdir = @docdir@\n")) #t))))) (synopsis "Typesetting from plain text mixed with formatting commands") (description @@ -91,41 +120,11 @@ is usually the formatter of \"man\" documentation pages.") (arguments `(#:disallowed-references (,perl) - #:configure-flags '("--docdir=/tmp/trash/doc") + #:configure-flags '("--with-doc=no") ,@(substitute-keyword-arguments (package-arguments groff) ((#:phases phases) `(modify-phases ,phases - (add-after 'unpack 'disable-relocatability - (lambda _ - ;; Groff contains a Rube Goldberg-esque relocator for the - ;; file "charset.alias". - ;; It tries to find the current executable using realpath, - ;; a do-it-yourself search in $PATH and so on. - ;; Furthermore, the routine that does the search is buggy - ;; in that it doesn't handle error cases when they arise. - ;; This causes preconv to segfault when trying to look up - ;; the file "charset.alias" in the NULL location. - ;; The "charset.alias" parser is a copy of gnulib's, and a - ;; non-broken version of gnulib's "charset.alias" parser - ;; is part of glibc's libcharset. - ;; However, groff unconditionally uses their own - ;; "charset.alias" parser, but then DOES NOT INSTALL the - ;; file "charset.alias" when glibc is too new. - ;; In Guix, our file "charset.alias" only contains an - ;; obscure alias for ASCII and nothing else. - ;; So just disable relocation and make the entire - ;; "charset.alias" lookup fail. - ;; See <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=30785> - ;; for details. - (substitute* "src/libs/libgroff/Makefile.sub" - (("-DENABLE_RELOCATABLE=1") "")) - ;; That file contains a crash bug--so make sure that - ;; its contents are not there. - (call-with-output-file "src/libs/libgroff/relocate.cpp" - (lambda (port) - #t)) - #t)) (add-after 'install 'remove-non-essential-programs (lambda* (#:key outputs #:allow-other-keys) ;; Keep only the programs that man-db needs at run time, diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index 1d1bcd2204..f006795a16 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -177,7 +177,7 @@ affine transformation (scale, rotation, shear, etc.).") (define-public harfbuzz (package (name "harfbuzz") - (version "2.2.0") + (version "2.3.1") (source (origin (method url-fetch) (uri (string-append "https://www.freedesktop.org/software/" @@ -185,7 +185,7 @@ affine transformation (scale, rotation, shear, etc.).") version ".tar.bz2")) (sha256 (base32 - "047q63jr513azf3g1y7f5xn60b4jdjs9zsmrx04sfw5rasyzrk5p")))) + "0s74ramsbfa183rxkidqgfd2vbhrwicnrqzqsq440dwibffnj1gj")))) (build-system gnu-build-system) (outputs '("out" "bin")) ; 160K, only hb-view depend on cairo diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index b52b6025ae..54ce2d3b40 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -86,7 +86,7 @@ (define-public libpng (package (name "libpng") - (version "1.6.34") + (version "1.6.36") (source (origin (method url-fetch) (uri (list (string-append "mirror://sourceforge/libpng/libpng16/" @@ -99,7 +99,7 @@ "/libpng16/libpng-" version ".tar.xz"))) (sha256 (base32 - "1xjr0v34fyjgnhvaa1zixcpx5yvxcg4zwvfh0fyklfyfj86rc7ig")))) + "06d35a3xz2a0kph82r56hqm1fn8fbwrqs07xzmr93dx63x695szc")))) (build-system gnu-build-system) ;; libpng.la says "-lz", so propagate it. @@ -1298,15 +1298,14 @@ PNG, and performs PNG integrity checks and corrections.") (define-public libjpeg-turbo (package (name "libjpeg-turbo") - (version "2.0.1") - (replacement libjpeg-turbo-2.0.2) + (version "2.0.2") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/libjpeg-turbo/" version "/libjpeg-turbo-" version ".tar.gz")) (sha256 (base32 - "1zv6z093l3x3jzygvni7b819j7xhn6d63jhcdrckj7fz67n6ry75")))) + "1v9gx1gdzgxf51nd55ncq7rghmj4x9x91rby50ag36irwngmkf5c")))) (build-system cmake-build-system) (native-inputs `(("nasm" ,nasm))) @@ -1329,18 +1328,6 @@ and decompress to 32-bit and big-endian pixel buffers (RGBX, XBGR, etc.).") license:ijg ;the libjpeg library and associated tools license:zlib)))) ;the libjpeg-turbo SIMD extensions -(define-public libjpeg-turbo-2.0.2 - (package - (inherit libjpeg-turbo) - (version "2.0.2") - (source (origin - (inherit (package-source libjpeg-turbo)) - (uri (string-append "mirror://sourceforge/libjpeg-turbo/" - version "/libjpeg-turbo-" version ".tar.gz")) - (sha256 - (base32 - "1v9gx1gdzgxf51nd55ncq7rghmj4x9x91rby50ag36irwngmkf5c")))))) - (define-public niftilib (package (name "niftilib") diff --git a/gnu/packages/inkscape.scm b/gnu/packages/inkscape.scm index 7b17ebae40..a2c6778b57 100644 --- a/gnu/packages/inkscape.scm +++ b/gnu/packages/inkscape.scm @@ -86,6 +86,13 @@ (lambda _ (substitute* "share/icons/application/CMakeLists.txt" (("gtk-update-icon-cache") "true")) + #t)) + (add-before 'configure 'dont-use-system-includes + (lambda _ + ;; Don't add redundant -isystem includes which confuses GCC7. + (substitute* "CMakeScripts/DefineDependsandFlags.cmake" + (("include_directories\\(SYSTEM") + "include_directories(")) #t))))) (home-page "https://inkscape.org/") (synopsis "Vector graphics editor") diff --git a/gnu/packages/kerberos.scm b/gnu/packages/kerberos.scm index 873f5d8a37..7cf61c8d0f 100644 --- a/gnu/packages/kerberos.scm +++ b/gnu/packages/kerberos.scm @@ -49,7 +49,7 @@ (define-public mit-krb5 (package (name "mit-krb5") - (version "1.16.2") + (version "1.17") (source (origin (method url-fetch) (uri (list @@ -61,7 +61,7 @@ "/krb5-" version ".tar.gz"))) (sha256 (base32 - "09zhhzj19bmjjxsvxdrysabql8n72kjivis08wbikhlkwlgiwwlz")))) + "1xc1ly09697b7g2vngvx76szjqy9769kpgn27lnp1r9xln224vjs")))) (build-system gnu-build-system) (native-inputs `(("bison" ,bison) diff --git a/gnu/packages/libevent.scm b/gnu/packages/libevent.scm index 01e1e3b00a..0ec707bcb7 100644 --- a/gnu/packages/libevent.scm +++ b/gnu/packages/libevent.scm @@ -124,14 +124,14 @@ limited support for fork events.") (define-public libuv (package (name "libuv") - (version "1.24.0") + (version "1.27.0") (source (origin (method url-fetch) (uri (string-append "https://dist.libuv.org/dist/v" version "/libuv-v" version ".tar.gz")) (sha256 (base32 - "01pg0zsfr8mxlpipkbpw0dpsl26x5s966f5br7dx9ac29abk419q")))) + "1jndi12800p1r34rc41kaxhwrb3cb3pcsnkyp3v0c1k7ld3p124d")))) (build-system gnu-build-system) (arguments '(;; XXX: Some tests want /dev/tty, attempt to make connections, etc. diff --git a/gnu/packages/libidn.scm b/gnu/packages/libidn.scm index 719a0f0b4b..1487a7644d 100644 --- a/gnu/packages/libidn.scm +++ b/gnu/packages/libidn.scm @@ -59,14 +59,14 @@ Java libraries.") (define-public libidn2 (package (name "libidn2") - (version "2.0.5") + (version "2.1.1a") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/libidn/" name "-" version ".tar.lz")) (sha256 (base32 - "0s4nkazy1xbs6bbq4farby1xhmhzk5bdclbil5gqdwyzxsgabxqg")))) + "1pdvar50hsgma40gmd7rgrwxhfbqfdpx5slxhl3jjpy1rcjgy9bd")))) (native-inputs `(("lzip" ,lzip))) (inputs diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index 588b2f15c7..fa084794de 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -181,6 +181,8 @@ spreadsheets and presentations.") (sha256 (base32 "0436gnidx45a9vx114hhh216jrh57mqb9zyssyjfadagmyz6hgrj")))) (build-system gnu-build-system) + (arguments + `(#:configure-flags '("--disable-werror"))) (native-inputs `(("doxygen" ,doxygen) ("pkg-config" ,pkg-config))) @@ -315,6 +317,8 @@ working with graphics in the WPG (WordPerfect Graphics) format.") ;; FIXME: Man pages generation requires docbook-to-man; reenable ;; it once this is available. "--without-man" + ;; XXX: A configure test fails with GCC7 when including Boost headers. + "--disable-werror" ;; During configure, the boost headers are found, but linking ;; fails without the following flag. (string-append "--with-boost=" @@ -559,6 +563,8 @@ Java.") (sha256 (base32 "17ai8ajffr0ixxmmcv3k5vgjlcsix38ldb4fw2arild70pbsrbb6")))) (build-system gnu-build-system) + (arguments + `(#:configure-flags '("--disable-werror"))) (native-inputs `(("doxygen" ,doxygen) ("pkg-config" ,pkg-config))) @@ -975,7 +981,7 @@ converting QuarkXPress file format. It supports versions 3.1 to 4.1.") (build-system glib-or-gtk-build-system) (native-inputs `(("bison" ,bison) - ("cppunit" ,cppunit-1.14) + ("cppunit" ,cppunit) ("flex" ,flex) ("pkg-config" ,pkg-config) ("python" ,python-wrapper) diff --git a/gnu/packages/libusb.scm b/gnu/packages/libusb.scm index bf44e90ee8..7965466435 100644 --- a/gnu/packages/libusb.scm +++ b/gnu/packages/libusb.scm @@ -367,7 +367,7 @@ connections from and to iOS devices by connecting to a socket provided by a ,(version-major+minor (package-version python)) "m")))) (propagated-inputs - `(("openssl" ,openssl) + `(("openssl" ,openssl-1.0) ("libplist" ,libplist) ("libusbmuxd" ,libusbmuxd))) (inputs diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 2140d5c6a5..5a681d9c64 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -310,10 +310,6 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration." ("flex" ,flex) ("bison" ,bison) - ;; Build with GCC-7 for full retpoline support. - ;; FIXME: Remove this when our default compiler has retpoline support. - ("gcc" ,gcc-7) - ;; These are needed to compile the GCC plugins. ("gmp" ,gmp) ("mpfr" ,mpfr) @@ -340,11 +336,6 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration." (substitute* (find-files "." "^Makefile(\\.include)?$") (("/bin/pwd") "pwd")) #t)) - (add-before 'configure 'work-around-gcc-7-include-path-issue - (lambda _ - (unsetenv "C_INCLUDE_PATH") - (unsetenv "CPLUS_INCLUDE_PATH") - #t)) (replace 'configure (lambda* (#:key inputs native-inputs target #:allow-other-keys) ;; Avoid introducing timestamps @@ -610,7 +601,7 @@ providing the system administrator with some help in common tasks.") (define-public util-linux (package (name "util-linux") - (version "2.32.1") + (version "2.33.1") (source (origin (method url-fetch) (uri (string-append "mirror://kernel.org/linux/utils/" @@ -618,7 +609,7 @@ providing the system administrator with some help in common tasks.") name "-" version ".tar.xz")) (sha256 (base32 - "1ck7d8srw5szpjq7v0gpmjahnjs6wgqzm311ki4gazww6xx71rl6")) + "08ggvgrb59m5jbq29950xxirsgv4xj3nwsc7vf82nyg1nvrxjjy1")) (patches (search-patches "util-linux-tests.patch")) (modules '((guix build utils))) (snippet @@ -1396,7 +1387,7 @@ configuration (iptunnel, ipmaddr).") (define-public libcap (package (name "libcap") - (version "2.25") + (version "2.26") (source (origin (method url-fetch) (uri (string-append @@ -1404,7 +1395,7 @@ configuration (iptunnel, ipmaddr).") "libcap2/libcap-" version ".tar.xz")) (sha256 (base32 - "0qjiqc5pknaal57453nxcbz3mn1r4hkyywam41wfcglq3v2qlg39")))) + "12s5b8fp61jcn4qld8a7fakcz1han4a6l3b8cyl3n6r7hk2bfc5n")))) (build-system gnu-build-system) (arguments '(#:phases (modify-phases %standard-phases @@ -4154,7 +4145,14 @@ under OpenGL graphics workloads.") (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib")) #:phases (modify-phases %standard-phases - (delete 'configure)))) + (delete 'configure) + (add-before 'build 'kernel-headers-are-system-headers + (lambda* (#:key inputs #:allow-other-keys) + (let ((kernel-headers (assoc-ref inputs "kernel-headers"))) + ;; Make sure the kernel headers are treated as system headers + ;; to suppress a conflict between "util.h" and <linux/fs.h>. + (setenv "C_INCLUDE_PATH" (string-append kernel-headers "/include")) + #t)))))) (native-inputs `(("pkg-config" ,pkg-config))) (inputs @@ -4187,7 +4185,12 @@ interface to the variable facility of UEFI boot firmware.") ;; installed (known as OS_VENDOR in the code). ;; GRUB overrides this, as such it's only used if ;; nothing else is specified on the command line. - "EFIDIR=gnu") + "EFIDIR=gnu" + ;; Treat kernel headers as system headers to prevent + ;; warnings about conflicting types. + (string-append "C_INCLUDE_PATH=" + (assoc-ref %build-inputs "kernel-headers") + "/include")) #:phases (modify-phases %standard-phases (delete 'configure)))) (native-inputs `(("pkg-config" ,pkg-config))) diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm index 28bb44a3ca..20b8bfa886 100644 --- a/gnu/packages/machine-learning.scm +++ b/gnu/packages/machine-learning.scm @@ -1234,7 +1234,7 @@ Python.") "-DgRPC_SSL_PROVIDER=package" "-DgRPC_PROTOBUF_PROVIDER=package"))) (inputs - `(("c-ares" ,c-ares-next) + `(("c-ares" ,c-ares) ("openssl" ,openssl) ("zlib" ,zlib))) (native-inputs diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm index c6002eb63a..ec477da7c8 100644 --- a/gnu/packages/make-bootstrap.scm +++ b/gnu/packages/make-bootstrap.scm @@ -3,6 +3,8 @@ ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Mark H Weaver <mhw@netris.org> +;;; Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> +;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -37,14 +39,18 @@ #:use-module (gnu packages libunistring) #:use-module (gnu packages linux) #:use-module (gnu packages hurd) + #:use-module (gnu packages mes) #:use-module (gnu packages multiprecision) #:use-module (ice-9 match) #:use-module (srfi srfi-1) #:export (%bootstrap-binaries-tarball + %linux-libre-headers-bootstrap-tarball %binutils-bootstrap-tarball %glibc-bootstrap-tarball %gcc-bootstrap-tarball %guile-bootstrap-tarball + %mescc-tools-bootstrap-tarball + %mes-bootstrap-tarball %bootstrap-tarballs %guile-static-stripped)) @@ -109,11 +115,26 @@ for `sh' in $PATH, and without nscd, and with static NSS modules." `(("libc" ,(glibc-for-bootstrap)) ("libc:static" ,(glibc-for-bootstrap) "static") ("gcc" ,(package (inherit gcc) - (outputs '("out")) ; all in one so libgcc_s is easily found + (outputs '("out")) ;all in one so libgcc_s is easily found (inputs - `(("libc" ,(glibc-for-bootstrap)) + `(;; Distinguish the name so we can refer to it below. + ("bootstrap-libc" ,(glibc-for-bootstrap)) ("libc:static" ,(glibc-for-bootstrap) "static") - ,@(package-inputs gcc))))) + ,@(package-inputs gcc))) + (arguments + (substitute-keyword-arguments (package-arguments gcc) + ((#:phases phases) + `(modify-phases ,phases + (add-before 'configure 'treat-glibc-as-system-header + (lambda* (#:key inputs #:allow-other-keys) + (let ((libc (assoc-ref inputs "bootstrap-libc"))) + ;; GCCs build processes requires that the libc + ;; we're building against is on the system header + ;; search path. + (for-each (lambda (var) + (setenv var (string-append libc "/include"))) + '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH")) + #t))))))))) ,@(fold alist-delete (%final-inputs) '("libc" "gcc"))))) (package-with-explicit-inputs p inputs @@ -154,6 +175,7 @@ for `sh' in $PATH, and without nscd, and with static NSS modules." "LDFLAGS = -static")) #t)))))))) (xz (package (inherit xz) + (outputs '("out")) (arguments `(#:strip-flags '("--strip-all") #:phases (modify-phases %standard-phases @@ -300,6 +322,26 @@ for `sh' in $PATH, and without nscd, and with static NSS modules." (license gpl3+) (home-page #f))) +(define %linux-libre-headers-stripped + ;; The subset of Linux-Libre-Headers that we need. + (package (inherit linux-libre-headers) + (name (string-append (package-name linux-libre-headers) "-stripped")) + (build-system trivial-build-system) + (outputs '("out")) + (arguments + `(#:modules ((guix build utils) + (guix build make-bootstrap)) + #:builder + (begin + (use-modules (guix build utils) + (guix build make-bootstrap)) + + (let* ((in (assoc-ref %build-inputs "linux-libre-headers")) + (out (assoc-ref %outputs "out"))) + (copy-linux-headers out in) + #t)))) + (inputs `(("linux-libre-headers" ,linux-libre-headers))))) + (define %binutils-static ;; Statically-linked Binutils. (package (inherit binutils) @@ -513,6 +555,43 @@ for `sh' in $PATH, and without nscd, and with static NSS modules." #t)))) (inputs `(("gcc" ,%gcc-static))))) +(define %mescc-tools-static + ;; A statically linked MesCC Tools for bootstrap. + (package + (inherit mescc-tools) + (name "mescc-tools-static") + (arguments + `(#:system "i686-linux" + ,@(substitute-keyword-arguments (package-arguments mescc-tools) + ((#:make-flags flags) + `(cons "CC=gcc -static" ,flags))))))) + +(define-public %mes-minimal-stripped + ;; A minimal Mes without documentation dependencies, for bootstrap. + (let ((triplet "i686-unknown-linux-gnu")) + (package + (inherit mes) + (name "mes-minimal-stripped") + (native-inputs + `(("guile" ,guile-2.2))) + (arguments + `(#:system "i686-linux" + #:strip-binaries? #f + #:configure-flags '("--mes") + #:phases + (modify-phases %standard-phases + (add-after 'install 'strip-install + (lambda _ + (let* ((out (assoc-ref %outputs "out")) + (share (string-append out "/share"))) + (delete-file-recursively (string-append out "/lib/guile")) + (delete-file-recursively (string-append share "/guile")) + (delete-file-recursively (string-append share "/mes/scaffold")) + (for-each + delete-file + (find-files (string-append share "/mes/lib") + "\\.(h|c)"))))))))))) + (define %guile-static ;; A statically-linked Guile that is relocatable--i.e., it can search ;; .scm and .go files relative to its installation directory, rather @@ -660,6 +739,10 @@ for `sh' in $PATH, and without nscd, and with static NSS modules." ;; A tarball with the statically-linked bootstrap binaries. (tarball-package %static-binaries)) +(define %linux-libre-headers-bootstrap-tarball + ;; A tarball with the statically-linked Linux-Libre-Headers programs. + (tarball-package %linux-libre-headers-stripped)) + (define %binutils-bootstrap-tarball ;; A tarball with the statically-linked Binutils programs. (tarball-package %binutils-static-stripped)) @@ -676,6 +759,14 @@ for `sh' in $PATH, and without nscd, and with static NSS modules." ;; A tarball with the statically-linked, relocatable Guile. (tarball-package %guile-static-stripped)) +(define %mescc-tools-bootstrap-tarball + ;; A tarball with MesCC binary seed. + (tarball-package %mescc-tools-static)) + +(define %mes-bootstrap-tarball + ;; A tarball with Mes ASCII Seed and binary Mes C Library. + (tarball-package %mes-minimal-stripped)) + (define %bootstrap-tarballs ;; A single derivation containing all the bootstrap tarballs, for ;; convenience. @@ -704,9 +795,15 @@ for `sh' in $PATH, and without nscd, and with static NSS modules." %build-inputs) #t))) (inputs `(("guile-tarball" ,%guile-bootstrap-tarball) - ("gcc-tarball" ,%gcc-bootstrap-tarball) - ("binutils-tarball" ,%binutils-bootstrap-tarball) - ("glibc-tarball" ,(%glibc-bootstrap-tarball)) + ,@(match (%current-system) + ((or "i686-linux" "x86_64-linux") + `(("bootstrap-mescc-tools" ,%mescc-tools-bootstrap-tarball) + ("bootstrap-mes" ,%mes-bootstrap-tarball) + ("bootstrap-linux-libre-headers" + ,%linux-libre-headers-bootstrap-tarball))) + (_ `(("gcc-tarball" ,%gcc-bootstrap-tarball) + ("binutils-tarball" ,%binutils-bootstrap-tarball) + ("glibc-tarball" ,(%glibc-bootstrap-tarball))))) ("coreutils&co-tarball" ,%bootstrap-binaries-tarball))) (synopsis "Tarballs containing all the bootstrap binaries") (description synopsis) diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scm index c45e267875..9aff59ab1d 100644 --- a/gnu/packages/mes.scm +++ b/gnu/packages/mes.scm @@ -21,7 +21,6 @@ (define-module (gnu packages mes) #:use-module (gnu packages) #:use-module (gnu packages base) - #:use-module (gnu packages commencement) #:use-module (gnu packages cross-base) #:use-module (gnu packages gcc) #:use-module (gnu packages graphviz) @@ -102,31 +101,33 @@ Guile.") (license gpl3+)))) (define-public mescc-tools - (package - (name "mescc-tools") - (version "0.5.2") - (source (origin - (method url-fetch) - (uri (string-append - "http://git.savannah.nongnu.org/cgit/mescc-tools.git/snapshot/" - name "-Release_" version - ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "01x7bhmgwyf6mc2g1hcvibhps98nllacqm4f0j5l51b1mbi18pc2")))) - (build-system gnu-build-system) - (supported-systems '("i686-linux" "x86_64-linux")) - (arguments - `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))) - #:test-target "test" - #:phases (modify-phases %standard-phases - (delete 'configure)))) - (synopsis "Tools for the full source bootstrapping process") - (description - "Mescc-tools is a collection of tools for use in a full source + (let ((commit "bb062b0da7bf2724ca40f9002b121579898d4ef7") + (revision "0") + (version "0.5.2")) + (package + (name "mescc-tools") + (version (string-append version "-" revision "." (string-take commit 7))) + (source (origin + (method url-fetch) + (uri (string-append + "https://git.savannah.nongnu.org/cgit/mescc-tools.git/snapshot/" + name "-" commit + ".tar.gz")) + (sha256 + (base32 + "1h6j57wyf91i42b26f8msbv6451cw3nm4nmpl1fckp9c7vi8mwkh")))) + (build-system gnu-build-system) + (supported-systems '("i686-linux" "x86_64-linux")) + (arguments + `(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))) + #:test-target "test" + #:phases (modify-phases %standard-phases + (delete 'configure)))) + (synopsis "Tools for the full source bootstrapping process") + (description + "Mescc-tools is a collection of tools for use in a full source bootstrapping process. It consists of the M1 macro assembler, the hex2 linker, the blood-elf symbol table generator, the kaem shell, exec_enable and get_machine.") (home-page "https://savannah.nongnu.org/projects/mescc-tools") - (license gpl3+))) + (license gpl3+)))) diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm index 41148027bc..5a9c438997 100644 --- a/gnu/packages/mpd.scm +++ b/gnu/packages/mpd.scm @@ -103,17 +103,7 @@ interfacing MPD in the C, C++ & Objective C languages.") "17z580gqwsr4xp3x124aapw96pl8hk91c43ld2x75606rim12kcd")))) (build-system meson-build-system) (arguments - `(#:configure-flags '("-Ddocumentation=true") ; The default is 'false'... - #:phases - (modify-phases %standard-phases - (add-before 'configure 'expand-C++-include-path - ;; Make <gcc>/include/c++/ext/string_conversions.h find <stdlib.h>. - (lambda* (#:key inputs #:allow-other-keys) - (let* ((path "CPLUS_INCLUDE_PATH") - (gcc (assoc-ref inputs "gcc")) - (c++ (string-append gcc "/include/c++"))) - (setenv path (string-append c++ ":" (getenv path))) - #t)))))) + `(#:configure-flags '("-Ddocumentation=true"))) ;the default is 'false'... (inputs `(("ao" ,ao) ("alsa-lib" ,alsa-lib) ("avahi" ,avahi) @@ -135,10 +125,7 @@ interfacing MPD in the C, C++ & Objective C languages.") ("pulseaudio" ,pulseaudio) ("sqlite" ,sqlite) ("zlib" ,zlib))) - ;; MPD > 0.21 requires > GCC 6 - (native-inputs `(("gcc" ,gcc-8) - ("gcc-lib" ,gcc-8 "lib") - ("pkg-config" ,pkg-config) + (native-inputs `(("pkg-config" ,pkg-config) ("python-sphinx" ,python-sphinx))) ;; Missing optional inputs: ;; libyajl diff --git a/gnu/packages/multiprecision.scm b/gnu/packages/multiprecision.scm index 6383976f00..db8eeda1ca 100644 --- a/gnu/packages/multiprecision.scm +++ b/gnu/packages/multiprecision.scm @@ -93,13 +93,13 @@ algebra.") (define-public mpfr (package (name "mpfr") - (version "4.0.1") + (version "4.0.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/mpfr/mpfr-" version ".tar.xz")) (sha256 (base32 - "0vp1lrc08gcmwdaqck6bpzllkrykvp06vz5gnqpyw0v3h9h4m1v7")))) + "12m3amcavhpqygc499s3fzqlb8f2j2rr7fkqsm10xbjfc04fffqx")))) (build-system gnu-build-system) (outputs '("out" "debug")) (propagated-inputs `(("gmp" ,gmp))) ; <mpfr.h> refers to <gmp.h> diff --git a/gnu/packages/node.scm b/gnu/packages/node.scm index a0221601dd..2772f56d9f 100644 --- a/gnu/packages/node.scm +++ b/gnu/packages/node.scm @@ -186,7 +186,7 @@ ("icu4c" ,icu4c) ("libuv" ,libuv-1.19) ("nghttp2" ,nghttp2 "lib") - ("openssl" ,openssl) + ("openssl" ,openssl-1.0) ("zlib" ,zlib))) (synopsis "Evented I/O for V8 JavaScript") (description "Node.js is a platform built on Chrome's JavaScript runtime diff --git a/gnu/packages/openldap.scm b/gnu/packages/openldap.scm index e0190d2c0e..e8d766e472 100644 --- a/gnu/packages/openldap.scm +++ b/gnu/packages/openldap.scm @@ -57,7 +57,7 @@ (define-public openldap (package (name "openldap") - (version "2.4.46") + (version "2.4.47") (source (origin (method url-fetch) @@ -74,7 +74,7 @@ "openldap-release/openldap-" version ".tgz"))) (sha256 (base32 - "0bab1km8f2nan1x0zgwliknbxg0zlf2pafxrr867kblrdfwdr44s")))) + "02sj0p1pq12hqq29b22m3f5zs2rykgvc0q3wlynxjcsjhrvmhk7m")))) (build-system gnu-build-system) (inputs `(("bdb" ,bdb-5.3) ("cyrus-sasl" ,cyrus-sasl) diff --git a/gnu/packages/patches/acl-fix-perl-regex.patch b/gnu/packages/patches/acl-fix-perl-regex.patch deleted file mode 100644 index f682abc058..0000000000 --- a/gnu/packages/patches/acl-fix-perl-regex.patch +++ /dev/null @@ -1,22 +0,0 @@ -This can be removed with the next acl release - ---- - test/run | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/test/run b/test/run -index 2cf52e8..4627cd2 100755 ---- a/test/run -+++ b/test/run -@@ -70,7 +70,7 @@ for (;;) { - if (defined $line) { - # Substitute %VAR and %{VAR} with environment variables. - $line =~ s[%(\w+)][$ENV{$1}]eg; -- $line =~ s[%{(\w+)}][$ENV{$1}]eg; -+ $line =~ s[%\{(\w+)\}][$ENV{$1}]eg; - } - if (defined $line) { - if ($line =~ s/^\s*< ?//) { --- -2.15.0 - diff --git a/gnu/packages/patches/acl-hurd-path-max.patch b/gnu/packages/patches/acl-hurd-path-max.patch deleted file mode 100644 index 89cb3a38d7..0000000000 --- a/gnu/packages/patches/acl-hurd-path-max.patch +++ /dev/null @@ -1,80 +0,0 @@ -http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=636512 - -From: Svante Signell <srs@kth.se> -Subject: acl: Fix FTBFS on hurd-i386 -Date: Wed, 03 Aug 2011 19:36:27 +0200 - -Currently acl does not compile on hurd-i386. The problem is a PATH_MAX -definition which is not supported on GNU/Hurd. - -Index: acl-2.2.52/setfacl/parse.c -=================================================================== ---- acl-2.2.52/setfacl/parse.c -+++ acl-2.2.52/setfacl/parse.c -@@ -419,7 +419,13 @@ read_acl_comments( - bytes for "# file: ". Not a good solution but for now it is the - best I can do without too much impact on the code. [tw] - */ -+ -+#ifdef __GNU__ -+ char *linebuf; -+ size_t dummy = 0; -+#else - char linebuf[(4*PATH_MAX)+9]; -+#endif - char *cp; - char *p; - int comments_read = 0; -@@ -449,9 +455,13 @@ read_acl_comments( - if (line) - (*line)++; - -+#ifdef __GNU__ -+ if (getline(&linebuf, &dummy, file) == -1) -+ break; -+#else - if (fgets(linebuf, sizeof(linebuf), file) == NULL) - break; -- -+#endif - comments_read = 1; - - p = strrchr(linebuf, '\0'); -@@ -473,7 +483,12 @@ read_acl_comments( - goto fail; - *path_p = (char*)malloc(strlen(cp)+1); - if (!*path_p) -+ { -+#ifdef __GNU__ -+ free (linebuf); -+#endif - return -1; -+ } - strcpy(*path_p, cp); - } - } else if (strncmp(cp, "owner:", 6) == 0) { -@@ -522,13 +537,24 @@ read_acl_comments( - } - } - if (ferror(file)) -+ { -+#ifdef __GNU__ -+ free (linebuf); -+#endif - return -1; -+ } -+#ifdef __GNU__ -+ free (linebuf); -+#endif - return comments_read; - fail: - if (path_p && *path_p) { - free(*path_p); - *path_p = NULL; - } -+#ifdef __GNU__ -+ free (linebuf); -+#endif - return -EINVAL; - } - diff --git a/gnu/packages/patches/aspell-gcc-compat.patch b/gnu/packages/patches/aspell-gcc-compat.patch new file mode 100644 index 0000000000..94c44f8fb6 --- /dev/null +++ b/gnu/packages/patches/aspell-gcc-compat.patch @@ -0,0 +1,31 @@ +Fix GCC7 warnings. + +Taken from upstream: +https://git.savannah.gnu.org/cgit/aspell.git/commit/?id=8089fa02122fed0a6394eba14bbedcb1d18e2384 + +diff --git a/modules/filter/tex.cpp b/modules/filter/tex.cpp +index a979539..19ab63c 100644 +--- a/modules/filter/tex.cpp ++++ b/modules/filter/tex.cpp +@@ -174,7 +174,7 @@ namespace { + + if (c == '{') { + +- if (top.in_what == Parm || top.in_what == Opt || top.do_check == '\0') ++ if (top.in_what == Parm || top.in_what == Opt || *top.do_check == '\0') + push_command(Parm); + + top.in_what = Parm; +diff --git a/prog/check_funs.cpp b/prog/check_funs.cpp +index db54f3d..89ee09d 100644 +--- a/prog/check_funs.cpp ++++ b/prog/check_funs.cpp +@@ -647,7 +647,7 @@ static void print_truncate(FILE * out, const char * word, int width) { + } + } + if (i == width-1) { +- if (word == '\0') ++ if (*word == '\0') + put(out,' '); + else if (word[len] == '\0') + put(out, word, len); diff --git a/gnu/packages/patches/binutils-boot-2.20.1a.patch b/gnu/packages/patches/binutils-boot-2.20.1a.patch new file mode 100644 index 0000000000..7e5762ceb4 --- /dev/null +++ b/gnu/packages/patches/binutils-boot-2.20.1a.patch @@ -0,0 +1,157 @@ +This patch enables building binutils using TCC and Mes C Library + + * disable building DOC + * remove signed int trickery that does not work with TCC + * fixe the malloc prototype to use size_t + * add missing includes + * remove C99'isms to avoid of mixing code and variable declaration + * [MES_BOOTSTRAP]: remove strncmp to avoid duplicat symbol + +Upstream status: Not presented upstream. + +diff -purN -x config.status -x config.h -x BOOT ../binutils-2.20.1a/bfd/elf32-i386.c binutils-2.20.1a/bfd/elf32-i386.c +--- ../binutils-2.20.1a/bfd/elf32-i386.c 2009-09-10 13:47:12.000000000 +0200 ++++ binutils-2.20.1a/bfd/elf32-i386.c 2018-06-23 19:33:20.068134411 +0200 +@@ -4254,6 +4254,7 @@ elf_i386_finish_dynamic_symbol (bfd *out + if (!h->pointer_equality_needed) + abort (); + ++ { + /* For non-shared object, we can't use .got.plt, which + contains the real function addres if we need pointer + equality. We load the GOT entry with the PLT entry. */ +@@ -4262,6 +4263,7 @@ elf_i386_finish_dynamic_symbol (bfd *out + (plt->output_section->vma + + plt->output_offset + h->plt.offset), + htab->elf.sgot->contents + h->got.offset); ++ } + return TRUE; + } + } +diff -purN -x config.status -x config.h -x BOOT ../binutils-2.20.1a/bfd/elfcode.h binutils-2.20.1a/bfd/elfcode.h +--- ../binutils-2.20.1a/bfd/elfcode.h 2009-09-10 13:47:12.000000000 +0200 ++++ binutils-2.20.1a/bfd/elfcode.h 2018-06-19 19:07:16.647627075 +0200 +@@ -73,6 +73,7 @@ + #include "bfdlink.h" + #include "libbfd.h" + #include "elf-bfd.h" ++#include <limits.h> + + /* Renaming structures, typedefs, macros and functions to be size-specific. */ + #define Elf_External_Ehdr NAME(Elf,External_Ehdr) +@@ -706,8 +707,8 @@ elf_object_p (bfd *abfd) + if (i_ehdrp->e_shnum != 1) + { + /* Check that we don't have a totally silly number of sections. */ +- if (i_ehdrp->e_shnum > (unsigned int) -1 / sizeof (x_shdr) +- || i_ehdrp->e_shnum > (unsigned int) -1 / sizeof (i_shdr)) ++ if (i_ehdrp->e_shnum > INT_MAX / sizeof (x_shdr) ++ || i_ehdrp->e_shnum > INT_MAX / sizeof (i_shdr)) + goto got_wrong_format_error; + + where += (i_ehdrp->e_shnum - 1) * sizeof (x_shdr); +diff -purN -x config.status -x config.h -x BOOT ../binutils-2.20.1a/bfd/Makefile.in binutils-2.20.1a/bfd/Makefile.in +--- ../binutils-2.20.1a/bfd/Makefile.in 2010-03-03 14:59:15.000000000 +0100 ++++ binutils-2.20.1a/bfd/Makefile.in 2018-06-16 14:00:46.297724081 +0200 +@@ -320,7 +320,7 @@ ACLOCAL_AMFLAGS = -I . -I .. -I ../confi + # RELEASE=y + INCDIR = $(srcdir)/../include + CSEARCH = -I. -I$(srcdir) -I$(INCDIR) +-SUBDIRS = doc po ++SUBDIRS = # these fail to build: doc po + bfddocdir = doc + libbfd_la_LDFLAGS = $(am__append_1) -release `cat libtool-soversion` \ + @SHARED_LDFLAGS@ $(am__empty) +diff -purN -x config.status -x config.h -x BOOT ../binutils-2.20.1a/binutils/arparse.c binutils-2.20.1a/binutils/arparse.c +--- ../binutils-2.20.1a/binutils/arparse.c 2009-10-16 13:52:16.000000000 +0200 ++++ binutils-2.20.1a/binutils/arparse.c 2018-06-19 01:30:00.576219981 +0200 +@@ -330,7 +330,7 @@ YYID (i) + # define YYMALLOC malloc + # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +-void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ ++void *malloc (size_t); /* INFRINGES ON USER NAME SPACE */ + # endif + # endif + # ifndef YYFREE +diff -purN -x config.status -x config.h -x BOOT ../binutils-2.20.1a/binutils/dwarf.c binutils-2.20.1a/binutils/dwarf.c +--- ../binutils-2.20.1a/binutils/dwarf.c 2009-09-14 13:43:26.000000000 +0200 ++++ binutils-2.20.1a/binutils/dwarf.c 2018-06-16 14:01:45.162684662 +0200 +@@ -27,6 +27,10 @@ + #include "dwarf2.h" + #include "dwarf.h" + ++#if MES_BOOTSTRAP ++#include "getopt.h" ++#endif ++ + static int have_frame_base; + static int need_base_address; + +diff -purN -x config.status -x config.h -x BOOT ../binutils-2.20.1a/binutils/sysinfo.c binutils-2.20.1a/binutils/sysinfo.c +--- ../binutils-2.20.1a/binutils/sysinfo.c 2009-10-16 13:52:17.000000000 +0200 ++++ binutils-2.20.1a/binutils/sysinfo.c 2018-06-19 01:29:23.823612807 +0200 +@@ -286,7 +286,7 @@ YYID (i) + # define YYMALLOC malloc + # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +-void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ ++void *malloc (size_t); /* INFRINGES ON USER NAME SPACE */ + # endif + # endif + # ifndef YYFREE +diff -purN -x config.status -x config.h -x BOOT ../binutils-2.20.1a/gas/config/tc-i386.c binutils-2.20.1a/gas/config/tc-i386.c +--- ../binutils-2.20.1a/gas/config/tc-i386.c 2009-09-14 13:43:27.000000000 +0200 ++++ binutils-2.20.1a/gas/config/tc-i386.c 2018-06-23 19:39:37.546254752 +0200 +@@ -4869,6 +4869,7 @@ build_modrm_byte (void) + if (vex_3_sources) + { + unsigned int nds, reg; ++ expressionS *exp; + + if (i.tm.opcode_modifier.veximmext + && i.tm.opcode_modifier.immext) +@@ -4892,7 +4893,7 @@ build_modrm_byte (void) + + /* Generate an 8bit immediate operand to encode the register + operand. */ +- expressionS *exp = &im_expressions[i.imm_operands++]; ++ exp = &im_expressions[i.imm_operands++]; + i.op[i.operands].imms = exp; + i.types[i.operands] = imm8; + i.operands++; +diff -purN -x config.status -x config.h -x BOOT ../binutils-2.20.1a/ld/ldgram.c binutils-2.20.1a/ld/ldgram.c +--- ../binutils-2.20.1a/ld/ldgram.c 2009-10-16 13:52:15.000000000 +0200 ++++ binutils-2.20.1a/ld/ldgram.c 2018-06-19 01:30:57.809165437 +0200 +@@ -561,7 +561,7 @@ YYID (i) + # define YYMALLOC malloc + # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +-void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ ++void *malloc (size_t); /* INFRINGES ON USER NAME SPACE */ + # endif + # endif + # ifndef YYFREE +diff -purN -x config.status -x config.h -x BOOT ../binutils-2.20.1a/libiberty/strncmp.c binutils-2.20.1a/libiberty/strncmp.c +--- ../binutils-2.20.1a/libiberty/strncmp.c 2005-03-28 04:09:01.000000000 +0200 ++++ binutils-2.20.1a/libiberty/strncmp.c 2018-06-23 19:19:50.038992482 +0200 +@@ -15,6 +15,13 @@ Compares the first @var{n} bytes of two + #include <ansidecl.h> + #include <stddef.h> + ++#if !MES_BOOTSTRAP ++ ++/* ++ libtool: link: /gnu/store/rgwjixk5zl7s2d3xsb2ws2z2q3m0xjm4-tcc-boot-0.9.26-0.97196ce/bin/tcc -D __GLIBC_MINOR__=6 -D MES_BOOTSTRAP=1 -g -o size size.o bucomm.o version.o filemode.o ../bfd/.libs/libbfd.a ../libiberty/libiberty.a ./../intl/libintl.a ++ /gnu/store/rgwjixk5zl7s2d3xsb2ws2z2q3m0xjm4-tcc-boot-0.9.26-0.97196ce/lib/libc.a: error: 'strncmp' defined twice ++*/ ++ + int + strncmp(const char *s1, const char *s2, register size_t n) + { +@@ -31,3 +38,5 @@ strncmp(const char *s1, const char *s2, + } + return 0; + } ++ ++#endif // !MES_BOOTSTRAP diff --git a/gnu/packages/patches/diffutils-getopt.patch b/gnu/packages/patches/diffutils-getopt.patch deleted file mode 100644 index 05c2504adf..0000000000 --- a/gnu/packages/patches/diffutils-getopt.patch +++ /dev/null @@ -1,44 +0,0 @@ -commit e3461d1c21a99bcef1b8826f710434e0ffb5adea -Author: Paul Eggert <eggert@cs.ucla.edu> -Date: Sun Jun 11 15:53:09 2017 -0700 - - getopt-posix: port to glibc 2.25.90 - - Problem reported by Daniel P. Berrange in: - http://lists.gnu.org/archive/html/bug-gnulib/2017-06/msg00003.html - * lib/getopt-pfx-core.h (_GETOPT_CORE_H): - * lib/getopt-pfx-ext.h (_GETOPT_EXT_H): - #undef if __GETOPT_PREFIX is defined. - -diff --git a/lib/getopt-pfx-core.h b/lib/getopt-pfx-core.h -index 155c11612..6ad0da683 100644 ---- a/lib/getopt-pfx-core.h -+++ b/lib/getopt-pfx-core.h -@@ -47,6 +47,11 @@ - # define opterr __GETOPT_ID (opterr) - # define optind __GETOPT_ID (optind) - # define optopt __GETOPT_ID (optopt) -+ -+/* The system's getopt.h may have already included getopt-core.h to -+ declare the unprefixed identifiers. Undef _GETOPT_CORE_H so that -+ getopt-core.h declares them with prefixes. */ -+# undef _GETOPT_CORE_H - #endif - - #include <getopt-core.h> -diff --git a/lib/getopt-pfx-ext.h b/lib/getopt-pfx-ext.h -index d960bb34e..c5ac52202 100644 ---- a/lib/getopt-pfx-ext.h -+++ b/lib/getopt-pfx-ext.h -@@ -45,6 +45,11 @@ - # define getopt_long_only __GETOPT_ID (getopt_long_only) - # define option __GETOPT_ID (option) - # define _getopt_internal __GETOPT_ID (getopt_internal) -+ -+/* The system's getopt.h may have already included getopt-ext.h to -+ declare the unprefixed identifiers. Undef _GETOPT_EXT_H so that -+ getopt-ext.h declares them with prefixes. */ -+# undef _GETOPT_EXT_H - #endif - - /* Standalone applications get correct prototypes for getopt_long and diff --git a/gnu/packages/patches/gcc-boot-2.95.3.patch b/gnu/packages/patches/gcc-boot-2.95.3.patch new file mode 100644 index 0000000000..fd167ae052 --- /dev/null +++ b/gnu/packages/patches/gcc-boot-2.95.3.patch @@ -0,0 +1,137 @@ +This patch enables building gcc-2.95.3 using TCC and Mes C Library. + + * Disable building DOC + * Avoid running `fixproto'. + * Force running `fixinc'. + * Replace Makefile trickery of creating an libgcc1.a archive, then + extracting the .o files later to create a new libgcc2.a archive. + Instead, keep temporary .o files. + +Upstream status: Not presented upstream. + +diff -purN -x foo.c -x BOOT -x BOOT-2 -x BOOT-strict -x .git -x Makefile -x config.status -x config.h -x BOOT -x BOOT-GCC ../gcc-2.95.3/gcc/Makefile.in gcc-2.95.3/gcc/Makefile.in +--- ../gcc-2.95.3/gcc/Makefile.in 2001-01-25 15:02:58.000000000 +0100 ++++ gcc-2.95.3/gcc/Makefile.in 2018-06-23 11:46:03.525159181 +0200 +@@ -221,7 +221,7 @@ RANLIB_TEST_FOR_TARGET = \ + SYSTEM_HEADER_DIR = /usr/include + + # Control whether to run fixproto. +-STMP_FIXPROTO = stmp-fixproto ++# STMP_FIXPROTO = stmp-fixproto + + # Test to see whether <limits.h> exists in the system header files. + LIMITS_H_TEST = [ -f $(SYSTEM_HEADER_DIR)/limits.h ] +@@ -958,6 +958,7 @@ libgcc1.cross: + # fragments. + libgcc1.a: libgcc1.c $(CONFIG_H) $(LIB1FUNCS_EXTRA) config.status + -rm -f tmplibgcc1.a ++ mkdir -p libgcc1-o + # Actually build it in tmplibgcc1.a, then rename at end, + # so that libgcc1.a itself remains nonexistent if compilation is aborted. + # -e causes any failing command to make this rule fail. +@@ -974,6 +975,7 @@ libgcc1.a: libgcc1.c $(CONFIG_H) $(LIB1F + if [ $$? -eq 0 ] ; then true; else exit 1; fi; \ + mv libgcc1$(objext) $${name}$(objext); \ + $(OLDAR) $(OLDAR_FLAGS) tmplibgcc1.a $${name}$(objext); \ ++ mv $${name}$(objext) libgcc1-o; \ + rm -f $${name}$(objext); \ + done + # Some shells crash when a loop has no items. +@@ -994,6 +996,7 @@ libgcc1.a: libgcc1.c $(CONFIG_H) $(LIB1F + if [ $$? -eq 0 ] ; then true; else exit 1; fi; \ + $(OLDAR) $(OLDAR_FLAGS) tmplibgcc1.a $${name}$(objext); \ + if [ $$? -eq 0 ] ; then true; else exit 1; fi; \ ++ mv $${name}$(objext) libgcc1-o; \ + rm -f $${name}.s $${name}$(objext); \ + else true; \ + fi; \ +@@ -1024,6 +1027,7 @@ libgcc1-asm.a: libgcc2.ready config.stat + if [ $$? -eq 0 ] ; then true; else exit 1; fi; \ + mv libgcc1$(objext) $${name}$(objext); \ + $(AR_FOR_TARGET) $(AR_FLAGS_FOR_TARGET) tmplibgcc1.a $${name}$(objext); \ ++ mv $${name}$(objext) libgcc1-o; \ + rm -f $${name}$(objext); \ + done + -rm -f libgcc1.S +@@ -1062,6 +1066,7 @@ libgcc2.a: libgcc2.c libgcc2.ready $(CON + # Actually build it in tmplibgcc2.a, then rename at end, + # so that libgcc2.a itself remains nonexistent if compilation is aborted. + -rm -f tmplibgcc2.a ++ mkdir -p libgcc2-o + # -e causes any failing command to make this rule fail. + # -e doesn't work in certain shells, so we test $$? as well. + # lynx has a broken ar, it always complains when the initial library is +@@ -1139,6 +1144,7 @@ libgcc2.a: libgcc2.c libgcc2.ready $(CON + $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) $(INCLUDES) -c $${file}; \ + if [ $$? -eq 0 ] ; then true; else exit 1; fi; \ + $(AR_FOR_TARGET) $(AR_FLAGS_FOR_TARGET) tmplibgcc2.a $${oname}$(objext); \ ++ mv $${oname}$(objext) libgcc2-o;\ + rm -f $${name}.s $${oname}$(objext); \ + fi; \ + done +@@ -1156,7 +1162,7 @@ libgcc.a: $(LIBGCC1) $(LIBGCC2) + -rm -rf tmplibgcc.a libgcc.a tmpcopy + mkdir tmpcopy + -if [ x$(LIBGCC1) != x ]; \ +- then (cd tmpcopy; $(AR_FOR_TARGET) x ../$(LIBGCC1)); \ ++ then cp -v libgcc1-o/*.o tmpcopy; \ + else true; \ + fi + # Some versions of ar (specifically the one in RISC/os 5.x), create an +@@ -1164,7 +1170,7 @@ libgcc.a: $(LIBGCC1) $(LIBGCC2) + # the second ar command tries to overwrite this file. To avoid the error + # message from ar, we make sure all files are writable. + -(cd tmpcopy; chmod +w * > /dev/null 2>&1) +- (cd tmpcopy; $(AR_FOR_TARGET) x ../$(LIBGCC2)) ++ cp -v libgcc2-o/*.o tmpcopy + (cd tmpcopy; $(AR_FOR_TARGET) $(AR_FLAGS_FOR_TARGET) ../tmplibgcc.a *$(objext)) + rm -rf tmpcopy + -if $(RANLIB_TEST_FOR_TARGET) ; then \ +@@ -2093,14 +2099,18 @@ gcov$(exeext): $(GCOV_OBJS) $(LIBDEPS) + # s-* so that mostlyclean does not force the include directory to + # be rebuilt. + ++# STMP_FIXINC = @STMP_FIXINC@ ++STMP_FIXINC = stmp-fixinc ++ + # Build the include directory including float.h (which no longer depends upon + # enquire). +-stmp-int-hdrs: stmp-fixinc $(USER_H) xlimits.h ++stmp-int-hdrs: $(STMP_FIXINC) $(USER_H) xlimits.h + # Copy in the headers provided with gcc. + # The sed command gets just the last file name component; + # this is necessary because VPATH could add a dirname. + # Using basename would be simpler, but some systems don't have it. + # The touch command is here to workaround an AIX/Linux NFS bug. ++ -if [ -d include ] ; then true; else mkdir include; chmod a+rx include; fi + for file in .. $(USER_H); do \ + if [ X$$file != X.. ]; then \ + realfile=`echo $$file | sed -e 's|.*/\([^/]*\)$$|\1|'`; \ +@@ -2265,16 +2275,17 @@ stmp-fixproto: fixhdr.ready fixproto stm + # + # Remake the info files. + +-doc: info +-info: cpp.info gcc.info lang.info +- +-cpp.info: $(srcdir)/cpp.texi +- $(MAKEINFO) $(MAKEINFOFLAGS) -I$(srcdir) -o cpp.info $(srcdir)/cpp.texi +- +-gcc.info: $(srcdir)/gcc.texi $(srcdir)/extend.texi $(srcdir)/install.texi \ +- $(srcdir)/invoke.texi $(srcdir)/md.texi $(srcdir)/rtl.texi \ +- $(srcdir)/tm.texi $(srcdir)/gcov.texi +- $(MAKEINFO) $(MAKEINFOFLAGS) -I$(srcdir) -o gcc.info $(srcdir)/gcc.texi ++doc: ++# doc: info ++# info: cpp.info gcc.info lang.info ++ ++# cpp.info: $(srcdir)/cpp.texi ++# $(MAKEINFO) $(MAKEINFOFLAGS) -I$(srcdir) -o cpp.info $(srcdir)/cpp.texi ++ ++# gcc.info: $(srcdir)/gcc.texi $(srcdir)/extend.texi $(srcdir)/install.texi \ ++# $(srcdir)/invoke.texi $(srcdir)/md.texi $(srcdir)/rtl.texi \ ++# $(srcdir)/tm.texi $(srcdir)/gcov.texi ++# $(MAKEINFO) $(MAKEINFOFLAGS) -I$(srcdir) -o gcc.info $(srcdir)/gcc.texi + + dvi: gcc.dvi cpp.dvi lang.dvi + diff --git a/gnu/packages/patches/gcc-boot-4.7.4.patch b/gnu/packages/patches/gcc-boot-4.7.4.patch new file mode 100644 index 0000000000..3e51e31fdf --- /dev/null +++ b/gnu/packages/patches/gcc-boot-4.7.4.patch @@ -0,0 +1,68 @@ +This patch enables building gcc-4.7.4 using gcc-2.95.3 and glibc-2.2.5 + + * Tweak Makefile to allow overriding NATIVE_SYSTEM_HEADER_DIR using #:makeflags + * Add missing limits.h include. + * Add SSIZE_MAX define. The SSIZE_MAX define has been added to Mes + upstream and can be removed with the next Mes release. + * Remove -fbuilding-libgcc flag, it assumes features being present from a + newer gcc or glibc. + * [MES_BOOTSTRAP_GCC]: Disable threads harder. + +Upstream status: not presented upstream. + +diff --git a/gcc/Makefile.in b/gcc/Makefile.in +index f3cc49fdb18..bc5718fc9a6 100644 +--- a/gcc/Makefile.in ++++ b/gcc/Makefile.in +@@ -458,7 +458,7 @@ LINKER_PLUGIN_API_H = $(srcdir)/../include/plugin-api.h + LTO_SYMTAB_H = $(srcdir)/../include/lto-symtab.h + + # Default native SYSTEM_HEADER_DIR, to be overridden by targets. +-NATIVE_SYSTEM_HEADER_DIR = @NATIVE_SYSTEM_HEADER_DIR@ ++# NATIVE_SYSTEM_HEADER_DIR = @NATIVE_SYSTEM_HEADER_DIR@ + # Default cross SYSTEM_HEADER_DIR, to be overridden by targets. + CROSS_SYSTEM_HEADER_DIR = @CROSS_SYSTEM_HEADER_DIR@ + +diff --git a/gcc/config/host-linux.c b/gcc/config/host-linux.c +index 94b7a0b89a7..ab2baab55ca 100644 +--- a/gcc/config/host-linux.c ++++ b/gcc/config/host-linux.c +@@ -23,6 +23,12 @@ + #include "hosthooks.h" + #include "hosthooks-def.h" + ++// ../.././gcc/config/host-linux.c:213: `SSIZE_MAX' undeclared (first ++// use in this function) ++#include <limits.h> ++#ifndef SSIZE_MAX ++# define SSIZE_MAX LONG_MAX ++#endif + + /* Linux has a feature called exec-shield-randomize that perturbs the + address of non-fixed mapped segments by a (relatively) small amount. +diff --git a/libgcc/Makefile.in b/libgcc/Makefile.in +index c301ff03cae..f86318c3bd5 100644 +--- a/libgcc/Makefile.in ++++ b/libgcc/Makefile.in +@@ -225,7 +225,7 @@ endif + LIBGCC2_DEBUG_CFLAGS = -g + LIBGCC2_CFLAGS = -O2 $(LIBGCC2_INCLUDES) $(GCC_CFLAGS) $(HOST_LIBGCC2_CFLAGS) \ + $(LIBGCC2_DEBUG_CFLAGS) -DIN_LIBGCC2 \ +- -fbuilding-libgcc -fno-stack-protector \ ++ -fno-stack-protector \ + $(INHIBIT_LIBC_CFLAGS) + + # Additional options to use when compiling libgcc2.a. +diff --git a/libgcc/generic-morestack-thread.c b/libgcc/generic-morestack-thread.c +index bbe6dd12b5a..1d1d48223d7 100644 +--- a/libgcc/generic-morestack-thread.c ++++ b/libgcc/generic-morestack-thread.c +@@ -35,7 +35,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + will want to define inhibit_libc while building a compiler which + can build glibc. */ + +-#ifndef inhibit_libc ++#if 0 //!defined (inhibit_libc) && !MES_BOOTSTRAP_GCC + + #include <errno.h> + #include <pthread.h> diff --git a/gnu/packages/patches/glibc-boot-2.16.0.patch b/gnu/packages/patches/glibc-boot-2.16.0.patch new file mode 100644 index 0000000000..5cb29bc271 --- /dev/null +++ b/gnu/packages/patches/glibc-boot-2.16.0.patch @@ -0,0 +1,352 @@ +This patch enables building glibc-2.2.5 using TCC and GNU Make 4.x and Mes C Library. + + * Makefile: Do not link with (non-existent) libgc_eh. + * Makefile: Add SHELL variable, ready for substitution, export it. + * Makefile: Do not build or assume librpc_compat_pic. + * Makefile: Do not build libmesusage. + * gen-as-const: Always add preamble. + * [BOOTSTRAP_GLIBC]: Really disable rpc. + +Upstream status: Not presented upstream. + +diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/elf/Makefile glibc-2.16.0/elf/Makefile +--- /home/janneke/src/glibc-2.16.0/elf/Makefile 2012-06-30 21:12:34.000000000 +0200 ++++ glibc-2.16.0/elf/Makefile 2018-09-02 12:54:44.616962543 +0200 +@@ -17,6 +17,8 @@ + + # Makefile for elf subdirectory of GNU C Library. + ++SHELL := /bin/sh ++ + subdir := elf + + headers = elf.h bits/elfclass.h link.h bits/link.h +diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/include/libc-symbols.h glibc-2.16.0/include/libc-symbols.h +--- /home/janneke/src/glibc-2.16.0/include/libc-symbols.h 2012-06-30 21:12:34.000000000 +0200 ++++ glibc-2.16.0/include/libc-symbols.h 2018-09-02 22:41:00.798467803 +0200 +@@ -558,9 +558,9 @@ for linking") + # define libc_hidden_weak(name) hidden_weak (name) + # ifdef LINK_OBSOLETE_RPC + /* libc_hidden_nolink_sunrpc should only get used in sunrpc code. */ +-# define libc_hidden_nolink_sunrpc(name, version) hidden_def (name) ++# define libc_hidden_nolink_sunrpc(name, version) + # else +-# define libc_hidden_nolink_sunrpc(name, version) hidden_nolink (name, libc, version) ++# define libc_hidden_nolink_sunrpc(name, version) + # endif + # define libc_hidden_ver(local, name) hidden_ver (local, name) + # define libc_hidden_data_def(name) hidden_data_def (name) +diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/Makeconfig glibc-2.16.0/Makeconfig +--- /home/janneke/src/glibc-2.16.0/Makeconfig 2012-06-30 21:12:34.000000000 +0200 ++++ glibc-2.16.0/Makeconfig 2018-09-03 00:00:25.290357414 +0200 +@@ -23,6 +23,9 @@ ifneq (,) + This makefile requires GNU Make. + endif + ++SHELL := /bin/sh ++export SHELL ++ + all: # Make this the default goal + + ifneq "$(origin +included-Makeconfig)" "file" +@@ -521,9 +524,9 @@ ifneq ($(have-cc-with-libunwind),yes) + else + libunwind = -lunwind + endif +-libgcc_eh := -Wl,--as-needed -lgcc_s $(libunwind) -Wl,--no-as-needed ++libgcc_eh := #-Wl,--as-needed -lgcc_s $(libunwind) -Wl,--no-as-needed + gnulib := -lgcc $(libgcc_eh) +-static-gnulib := -lgcc -lgcc_eh $(libunwind) ++static-gnulib := -lgcc $(libunwind) + libc.so-gnulib := -lgcc + endif + +preinit = $(addprefix $(csu-objpfx),crti.o) +diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/Makefile glibc-2.16.0/Makefile +--- /home/janneke/src/glibc-2.16.0/Makefile 2012-06-30 21:12:34.000000000 +0200 ++++ glibc-2.16.0/Makefile 2018-09-02 23:01:10.485803965 +0200 +@@ -22,6 +22,9 @@ ifneq (,) + This makefile requires GNU Make. + endif + ++SHELL := /bin/sh ++export SHELL ++ + include Makeconfig + + +@@ -135,13 +138,10 @@ $(common-objpfx)linkobj/libc.so: $(elfob + $(shlib-lds) + $(build-shlib) + +-$(common-objpfx)linkobj/libc_pic.a: $(common-objpfx)libc_pic.a \ +- $(common-objpfx)sunrpc/librpc_compat_pic.a ++$(common-objpfx)linkobj/libc_pic.a: $(common-objpfx)libc_pic.a + $(..)./scripts/mkinstalldirs $(common-objpfx)linkobj + (cd $(common-objpfx)linkobj; \ + $(AR) x ../libc_pic.a; \ +- rm $$($(AR) t ../sunrpc/librpc_compat_pic.a | sed 's/^compat-//'); \ +- $(AR) x ../sunrpc/librpc_compat_pic.a; \ + $(AR) cr libc_pic.a *.os; \ + rm *.os) + endif +@@ -151,7 +151,7 @@ endif + # the current libc build for testing. + $(common-objpfx)testrun.sh: $(common-objpfx)config.make \ + $(..)Makeconfig $(..)Makefile +- (echo '#!/bin/sh'; \ ++ (echo '#! $(SHELL)'; \ + echo 'builddir=`dirname "$$0"`'; \ + echo 'GCONV_PATH="$${builddir}/iconvdata" \'; \ + echo 'exec $(subst $(common-objdir),"$${builddir}",\ +diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/Makefile.in glibc-2.16.0/Makefile.in +--- /home/janneke/src/glibc-2.16.0/Makefile.in 2012-06-30 21:12:34.000000000 +0200 ++++ glibc-2.16.0/Makefile.in 2018-09-02 13:03:01.892962551 +0200 +@@ -9,3 +9,6 @@ all .DEFAULT: + install: + LANGUAGE=C LC_ALL=C; export LANGUAGE LC_ALL; \ + $(MAKE) -r PARALLELMFLAGS="$(PARALLELMFLAGS)" -C $(srcdir) objdir=`pwd` $@ ++ ++export SHELL ++export BASH +diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/malloc/Makefile glibc-2.16.0/malloc/Makefile +--- /home/janneke/src/glibc-2.16.0/malloc/Makefile 2012-06-30 21:12:34.000000000 +0200 ++++ glibc-2.16.0/malloc/Makefile 2018-09-02 17:11:33.461547394 +0200 +@@ -35,7 +35,7 @@ install-lib := libmcheck.a + non-lib.a := libmcheck.a + + # Additional library. +-extra-libs = libmemusage ++extra-libs = #libmemusage + extra-libs-others = $(extra-libs) + + libmemusage-routines = memusage +diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/nscd/cache.c glibc-2.16.0/nscd/cache.c +--- /home/janneke/src/glibc-2.16.0/nscd/cache.c 2012-06-30 21:12:34.000000000 +0200 ++++ glibc-2.16.0/nscd/cache.c 2018-09-02 23:38:31.757616750 +0200 +@@ -74,7 +74,11 @@ struct datahead * + cache_search (request_type type, const void *key, size_t len, + struct database_dyn *table, uid_t owner) + { ++#if !BOOTSTRAP_GLIBC + unsigned long int hash = __nis_hash (key, len) % table->head->module; ++#else ++ unsigned long int hash = 0; ++#endif + + unsigned long int nsearched = 0; + struct datahead *result = NULL; +@@ -153,7 +153,11 @@ cache_add (int type, const void *key, si + first ? _(" (first)") : ""); + } + ++#if !BOOTSTRAP_GLIBC + unsigned long int hash = __nis_hash (key, len) % table->head->module; ++#else ++ unsigned long int hash = 0; ++#endif + struct hashentry *newp; + + newp = mempool_alloc (table, sizeof (struct hashentry), 0); +diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/nscd/Makefile glibc-2.16.0/nscd/Makefile +--- /home/janneke/src/glibc-2.16.0/nscd/Makefile 2012-06-30 21:12:34.000000000 +0200 ++++ glibc-2.16.0/nscd/Makefile 2018-09-02 23:49:29.948031787 +0200 +@@ -126,9 +126,7 @@ include $(patsubst %,$(..)cppflags-itera + $(objpfx)nscd: $(nscd-modules:%=$(objpfx)%.o) + + ifeq ($(build-shared),yes) +-$(objpfx)nscd: $(common-objpfx)rt/librt.so $(shared-thread-library) \ +- $(common-objpfx)nis/libnsl.so ++$(objpfx)nscd: $(common-objpfx)rt/librt.so $(shared-thread-library) + else +-$(objpfx)nscd: $(common-objpfx)rt/librt.a $(static-thread-library) \ +- $(common-objpfx)nis/libnsl.a ++$(objpfx)nscd: $(common-objpfx)rt/librt.a $(static-thread-library) + endif +diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/nscd/nscd_helper.c glibc-2.16.0/nscd/nscd_helper.c +--- /home/janneke/src/glibc-2.16.0/nscd/nscd_helper.c 2012-06-30 21:12:34.000000000 +0200 ++++ glibc-2.16.0/nscd/nscd_helper.c 2018-09-02 23:38:04.941189464 +0200 +@@ -474,7 +474,7 @@ struct datahead * + __nscd_cache_search (request_type type, const char *key, size_t keylen, + const struct mapped_database *mapped, size_t datalen) + { +- unsigned long int hash = __nis_hash (key, keylen) % mapped->head->module; ++ unsigned long int hash = 0; + size_t datasize = mapped->datasize; + + ref_t trail = mapped->head->array[hash]; +diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/nss/getent.c glibc-2.16.0/nss/getent.c +--- /home/janneke/src/glibc-2.16.0/nss/function.def 2012-06-30 21:12:34.000000000 +0200 ++++ glibc-2.16.0/nss/function.def 2018-09-18 13:54:49.582060539 +0200 +@@ -63,10 +63,12 @@ + DEFINE_GET (files, pwnam) + DEFINE_GET (files, pwuid) + ++#if !BOOTSTRAP_GLIBC + /* rpc */ + DEFINE_ENT (files, rpc) + DEFINE_GETBY (files, rpc, name) + DEFINE_GETBY (files, rpc, number) ++#endif + + /* services */ + DEFINE_ENT (files, serv) +diff -u ~/src/glibc-2.16.0/nss/getent.c glibc-2.16.0/nss/getent.c +--- /home/janneke/src/glibc-2.16.0/nss/getent.c 2012-06-30 21:12:34.000000000 +0200 ++++ glibc-2.16.0/nss/getent.c 2018-09-18 13:57:41.856849140 +0200 +@@ -700,6 +700,7 @@ + return result; + } + ++#if !BOOTSTRAP_GLIBC + /* Now is all for rpc */ + static inline void + print_rpc (struct rpcent *rpc) +@@ -745,6 +746,7 @@ + + return result; + } ++#endif //rpc + + /* for services */ + static void +@@ -880,7 +882,9 @@ + D(networks) + D(passwd) + D(protocols) ++#if !BOOTSTRAP_GLIBC + D(rpc) ++#endif + D(services) + D(shadow) + #undef D +diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/resolv/netdb.h glibc-2.16.0/resolv/netdb.h +--- /home/janneke/src/glibc-2.16.0/resolv/netdb.h 2012-06-30 21:12:34.000000000 +0200 ++++ glibc-2.16.0/resolv/netdb.h 2018-09-08 08:49:30.537811219 +0200 +@@ -26,11 +26,13 @@ + + #include <netinet/in.h> + #include <stdint.h> ++#if 0 //!BOOTSTRAP_GLIBC + #ifdef __USE_MISC + /* This is necessary to make this include file properly replace the + Sun version. */ + # include <rpc/netdb.h> + #endif ++#endif + + #ifdef __USE_GNU + # define __need_sigevent_t +diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/Rules glibc-2.16.0/Rules +--- /home/janneke/src/glibc-2.16.0/Rules 2012-06-30 21:12:34.000000000 +0200 ++++ glibc-2.16.0/Rules 2018-09-02 10:52:06.927362861 +0200 +@@ -24,6 +24,9 @@ ifneq (,) + This makefile requires GNU Make. + endif + ++export SHELL ++export BASH ++ + all: # Don't let the default goal come from Makeconfig. + + include $(firstword $(..) ../)Makeconfig +diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/scripts/gen-as-const.awk glibc-2.16.0/scripts/gen-as-const.awk +--- /home/janneke/src/glibc-2.16.0/scripts/gen-as-const.awk 2012-06-30 21:12:34.000000000 +0200 ++++ glibc-2.16.0/scripts/gen-as-const.awk 2018-09-01 18:08:37.266516330 +0200 +@@ -14,6 +14,12 @@ BEGIN { started = 0 } + + NF >= 1 && !started { + if (test) { ++ print "\n#include <stddef.h>"; ++ print "\n#include <stdint.h>"; ++# print "\ntypedef unsigned long size_t;"; ++ print "\n#ifndef offsetof"; ++ print "\n#define offsetof(type, field) ((size_t)&((type *)0)->field)"; ++ print "\n#endif"; + print "\n#include <inttypes.h>"; + print "\n#include <stdio.h>"; + print "\n#include <bits/wordsize.h>"; +@@ -33,8 +39,15 @@ NF >= 1 && !started { + " source, #name, U (asconst_##name), #expr, (c_t) (expr));" \ + " } else ++good;\n"; + } +- else ++ else { ++ print "\n#include <stddef.h>"; ++ print "\n#include <stdint.h>"; ++# print "\ntypedef unsigned long size_t;"; ++ print "\n#ifndef offsetof"; ++ print "\n#define offsetof(type, field) ((size_t)&((type *)0)->field)"; ++ print "\n#endif"; + print "void dummy(void) {"; ++ } + started = 1; + } + +diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/sunrpc/auth_none.c glibc-2.16.0/sunrpc/auth_none.c +--- /home/janneke/src/glibc-2.16.0/sunrpc/auth_none.c 2012-06-30 21:12:34.000000000 +0200 ++++ glibc-2.16.0/sunrpc/auth_none.c 2018-09-02 22:09:21.629007932 +0200 +@@ -95,7 +95,9 @@ authnone_create (void) + __libc_once (authnone_private_guard, authnone_create_once); + return &authnone_private.no_client; + } ++#if !BOOTSTRAP_GLIBC + libc_hidden_nolink_sunrpc (authnone_create, GLIBC_2_0) ++#endif + + static bool_t + authnone_marshal (AUTH *client, XDR *xdrs) +diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/sunrpc/authuxprot.c glibc-2.16.0/sunrpc/authuxprot.c +--- /home/janneke/src/glibc-2.16.0/sunrpc/authuxprot.c 2012-06-30 21:12:34.000000000 +0200 ++++ glibc-2.16.0/sunrpc/authuxprot.c 2018-09-02 22:15:51.927158451 +0200 +@@ -63,4 +63,6 @@ xdr_authunix_parms (XDR * xdrs, struct a + } + return FALSE; + } ++#if !BOOTSTRAP_GLIBC + libc_hidden_nolink_sunrpc (xdr_authunix_parms, GLIBC_2_0) ++#endif +diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/sunrpc/bindrsvprt.c glibc-2.16.0/sunrpc/bindrsvprt.c +--- /home/janneke/src/glibc-2.16.0/sunrpc/bindrsvprt.c 2012-06-30 21:12:34.000000000 +0200 ++++ glibc-2.16.0/sunrpc/bindrsvprt.c 2018-09-02 22:24:32.687187675 +0200 +@@ -96,4 +96,7 @@ bindresvport (int sd, struct sockaddr_in + + return res; + } ++#if !BOOTSTRAP_GLIBC + libc_hidden_def (bindresvport) ++#endif ++ +diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/sunrpc/clnt_raw.c glibc-2.16.0/sunrpc/clnt_raw.c +--- /home/janneke/src/glibc-2.16.0/sunrpc/clnt_raw.c 2012-06-30 21:12:34.000000000 +0200 ++++ glibc-2.16.0/sunrpc/clnt_raw.c 2018-09-02 22:33:21.151343826 +0200 +@@ -40,6 +40,7 @@ + #include <rpc/svc.h> + #include <rpc/xdr.h> + #include <libintl.h> ++#include <stddef.h> + + #define MCALL_MSG_SIZE 24 + +@@ -129,7 +130,9 @@ clntraw_create (u_long prog, u_long vers + client->cl_auth = authnone_create (); + return client; + } ++#if !BOOTSTRAP_GLIBC + libc_hidden_nolink_sunrpc (clntraw_create, GLIBC_2_0) ++#endif + + static enum clnt_stat + clntraw_call (h, proc, xargs, argsp, xresults, resultsp, timeout) +diff '--exclude=*.orig' -purN /home/janneke/src/glibc-2.16.0/sunrpc/clnt_simp.c glibc-2.16.0/sunrpc/clnt_simp.c +--- /home/janneke/src/glibc-2.16.0/sunrpc/clnt_simp.c 2012-06-30 21:12:34.000000000 +0200 ++++ glibc-2.16.0/sunrpc/clnt_simp.c 2018-09-02 22:34:14.884175251 +0200 +@@ -139,7 +139,9 @@ callrpc (const char *host, u_long prognu + crp->valid = 0; + return (int) clnt_stat; + } ++#if !BOOTSTRAP_GLIBC + libc_hidden_nolink_sunrpc (callrpc, GLIBC_2_0) ++#endif + + #ifdef _RPC_THREAD_SAFE_ + void diff --git a/gnu/packages/patches/glibc-boot-2.2.5.patch b/gnu/packages/patches/glibc-boot-2.2.5.patch new file mode 100644 index 0000000000..26bc92a6bb --- /dev/null +++ b/gnu/packages/patches/glibc-boot-2.2.5.patch @@ -0,0 +1,251 @@ +This patch enables building glibc-2.2.5 using TCC and GNU Make 4.x and Mes C Library. + + * Makefile: Do not assemble from stdin, use file indirection. + * Makefile: Add new target: install-lib-all. + * Makefile: Avoid building stub DOC. + * [_LIBC_REENTRANT]: Add missing guarding. + * [MES_BOOTSTRAP]: Disable some GCC extensions. + * [MES_BOOTSTRAP]: Add missing GCC div/mod defines. + +Upstream status: Not presented upstream. + +diff -purN -x .git -x fubar -x fubar.c -x Makefile -x config.status -x config.h -x BOOT -x BOOT-GCC -x texis -x '*.info*' ../glibc-2.2.5/config.h.in glibc-2.2.5/config.h.in +--- ../glibc-2.2.5/config.h.in 2001-11-16 02:02:56.000000000 +0100 ++++ glibc-2.2.5/config.h.in 2018-06-17 21:30:02.313029074 +0200 +@@ -1,3 +1,10 @@ ++#if MES_BOOTSTRAP && BOOTSTRAP_GLIBC ++#undef __umoddi3 ++#define __umoddi3(a,b) ((a)%(b)) ++#undef __udivdi3 ++#define __udivdi3(a,b) ((a)/(b)) ++#endif ++ + #if !defined ASSEMBLER && !defined _ISOMAC && !defined __OPTIMIZE__ + # error "glibc cannot be compiled without optimization" + #endif +diff -purN -x .git -x fubar -x fubar.c -x Makefile -x config.status -x config.h -x BOOT -x BOOT-GCC -x texis -x '*.info*' ../glibc-2.2.5/configure glibc-2.2.5/configure +--- ../glibc-2.2.5/configure 2002-01-08 23:16:44.000000000 +0100 ++++ glibc-2.2.5/configure 2018-06-07 20:47:26.608895319 +0200 +@@ -1530,7 +1530,7 @@ echo "configure:1530: checking version o + ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*\([0-9][0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; +- 3.79* | 3.[89]*) ++ 3.79* | 3.[89]* | 4.*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + +diff -purN -x .git -x fubar -x fubar.c -x Makefile -x config.status -x config.h -x BOOT -x BOOT-GCC -x texis -x '*.info*' ../glibc-2.2.5/Makeconfig glibc-2.2.5/Makeconfig +--- ../glibc-2.2.5/Makeconfig 2001-09-12 20:49:45.000000000 +0200 ++++ glibc-2.2.5/Makeconfig 2018-06-20 16:33:35.472167202 +0200 +@@ -400,7 +400,7 @@ ifndef +link + $(start-installed-name))\ + $(+preinit) $(link-extra-libs) \ + $(common-objpfx)libc% $(+postinit),$^) \ +- $(link-extra-libs) $(link-libc) $(+postctor) $(+postinit) ++ $(link-extra-libs) $(link-libc) $(+postctor) $(+postinit) -lc -lgcc2 + endif + # Command for statically linking programs with the C library. + ifndef +link-static +@@ -412,7 +412,7 @@ ifndef +link-static + $(start-installed-name))\ + $(+preinit) $(link-extra-libs-static) \ + $(common-objpfx)libc% $(+postinit),$^) \ +- $(link-extra-libs-static) $(link-libc-static) $(+postctor) $(+postinit) ++ $(link-extra-libs-static) $(link-libc-static) $(+postctor) $(+postinit) -lc -lgcc2 + endif + # Command for statically linking bounded-pointer programs with the C library. + ifndef +link-bounded +@@ -424,7 +424,7 @@ ifndef +link-bounded + $(start-installed-name))\ + $(+preinit) $(link-extra-libs-bounded) \ + $(common-objpfx)libc% $(+postinit),$^) \ +- $(link-extra-libs-bounded) $(link-libc-bounded) $(+postctor) $(+postinit) ++ $(link-extra-libs-bounded) $(link-libc-bounded) $(+postctor) $(+postinit) -lc -lgcc2 + endif + ifndef config-LDFLAGS + ifeq (yesyes,$(build-shared)$(elf)) +diff -purN -x .git -x fubar -x fubar.c -x Makefile -x config.status -x config.h -x BOOT -x BOOT-GCC -x texis -x '*.info*' ../glibc-2.2.5/Makerules glibc-2.2.5/Makerules +--- ../glibc-2.2.5/Makerules 2001-11-16 02:02:19.000000000 +0100 ++++ glibc-2.2.5/Makerules 2018-06-10 15:03:42.390329860 +0200 +@@ -748,6 +748,18 @@ endef + installed-libcs := $(foreach o,$(filter-out .os,$(object-suffixes-for-libc)),\ + $(inst_libdir)/$(patsubst %,$(libtype$o),\ + $(libprefix)$(libc-name))) ++ ++ifeq (yes,$(build-shared)) ++install-lib-all: $(inst_libdir)/libc.a \ ++ $(inst_slibdir)/libc.so$(libc.so-version) \ ++ $(inst_slibdir)/libc-$(version).so \ ++ $(inst_libdir)/libc.so \ ++ install-lib ++else ++install-lib-all: $(inst_libdir)/libc.a \ ++ install-lib ++endif ++ + install: $(installed-libcs) + $(installed-libcs): $(inst_libdir)/lib$(libprefix)%: lib $(+force) + $(make-target-directory) +diff -purN -x .git -x fubar -x fubar.c -x Makefile -x config.status -x config.h -x BOOT -x BOOT-GCC -x texis -x '*.info*' ../glibc-2.2.5/misc/syslog.c glibc-2.2.5/misc/syslog.c +--- ../glibc-2.2.5/misc/syslog.c 2001-08-31 01:13:49.000000000 +0200 ++++ glibc-2.2.5/misc/syslog.c 2018-06-09 09:01:20.008918690 +0200 +@@ -216,9 +216,11 @@ vsyslog(pri, fmt, ap) + + /* Prepare for multiple users. We have to take care: open and + write are cancellation points. */ ++#if _LIBC_REENTRANT + __libc_cleanup_region_start (1, (void (*) (void *)) cancel_handler, + &oldaction_ptr); + __libc_lock_lock (syslog_lock); ++#endif + + /* Prepare for a broken connection. */ + memset (&action, 0, sizeof (action)); +@@ -268,9 +270,11 @@ vsyslog(pri, fmt, ap) + if (sigpipe == 0) + __sigaction (SIGPIPE, &oldaction, (struct sigaction *) NULL); + ++#if _LIBC_REENTRANT + /* End of critical section. */ + __libc_cleanup_region_end (0); + __libc_lock_unlock (syslog_lock); ++#endif + + free (buf); + } +@@ -326,16 +330,20 @@ openlog_internal(const char *ident, int + void + openlog (const char *ident, int logstat, int logfac) + { ++#if _LIBC_REENTRANT + /* Protect against multiple users. */ + __libc_cleanup_region_start (1, + (void (*) __P ((void *))) __libc_mutex_unlock, + &syslog_lock); + __libc_lock_lock (syslog_lock); ++#endif + + openlog_internal (ident, logstat, logfac); + ++#if _LIBC_REENTRANT + /* Free the lock. */ + __libc_cleanup_region_end (1); ++#endif + } + + static void +@@ -358,18 +366,22 @@ closelog_internal() + void + closelog () + { ++#if _LIBC_REENTRANT + /* Protect against multiple users. */ + __libc_cleanup_region_start (1, + (void (*) __P ((void *))) __libc_mutex_unlock, + &syslog_lock); + __libc_lock_lock (syslog_lock); ++#endif + + closelog_internal (); + LogTag = NULL; + LogType = SOCK_DGRAM; /* this is the default */ + ++#if _LIBC_REENTRANT + /* Free the lock. */ + __libc_cleanup_region_end (1); ++#endif + } + + #ifdef _LIBC_REENTRANT +diff -purN -x .git -x fubar -x fubar.c -x Makefile -x config.status -x config.h -x BOOT -x BOOT-GCC -x texis -x '*.info*' ../glibc-2.2.5/Rules glibc-2.2.5/Rules +--- ../glibc-2.2.5/Rules 2001-08-30 00:44:35.000000000 +0200 ++++ glibc-2.2.5/Rules 2018-06-09 08:15:54.880683675 +0200 +@@ -218,7 +218,7 @@ endif + fopen_max=`sed -n 's/^#define OPEN_MAX //1p' $(@:st=hT)`; \ + filename_max=`sed -n 's/^#define PATH_MAX //1p' $(@:st=hT)`; \ + iov_max=`sed -n 's/^#define UIO_MAXIOV //p' $(@:st=hT)`; \ +- fopen_max=$${fopen_max:-16}; \ ++ fopen_max=$${fu_fopen_max:-16}; \ + filename_max=$${filename_max:-1024}; \ + if [ -z $$iov_max ]; then \ + define_iov_max="# undef IOV_MAX"; \ +diff -purN -x .git -x fubar -x fubar.c -x Makefile -x config.status -x config.h -x BOOT -x BOOT-GCC -x texis -x '*.info*' ../glibc-2.2.5/stdio-common/perror.c glibc-2.2.5/stdio-common/perror.c +--- ../glibc-2.2.5/stdio-common/perror.c 2001-09-01 07:33:01.000000000 +0200 ++++ glibc-2.2.5/stdio-common/perror.c 2018-06-09 10:42:25.909899529 +0200 +@@ -48,6 +48,9 @@ perror_internal (FILE *fp, const char *s + } + + ++#if MES_BOOTSTRAP ++#define fileno_unlocked(x) 1 ++#endif + /* Print a line on stderr consisting of the text in S, a colon, a space, + a message describing the meaning of the contents of `errno' and a newline. + If S is NULL or "", the colon and space are omitted. */ +diff -purN -x .git -x fubar -x fubar.c -x Makefile -x config.status -x config.h -x BOOT -x BOOT-GCC -x texis -x '*.info*' ../glibc-2.2.5/sysdeps/i386/fpu/ftestexcept.c glibc-2.2.5/sysdeps/i386/fpu/ftestexcept.c +--- ../glibc-2.2.5/sysdeps/i386/fpu/ftestexcept.c 2001-07-06 06:55:53.000000000 +0200 ++++ glibc-2.2.5/sysdeps/i386/fpu/ftestexcept.c 2018-06-09 09:45:13.363031424 +0200 +@@ -25,8 +25,10 @@ fetestexcept (int excepts) + { + int temp; + ++#if !MES_BOOTSTRAP + /* Get current exceptions. */ + __asm__ ("fnstsw %0" : "=a" (temp)); ++#endif + + return temp & excepts & FE_ALL_EXCEPT; + } +diff -purN -x .git -x fubar -x fubar.c -x Makefile -x config.status -x config.h -x BOOT -x BOOT-GCC -x texis -x '*.info*' ../glibc-2.2.5/sysdeps/unix/make-syscalls.sh glibc-2.2.5/sysdeps/unix/make-syscalls.sh +--- ../glibc-2.2.5/sysdeps/unix/make-syscalls.sh 2001-09-13 00:19:30.000000000 +0200 ++++ glibc-2.2.5/sysdeps/unix/make-syscalls.sh 2018-06-20 15:16:01.813004453 +0200 +@@ -173,7 +173,7 @@ shared-only-routines += $file + done + + # And finally, pipe this all into the compiler. +- echo ' ) | $(COMPILE.S) -x assembler-with-cpp -o $@ -' ++ echo ' ) > stdin.c; $(COMPILE.S) -x assembler-with-cpp -o $@ stdin.c' + + case $weak in + *@*) +@@ -284,7 +284,7 @@ shared-only-routines += $file + echo "\ + echo ''; \\ + echo '#include <bp-thunks.h>'; \\ +- ) | \$(COMPILE.c) -x c -o \$@ -" ++ ) > stdin.c; \$(COMPILE.c) -x c -o \$@ stdin.c" + ### Use this for debugging intermediate output: + ### ) >\$(@:.ob=.c) + ### \$(subst -c,-E,\$(COMPILE.c)) -o \$(@:.ob=.ib) \$(@:.ob=.c) +diff -purN -x .git -x fubar -x fubar.c -x Makefile -x config.status -x config.h -x BOOT -x BOOT-GCC -x texis -x '*.info*' ../glibc-2.2.5/sysdeps/unix/sysv/linux/sys/timex.h glibc-2.2.5/sysdeps/unix/sysv/linux/sys/timex.h +--- ../glibc-2.2.5/sysdeps/unix/sysv/linux/sys/timex.h 2001-07-06 06:56:21.000000000 +0200 ++++ glibc-2.2.5/sysdeps/unix/sysv/linux/sys/timex.h 2018-06-09 20:09:07.713806647 +0200 +@@ -54,10 +54,12 @@ struct timex + long int errcnt; /* calibration errors (ro) */ + long int stbcnt; /* stability limit exceeded (ro) */ + ++#if !MES_BOOTSTRAP + /* ??? */ + int :32; int :32; int :32; int :32; + int :32; int :32; int :32; int :32; + int :32; int :32; int :32; int :32; ++#endif + }; + + /* Mode codes (timex.mode) */ +--- ../glibc-2.2.5/manual/Makefile 2001-08-28 10:05:40.000000000 +0200 ++++ glibc-2.2.5/manual/Makefile 2018-06-09 10:13:03.093633660 +0200 +@@ -247,7 +247,11 @@ + .PHONY: stubs + stubs: $(objpfx)stubs + endif +-$(objpfx)stubs ../po/manual.pot $(objpfx)stamp%: ++po/manual.pot $(objpfx)stubs: ++ $(make-target-directory) ++ touch $@ ++ ++$(objpfx)stamp%: + $(make-target-directory) + touch $@ + diff --git a/gnu/packages/patches/glibc-bootstrap-system-2.16.0.patch b/gnu/packages/patches/glibc-bootstrap-system-2.16.0.patch new file mode 100644 index 0000000000..936d592f1a --- /dev/null +++ b/gnu/packages/patches/glibc-bootstrap-system-2.16.0.patch @@ -0,0 +1,30 @@ +We want to allow builds in chroots that lack /bin/sh. Thus, system(3) +and popen(3) need to be tweaked to use the right shell. For the bootstrap +glibc, we just use whatever `sh' can be found in $PATH. The final glibc +instead uses the hard-coded absolute file name of `bash'. + +--- a/sysdeps/posix/system.c ++++ b/sysdeps/posix/system.c +@@ -134,7 +134,7 @@ do_system (const char *line) + INIT_LOCK (); + + /* Exec the shell. */ +- (void) __execve (SHELL_PATH, (char *const *) new_argv, __environ); ++ (void) __execvpe (SHELL_NAME, (char *const *) new_argv, __environ); + _exit (127); + } + else if (pid < (pid_t) 0) + +--- a/libio/iopopen.c ++++ b/libio/iopopen.c +@@ -145,7 +145,7 @@ _IO_new_proc_open (fp, command, mode) + _IO_close (fd); + } + +- _IO_execl ("/bin/sh", "sh", "-c", command, (char *) 0); ++ execlp ("sh", "sh", "-c", command, (char *) 0); + _IO__exit (127); + } + _IO_close (child_end); + + diff --git a/gnu/packages/patches/glibc-supported-locales.patch b/gnu/packages/patches/glibc-supported-locales.patch new file mode 100644 index 0000000000..2888052bb8 --- /dev/null +++ b/gnu/packages/patches/glibc-supported-locales.patch @@ -0,0 +1,33 @@ +This patch is taken from debian's glibc package (generate-supported.mk). +It install the localedata/SUPPORTED file of the glibc. This file lists +all the supported locales of the glibc. + +diff --git a/localedata/Makefile.old b/localedata/Makefile +index 34877c0..a61d9b9 100644 +--- a/localedata/Makefile.old ++++ b/localedata/Makefile +@@ -91,7 +91,8 @@ endif + # Files to install. + install-others := $(addprefix $(inst_i18ndir)/, \ + $(addsuffix .gz, $(charmaps)) \ +- $(locales)) ++ $(locales)) \ ++ $(inst_i18ndir)/SUPPORTED + + tests: $(objdir)/iconvdata/gconv-modules + +@@ -195,6 +196,14 @@ endif + + include SUPPORTED + ++$(inst_i18ndir)/SUPPORTED: SUPPORTED $(+force) ++ for locale in $(SUPPORTED-LOCALES); do \ ++ [ $$locale = true ] && continue; \ ++ echo $$locale | sed 's,/, ,' >> LOCALES; \ ++ done ++ $(make-target-directory) ++ $(INSTALL_DATA) LOCALES $@ ++ + INSTALL-SUPPORTED-LOCALES=$(addprefix install-, $(SUPPORTED-LOCALES)) + + # Sometimes the whole collection of locale files should be installed. diff --git a/gnu/packages/patches/groff-source-date-epoch.patch b/gnu/packages/patches/groff-source-date-epoch.patch deleted file mode 100644 index 53c590b049..0000000000 --- a/gnu/packages/patches/groff-source-date-epoch.patch +++ /dev/null @@ -1,299 +0,0 @@ -Adds support for the environment variable SOURCE_DATE_EPOCH. - -See: https://sources.debian.net/patches/groff/1.22.3-9/source-date-epoch.patch/ - -From abc23bc9245e18468817f2838361c3a08f7521e2 Mon Sep 17 00:00:00 2001 -From: Colin Watson <cjwatson@debian.org> -Date: Thu, 5 Nov 2015 11:47:34 +0000 -Subject: Implement `SOURCE_DATE_EPOCH' for reproducible builds. - -Author: Colin Watson <cjwatson@debian.org> -Forwarded: yes -Last-Update: 2015-11-05 - -Patch-Name: source-date-epoch.patch ---- - doc/groff.texinfo | 6 +++++ - src/devices/grohtml/grohtml.man | 7 ++++++ - src/devices/grohtml/post-html.cpp | 5 ++-- - src/devices/gropdf/gropdf.man | 7 ++++++ - src/devices/gropdf/gropdf.pl | 3 ++- - src/devices/grops/grops.man | 7 ++++++ - src/devices/grops/ps.cpp | 3 ++- - src/include/curtime.h | 23 ++++++++++++++++++ - src/libs/libgroff/Makefile.sub | 2 ++ - src/libs/libgroff/curtime.cpp | 51 +++++++++++++++++++++++++++++++++++++++ - src/roff/troff/input.cpp | 3 ++- - 11 files changed, 112 insertions(+), 5 deletions(-) - create mode 100644 src/include/curtime.h - create mode 100644 src/libs/libgroff/curtime.cpp - -diff --git a/doc/groff.texinfo b/doc/groff.texinfo -index 066b5274..1d3c7a9f 100644 ---- a/doc/groff.texinfo -+++ b/doc/groff.texinfo -@@ -1453,6 +1453,12 @@ default directory (on Unix and GNU/Linux systems, this is usually - @item GROFF_TYPESETTER - @tindex GROFF_TYPESETTER@r{, environment variable} - The default output device. -+ -+@item SOURCE_DATE_EPOCH -+@tindex SOURCE_DATE_EPOCH@r{, environment variable} -+A timestamp (expressed as seconds since the Unix epoch) to use in place of -+the current time when initializing time-based built-in registers such as -+@code{\n[seconds]}. - @end table - - Note that MS-DOS and MS-Windows ports of @code{groff} use semi-colons, -diff --git a/src/devices/grohtml/grohtml.man b/src/devices/grohtml/grohtml.man -index 51eae224..4be4abbc 100644 ---- a/src/devices/grohtml/grohtml.man -+++ b/src/devices/grohtml/grohtml.man -@@ -419,6 +419,13 @@ and - for more details. - . - . -+.TP -+.SM -+.B SOURCE_DATE_EPOCH -+A timestamp (expressed as seconds since the Unix epoch) to use as the -+creation timestamp in place of the current time. -+. -+. - .\" -------------------------------------------------------------------- - .SH BUGS - .\" -------------------------------------------------------------------- -diff --git a/src/devices/grohtml/post-html.cpp b/src/devices/grohtml/post-html.cpp -index fefbf014..b5fc5167 100644 ---- a/src/devices/grohtml/post-html.cpp -+++ b/src/devices/grohtml/post-html.cpp -@@ -28,6 +28,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ - #include "html.h" - #include "html-text.h" - #include "html-table.h" -+#include "curtime.h" - - #include <time.h> - -@@ -5013,7 +5014,7 @@ void html_printer::do_file_components (void) - .put_string(Version_string) - .end_comment(); - -- t = time(0); -+ t = current_time(); - html.begin_comment("CreationDate: ") - .put_string(ctime(&t), strlen(ctime(&t))-1) - .end_comment(); -@@ -5126,7 +5127,7 @@ html_printer::~html_printer() - .put_string(Version_string) - .end_comment(); - -- t = time(0); -+ t = current_time(); - html.begin_comment("CreationDate: ") - .put_string(ctime(&t), strlen(ctime(&t))-1) - .end_comment(); -diff --git a/src/devices/gropdf/gropdf.man b/src/devices/gropdf/gropdf.man -index 3bbace6a..cc0c82f1 100644 ---- a/src/devices/gropdf/gropdf.man -+++ b/src/devices/gropdf/gropdf.man -@@ -1029,6 +1029,13 @@ and - for more details. - . - . -+.TP -+.SM -+.B SOURCE_DATE_EPOCH -+A timestamp (expressed as seconds since the Unix epoch) to use as the -+creation timestamp in place of the current time. -+. -+. - .\" -------------------------------------------------------------------- - .SH FILES - .\" -------------------------------------------------------------------- -diff --git a/src/devices/gropdf/gropdf.pl b/src/devices/gropdf/gropdf.pl -index 035d1238..c25c4c67 100644 ---- a/src/devices/gropdf/gropdf.pl -+++ b/src/devices/gropdf/gropdf.pl -@@ -239,13 +239,14 @@ elsif (exists($ppsz{$papersz})) - @defaultmb=@mediabox=(0,0,$ppsz{$papersz}->[0],$ppsz{$papersz}->[1]); - } - --my (@dt)=localtime(time); -+my (@dt)=localtime($ENV{SOURCE_DATE_EPOCH} || time); - my $dt=PDFDate(\@dt); - - my %info=('Creator' => "(groff version $cfg{GROFF_VERSION})", - 'Producer' => "(gropdf version $cfg{GROFF_VERSION})", - 'ModDate' => "($dt)", - 'CreationDate' => "($dt)"); -+ - while (<>) - { - chomp; -diff --git a/src/devices/grops/grops.man b/src/devices/grops/grops.man -index 99fb7486..272c2d18 100644 ---- a/src/devices/grops/grops.man -+++ b/src/devices/grops/grops.man -@@ -1419,6 +1419,13 @@ and - for more details. - . - . -+.TP -+.SM -+.B SOURCE_DATE_EPOCH -+A timestamp (expressed as seconds since the Unix epoch) to use as the -+creation timestamp in place of the current time. -+. -+. - .\" -------------------------------------------------------------------- - .SH FILES - .\" -------------------------------------------------------------------- -diff --git a/src/devices/grops/ps.cpp b/src/devices/grops/ps.cpp -index 745a503b..03e65372 100644 ---- a/src/devices/grops/ps.cpp -+++ b/src/devices/grops/ps.cpp -@@ -28,6 +28,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ - #include "cset.h" - #include "nonposix.h" - #include "paper.h" -+#include "curtime.h" - - #include "ps.h" - #include <time.h> -@@ -1390,7 +1391,7 @@ ps_printer::~ps_printer() - #else - time_t - #endif -- t = time(0); -+ t = current_time(); - fputs(ctime(&t), out.get_file()); - } - for (font_pointer_list *f = font_list; f; f = f->next) { -diff --git a/src/include/curtime.h b/src/include/curtime.h -new file mode 100644 -index 00000000..a4105196 ---- /dev/null -+++ b/src/include/curtime.h -@@ -0,0 +1,23 @@ -+/* Copyright (C) 2015 Free Software Foundation, Inc. -+ -+This file is part of groff. -+ -+groff 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 2 of the License, or -+(at your option) any later version. -+ -+groff 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. -+ -+The GNU General Public License version 2 (GPL2) is available in the -+internet at <http://www.gnu.org/licenses/gpl-2.0.txt>. */ -+ -+#ifdef LONG_FOR_TIME_T -+long -+#else -+time_t -+#endif -+current_time(); -diff --git a/src/libs/libgroff/Makefile.sub b/src/libs/libgroff/Makefile.sub -index 840d9934..4cb4937a 100644 ---- a/src/libs/libgroff/Makefile.sub -+++ b/src/libs/libgroff/Makefile.sub -@@ -32,6 +32,7 @@ OBJS=\ - cmap.$(OBJEXT) \ - color.$(OBJEXT) \ - cset.$(OBJEXT) \ -+ curtime.$(OBJEXT) \ - device.$(OBJEXT) \ - errarg.$(OBJEXT) \ - error.$(OBJEXT) \ -@@ -82,6 +83,7 @@ CCSRCS=\ - $(srcdir)/cmap.cpp \ - $(srcdir)/color.cpp \ - $(srcdir)/cset.cpp \ -+ $(srcdir)/curtime.cpp \ - $(srcdir)/device.cpp \ - $(srcdir)/errarg.cpp \ - $(srcdir)/error.cpp \ -diff --git a/src/libs/libgroff/curtime.cpp b/src/libs/libgroff/curtime.cpp -new file mode 100644 -index 00000000..00821b7f ---- /dev/null -+++ b/src/libs/libgroff/curtime.cpp -@@ -0,0 +1,51 @@ -+/* Copyright (C) 2015 Free Software Foundation, Inc. -+ -+This file is part of groff. -+ -+groff 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 2 of the License, or -+(at your option) any later version. -+ -+groff 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. -+ -+The GNU General Public License version 2 (GPL2) is available in the -+internet at <http://www.gnu.org/licenses/gpl-2.0.txt>. */ -+ -+#include <errno.h> -+#include <limits.h> -+#include <stdlib.h> -+#include <string.h> -+#include <time.h> -+ -+#include "errarg.h" -+#include "error.h" -+ -+#ifdef LONG_FOR_TIME_T -+long -+#else -+time_t -+#endif -+current_time() -+{ -+ char *source_date_epoch = getenv("SOURCE_DATE_EPOCH"); -+ -+ if (source_date_epoch) { -+ errno = 0; -+ char *endptr; -+ long epoch = strtol(source_date_epoch, &endptr, 10); -+ -+ if ((errno == ERANGE && (epoch == LONG_MAX || epoch == LONG_MIN)) || -+ (errno != 0 && epoch == 0)) -+ fatal("$SOURCE_DATE_EPOCH: strtol: %1", strerror(errno)); -+ if (endptr == source_date_epoch) -+ fatal("$SOURCE_DATE_EPOCH: no digits found: %1", endptr); -+ if (*endptr != '\0') -+ fatal("$SOURCE_DATE_EPOCH: trailing garbage: %1", endptr); -+ return epoch; -+ } else -+ return time(0); -+} -diff --git a/src/roff/troff/input.cpp b/src/roff/troff/input.cpp -index 9594f074..f7d2c18a 100644 ---- a/src/roff/troff/input.cpp -+++ b/src/roff/troff/input.cpp -@@ -36,6 +36,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ - #include "input.h" - #include "defs.h" - #include "unicode.h" -+#include "curtime.h" - - // Needed for getpid() and isatty() - #include "posix.h" -@@ -8138,7 +8139,7 @@ static void init_registers() - #else /* not LONG_FOR_TIME_T */ - time_t - #endif /* not LONG_FOR_TIME_T */ -- t = time(0); -+ t = current_time(); - // Use struct here to work around misfeature in old versions of g++. - struct tm *tt = localtime(&t); - set_number_reg("seconds", int(tt->tm_sec)); diff --git a/gnu/packages/patches/handbrake-opt-in-nvenc.patch b/gnu/packages/patches/handbrake-opt-in-nvenc.patch new file mode 100644 index 0000000000..2b34aaa427 --- /dev/null +++ b/gnu/packages/patches/handbrake-opt-in-nvenc.patch @@ -0,0 +1,14 @@ +Require opt-in for NVEnc support. Otherwise the default is true with no way +to disable it. + +--- HandBrake-1.2.0/make/configure.py.orig 1969-12-31 18:00:00.000000000 -0600 ++++ HandBrake-1.2.0/make/configure.py 2019-01-22 23:22:46.186959060 -0600 +@@ -1320,7 +1320,7 @@ + grp.add_option( '--disable-ffmpeg-aac', dest="enable_ffmpeg_aac", action='store_false' ) + + h = IfHost( 'enable Nvidia NVEnc video encoder', '*-*-*', none=optparse.SUPPRESS_HELP ).value +- grp.add_option( '--enable-nvenc', dest="enable_nvenc", default=not (host.match( '*-*-darwin*' ) or host.match( '*-*-freebsd*' )), action='store_true', help=h ) ++ grp.add_option( '--enable-nvenc', dest="enable_nvenc", default=False, action='store_true', help=h ) + + + cli.add_option_group( grp ) diff --git a/gnu/packages/patches/libarchive-CVE-2017-14166.patch b/gnu/packages/patches/libarchive-CVE-2017-14166.patch deleted file mode 100644 index a122848440..0000000000 --- a/gnu/packages/patches/libarchive-CVE-2017-14166.patch +++ /dev/null @@ -1,45 +0,0 @@ -Fix CVE-2017-14166: - -https://github.com/libarchive/libarchive/issues/935 -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14166 - -Patch copied from upstream source repository: - -https://github.com/libarchive/libarchive/commit/fa7438a0ff4033e4741c807394a9af6207940d71 - -From fa7438a0ff4033e4741c807394a9af6207940d71 Mon Sep 17 00:00:00 2001 -From: Joerg Sonnenberger <joerg@bec.de> -Date: Tue, 5 Sep 2017 18:12:19 +0200 -Subject: [PATCH] Do something sensible for empty strings to make fuzzers - happy. - ---- - libarchive/archive_read_support_format_xar.c | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - -diff --git a/libarchive/archive_read_support_format_xar.c b/libarchive/archive_read_support_format_xar.c -index 7a22beb9d..93eeacc5e 100644 ---- a/libarchive/archive_read_support_format_xar.c -+++ b/libarchive/archive_read_support_format_xar.c -@@ -1040,6 +1040,9 @@ atol10(const char *p, size_t char_cnt) - uint64_t l; - int digit; - -+ if (char_cnt == 0) -+ return (0); -+ - l = 0; - digit = *p - '0'; - while (digit >= 0 && digit < 10 && char_cnt-- > 0) { -@@ -1054,7 +1057,10 @@ atol8(const char *p, size_t char_cnt) - { - int64_t l; - int digit; -- -+ -+ if (char_cnt == 0) -+ return (0); -+ - l = 0; - while (char_cnt-- > 0) { - if (*p >= '0' && *p <= '7') diff --git a/gnu/packages/patches/libarchive-CVE-2017-14502.patch b/gnu/packages/patches/libarchive-CVE-2017-14502.patch deleted file mode 100644 index 8e0508afb5..0000000000 --- a/gnu/packages/patches/libarchive-CVE-2017-14502.patch +++ /dev/null @@ -1,40 +0,0 @@ -Fix CVE-2017-14502: - -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14502 -https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=573 - -Patch copied from upstream source repository: - -https://github.com/libarchive/libarchive/commit/5562545b5562f6d12a4ef991fae158bf4ccf92b6 - -From 5562545b5562f6d12a4ef991fae158bf4ccf92b6 Mon Sep 17 00:00:00 2001 -From: Joerg Sonnenberger <joerg@bec.de> -Date: Sat, 9 Sep 2017 17:47:32 +0200 -Subject: [PATCH] Avoid a read off-by-one error for UTF16 names in RAR - archives. - -Reported-By: OSS-Fuzz issue 573 ---- - libarchive/archive_read_support_format_rar.c | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/libarchive/archive_read_support_format_rar.c b/libarchive/archive_read_support_format_rar.c -index cbb14c32..751de697 100644 ---- a/libarchive/archive_read_support_format_rar.c -+++ b/libarchive/archive_read_support_format_rar.c -@@ -1496,7 +1496,11 @@ read_header(struct archive_read *a, struct archive_entry *entry, - return (ARCHIVE_FATAL); - } - filename[filename_size++] = '\0'; -- filename[filename_size++] = '\0'; -+ /* -+ * Do not increment filename_size here as the computations below -+ * add the space for the terminating NUL explicitly. -+ */ -+ filename[filename_size] = '\0'; - - /* Decoded unicode form is UTF-16BE, so we have to update a string - * conversion object for it. */ --- -2.15.1 - diff --git a/gnu/packages/patches/libgcrypt-make-yat2m-reproducible.patch b/gnu/packages/patches/libgcrypt-make-yat2m-reproducible.patch deleted file mode 100644 index 3056f0baad..0000000000 --- a/gnu/packages/patches/libgcrypt-make-yat2m-reproducible.patch +++ /dev/null @@ -1,32 +0,0 @@ -Make yat2m in libgcrypt respect SOURCE_DATE_EPOCH, making -the build reproducible. - -This was already fixed upstream in GnuPG: -https://dev.gnupg.org/rG139de02b93773615bdd95e04a7f0c1ad73b4f6fb - -and in libgpg-error: -https://dev.gnupg.org/rE5494a5728418938d2e42158bb646b07124184e64 - - ---- a/doc/yat2m.c 2017-11-23 19:16:58.000000000 +0100 -+++ b/doc/yat2m.c 2017-08-28 12:22:54.000000000 +0200 -@@ -1475,6 +1484,7 @@ - main (int argc, char **argv) - { - int last_argc = -1; -+ const char *s; - - opt_source = "GNU"; - opt_release = ""; -@@ -1608,6 +1618,11 @@ - if (argc > 1) - die ("usage: " PGM " [OPTION] [FILE] (try --help for more information)\n"); - -+ /* Take care of supplied timestamp for reproducible builds. See -+ * https://reproducible-builds.org/specs/source-date-epoch/ */ -+ if (!opt_date && (s = getenv ("SOURCE_DATE_EPOCH")) && *s) -+ opt_date = s; -+ - /* Start processing. */ - if (argc && strcmp (*argv, "-")) - { diff --git a/gnu/packages/patches/mescc-tools-boot.patch b/gnu/packages/patches/mescc-tools-boot.patch new file mode 100644 index 0000000000..2bce8a49c2 --- /dev/null +++ b/gnu/packages/patches/mescc-tools-boot.patch @@ -0,0 +1,222 @@ +From c184e95096881a13f29ebd7fc507fe305d3d8de5 Mon Sep 17 00:00:00 2001 +From: Jan Nieuwenhuizen <janneke@gnu.org> +Date: Thu, 4 Oct 2018 22:03:31 +0200 +Subject: [PATCH] build.sh: Update for mes 0.18. + +--- + build.sh | 92 +++++++++++++++++++++++++++++++++++++----------------- + install.sh | 6 ++-- + 2 files changed, 66 insertions(+), 32 deletions(-) + +diff --git a/build.sh b/build.sh +index 335a7bb..19a0029 100755 +--- a/build.sh ++++ b/build.sh +@@ -18,7 +18,8 @@ + # along with mescc-tools. If not, see <http://www.gnu.org/licenses/>. + + set -eux +-MES_SEED=${MES_SEED-../mescc-tools-seed/libs} ++MES_PREFIX=${MES_PREFIX-../mes} ++MES_SEED=${MES_SEED-../mes-seed} + MESCC_TOOLS_SEED=${MESCC_TOOLS_SEED-../mescc-tools-seed} + + ######################################### +@@ -32,15 +33,23 @@ MESCC_TOOLS_SEED=${MESCC_TOOLS_SEED-../mescc-tools-seed} + # blood-elf + # Create proper debug segment + $MESCC_TOOLS_SEED/blood-elf\ ++ -f $MESCC_TOOLS_SEED/file_print.M1\ ++ -f $MESCC_TOOLS_SEED/match.M1\ ++ -f $MESCC_TOOLS_SEED/numerate_number.M1\ ++ -f $MESCC_TOOLS_SEED/string.M1\ + -f $MESCC_TOOLS_SEED/blood-elf.M1\ + -o blood-elf-blood-elf-footer.M1 + + # Build + # M1-macro phase + $MESCC_TOOLS_SEED/M1 --LittleEndian --Architecture 1\ +- -f $MES_SEED/x86.M1\ +- -f $MES_SEED/crt1.M1\ +- -f $MES_SEED/libc+tcc-mes.M1\ ++ -f $MES_PREFIX/lib/x86-mes/x86.M1\ ++ -f $MES_SEED/x86-mes/crt1.S\ ++ -f $MES_SEED/x86-mes/libc+tcc.S\ ++ -f $MESCC_TOOLS_SEED/file_print.M1\ ++ -f $MESCC_TOOLS_SEED/match.M1\ ++ -f $MESCC_TOOLS_SEED/numerate_number.M1\ ++ -f $MESCC_TOOLS_SEED/string.M1\ + -f $MESCC_TOOLS_SEED/blood-elf.M1\ + -f blood-elf-blood-elf-footer.M1\ + -o blood-elf.hex2 +@@ -49,7 +58,7 @@ $MESCC_TOOLS_SEED/hex2\ + --LittleEndian\ + --Architecture 1\ + --BaseAddress 0x1000000\ +- -f $MES_SEED/elf32-header.hex2\ ++ -f $MES_PREFIX/lib/x86-mes/elf32-header.hex2\ + -f blood-elf.hex2\ + --exec_enable\ + -o bin/blood-elf +@@ -65,9 +74,13 @@ $MESCC_TOOLS_SEED/hex2\ + $MESCC_TOOLS_SEED/M1 \ + --LittleEndian\ + --Architecture 1\ +- -f $MES_SEED/x86.M1\ +- -f $MES_SEED/crt1.M1\ +- -f $MES_SEED/libc+tcc-mes.M1\ ++ -f $MES_PREFIX/lib/x86-mes/x86.M1\ ++ -f $MES_SEED/x86-mes/crt1.S\ ++ -f $MES_SEED/x86-mes/libc+tcc.S\ ++ -f $MESCC_TOOLS_SEED/file_print.M1\ ++ -f $MESCC_TOOLS_SEED/match.M1\ ++ -f $MESCC_TOOLS_SEED/numerate_number.M1\ ++ -f $MESCC_TOOLS_SEED/string.M1\ + -f $MESCC_TOOLS_SEED/M1.M1\ + -f M1-footer.M1\ + -o M1.hex2 +@@ -76,7 +89,7 @@ $MESCC_TOOLS_SEED/hex2 \ + --LittleEndian\ + --Architecture 1\ + --BaseAddress 0x1000000\ +- -f $MES_SEED/elf32-header.hex2\ ++ -f $MES_PREFIX/lib/x86-mes/elf32-header.hex2\ + -f M1.hex2\ + --exec_enable\ + -o bin/M1 +@@ -92,9 +105,13 @@ $MESCC_TOOLS_SEED/hex2 \ + ./bin/M1 \ + --LittleEndian\ + --Architecture 1\ +- -f $MES_SEED/x86.M1\ +- -f $MES_SEED/crt1.M1\ +- -f $MES_SEED/libc+tcc-mes.M1\ ++ -f $MES_PREFIX/lib/x86-mes/x86.M1\ ++ -f $MES_SEED/x86-mes/crt1.S\ ++ -f $MES_SEED/x86-mes/libc+tcc.S\ ++ -f $MESCC_TOOLS_SEED/file_print.M1\ ++ -f $MESCC_TOOLS_SEED/match.M1\ ++ -f $MESCC_TOOLS_SEED/numerate_number.M1\ ++ -f $MESCC_TOOLS_SEED/string.M1\ + -f $MESCC_TOOLS_SEED/hex2.M1\ + -f hex2-footer.M1\ + -o hex2.hex2 +@@ -103,10 +120,10 @@ $MESCC_TOOLS_SEED/hex2 \ + --LittleEndian\ + --Architecture 1\ + --BaseAddress 0x1000000\ +- -f $MES_SEED/elf32-header.hex2\ ++ -f $MES_PREFIX/lib/x86-mes/elf32-header.hex2\ + -f hex2.hex2\ + --exec_enable\ +- -o bin/hex2 ++ -o bin/hex2-0 + + ######################### + # Phase-1 Self-host # +@@ -123,18 +140,22 @@ $MESCC_TOOLS_SEED/hex2 \ + ./bin/M1 \ + --LittleEndian\ + --Architecture 1\ +- -f $MES_SEED/x86.M1\ +- -f $MES_SEED/crt1.M1\ +- -f $MES_SEED/libc+tcc-mes.M1\ ++ -f $MES_PREFIX/lib/x86-mes/x86.M1\ ++ -f $MES_SEED/x86-mes/crt1.S\ ++ -f $MES_SEED/x86-mes/libc+tcc.S\ ++ -f $MESCC_TOOLS_SEED/file_print.M1\ ++ -f $MESCC_TOOLS_SEED/match.M1\ ++ -f $MESCC_TOOLS_SEED/numerate_number.M1\ ++ -f $MESCC_TOOLS_SEED/string.M1\ + -f $MESCC_TOOLS_SEED/blood-elf.M1\ + -f blood-elf-blood-elf-footer.M1\ + -o blood-elf.hex2 + # Hex2-linker phase +-./bin/hex2 \ ++./bin/hex2-0 \ + --LittleEndian\ + --Architecture 1\ + --BaseAddress 0x1000000\ +- -f $MES_SEED/elf32-header.hex2\ ++ -f $MES_PREFIX/lib/x86-mes/elf32-header.hex2\ + -f blood-elf.hex2\ + --exec_enable\ + -o blood-elf +@@ -150,18 +171,22 @@ $MESCC_TOOLS_SEED/hex2 \ + ./bin/M1 \ + --LittleEndian\ + --Architecture 1\ +- -f $MES_SEED/x86.M1\ +- -f $MES_SEED/crt1.M1\ +- -f $MES_SEED/libc+tcc-mes.M1\ ++ -f $MES_PREFIX/lib/x86-mes/x86.M1\ ++ -f $MES_SEED/x86-mes/crt1.S\ ++ -f $MES_SEED/x86-mes/libc+tcc.S\ ++ -f $MESCC_TOOLS_SEED/file_print.M1\ ++ -f $MESCC_TOOLS_SEED/match.M1\ ++ -f $MESCC_TOOLS_SEED/numerate_number.M1\ ++ -f $MESCC_TOOLS_SEED/string.M1\ + -f $MESCC_TOOLS_SEED/M1.M1\ + -f M1-footer.M1\ + -o M1.hex2 + # Hex2-linker phase +-./bin/hex2 \ ++./bin/hex2-0 \ + --LittleEndian\ + --Architecture 1\ + --BaseAddress 0x1000000\ +- -f $MES_SEED/elf32-header.hex2\ ++ -f $MES_PREFIX/lib/x86-mes/elf32-header.hex2\ + -f M1.hex2\ + --exec_enable\ + -o bin/M1 +@@ -177,18 +202,27 @@ $MESCC_TOOLS_SEED/hex2 \ + ./bin/M1 \ + --LittleEndian\ + --Architecture 1\ +- -f $MES_SEED/x86.M1\ +- -f $MES_SEED/crt1.M1\ +- -f $MES_SEED/libc+tcc-mes.M1\ ++ -f $MES_PREFIX/lib/x86-mes/x86.M1\ ++ -f $MES_SEED/x86-mes/crt1.S\ ++ -f $MES_SEED/x86-mes/libc+tcc.S\ ++ -f $MESCC_TOOLS_SEED/file_print.M1\ ++ -f $MESCC_TOOLS_SEED/match.M1\ ++ -f $MESCC_TOOLS_SEED/numerate_number.M1\ ++ -f $MESCC_TOOLS_SEED/string.M1\ + -f $MESCC_TOOLS_SEED/hex2.M1\ + -f hex2-footer.M1\ + -o hex2.hex2 + # Hex2-linker phase +-./bin/hex2 \ ++./bin/hex2-0 \ + --LittleEndian\ + --Architecture 1\ + --BaseAddress 0x1000000\ +- -f $MES_SEED/elf32-header.hex2\ ++ -f $MES_PREFIX/lib/x86-mes/elf32-header.hex2\ + -f hex2.hex2\ + --exec_enable\ + -o bin/hex2 ++ ++# TODO ++touch bin/exec_enable ++touch bin/get_machine ++touch bin/kaem +diff --git a/install.sh b/install.sh +index e4dccff..29e58d6 100644 +--- a/install.sh ++++ b/install.sh +@@ -18,6 +18,6 @@ + PREFIX=${PREFIX-usr} + + mkdir -p "$PREFIX/bin" +-cp blood-elf "$PREFIX/bin/blood-elf" +-cp hex2 "$PREFIX/bin/hex2" +-cp M1 "$PREFIX/bin/M1" ++cp bin/blood-elf "$PREFIX/bin/blood-elf" ++cp bin/hex2 "$PREFIX/bin/hex2" ++cp bin/M1 "$PREFIX/bin/M1" +-- +2.18.0 + diff --git a/gnu/packages/patches/python-2.7-search-paths.patch b/gnu/packages/patches/python-2.7-search-paths.patch index ba7235df27..a012bc8fe0 100644 --- a/gnu/packages/patches/python-2.7-search-paths.patch +++ b/gnu/packages/patches/python-2.7-search-paths.patch @@ -1,4 +1,4 @@ -Make sure the build system honors C_INCLUDE_PATH and LIBRARY_PATH when +Make sure the build system honors CPATH and LIBRARY_PATH when looking for headers and libraries. --- Python-2.7.10/setup.py 2015-10-07 18:33:18.125153186 +0200 @@ -9,7 +9,7 @@ looking for headers and libraries. + # Always honor these variables. + lib_dirs += os.getenv('LIBRARY_PATH', '').split(os.pathsep) -+ inc_dirs += os.getenv('C_INCLUDE_PATH', '').split(os.pathsep) ++ inc_dirs += os.getenv('CPATH', '').split(os.pathsep) + # OSF/1 and Unixware have some stuff in /usr/ccs/lib (like -ldb) if host_platform in ['osf1', 'unixware7', 'openunix8']: diff --git a/gnu/packages/patches/python-3-deterministic-build-info.patch b/gnu/packages/patches/python-3-deterministic-build-info.patch index 22c372a0cf..25a079fe90 100644 --- a/gnu/packages/patches/python-3-deterministic-build-info.patch +++ b/gnu/packages/patches/python-3-deterministic-build-info.patch @@ -2,8 +2,8 @@ Always provide the same date and time in 'Py_GetBuildInfo'. This is the information shown at the REPL and in 'sys.version'. We cannot pass it in CPPFLAGS due to whitespace in the DATE string. ---- Modules/getbuildinfo.c -+++ Modules/getbuildinfo.c +--- a/Modules/getbuildinfo.c ++++ b/Modules/getbuildinfo.c @@ -4,6 +4,10 @@ #include <stdio.h> #endif diff --git a/gnu/packages/patches/python-3-fix-tests.patch b/gnu/packages/patches/python-3-fix-tests.patch index ab713c54dd..e4ba728a7e 100644 --- a/gnu/packages/patches/python-3-fix-tests.patch +++ b/gnu/packages/patches/python-3-fix-tests.patch @@ -1,9 +1,134 @@ -Additional test fixes which affect Python 3.5 (and presumably later) but not -prior revisions of Python. +See the discussion about the issues fixed here at: +http://bugs.python.org/issue20868 . ---- Lib/test/test_pathlib.py 2014-03-01 03:02:36.088311000 +0100 -+++ Lib/test/test_pathlib.py 2014-03-01 04:56:37.768311000 +0100 -@@ -2132,8 +2132,7 @@ +diff --git a/Lib/ctypes/test/test_callbacks.py b/Lib/ctypes/test/test_callbacks.py +--- a/Lib/ctypes/test/test_callbacks.py ++++ b/Lib/ctypes/test/test_callbacks.py +@@ -3,6 +3,7 @@ import unittest + from ctypes import * + from ctypes.test import need_symbol + import _ctypes_test ++import platform + + class Callbacks(unittest.TestCase): + functype = CFUNCTYPE +@@ -176,6 +177,8 @@ class SampleCallbacksTestCase(unittest.TestCase): + + self.assertLess(diff, 0.01, "%s not less than 0.01" % diff) + ++ @unittest.skipIf(platform.machine() in ['mips64'], ++ "This test fails on this platform") + def test_issue_8959_a(self): + from ctypes.util import find_library + libc_path = find_library("c") +diff --git a/Lib/ctypes/test/test_libc.py b/Lib/ctypes/test/test_libc.py +--- a/Lib/ctypes/test/test_libc.py ++++ b/Lib/ctypes/test/test_libc.py +@@ -2,6 +2,7 @@ import unittest + + from ctypes import * + import _ctypes_test ++import platform + + lib = CDLL(_ctypes_test.__file__) + +@@ -17,6 +18,8 @@ class LibTest(unittest.TestCase): + import math + self.assertEqual(lib.my_sqrt(2.0), math.sqrt(2.0)) + ++ @unittest.skipIf(platform.machine() in ['mips64'], ++ "This test fails on this platform") + def test_qsort(self): + comparefunc = CFUNCTYPE(c_int, POINTER(c_char), POINTER(c_char)) + lib.my_qsort.argtypes = c_void_p, c_size_t, c_size_t, comparefunc +diff --git a/Lib/distutils/tests/test_archive_util.py b/Lib/distutils/tests/test_archive_util.py +--- a/Lib/distutils/tests/test_archive_util.py ++++ b/Lib/distutils/tests/test_archive_util.py +@@ -333,6 +333,7 @@ class ArchiveUtilTestCase(support.TempdirManager, + self.assertEqual(os.path.basename(res), 'archive.tar.xz') + self.assertEqual(self._tarinfo(res), self._created_files) + ++ @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix") + def test_make_archive_owner_group(self): + # testing make_archive with owner and group, with various combinations + # this works even if there's not gid/uid support +@@ -362,6 +363,7 @@ class ArchiveUtilTestCase(support.TempdirManager, + + @unittest.skipUnless(ZLIB_SUPPORT, "Requires zlib") + @unittest.skipUnless(UID_GID_SUPPORT, "Requires grp and pwd support") ++ @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix") + def test_tarfile_root_owner(self): + tmpdir = self._create_files() + base_name = os.path.join(self.mkdtemp(), 'archive') +diff --git a/Lib/distutils/tests/test_sdist.py b/Lib/distutils/tests/test_sdist.py +--- a/Lib/distutils/tests/test_sdist.py ++++ b/Lib/distutils/tests/test_sdist.py +@@ -443,6 +443,7 @@ class SDistTestCase(BasePyPIRCCommandTestCase): + "The tar command is not found") + @unittest.skipIf(find_executable('gzip') is None, + "The gzip command is not found") ++ @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix") + def test_make_distribution_owner_group(self): + # now building a sdist + dist, cmd = self.get_cmd() +diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py +--- a/Lib/test/_test_multiprocessing.py ++++ b/Lib/test/_test_multiprocessing.py +@@ -1473,6 +1473,7 @@ class _TestCondition(BaseTestCase): + if pid is not None: + os.kill(pid, signal.SIGINT) + ++ @unittest.skipIf(True, "This fails for unknown reasons on Guix") + def test_wait_result(self): + if isinstance(self, ProcessesMixin) and sys.platform != 'win32': + pid = os.getpid() +diff --git a/Lib/test/test_asyncio/test_base_events.py b/Lib/test/test_asyncio/test_base_events.py +--- a/Lib/test/test_asyncio/test_base_events.py ++++ b/Lib/test/test_asyncio/test_base_events.py +@@ -1301,6 +1301,8 @@ class BaseEventLoopWithSelectorTests(test_utils.TestCase): + self._test_create_connection_ip_addr(m_socket, False) + + @patch_socket ++ @unittest.skipUnless(support.is_resource_enabled('network'), ++ 'network is not enabled') + def test_create_connection_service_name(self, m_socket): + m_socket.getaddrinfo = socket.getaddrinfo + sock = m_socket.socket.return_value +diff --git a/Lib/test/test_generators.py b/Lib/test/test_generators.py +--- a/Lib/test/test_generators.py ++++ b/Lib/test/test_generators.py +@@ -34,6 +34,7 @@ class SignalAndYieldFromTest(unittest.TestCase): + else: + return "FAILED" + ++ @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build environment') + def test_raise_and_yield_from(self): + gen = self.generator1() + gen.send(None) +diff --git a/Lib/test/test_normalization.py b/Lib/test/test_normalization.py +--- a/Lib/test/test_normalization.py ++++ b/Lib/test/test_normalization.py +@@ -2,6 +2,7 @@ from test.support import open_urlresource + import unittest + + from http.client import HTTPException ++from urllib.error import URLError + import sys + from unicodedata import normalize, unidata_version + +@@ -43,6 +44,8 @@ class NormalizationTest(unittest.TestCase): + except PermissionError: + self.skipTest(f"Permission error when downloading {TESTDATAURL} " + f"into the test data directory") ++ except URLError: ++ self.skipTest("DNS lookups are not enabled.") + except (OSError, HTTPException): + self.fail(f"Could not retrieve {TESTDATAURL}") + +diff --git a/Lib/test/test_pathlib.py b/Lib/test/test_pathlib.py +--- a/Lib/test/test_pathlib.py ++++ b/Lib/test/test_pathlib.py +@@ -2130,8 +2130,7 @@ class PosixPathTest(_BasePathTest, unittest.TestCase): self.assertEqual(given, expect) self.assertEqual(set(p.rglob("FILEd*")), set()) @@ -13,47 +138,10 @@ prior revisions of Python. def test_expanduser(self): P = self.cls support.import_module('pwd') ---- Lib/test/test_tarfile.py 2016-02-24 19:22:52.597208055 +0000 -+++ Lib/test/test_tarfile.py 2016-02-24 20:50:48.941950135 +0000 -@@ -2305,11 +2305,14 @@ - try: - import pwd, grp - except ImportError: - return False -- if pwd.getpwuid(0)[0] != 'root': -- return False -- if grp.getgrgid(0)[0] != 'root': -+ try: -+ if pwd.getpwuid(0)[0] != 'root': -+ return False -+ if grp.getgrgid(0)[0] != 'root': -+ return False -+ except KeyError: - return False - return True - - ---- Lib/test/test_asyncio/test_base_events.py -+++ Lib/test/test_asyncio/test_base_events.py -@@ -1216,6 +1216,8 @@ - self._test_create_connection_ip_addr(m_socket, False) - - @patch_socket -+ @unittest.skipUnless(support.is_resource_enabled('network'), -+ 'network is not enabled') - def test_create_connection_service_name(self, m_socket): - m_socket.getaddrinfo = socket.getaddrinfo - sock = m_socket.socket.return_value - ---- Lib/test/test_pdb.py.org 2017-03-12 03:09:01.991856701 +0100 -+++ Lib/test/test_pdb.py 2017-03-12 03:26:17.742572869 +0100 - -For some reason, KeyboardInterrupts do not work in the build -environment (lack of controlling TTY?). Just change the expected -outcome. Unfortunately, this will make it fail for users running -`python -m test test_pdb test_pdb` interactively. - -@@ -928,11 +928,11 @@ +diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py +--- a/Lib/test/test_pdb.py ++++ b/Lib/test/test_pdb.py +@@ -1133,11 +1133,11 @@ def test_pdb_issue_20766(): > <doctest test.test_pdb.test_pdb_issue_20766[0]>(6)test_function() -> print('pdb %d: %s' % (i, sess._previous_sigint_handler)) (Pdb) continue @@ -65,22 +153,100 @@ outcome. Unfortunately, this will make it fail for users running - pdb 2: <built-in function default_int_handler> + pdb 2: Handlers.SIG_IGN """ - - class PdbTestCase(unittest.TestCase): ---- Lib/test/test_socket.py -+++ Lib/test/test_socket.py -@@ -802,6 +802,8 @@ + + +diff --git a/Lib/test/test_regrtest.py b/Lib/test/test_regrtest.py +--- a/Lib/test/test_regrtest.py ++++ b/Lib/test/test_regrtest.py +@@ -764,6 +764,7 @@ class ArgsTestCase(BaseTestCase): + output = self.run_tests('--fromfile', filename) + self.check_executed_tests(output, tests) + ++ @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build environment.') + def test_interrupted(self): + code = TEST_INTERRUPTED + test = self.create_test('sigint', code=code) +@@ -781,6 +782,7 @@ class ArgsTestCase(BaseTestCase): + % (self.TESTNAME_REGEX, len(tests))) + self.check_line(output, regex) + ++ @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build environment.') + def test_slow_interrupted(self): + # Issue #25373: test --slowest with an interrupted test + code = TEST_INTERRUPTED +diff --git a/Lib/test/test_resource.py b/Lib/test/test_resource.py +--- a/Lib/test/test_resource.py ++++ b/Lib/test/test_resource.py +@@ -145,6 +145,7 @@ class ResourceTest(unittest.TestCase): + + @unittest.skipUnless(hasattr(resource, 'prlimit'), 'no prlimit') + @support.requires_linux_version(2, 6, 36) ++ @unittest.skipIf(True, "Bug: the PermissionError is not raised") + def test_prlimit(self): + self.assertRaises(TypeError, resource.prlimit) + self.assertRaises(ProcessLookupError, resource.prlimit, +diff --git a/Lib/test/test_shutil.py b/Lib/test/test_shutil.py +--- a/Lib/test/test_shutil.py ++++ b/Lib/test/test_shutil.py +@@ -1135,6 +1135,7 @@ class TestShutil(unittest.TestCase): + self.assertRaises(ValueError, make_archive, base_name, 'xxx') + + @support.requires_zlib ++ @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix") + def test_make_archive_owner_group(self): + # testing make_archive with owner and group, with various combinations + # this works even if there's not gid/uid support +@@ -1163,6 +1164,7 @@ class TestShutil(unittest.TestCase): + + + @support.requires_zlib ++ @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix") + @unittest.skipUnless(UID_GID_SUPPORT, "Requires grp and pwd support") + def test_tarfile_root_owner(self): + root_dir, base_dir = self._create_files() +diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py +--- a/Lib/test/test_socket.py ++++ b/Lib/test/test_socket.py +@@ -875,6 +875,8 @@ class GeneralModuleTests(unittest.TestCase): if not fqhn in all_host_names: self.fail("Error testing host resolution mechanisms. (fqdn: %s, all: %s)" % (fqhn, repr(all_host_names))) + @unittest.skipUnless(support.is_resource_enabled('network'), + 'network is not enabled') def test_host_resolution(self): - for addr in [support.HOST, '10.0.0.1', '255.255.255.255']: + for addr in [support.HOSTv4, '10.0.0.1', '255.255.255.255']: self.assertEqual(socket.gethostbyname(addr), addr) ---- Lib/test/test_spwd.py -+++ Lib/test/test_spwd.py -@@ -5,8 +5,7 @@ +@@ -1004,6 +1006,8 @@ class GeneralModuleTests(unittest.TestCase): + self.assertWarns(DeprecationWarning, socket.ntohs, k) + self.assertWarns(DeprecationWarning, socket.htons, k) + ++ @unittest.skipUnless(os.path.exists("/etc/services"), ++ "getservbyname uses /etc/services, which is not in the chroot") + def testGetServBy(self): + eq = self.assertEqual + # Find one service that exists, then check all the related interfaces. +@@ -1358,6 +1362,8 @@ class GeneralModuleTests(unittest.TestCase): + raise + self.assertRaises(TypeError, s.ioctl, socket.SIO_LOOPBACK_FAST_PATH, None) + ++ @unittest.skipUnless(os.path.exists("/etc/gai.conf"), ++ "getaddrinfo() will fail") + def testGetaddrinfo(self): + try: + socket.getaddrinfo('localhost', 80) +@@ -1440,6 +1446,8 @@ class GeneralModuleTests(unittest.TestCase): + # only IP addresses are allowed + self.assertRaises(OSError, socket.getnameinfo, ('mail.python.org',0), 0) + ++ @unittest.skipUnless(os.path.exists("/etc/gai.conf"), ++ "getaddrinfo() will fail") + @unittest.skipUnless(support.is_resource_enabled('network'), + 'network is not enabled') + def test_idna(self): +diff --git a/Lib/test/test_spwd.py b/Lib/test/test_spwd.py +--- a/Lib/test/test_spwd.py ++++ b/Lib/test/test_spwd.py +@@ -5,8 +5,7 @@ from test import support spwd = support.import_module('spwd') @@ -90,7 +256,7 @@ outcome. Unfortunately, this will make it fail for users running class TestSpwdRoot(unittest.TestCase): def test_getspall(self): -@@ -56,8 +55,7 @@ +@@ -56,8 +55,7 @@ class TestSpwdRoot(unittest.TestCase): self.assertRaises(TypeError, spwd.getspnam, bytes_name) @@ -100,50 +266,34 @@ outcome. Unfortunately, this will make it fail for users running class TestSpwdNonRoot(unittest.TestCase): def test_getspnam_exception(self): ---- Lib/test/test_regrtest.py -+++ Lib/test/test_regrtest.py -@@ -700,6 +700,7 @@ - output = self.run_tests('--fromfile', filename) - self.check_executed_tests(output, tests) - -+ @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build environment.') - def test_interrupted(self): - code = TEST_INTERRUPTED - test = self.create_test('sigint', code=code) -@@ -717,6 +718,7 @@ - % (self.TESTNAME_REGEX, len(tests))) - self.check_line(output, regex) - -+ @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build environment.') - def test_slow_interrupted(self): - # Issue #25373: test --slowest with an interrupted test - code = TEST_INTERRUPTED ---- Lib/test/test_generators.py -+++ Lib/test/test_generators.py -@@ -29,6 +29,7 @@ - else: - return "FAILED" - -+ @unittest.skipIf(True, 'Keyboard interrupts do not work in the Guix build environment') - def test_raise_and_yield_from(self): - gen = self.generator1() - gen.send(None) ---- Lib/test/test_normalization.py -+++ Lib/test/test_normalization.py -@@ -2,6 +2,7 @@ - import unittest - - from http.client import HTTPException -+from urllib.error import URLError - import sys - from unicodedata import normalize, unidata_version - -@@ -43,6 +44,8 @@ - except PermissionError: - self.skipTest(f"Permission error when downloading {TESTDATAURL} " - f"into the test data directory") -+ except URLError: -+ self.skipTest("DNS lookups are not enabled.") - except (OSError, HTTPException): - self.fail(f"Could not retrieve {TESTDATAURL}") +diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py +--- a/Lib/test/test_tarfile.py ++++ b/Lib/test/test_tarfile.py +@@ -2504,9 +2504,12 @@ def root_is_uid_gid_0(): + import pwd, grp + except ImportError: + return False +- if pwd.getpwuid(0)[0] != 'root': +- return False +- if grp.getgrgid(0)[0] != 'root': ++ try: ++ if pwd.getpwuid(0)[0] != 'root': ++ return False ++ if grp.getgrgid(0)[0] != 'root': ++ return False ++ except KeyError: + return False + return True +diff --git a/Tools/scripts/run_tests.py b/Tools/scripts/run_tests.py +--- a/Tools/scripts/run_tests.py ++++ b/Tools/scripts/run_tests.py +@@ -39,7 +39,7 @@ def main(regrtest_args): + if not any(is_multiprocess_flag(arg) for arg in regrtest_args): + args.extend(['-j', '0']) # Use all CPU cores + if not any(is_resource_use_flag(arg) for arg in regrtest_args): +- args.extend(['-u', 'all,-largefile,-audio,-gui']) ++ args.extend(['-u', 'all,-largefile,-audio,-gui,-network']) + args.extend(regrtest_args) + print(' '.join(args)) + if sys.platform == 'win32': diff --git a/gnu/packages/patches/python-3-search-paths.patch b/gnu/packages/patches/python-3-search-paths.patch index 73e3f4ccf5..5fea9c66b6 100644 --- a/gnu/packages/patches/python-3-search-paths.patch +++ b/gnu/packages/patches/python-3-search-paths.patch @@ -1,8 +1,8 @@ -Make sure the build system honors C_INCLUDE_PATH and LIBRARY_PATH when +Make sure the build system honors CPATH and LIBRARY_PATH when looking for headers and libraries. ---- setup.py 2015-10-07 23:32:58.891329173 +0200 -+++ setup.py 2015-10-07 23:46:29.653349924 +0200 +--- a/setup.py 2015-10-07 23:32:58.891329173 +0200 ++++ b/setup.py 2015-10-07 23:46:29.653349924 +0200 @@ -575,8 +575,8 @@ # if a file is found in one of those directories, it can # be assumed that no additional -I,-L directives are needed. @@ -10,7 +10,7 @@ looking for headers and libraries. - lib_dirs = self.compiler.library_dirs + system_lib_dirs - inc_dirs = self.compiler.include_dirs + system_include_dirs + lib_dirs = os.getenv('LIBRARY_PATH', '').split(os.pathsep) -+ inc_dirs = os.getenv('C_INCLUDE_PATH', '').split(os.pathsep) ++ inc_dirs = os.getenv('CPATH', '').split(os.pathsep) else: # Add the sysroot paths. 'sysroot' is a compiler option used to # set the logical path of the standard system headers and diff --git a/gnu/packages/patches/python-fix-tests.patch b/gnu/packages/patches/python-fix-tests.patch deleted file mode 100644 index d8f69866fd..0000000000 --- a/gnu/packages/patches/python-fix-tests.patch +++ /dev/null @@ -1,147 +0,0 @@ -See the discussion about the issues fixed here at: -http://bugs.python.org/issue20868 . - ---- Lib/test/test_shutil.py 2014-03-01 03:02:36.088311000 +0100 -+++ Lib/test/test_shutil.py 2014-03-01 04:56:37.768311000 +0100 -@@ -1127,6 +1127,7 @@ - self.assertRaises(ValueError, make_archive, base_name, 'xxx') - - @support.requires_zlib -+ @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix") - def test_make_archive_owner_group(self): - # testing make_archive with owner and group, with various combinations - # this works even if there's not gid/uid support -@@ -1155,6 +1156,7 @@ - - - @support.requires_zlib -+ @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix") - @unittest.skipUnless(UID_GID_SUPPORT, "Requires grp and pwd support") - def test_tarfile_root_owner(self): - root_dir, base_dir = self._create_files() ---- Lib/test/test_socket.py.orig 2014-03-02 22:14:12.264311000 +0100 -+++ Lib/test/test_socket.py 2014-03-21 03:50:45.660311000 +0100 -@@ -819,6 +819,8 @@ - self.assertRaises(OverflowError, socket.htonl, k) - self.assertRaises(OverflowError, socket.htons, k) - -+ @unittest.skipUnless(os.path.exists("/etc/services"), -+ "getservbyname uses /etc/services, which is not in the chroot") - def testGetServBy(self): - eq = self.assertEqual - # Find one service that exists, then check all the related interfaces. -@@ -1104,6 +1106,8 @@ - self.assertRaises(ValueError, s.ioctl, -1, None) - s.ioctl(socket.SIO_KEEPALIVE_VALS, (1, 100, 100)) - -+ @unittest.skipUnless(os.path.exists("/etc/gai.conf"), -+ "getaddrinfo() will fail") - def testGetaddrinfo(self): - try: - socket.getaddrinfo('localhost', 80) -@@ -1174,6 +1178,8 @@ - # only IP addresses are allowed - self.assertRaises(socket.error, socket.getnameinfo, ('mail.python.org',0), 0) - -+ @unittest.skipUnless(os.path.exists("/etc/gai.conf"), -+ "getaddrinfo() will fail") - @unittest.skipUnless(support.is_resource_enabled('network'), - 'network is not enabled') - def test_idna(self): ---- Lib/test/_test_multiprocessing.py 2014-04-06 23:12:27.575235000 +0200 -+++ Lib/test/_test_multiprocessing.py 2014-04-06 23:13:04.827235000 +0200 -@@ -1016,6 +1016,7 @@ - if pid is not None: - os.kill(pid, signal.SIGINT) - -+ @unittest.skipIf(True, "This fails for unknown reasons on Guix") - def test_wait_result(self): - if isinstance(self, ProcessesMixin) and sys.platform != 'win32': - pid = os.getpid() ---- Lib/ctypes/test/test_libc.py 2014-04-07 23:17:41.351235000 +0200 -+++ Lib/ctypes/test/test_libc.py 2014-04-07 23:32:18.799235000 +0200 -@@ -2,6 +2,7 @@ - - from ctypes import * - import _ctypes_test -+import platform - - lib = CDLL(_ctypes_test.__file__) - -@@ -17,6 +18,8 @@ - import math - self.assertEqual(lib.my_sqrt(2.0), math.sqrt(2.0)) - -+ @unittest.skipIf(platform.machine() in ['mips64'], -+ "This test fails on this platform") - def test_qsort(self): - comparefunc = CFUNCTYPE(c_int, POINTER(c_char), POINTER(c_char)) - lib.my_qsort.argtypes = c_void_p, c_size_t, c_size_t, comparefunc ---- Lib/ctypes/test/test_callbacks.py 2014-04-07 23:15:42.835235000 +0200 -+++ Lib/ctypes/test/test_callbacks.py 2014-04-07 23:32:42.035235000 +0200 -@@ -1,6 +1,7 @@ - import unittest - from ctypes import * - import _ctypes_test -+import platform - - class Callbacks(unittest.TestCase): - functype = CFUNCTYPE -@@ -174,6 +175,8 @@ - - self.assertLess(diff, 0.01, "%s not less than 0.01" % diff) - -+ @unittest.skipIf(platform.machine() in ['mips64'], -+ "This test fails on this platform") - def test_issue_8959_a(self): - from ctypes.util import find_library - libc_path = find_library("c") ---- Tools/scripts/run_tests.py.orig 2015-04-06 03:52:17.484000000 +0200 -+++ Tools/scripts/run_tests.py 2015-04-06 03:52:25.880000000 +0200 -@@ -47,7 +47,7 @@ - if threading and not any(is_multiprocess_flag(arg) for arg in regrtest_args): - args.extend(['-j', '0']) # Use all CPU cores - if not any(is_resource_use_flag(arg) for arg in regrtest_args): -- args.extend(['-u', 'all,-largefile,-audio,-gui']) -+ args.extend(['-u', 'all,-largefile,-audio,-gui,-network']) - args.extend(regrtest_args) - print(' '.join(args)) - os.execv(sys.executable, args) ---- Lib/distutils/tests/test_archive_util.py.orig 2015-04-06 04:08:49.288000000 +0200 -+++ Lib/distutils/tests/test_archive_util.py 2015-04-06 04:09:34.396000000 +0200 -@@ -282,6 +282,7 @@ - finally: - del ARCHIVE_FORMATS['xxx'] - -+ @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix") - def test_make_archive_owner_group(self): - # testing make_archive with owner and group, with various combinations - # this works even if there's not gid/uid support -@@ -310,6 +311,7 @@ - - @unittest.skipUnless(ZLIB_SUPPORT, "Requires zlib") - @unittest.skipUnless(UID_GID_SUPPORT, "Requires grp and pwd support") -+ @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix") - def test_tarfile_root_owner(self): - tmpdir, tmpdir2, base_name = self._create_files() - old_dir = os.getcwd() ---- Lib/distutils/tests/test_sdist.py.orig 2015-04-06 04:10:05.264000000 +0200 -+++ Lib/distutils/tests/test_sdist.py 2015-04-06 04:10:21.448000000 +0200 -@@ -435,6 +435,7 @@ - "The tar command is not found") - @unittest.skipIf(find_executable('gzip') is None, - "The gzip command is not found") -+ @unittest.skipIf(True, "getgrgid(0)[0] raises a KeyError on Guix") - def test_make_distribution_owner_group(self): - # now building a sdist - dist, cmd = self.get_cmd() ---- Lib/test/test_resource.py.orig 2015-04-06 21:30:24.708000000 +0200 -+++ Lib/test/test_resource.py 2015-04-06 23:07:27.220000000 +0200 -@@ -146,6 +146,7 @@ - - @unittest.skipUnless(hasattr(resource, 'prlimit'), 'no prlimit') - @support.requires_linux_version(2, 6, 36) -+ @unittest.skipIf(True, "Bug: the PermissionError is not raised") - def test_prlimit(self): - self.assertRaises(TypeError, resource.prlimit) - if os.geteuid() != 0: diff --git a/gnu/packages/patches/python-pytest-pluggy-compat.patch b/gnu/packages/patches/python-pytest-pluggy-compat.patch new file mode 100644 index 0000000000..ac33b862e6 --- /dev/null +++ b/gnu/packages/patches/python-pytest-pluggy-compat.patch @@ -0,0 +1,64 @@ +Fix test failures when built against Pluggy 0.9. + +Taken from this upstream commit: +https://github.com/pytest-dev/pytest/commit/a68f4fd2b9e99c82476d0e04ebcf561aeddbcb2e + +diff --git a/testing/test_assertion.py b/testing/test_assertion.py +index b659233eb..e4fe56c6f 100644 +--- a/testing/test_assertion.py ++++ b/testing/test_assertion.py +@@ -209,7 +209,7 @@ def load(self, require=True, *args, **kwargs): + import spamplugin + return spamplugin + +- def iter_entry_points(name): ++ def iter_entry_points(group, name=None): + yield DummyEntryPoint() + + pkg_resources.iter_entry_points = iter_entry_points +diff --git a/testing/test_config.py b/testing/test_config.py +index f9f22a63e..1e29b83f1 100644 +--- a/testing/test_config.py ++++ b/testing/test_config.py +@@ -514,8 +514,8 @@ def test_preparse_ordering_with_setuptools(testdir, monkeypatch): + pkg_resources = pytest.importorskip("pkg_resources") + monkeypatch.delenv("PYTEST_DISABLE_PLUGIN_AUTOLOAD", raising=False) + +- def my_iter(name): +- assert name == "pytest11" ++ def my_iter(group, name=None): ++ assert group == "pytest11" + + class Dist(object): + project_name = "spam" +@@ -552,8 +552,8 @@ def test_setuptools_importerror_issue1479(testdir, monkeypatch): + pkg_resources = pytest.importorskip("pkg_resources") + monkeypatch.delenv("PYTEST_DISABLE_PLUGIN_AUTOLOAD", raising=False) + +- def my_iter(name): +- assert name == "pytest11" ++ def my_iter(group, name=None): ++ assert group == "pytest11" + + class Dist(object): + project_name = "spam" +@@ -583,8 +583,8 @@ def test_plugin_preparse_prevents_setuptools_loading(testdir, monkeypatch, block + + plugin_module_placeholder = object() + +- def my_iter(name): +- assert name == "pytest11" ++ def my_iter(group, name=None): ++ assert group == "pytest11" + + class Dist(object): + project_name = "spam" +@@ -621,7 +621,7 @@ def load(self): + def test_disable_plugin_autoload(testdir, monkeypatch, parse_args, should_load): + pkg_resources = pytest.importorskip("pkg_resources") + +- def my_iter(name): ++ def my_iter(group, name=None): + raise AssertionError("Should not be called") + + class PseudoPlugin(object): diff --git a/gnu/packages/patches/python2-CVE-2018-1000802.patch b/gnu/packages/patches/python2-CVE-2018-1000802.patch deleted file mode 100644 index 0d5bc77c84..0000000000 --- a/gnu/packages/patches/python2-CVE-2018-1000802.patch +++ /dev/null @@ -1,47 +0,0 @@ -Fix CVE-2018-1000802: - -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1000802 - -Taken from upstream commit (sans NEWS): -https://github.com/python/cpython/commit/d8b103b8b3ef9644805341216963a64098642435 - -diff --git a/Lib/shutil.py b/Lib/shutil.py -index 3462f7c5e9..0ab1a06f52 100644 ---- a/Lib/shutil.py -+++ b/Lib/shutil.py -@@ -413,17 +413,21 @@ def _make_tarball(base_name, base_dir, compress="gzip", verbose=0, dry_run=0, - - return archive_name - --def _call_external_zip(base_dir, zip_filename, verbose=False, dry_run=False): -+def _call_external_zip(base_dir, zip_filename, verbose, dry_run, logger): - # XXX see if we want to keep an external call here - if verbose: - zipoptions = "-r" - else: - zipoptions = "-rq" -- from distutils.errors import DistutilsExecError -- from distutils.spawn import spawn -+ cmd = ["zip", zipoptions, zip_filename, base_dir] -+ if logger is not None: -+ logger.info(' '.join(cmd)) -+ if dry_run: -+ return -+ import subprocess - try: -- spawn(["zip", zipoptions, zip_filename, base_dir], dry_run=dry_run) -- except DistutilsExecError: -+ subprocess.check_call(cmd) -+ except subprocess.CalledProcessError: - # XXX really should distinguish between "couldn't find - # external 'zip' command" and "zip failed". - raise ExecError, \ -@@ -458,7 +462,7 @@ def _make_zipfile(base_name, base_dir, verbose=0, dry_run=0, logger=None): - zipfile = None - - if zipfile is None: -- _call_external_zip(base_dir, zip_filename, verbose, dry_run) -+ _call_external_zip(base_dir, zip_filename, verbose, dry_run, logger) - else: - if logger is not None: - logger.info("creating '%s' and adding '%s' to it", diff --git a/gnu/packages/patches/python2-CVE-2018-14647.patch b/gnu/packages/patches/python2-CVE-2018-14647.patch deleted file mode 100644 index 6226b06aca..0000000000 --- a/gnu/packages/patches/python2-CVE-2018-14647.patch +++ /dev/null @@ -1,61 +0,0 @@ -Fix CVE-2018-14647: -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-14647 -https://bugs.python.org/issue34623 - -Taken from upstream: -https://github.com/python/cpython/commit/18b20bad75b4ff0486940fba4ec680e96e70f3a2 - -diff --git a/Include/pyexpat.h b/Include/pyexpat.h -index 5340ef5fa3..3fc5fa54da 100644 ---- a/Include/pyexpat.h -+++ b/Include/pyexpat.h -@@ -3,7 +3,7 @@ - - /* note: you must import expat.h before importing this module! */ - --#define PyExpat_CAPI_MAGIC "pyexpat.expat_CAPI 1.0" -+#define PyExpat_CAPI_MAGIC "pyexpat.expat_CAPI 1.1" - #define PyExpat_CAPSULE_NAME "pyexpat.expat_CAPI" - - struct PyExpat_CAPI -@@ -43,6 +43,8 @@ struct PyExpat_CAPI - XML_Parser parser, XML_UnknownEncodingHandler handler, - void *encodingHandlerData); - void (*SetUserData)(XML_Parser parser, void *userData); -+ /* might be none for expat < 2.1.0 */ -+ int (*SetHashSalt)(XML_Parser parser, unsigned long hash_salt); - /* always add new stuff to the end! */ - }; - -diff --git a/Modules/_elementtree.c b/Modules/_elementtree.c -index f7f992dd3a..b38e0ab329 100644 ---- a/Modules/_elementtree.c -+++ b/Modules/_elementtree.c -@@ -2574,6 +2574,11 @@ xmlparser(PyObject* self_, PyObject* args, PyObject* kw) - PyErr_NoMemory(); - return NULL; - } -+ /* expat < 2.1.0 has no XML_SetHashSalt() */ -+ if (EXPAT(SetHashSalt) != NULL) { -+ EXPAT(SetHashSalt)(self->parser, -+ (unsigned long)_Py_HashSecret.prefix); -+ } - - ALLOC(sizeof(XMLParserObject), "create expatparser"); - -diff --git a/Modules/pyexpat.c b/Modules/pyexpat.c -index 2b4d31293c..1f8c0d70a5 100644 ---- a/Modules/pyexpat.c -+++ b/Modules/pyexpat.c -@@ -2042,6 +2042,11 @@ MODULE_INITFUNC(void) - capi.SetProcessingInstructionHandler = XML_SetProcessingInstructionHandler; - capi.SetUnknownEncodingHandler = XML_SetUnknownEncodingHandler; - capi.SetUserData = XML_SetUserData; -+#if XML_COMBINED_VERSION >= 20100 -+ capi.SetHashSalt = XML_SetHashSalt; -+#else -+ capi.SetHashSalt = NULL; -+#endif - - /* export using capsule */ - capi_object = PyCapsule_New(&capi, PyExpat_CAPSULE_NAME, NULL); diff --git a/gnu/packages/patches/scribus-poppler-0.73.patch b/gnu/packages/patches/scribus-poppler-0.73.patch new file mode 100644 index 0000000000..5cf4cf721d --- /dev/null +++ b/gnu/packages/patches/scribus-poppler-0.73.patch @@ -0,0 +1,36 @@ +Fix build with Poppler 0.73. + +This is an amalgamation of these upstream commits: +https://github.com/scribusproject/scribus/commit/d34e59bfe495250ba023ba0f99e672ee32300a27 +https://github.com/scribusproject/scribus/commit/c43a89030026f8ffab5070b6935daee8bd74838a + +diff --git a/scribus/plugins/import/pdf/slaoutput.h b/scribus/plugins/import/pdf/slaoutput.h +index c46448b80a..4dac7c3983 100644 +--- a/scribus/plugins/import/pdf/slaoutput.h ++++ b/scribus/plugins/import/pdf/slaoutput.h +@@ -28,7 +28,9 @@ for which a new license (GPL+exception) is in place. + #include "selection.h"
+ #include "vgradient.h"
+
++#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 73, 0)
+ #include <poppler/goo/gtypes.h>
++#endif
+ #include <poppler/Object.h>
+ #include <poppler/OutputDev.h>
+ #include <poppler/Gfx.h>
+diff --git a/scribus/plugins/import/pdf/importpdfconfig.h b/scribus/plugins/import/pdf/importpdfconfig.h +index f6b3950377..80ac796501 100644 +--- a/scribus/plugins/import/pdf/importpdfconfig.h ++++ b/scribus/plugins/import/pdf/importpdfconfig.h +@@ -37,4 +37,11 @@ for which a new license (GPL+exception) is in place. + #define getCString c_str
+ #endif
+
++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 73, 0)
++#define Guchar unsigned char
++#define Gushort unsigned short
++#define Guint unsigned int
++#define Gulong unsigned long
++#endif
++
+ #endif
diff --git a/gnu/packages/patches/tcc-boot-0.9.27.patch b/gnu/packages/patches/tcc-boot-0.9.27.patch new file mode 100644 index 0000000000..6f9d365788 --- /dev/null +++ b/gnu/packages/patches/tcc-boot-0.9.27.patch @@ -0,0 +1,26 @@ +From 1431ba3a99582e4c3d2693ac37e57f361858affd Mon Sep 17 00:00:00 2001 +From: Jan Nieuwenhuizen <janneke@gnu.org> +Date: Mon, 11 Jun 2018 18:39:44 +0200 +Subject: [PATCH] bootstrappable: Force static link. + +--- + libtcc.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/libtcc.c b/libtcc.c +index 3448f44..02ab850 100644 +--- a/libtcc.c ++++ b/libtcc.c +@@ -735,6 +735,9 @@ LIBTCCAPI TCCState *tcc_new(void) + tcc_state = s; + ++nb_states; + ++#if BOOTSTRAP ++ s->static_link = 1; ++#endif + s->alacarte_link = 1; + s->nocommon = 1; + s->warn_implicit_function_declaration = 1; +-- +2.16.2 + diff --git a/gnu/packages/patches/texinfo-perl-compat.patch b/gnu/packages/patches/texinfo-perl-compat.patch deleted file mode 100644 index a7348fde0d..0000000000 --- a/gnu/packages/patches/texinfo-perl-compat.patch +++ /dev/null @@ -1,51 +0,0 @@ -Fix compatibility with newer Perls. - -The first patch is taken from upstream: -https://svn.savannah.gnu.org/viewvc/texinfo?view=revision&revision=8008 - -The second gets rid of a deprecation warning that breaks some tests. -Taken from Fedora: <https://bugzilla.redhat.com/show_bug.cgi?id=1590308>. - ---- trunk/tp/Texinfo/Convert/XSParagraph/xspara.c 2017/04/30 14:57:26 7765 -+++ trunk/tp/Texinfo/Convert/XSParagraph/xspara.c 2018/07/13 15:39:29 8008 -@@ -248,6 +248,11 @@ - - dTHX; - -+#if PERL_VERSION > 27 || (PERL_VERSION == 27 && PERL_SUBVERSION > 8) -+ /* needed due to thread-safe locale handling in newer perls */ -+ switch_to_global_locale(); -+#endif -+ - if (setlocale (LC_CTYPE, "en_US.UTF-8") - || setlocale (LC_CTYPE, "en_US.utf8")) - goto success; -@@ -320,6 +325,10 @@ - { - success: ; - free (utf8_locale); -+#if PERL_VERSION > 27 || (PERL_VERSION == 27 && PERL_SUBVERSION > 8) -+ /* needed due to thread-safe locale handling in newer perls */ -+ sync_locale(); -+#endif - /* - fprintf (stderr, "tried to set LC_CTYPE to UTF-8.\n"); - fprintf (stderr, "character encoding is: %s\n", - -diff -up texinfo-6.5/tp/Texinfo/Parser.pm.orig texinfo-6.5/tp/Texinfo/Parser.pm ---- texinfo-6.5/tp/Texinfo/Parser.pm.orig 2018-06-12 13:40:29.356030136 +0200 -+++ texinfo-6.5/tp/Texinfo/Parser.pm 2018-06-12 13:41:28.357725639 +0200 -@@ -5478,11 +5478,11 @@ sub _parse_special_misc_command($$$$) - } - } elsif ($command eq 'clickstyle') { - # REMACRO -- if ($line =~ /^\s+@([[:alnum:]][[:alnum:]\-]*)({})?\s*/) { -+ if ($line =~ /^\s+@([[:alnum:]][[:alnum:]\-]*)(\{})?\s*/) { - $args = ['@'.$1]; - $self->{'clickstyle'} = $1; - $remaining = $line; -- $remaining =~ s/^\s+@([[:alnum:]][[:alnum:]\-]*)({})?\s*(\@(c|comment)((\@|\s+).*)?)?//; -+ $remaining =~ s/^\s+@([[:alnum:]][[:alnum:]\-]*)(\{})?\s*(\@(c|comment)((\@|\s+).*)?)?//; - $has_comment = 1 if (defined($4)); - } else { - $self->line_error (sprintf($self->__( diff --git a/gnu/packages/patches/util-linux-tests.patch b/gnu/packages/patches/util-linux-tests.patch index bb5be66515..ec1671f224 100644 --- a/gnu/packages/patches/util-linux-tests.patch +++ b/gnu/packages/patches/util-linux-tests.patch @@ -2,6 +2,8 @@ This test checks whether 'root' is successfully translated to UID/GID 0, using 'getpwnam' in libmount. This doesn't work in the chroot because /etc/passwd doesn't contain an entry for 'root' so skip it. +The second test requires that '/sys/dev/block' is present, which is not +the case inside the build container. --- util-linux-2.25.2/tests/ts/libmount/optstr 2015-01-23 13:58:41.181151194 +0100 +++ util-linux-2.25.2/tests/ts/libmount/optstr 2015-01-23 13:58:42.829161716 +0100 @@ -16,3 +18,14 @@ using 'getpwnam' in libmount. This doesn't work in the chroot because ts_init_subtest "deduplicate" ts_run $TESTPROG --dedup bbb,ccc,AAA,xxx,AAA=a,AAA=bbb,ddd,AAA=ccc,fff=eee AAA &> $TS_OUTPUT ts_finalize_subtest +--- a/tests/ts/lsblk/lsblk 2019-03-11 21:08:23.734387391 +0100 ++++ b/tests/ts/lsblk/lsblk 2019-03-11 21:12:43.635473111 +0100 +@@ -22,6 +22,8 @@ + + ts_init "$*" + ++ts_skip "/sys/dev/block is not available" ++ + ts_check_test_command "$TS_CMD_LSBLK" + ts_check_prog xz + ts_check_prog tar diff --git a/gnu/packages/pcre.scm b/gnu/packages/pcre.scm index 564a23d012..0f9d590476 100644 --- a/gnu/packages/pcre.scm +++ b/gnu/packages/pcre.scm @@ -35,7 +35,7 @@ (define-public pcre (package (name "pcre") - (version "8.42") + (version "8.43") (source (origin (method url-fetch) (uri (list @@ -46,7 +46,7 @@ version "/pcre-" version ".tar.bz2"))) (sha256 (base32 - "00ckpzlgyr16bnqx8fawa3afjgqxw5yxgs2l081vw23qi1y4pl1c")))) + "0sxg1wlknq05ryq63h21cchjmcjkin9lmnqsmhs3h08301965rwi")))) (build-system gnu-build-system) (outputs '("out" ;library & headers "bin" ;depends on Readline (adds 20MiB to the closure) @@ -89,7 +89,7 @@ POSIX regular expression API.") (define-public pcre2 (package (name "pcre2") - (version "10.31") + (version "10.32") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/pcre/pcre2/" @@ -97,7 +97,7 @@ POSIX regular expression API.") (sha256 (base32 - "1b389pzw91k1hzydsh4smdsxyppwz4pv74m3nrvy8rda0j3m6zg0")))) + "0bkwp2czcckvvbdls7b331cad11rxsm020aqhrbz84z8bp68k7pj")))) (build-system gnu-build-system) (inputs `(("bzip2" ,bzip2) ("readline" ,readline) diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm index 671e91262a..93bb53d801 100644 --- a/gnu/packages/pdf.scm +++ b/gnu/packages/pdf.scm @@ -83,14 +83,14 @@ (define-public poppler (package (name "poppler") - (version "0.72.0") + (version "0.74.0") (source (origin (method url-fetch) (uri (string-append "https://poppler.freedesktop.org/poppler-" version ".tar.xz")) (sha256 (base32 - "0lfs1b1jfamxl13zbl5n448dqvl9n8frbv8180y7b7kfyaw7wx61")))) + "0bvb0yq9zsl2b811j4l4x0vf8g5lgmqbndkb2hvgsrr5639rzq4j")))) (build-system cmake-build-system) ;; FIXME: ;; use libcurl: no @@ -122,7 +122,7 @@ #:configure-flags (let* ((out (assoc-ref %outputs "out")) (lib (string-append out "/lib"))) - (list "-DENABLE_XPDF_HEADERS=ON" ; to install header files + (list "-DENABLE_UNSTABLE_API_ABI_HEADERS=ON" ;to install header files "-DENABLE_ZLIB=ON" (string-append "-DCMAKE_INSTALL_LIBDIR=" lib) (string-append "-DCMAKE_INSTALL_RPATH=" lib))))) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 8c28c94ed9..52f0b852ad 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -64,14 +64,14 @@ ;; Yeah, Perl... It is required early in the bootstrap process by Linux. (package (name "perl") - (version "5.28.0") + (version "5.28.1") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/src/5.0/perl-" version ".tar.gz")) (sha256 (base32 - "1a3f822lcl8dr8v0hk80yyhpzqlljg49z9flb48rs3nbsij9z4ky")) + "0iy3as4hnbjfyws4in3j9d6zhhjxgl5m95i5n9jy2bnzcpz8bgry")) (patches (search-patches "perl-no-sys-dirs.patch" "perl-autosplit-default-time.patch" diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index 065c06df2a..fa634c2ecd 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -874,14 +874,14 @@ object to help create WSGI responses.") (define-public python-zope-event (package (name "python-zope-event") - (version "4.1.0") + (version "4.4") (source (origin (method url-fetch) (uri (pypi-uri "zope.event" version)) (sha256 (base32 - "11p75zpfz3ffhz21nzx9wb23xs993ck5s6hkjcvhswwizni5jynw")))) + "1ksbc726av9xacml6jhcfyn828hlhb9xlddpx6fcvnlvmpmpvhk9")))) (build-system python-build-system) (home-page "https://pypi.python.org/pypi/zope.event") (synopsis "Event publishing system for Python") @@ -897,14 +897,14 @@ dispatching systems can be built.") (define-public python-zope-interface (package (name "python-zope-interface") - (version "4.1.3") + (version "4.6.0") (source (origin (method url-fetch) (uri (pypi-uri "zope.interface" version)) (sha256 (base32 - "0ks8h73b2g4bkad821qbv0wzjppdrwys33i7ka45ik3wxjg1l8if")))) + "1rgh2x3rcl9r0v0499kf78xy86rnmanajf4ywmqb943wpk50sg8v")))) (build-system python-build-system) (native-inputs `(("python-zope-event" ,python-zope-event))) diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 1968c987df..db31794225 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -26,7 +26,7 @@ ;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> ;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org> ;;; Copyright © 2016 David Craven <david@craven.ch> -;;; Copyright © 2016, 2017, 2018 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2016, 2017, 2018, 2019 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2016, 2017 Stefan Reichör <stefan@xsteve.at> ;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org> ;;; Copyright © 2016, 2017 Alex Vong <alexvong1995@gmail.com> @@ -326,7 +326,14 @@ by @code{binstar}, @code{binstar-build} and @code{chalmers}.") (arguments `(#:phases (modify-phases %standard-phases (replace 'check - (lambda _ (invoke "pytest" "-vv")))))) + (lambda _ + (invoke "pytest" "-vv" "-k" + (string-append + ;; XXX: These tests fail when using Pytest 4.x and + ;; Babel 2.6.0. Try removing this for later versions. + "not test_no_inherit_metazone_marker_never_in_output" + " and not test_smoke_dates" + " and not test_smoke_numbers"))))))) (home-page "http://babel.pocoo.org/") (synopsis "Tools for internationalizing Python applications") @@ -638,14 +645,14 @@ encoded).") (define-public python-setuptools (package (name "python-setuptools") - (version "40.0.0") + (version "40.8.0") (source (origin (method url-fetch) (uri (pypi-uri "setuptools" version ".zip")) (sha256 (base32 - "0pq116lr14gnc62v76nk0npkm6krb2mpp7p9ab369zgv4n7dnah1")) + "0k9hifpgahnw2a26w3cr346iy733k6d3nwh3f7g9m13y6f8fqkkf")) (modules '((guix build utils))) (snippet '(begin @@ -963,14 +970,14 @@ from the Python interpreter, or as a small part of a larger application.") (define-public python-six (package (name "python-six") - (version "1.11.0") + (version "1.12.0") (source (origin (method url-fetch) (uri (pypi-uri "six" version)) (sha256 (base32 - "1scqzwc51c875z23phj48gircqjgnn3af8zy2izjwmnlxrxsgs3h")))) + "0wxs1q74v07ssjywbbm7x6h5v9qx209ld2yfsif4060sxi0h2sni")))) (build-system python-build-system) (arguments `(#:phases @@ -1632,14 +1639,14 @@ server.") (define-public python-py (package (name "python-py") - (version "1.5.4") + (version "1.8.0") (source (origin (method url-fetch) (uri (pypi-uri "py" version)) (sha256 (base32 - "1xxvwfn82457djf55f5n2c94699rfqnk43br8fif2r2q8gvrmm9z")))) + "0lsy1gajva083pzc7csj1cvbmminb7b4l6a0prdzyb3fd829nqyw")))) (build-system python-build-system) (arguments ;; FIXME: "ImportError: 'test' module incorrectly imported from @@ -2114,13 +2121,13 @@ JavaScript-like message boxes. Types of dialog boxes include: (package (name "python-pympler") (home-page "https://pythonhosted.org/Pympler/") - (version "0.5") + (version "0.6") (source (origin (method url-fetch) (uri (pypi-uri "Pympler" version)) (sha256 (base32 - "03qwsbilqgvnbl3a1jmpgixbr2kq6m3fvdlzyr3wdp01bwlc85kx")))) + "19qkpaw5icwhb4c0f6ijqfmhwhj34k2k6s4m4fsvhrxc9p5cwqn2")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases @@ -3908,14 +3915,14 @@ as the original project seems to have been abandoned circa 2007.") (define-public python-pycodestyle (package (name "python-pycodestyle") - (version "2.4.0") + (version "2.5.0") (source - (origin - (method url-fetch) - (uri (pypi-uri "pycodestyle" version)) - (sha256 - (base32 - "0fhy4vnlgpjq4qd1wdnl6pvdw7rah0ypmn8c9mkhz8clsndskz6b")))) + (origin + (method url-fetch) + (uri (pypi-uri "pycodestyle" version)) + (sha256 + (base32 + "0v4prb05n21bm8650v0a01k1nyqjdmkrsm3zycfxh2j5k9n962p4")))) (build-system python-build-system) (home-page "https://pycodestyle.readthedocs.io/") (synopsis "Python style guide checker") @@ -4577,13 +4584,13 @@ child application and control it as if a human were typing commands.") (define-public python-setuptools-scm (package (name "python-setuptools-scm") - (version "3.1.0") + (version "3.2.0") (source (origin (method url-fetch) (uri (pypi-uri "setuptools_scm" version)) (sha256 (base32 - "0h4bglwfz8b9prqljv8z3w9rgydfyxzaj05bm1y6zs5m6shz548i")))) + "0n3knn3p1sqlx31k2lahn7z9bacvlv8nhlfidj77vz50bxqlgasj")))) (build-system python-build-system) (home-page "https://github.com/pypa/setuptools_scm/") (synopsis "Manage Python package versions in SCM metadata") @@ -5799,14 +5806,14 @@ PEP 8.") (define-public python-pyflakes (package (name "python-pyflakes") - (version "2.0.0") + (version "2.1.1") (source (origin (method url-fetch) (uri (pypi-uri "pyflakes" version)) (sha256 (base32 - "0jba28czyvimdc72llms3f17swp3i8jdcabf5w0j00adfbn64xls")))) + "18pq95a1xj2dgdd0m85gyfsn40jajj4xc3lp8wfv7igqhrc86xnr")))) (build-system python-build-system) (home-page "https://github.com/pyflakes/pyflakes") @@ -5895,35 +5902,20 @@ complexity of Python source code.") (define-public python2-pyflakes-0.8.1 (package-with-python2 python-pyflakes-0.8.1)) -;; This package is used by hypothesis which has thousands of dependent packages. -;; FIXME: Consolidate this with "python-flake8" below in the next rebuild cycle. -(define-public python-flake8-3.5 +(define-public python-flake8 (package (name "python-flake8") - (version "3.5.0") - (source - (origin - (method url-fetch) - (uri (pypi-uri "flake8" version)) - (sha256 - (base32 - "184b33grvvjmiwlv9kyd7yng9qv5ld24154j70z332xxg9gjclvj")))) + (version "3.7.7") + (source (origin + (method url-fetch) + (uri (pypi-uri "flake8" version)) + (sha256 + (base32 + "0qg6zggqigrd4k3gv88shd1a27d0cwgfql8vfiq2c7rl7w3rd6c5")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases - ;; Two errors don't seem to have assigned codes. - (add-after 'unpack 'delete-broken-test - (lambda _ (delete-file "tests/unit/test_pyflakes_codes.py") #t)) - (add-after 'unpack 'fix-problem-with-pycodestyle - (lambda _ - ;; See https://gitlab.com/pycqa/flake8/merge_requests/230 - ;; This should no longer be needed with the next release. - (substitute* "setup.py" - (("PEP8_PLUGIN\\('break_around_binary_operator'\\),") - "PEP8_PLUGIN('break_after_binary_operator'),\ -PEP8_PLUGIN('break_before_binary_operator'),")) - #t)) (delete 'check) (add-after 'install 'check (lambda* (#:key inputs outputs #:allow-other-keys) @@ -5932,6 +5924,7 @@ PEP8_PLUGIN('break_before_binary_operator'),")) #t))))) (propagated-inputs `(("python-pycodestyle" ,python-pycodestyle) + ("python-entrypoints" ,python-entrypoints) ("python-pyflakes" ,python-pyflakes) ("python-mccabe" ,python-mccabe))) (native-inputs @@ -5943,45 +5936,18 @@ PEP8_PLUGIN('break_before_binary_operator'),")) "The modular source code checker: pep8, pyflakes and co") (description "Flake8 is a wrapper around PyFlakes, pep8 and python-mccabe.") - (properties `((python2-variant . ,(delay python2-flake8-3.5)))) + (properties `((python2-variant . ,(delay python2-flake8)))) (license license:expat))) -(define-public python2-flake8-3.5 - (let ((base (package-with-python2 (strip-python2-variant python-flake8-3.5)))) +(define-public python2-flake8 + (let ((base (package-with-python2 (strip-python2-variant python-flake8)))) (package (inherit base) (propagated-inputs `(("python2-configparser" ,python2-configparser) ("python2-enum34" ,python2-enum34) + ("python2-typing" ,python2-typing) ,@(package-propagated-inputs base)))))) -;; Version 3.5.0 has compatibility issues with Pyflakes 2.0, so we need -;; this newer version. Keep it as a separate variable for now to avoid -;; rebuilding "python-hypothesis"; this should be removed in the next -;; rebuild cycle. -(define-public python-flake8 - (package - (inherit python-flake8-3.5) - (version "3.6.0") - (source (origin - (method url-fetch) - (uri (pypi-uri "flake8" version)) - (sha256 - (base32 - "0w0nprx22rbvrrkbfx9v5jc5gskbm08g219l7r8wai8zfswgadba")))) - (arguments - (substitute-keyword-arguments (package-arguments python-flake8-3.5) - ((#:phases phases) - `(modify-phases ,phases - (delete 'delete-broken-test) - (delete 'fix-problem-with-pycodestyle))))) - (properties `((python2-variant . ,(delay python2-flake8)))))) - -(define-public python2-flake8 - (let ((base (package-with-python2 (strip-python2-variant python-flake8)))) - (package (inherit base) - (propagated-inputs - (package-propagated-inputs python2-flake8-3.5))))) - ;; python-hacking requires flake8 <2.6.0. (define-public python-flake8-2.5 (package @@ -6209,13 +6175,13 @@ add functionality and customization to your projects with their own plugins.") (define-public python-fonttools (package (name "python-fonttools") - (version "3.28.0") + (version "3.38.0") (source (origin (method url-fetch) (uri (pypi-uri "fonttools" version ".zip")) (sha256 (base32 - "0vsvjhidpb5kywpjgz1j3fywzkddxkb0afqai18qa3h6lqjyxwpb")))) + "12ripk3s7skgxr1bs9r8n13r94ym3s8iir7ivfixls9fa4dabmlh")))) (build-system python-build-system) (native-inputs `(("unzip" ,unzip) @@ -7327,6 +7293,8 @@ simulation, statistical modeling, machine learning and much more.") ("python-pytest" ,python-pytest) ("python-pytest-runner" ,python-pytest-runner))) (build-system python-build-system) + ;; XXX: Incompatible with Pytest 4: <https://github.com/chardet/chardet/issues/173>. + (arguments `(#:tests? #f)) (home-page "https://github.com/chardet/chardet") (synopsis "Universal encoding detector for Python 2 and 3") (description @@ -7552,13 +7520,13 @@ tables.") (define-public python-atomicwrites (package (name "python-atomicwrites") - (version "1.1.5") + (version "1.3.0") (source (origin (method url-fetch) (uri (pypi-uri "atomicwrites" version)) (sha256 (base32 - "11bm90fwm2avvf4f3ib8g925w7jr4m11vcsinn1bi6ns4bm32214")))) + "19ngcscdf3jsqmpcxn6zl5b6anmsajb6izp1smcd1n02midl9abm")))) (build-system python-build-system) (synopsis "Atomic file writes in Python") (description "Library for atomic file writes using platform dependent tools @@ -7891,11 +7859,14 @@ otherwise matches 3.2’s API.") (base32 "0rdjmmsab550kxsssdq49jcniz77zlkpw4pvi9hvib3lsskjmh4y")))) (build-system python-build-system) - (arguments `(#:python ,python-2 - ;; FIXME: Python 2.7.14 moved the test.support library, - ;; but our package has not yet been adjusted. Enable - ;; tests when the python2 package has been fixed. - #:tests? #f)) + (arguments + `(#:python ,python-2 + #:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "python" "test_futures.py") + #t))))) (home-page "https://github.com/agronholm/pythonfutures") (synopsis "Backport of the concurrent.futures package from Python 3.2") @@ -7987,14 +7958,14 @@ library as well as on the command line.") (define-public python-pluggy (package (name "python-pluggy") - (version "0.7.1") + (version "0.9.0") (source (origin (method url-fetch) (uri (pypi-uri "pluggy" version)) (sha256 (base32 - "1qbn70mksmr03hac6jgp6fiqc4l7859z8dchx2x950vhlij87swm")))) + "13yg2q0wgcb4l8lgdvcnzqa8db5lrw3nwn50lxjy1z5jkp7gkv0r")))) (build-system python-build-system) (native-inputs `(("python-setuptools-scm" ,python-setuptools-scm))) @@ -8155,6 +8126,14 @@ python-xdo for newer bindings.)") (base32 "1bi5gnr8r8dva06qpyx4kgjc6spm2k1y908183nbbaylggjzs0jf")))) (build-system python-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (add-after 'unpack 'patch-setup.cfg + (lambda _ + ;; Adjust setup.cfg for compatibility with Pytest 4. + (substitute* "setup.cfg" + (("\\[pytest\\]") "[tool:pytest]")) + #t))))) (propagated-inputs `(("python-markupsafe" ,python-markupsafe))) (native-inputs @@ -8677,13 +8656,13 @@ anymore.") (define-public python2-pathlib2 (package (name "python2-pathlib2") - (version "2.3.2") + (version "2.3.3") (source (origin (method url-fetch) (uri (pypi-uri "pathlib2" version)) (sha256 (base32 - "10yb0iv5x2hs631rcppkhbddx799d3h8pcwmkbh2a66ns3w71ccf")))) + "0hpp92vqqgcd8h92msm9slv161b1q160igjwnkf2ag6cx0c96695")))) (build-system python-build-system) ;; We only need the the Python 2 variant, since for Python 3 our minimum ;; version is 3.4 which already includes this package as part of the @@ -11374,13 +11353,13 @@ and bit flag values.") (define-public python-attrs (package (name "python-attrs") - (version "18.2.0") + (version "19.1.0") (source (origin (method url-fetch) (uri (pypi-uri "attrs" version)) (sha256 (base32 - "0s9ydh058wmmf5v391pym877x4ahxg45dw6a0w4c7s5wgpigdjqh")))) + "16g33zr5f449lqc5wgvzpknxryfzrfsxcr6kpgxwn7l5fkv71f7h")))) (build-system python-build-system) (arguments `(#:modules ((guix build utils) @@ -11422,15 +11401,6 @@ protocols.") (package (inherit python-attrs) (name "python-attrs-bootstrap") - ;; Keep this on a fixed version so python-attrs can be updated without - ;; triggering a mass-rebuild. FIXME: Update this in the next rebuild cycle. - (version "17.4.0") - (source (origin - (method url-fetch) - (uri (pypi-uri "attrs" version)) - (sha256 - (base32 - "1jafnn1kzd6qhxgprhx6y6ik1r5m2rilx25syzcmq03azp660y8w")))) (native-inputs `()) (arguments `(#:tests? #f)))) @@ -11730,17 +11700,14 @@ of @code{functools.lru_cache} from python 3.3.") (define-public python-configparser (package (name "python-configparser") - (version "3.5.0") + (version "3.7.1") (source (origin (method url-fetch) - (uri (string-append - "https://bitbucket.org/ambv/configparser/get/" - version ".tar.bz2")) - (file-name (string-append name "-" version ".tar.gz")) + (uri (pypi-uri "configparser" version)) (sha256 (base32 - "0waq40as14abwzbb321hfz4vr1fi363nscy32ga14qvfygrg96wa")))) + "0cnz213il9lhgda6x70fw7mfqr8da43s3wm343lwzhqx94mgmmav")))) (build-system python-build-system) (home-page "https://github.com/jaraco/configparser/") (synopsis "Backport of configparser from python 3.5") @@ -12117,14 +12084,14 @@ several utilities, as well as an API for building localization tools.") (define-public python-packaging (package (name "python-packaging") - (version "18.0") + (version "19.0") (source (origin (method url-fetch) (uri (pypi-uri "packaging" version)) (sha256 (base32 - "01wq9c53ix5rz6qg2c98gy8n4ff768rmanifm8m5jpjiaizj51h8")))) + "1brjhygq9dz6x1kdljivkjfldi3qf5rbkqgck1bpgv9qpv8ab60c")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases @@ -14002,41 +13969,40 @@ file system events on Linux.") (define-public python-more-itertools (package (name "python-more-itertools") - (version "4.3.0") + (version "6.0.0") (source (origin (method url-fetch) (uri (pypi-uri "more-itertools" version)) (sha256 (base32 - "17h3na0rdh8xq30w4b9pizgkdxmm51896bxw600x84jflg9vaxn4")))) + "1lfrx2ndnilla3a5lhpjc1wjgkplkxrhp5nyn6ys2l93jkil802r")))) (build-system python-build-system) - (arguments - `(,@(if (any (cute string-prefix? <> (or (%current-system) - (%current-target-system))) - '("armhf" "i686")) - '(#:phases - (modify-phases %standard-phases - ;; This is required for 32-bit hardware. - ;; TODO: Try to remove this when upgrading. - (add-after 'unpack 'patch-test - (lambda _ - (substitute* "more_itertools/tests/test_more.py" - (("10 \\*\\* 10") "9 ** 9")) - #t)))) - '()))) - (propagated-inputs - `(("python-six" ,python-six-bootstrap))) (home-page "https://github.com/erikrose/more-itertools") (synopsis "More routines for operating on iterables, beyond itertools") (description "Python's built-in @code{itertools} module implements a number of iterator building blocks inspired by constructs from APL, Haskell, and SML. @code{more-itertools} includes additional building blocks for working with iterables.") + (properties `((python2-variant . ,(delay python2-more-itertools)))) (license license:expat))) +;; The 5.x series are the last versions supporting Python 2.7. (define-public python2-more-itertools - (package-with-python2 python-more-itertools)) + (package + (inherit python-more-itertools) + (name "python2-more-itertools") + (version "5.0.0") + (source (origin + (method url-fetch) + (uri (pypi-uri "more-itertools" version)) + (sha256 + (base32 + "1r12cm6mcdwdzz7d47a6g4l437xsvapdlgyhqay3i2nrlv03da9q")))) + (arguments + `(#:python ,python2-minimal)) + (propagated-inputs + `(("python2-six" ,python2-six-bootstrap))))) (define-public python-latexcodec (package diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 57ced499cb..064b8dbf4c 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> -;;; Copyright © 2014, 2017 Eric Bavier <bavier@member.fsf.org> +;;; Copyright © 2014, 2017, 2019 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2014, 2015 Federico Beffa <beffa@fbengineering.ch> ;;; Copyright © 2015 Omar Radwan <toxemicsquire4@gmail.com> ;;; Copyright © 2015 Pierre-Antoine Rault <par@rigelk.eu> @@ -94,8 +94,7 @@ (define-public python-2.7 (package (name "python2") - (version "2.7.15") - (replacement python-2/fixed) + (version "2.7.16") (source (origin (method url-fetch) @@ -103,7 +102,7 @@ version "/Python-" version ".tar.xz")) (sha256 (base32 - "0x2mvz9dp11wj7p5ccvmk9s0hzjk2fa1m462p395l4r6bfnb3n92")) + "1mqfcqp5y8r0bfyr7ppl74n0lig45p9mc4b8adlcpvj74rhfy8pj")) (patches (search-patches "python-2.7-search-paths.patch" "python-2-deterministic-build-info.patch" "python-2.7-site-prefixes.patch" @@ -136,6 +135,9 @@ "--enable-unicode=ucs4" (string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %outputs "out") "/lib")) + ;; With no -j argument tests use all available cpus, so provide one. + #:make-flags + (list (format #f "TESTOPTS=-j~d" (parallel-job-count))) #:modules ((ice-9 ftw) (ice-9 match) (guix build utils) (guix build gnu-build-system)) @@ -204,16 +206,35 @@ (scandir testdir (match-lambda ((or "." "..") #f) + ("support" #f) (file (not - ;; FIXME: Add the 'support' directory - ;; in the next rebuild cycle, since it - ;; moved in 2.7.14. See also - ;; python2-futures below. (string-prefix? "test_support." file)))))) (call-with-output-file "__init__.py" (const #t)) #t))))))) + (add-after 'remove-tests 'rebuild-bytecode + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + ;; Disable hash randomization to ensure the generated .pycs + ;; are reproducible. + (setenv "PYTHONHASHSEED" "0") + (for-each + (lambda (opt) + (format #t "Compiling with optimization level: ~a\n" + (if (null? opt) "none" (car opt))) + (for-each (lambda (file) + (apply invoke + `(,(string-append out "/bin/python") + ,@opt + "-m" "compileall" + "-f" ; force rebuild + ;; Don't build lib2to3, because it contains Python 3 code. + "-x" "lib2to3/.*" + ,file))) + (find-files out "\\.py$"))) + (list '() '("-O") '("-OO"))) + #t))) (add-after 'install 'move-tk-inter (lambda* (#:key outputs #:allow-other-keys) ;; When Tkinter support is built move it to a separate output so @@ -266,16 +287,6 @@ data types.") ;; Current 2.x version. (define-public python-2 python-2.7) -(define python-2/fixed - (package - (inherit python-2) - (source (origin - (inherit (package-source python-2)) - (patches (append - (origin-patches (package-source python-2)) - (search-patches "python2-CVE-2018-14647.patch" - "python2-CVE-2018-1000802.patch"))))))) - (define-public python2-called-python ;; Both 2.x and 3.x used to be called "python". In commit ;; a7714d42de2c3082f3609d1e63c83d703fb39cf9 (March 2018), we renamed the @@ -288,21 +299,18 @@ data types.") (define-public python-3.7 (package (inherit python-2) (name "python") - (version "3.7.0") - (replacement python-3/fixed) + (version "3.7.2") (source (origin (method url-fetch) (uri (string-append "https://www.python.org/ftp/python/" version "/Python-" version ".tar.xz")) (patches (search-patches - "python-fix-tests.patch" "python-3-fix-tests.patch" "python-3-deterministic-build-info.patch" "python-3-search-paths.patch")) - (patch-flags '("-p0")) (sha256 (base32 - "0j9mic5c9lbd2b20wka7hily7szz740wy9ilfrczxap63rnrk0h3")) + "1fzi9d2gibh0wzwidyckzbywsxcsbckgsl05ryxlifxia77fhgyq")) (snippet '(begin (for-each delete-file @@ -326,10 +334,7 @@ data types.") (lambda _ (unsetenv "SOURCE_DATE_EPOCH") #t)) (add-after 'check 'reset-SOURCE_DATE_EPOCH (lambda _ (setenv "SOURCE_DATE_EPOCH" "1") #t)) - ;; FIXME: Without this phase we have close to 400 files that - ;; differ across different builds of this package. With this phase - ;; there are 44 files left that differ. - (add-after 'remove-tests 'rebuild-bytecode + (replace 'rebuild-bytecode (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) ;; Disable hash randomization to ensure the generated .pycs @@ -361,14 +366,6 @@ data types.") ;; Current 3.x version. (define-public python-3 python-3.7) -(define python-3/fixed - (package - (inherit python-3) - (source (origin - (inherit (package-source python-3)) - (patches (append (origin-patches (package-source python-3)) - (search-patches "python-CVE-2018-14647.patch"))))))) - ;; Current major version. (define-public python python-3) diff --git a/gnu/packages/readline.scm b/gnu/packages/readline.scm index 59fa8af8af..57d550d67f 100644 --- a/gnu/packages/readline.scm +++ b/gnu/packages/readline.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org> -;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; @@ -55,18 +55,15 @@ (define-public readline (package (name "readline") - (version (string-append "7.0." - (number->string (length %patch-series-7.0)))) + (version "8.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/readline/readline-" (version-major+minor version) ".tar.gz")) (sha256 (base32 - "0d13sg9ksf982rrrmv5mb6a2p4ys9rvg9r71d6il0vr8hmql63bm")) - (patches (append - %patch-series-7.0 - (search-patches "readline-link-ncurses.patch"))) + "0qg4924hf4hg0r0wbx2chswsr08734536fh5iagkd3a7f4czafg3")) + (patches (search-patches "readline-link-ncurses.patch")) (patch-flags '("-p0")))) (build-system gnu-build-system) (propagated-inputs `(("ncurses" ,ncurses))) @@ -101,6 +98,23 @@ comfortable for anyone.") (license gpl3+) (home-page "https://savannah.gnu.org/projects/readline/"))) +(define-public readline-7 + (package (inherit readline) + (name "readline") + (version (string-append "7.0." + (number->string (length %patch-series-7.0)))) + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/readline/readline-" + (version-major+minor version) ".tar.gz")) + (sha256 + (base32 + "0d13sg9ksf982rrrmv5mb6a2p4ys9rvg9r71d6il0vr8hmql63bm")) + (patches (append + %patch-series-7.0 + (search-patches "readline-link-ncurses.patch"))) + (patch-flags '("-p0")))))) + (define-public readline-6.2 (package (inherit readline) (version "6.2") diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index cb75005a13..83c132c4f7 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -400,7 +400,7 @@ test = { path = \"../libtest\" } (inputs `(("jemalloc" ,jemalloc-4.5.0) ("llvm" ,llvm-3.9.1) - ("openssl" ,openssl) + ("openssl" ,openssl-1.0) ("libssh2" ,libssh2) ; For "cargo" ("libcurl" ,curl))) ; For "cargo" @@ -409,10 +409,7 @@ test = { path = \"../libtest\" } ;; modules (see <https://bugs.gnu.org/31392>). (native-search-paths (list (search-path-specification - (variable "C_INCLUDE_PATH") - (files '("include"))) - (search-path-specification - (variable "CPLUS_INCLUDE_PATH") + (variable "CPATH") (files '("include"))) (search-path-specification (variable "LIBRARY_PATH") diff --git a/gnu/packages/scribus.scm b/gnu/packages/scribus.scm index 20795da275..5b770fd696 100644 --- a/gnu/packages/scribus.scm +++ b/gnu/packages/scribus.scm @@ -97,7 +97,9 @@ (file-name "scribus-poppler-0.70.patch") (sha256 (base32 - "0dw7ix3jaj0y1q97cmmqwb2qgdx760yhxx86wa8rnx0xhfi5x6qr")))))) + "0dw7ix3jaj0y1q97cmmqwb2qgdx760yhxx86wa8rnx0xhfi5x6qr")))) + + (search-patches "scribus-poppler-0.73.patch"))) (modules '((guix build utils))) (snippet '(begin diff --git a/gnu/packages/sqlite.scm b/gnu/packages/sqlite.scm index 05d7ce6b92..caa98c0861 100644 --- a/gnu/packages/sqlite.scm +++ b/gnu/packages/sqlite.scm @@ -46,8 +46,7 @@ (define-public sqlite (package (name "sqlite") - (replacement sqlite-3.26.0) - (version "3.24.0") + (version "3.27.1") (source (origin (method url-fetch) (uri (let ((numeric-version @@ -59,19 +58,21 @@ (map (cut string-pad <> 2 #\0) other-digits)) 6 #\0)))))) - (string-append "https://sqlite.org/2018/sqlite-autoconf-" + (string-append "https://sqlite.org/2019/sqlite-autoconf-" numeric-version ".tar.gz"))) (sha256 (base32 - "0jmprv2vpggzhy7ma4ynmv1jzn3pfiwzkld0kkg6hvgvqs44xlfr")))) + "1y7l225jm18fz6z3vyffrkl9k6qi964w1c5ri4giixizyy7jpaal")))) (build-system gnu-build-system) (inputs `(("readline" ,readline))) (arguments `(#:configure-flags - ;; Add -DSQLITE_SECURE_DELETE, -DSQLITE_ENABLE_UNLOCK_NOTIFY and - ;; -DSQLITE_ENABLE_DBSTAT_VTAB to CFLAGS. GNU Icecat will refuse - ;; to use the system SQLite unless these options are enabled. + ;; Add -DSQLITE_SECURE_DELETE, -DSQLITE_ENABLE_FTS3, + ;; -DSQLITE_ENABLE_UNLOCK_NOTIFY and -DSQLITE_ENABLE_DBSTAT_VTAB + ;; to CFLAGS. GNU Icecat will refuse to use the system SQLite + ;; unless these options are enabled. (list (string-append "CFLAGS=-O2 -DSQLITE_SECURE_DELETE " + "-DSQLITE_ENABLE_FTS3 " "-DSQLITE_ENABLE_UNLOCK_NOTIFY " "-DSQLITE_ENABLE_DBSTAT_VTAB")))) (home-page "https://www.sqlite.org/") @@ -83,26 +84,6 @@ widely deployed SQL database engine in the world. The source code for SQLite is in the public domain.") (license license:public-domain))) -(define-public sqlite-3.26.0 - (package (inherit sqlite) - (version "3.26.0") - (source (origin - (method url-fetch) - (uri (let ((numeric-version - (match (string-split version #\.) - ((first-digit other-digits ...) - (string-append first-digit - (string-pad-right - (string-concatenate - (map (cut string-pad <> 2 #\0) - other-digits)) - 6 #\0)))))) - (string-append "https://sqlite.org/2018/sqlite-autoconf-" - numeric-version ".tar.gz"))) - (sha256 - (base32 - "0pdzszb4sp73hl36siiv3p300jvfvbcdxi2rrmkwgs6inwznmajx")))))) - ;; This is used by Qt. (define-public sqlite-with-column-metadata (package/inherit sqlite diff --git a/gnu/packages/storage.scm b/gnu/packages/storage.scm index bd15fcc26c..0c25e03ffc 100644 --- a/gnu/packages/storage.scm +++ b/gnu/packages/storage.scm @@ -235,11 +235,6 @@ (("^add_ceph_test\\(osd-copy-from\\.sh.*$") "\n") (("^add_ceph_test\\(osd-fast-mark-down\\.sh.*$") "\n")) #t))) - (add-before 'configure 'gcc-workaround - (lambda _ - (unsetenv "C_INCLUDE_PATH") - (unsetenv "CPLUS_INCLUDE_PATH") - #t)) (add-before 'check 'set-check-environment (lambda _ ;; Run tests in parallel. @@ -287,8 +282,7 @@ (outputs '("out" "lib")) (native-inputs - `(("gcc" ,gcc-7) ;7 or later is required - ("gperf" ,gperf) + `(("gperf" ,gperf) ("pkg-config" ,pkg-config) ("python-cython" ,python-cython) ("python-sphinx" ,python-sphinx) diff --git a/gnu/packages/swig.scm b/gnu/packages/swig.scm index 61f6a8ccfe..b1b17fc68d 100644 --- a/gnu/packages/swig.scm +++ b/gnu/packages/swig.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> +;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -50,7 +51,14 @@ ;; Required since Perl 5.26.0's removal of the current ;; working directory from @INC. ;; TODO Try removing this for later versions of SWIG. - (lambda _ (setenv "PERL_USE_UNSAFE_INC" "1") #t))))) + (lambda _ (setenv "PERL_USE_UNSAFE_INC" "1") #t)) + (add-before 'configure 'workaround-gcc-bug + (lambda _ + ;; XXX: Don't add the -isystem flag, or GCCs #include_next + ;; won't be able to find <stdlib.h>. + (substitute* "configure" + (("-isystem ") "-I")) + #t))))) (native-inputs `(("boost" ,boost) ("pcre" ,pcre "bin"))) ;for 'pcre-config' (inputs `(;; Provide these to run the corresponding tests. diff --git a/gnu/packages/tcl.scm b/gnu/packages/tcl.scm index eac3297a32..69313b9bb6 100644 --- a/gnu/packages/tcl.scm +++ b/gnu/packages/tcl.scm @@ -40,14 +40,14 @@ (define-public tcl (package (name "tcl") - (version "8.6.8") + (version "8.6.9") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/tcl/Tcl/" version "/tcl" version "-src.tar.gz")) (sha256 (base32 - "0sprsg7wnraa4cbwgbcliylm6p0rspfymxn8ww02pr4ca70v0g64")))) + "0kjzj7mkzfnb7ksxanbibibfpciyvsh5ffdlhs0bmfc75kgd435d")))) (build-system gnu-build-system) (arguments '(#:phases (modify-phases %standard-phases @@ -135,14 +135,15 @@ X11 GUIs.") (define-public tk (package (name "tk") - (version "8.6.8") + (version "8.6.9.1") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/tcl/Tcl/" - version "/tk" version "-src.tar.gz")) + (version-prefix version 3) "/tk" + version "-src.tar.gz")) (sha256 (base32 - "0cvvznjwfn0i9vj9cw3wg8svx25ha34gg57m4xd1k5fyinhbrrs9")) + "1d7bfkxpacy33w5nahf73lkwxqpff44w1jplg7i2gmwgiaawvjwg")) (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 5b29937672..e42e910a78 100644 --- a/gnu/packages/tex.scm +++ b/gnu/packages/tex.scm @@ -200,6 +200,15 @@ (copy-file "texk/web2c/pdftexdir/pdftosrc-newpoppler.cc" "texk/web2c/pdftexdir/pdftosrc.cc") #t)) + (add-after 'use-code-for-new-poppler 'use-code-for-even-newer-poppler + (lambda _ + ;; Adjust for deprecated types in Poppler 0.73. + (substitute* (append + (find-files "texk/web2c/luatexdir/" "\\.(cc|w)$") + '("texk/web2c/pdftexdir/pdftosrc.cc")) + (("Guint") "unsigned int") + (("Guchar") "unsigned char")) + #t)) (add-after 'unpack 'disable-failing-test (lambda _ ;; FIXME: This test fails on 32-bit architectures since Glibc 2.28: diff --git a/gnu/packages/texinfo.scm b/gnu/packages/texinfo.scm index fa98bd56b8..befdd78551 100644 --- a/gnu/packages/texinfo.scm +++ b/gnu/packages/texinfo.scm @@ -32,15 +32,14 @@ (define-public texinfo (package (name "texinfo") - (version "6.5") + (version "6.6") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/texinfo/texinfo-" version ".tar.xz")) - (patches (search-patches "texinfo-perl-compat.patch")) (sha256 (base32 - "0qjzvbvnv9003xdrcpi3jp7y68j4hq2ciw9frh2hghh698zlnxvp")))) + "0rixv4c301djr0d0cnsxs8c1wjndi6bf9vi5axz6mwjkv80cmfcv")))) (build-system gnu-build-system) (inputs `(("ncurses" ,ncurses) ("perl" ,perl))) diff --git a/gnu/packages/time.scm b/gnu/packages/time.scm index 747e4cf080..d13f14b47e 100644 --- a/gnu/packages/time.scm +++ b/gnu/packages/time.scm @@ -92,14 +92,14 @@ to a file.") (define-public python-pytz (package (name "python-pytz") - (version "2018.5") + (version "2018.9") (source (origin (method url-fetch) - (uri (pypi-uri "pytz" version ".tar.gz")) + (uri (pypi-uri "pytz" version)) (sha256 (base32 - "0xzj5gkpdn2da8m6j47chlp6zrzcypv9m0fjv4236q3jw4fyzfgz")))) + "0k1pqnq3c4gvcspjxf3fschdjn71fk89i4wz801rxqh7f145xw6m")))) (build-system python-build-system) (home-page "http://pythonhosted.org/pytz") (synopsis "Python timezone library") @@ -145,17 +145,31 @@ Pendulum instances.") (define-public python-dateutil (package (name "python-dateutil") - (version "2.7.3") + (version "2.8.0") (source (origin (method url-fetch) (uri (pypi-uri "python-dateutil" version)) (sha256 (base32 - "1f7h54lg0w2ckch7592xpjkh8dg87k2br256h0iw49zn6bg02w72")))) + "17nsfhy4xdz1khrfxa61vd7pmvd5z0wa3zb6v4gb4kfnykv0b668")))) (build-system python-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (replace 'check + (lambda _ + ;; Delete tests that depend on "freezegun" to avoid a + ;; circular dependency. + (delete-file "dateutil/test/test_utils.py") + (delete-file "dateutil/test/test_rrule.py") + + ;; XXX: Fails to get timezone from /etc/localtime. + (delete-file "dateutil/test/test_tz.py") + + (invoke "pytest" "-vv")))))) (native-inputs - `(("python-setuptools-scm" ,python-setuptools-scm))) + `(("python-pytest" ,python-pytest) + ("python-setuptools-scm" ,python-setuptools-scm))) (propagated-inputs `(("python-six" ,python-six))) (home-page "https://dateutil.readthedocs.io/en/stable/") diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm index 9e3020be3f..263ca9b548 100644 --- a/gnu/packages/tls.scm +++ b/gnu/packages/tls.scm @@ -9,7 +9,7 @@ ;;; Copyright © 2016, 2017, 2018 ng0 <ng0@n0.is> ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> -;;; Copyright © 2017, 2018 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2017, 2018, 2019 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com> ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org> @@ -164,7 +164,7 @@ living in the same process.") (define-public gnutls (package (name "gnutls") - (version "3.6.5") + (version "3.6.6") (source (origin (method url-fetch) (uri @@ -176,16 +176,7 @@ living in the same process.") (patches (search-patches "gnutls-skip-trust-store-test.patch")) (sha256 (base32 - "0ddvg97dyrh8dkffv1mdc0knxx5my3qdbzv97s4a6jggmk9wwgh7")) - (modules '((guix build utils))) - (snippet - '(begin - ;; XXX: The generated configure script in GnuTLS 3.6.5 - ;; apparently does not know about Guile 2.2. - (substitute* "configure" - (("guile_versions_to_search=\"2\\.0 1\\.8\"") - "guile_versions_to_search=\"2.2 2.0 1.8\"")) - #t)))) + "19rcfgsfxb01cyz8jxmmgkjqc7y5s97amajzyknk1i1amywcm6mv")))) (build-system gnu-build-system) (arguments `(; Ensure we don't keep a reference to this buggy software. @@ -271,8 +262,7 @@ required structures.") (define-public openssl (package (name "openssl") - (replacement openssl/fixed) - (version "1.0.2p") + (version "1.1.1b") (source (origin (method url-fetch) (uri (list (string-append "https://www.openssl.org/source/openssl-" @@ -284,13 +274,12 @@ required structures.") "/openssl-" version ".tar.gz"))) (sha256 (base32 - "003xh9f898i56344vpvpxxxzmikivxig4xwlm7vbi7m8n43qxaah")) - (patches (search-patches "openssl-runpath.patch" - "openssl-c-rehash-in.patch")))) + "0jza8cmznnyiia43056dij1jdmz62dx17wsn0zxksh9h6817nmaw")) + (patches (search-patches "openssl-1.1-c-rehash-in.patch")))) (build-system gnu-build-system) (outputs '("out" - "doc" ;1.5MiB of man3 pages - "static")) ;6MiB of .a files + "doc" ;6.8 MiB of man3 pages and full HTML documentation + "static")) ;6.4 MiB of .a files (native-inputs `(("perl" ,perl))) (arguments `(#:disallowed-references (,perl) @@ -303,41 +292,27 @@ required structures.") #:disallowed-references ,(list (canonical-package perl)) #:phases (modify-phases %standard-phases - (add-before - 'configure 'patch-Makefile.org - (lambda* (#:key outputs #:allow-other-keys) - ;; The default MANDIR is some unusual place. Fix that. - (let ((out (assoc-ref outputs "out"))) - (patch-makefile-SHELL "Makefile.org") - (substitute* "Makefile.org" - (("^MANDIR[[:blank:]]*=.*$") - (string-append "MANDIR = " out "/share/man\n"))) - #t))) - (replace - 'configure - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (invoke "./config" - "shared" ;build shared libraries - "--libdir=lib" - - ;; The default for this catch-all directory is - ;; PREFIX/ssl. Change that to something more - ;; conventional. - (string-append "--openssldir=" out - "/share/openssl-" ,version) - - (string-append "--prefix=" out))))) - (add-after - 'install 'make-libraries-writable - (lambda* (#:key outputs #:allow-other-keys) - ;; Make libraries writable so that 'strip' does its job. - (let ((out (assoc-ref outputs "out"))) - (for-each (lambda (file) - (chmod file #o644)) - (find-files (string-append out "/lib") - "\\.so")) - #t))) + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (lib (string-append out "/lib"))) + ;; It's not a shebang so patch-source-shebangs misses it. + (substitute* "config" + (("/usr/bin/env") + (string-append (assoc-ref %build-inputs "coreutils") + "/bin/env"))) + (invoke "./config" + "shared" ;build shared libraries + "--libdir=lib" + + ;; The default for this catch-all directory is + ;; PREFIX/ssl. Change that to something more + ;; conventional. + (string-append "--openssldir=" out + "/share/openssl-" ,version) + + (string-append "--prefix=" out) + (string-append "-Wl,-rpath," lib))))) (add-after 'install 'move-static-libraries (lambda* (#:key outputs #:allow-other-keys) ;; Move static libraries to the "static" output. @@ -350,31 +325,20 @@ required structures.") (delete-file file)) (find-files lib "\\.a$")) #t))) - (add-after 'install 'move-man3-pages + (add-after 'install 'move-extra-documentation (lambda* (#:key outputs #:allow-other-keys) - ;; Move section 3 man pages to "doc". - (let* ((out (assoc-ref outputs "out")) - (man3 (string-append out "/share/man/man3")) - (doc (assoc-ref outputs "doc")) - (target (string-append doc "/share/man/man3"))) - (mkdir-p target) - (for-each (lambda (file) - (rename-file file - (string-append target "/" - (basename file)))) - (find-files man3)) - (delete-file-recursively man3) - #t))) - (add-before - 'patch-source-shebangs 'patch-tests - (lambda* (#:key inputs native-inputs #:allow-other-keys) - (let ((bash (assoc-ref (or native-inputs inputs) "bash"))) - (substitute* (find-files "test" ".*") - (("/bin/sh") - (string-append bash "/bin/sh")) - (("/bin/rm") - "rm")) - #t))) + ;; Move man3 pages and full HTML documentation to "doc". + (let* ((out (assoc-ref outputs "out")) + (man3 (string-append out "/share/man/man3")) + (html (string-append out "/share/doc/openssl")) + (doc (assoc-ref outputs "doc")) + (man-target (string-append doc "/share/man/man3")) + (html-target (string-append doc "/share/doc/openssl"))) + (copy-recursively man3 man-target) + (delete-file-recursively man3) + (copy-recursively html html-target) + (delete-file-recursively html) + #t))) (add-after 'install 'remove-miscellany (lambda* (#:key outputs #:allow-other-keys) @@ -400,81 +364,81 @@ required structures.") (license license:openssl) (home-page "https://www.openssl.org/"))) -(define-public openssl/fixed - (hidden-package - (package - (inherit openssl) - (source (origin - (inherit (package-source openssl)) - (patches (append (origin-patches (package-source openssl)) - (search-patches "openssl-CVE-2019-1559.patch")))))))) - -(define-public openssl-next +(define-public openssl-1.0 (package (inherit openssl) (name "openssl") - (version "1.1.1b") + (version "1.0.2r") (source (origin - (method url-fetch) - (uri (list (string-append "https://www.openssl.org/source/openssl-" - version ".tar.gz") - (string-append "ftp://ftp.openssl.org/source/" - "openssl-" version ".tar.gz") - (string-append "ftp://ftp.openssl.org/source/old/" - (string-trim-right version char-set:letter) - "/openssl-" version ".tar.gz"))) - (patches (search-patches "openssl-1.1-c-rehash-in.patch")) + (method url-fetch) + (uri (list (string-append "https://www.openssl.org/source/openssl-" + version ".tar.gz") + (string-append "ftp://ftp.openssl.org/source/" + "openssl-" version ".tar.gz") + (string-append "ftp://ftp.openssl.org/source/old/" + (string-trim-right version char-set:letter) + "/openssl-" version ".tar.gz"))) (sha256 (base32 - "0jza8cmznnyiia43056dij1jdmz62dx17wsn0zxksh9h6817nmaw")))) + "1mnh27zf6r1bhm5d9fxqq9slv2gz0d9z2ij9i679b0wapa5x0ldf")) + (patches (search-patches "openssl-runpath.patch" + "openssl-c-rehash-in.patch")))) (outputs '("out" - "doc" ; 6.8 MiB of man3 pages and full HTML documentation - "static")) ; 6.4 MiB of .a files + "doc" ;1.5MiB of man3 pages + "static")) ;6MiB of .a files (arguments (substitute-keyword-arguments (package-arguments openssl) ((#:phases phases) `(modify-phases ,phases - (delete 'patch-tests) ; These two phases are not needed by - (delete 'patch-Makefile.org) ; OpenSSL 1.1. - - ;; Override configure phase since -rpath is now a configure option. - (replace 'configure - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (lib (string-append out "/lib"))) - ;; It's not a shebang so patch-source-shebangs misses it. - (substitute* "config" - (("/usr/bin/env") - (string-append (assoc-ref %build-inputs "coreutils") - "/bin/env"))) - (invoke "./config" - "shared" ;build shared libraries - "--libdir=lib" - - ;; The default for this catch-all directory is - ;; PREFIX/ssl. Change that to something more - ;; conventional. - (string-append "--openssldir=" out - "/share/openssl-" ,version) - - (string-append "--prefix=" out) - (string-append "-Wl,-rpath," lib))))) - - (delete 'move-man3-pages) - (add-after 'install 'move-extra-documentation + (add-before 'patch-source-shebangs 'patch-tests + (lambda* (#:key inputs native-inputs #:allow-other-keys) + (let ((bash (assoc-ref (or native-inputs inputs) "bash"))) + (substitute* (find-files "test" ".*") + (("/bin/sh") + (string-append bash "/bin/sh")) + (("/bin/rm") + "rm")) + #t))) + (add-before 'configure 'patch-Makefile.org (lambda* (#:key outputs #:allow-other-keys) - ;; Move man3 pages and full HTML documentation to "doc". - (let* ((out (assoc-ref outputs "out")) - (man3 (string-append out "/share/man/man3")) - (html (string-append out "/share/doc/openssl")) - (doc (assoc-ref outputs "doc")) - (man-target (string-append doc "/share/man/man3")) - (html-target (string-append doc "/share/doc/openssl"))) - (copy-recursively man3 man-target) - (delete-file-recursively man3) - (copy-recursively html html-target) - (delete-file-recursively html) + ;; The default MANDIR is some unusual place. Fix that. + (let ((out (assoc-ref outputs "out"))) + (patch-makefile-SHELL "Makefile.org") + (substitute* "Makefile.org" + (("^MANDIR[[:blank:]]*=.*$") + (string-append "MANDIR = " out "/share/man\n"))) #t))) + (replace 'configure + ;; Override this phase because OpenSSL 1.0 does not understand -rpath. + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (invoke "./config" + "shared" ;build shared libraries + "--libdir=lib" + + ;; The default for this catch-all directory is + ;; PREFIX/ssl. Change that to something more + ;; conventional. + (string-append "--openssldir=" out + "/share/openssl-" ,version) + + (string-append "--prefix=" out))))) + (delete 'move-extra-documentation) + (add-after 'install 'move-man3-pages + (lambda* (#:key outputs #:allow-other-keys) + ;; Move section 3 man pages to "doc". + (let* ((out (assoc-ref outputs "out")) + (man3 (string-append out "/share/man/man3")) + (doc (assoc-ref outputs "doc")) + (target (string-append doc "/share/man/man3"))) + (mkdir-p target) + (for-each (lambda (file) + (rename-file file + (string-append target "/" + (basename file)))) + (find-files man3)) + (delete-file-recursively man3) + #t))) ;; XXX: Duplicate this phase to make sure 'version' evaluates ;; in the current scope and not the inherited one. (replace 'remove-miscellany diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 5c3c40d680..90b3a98bc1 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -5,7 +5,7 @@ ;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2015, 2016 Mathieu Lirzin <mthl@gnu.org> ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org> -;;; Copyright © 2014, 2016 Eric Bavier <bavier@member.fsf.org> +;;; Copyright © 2014, 2016, 2019 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2015, 2018 Kyle Meyer <kyle@kyleam.com> ;;; Copyright © 2015, 2017, 2018 Ricardo Wurmus <rekado@elephly.net> @@ -1387,6 +1387,15 @@ projects, from individuals to large-scale enterprise operations.") (patches (search-patches "rcs-5.9.4-noreturn.patch")))) (build-system gnu-build-system) (native-inputs `(("ed" ,ed))) + (arguments + `(#:phases (modify-phases %standard-phases + (add-before 'check 'disable-t810 + ;; See https://savannah.gnu.org/bugs/index.php?52288 + ;; Back-porting the fix is non-trivial, so disable for now. + (lambda _ + (substitute* "tests/Makefile" + ((" t810 \\\\\n") "")) + #t))))) (home-page "https://www.gnu.org/software/rcs/") (synopsis "Per-file local revision control system") (description @@ -1896,7 +1905,7 @@ repository\" with git-annex.") (inputs `(("openssl" ,openssl) ("zlib" ,zlib) - ("sqlite" ,sqlite-3.26.0))) + ("sqlite" ,sqlite))) (arguments `(#:configure-flags (list "--with-openssl=auto" "--disable-internal-sqlite") diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 16ab160d0b..c8d72bbeac 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -2558,14 +2558,14 @@ supported players in addition to this package.") (define-public handbrake (package (name "handbrake") - (version "1.1.2") + (version "1.2.0") (source (origin (method url-fetch) (uri (string-append "https://download.handbrake.fr/releases/" version "/HandBrake-" version "-source.tar.bz2")) (sha256 (base32 - "0bny0hwlr55g2c69rsamv0xvwmfh1s4a582b9vq20xv5ly84m6ms")) + "03clkknaq3mz84p85cvr21gsy9b8vv2g4vvyfz44hz8la253jfqi")) (modules '((guix build utils))) (snippet ;; Remove "contrib" and source not necessary for @@ -2579,11 +2579,13 @@ supported players in addition to this package.") ;; which would lead to fetching and building of these ;; libraries. Use our own instead. (("MODULES \\+= contrib") "# MODULES += contrib")) - #t)))) + #t)) + (patches (search-patches "handbrake-opt-in-nvenc.patch")))) (build-system glib-or-gtk-build-system) (native-inputs `(("automake" ,automake) ;gui subpackage must be bootstrapped ("autoconf" ,autoconf) + ("cmake" ,cmake) ;TODO: could probably strip check from make/configure.py ("curl" ,curl) ;not actually used, but tested for ("intltool" ,intltool) ("libtool" ,libtool) @@ -2616,12 +2618,14 @@ supported players in addition to this package.") ("libvpx" ,libvpx) ("libxml2" ,libxml2) ("libx264" ,libx264) + ("speex" ,speex) ("x265" ,x265) ("zlib" ,zlib))) (arguments `(#:tests? #f ;tests require Ruby and claim to be unsupported #:configure-flags - (list (string-append "CPPFLAGS=-I" + (list "--disable-gtk-update-checks" + (string-append "CPPFLAGS=-I" (assoc-ref %build-inputs "libxml2") "/include/libxml2") "LDFLAGS=-lx265") diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm index b6af572778..5c0e14826b 100644 --- a/gnu/packages/web-browsers.scm +++ b/gnu/packages/web-browsers.scm @@ -383,10 +383,7 @@ driven and does not detract you from your daily work.") (arguments `(#:tests? #f ; no tests #:make-flags (list "gtk-webkit" - (string-append - "CC=" - (assoc-ref %build-inputs "gcc-7") - "/bin/gcc") + "CC=gcc" (string-append "PREFIX=" %output)) #:phases (modify-phases %standard-phases @@ -397,10 +394,9 @@ driven and does not detract you from your daily work.") (inputs `(("glib-networking" ,glib-networking) ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) - ("webkitgtk" ,webkitgtk-2.24))) + ("webkitgtk" ,webkitgtk))) (native-inputs - `(("gcc-7" ,gcc-7) ; needed because webkitgtk-2.22 is compiled with gcc-7 - ("pkg-config" ,pkg-config))) + `(("pkg-config" ,pkg-config))) (home-page "https://next.atlas.engineer") (synopsis "Infinitely extensible web-browser (user interface only)") (description "Next is a keyboard-oriented, extensible web-browser diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index f6701dca30..1749ad0b71 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -6267,7 +6267,7 @@ derivation by David Revoy from the original MonsterID by Andreas Gohr.") (define-public nghttp2 (package (name "nghttp2") - (version "1.35.1") + (version "1.37.0") (source (origin (method url-fetch) @@ -6276,13 +6276,12 @@ derivation by David Revoy from the original MonsterID by Andreas Gohr.") name "-" version ".tar.xz")) (sha256 (base32 - "0fi6qg2w82636wixwkqy7bclpgxslmvg82r431hs8h6aqc4mnzwv")))) + "1ds7ilgdsq1dykp285cxrl17xsgkxp0a2413wcgvkx0p9cb0n2da")))) (build-system gnu-build-system) (outputs (list "out" "lib")) ; only libnghttp2 (native-inputs `(("pkg-config" ,pkg-config) - ("gcc" ,gcc-7) ; 1.35.0 requires GCC6 or later ;; Required by tests. ("cunit" ,cunit) @@ -6314,9 +6313,6 @@ derivation by David Revoy from the original MonsterID by Andreas Gohr.") (("@prefix@") (assoc-ref outputs "lib"))) #t)) - (add-before 'configure 'work-around-bug-30756 - (lambda _ - (for-each unsetenv '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH")) #t)) (add-before 'check 'set-timezone-directory (lambda* (#:key inputs #:allow-other-keys) (setenv "TZDIR" (string-append (assoc-ref inputs "tzdata") diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm index 14c374dd3e..c05366fb5b 100644 --- a/gnu/packages/webkit.scm +++ b/gnu/packages/webkit.scm @@ -59,14 +59,14 @@ (define-public webkitgtk (package (name "webkitgtk") - (version "2.20.5") + (version "2.24.0") (source (origin (method url-fetch) (uri (string-append "https://www.webkitgtk.org/releases/" name "-" version ".tar.xz")) (sha256 (base32 - "147r7an41920zl4x9srdva7fxvw2znjin5ldjkhay1cndv9gih0m")))) + "01s446lmjk7y8il4snjm32vpxws2rp4hmxrwm2swx0p47x8d2jif")))) (build-system cmake-build-system) (outputs '("out" "doc")) (arguments @@ -147,6 +147,7 @@ ("libxslt" ,libxslt) ("libxt" ,libxt) ("mesa" ,mesa) + ("openjpeg" ,openjpeg) ("sqlite" ,sqlite))) (home-page "https://www.webkitgtk.org/") (synopsis "Web content engine for GTK+") @@ -160,36 +161,3 @@ HTML/CSS applications to full-fledged web browsers.") license:lgpl2.1+ license:bsd-2 license:bsd-3)))) - -;; This version of webkitgtk needs to be kept separate, because it requires a -;; newer version of GCC than our default compiler, and this causes problems -;; when linked with C++ libraries built using our default compiler. For now, -;; we use this newer webkitgtk only for selected packages, e.g. epiphany. -(define-public webkitgtk-2.24 - (package/inherit webkitgtk - (name "webkitgtk") - (version "2.24.0") - (source (origin - (method url-fetch) - (uri (string-append "https://www.webkitgtk.org/releases/" - name "-" version ".tar.xz")) - (sha256 - (base32 - "01s446lmjk7y8il4snjm32vpxws2rp4hmxrwm2swx0p47x8d2jif")))) - (native-inputs - `(("gcc" ,gcc-7) ; webkitgtk-2.22 requires gcc-6 or newer - ,@(package-native-inputs webkitgtk))) - (inputs - `(("openjpeg" ,openjpeg) - ,@(package-inputs webkitgtk))) - (arguments - (substitute-keyword-arguments (package-arguments webkitgtk) - ((#:phases phases) - `(modify-phases ,phases - (add-before 'configure 'work-around-gcc-7-include-path-issue - ;; FIXME: Work around a problem with gcc-7 includes (see - ;; <https://bugs.gnu.org/30756>). - (lambda _ - (unsetenv "C_INCLUDE_PATH") - (unsetenv "CPLUS_INCLUDE_PATH") - #t)))))))) diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm index c034b50927..c0333fbc82 100644 --- a/gnu/packages/xdisorg.scm +++ b/gnu/packages/xdisorg.scm @@ -353,7 +353,7 @@ following the mouse.") (define-public pixman (package (name "pixman") - (version "0.36.0") + (version "0.38.0") (source (origin (method url-fetch) (uri (string-append @@ -361,7 +361,7 @@ following the mouse.") version ".tar.gz")) (sha256 (base32 - "1blzrx50ssdv0pn56hcv2v0zw0vrjwj1sx22pkgjls1p9n6rr88w")) + "1a0ci5ni7wngh59m0m00wzvhrc39aqj54yj88msw5msn07pjnnd7")) (patches (search-patches "pixman-CVE-2016-5296.patch")))) (build-system gnu-build-system) (inputs diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm index 9f0959d78f..cfc17e752c 100644 --- a/gnu/packages/xml.scm +++ b/gnu/packages/xml.scm @@ -112,14 +112,14 @@ hierarchical form with variable field lengths.") (define-public libxml2 (package (name "libxml2") - (version "2.9.8") + (version "2.9.9") (source (origin (method url-fetch) (uri (string-append "ftp://xmlsoft.org/libxml2/libxml2-" version ".tar.gz")) (sha256 (base32 - "0ci7is75bwqqw2p32vxvrk6ds51ik7qgx73m920rakv5jlayax0b")))) + "0wd881jzvqayx0ihzba29jl80k06xj9ywp16kxacdqs3064p1ywl")))) (build-system gnu-build-system) (outputs '("out" "static")) (arguments @@ -134,6 +134,12 @@ hierarchical form with variable field lengths.") (rename-file ar (string-append dst "/" (basename ar)))) (find-files src "\\.a$")) + + ;; Remove reference to the static library from the .la + ;; file such that Libtool does the right thing when both + ;; the shared and static variants are available. + (substitute* (string-append src "/libxml2.la") + (("^old_library='libxml2.a'") "old_library=''")) #t)))))) (home-page "http://www.xmlsoft.org/") (synopsis "C parser for XML") @@ -188,14 +194,14 @@ project (but it is usable outside of the Gnome platform).") (define-public libxslt (package (name "libxslt") - (version "1.1.32") + (version "1.1.33") (source (origin (method url-fetch) (uri (string-append "ftp://xmlsoft.org/libxslt/libxslt-" version ".tar.gz")) (sha256 (base32 - "0q2l6m56iv3ysxgm2walhg4c9wp7q183jb328687i9zlp85csvjj")) + "1j1q1swnsy8jgi9x7mclvkrqhfgn09886gdlr9wzk7a08i8n0dlf")) (patches (search-patches "libxslt-generated-ids.patch")))) (build-system gnu-build-system) (home-page "http://xmlsoft.org/XSLT/index.html") diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm index 411e4b04ab..994679089f 100644 --- a/gnu/packages/xorg.scm +++ b/gnu/packages/xorg.scm @@ -1209,7 +1209,7 @@ hit when running single-threaded.") (define-public libsm (package (name "libsm") - (version "1.2.2") + (version "1.2.3") (source (origin (method url-fetch) @@ -1219,7 +1219,7 @@ hit when running single-threaded.") ".tar.bz2")) (sha256 (base32 - "1gc7wavgs435g9qkp9jw4lhmaiq6ip9llv49f054ad6ryp4sib0b")))) + "1fwwfq9v3sqmpzpscymswxn76xhxnysa24pfim1mcpxhvjcl89id")))) (build-system gnu-build-system) (propagated-inputs `(("libice" ,libice))) ; SMlib.h includes ICElib.h @@ -1297,7 +1297,7 @@ with the Cygwin XWin server when running X11 in a rootless mode.") (define-public libxdmcp (package (name "libxdmcp") - (version "1.1.2") + (version "1.1.3") (source (origin (method url-fetch) @@ -1307,7 +1307,7 @@ with the Cygwin XWin server when running X11 in a rootless mode.") ".tar.bz2")) (sha256 (base32 - "1qp4yhxbfnpj34swa0fj635kkihdkwaiw7kf55cg5zqqg630kzl1")))) + "0ab53h0rkq721ihk5hi469x500f3pgbkm1wy01yf24x5m923nli0")))) (build-system gnu-build-system) (inputs `(("libbsd" ,libbsd) @@ -1323,7 +1323,7 @@ with the Cygwin XWin server when running X11 in a rootless mode.") (define-public libxft (package (name "libxft") - (version "2.3.2") + (version "2.3.3") (source (origin (method url-fetch) @@ -1333,7 +1333,7 @@ with the Cygwin XWin server when running X11 in a rootless mode.") ".tar.bz2")) (sha256 (base32 - "0k6wzi5rzs0d0n338ms8n8lfyhq914hw4yl2j7553wqxfqjci8zm")))) + "05lja9s54090xwh31r0bqms4v3pimng5xr09g2rdnafx2vk6hp12")))) (build-system gnu-build-system) (propagated-inputs ;; xft.pc refers to all these. @@ -1382,7 +1382,7 @@ configuration files.") (define-public libxmu (package (name "libxmu") - (version "1.1.2") + (version "1.1.3") (source (origin (method url-fetch) @@ -1392,7 +1392,7 @@ configuration files.") ".tar.bz2")) (sha256 (base32 - "02wx6jw7i0q5qwx87yf94fsn3h0xpz1k7dz1nkwfwm1j71ydqvkm")))) + "0cdpqnx6258i4l6qhphvkdiyspysg0i5caqjy820kp63wwjk4d4w")))) (build-system gnu-build-system) (inputs `(("libxt" ,libxt) @@ -2392,6 +2392,18 @@ XC-APPGROUP, XTEST.") (base32 "0xca343ff12wh6nsq76r0nbsfrm8dypjrzm4fqz9vv9v8i8kfrp1")))) (build-system gnu-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (add-before 'configure 'pedantry + (lambda _ + ;; XXX: libevdev includes kernel headers, which causes this + ;; compile test to fail with: + ;; ...-headers-4.14.67/include/asm-generic/posix_types.h:88:14: + ;;error: ISO C90 does not support ‘long long’ [-Werror=long-long] + (substitute* "test/Makefile.in" + (("-pedantic -Werror -std=c89") + "-pedantic -Werror -std=c99")) + #t))))) (native-inputs `(("python" ,python))) (home-page "https://www.freedesktop.org/wiki/Software/libevdev/") (synopsis "Wrapper library for evdev devices") @@ -4314,7 +4326,7 @@ a display running X server.") (define-public xtrans (package (name "xtrans") - (version "1.3.5") + (version "1.4.0") (source (origin (method url-fetch) @@ -4324,7 +4336,7 @@ a display running X server.") ".tar.bz2")) (sha256 (base32 - "00c3ph17acnsch3gbdmx33b9ifjnl5w7vx8hrmic1r1cjcv3pgdd")))) + "0wyp0yc6gi72hwc3kjmvm3vkj9p6s407cb6dxx37jh9wb68l8z1p")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) (home-page "https://www.x.org/wiki/") @@ -4513,7 +4525,7 @@ cannot be adequately worked around on the client side of the wire.") (define-public libxdamage (package (name "libxdamage") - (version "1.1.4") + (version "1.1.5") (source (origin (method url-fetch) @@ -4523,7 +4535,7 @@ cannot be adequately worked around on the client side of the wire.") ".tar.bz2")) (sha256 (base32 - "1bamagq7g6s0d23l8rb3nppj8ifqj05f7z9bhbs4fdg8az3ffgvw")))) + "0igaw2akjf712y3rv7lx473jigxmcv9rs9y8sbrvbhya8f30cd5p")))) (build-system gnu-build-system) (propagated-inputs ;; These are all in the Requires or Requires.private field of xdamage.pc @@ -4541,7 +4553,7 @@ cannot be adequately worked around on the client side of the wire.") (define-public libxext (package (name "libxext") - (version "1.3.3") + (version "1.3.4") (source (origin (method url-fetch) @@ -4551,7 +4563,7 @@ cannot be adequately worked around on the client side of the wire.") ".tar.bz2")) (sha256 (base32 - "0dbfn5bznnrhqzvkrcmw4c44yvvpwdcsrvzxf4rk27r36b9x865m")))) + "0azqxllcsfxc3ilhz6kwc6x7m8wc477p59ir9p0yrsldx766zbar")))) (build-system gnu-build-system) (propagated-inputs `(("xorgproto" ,xorgproto))) @@ -4815,7 +4827,7 @@ common definitions and porting layer.") (define-public libxau (package (name "libxau") - (version "1.0.8") + (version "1.0.9") (source (origin (method url-fetch) @@ -4825,7 +4837,7 @@ common definitions and porting layer.") ".tar.bz2")) (sha256 (base32 - "1wm4pv12f36cwzhldpp7vy3lhm3xdcnp4f184xkxsp7b18r7gm7x")))) + "1v3krc6x0zliaa66qq1bf9j60x5nqfy68v8axaiglxpnvgqcpy6c")))) (build-system gnu-build-system) (propagated-inputs `(("xorgproto" ,xorgproto))) @@ -4941,7 +4953,7 @@ new API's in libXft, or the legacy API's in libX11.") (define-public libxrandr (package (name "libxrandr") - (version "1.5.1") + (version "1.5.2") (source (origin (method url-fetch) @@ -4951,7 +4963,7 @@ new API's in libXft, or the legacy API's in libX11.") ".tar.bz2")) (sha256 (base32 - "06pmphx8lp3iywqnh88fvbfb0d8xgkx0qpvan49akpja1vxfgy8z")))) + "08z0mqywrm7ij8bxlfrx0d2wy6kladdmkva1nw5k6qix82z0xsla")))) (build-system gnu-build-system) (propagated-inputs ;; In accordance with xrandr.pc. @@ -5231,7 +5243,7 @@ draggable titlebars and borders.") (define-public libx11 (package (name "libx11") - (version "1.6.6") + (version "1.6.7") (source (origin (method url-fetch) @@ -5241,7 +5253,7 @@ draggable titlebars and borders.") ".tar.bz2")) (sha256 (base32 - "0ks1mxlda7nxfmffihi15ljsn50q8dknl33i2xag8xzc80fiizk5")))) + "0j0k5bjz4kd7rx6z09n5ggxbzbi84wf78xx25ikx6jmsxwq9w3li")))) (build-system gnu-build-system) (outputs '("out" "doc")) ;8 MiB of man pages + XML diff --git a/guix/build-system/cmake.scm b/guix/build-system/cmake.scm index ee116c5a4c..ca88fadddf 100644 --- a/guix/build-system/cmake.scm +++ b/guix/build-system/cmake.scm @@ -48,7 +48,7 @@ ;; Do not use `@' to avoid introducing circular dependencies. (let ((module (resolve-interface '(gnu packages cmake)))) - (module-ref module 'cmake))) + (module-ref module 'cmake-minimal))) (define* (lower name #:key source inputs native-inputs outputs system target diff --git a/guix/build/gnu-build-system.scm b/guix/build/gnu-build-system.scm index e5f3197b0a..afa1886ecd 100644 --- a/guix/build/gnu-build-system.scm +++ b/guix/build/gnu-build-system.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2018 Mark H Weaver <mhw@netris.org> ;;; ;;; This file is part of GNU Guix. @@ -735,23 +735,64 @@ which cannot be found~%" (define* (install-license-files #:key outputs (license-file-regexp %license-file-regexp) + out-of-source? #:allow-other-keys) "Install license files matching LICENSE-FILE-REGEXP to 'share/doc'." + (define (find-source-directory package) + ;; For an out-of-source build, guess the source directory location + ;; relative to the current directory. Return #f on failure. + (match (scandir ".." + (lambda (file) + (and (not (member file '("." ".." "build"))) + (file-is-directory? + (string-append "../" file))))) + (() ;hmm, no source + #f) + ((source) ;only one other file + (string-append "../" source)) + ((directories ...) ;pick the most likely one + ;; This happens for example with libstdc++, which lives within the GCC + ;; source tree. + (any (lambda (directory) + (and (string-prefix? package directory) + (string-append "../" directory))) + directories)))) + + (define (copy-to-directories directories sub-directory) + (lambda (file) + (for-each (if (file-is-directory? file) + (cut copy-recursively file <>) + (cut install-file file <>)) + (map (cut string-append <> "/" sub-directory) + directories)))) + (let* ((regexp (make-regexp license-file-regexp)) (out (or (assoc-ref outputs "out") (match outputs (((_ . output) _ ...) output)))) (package (strip-store-file-name out)) - (directory (string-append out "/share/doc/" package)) - (files (scandir "." (lambda (file) - (regexp-exec regexp file))))) - (format #t "installing ~a license files~%" (length files)) - (for-each (lambda (file) - (if (file-is-directory? file) - (copy-recursively file directory) - (install-file file directory))) - files) + (outputs (match outputs + (((_ . outputs) ...) + outputs))) + (source (if out-of-source? + (find-source-directory + (package-name->name+version package)) + ".")) + (files (and source + (scandir source + (lambda (file) + (regexp-exec regexp file)))))) + (if files + (begin + (format #t "installing ~a license files from '~a'~%" + (length files) source) + (for-each (copy-to-directories outputs + (string-append "share/doc/" + package)) + (map (cut string-append source "/" <>) files))) + (format (current-error-port) + "failed to find license files~%")) #t)) (define %standard-phases @@ -784,34 +825,37 @@ in order. Return #t if all the PHASES succeeded, #f otherwise." (+ (time-second diff) (/ (time-nanosecond diff) 1e9)))) - (setvbuf (current-output-port) _IOLBF) - (setvbuf (current-error-port) _IOLBF) + (setvbuf (current-output-port) 'line) + (setvbuf (current-error-port) 'line) ;; Encoding/decoding errors shouldn't be silent. (fluid-set! %default-port-conversion-strategy 'error) - ;; The trick is to #:allow-other-keys everywhere, so that each procedure in - ;; PHASES can pick the keyword arguments it's interested in. - (every (match-lambda - ((name . proc) - (let ((start (current-time time-monotonic))) - (format #t "starting phase `~a'~%" name) - (let ((result (apply proc args)) - (end (current-time time-monotonic))) - (format #t "phase `~a' ~:[failed~;succeeded~] after ~,1f seconds~%" - name result - (elapsed-time end start)) - - ;; Issue a warning unless the result is #t. - (unless (eqv? result #t) - (format (current-error-port) "\ + (guard (c ((invoke-error? c) + (report-invoke-error c) + (exit 1))) + ;; The trick is to #:allow-other-keys everywhere, so that each procedure in + ;; PHASES can pick the keyword arguments it's interested in. + (every (match-lambda + ((name . proc) + (let ((start (current-time time-monotonic))) + (format #t "starting phase `~a'~%" name) + (let ((result (apply proc args)) + (end (current-time time-monotonic))) + (format #t "phase `~a' ~:[failed~;succeeded~] after ~,1f seconds~%" + name result + (elapsed-time end start)) + + ;; Issue a warning unless the result is #t. + (unless (eqv? result #t) + (format (current-error-port) "\ ## WARNING: phase `~a' returned `~s'. Return values other than #t ## are deprecated. Please migrate this package so that its phase ## procedures report errors by raising an exception, and otherwise ## always return #t.~%" - name result)) + name result)) - ;; Dump the environment variables as a shell script, for handy debugging. - (system "export > $NIX_BUILD_TOP/environment-variables") - result)))) - phases)) + ;; Dump the environment variables as a shell script, for handy debugging. + (system "export > $NIX_BUILD_TOP/environment-variables") + result)))) + phases))) diff --git a/guix/build/make-bootstrap.scm b/guix/build/make-bootstrap.scm index 48799f7e90..e5ef1d6d2b 100644 --- a/guix/build/make-bootstrap.scm +++ b/guix/build/make-bootstrap.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015, 2017 Manolis Fragkiskos Ragkousis <manolis837@gmail.com> ;;; Copyright © 2015, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -23,7 +24,8 @@ #:use-module (srfi srfi-19) #:use-module (srfi srfi-26) #:use-module (guix build utils) - #:export (make-stripped-libc)) + #:export (copy-linux-headers + make-stripped-libc)) ;; Commentary: ;; @@ -31,6 +33,53 @@ ;; ;; Code: +(define (copy-linux-headers output kernel-headers) + "Copy to OUTPUT the subset of KERNEL-HEADERS that is needed when producing a +bootstrap libc." + + (let* ((incdir (string-append output "/include"))) + (mkdir-p incdir) + + ;; Copy some of the Linux-Libre headers that glibc headers + ;; refer to. + (mkdir (string-append incdir "/linux")) + (for-each (lambda (file) + (install-file (pk 'src (string-append kernel-headers "/include/linux/" file)) + (pk 'dest (string-append incdir "/linux")))) + '( + "a.out.h" ; for 2.2.5 + "atalk.h" ; for 2.2.5 + "errno.h" + "falloc.h" + "if_addr.h" ; for 2.16.0 + "if_ether.h" ; for 2.2.5 + "if_link.h" ; for 2.16.0 + "ioctl.h" + "kernel.h" + "limits.h" + "neighbour.h" ; for 2.16.0 + "netlink.h" ; for 2.16.0 + "param.h" + "prctl.h" ; for 2.16.0 + "posix_types.h" + "rtnetlink.h" ; for 2.16.0 + "socket.h" + "stddef.h" + "swab.h" ; for 2.2.5 + "sysctl.h" + "sysinfo.h" ; for 2.2.5 + "types.h" + "version.h" ; for 2.2.5 + )) + + (copy-recursively (string-append kernel-headers "/include/asm") + (string-append incdir "/asm")) + (copy-recursively (string-append kernel-headers "/include/asm-generic") + (string-append incdir "/asm-generic")) + (copy-recursively (string-append kernel-headers "/include/linux/byteorder") + (string-append incdir "/linux/byteorder")) + #t)) + (define (make-stripped-libc output libc kernel-headers) "Copy to OUTPUT the subset of LIBC and KERNEL-HEADERS that is needed when producing a bootstrap libc." @@ -43,25 +92,10 @@ when producing a bootstrap libc." (string-append incdir "/mach")) #t)) - (define (copy-linux-headers output kernel-headers) + (define (copy-libc+linux-headers output kernel-headers) (let* ((incdir (string-append output "/include"))) (copy-recursively (string-append libc "/include") incdir) - - ;; Copy some of the Linux-Libre headers that glibc headers - ;; refer to. - (mkdir (string-append incdir "/linux")) - (for-each (lambda (file) - (install-file (string-append kernel-headers "/include/linux/" file) - (string-append incdir "/linux"))) - '("limits.h" "errno.h" "socket.h" "kernel.h" - "sysctl.h" "param.h" "ioctl.h" "types.h" - "posix_types.h" "stddef.h" "falloc.h")) - - (copy-recursively (string-append kernel-headers "/include/asm") - (string-append incdir "/asm")) - (copy-recursively (string-append kernel-headers "/include/asm-generic") - (string-append incdir "/asm-generic")) - #t)) + (copy-linux-headers output kernel-headers))) (define %libc-object-files-rx "^(crt.*|ld.*|lib(c|m|dl|rt|pthread|nsl|\ util).*\\.so(\\..*)?|lib(machuser|hurduser).so.*|(libc(rt|)|libpthread)\ @@ -80,6 +114,6 @@ _nonshared\\.a)$") (if (directory-exists? (string-append kernel-headers "/include/mach")) (copy-mach-headers output kernel-headers) - (copy-linux-headers output kernel-headers))) + (copy-libc+linux-headers output kernel-headers))) diff --git a/guix/build/python-build-system.scm b/guix/build/python-build-system.scm index 5bb0ba49d5..73b554c766 100644 --- a/guix/build/python-build-system.scm +++ b/guix/build/python-build-system.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2015, 2018 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -186,11 +187,9 @@ when running checks after installing the package." (define* (wrap #:key inputs outputs #:allow-other-keys) (define (list-of-files dir) - (map (cut string-append dir "/" <>) - (or (scandir dir (lambda (f) - (let ((s (stat (string-append dir "/" f)))) - (eq? 'regular (stat:type s))))) - '()))) + (find-files dir (lambda (file stat) + (and (eq? 'regular (stat:type stat)) + (not (wrapper? file)))))) (define bindirs (append-map (match-lambda diff --git a/guix/build/utils.scm b/guix/build/utils.scm index 5fe3286843..b7cd748d81 100644 --- a/guix/build/utils.scm +++ b/guix/build/utils.scm @@ -1,8 +1,10 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org> ;;; Copyright © 2015, 2018 Mark H Weaver <mhw@netris.org> +;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net> +;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -87,7 +89,13 @@ patch-/usr/bin/file fold-port-matches remove-store-references + wrapper? wrap-program + wrap-script + + wrap-error? + wrap-error-program + wrap-error-type invoke invoke-error? @@ -96,10 +104,31 @@ invoke-error-exit-status invoke-error-term-signal invoke-error-stop-signal + report-invoke-error locale-category->string)) + +;;; +;;; Guile 2.0 compatibility later. +;;; + +;; The bootstrap Guile is Guile 2.0, so provide a compatibility layer. +(cond-expand + ((and guile-2 (not guile-2.2)) + (define (setvbuf port mode . rest) + (apply (@ (guile) setvbuf) port + (match mode + ('line _IOLBF) + ('block _IOFBF) + ('none _IONBF) + (_ mode)) ;an _IO* integer + rest)) + + (module-replace! (current-module) '(setvbuf))) + (else #f)) + ;;; ;;; Directories. ;;; @@ -600,6 +629,11 @@ Where every <*-phase-name> is an expression evaluating to a symbol, and ((_ phases (add-after old-phase-name new-phase-name new-phase)) (alist-cons-after old-phase-name new-phase-name new-phase phases)))) + +;;; +;;; Program invocation. +;;; + (define-condition-type &invoke-error &error invoke-error? (program invoke-error-program) @@ -621,6 +655,17 @@ if the exit code is non-zero; otherwise return #t." (stop-signal (status:stop-sig code)))))) #t)) +(define* (report-invoke-error c #:optional (port (current-error-port))) + "Report to PORT about C, an '&invoke-error' condition, in a human-friendly +way." + (format port "command~{ ~s~} failed with ~:[signal~;status~] ~a~%" + (cons (invoke-error-program c) + (invoke-error-arguments c)) + (invoke-error-exit-status c) + (or (invoke-error-exit-status c) + (invoke-error-term-signal c) + (invoke-error-stop-signal c)))) + ;;; ;;; Text substitution (aka. sed). @@ -987,8 +1032,8 @@ known as `nuke-refs' in Nixpkgs." ;; We cannot use `regexp-exec' here because it cannot deal with ;; strings containing NUL characters. (format #t "removing store references from `~a'...~%" file) - (setvbuf in _IOFBF 65536) - (setvbuf out _IOFBF 65536) + (setvbuf in 'block 65536) + (setvbuf out 'block 65536) (fold-port-matches (lambda (match result) (put-bytevector out (string->utf8 store)) (put-u8 out (char->integer #\/)) @@ -1003,6 +1048,18 @@ known as `nuke-refs' in Nixpkgs." (put-u8 out (char->integer char)) result)))))) +(define-condition-type &wrap-error &error + wrap-error? + (program wrap-error-program) + (type wrap-error-type)) + +(define (wrapper? prog) + "Return #t if PROG is a wrapper as produced by 'wrap-program'." + (and (file-exists? prog) + (let ((base (basename prog))) + (and (string-prefix? "." base) + (string-suffix? "-real" base))))) + (define* (wrap-program prog #:rest vars) "Make a wrapper for PROG. VARS should look like this: @@ -1100,6 +1157,120 @@ with definitions for VARS." (chmod prog-tmp #o755) (rename-file prog-tmp prog)))) +(define wrap-script + (let ((interpreter-regex + (make-regexp + (string-append "^#! ?(/[^ ]+/bin/(" + (string-join '("python[^ ]*" + "Rscript" + "perl" + "ruby" + "bash" + "sh") "|") + "))( ?.*)"))) + (coding-line-regex + (make-regexp + ".*#.*coding[=:][[:space:]]*([-a-zA-Z_0-9.]+)"))) + (lambda* (prog #:key (guile (which "guile")) #:rest vars) + "Wrap the script PROG such that VARS are set first. The format of VARS +is the same as in the WRAP-PROGRAM procedure. This procedure differs from +WRAP-PROGRAM in that it does not create a separate shell script. Instead, +PROG is modified directly by prepending a Guile script, which is interpreted +as a comment in the script's language. + +Special encoding comments as supported by Python are recreated on the second +line. + +Note that this procedure can only be used once per file as Guile scripts are +not supported." + (define update-env + (match-lambda + ((var sep '= rest) + `(setenv ,var ,(string-join rest sep))) + ((var sep 'prefix rest) + `(let ((current (getenv ,var))) + (setenv ,var (if current + (string-append ,(string-join rest sep) + ,sep current) + ,(string-join rest sep))))) + ((var sep 'suffix rest) + `(let ((current (getenv ,var))) + (setenv ,var (if current + (string-append current ,sep + ,(string-join rest sep)) + ,(string-join rest sep))))) + ((var '= rest) + `(setenv ,var ,(string-join rest ":"))) + ((var 'prefix rest) + `(let ((current (getenv ,var))) + (setenv ,var (if current + (string-append ,(string-join rest ":") + ":" current) + ,(string-join rest ":"))))) + ((var 'suffix rest) + `(let ((current (getenv ,var))) + (setenv ,var (if current + (string-append current ":" + ,(string-join rest ":")) + ,(string-join rest ":"))))))) + (let-values (((interpreter args coding-line) + (call-with-ascii-input-file prog + (lambda (p) + (let ((first-match + (false-if-exception + (regexp-exec interpreter-regex (read-line p))))) + (values (and first-match (match:substring first-match 1)) + (and first-match (match:substring first-match 3)) + (false-if-exception + (and=> (regexp-exec coding-line-regex (read-line p)) + (lambda (m) (match:substring m 0)))))))))) + (if interpreter + (let* ((header (format #f "\ +#!~a --no-auto-compile +#!#; ~a +#\\-~s +#\\-~s +" + guile + (or coding-line "Guix wrapper") + (cons 'begin (map update-env + (match vars + ((#:guile _ . vars) vars) + (_ vars)))) + `(let ((cl (command-line))) + (apply execl ,interpreter + (car cl) + (cons (car cl) + (append + ',(string-split args #\space) + cl)))))) + (template (string-append prog ".XXXXXX")) + (out (mkstemp! template)) + (st (stat prog)) + (mode (stat:mode st))) + (with-throw-handler #t + (lambda () + (call-with-ascii-input-file prog + (lambda (p) + (format out header) + (dump-port p out) + (close out) + (chmod template mode) + (rename-file template prog) + (set-file-time prog st)))) + (lambda (key . args) + (format (current-error-port) + "wrap-script: ~a: error: ~a ~s~%" + prog key args) + (false-if-exception (delete-file template)) + (raise (condition + (&wrap-error (program prog) + (type key)))) + #f))) + (raise (condition + (&wrap-error (program prog) + (type 'no-interpreter-found))))))))) + ;;; ;;; Locales. diff --git a/guix/packages.scm b/guix/packages.scm index d20a2562c3..a961dc3973 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -646,7 +646,9 @@ specifies modules in scope when evaluating SNIPPET." #:graft? #f #:system system #:deprecation-warnings #t ;to avoid a rebuild - #:guile-for-build guile-for-build)))) + #:guile-for-build guile-for-build + #:properties `((type . origin) + (patches . ,(length patches))))))) (define (transitive-inputs inputs) "Return the closure of INPUTS when considering the 'propagated-inputs' diff --git a/guix/scripts/pack.scm b/guix/scripts/pack.scm index e5502ef9ca..d237ae6e94 100644 --- a/guix/scripts/pack.scm +++ b/guix/scripts/pack.scm @@ -459,9 +459,9 @@ the image." "Return the C compiler that uses the bootstrap toolchain. This is used only by '--bootstrap', for testing purposes." (define bootstrap-toolchain - (list (first (assoc-ref %bootstrap-inputs "gcc")) - (first (assoc-ref %bootstrap-inputs "binutils")) - (first (assoc-ref %bootstrap-inputs "libc")))) + (list (first (assoc-ref (%bootstrap-inputs) "gcc")) + (first (assoc-ref (%bootstrap-inputs) "binutils")) + (first (assoc-ref (%bootstrap-inputs) "libc")))) (c-compiler bootstrap-toolchain #:guile %bootstrap-guile)) diff --git a/tests/build-utils.scm b/tests/build-utils.scm index 46fe8ea2c0..5678bb6a22 100644 --- a/tests/build-utils.scm +++ b/tests/build-utils.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2015, 2016, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -144,4 +145,105 @@ (invoke/quiet "sh" "-c" "echo This is another error. >&2 ; false") #f)) +(let ((script-contents "\ +#!/anything/cabbage-bash-1.2.3/bin/sh + +echo hello world")) + + (test-equal "wrap-script, simple case" + (string-append + (format #f "\ +#!GUILE --no-auto-compile +#!#; Guix wrapper +#\\-~s +#\\-~s +" + '(begin (let ((current (getenv "GUIX_FOO"))) + (setenv "GUIX_FOO" + (if current + (string-append "/some/path:/some/other/path" + ":" current) + "/some/path:/some/other/path")))) + '(let ((cl (command-line))) + (apply execl "/anything/cabbage-bash-1.2.3/bin/sh" + (car cl) + (cons (car cl) + (append '("") cl))))) + script-contents) + (call-with-temporary-directory + (lambda (directory) + (let ((script-file-name (string-append directory "/foo"))) + (call-with-output-file script-file-name + (lambda (port) + (format port script-contents))) + (chmod script-file-name #o777) + + (mock ((guix build utils) which (const "GUILE")) + (wrap-script script-file-name + `("GUIX_FOO" prefix ("/some/path" + "/some/other/path")))) + (let ((str (call-with-input-file script-file-name get-string-all))) + (with-directory-excursion directory + (delete-file "foo")) + str)))))) + +(let ((script-contents "\ +#!/anything/cabbage-bash-1.2.3/bin/python3 -and -args +# vim:fileencoding=utf-8 +print('hello world')")) + + (test-equal "wrap-script, with encoding declaration" + (string-append + (format #f "\ +#!MYGUILE --no-auto-compile +#!#; # vim:fileencoding=utf-8 +#\\-~s +#\\-~s +" + '(begin (let ((current (getenv "GUIX_FOO"))) + (setenv "GUIX_FOO" + (if current + (string-append "/some/path:/some/other/path" + ":" current) + "/some/path:/some/other/path")))) + `(let ((cl (command-line))) + (apply execl "/anything/cabbage-bash-1.2.3/bin/python3" + (car cl) + (cons (car cl) + (append '("" "-and" "-args") cl))))) + script-contents) + (call-with-temporary-directory + (lambda (directory) + (let ((script-file-name (string-append directory "/foo"))) + (call-with-output-file script-file-name + (lambda (port) + (format port script-contents))) + (chmod script-file-name #o777) + + (wrap-script script-file-name + #:guile "MYGUILE" + `("GUIX_FOO" prefix ("/some/path" + "/some/other/path"))) + (let ((str (call-with-input-file script-file-name get-string-all))) + (with-directory-excursion directory + (delete-file "foo")) + str)))))) + +(test-assert "wrap-script, raises condition" + (call-with-temporary-directory + (lambda (directory) + (let ((script-file-name (string-append directory "/foo"))) + (call-with-output-file script-file-name + (lambda (port) + (format port "This is not a script"))) + (chmod script-file-name #o777) + (catch 'srfi-34 + (lambda () + (wrap-script script-file-name + #:guile "MYGUILE" + `("GUIX_FOO" prefix ("/some/path" + "/some/other/path")))) + (lambda (type obj) + (wrap-error? obj))))))) + (test-end) diff --git a/tests/builders.scm b/tests/builders.scm index 8b8ef013e7..b2d8a7c6b2 100644 --- a/tests/builders.scm +++ b/tests/builders.scm @@ -28,7 +28,8 @@ #:use-module (gcrypt hash) #:use-module (guix tests) #:use-module ((guix packages) - #:select (package-derivation package-native-search-paths)) + #:select (package? + package-derivation package-native-search-paths)) #:use-module (gnu packages bootstrap) #:use-module (ice-9 match) #:use-module (srfi srfi-1) @@ -39,7 +40,7 @@ (define %store (open-connection-for-tests)) -(define %bootstrap-inputs +(define (%bootstrap-inputs) ;; Use the bootstrap inputs so it doesn't take ages to run these tests. ;; This still involves building Make, Diffutils, and Findutils. ;; XXX: We're relying on the higher-level `package-derivations' here. @@ -47,14 +48,18 @@ (map (match-lambda ((name package) (list name (package-derivation %store package)))) - (@@ (gnu packages commencement) %boot0-inputs)))) + (filter + (compose package? cadr) + ((@@ (gnu packages commencement) %boot0-inputs)))))) -(define %bootstrap-search-paths +(define (%bootstrap-search-paths) ;; Search path specifications that go with %BOOTSTRAP-INPUTS. (append-map (match-lambda - ((name package _ ...) - (package-native-search-paths package))) - (@@ (gnu packages commencement) %boot0-inputs))) + ((name package _ ...) + (package-native-search-paths package))) + (filter + (compose package? cadr) + ((@@ (gnu packages commencement) %boot0-inputs))))) (define url-fetch* (store-lower url-fetch)) @@ -104,9 +109,9 @@ #:guile %bootstrap-guile)) (build (gnu-build %store "hello-2.8" `(("source" ,tarball) - ,@%bootstrap-inputs) + ,@(%bootstrap-inputs)) #:guile %bootstrap-guile - #:search-paths %bootstrap-search-paths)) + #:search-paths (%bootstrap-search-paths))) (out (derivation->output-path build))) (and (build-derivations %store (list (pk 'hello-drv build))) (valid-path? %store out) diff --git a/tests/graph.scm b/tests/graph.scm index c4c5096226..b7732ec709 100644 --- a/tests/graph.scm +++ b/tests/graph.scm @@ -153,9 +153,9 @@ edges." (match nodes (((labels names) ...) names)))) - (match %bootstrap-inputs + (match (%bootstrap-inputs) (((labels packages) ...) - (map package-full-name packages)))))))) + (map package-full-name (filter package? packages))))))))) (test-assert "bag DAG, including origins" (let-values (((backend nodes+edges) (make-recording-backend))) diff --git a/tests/packages.scm b/tests/packages.scm index 613b2f1221..af1f76e36d 100644 --- a/tests/packages.scm +++ b/tests/packages.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -36,6 +37,7 @@ #:use-module (guix build-system) #:use-module (guix build-system trivial) #:use-module (guix build-system gnu) + #:use-module (guix memoization) #:use-module (guix profiles) #:use-module (guix scripts package) #:use-module (gnu packages) @@ -336,10 +338,25 @@ ;; Here GNU-BUILD-SYSTEM adds implicit inputs that build only on ;; %SUPPORTED-SYSTEMS. Thus the others must be ignored. (let ((p (dummy-package "foo" + (build-system gnu-build-system) + (supported-systems + `("does-not-exist" "foobar" ,@%supported-systems))))) + (invalidate-memoization! package-transitive-supported-systems) + (parameterize ((%current-system "armhf-linux")) ; a traditionally-bootstrapped architecture + (package-transitive-supported-systems p)))) + +(test-equal "package-transitive-supported-systems: reduced binary seed, implicit inputs" + '("x86_64-linux" "i686-linux") + + ;; Here GNU-BUILD-SYSTEM adds implicit inputs that build only on + ;; %SUPPORTED-SYSTEMS. Thus the others must be ignored. + (let ((p (dummy-package "foo" (build-system gnu-build-system) (supported-systems `("does-not-exist" "foobar" ,@%supported-systems))))) - (package-transitive-supported-systems p))) + (invalidate-memoization! package-transitive-supported-systems) + (parameterize ((%current-system "x86_64-linux")) + (package-transitive-supported-systems p)))) (test-assert "supported-package?" (let ((p (dummy-package "foo" diff --git a/tests/union.scm b/tests/union.scm index 5a6a4033fc..091895ff8e 100644 --- a/tests/union.scm +++ b/tests/union.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2014, 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -31,6 +32,9 @@ #:use-module (rnrs io ports) #:use-module (ice-9 match)) +(define %bootstrap-inputs + (@@ (gnu packages commencement) %bootstrap-inputs+toolchain)) + ;; Exercise the (guix build union) module. (define %store @@ -94,8 +98,9 @@ `(,name ,(package-derivation %store package)))) ;; Purposefully leave duplicate entries. - (append %bootstrap-inputs - (take %bootstrap-inputs 3)))) + (filter (compose package? cadr) + (append (%bootstrap-inputs) + (take (%bootstrap-inputs) 3))))) (builder `(begin (use-modules (guix build union)) (union-build (assoc-ref %outputs "out") |