[PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes.

  • Done
  • quality assurance status badge
Details
7 participants
  • Thiago Jung Bauermann
  • John Kehayias
  • Leo Famulari
  • Ludovic Courtès
  • Mathieu Othacehe
  • Maxim Cournoyer
  • Mathieu Othacehe
Owner
unassigned
Submitted by
Maxim Cournoyer
Severity
normal
Blocked by
M
M
Maxim Cournoyer wrote on 3 Sep 2021 17:29
(address . guix-patches@gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
20210903152903.22385-1-maxim.cournoyer@gmail.com
Hello,

This series hasten the Rust bootstrap chain by about half (from about 8 to 4
hours) and fixes other things reported on the core-updates-frozen branch.
It's a world-rebuilding series (mostly due to the fix to the source repacking
code), so we might as well combine it with other world-rebuild changes that
were being put off.

Maxim Cournoyer (8):
guix: packages: Fix repacking of plain tarballs.
aux-files: sitecustomize: Cleanup and add explanatory comments.
gnu: glade3: Remove sitecustomize.py workaround.
gnu: rust: Bootstrap rust from 1.39.0 and optimize build time.
gnu: rust: Add rust 1.54 and move all non-bootstrapping logic to it.
gnu: Build all Rust packages using the latest rustc.
gnu: mozjs-78: Update to 78.13.0.
gnu: fontconfig: Add a search path for XDG_DATA_DIRS.

gnu/local.mk | 2 +-
.../aux-files/python/sitecustomize.py | 28 +-
gnu/packages/crates-io.scm | 29 +-
gnu/packages/fontutils.scm | 28 +-
gnu/packages/gnome.scm | 17 +-
gnu/packages/gnuzilla.scm | 8 +-
.../patches/rust-reproducible-builds.patch | 25 -
gnu/packages/patches/rustc-1.39.0-src.patch | 99 +++
gnu/packages/rust-apps.scm | 12 +-
gnu/packages/rust.scm | 574 ++++++++----------
gnu/packages/shells.scm | 3 +-
gnu/packages/syndication.scm | 1 -
guix/packages.scm | 8 +-
13 files changed, 405 insertions(+), 429 deletions(-)
delete mode 100644 gnu/packages/patches/rust-reproducible-builds.patch
create mode 100644 gnu/packages/patches/rustc-1.39.0-src.patch

--
2.33.0
M
M
Maxim Cournoyer wrote on 3 Sep 2021 17:31
[PATCH core-updates-frozen 1/8] guix: packages: Fix repacking of plain tarballs.
(address . 50358@debbugs.gnu.org)
20210903153116.22517-1-maxim.cournoyer@gmail.com

* guix/packages.scm (patch-and-repack): Test for a tarball using tarball? and
move the plain file copy to the else clause.

Reported-by: Mathieu Othacehe <othacehe@gnu.org>
---
guix/packages.scm | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)

Toggle diff (21 lines)
diff --git a/guix/packages.scm b/guix/packages.scm
index 2349bb4340..f0dd1d43d2 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -836,10 +836,10 @@ specifies modules in scope when evaluating SNIPPET."
((file-is-directory? #+source)
(copy-recursively directory #$output
#:log (%make-void-port "w")))
- ((not #+comp)
- (copy-file file #$output))
- (else
- (repack directory #$output)))))))
+ ((or #+comp (tarball? #+source))
+ (repack directory #$output))
+ (else ;single uncompressed file
+ (copy-file file #$output)))))))
(let ((name (if (or (checkout? original-file-name)
(not (compressor original-file-name)))
--
2.33.0
M
M
Maxim Cournoyer wrote on 3 Sep 2021 17:31
[PATCH core-updates-frozen 2/8] aux-files: sitecustomize: Cleanup and add explanatory comments.
(address . 50358@debbugs.gnu.org)
20210903153116.22517-2-maxim.cournoyer@gmail.com

* gnu/packages/aux-files/python/sitecustomize.py: Add a comment explaining the
general idea, and use sys.prefix instead of sys.executable.

(major_minor): Use the unpacking operator (*) to provide the arguments.
(site_packages_prefix): Use os.path.join to form the path.
(python_site): Likewise. Use sys.prefix instead of sys.executable.
(all_sites_raw): Split on os.path.pathsep.
(sys.path): Directly splice the result in the list.

Suggested-by: Hartmut Goebel <h.goebel@crazy-compilers.com>
Reported-by: Mathieu Othacehe <othacehe@gnu.org>
Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
---
.../aux-files/python/sitecustomize.py | 28 ++++++++++++++-----
1 file changed, 21 insertions(+), 7 deletions(-)

Toggle diff (49 lines)
diff --git a/gnu/packages/aux-files/python/sitecustomize.py b/gnu/packages/aux-files/python/sitecustomize.py
index 65d3c7d554..71e328b9ac 100644
--- a/gnu/packages/aux-files/python/sitecustomize.py
+++ b/gnu/packages/aux-files/python/sitecustomize.py
@@ -20,13 +20,26 @@
import os
import sys
-python_root = os.path.realpath(sys.executable).split('/bin/')[0]
-major_minor = '{}.{}'.format(sys.version_info[0], sys.version_info[1])
-site_packages_prefix = 'lib/python' + major_minor + '/site-packages'
-python_site = python_root + '/' + site_packages_prefix
+# Commentary:
+#
+# Site-specific customization for Guix.
+#
+# The program below honors the GUIX_PYTHONPATH environment variable to
+# discover Python packages. File names appearing in this variable that match
+# a predefined versioned installation prefix are added to the sys.path. To be
+# considered, a Python package must be installed under the
+# 'lib/pythonX.Y/site-packages' directory, where X and Y are the major and
+# minor version numbers of the Python interpreter.
+#
+# Code:
+
+major_minor = '{}.{}'.format(*sys.version_info)
+site_packages_prefix = os.path.join(
+ 'lib', 'python' + major_minor, 'site-packages')
+python_site = os.path.join(sys.prefix, site_packages_prefix)
try:
- all_sites_raw = os.environ['GUIX_PYTHONPATH'].split(':')
+ all_sites_raw = os.environ['GUIX_PYTHONPATH'].split(os.path.pathsep)
except KeyError:
all_sites_raw = []
# Normalize paths, otherwise a trailing slash would cause it to not match.
@@ -35,7 +48,8 @@ matching_sites = [p for p in all_sites_norm
if p.endswith(site_packages_prefix)]
# Insert sites matching the current version into sys.path, right before
-# Python's own site.
+# Python's own site. This way, the user can override the libraries provided
+# by Python itself.
sys_path_absolute = [os.path.realpath(p) for p in sys.path]
index = sys_path_absolute.index(python_site)
-sys.path = sys.path[:index] + matching_sites + sys.path[index:]
+sys.path[index:index] = matching_sites
--
2.33.0
M
M
Maxim Cournoyer wrote on 3 Sep 2021 17:31
[PATCH core-updates-frozen 3/8] gnu: glade3: Remove sitecustomize.py workaround.
(address . 50358@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
20210903153116.22517-3-maxim.cournoyer@gmail.com
The issue has since been resolved.

* gnu/packages/gnome.scm (glade3)[phases]{fix-tests}: Delete phase.
---
gnu/packages/gnome.scm | 15 ++++-----------
1 file changed, 4 insertions(+), 11 deletions(-)

Toggle diff (39 lines)
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index e0e9c47458..cae6e1aa0b 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -3199,28 +3199,21 @@ API add-ons to make GTK+ widgets OpenGL-capable.")
(lambda _
(substitute* "meson_post_install.py"
(("gtk-update-icon-cache") "true"))))
- ;; XXX: Remove it once this issue is fixed:
- ;; https://issues.guix.gnu.org/50105.
- (add-after 'unpack 'fix-tests
- (lambda _
- (substitute* "tests/meson.build"
- (("\\['modules") "#['modules"))))
(add-before 'configure 'fix-docbook
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "man/meson.build"
- (("http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl")
+ (("http://docbook.sourceforge.net/release/xsl/\
+current/manpages/docbook.xsl")
(string-append (assoc-ref inputs "docbook-xsl")
"/xml/xsl/docbook-xsl-"
,(package-version docbook-xsl)
- "/manpages/docbook.xsl")))
- #t))
+ "/manpages/docbook.xsl")))))
(add-before 'check 'pre-check
(lambda _
(setenv "HOME" "/tmp")
;; Tests require a running X server.
(system "Xvfb :1 &")
- (setenv "DISPLAY" ":1")
- #t)))))
+ (setenv "DISPLAY" ":1"))))))
(inputs
`(("gtk+" ,gtk+)
("libxml2" ,libxml2)))
--
2.33.0
M
M
Maxim Cournoyer wrote on 3 Sep 2021 17:31
[PATCH core-updates-frozen 5/8] gnu: rust: Add rust 1.54 and move all non-bootstrapping logic to it.
(address . 50358@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
20210903153116.22517-5-maxim.cournoyer@gmail.com
* gnu/packages/rust.scm (rust-1.44): Do not replace LLVM version, for
simplicity. It used to be required at this point because LLVM 7 was no longer
supported for rust-1.44, but we're now using LLVM 9.
(rust-1.46): Move all additional phases, doc output to rust-1.54.
(rust-1.53, rust-1.54): New variables.
(rust-1.54): Adjust snippet field.
(rust): Set default Rust to the latest version, 1.54.0.
[native-inputs]: Use the latest GDB.
---
gnu/packages/rust.scm | 167 +++++++++++++++++++++---------------------
1 file changed, 83 insertions(+), 84 deletions(-)

Toggle diff (208 lines)
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 1a819abf32..36c9b4d012 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -540,15 +540,11 @@ safety and thread safety guarantees.")
(rust-bootstrapped-package
rust-1.42 "1.43.0" "18akhk0wz1my6y9vhardriy2ysc482z0fnjdcgs9gy59kmnarxkm"))
-;; This version needs llvm >= 8.0 and NOT 11
+;; This version requires llvm <= 11.
(define-public rust-1.44
- (let ((base-rust (rust-bootstrapped-package
- rust-1.43 "1.44.1"
- "0ww4z2v3gxgn3zddqzwqya1gln04p91ykbrflnpdbmcd575n8bky")))
- (package
- (inherit base-rust)
- (inputs
- (alist-replace "llvm" (list llvm-10) (package-inputs base-rust))))))
+ (rust-bootstrapped-package
+ rust-1.43 "1.44.1"
+ "0ww4z2v3gxgn3zddqzwqya1gln04p91ykbrflnpdbmcd575n8bky"))
(define-public rust-1.45
(let ((base-rust (rust-bootstrapped-package
@@ -567,53 +563,8 @@ safety and thread safety guarantees.")
"linker.env(\"LC_ALL\", \"en_US.UTF-8\");")))))))))))
(define-public rust-1.46
- (let ((base-rust (rust-bootstrapped-package
- rust-1.45 "1.46.0"
- "0a17jby2pd050s24cy4dfc0gzvgcl585v3vvyfilniyvjrqknsid")))
- (package
- (inherit base-rust)
- (outputs (cons "rustfmt" (package-outputs base-rust)))
- (arguments
- (substitute-keyword-arguments (package-arguments base-rust)
- ((#:phases phases)
- `(modify-phases ,phases
- (replace 'build
- ;; Phase overridden to also build rustfmt.
- (lambda* (#:key parallel-build? #:allow-other-keys)
- (let ((job-spec (string-append
- "-j" (if parallel-build?
- (number->string (parallel-job-count))
- "1"))))
- (invoke "./x.py" job-spec "build"
- "library/std" ;rustc
- "src/tools/cargo"
- "src/tools/rustfmt"))))
- (replace 'check
- ;; Phase overridden to also test rustfmt.
- (lambda* (#:key tests? parallel-build? #:allow-other-keys)
- (when tests?
- (let ((job-spec (string-append
- "-j" (if parallel-build?
- (number->string (parallel-job-count))
- "1"))))
- (invoke "./x.py" job-spec "test" "-vv"
- "library/std"
- "src/tools/cargo"
- "src/tools/rustfmt")))))
- (replace 'install
- ;; Phase overridden to also install rustfmt.
- (lambda* (#:key outputs #:allow-other-keys)
- (invoke "./x.py" "install")
- (substitute* "config.toml"
- ;; Adjust the prefix to the 'cargo' output.
- (("prefix = \"[^\"]*\"")
- (format #f "prefix = ~s" (assoc-ref outputs "cargo"))))
- (invoke "./x.py" "install" "cargo")
- (substitute* "config.toml"
- ;; Adjust the prefix to the 'rustfmt' output.
- (("prefix = \"[^\"]*\"")
- (format #f "prefix = ~s" (assoc-ref outputs "rustfmt"))))
- (invoke "./x.py" "install" "rustfmt"))))))))))
+ (rust-bootstrapped-package
+ rust-1.45 "1.46.0" "0a17jby2pd050s24cy4dfc0gzvgcl585v3vvyfilniyvjrqknsid"))
(define-public rust-1.47
(let ((base-rust (rust-bootstrapped-package
@@ -640,12 +591,44 @@ safety and thread safety guarantees.")
rust-1.47 "1.48.0" "0fz4gbb5hp5qalrl9lcl8yw4kk7ai7wx511jb28nypbxninkwxhf"))
(define-public rust-1.49
+ (rust-bootstrapped-package
+ rust-1.48 "1.49.0" "0yf7kll517398dgqsr7m3gldzj0iwsp3ggzxrayckpqzvylfy2mm"))
+
+(define-public rust-1.50
+ (rust-bootstrapped-package
+ rust-1.49 "1.50.0" "0pjs7j62maiyvkmhp9zrxl528g2n0fphp4rq6ap7aqdv0a6qz5wm"))
+
+(define-public rust-1.51
+ (rust-bootstrapped-package
+ rust-1.50 "1.51.0" "0ixqkqglv3isxbvl4ldr4byrkx692wghsz3fasy1pn5kr2prnsvs"))
+
+;;; The LLVM requiriment has been bumped to version 10 in Rust 1.52. Use the
+;;; latest available.
+(define-public rust-1.52
(let ((base-rust (rust-bootstrapped-package
- rust-1.48 "1.49.0"
- "0yf7kll517398dgqsr7m3gldzj0iwsp3ggzxrayckpqzvylfy2mm")))
+ rust-1.51 "1.52.1"
+ "165zs3xzp9dravybwslqs1qhn35agp6wacmzpymqg3qfdni26vrs")))
+ (package
+ (inherit base-rust)
+ (inputs (alist-replace "llvm" (list llvm-12)
+ (package-inputs base-rust))))))
+
+(define-public rust-1.53
+ (rust-bootstrapped-package
+ rust-1.52 "1.53.0" "1f95p259dfp5ca118bg107rj3rqwlswy65dxn3hg8sqgl4wwmxsw"))
+
+(define-public rust-1.54
+ (let ((base-rust
+ (rust-bootstrapped-package
+ rust-1.53 "1.54.0"
+ "0xk9dhfff16caambmwij67zgshd8v9djw6ha0fnnanlv7rii31dc")))
(package
(inherit base-rust)
- (outputs (cons "doc" (package-outputs base-rust)))
+ (source
+ (origin
+ (inherit (package-source base-rust))
+ (snippet '(delete-file-recursively "src/llvm-project"))))
+ (outputs (cons "rustfmt" (package-outputs base-rust)))
(arguments
(substitute-keyword-arguments (package-arguments base-rust)
((#:tests? _ #f)
@@ -743,35 +726,51 @@ safety and thread safety guarantees.")
(substitute* "config.toml"
(("^python =.*" all)
(string-append all
- "gdb = \"" gdb "/bin/gdb\"\n"))))))))))
+ "gdb = \"" gdb "/bin/gdb\"\n"))))))
+ (replace 'build
+ ;; Phase overridden to also build rustfmt.
+ (lambda* (#:key parallel-build? #:allow-other-keys)
+ (let ((job-spec (string-append
+ "-j" (if parallel-build?
+ (number->string (parallel-job-count))
+ "1"))))
+ (invoke "./x.py" job-spec "build"
+ "library/std" ;rustc
+ "src/tools/cargo"
+ "src/tools/rustfmt"))))
+ (replace 'check
+ ;; Phase overridden to also test rustfmt.
+ (lambda* (#:key tests? parallel-build? #:allow-other-keys)
+ (when tests?
+ (let ((job-spec (string-append
+ "-j" (if parallel-build?
+ (number->string (parallel-job-count))
+ "1"))))
+ (invoke "./x.py" job-spec "test" "-vv"
+ "library/std"
+ "src/tools/cargo"
+ "src/tools/rustfmt")))))
+ (replace 'install
+ ;; Phase overridden to also install rustfmt.
+ (lambda* (#:key outputs #:allow-other-keys)
+ (invoke "./x.py" "install")
+ (substitute* "config.toml"
+ ;; Adjust the prefix to the 'cargo' output.
+ (("prefix = \"[^\"]*\"")
+ (format #f "prefix = ~s" (assoc-ref outputs "cargo"))))
+ (invoke "./x.py" "install" "cargo")
+ (substitute* "config.toml"
+ ;; Adjust the prefix to the 'rustfmt' output.
+ (("prefix = \"[^\"]*\"")
+ (format #f "prefix = ~s" (assoc-ref outputs "rustfmt"))))
+ (invoke "./x.py" "install" "rustfmt")))))))
;; Add test inputs.
- (native-inputs (cons*
- ;; The tests fail when using GDB 10 (see:
- ;; https://github.com/rust-lang/rust/issues/79009).
- `("gdb" ,gdb-9.2)
- `("procps" ,procps)
- (package-native-inputs base-rust))))))
-
-(define-public rust-1.50
- (rust-bootstrapped-package rust-1.49 "1.50.0"
- "0pjs7j62maiyvkmhp9zrxl528g2n0fphp4rq6ap7aqdv0a6qz5wm"))
-
-(define-public rust-1.51
- (rust-bootstrapped-package rust-1.50 "1.51.0"
- "0ixqkqglv3isxbvl4ldr4byrkx692wghsz3fasy1pn5kr2prnsvs"))
-
-(define-public rust-1.52
- (let ((base-rust
- (rust-bootstrapped-package rust-1.51 "1.52.1"
- "165zs3xzp9dravybwslqs1qhn35agp6wacmzpymqg3qfdni26vrs")))
- (package
- (inherit base-rust)
- (inputs
- (alist-replace "llvm" (list llvm-12)
- (package-inputs base-rust))))))
+ (native-inputs (cons* `("gdb" ,gdb)
+ `("procps" ,procps)
+ (package-native-inputs base-rust))))))
;;; Note: Only the latest versions of Rust are supported and tested. The
;;; intermediate rusts are built for bootstrapping purposes and should not
;;; be relied upon. This is to ease maintenance and reduce the time
;;; required to build the full Rust bootstrap chain.
-(define-public rust rust-1.49)
+(define-public rust rust-1.54)
--
2.33.0
M
M
Maxim Cournoyer wrote on 3 Sep 2021 17:31
[PATCH core-updates-frozen 4/8] gnu: rust: Bootstrap rust from 1.39.0 and optimize build time.
(address . 50358@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
20210903153116.22517-4-maxim.cournoyer@gmail.com
Only stage 1 (rather than stage 2) rustc and cargo are built and the
installation phase rewritten to not invoke the build tool, which helps to
shorten the build time to about 10 minutes per Rust on a fast machine. The
total build time should take less than 4h30, down from the current 8 hours on
a Ryzen 3900X CPU.

* gnu/packages/patches/rust-reproducible-builds.patch: Delete file.
* gnu/packages/patches/rustc-1.39.0-src.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it, and un-register
rust-reproducible-builds.patch.
* gnu/packages/rust.scm (%mrustc-commit): New variable.
(%mrustc-source): Update to commit 474bec9cfd7862a20e7288cecd7fcf5e18648b9a.
(rust-1.29): Morph into...
(rust-1.39): ... this.
[source]: Adjust the snippet, patches and patch-flags fields.
[inputs]: Replace llvm-7 by llvm (9).
[make-flags]: Add the RUSTC_VERSION, MRUSTC_TARGET_VER and OUTDIR_SUF make
variables. Remove the RUSTCSRC make variable.
[phases]{copy-mrustc-and-patch}: Rename to...
{setup-mrustc-sources}: ... this. A symbolic link is created inside the
mrustc directory, pointing to the Rust 1.39.0 sources.
{patch-makefiles}: Adjust directory. Patch date and git definitions. Edit
out the RUSTC_SRC_DL prerequisite. Adjust the patching of a shebang.
{patch-cargo-checksums}: Adjust.
{configure-cargo-home}: New phase.
{configure}: Create and add a 'cc' shim to PATH.
{build}: Do not invoke make in parallel mode inside the run_rustc directory.
(rust-1.30): Morph into...
(rust-1.40): ... this, integrating the changes introduced between 1.30 and
1.40.
[modules]: Properly import (guix build cargo-utils).
[phases]{add-cc-shim-to-path}: New phase.
{configure}: Increase the codegen-units value to 256.
{build}: Only build stage 1 rustc and cargo, and group the commands into one
invocation.
{install}: Manually install the stage 1 build artifacts.
{patch-cargo-checksums}: Remove the ad-hoc use-modules, no longer needed.
[source]: Adjust.
[arguments]: Set validate-runpath? to #f.
[phases]{patch-cargo-checksums}: Remove phase.
{configure}: Repatriate the jemalloc configuration changes from 1.40.
[native-inputs]: Replace the rust-1.29 inputs by rust-1.39. Use regular
jemalloc and llvm versions.
(rust-1.41)[phases]: Add the patch-cargo-checksums phase.
(rust-1.31, rust-1.32, rust-1.33, rust-1.34, rust-1.35, rust-1.36, rust-1.37)
(rust-1.38, rust-1.39, rust-1.40): Delete variables.
(rust-1.46)[phases]{install}: Group build, test and install commands.
(rust-1.47)[phases]{build}: Override to adjust for the relocation of the
standard library source directory.
---
gnu/local.mk | 2 +-
.../patches/rust-reproducible-builds.patch | 25 -
gnu/packages/patches/rustc-1.39.0-src.patch | 99 ++++
gnu/packages/rust.scm | 429 +++++++-----------
4 files changed, 272 insertions(+), 283 deletions(-)
delete mode 100644 gnu/packages/patches/rust-reproducible-builds.patch
create mode 100644 gnu/packages/patches/rustc-1.39.0-src.patch

Toggle diff (364 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index bb22e29caa..f8e20a1f95 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1695,12 +1695,12 @@ dist_patch_DATA = \
%D%/packages/patches/rocm-opencl-runtime-4.3-nocltrace.patch \
%D%/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch \
%D%/packages/patches/ruby-sanitize-system-libxml.patch \
+ %D%/packages/patches/rustc-1.39.0-src.patch \
%D%/packages/patches/rust-coresimd-doctest.patch \
%D%/packages/patches/rust-ndarray-remove-blas-src-dep.patch \
%D%/packages/patches/rust-ndarray-0.13-remove-blas-src.patch \
%D%/packages/patches/rust-nettle-disable-vendor.patch \
%D%/packages/patches/rust-nettle-sys-disable-vendor.patch \
- %D%/packages/patches/rust-reproducible-builds.patch \
%D%/packages/patches/rust-openssl-sys-no-vendor.patch \
%D%/packages/patches/sbc-fix-build-non-x86.patch \
%D%/packages/patches/sbcl-clml-fix-types.patch \
diff --git a/gnu/packages/patches/rust-reproducible-builds.patch b/gnu/packages/patches/rust-reproducible-builds.patch
deleted file mode 100644
index ef7bf53b5d..0000000000
--- a/gnu/packages/patches/rust-reproducible-builds.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From b9ca108fcae2b738ca3f0c88c84ae5dc5a6f843f Mon Sep 17 00:00:00 2001
-From: Tim Ryan <id@timryan.org>
-Date: Mon, 14 May 2018 06:22:21 -0400
-Subject: [PATCH] Support reproducible builds by forcing window.search to use
- stable key ordering. (#692)
-See <https://github.com/rust-lang-nursery/mdBook/pull/692>
----
- src/vendor/mdbook/src/renderer/html_handlebars/search.rs | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/src/vendor/mdbook/src/renderer/html_handlebars/search.rs b/src/vendor/mdbook/src/renderer/html_handlebars/search.rs
-index d49772f8b..1ee66a511 100644
---- a/src/vendor/mdbook/src/renderer/html_handlebars/search.rs
-+++ b/src/vendor/mdbook/src/renderer/html_handlebars/search.rs
-@@ -205,6 +205,10 @@ fn write_to_js(index: Index, search_config: &Search) -> Result<String> {
- searchoptions,
- index,
- };
-+
-+ // By converting to serde_json::Value as an intermediary, we use a
-+ // BTreeMap internally and can force a stable ordering of map keys.
-+ let json_contents = serde_json::to_value(&json_contents)?;
- let json_contents = serde_json::to_string(&json_contents)?;
-
- Ok(format!("window.search = {};", json_contents))
diff --git a/gnu/packages/patches/rustc-1.39.0-src.patch b/gnu/packages/patches/rustc-1.39.0-src.patch
new file mode 100644
index 0000000000..7859bd44d5
--- /dev/null
+++ b/gnu/packages/patches/rustc-1.39.0-src.patch
@@ -0,0 +1,99 @@
+# This modified patch is to disable the hunk applying to LLVM, unbundled in Guix.
+
+# Add mrustc slice length intrinsics
+--- src/libcore/intrinsics.rs
++++ src/libcore/intrinsics.rs
+@@ -685,4 +685,8 @@
+ pub fn min_align_of_val<T: ?Sized>(_: &T) -> usize;
+
++ /// Obtain the length of a slice pointer
++ #[cfg(rust_compiler="mrustc")]
++ pub fn mrustc_slice_len<T>(pointer: *const [T]) -> usize;
++
+ /// Gets a static string slice containing the name of a type.
+ pub fn type_name<T: ?Sized>() -> &'static str;
+
+--- src/libcore/slice/mod.rs
++++ src/libcore/slice/mod.rs
+@@ -68,5 +68,8 @@
+ pub const fn len(&self) -> usize {
+- unsafe {
+- crate::ptr::Repr { rust: self }.raw.len
+- }
++ #[cfg(not(rust_compiler="mrustc"))]
++ #[cfg_attr(not(bootstrap), allow_internal_unstable(const_fn_union))]
++ const fn len_inner<T>(s: &[T]) -> usize { unsafe { crate::ptr::Repr { rust: s }.raw.len } };
++ #[cfg(rust_compiler="mrustc")]
++ const fn len_inner<T>(s: &[T]) -> usize { unsafe { crate::intrinsics::mrustc_slice_len(s) } }
++ len_inner(self)
+ }
+#
+# Static-link rustc_codegen_llvm so the generated rustc is standalone
+# > Note: Interacts with `rustc-1.39.0-overrides.toml`
+#
+--- src/librustc_interface/util.rs
++++ src/librustc_interface/util.rs
+@@ -421,2 +421,4 @@
+ pub fn get_codegen_sysroot(backend_name: &str) -> fn() -> Box<dyn CodegenBackend> {
++ #[cfg(rust_compiler="mrustc")]
++ { if(backend_name == "llvm") { extern "Rust" { fn __rustc_codegen_backend() -> Box<dyn CodegenBackend>; } return || unsafe { __rustc_codegen_backend() } } }
+ // For now we only allow this function to be called once as it'll dlopen a
+# Disable most architecture intrinsics
+--- src/stdarch/crates/std_detect/src/detect/mod.rs
++++ src/stdarch/crates/std_detect/src/detect/mod.rs
+@@ -74,4 +74,7 @@
+ // this run-time detection logic is never called.
+ #[path = "os/other.rs"]
+ mod os;
++ } else if #[cfg(rust_compiler="mrustc")] {
++ #[path = "os/other.rs"]
++ mod os;
+ } else if #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] {
+--- vendor/ppv-lite86/src/lib.rs
++++ vendor/ppv-lite86/src/lib.rs
+@@ -12,10 +12,10 @@
+-#[cfg(all(feature = "simd", target_arch = "x86_64", not(miri)))]
++#[cfg(all(feature = "simd", target_arch = "x86_64", not(miri), not(rust_compiler="mrustc")))]
+ pub mod x86_64;
+-#[cfg(all(feature = "simd", target_arch = "x86_64", not(miri)))]
++#[cfg(all(feature = "simd", target_arch = "x86_64", not(miri), not(rust_compiler="mrustc")))]
+ use self::x86_64 as arch;
+
+-#[cfg(any(miri, not(all(feature = "simd", any(target_arch = "x86_64")))))]
++#[cfg(any(miri, rust_compiler="mrustc", not(all(feature = "simd", any(target_arch = "x86_64")))))]
+ pub mod generic;
+-#[cfg(any(miri, not(all(feature = "simd", any(target_arch = "x86_64")))))]
++#[cfg(any(miri, rust_compiler="mrustc", not(all(feature = "simd", any(target_arch = "x86_64")))))]
+ use self::generic as arch;
+
+# diff --git a/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h b/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h
+# index da9d9d5bfdc0..3d47471f0ef0 100644
+# --- src/llvm-project/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h
+# +++ src/llvm-project/llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h
+# @@ -16,6 +16,8 @@
+# #include "llvm/Demangle/DemangleConfig.h"
+# #include "llvm/Demangle/StringView.h"
+# #include <array>
+# +#include <cstdint>
+# +#include <string>
+
+# namespace llvm {
+# namespace itanium_demangle {
+##
+## gcc (used by mrustc) has 16-byte uint128_t alignment, while rustc uses 8
+##
+#--- src/libsyntax/ast.rs
+#+++ src/libsyntax/ast.rs
+#@@ -986,2 +986,2 @@
+#-#[cfg(target_arch = "x86_64")]
+#-static_assert_size!(Expr, 96);
+#+//#[cfg(target_arch = "x86_64")]
+#+//static_assert_size!(Expr, 96);
+#--- src/librustc/ty/sty.rs
+#+++ src/librustc/ty/sty.rs
+#@@ -2258,2 +2258,2 @@
+#-#[cfg(target_arch = "x86_64")]
+#-static_assert_size!(Const<'_>, 40);
+#+//#[cfg(target_arch = "x86_64")]
+#+//static_assert_size!(Const<'_>, 40);
+
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index fd6233fc94..1a819abf32 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -118,37 +118,43 @@
(package-native-inputs base-rust))))))
;;; Note: mrustc's only purpose is to be able to bootstap Rust; it's designed
-;;; to be used in source form.
+;;; to be used in source form. The latest support for bootstrapping from
+;;; 1.39.0 is not yet released so use the latest commit.
+;;; https://github.com/thepowersgang/mrustc/issues/185).
+(define %mrustc-commit "474bec9cfd7862a20e7288cecd7fcf5e18648b9a")
(define %mrustc-source
- (let ((name "mrustc")
- (version "0.9"))
+ (let* ((version "0.9")
+ (commit %mrustc-commit)
+ (revision "1")
+ (name "mrustc"))
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/thepowersgang/mrustc")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
+ (commit commit)))
+ (file-name (git-file-name name (git-version version revision commit)))
(sha256
(base32
- "194ny7vsks5ygiw7d8yxjmp1qwigd71ilchis6xjl6bb2sj97rd2")))))
+ "1zacz5qia0r457mv74wvrvznnv4az5g2w9j8ji9ssy727wljhvz7")))))
-;;; Rust 1.29 is special in that it is built with mrustc, which shortens the
+;;; Rust 1.39 is special in that it is built with mrustc, which shortens the
;;; bootstrap path. Note: the build is non-deterministic.
-(define-public rust-1.29
+(define-public rust-1.39
(package
(name "rust")
- (version "1.29.2")
+ (version "1.39.0")
(source
(origin
(method url-fetch)
(uri (rust-uri version))
- (sha256 (base32 "1jb787080z754caa2w3w1amsygs4qlzj9rs1vy64firfmabfg22h"))
+ (sha256 (base32 "0mwkc1bnil2cfyf6nglpvbn2y0zfbv44zfhsd5qg4c9rm6vgd8dl"))
(modules '((guix build utils)))
(snippet '(for-each delete-file-recursively
- '("src/jemalloc"
- "src/llvm"
- "src/llvm-emscripten")))
- (patches (search-patches "rust-reproducible-builds.patch"))))
+ '("src/llvm-emscripten"
+ "src/llvm-project"
+ "vendor/jemalloc-sys/jemalloc")))
+ (patches (search-patches "rustc-1.39.0-src.patch"))
+ (patch-flags '("-p0")))) ;default is -p1
(outputs '("out" "cargo"))
(properties '((timeout . 72000) ;20 hours
(max-silent-time . 18000))) ;5 hours (for armel)
@@ -156,9 +162,7 @@
(inputs
`(("libcurl" ,curl)
("libssh2" ,libssh2)
- ;; Use llvm-7, which enables rust to be built reproducibly.
- ;; Versions newer than 7 fail to compile.
- ("llvm" ,llvm-7)
+ ("llvm" ,llvm)
("openssl" ,openssl)
("zlib" ,zlib)))
(native-inputs
@@ -180,7 +184,10 @@
(list ,(string-append "RUSTC_TARGET="
(or (%current-target-system)
(nix-system->gnu-triplet-for-rust)))
- ,(string-append "RUSTCSRC=../"))
+ ,(string-append "RUSTC_VERSION=" version)
+ ,(string-append "MRUSTC_TARGET_VER="
+ (version-major+minor version))
+ "OUTDIR_SUF=") ;do not add version suffix to output dir
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-reference-to-cc
@@ -191,11 +198,15 @@
(substitute* (find-files "." "^link.rs$")
(("\"cc\".as_ref")
(format #f "~s.as_ref" (string-append gcc "/bin/gcc")))))))
- (add-after 'unpack 'copy-mrustc-and-patch
+ (add-after 'unpack 'setup-mrustc-sources
(lambda* (#:key inputs #:allow-other-keys)
- (copy-recursively (assoc-ref inputs "mrustc-source") "mrustc")
- (invoke "patch" "-p0" "-i" "mrustc/rustc-1.29.0-src.patch")))
- (add-after 'copy-mrustc-and-patch 'patch-makefiles
+ (copy-recursively (assoc-ref inputs "mrustc-source") "../mrustc")
+ ;; The Makefile of mrustc expects the sources directory of rustc
+ ;; to be at this location, and it simplifies things to make it
+ ;; so.
+ (symlink (getcwd)
+ (string-append "../mrustc/rustc-" ,version "-src"))))
+ (add-after 'setup-mrustc-sources 'patch-makefiles
;; This disables building the (unbundled) LLVM.
(lambda* (#:key inputs parallel-build? #:allow-other-keys)
(let ((llvm (assoc-ref inputs "llvm"))
@@ -203,7 +214,7 @@
(if parallel-build?
(number->string (parallel-job-count))
"1"))))
- (with-directory-excursion "mrustc"
+ (with-directory-excursion "../mrustc"
(substitute* '("minicargo.mk"
"run_rustc/Makefile")
;; Use the system-provided LLVM.
@@ -213,27 +224,40 @@
"$(LLVM_CONFIG):\n")
(("\\$Vcd \\$\\(RUSTCSRC\\)build && \\$\\(MAKE\\).*")
"true\n"))
- ;; Patch date.
(substitute* "Makefile"
- (("shell date")
- "shell date -d @1"))
+ ;; Patch date and git obtained version information.
+ ((" -D VERSION_GIT_FULLHASH=.*")
+ (string-append
+ " -D VERSION_GIT_FULLHASH=\\\"" ,%mrustc-commit "\\\""
+ " -D VERSION_GIT_BRANCH=\\\"master\\\""
+ " -D VERSION_GIT_SHORTHASH=\\\""
+ ,(string-take %mrustc-commit 7) "\\\""
+ " -D VERSION_BUILDTIME="
+ "\"\\\"Thu, 01 Jan 1970 00:00:01 +0000\\\"\""
+ " -D VERSION_GIT_ISDIRTY=0\n"))
+ ;; Do not try to fetch sources from the Internet.
+ ((": \\$\\(RUSTC_SRC_DL\\)")
+ ":"))
(substitute* "run_rustc/Makefile"
(("[$]Vtime ")
"$V ")
;; Unlock the number of parallel jobs for cargo.
(("-j [[:digit:]]+ ")
"")
- ;; Patch the shebang of a generated wrapper for rustc, and
- ;; make sure that \n newline escapes get interpreted
- ;; correctly, specifying the '-e' option of echo.
- (("echo '#!/bin/sh")
- (string-append "echo -e '#!" (which "sh"))))))))
- (add-after 'patch-source-shebangs 'patch-cargo-checksums
+ ;; Patch the shebang of a generated wrapper for rustc
+ (("#!/bin/sh")
+ (string-append "#!" (which "sh"))))))))
+ (add-after 'patch-generated-file-shebangs 'patch-cargo-checksums
(lambda* _
- (substitute* "src/Cargo.lock"
- (("(\"checksum .* = )\".*\"" all name)
+ (substitute* "Cargo.lock"
+ (("(checksum = )\".*\"" all name)
(string-append name "\"" ,%cargo-reference-hash "\"")))
- (generate-all-checksums "src/vendor")))
+ (generate-all-checksums "vendor")))
+ (add-before 'configure 'configure-cargo-home
+ (lambda _
+ (let ((cargo-home (string-append (getcwd) "/.cargo")))
+ (mkdir-p cargo-home)
+ (setenv "CARGO_HOME" cargo-home))))
(replace 'configure
(lambda _
(setenv "CC" "gcc")
@@ -242,29 +266,35 @@
(setenv "LLVM_LINK_SHARED" "1")
;; This is a workaround for
;; https://github.com/thepowersgang/mrustc/issues/138.
- (setenv "LIBSSH2_SYS_USE_PKG_CONFIG" "yes")))
+ (setenv "LIBSSH2_SYS_USE_PKG_CONFIG" "yes")
+ ;; rustc still insists on having 'cc' on PATH in some places
+ ;; (e.g. when building the 'test' library crate).
+ (mkdir-p "/tmp/bin")
+ (symlink (which "gcc") "/tmp/bin/cc")
+ (setenv "PATH" (string-append "/tmp/bin:" (getenv "PATH")))))
(delete 'patch-generated-file-shebangs)
(replace 'build
(lambda* (#:key make-flags parallel-build? #:allow-other-keys)
- (let* ((job-count (if parallel-build?
+ (let* ((src-root (getcwd))
+ (job-count (if parallel-build?
(parallel-job-count)
1))
- (job-spec (string-append "-j" (number->string job-count)))
- (make-flags* (cons job-spec make-flags)))
+ (job-spec (string-append "-j" (number->string job-count))))
;; Adapted from:
;; https://github.com/dtolnay/bootstrap/blob/master/build.sh.
- (chdir "mrustc")
+ (chdir "../mrustc")
(setenv "MINICARGO_FLAGS" job-spec)
(setenv "CARGO_BUILD_JOBS" (number->string job-count))
(display "Building rustc...\n")
(apply invoke "make" "-f" "minicargo.mk" "output/rustc"
- make-flags*)
+ job-spec make-flags)
(display "Building cargo...\n")
(apply invoke "make" "-f" "minicargo.mk" "output/cargo"
- make-flags*)
+ job-spec make-flags)
(display "Rebuilding stdlib with rustc...\n")
- (with-directory-excursion "run_rustc"
- (apply invoke "make" "RUST_SRC=../../src/" make-flags*)))))
+ ;; Note: invoking make with -j would cause a compiler error
+ ;; (unexpected panic).
+ (apply invoke "make" "-C" "run_rustc" make-flags))))
This message was truncated. Download the full message here.
M
M
Maxim Cournoyer wrote on 3 Sep 2021 17:31
[PATCH core-updates-frozen 6/8] gnu: Build all Rust packages using the latest rustc.
(address . 50358@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
20210903153116.22517-6-maxim.cournoyer@gmail.com
The older Rusts are made private variables; they shouldn't be used by users as
they are not tested and are only built at stage 1, which makes them unsuitable
to compile Rust applications.

* gnu/packages/crates-io.scm (rust-cargo-0.53)[arguments]: Remove #:rust
argument.
(rust-cxx-1, rust-cxx-build-1, rust-cxx-gen-0.7): Likewise.
* gnu/packages/crates-io.scm
(rust-cxx-gen-0.7, rust-cxxbridge-macro-1, rust-postgres-0.19): Likewise.
(rust-rust-decimal-1, rust-sized-chunks-0.6, rust-socket2-0.4): Likewise.
(rust-tokio-postgres-0.7, rust-im-rc-15): Likewise.
* gnu/packages/gnome.scm (librsvg): Likewise.
* gnu/packages/gnuzilla.scm (mozjs-78): Likewise.
* gnu/packages/rust-apps.scm
(hyperfine, tectonic rust-analyzer, rust-cargo-c): Likewise.
* gnu/packages/shells.scm (nushell): Likewise.
* gnu/packages/syndication.scm (newsboat): Likewise.
* gnu/packages/rust.scm: (rust-1.39, rust-1.40, rust-1.41, rust-1.42)
(rust-1.43, rust-1.44, rust-1.45, rust-1.46, rust-1.47, rust-1.48, rust-1.49)
(rust-1.50, rust-1.51, rust-1.52, rust-1.53, rust-1.54): Make variables private.
---
gnu/packages/crates-io.scm | 29 +++++++++--------------------
gnu/packages/gnome.scm | 2 --
gnu/packages/gnuzilla.scm | 4 ++--
gnu/packages/rust-apps.scm | 12 ++++--------
gnu/packages/rust.scm | 32 ++++++++++++++++----------------
gnu/packages/shells.scm | 3 +--
gnu/packages/syndication.scm | 1 -
7 files changed, 32 insertions(+), 51 deletions(-)

Toggle diff (326 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 275963c311..af585aeeb4 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -7163,7 +7163,6 @@ capabilities")
`(;; The test suite is disabled as the internal 'cargo-test-macro' and
;; 'cargo-test-support' crates are not included in the release.
#:tests? #f
- #:rust ,rust-1.52 ;transitively inherited from rust-sized-chunks
#:cargo-inputs
(("rust-anyhow" ,rust-anyhow-1)
("rust-atty" ,rust-atty-0.2)
@@ -11766,7 +11765,6 @@ attributes.")
(build-system cargo-build-system)
(arguments
`(#:tests? #f ; Cannot compile cxx-test-suite.
- #:rust ,rust-1.48 ; or newer
#:cargo-inputs
(("rust-cc" ,rust-cc-1)
("rust-cxxbridge-flags" ,rust-cxxbridge-flags-1)
@@ -11826,8 +11824,7 @@ attributes.")
"0shmkgv3cnh06ws1p555znj1hh23phynaz73rgnz95gradsdwnwg"))))
(build-system cargo-build-system)
(arguments
- `(#:rust ,rust-1.48 ; or newer
- #:cargo-inputs
+ `(#:cargo-inputs
(("rust-cc" ,rust-cc-1)
("rust-codespan-reporting" ,rust-codespan-reporting-0.11)
("rust-lazy-static" ,rust-lazy-static-1)
@@ -11887,8 +11884,7 @@ crate into a Cargo build.")
"08v366jxd2vc8jc2cbvrga0866pwfcaq6hl8yylfx0vhs2n53j53"))))
(build-system cargo-build-system)
(arguments
- `(#:rust ,rust-1.48 ; or newer
- #:cargo-inputs
+ `(#:cargo-inputs
(("rust-cc" ,rust-cc-1)
("rust-codespan-reporting" ,rust-codespan-reporting-0.11)
("rust-proc-macro2" ,rust-proc-macro2-1)
@@ -11993,8 +11989,7 @@ crate (implementation detail).")
"0gkwvihw74dh8p3fz3552wnxanrpwmwfy38ylz2z8knjq0y8y4v3"))))
(build-system cargo-build-system)
(arguments
- `(#:rust ,rust-1.48 ; or newer
- #:cargo-inputs
+ `(#:cargo-inputs
(("rust-clang-ast" ,rust-clang-ast-0.1)
("rust-flate2" ,rust-flate2-1)
("rust-memmap" ,rust-memmap-0.7)
@@ -33377,8 +33372,7 @@ UDP.")
"1hnid1d78zrr8ph12lpvp5b2cpx2fsqqgqs2yn1q23c6g7jix1y7"))))
(build-system cargo-build-system)
(arguments
- `(#:rust ,rust-1.46 ; or later
- #:tests? #f ; tests require postgres server.
+ `(#:tests? #f ; tests require postgres server.
#:cargo-inputs
(("rust-bytes" ,rust-bytes-1)
("rust-fallible-iterator" ,rust-fallible-iterator-0.2)
@@ -38474,8 +38468,7 @@ password hashing function.")
"10k58hf367626d4akl7ifyk5qwqphfs5x6z1yay22pkyc6w7q4h1"))))
(build-system cargo-build-system)
(arguments
- `(#:rust ,rust-1.46 ; or later
- #:tests? #f ; not all test files included.
+ `(#:tests? #f ; not all test files included.
#:cargo-inputs
(("rust-arbitrary" ,rust-arbitrary-1)
("rust-arrayvec" ,rust-arrayvec-0.5)
@@ -43600,8 +43593,7 @@ variants in pure Rust.")
"07ix5fsdnpf2xsb0k5rbiwlmsicm2237fcx7blirp9p7pljr5mhn"))))
(build-system cargo-build-system)
(arguments
- `(#:rust ,rust-1.52 ;requires the "if in const fn" feature
- #:cargo-inputs
+ `(#:cargo-inputs
(("rust-arbitrary" ,rust-arbitrary-1)
("rust-array-ops" ,rust-array-ops-0.1)
("rust-bitmaps" ,rust-bitmaps-2)
@@ -44255,8 +44247,7 @@ algorithm. Includes streaming compression and decompression.")
"18ny6m1gnf6cwp5ax0b5hr36w6yg16z7faj76b31aq2jghhgqgcy"))))
(build-system cargo-build-system)
(arguments
- `(#:rust ,rust-1.46 ; or later
- #:cargo-inputs
+ `(#:cargo-inputs
(("rust-libc" ,rust-libc-0.2)
("rust-winapi" ,rust-winapi-0.3))))
(home-page "https://github.com/rust-lang/socket2")
@@ -49630,8 +49621,7 @@ OpenSSL.")
"12rb390i3af7zb0z2idhaf6l2m6snypwdiwjw84rmyz4qy1i6ard"))))
(build-system cargo-build-system)
(arguments
- `(#:rust ,rust-1.46
- #:tests? #f ;require postgresql
+ `(#:tests? #f ;require postgresql
#:cargo-inputs
(("rust-async-trait" ,rust-async-trait-0.1)
("rust-byteorder" ,rust-byteorder-1)
@@ -56716,8 +56706,7 @@ configuration file and/or environment variables.")
"0gsgcs1nn38r40973l6zr1v4d85f4s9qyl32n5f20jphf5z9ba1w"))))
(build-system cargo-build-system)
(arguments
- `(#:rust ,rust-1.52 ;for rust-sized-chunks
- #:cargo-inputs
+ `(#:cargo-inputs
(("rust-arbitrary" ,rust-arbitrary-0.4)
("rust-bitmaps" ,rust-bitmaps-2)
("rust-proptest" ,rust-proptest-0.9)
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index cae6e1aa0b..e426902a2f 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -3365,8 +3365,6 @@ for dealing with different structured file formats.")
(outputs '("out" "doc"))
(arguments
`(#:install-source? #f
- ;; XXX: compiling librsvg_c_api hangs forever with 1.49.
- #:rust ,rust-1.48
#:modules
((guix build cargo-build-system)
(guix build utils)
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index a455022d6d..3a83cce22c 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -547,8 +547,8 @@ in C/C++.")
("perl" ,perl)
("pkg-config" ,pkg-config)
("python" ,python-3)
- ("rust" ,rust-1.41)
- ("cargo" ,rust-1.41 "cargo")))
+ ("rust" ,rust)
+ ("cargo" ,rust "cargo")))
(inputs
`(("icu4c" ,icu4c)
("readline" ,readline)
diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm
index 72148947e5..fa6ddde345 100644
--- a/gnu/packages/rust-apps.scm
+++ b/gnu/packages/rust-apps.scm
@@ -393,8 +393,7 @@ characters, ASCII whitespace characters, other ASCII characters and non-ASCII.")
"0m5lrvx6wwkxqdc5digm1k4diiaqcg5j4pia77s5nw1aam7k51hy"))))
(build-system cargo-build-system)
(arguments
- `(#:rust ,rust-1.46
- #:modules ((guix build cargo-build-system)
+ `(#:modules ((guix build cargo-build-system)
(guix build utils)
(srfi srfi-26))
#:cargo-inputs
@@ -659,8 +658,7 @@ gitignore rules.")
(base32 "0rjkfmbam81anpdqs2qafcmd5bf7y898c8a7iqqqwkbl1hfw4sqs"))))
(build-system cargo-build-system)
(arguments
- `(#:rust ,rust-1.52
- #:cargo-build-flags '("--release" "--features" "external-harfbuzz")
+ `(#:cargo-build-flags '("--release" "--features" "external-harfbuzz")
#:cargo-inputs
(("rust-atty" ,rust-atty-0.2)
("rust-byte-unit" ,rust-byte-unit-4)
@@ -838,8 +836,7 @@ runs a command whenever it detects modifications.")
"06bc3s5kjwpyr2cq79p0306a9bqp3xp928d750ybby9npq2dvj3z"))))
(build-system cargo-build-system)
(arguments
- `(#:rust ,rust-1.52
- #:install-source? #f ; virtual manifest
+ `(#:install-source? #f ; virtual manifest
#:cargo-test-flags
'("--release" "--"
"--skip=tests::test_version_check" ;; It need rustc's version
@@ -966,8 +963,7 @@ support for Rust.")
"0fwdxhdj2963xr6xfqr56i7hikhsdv562vgxq2dj3h2mi3dil1k6"))))
(build-system cargo-build-system)
(arguments
- `(#:rust ,rust-1.52 ;inherited from rust-cargo
- #:cargo-inputs
+ `(#:cargo-inputs
(("rust-cbindgen" ,rust-cbindgen-0.19)
("rust-cargo" ,rust-cargo-0.53) ;
("rust-anyhow" ,rust-anyhow-1)
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 36c9b4d012..ac5da3ae0f 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -139,7 +139,7 @@
;;; Rust 1.39 is special in that it is built with mrustc, which shortens the
;;; bootstrap path. Note: the build is non-deterministic.
-(define-public rust-1.39
+(define rust-1.39
(package
(name "rust")
(version "1.39.0")
@@ -321,7 +321,7 @@ safety and thread safety guarantees.")
;; Dual licensed.
(license (list license:asl2.0 license:expat))))
-(define-public rust-1.40
+(define rust-1.40
(package
(name "rust")
(version "1.40.0")
@@ -512,7 +512,7 @@ safety and thread safety guarantees.")
;; Dual licensed.
(license (list license:asl2.0 license:expat))))
-(define-public rust-1.41
+(define rust-1.41
(let ((base-rust (rust-bootstrapped-package
rust-1.40 "1.41.1"
"0ws5x0fxv57fyllsa6025h3q6j9v3m8nb3syl4x0hgkddq0kvj9q")))
@@ -532,21 +532,21 @@ safety and thread safety guarantees.")
(string-append name "\"" ,%cargo-reference-hash "\"")))
(generate-all-checksums "vendor"))))))))))
-(define-public rust-1.42
+(define rust-1.42
(rust-bootstrapped-package
rust-1.41 "1.42.0" "0x9lxs82may6c0iln0b908cxyn1cv7h03n5cmbx3j1bas4qzks6j"))
-(define-public rust-1.43
+(define rust-1.43
(rust-bootstrapped-package
rust-1.42 "1.43.0" "18akhk0wz1my6y9vhardriy2ysc482z0fnjdcgs9gy59kmnarxkm"))
;; This version requires llvm <= 11.
-(define-public rust-1.44
+(define rust-1.44
(rust-bootstrapped-package
rust-1.43 "1.44.1"
"0ww4z2v3gxgn3zddqzwqya1gln04p91ykbrflnpdbmcd575n8bky"))
-(define-public rust-1.45
+(define rust-1.45
(let ((base-rust (rust-bootstrapped-package
rust-1.44 "1.45.2"
"0273a1g3f59plyi1n0azf21qjzwml1yqdnj5z472crz37qggr8xp")))
@@ -562,11 +562,11 @@ safety and thread safety guarantees.")
(("linker.env\\(\"LC_ALL\", \"C\"\\);")
"linker.env(\"LC_ALL\", \"en_US.UTF-8\");")))))))))))
-(define-public rust-1.46
+(define rust-1.46
(rust-bootstrapped-package
rust-1.45 "1.46.0" "0a17jby2pd050s24cy4dfc0gzvgcl585v3vvyfilniyvjrqknsid"))
-(define-public rust-1.47
+(define rust-1.47
(let ((base-rust (rust-bootstrapped-package
rust-1.46 "1.47.0"
"07fqd2vp7cf1ka3hr207dnnz93ymxml4935vp74g4is79h3dz19i")))
@@ -586,25 +586,25 @@ safety and thread safety guarantees.")
"library/std"
"src/tools/cargo")))))))))))
-(define-public rust-1.48
+(define rust-1.48
(rust-bootstrapped-package
rust-1.47 "1.48.0" "0fz4gbb5hp5qalrl9lcl8yw4kk7ai7wx511jb28nypbxninkwxhf"))
-(define-public rust-1.49
+(define rust-1.49
(rust-bootstrapped-package
rust-1.48 "1.49.0" "0yf7kll517398dgqsr7m3gldzj0iwsp3ggzxrayckpqzvylfy2mm"))
-(define-public rust-1.50
+(define rust-1.50
(rust-bootstrapped-package
rust-1.49 "1.50.0" "0pjs7j62maiyvkmhp9zrxl528g2n0fphp4rq6ap7aqdv0a6qz5wm"))
-(define-public rust-1.51
+(define rust-1.51
(rust-bootstrapped-package
rust-1.50 "1.51.0" "0ixqkqglv3isxbvl4ldr4byrkx692wghsz3fasy1pn5kr2prnsvs"))
;;; The LLVM requiriment has been bumped to version 10 in Rust 1.52. Use the
;;; latest available.
-(define-public rust-1.52
+(define rust-1.52
(let ((base-rust (rust-bootstrapped-package
rust-1.51 "1.52.1"
"165zs3xzp9dravybwslqs1qhn35agp6wacmzpymqg3qfdni26vrs")))
@@ -613,11 +613,11 @@ safety and thread safety guarantees.")
(inputs (alist-replace "llvm" (list llvm-12)
(package-inputs base-rust))))))
-(define-public rust-1.53
+(define rust-1.53
(rust-bootstrapped-package
rust-1.52 "1.53.0" "1f95p259dfp5ca118bg107rj3rqwlswy65dxn3hg8sqgl4wwmxsw"))
-(define-public rust-1.54
+(define rust-1.54
(let ((base-rust
(rust-bootstrapped-package
rust-1.53 "1.54.0"
diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm
index 68a4a401f6..66315dd3be 100644
--- a/gnu/packages/shells.scm
+++ b/gnu/packages/shells.scm
@@ -969,8 +969,7 @@ files and text.")
(base32 "0p5whwx6wk9k7mrxhr7azrppbj9mv53hd4bl1cgygxz231aq8337"))))
(build-system cargo-build-system)
(arguments
- `(#:rust ,rust-1.52
- #:tests? #false ;missing files
+ `(#:tests? #false ;missing files
#:features '("extra")
#:cargo-inputs
(("rust-ctrlc" ,rust-ctrlc-3)
diff --git a/gnu/packages/syndication.scm b/gnu/packages/syndication.scm
index 215e8e32cb..eb634303f6 100644
--- a/gnu/packages/syndication.scm
+++ b/gnu/packages/syndication.scm
@@ -246,7 +246,6 @@ cards.")
(guix build utils)
((guix build gnu-build-system) #:prefix gnu:))
#:vendor-dir "vendor"
- #:rust ,rust-1.48 ; or newer
#:install-source? #f
#:cargo-inputs
(("rust-backtrace" ,rust-backtrace-0.3)
--
2.33.0
M
M
Maxim Cournoyer wrote on 3 Sep 2021 17:31
[PATCH core-updates-frozen 7/8] gnu: mozjs-78: Update to 78.13.0.
(address . 50358@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
20210903153116.22517-7-maxim.cournoyer@gmail.com
This resolves a build failure since updating the package to build with latest
Rust (1.54).

* gnu/packages/gnuzilla.scm (mozjs-78): Update to 78.13.0.
---
gnu/packages/gnuzilla.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (24 lines)
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 3a83cce22c..3daffb5431 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -415,7 +415,7 @@ in C/C++.")
(define-public mozjs-78
(package
(inherit mozjs-60)
- (version "78.10.1")
+ (version "78.13.0")
(source (origin
(method url-fetch)
;; TODO: Switch to IceCat source once available on ftp.gnu.org.
@@ -424,7 +424,7 @@ in C/C++.")
version "esr.source.tar.xz"))
(sha256
(base32
- "0gyg2p6i1wmmfghwg13pp6fj8j8xz6c14f6bbnf4pf0f5c3la7y4"))))
+ "0v2g5clp9qlsbqfjb6yz614nq8x8c4k1p6m4axyv6g27qbiaky8r"))))
(arguments
`(#:imported-modules ,%cargo-utils-modules ;for `generate-all-checksums'
#:modules ((guix build cargo-utils)
--
2.33.0
M
M
Maxim Cournoyer wrote on 3 Sep 2021 17:31
[PATCH core-updates-frozen 8/8] gnu: fontconfig: Add a search path for XDG_DATA_DIRS.
(address . 50358@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
20210903153116.22517-8-maxim.cournoyer@gmail.com

* gnu/packages/fontutils.scm (fontconfig)[source]: Fix indentation.
[configure-flags]: Drop the "--with-add-fonts" configure option as it's no
longer necessary/desirable to special case the system and user profiles.
[native-search-paths]: New search path.
---
gnu/packages/fontutils.scm | 28 ++++++++++++++--------------
1 file changed, 14 insertions(+), 14 deletions(-)

Toggle diff (55 lines)
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index 8e0980dd95..9a5cdc1cb6 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -327,14 +327,13 @@ Font Format (WOFF).")
(name "fontconfig-minimal")
(version "2.13.94")
(source (origin
- (method url-fetch)
- (uri (string-append
- "https://www.freedesktop.org/software/"
- "fontconfig/release/fontconfig-" version ".tar.xz"))
- (sha256
- (base32
- "0g004r0bkkqz00mpm3svnnxn7d83158q0yb9ggxryizxfg5m5w55"))
- (patches (search-patches "fontconfig-cache-ignore-mtime.patch"))))
+ (method url-fetch)
+ (uri (string-append
+ "https://www.freedesktop.org/software/"
+ "fontconfig/release/fontconfig-" version ".tar.xz"))
+ (sha256 (base32
+ "0g004r0bkkqz00mpm3svnnxn7d83158q0yb9ggxryizxfg5m5w55"))
+ (patches (search-patches "fontconfig-cache-ignore-mtime.patch"))))
(build-system gnu-build-system)
;; In Requires or Requires.private of fontconfig.pc.
(propagated-inputs `(("expat" ,expat)
@@ -356,12 +355,7 @@ Font Format (WOFF).")
;; register the default fonts
(string-append "--with-default-fonts="
(assoc-ref %build-inputs "font-dejavu")
- "/share/fonts")
-
- ;; Register fonts from user and system profiles.
- (string-append "--with-add-fonts="
- "~/.guix-profile/share/fonts,"
- "/run/current-system/profile/share/fonts"))
+ "/share/fonts"))
#:phases
(modify-phases %standard-phases
(add-before 'check 'skip-problematic-tests
@@ -393,6 +387,12 @@ high quality, anti-aliased and subpixel rendered text on a display.")
; The exact license is more X11-style than BSD-style.
(license (license:non-copyleft "file://COPYING"
"See COPYING in the distribution."))
+ (native-search-paths
+ ;; Since version 2.13.94, fontconfig knows to find fonts from
+ ;; XDG_DATA_DIRS.
+ (list (search-path-specification
+ (variable "XDG_DATA_DIRS")
+ (files '("share")))))
(home-page "https://www.freedesktop.org/wiki/Software/fontconfig"))))
;;; The documentation of fontconfig is built in a separate package, as it
--
2.33.0
M
M
Mathieu Othacehe wrote on 3 Sep 2021 20:47
Re: [PATCH core-updates-frozen 1/8] guix: packages: Fix repacking of plain tarballs.
(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)(address . 50358@debbugs.gnu.org)
87bl59qyx9.fsf@gnu.org
Hello Maxim,

Toggle quote (3 lines)
> * guix/packages.scm (patch-and-repack): Test for a tarball using tarball? and
> move the plain file copy to the else clause.

I could not test it locally, but it looks fine to me.

Thanks for fixing it,

Mathieu
L
L
Ludovic Courtès wrote on 8 Sep 2021 18:27
Re: bug#50358: [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes.
(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
875yvb2fu2.fsf_-_@gnu.org
Hi,

Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:

Toggle quote (7 lines)
>
> * guix/packages.scm (patch-and-repack): Test for a tarball using tarball? and
> move the plain file copy to the else clause.
>
> Reported-by: Mathieu Othacehe <othacehe@gnu.org>

[...]

Toggle quote (3 lines)
> + ((or #+comp (tarball? #+source))
> + (repack directory #$output))

Would (tarball? #+source) be enough?

Otherwise LGTM! (Too bad I had overlooked this patch, it would have
been nice to be done with world rebuilds.)

Thanks,
Ludo’.
L
L
Ludovic Courtès wrote on 8 Sep 2021 18:35
(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)(address . 50358@debbugs.gnu.org)
87y28710vw.fsf_-_@gnu.org
Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:

Toggle quote (7 lines)
>
> * gnu/packages/fontutils.scm (fontconfig)[source]: Fix indentation.
> [configure-flags]: Drop the "--with-add-fonts" configure option as it's no
> longer necessary/desirable to special case the system and user profiles.
> [native-search-paths]: New search path.

Nice, LGTM! Good to see a bug in the 30,000 range closed. :-)

Toggle quote (7 lines)
> + (native-search-paths
> + ;; Since version 2.13.94, fontconfig knows to find fonts from
> + ;; XDG_DATA_DIRS.
> + (list (search-path-specification
> + (variable "XDG_DATA_DIRS")
> + (files '("share")))))

A potential drawback is that it’ll end up searching too many
directories: $XDG_DATA_DIRS has 10 entries (7 if we remove duplicates)
for me on Guix System, 3 of which have a fonts/ sub-directory. Hmm
maybe that’s not so bad after all.

Thanks!

Ludo’.
T
T
Thiago Jung Bauermann wrote on 10 Sep 2021 22:34
commands
(name . GNU Debbugs)(address . control@debbugs.gnu.org)
11571788.Q7N4Zbcuti@popigai
block 50358 by 50174
M
M
Maxim Cournoyer wrote on 12 Sep 2021 04:49
Re: bug#50358: [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes.
(name . Ludovic Courtès)(address . ludo@gnu.org)
87o88ypkym.fsf@gmail.com
Hello!

Ludovic Courtès <ludo@gnu.org> writes:

Toggle quote (18 lines)
> Hi,
>
> Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:
>
>> Fixes <https://issues.guix.gnu.org/50066>.
>>
>> * guix/packages.scm (patch-and-repack): Test for a tarball using tarball? and
>> move the plain file copy to the else clause.
>>
>> Reported-by: Mathieu Othacehe <othacehe@gnu.org>
>
> [...]
>
>> + ((or #+comp (tarball? #+source))
>> + (repack directory #$output))
>
> Would (tarball? #+source) be enough?

No! Because any (non-tarball) compressed archives (of the types handled
by compressor in (guix build utils) must also be repacked) :-).

Toggle quote (3 lines)
> Otherwise LGTM! (Too bad I had overlooked this patch, it would have
> been nice to be done with world rebuilds.)

Yeah. I'm attempting to synchronize for the next rebuild.

Thanks!

Maxim
M
M
Maxim Cournoyer wrote on 12 Sep 2021 04:56
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 50358@debbugs.gnu.org)
87k0jmpkmg.fsf@gmail.com
Hi!

Ludovic Courtès <ludo@gnu.org> writes:

Toggle quote (11 lines)
> Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:
>
>> Fixes <https://issues.guix.gnu.org/31403>.
>>
>> * gnu/packages/fontutils.scm (fontconfig)[source]: Fix indentation.
>> [configure-flags]: Drop the "--with-add-fonts" configure option as it's no
>> longer necessary/desirable to special case the system and user profiles.
>> [native-search-paths]: New search path.
>
> Nice, LGTM! Good to see a bug in the 30,000 range closed. :-)

:-)

Toggle quote (12 lines)
>> + (native-search-paths
>> + ;; Since version 2.13.94, fontconfig knows to find fonts from
>> + ;; XDG_DATA_DIRS.
>> + (list (search-path-specification
>> + (variable "XDG_DATA_DIRS")
>> + (files '("share")))))
>
> A potential drawback is that it’ll end up searching too many
> directories: $XDG_DATA_DIRS has 10 entries (7 if we remove duplicates)
> for me on Guix System, 3 of which have a fonts/ sub-directory. Hmm
> maybe that’s not so bad after all.

That's a defect with XDG_DATA_DIRS :-(.

I feel like search-path-specification should be augmented to express
patterns that would be useful with search paths such as the too wide
XDG_DATA_DIRS: enable only when a child directory/file is present, for
example.

So far we've been adding ad-hoc fixes in build systems (such as for the
qt-build-system, via (guix build qt-utils)); it seems it'd be cleaner to
add this capability at the search path level.

What do you think?

Maxim
T
T
Thiago Jung Bauermann wrote on 12 Sep 2021 23:55
Please consider also adding this gtk+@2 fix for the world rebuild
(name . GNU Debbugs)(address . control@debbugs.gnu.org)
2422007.ZNODRVHgDc@popigai
block 50358 by 50521
stop

Hi,

As Guillaume noticed, the patch in issue 50521 with a build fix for gtk+@2
on powerpc64le-linux causes more than 2900 packages to rebuild. I hope it’s
not too much trouble to have a look at it and consider whether it can be
added for the world rebuild.

--
Thanks,
Thiago
L
L
Ludovic Courtès wrote on 13 Sep 2021 10:24
Re: bug#50358: [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes.
(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)(address . 50358@debbugs.gnu.org)
87o88wanna.fsf@gnu.org
Hi,

Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:

Toggle quote (11 lines)
> I feel like search-path-specification should be augmented to express
> patterns that would be useful with search paths such as the too wide
> XDG_DATA_DIRS: enable only when a child directory/file is present, for
> example.
>
> So far we've been adding ad-hoc fixes in build systems (such as for the
> qt-build-system, via (guix build qt-utils)); it seems it'd be cleaner to
> add this capability at the search path level.
>
> What do you think?

I’m of the kind who’d rather have reality match the model. ;-)

I think it would be nice to have a FONTCONFIG_FONT_PATH variable that
would only look at share/fonts.

What you describe would have uses beyond fontconfig, which is nice. The
downside is that it would make search path semantics and their
implementation more complex; we’d have to see what the impact is.

Thinking about it, I wonder if having (file-pattern "^fonts$") would
work here. But then, what if a profile contains several packages with
an XDG_DATA_DIRS search path but different ‘file-pattern’ values?…

Thanks,
Ludo’.
T
T
Thiago Jung Bauermann wrote on 15 Sep 2021 01:40
Re: [bug#50358] [PATCH core-updates-frozen 5/8] gnu: rust: Add rust 1.54 and move all non-bootstrapping logic to it.
(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)(address . 50358@debbugs.gnu.org)
4704446.AJh2o8N0jF@popigai
Hello Maxim,

I haven’t looked at this series in detail, so I just have one comment:

Em sexta-feira, 3 de setembro de 2021, às 12:31:13 -03, Maxim Cournoyer
escreveu:
Toggle quote (6 lines)
> ;; Add test inputs.
> - (native-inputs (cons*
> - ;; The tests fail when using GDB 10 (see:
> - ;; https://github.com/rust-lang/rust/issues/79009).
> - `("gdb" ,gdb-9.2)

With this change, gdb-9.2 isn’t used anymore and can be removed.

--
Thanks,
Thiago
M
M
Maxim Cournoyer wrote on 15 Sep 2021 06:32
Re: bug#50358: [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes.
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 50358@debbugs.gnu.org)
87czpao3vc.fsf@gmail.com
Hello,

Ludovic Courtès <ludo@gnu.org> writes:

Toggle quote (17 lines)
> Hi,
>
> Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:
>
>> I feel like search-path-specification should be augmented to express
>> patterns that would be useful with search paths such as the too wide
>> XDG_DATA_DIRS: enable only when a child directory/file is present, for
>> example.
>>
>> So far we've been adding ad-hoc fixes in build systems (such as for the
>> qt-build-system, via (guix build qt-utils)); it seems it'd be cleaner to
>> add this capability at the search path level.
>>
>> What do you think?
>
> I’m of the kind who’d rather have reality match the model. ;-)

Haha! Tough!

Toggle quote (3 lines)
> I think it would be nice to have a FONTCONFIG_FONT_PATH variable that
> would only look at share/fonts.

That'd be nice, but probably harder to convince them than for
XDG_DATA_DIRS, as we'd probably be the only user.

Toggle quote (4 lines)
> What you describe would have uses beyond fontconfig, which is nice. The
> downside is that it would make search path semantics and their
> implementation more complex; we’d have to see what the impact is.

Yes, more complexity, but localized (and can be tested), rather than
diffused (and untested) as of now.

Toggle quote (4 lines)
> Thinking about it, I wonder if having (file-pattern "^fonts$") would
> work here. But then, what if a profile contains several packages with
> an XDG_DATA_DIRS search path but different ‘file-pattern’ values?…

Perhaps this could work too, *if* the behavior of various same-named
environment variable specifications is to be combined into a logical OR
manner (I haven't checked what the current behavior is, but I seem to
recall it not working from past experiments).

Thanks,

Maxim
L
L
Ludovic Courtès wrote on 16 Sep 2021 21:56
(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)(address . 50358@debbugs.gnu.org)
87y27wz44g.fsf@gnu.org
Hi Maxim,

Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:

Toggle quote (2 lines)
> Ludovic Courtès <ludo@gnu.org> writes:

[...]

Toggle quote (6 lines)
>> I think it would be nice to have a FONTCONFIG_FONT_PATH variable that
>> would only look at share/fonts.
>
> That'd be nice, but probably harder to convince them than for
> XDG_DATA_DIRS, as we'd probably be the only user.

Dunno, not necessarily.

Toggle quote (16 lines)
>> What you describe would have uses beyond fontconfig, which is nice. The
>> downside is that it would make search path semantics and their
>> implementation more complex; we’d have to see what the impact is.
>
> Yes, more complexity, but localized (and can be tested), rather than
> diffused (and untested) as of now.
>
>> Thinking about it, I wonder if having (file-pattern "^fonts$") would
>> work here. But then, what if a profile contains several packages with
>> an XDG_DATA_DIRS search path but different ‘file-pattern’ values?…
>
> Perhaps this could work too, *if* the behavior of various same-named
> environment variable specifications is to be combined into a logical OR
> manner (I haven't checked what the current behavior is, but I seem to
> recall it not working from past experiments).

Yes, from what I see, ‘evaluate-search-paths’ would need a
post-processing step to concatenate the results of same named variables.

The only issue is that it returns a list of specification/value pairs,
where the assumption is that one specification corresponds to one value.
We’d need to check call sites and see whether it’s a problem to dismiss
all but the first spec of a given search path, for instance.

Thanks,
Ludo’.
M
M
Mathieu Othacehe wrote on 19 Sep 2021 20:53
control message for bug #50664
(address . control@debbugs.gnu.org)
87v92wpfb5.fsf@meije.i-did-not-set--mail-host-address--so-tickle-me
block 50664 by 50358
quit
M
M
Maxim Cournoyer wrote on 22 Sep 2021 03:42
Re: bug#50358: [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes.
(name . Thiago Jung Bauermann)(address . bauermann@kolabnow.com)(address . 50358@debbugs.gnu.org)
87tuidl725.fsf_-_@gmail.com
Hi Thiago,

Thiago Jung Bauermann <bauermann@kolabnow.com> writes:

Toggle quote (14 lines)
> Hello Maxim,
>
> I haven’t looked at this series in detail, so I just have one comment:
>
> Em sexta-feira, 3 de setembro de 2021, às 12:31:13 -03, Maxim Cournoyer
> escreveu:
>> ;; Add test inputs.
>> - (native-inputs (cons*
>> - ;; The tests fail when using GDB 10 (see:
>> - ;; https://github.com/rust-lang/rust/issues/79009).
>> - `("gdb" ,gdb-9.2)
>
> With this change, gdb-9.2 isn’t used anymore and can be removed.

Good observation; I'm in the process of updating the 'ldc' package on
the master branch, and GDB 10 had regressions with the D language, so I
had to use gcc-8.2 for its test suite; I guess gdb-9.2 would work too.

I'll keep it for now.

Thank you,

Maxim
L
L
Ludovic Courtès wrote on 27 Sep 2021 23:26
control message for bug #50358
(address . control@debbugs.gnu.org)
87lf3hhfqx.fsf@gnu.org
block 50358 by 50830
quit
L
L
Leo Famulari wrote on 28 Sep 2021 01:11
(no subject)
(address . control@debbugs.gnu.org)
YVJPiWdiI80d7glp@jasmine.lan
block 50860 with 50859
block 50860 with 50830
block 50860 with 50358
T
T
Thiago Jung Bauermann wrote on 28 Sep 2021 06:05
Re: bug#50358: [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes.
(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)(address . 50358@debbugs.gnu.org)
10029998.qDse7pAY9i@popigai
Hello Maxim,

Em terça-feira, 21 de setembro de 2021, às 22:42:26 -03, Maxim Cournoyer
escreveu:
Toggle quote (23 lines)
> Thiago Jung Bauermann <bauermann@kolabnow.com> writes:
> >
> > I haven’t looked at this series in detail, so I just have one comment:
> >
> > Em sexta-feira, 3 de setembro de 2021, às 12:31:13 -03, Maxim Cournoyer
> >
> > escreveu:
> >> ;; Add test inputs.
> >>
> >> - (native-inputs (cons*
> >> - ;; The tests fail when using GDB 10 (see:
> >> - ;;
> >> https://github.com/rust-lang/rust/issues/79009). -
> >> `("gdb" ,gdb-9.2)
> >
> > With this change, gdb-9.2 isn’t used anymore and can be removed.
>
> Good observation; I'm in the process of updating the 'ldc' package on
> the master branch, and GDB 10 had regressions with the D language, so I
> had to use gcc-8.2 for its test suite; I guess gdb-9.2 would work too.
>
> I'll keep it for now.

Ah, ok. That means I’ll have to send a patch to fix the build of ‘gdb-9.2’
with GCC 10 on powerpc64le-linux then. I was hoping that wouldn’t be
necessary. :-)

--
Thanks,
Thiago
L
L
Leo Famulari wrote on 29 Sep 2021 16:36
(no subject)
(address . controL@debbugs.gnu.org)
YVR58SnzcokReKZU@jasmine.lan
block 50358 with 50859
M
M
Maxim Cournoyer wrote on 12 Oct 2021 19:47
control message for bug #50358
(address . control@debbugs.gnu.org)
87h7dmyw1s.fsf@gmail.com
unblock 50358 by 50174
quit
J
J
John Kehayias wrote on 15 Oct 2021 07:48
Re: [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes.
(name . 50358@debbugs.gnu.org)(address . 50358@debbugs.gnu.org)
S5BKcZ8p-XYniNY0v0Pc5VVTos2MvzasKyMugTIofTSDS5ZPFIL2m8tnsnCkZEpWjdBPZfo94DvEZpI4vQhzdf1PvtUW3uiiTZwSb5lvL4w=@protonmail.com
Hi all,

I realized I never followed up here when I had messaged https://issues.guix.gnu.org/50860 about other world rebuild changes. Namely p11-kit and Mesa.

I've worked around the p11-kit Flatpak bug in my Flatpak update patches here: https://issues.guix.gnu.org/51100 This can be done on master and I think will fix xdg-desktop-portal-gtk builds on core-updates-frozen (possibly needing a libxml2 input added for some reason).

This introduces a p11-kit-next with a version update and the Flatpak fix, so that can be the new p11-kit in the next core-updates cycle. (Assuming there are no objections to the p11-kit configuration change; I'm not sure why the flag was set the way it was originally.) The updated Flatpak package definition uses this package directly to fix its bug. But all of that doesn't need the big rebuilds, so no worries there.

As for Mesa, they continue at a fast pace. 21.1.8 is the latest bugfix release on 21.1 which should be graftable from what we have in core-updates-frozen already. I didn't submit a 21.1.8 patch but should just be a version bump.

If desired, the latest 21.2 (latest stable version) release patch is available at https://issues.guix.gnu.org/50170 I know it builds on x86_64 at least, but haven't tested dependents. Anyway, I mention here for completeness with my earlier messages.

I'm running my main machine on core-updates-frozen, so I'm happy to test how things go once we get these big rebuilds done.

John
M
M
Maxim Cournoyer wrote on 12 Nov 2021 06:57
Re: bug#50358: [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes.
(address . 50358-done@debbugs.gnu.org)
87lf1tq5ki.fsf@gmail.com
Hello,

Maxim Cournoyer <maxim.cournoyer@gmail.com> writes:

Toggle quote (18 lines)
> Hello,
>
> This series hasten the Rust bootstrap chain by about half (from about 8 to 4
> hours) and fixes other things reported on the core-updates-frozen branch.
> It's a world-rebuilding series (mostly due to the fix to the source repacking
> code), so we might as well combine it with other world-rebuild changes that
> were being put off.
>
> Maxim Cournoyer (8):
> guix: packages: Fix repacking of plain tarballs.
> aux-files: sitecustomize: Cleanup and add explanatory comments.
> gnu: glade3: Remove sitecustomize.py workaround.
> gnu: rust: Bootstrap rust from 1.39.0 and optimize build time.
> gnu: rust: Add rust 1.54 and move all non-bootstrapping logic to it.
> gnu: Build all Rust packages using the latest rustc.
> gnu: mozjs-78: Update to 78.13.0.
> gnu: fontconfig: Add a search path for XDG_DATA_DIRS.

These commits have made it to core-updates-frozen.

Closing!

Maxim
Closed
?