unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#50358] [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes.
@ 2021-09-03 15:29 Maxim Cournoyer
  2021-09-03 15:31 ` [bug#50358] [PATCH core-updates-frozen 1/8] guix: packages: Fix repacking of plain tarballs Maxim Cournoyer
                   ` (2 more replies)
  0 siblings, 3 replies; 22+ messages in thread
From: Maxim Cournoyer @ 2021-09-03 15:29 UTC (permalink / raw)
  To: 50358; +Cc: Maxim Cournoyer

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





^ permalink raw reply	[flat|nested] 22+ messages in thread

* [bug#50358] [PATCH core-updates-frozen 1/8] guix: packages: Fix repacking of plain tarballs.
  2021-09-03 15:29 [bug#50358] [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes Maxim Cournoyer
@ 2021-09-03 15:31 ` Maxim Cournoyer
  2021-09-03 15:31   ` [bug#50358] [PATCH core-updates-frozen 2/8] aux-files: sitecustomize: Cleanup and add explanatory comments Maxim Cournoyer
                     ` (8 more replies)
  2021-10-15  5:48 ` John Kehayias via Guix-patches via
  2021-11-12  5:57 ` bug#50358: " Maxim Cournoyer
  2 siblings, 9 replies; 22+ messages in thread
From: Maxim Cournoyer @ 2021-09-03 15:31 UTC (permalink / raw)
  To: 50358; +Cc: Mathieu Othacehe, Maxim Cournoyer

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>
---
 guix/packages.scm | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

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





^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [bug#50358] [PATCH core-updates-frozen 2/8] aux-files: sitecustomize: Cleanup and add explanatory comments.
  2021-09-03 15:31 ` [bug#50358] [PATCH core-updates-frozen 1/8] guix: packages: Fix repacking of plain tarballs Maxim Cournoyer
@ 2021-09-03 15:31   ` Maxim Cournoyer
  2021-09-03 15:31   ` [bug#50358] [PATCH core-updates-frozen 3/8] gnu: glade3: Remove sitecustomize.py workaround Maxim Cournoyer
                     ` (7 subsequent siblings)
  8 siblings, 0 replies; 22+ messages in thread
From: Maxim Cournoyer @ 2021-09-03 15:31 UTC (permalink / raw)
  To: 50358; +Cc: Hartmut Goebel, Maxim Cournoyer, Mathieu Othacehe

Fixes <https://issues.guix.gnu.org/50105>.

* 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(-)

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





^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [bug#50358] [PATCH core-updates-frozen 3/8] gnu: glade3: Remove sitecustomize.py workaround.
  2021-09-03 15:31 ` [bug#50358] [PATCH core-updates-frozen 1/8] guix: packages: Fix repacking of plain tarballs Maxim Cournoyer
  2021-09-03 15:31   ` [bug#50358] [PATCH core-updates-frozen 2/8] aux-files: sitecustomize: Cleanup and add explanatory comments Maxim Cournoyer
@ 2021-09-03 15:31   ` Maxim Cournoyer
  2021-09-03 15:31   ` [bug#50358] [PATCH core-updates-frozen 4/8] gnu: rust: Bootstrap rust from 1.39.0 and optimize build time Maxim Cournoyer
                     ` (6 subsequent siblings)
  8 siblings, 0 replies; 22+ messages in thread
From: Maxim Cournoyer @ 2021-09-03 15:31 UTC (permalink / raw)
  To: 50358; +Cc: Maxim Cournoyer

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(-)

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





^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [bug#50358] [PATCH core-updates-frozen 4/8] gnu: rust: Bootstrap rust from 1.39.0 and optimize build time.
  2021-09-03 15:31 ` [bug#50358] [PATCH core-updates-frozen 1/8] guix: packages: Fix repacking of plain tarballs Maxim Cournoyer
  2021-09-03 15:31   ` [bug#50358] [PATCH core-updates-frozen 2/8] aux-files: sitecustomize: Cleanup and add explanatory comments Maxim Cournoyer
  2021-09-03 15:31   ` [bug#50358] [PATCH core-updates-frozen 3/8] gnu: glade3: Remove sitecustomize.py workaround Maxim Cournoyer
@ 2021-09-03 15:31   ` Maxim Cournoyer
  2021-09-03 15:31   ` [bug#50358] [PATCH core-updates-frozen 5/8] gnu: rust: Add rust 1.54 and move all non-bootstrapping logic to it Maxim Cournoyer
                     ` (5 subsequent siblings)
  8 siblings, 0 replies; 22+ messages in thread
From: Maxim Cournoyer @ 2021-09-03 15:31 UTC (permalink / raw)
  To: 50358; +Cc: Maxim Cournoyer

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

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))))
          (replace 'install
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -291,31 +321,43 @@ safety and thread safety guarantees.")
     ;; Dual licensed.
     (license (list license:asl2.0 license:expat))))
 
-(define-public rust-1.30
+(define-public rust-1.40
   (package
     (name "rust")
-    (version "1.30.1")
-    (source (origin
-              (inherit (package-source rust-1.29))
-              (uri (rust-uri version))
-              (sha256
-               (base32 "0aavdc1lqv0cjzbqwl5n59yd0bqdlhn0zas61ljf38yrvc18k8rn"))
-              (snippet '(for-each delete-file-recursively
-                                  '("src/jemalloc"
-                                    "src/llvm"
-                                    "src/llvm-emscripten"
-                                    "src/tools/clang"
-                                    "src/tools/lldb")))))
+    (version "1.40.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (rust-uri version))
+       (sha256 (base32 "1ba9llwhqm49w7sz3z0gqscj039m53ky9wxzhaj11z6yg1ah15yx"))
+       (modules '((guix build utils)))
+       ;; llvm-emscripten is no longer bundled, as that codegen backend got
+       ;; removed.
+       (snippet '(for-each delete-file-recursively
+                           '("src/llvm-project"
+                             "vendor/jemalloc-sys/jemalloc")))))
     (outputs '("out" "cargo"))
     (properties '((timeout . 72000)           ;20 hours
                   (max-silent-time . 18000))) ;5 hours (for armel)
     (build-system gnu-build-system)
+    ;; Rust 1.40 does not ship rustc-internal libraries by default (see
+    ;; rustc-dev-split). This means that librustc_driver.so is no longer
+    ;; available in lib/rustlib/$target/lib, which is the directory
+    ;; included in the runpath of librustc_codegen_llvm-llvm.so.  This is
+    ;; detected by our validate-runpath phase as an error, but it is
+    ;; harmless as the codegen backend is loaded by librustc_driver.so
+    ;; itself, which must at that point have been already loaded.  As such,
+    ;; we skip validating the runpath for Rust 1.40.  Rust 1.41 stopped
+    ;; putting the codegen backend in a separate library, which makes this
+    ;; workaround only necessary for this release.
     (arguments
-     ;; Only the final Rust is tested, not the intermediate bootstrap ones,
-     ;; for performance and simplicity.
-     `(#:tests? #f
+     `(#:validate-runpath? #f
+       ;; Only the final Rust is tested, not the intermediate bootstrap ones,
+       ;; for performance and simplicity.
+       #:tests? #f
        #:imported-modules ,%cargo-utils-modules ;for `generate-all-checksums'
-       #:modules ((guix build utils)
+       #:modules ((guix build cargo-utils)
+                  (guix build utils)
                   (guix build gnu-build-system)
                   (ice-9 match)
                   (srfi srfi-1))
@@ -328,6 +370,11 @@ safety and thread safety guarantees.")
              (setenv "CC" (search-input-file inputs "/bin/gcc"))
              ;; The Guix LLVM package installs only shared libraries.
              (setenv "LLVM_LINK_SHARED" "1")))
+         (add-after 'unpack 'add-cc-shim-to-path
+           (lambda _
+             (mkdir-p "/tmp/bin")
+             (symlink (which "gcc") "/tmp/bin/cc")
+             (setenv "PATH" (string-append "/tmp/bin:" (getenv "PATH")))))
          (add-after 'unpack 'neuter-tidy
            ;; We often need to patch tests with various Guix-specific paths.
            ;; This often increases the line length and makes tidy, rustc's
@@ -341,13 +388,6 @@ safety and thread safety guarantees.")
              (substitute* "src/bootstrap/builder.rs"
                ((".*::Tidy,.*")
                 ""))))
-         (add-after 'patch-generated-file-shebangs 'patch-cargo-checksums
-           (lambda* _
-             (use-modules (guix build cargo-utils))
-             (substitute* "src/Cargo.lock"
-               (("(\"checksum .* = )\".*\"" all name)
-                (string-append name "\"" ,%cargo-reference-hash "\"")))
-             (generate-all-checksums "src/vendor")))
          (replace 'configure
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -358,6 +398,14 @@ safety and thread safety guarantees.")
                     (cargo (assoc-ref inputs "cargo-bootstrap"))
                     (llvm (assoc-ref inputs "llvm"))
                     (jemalloc (assoc-ref inputs "jemalloc")))
+               ;; The compiler is no longer directly built against jemalloc, but
+               ;; rather via the jemalloc-sys crate (which vendors the jemalloc
+               ;; source). To use jemalloc we must enable linking to it (otherwise
+               ;; it would use the system allocator), and set an environment
+               ;; variable pointing to the compiled jemalloc.
+               (setenv "JEMALLOC_OVERRIDE"
+                       (search-input-file inputs
+                                          "/lib/libjemalloc_pic.a"))
                (call-with-output-file "config.toml"
                  (lambda (port)
                    (display (string-append "
@@ -373,6 +421,7 @@ submodules = false
 prefix = \"" out "\"
 sysconfdir = \"etc\"
 [rust]
+jemalloc=true
 default-linker = \"" gcc "/bin/gcc" "\"
 channel = \"stable\"
 rpath = true
@@ -381,7 +430,6 @@ llvm-config = \"" llvm "/bin/llvm-config" "\"
 cc = \"" gcc "/bin/gcc" "\"
 cxx = \"" gcc "/bin/g++" "\"
 ar = \"" binutils "/bin/ar" "\"
-jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
 [dist]
 ") port))))))
          (replace 'build
@@ -390,20 +438,25 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                               "-j" (if parallel-build?
                                        (number->string (parallel-job-count))
                                        "1"))))
-               (invoke "./x.py" job-spec "build")
-               (invoke "./x.py" job-spec "build" "src/tools/cargo"))))
+               (invoke "./x.py" job-spec "build" "--stage=1"
+                       "src/libstd"
+                       "src/tools/cargo"))))
          (replace 'install
            (lambda* (#:key outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out"))
-                   (cargo-out (assoc-ref outputs "cargo")))
-               (mkdir-p out)
-               (invoke "./x.py" "install")
-               (substitute* "config.toml"
-                 ;; Adjust the prefix to the 'cargo' output.
-                 (("prefix = \"[^\"]*\"")
-                  (format #f "prefix = ~s" cargo-out)))
-               (mkdir-p cargo-out)
-               (invoke "./x.py" "install" "cargo"))))
+             (let* ((out (assoc-ref outputs "out"))
+                    (cargo-out (assoc-ref outputs "cargo"))
+                    (gnu-triplet ,(or (%current-target-system)
+                                      (nix-system->gnu-triplet-for-rust)))
+                    (build (string-append "build/" gnu-triplet)))
+               ;; Manually do the installation instead of calling './x.py
+               ;; install', as that is slow and needlessly rebuilds some
+               ;; things.
+               (install-file (string-append build "/stage1/bin/rustc")
+                             (string-append out "/bin"))
+               (copy-recursively (string-append build "/stage1/lib")
+                                 (string-append out "/lib"))
+               (install-file (string-append build "/stage1-tools-bin/cargo")
+                             (string-append cargo-out "/bin")))))
          (add-after 'install 'delete-install-logs
            (lambda* (#:key outputs #:allow-other-keys)
              (for-each (lambda (f)
@@ -427,12 +480,12 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
      `(("cmake" ,cmake-minimal)
        ("pkg-config" ,pkg-config)       ; For "cargo"
        ("python" ,python-wrapper)
-       ("rustc-bootstrap" ,rust-1.29)
-       ("cargo-bootstrap" ,rust-1.29 "cargo")
+       ("rustc-bootstrap" ,rust-1.39)
+       ("cargo-bootstrap" ,rust-1.39 "cargo")
        ("which" ,which)))
     (inputs
-     `(("jemalloc" ,jemalloc-4.5.0)
-       ("llvm" ,llvm-7)
+     `(("jemalloc" ,jemalloc)
+       ("llvm" ,llvm)
        ("openssl" ,openssl)
        ("libssh2" ,libssh2)             ; For "cargo"
        ("libcurl" ,curl)))              ; For "cargo"
@@ -450,7 +503,7 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
             (variable "LIBRARY_PATH")
             (files '("lib" "lib64")))))
     (supported-systems
-     (delete "i686-linux"  ; fails to build, see bug #35519
+     (delete "i686-linux"               ; fails to build, see bug #35519
              %supported-systems))
     (synopsis "Compiler for the Rust progamming language")
     (description "Rust is a systems programming language that provides memory
@@ -459,182 +512,26 @@ safety and thread safety guarantees.")
     ;; Dual licensed.
     (license (list license:asl2.0 license:expat))))
 
-(define-public rust-1.31
-  (rust-bootstrapped-package
-   rust-1.30 "1.31.1" "0sk84ff0cklybcp0jbbxcw7lk7mrm6kb6km5nzd6m64dy0igrlli"))
-
-(define-public rust-1.32
-  (let ((base-rust (rust-bootstrapped-package
-                    rust-1.31 "1.32.0"
-                    "0ji2l9xv53y27xy72qagggvq47gayr5lcv2jwvmfirx029vlqnac")))
-    (package
-      (inherit base-rust)
-      (source
-       (origin
-         (inherit (package-source base-rust))
-         (snippet '(for-each delete-file-recursively
-                             '("src/llvm"
-                               "src/llvm-emscripten"
-                               "src/tools/clang"
-                               "src/tools/lldb"
-                               "vendor/jemalloc-sys/jemalloc")))
-          ;; the vendor directory has moved to the root of
-          ;; the tarball, so we have to strip an extra prefix
-         (patch-flags '("-p2"))))
-      (arguments
-       (substitute-keyword-arguments (package-arguments base-rust)
-         ;; The test suite fails due to LLVM 7, required for the build to be
-         ;; reproducible.
-         ((#:tests? _ #t)
-          #f)
-         ((#:phases phases)
-          `(modify-phases ,phases
-             ;; Cargo.lock and the vendor/ directory have been moved to the
-             ;; root of the rust tarball
-             (replace 'patch-cargo-checksums
-               (lambda* _
-                 (use-modules (guix build cargo-utils))
-                 (substitute* "Cargo.lock"
-                   (("(\"checksum .* = )\".*\"" all name)
-                    (string-append name "\"" ,%cargo-reference-hash "\"")))
-                 (generate-all-checksums "vendor")))
-             (add-after 'configure 'override-jemalloc
-               (lambda* (#:key inputs #:allow-other-keys)
-                 ;; The compiler is no longer directly built against jemalloc,
-                 ;; but rather via the jemalloc-sys crate (which vendors the
-                 ;; jemalloc source). To use jemalloc we must enable linking to
-                 ;; it (otherwise it would use the system allocator), and set
-                 ;; an environment variable pointing to the compiled jemalloc.
-                 (substitute* "config.toml"
-                   (("^jemalloc =.*$") "")
-                   (("[[]rust[]]") "\n[rust]\njemalloc=true\n"))
-                 (setenv "JEMALLOC_OVERRIDE"
-                         (search-input-file inputs
-                                            "/lib/libjemalloc_pic.a")))))))))))
-
-(define-public rust-1.33
-  (let ((base-rust (rust-bootstrapped-package
-                    rust-1.32 "1.33.0"
-                    "152x91mg7bz4ygligwjb05fgm1blwy2i70s2j03zc9jiwvbsh0as")))
-    (package
-      (inherit base-rust)
-      (source
-       (origin
-         (inherit (package-source base-rust))
-         (patches '())
-         (patch-flags '("-p1"))))
-      (inputs
-       ;; Upgrade jemalloc.
-       (alist-replace "jemalloc" (list jemalloc) (package-inputs base-rust))))))
-
-(define-public rust-1.34
-  (let ((base-rust (rust-bootstrapped-package
-                    rust-1.33 "1.34.1"
-                    "19s09k7y5j6g3y4d2rk6kg9pvq6ml94c49w6b72dmq8p9lk8bixh")))
-    (package
-      (inherit base-rust)
-      (source
-       (origin
-         (inherit (package-source base-rust))
-         (snippet '(for-each delete-file-recursively
-                             '("src/llvm-emscripten"
-                               "src/llvm-project"
-                               "vendor/jemalloc-sys/jemalloc"))))))))
-
-(define-public rust-1.35
-  (let ((base-rust (rust-bootstrapped-package
-                    rust-1.34 "1.35.0"
-                    "0bbizy6b7002v1rdhrxrf5gijclbyizdhkglhp81ib3bf5x66kas")))
-    (package
-      (inherit base-rust)
-      (arguments
-       (substitute-keyword-arguments (package-arguments base-rust)
-         ((#:phases phases)
-          `(modify-phases ,phases
-             (delete 'disable-codegen-tests))))))))
-
-(define-public rust-1.36
-  (rust-bootstrapped-package
-   rust-1.35 "1.36.0" "06xv2p6zq03lidr0yaf029ii8wnjjqa894nkmrm6s0rx47by9i04"))
-
-(define-public rust-1.37
-  (let ((base-rust (rust-bootstrapped-package
-                    rust-1.36 "1.37.0"
-                    "1hrqprybhkhs6d9b5pjskfnc5z9v2l2gync7nb39qjb5s0h703hj")))
-    (package
-      (inherit base-rust)
-      (arguments
-       (substitute-keyword-arguments (package-arguments base-rust)
-         ((#:phases phases)
-          `(modify-phases ,phases
-             (add-before 'configure 'configure-cargo-home
-               (lambda _
-                 (let ((cargo-home (string-append (getcwd) "/.cargo")))
-                   (mkdir-p cargo-home)
-                   (setenv "CARGO_HOME" cargo-home)))))))))))
-
-(define-public rust-1.38
-  (rust-bootstrapped-package
-    rust-1.37 "1.38.0" "101dlpsfkq67p0hbwx4acqq6n90dj4bbprndizpgh1kigk566hk4"))
-
-(define-public rust-1.39
+(define-public rust-1.41
   (let ((base-rust (rust-bootstrapped-package
-                    rust-1.38 "1.39.0"
-                    "0mwkc1bnil2cfyf6nglpvbn2y0zfbv44zfhsd5qg4c9rm6vgd8dl")))
+                    rust-1.40 "1.41.1"
+                    "0ws5x0fxv57fyllsa6025h3q6j9v3m8nb3syl4x0hgkddq0kvj9q")))
     (package
       (inherit base-rust)
       (arguments
        (substitute-keyword-arguments (package-arguments base-rust)
+         ((#:validate-runpath? _ #t)
+          #t)
          ((#:phases phases)
           `(modify-phases ,phases
-             (replace 'patch-cargo-checksums
-               ;; The Cargo.lock format changed.
+             (delete 'add-cc-shim-to-path)
+             (add-after 'patch-generated-file-shebangs 'patch-cargo-checksums
                (lambda* _
-                 (use-modules (guix build cargo-utils))
                  (substitute* "Cargo.lock"
                    (("(checksum = )\".*\"" all name)
                     (string-append name "\"" ,%cargo-reference-hash "\"")))
                  (generate-all-checksums "vendor"))))))))))
 
-(define-public rust-1.40
-  (let ((base-rust (rust-bootstrapped-package
-                    rust-1.39 "1.40.0"
-                    "1ba9llwhqm49w7sz3z0gqscj039m53ky9wxzhaj11z6yg1ah15yx")))
-    (package
-      (inherit base-rust)
-      (source
-       (origin
-         (inherit (package-source base-rust))
-         ;; llvm-emscripten is no longer bundled, as that codegen backend
-         ;; got removed.
-         (snippet '(for-each delete-file-recursively
-                             '("src/llvm-project"
-                               "vendor/jemalloc-sys/jemalloc")))))
-       ;; Rust 1.40 does not ship rustc-internal libraries by default (see
-       ;; rustc-dev-split). This means that librustc_driver.so is no longer
-       ;; available in lib/rustlib/$target/lib, which is the directory
-       ;; included in the runpath of librustc_codegen_llvm-llvm.so.  This is
-       ;; detected by our validate-runpath phase as an error, but it is
-       ;; harmless as the codegen backend is loaded by librustc_driver.so
-       ;; itself, which must at that point have been already loaded.  As such,
-       ;; we skip validating the runpath for Rust 1.40.  Rust 1.41 stopped
-       ;; putting the codegen backend in a separate library, which makes this
-       ;; workaround only necessary for this release.
-      (arguments (substitute-keyword-arguments (package-arguments base-rust)
-         ((#:validate-runpath? _ #f)
-          #f))))))
-
-(define-public rust-1.41
-  (let ((base-rust (rust-bootstrapped-package
-                    rust-1.40 "1.41.1"
-                    "0ws5x0fxv57fyllsa6025h3q6j9v3m8nb3syl4x0hgkddq0kvj9q")))
-    (package
-      (inherit base-rust)
-      (arguments
-       (substitute-keyword-arguments (package-arguments base-rust)
-         ((#:validate-runpath? _ #t)
-          #t))))))
-
 (define-public rust-1.42
   (rust-bootstrapped-package
    rust-1.41 "1.42.0" "0x9lxs82may6c0iln0b908cxyn1cv7h03n5cmbx3j1bas4qzks6j"))
@@ -687,9 +584,10 @@ safety and thread safety guarantees.")
                                   "-j" (if parallel-build?
                                            (number->string (parallel-job-count))
                                            "1"))))
-                   (invoke "./x.py" job-spec "build")
-                   (invoke "./x.py" job-spec "build" "src/tools/cargo")
-                   (invoke "./x.py" job-spec "build" "src/tools/rustfmt"))))
+                   (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)
@@ -698,9 +596,10 @@ safety and thread safety guarantees.")
                                     "-j" (if parallel-build?
                                              (number->string (parallel-job-count))
                                              "1"))))
-                     (invoke "./x.py" job-spec "test" "-vv")
-                     (invoke "./x.py" job-spec "test" "src/tools/cargo")
-                     (invoke "./x.py" job-spec "test" "src/tools/rustfmt")))))
+                     (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)
@@ -717,8 +616,24 @@ safety and thread safety guarantees.")
                  (invoke "./x.py" "install" "rustfmt"))))))))))
 
 (define-public rust-1.47
-  (rust-bootstrapped-package
-    rust-1.46 "1.47.0" "07fqd2vp7cf1ka3hr207dnnz93ymxml4935vp74g4is79h3dz19i"))
+  (let ((base-rust (rust-bootstrapped-package
+                    rust-1.46 "1.47.0"
+                    "07fqd2vp7cf1ka3hr207dnnz93ymxml4935vp74g4is79h3dz19i")))
+    (package/inherit base-rust
+      (arguments
+       (substitute-keyword-arguments (package-arguments base-rust)
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (replace 'build
+               ;; The standard library source location moved in this release.
+               (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" "--stage=1"
+                           "library/std"
+                           "src/tools/cargo")))))))))))
 
 (define-public rust-1.48
   (rust-bootstrapped-package
-- 
2.33.0





^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [bug#50358] [PATCH core-updates-frozen 5/8] gnu: rust: Add rust 1.54 and move all non-bootstrapping logic to it.
  2021-09-03 15:31 ` [bug#50358] [PATCH core-updates-frozen 1/8] guix: packages: Fix repacking of plain tarballs Maxim Cournoyer
                     ` (2 preceding siblings ...)
  2021-09-03 15:31   ` [bug#50358] [PATCH core-updates-frozen 4/8] gnu: rust: Bootstrap rust from 1.39.0 and optimize build time Maxim Cournoyer
@ 2021-09-03 15:31   ` Maxim Cournoyer
  2021-09-14 23:40     ` Thiago Jung Bauermann via Guix-patches via
  2021-09-03 15:31   ` [bug#50358] [PATCH core-updates-frozen 6/8] gnu: Build all Rust packages using the latest rustc Maxim Cournoyer
                     ` (4 subsequent siblings)
  8 siblings, 1 reply; 22+ messages in thread
From: Maxim Cournoyer @ 2021-09-03 15:31 UTC (permalink / raw)
  To: 50358; +Cc: Maxim Cournoyer

* 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(-)

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





^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [bug#50358] [PATCH core-updates-frozen 6/8] gnu: Build all Rust packages using the latest rustc.
  2021-09-03 15:31 ` [bug#50358] [PATCH core-updates-frozen 1/8] guix: packages: Fix repacking of plain tarballs Maxim Cournoyer
                     ` (3 preceding siblings ...)
  2021-09-03 15:31   ` [bug#50358] [PATCH core-updates-frozen 5/8] gnu: rust: Add rust 1.54 and move all non-bootstrapping logic to it Maxim Cournoyer
@ 2021-09-03 15:31   ` Maxim Cournoyer
  2021-09-03 15:31   ` [bug#50358] [PATCH core-updates-frozen 7/8] gnu: mozjs-78: Update to 78.13.0 Maxim Cournoyer
                     ` (3 subsequent siblings)
  8 siblings, 0 replies; 22+ messages in thread
From: Maxim Cournoyer @ 2021-09-03 15:31 UTC (permalink / raw)
  To: 50358; +Cc: Maxim Cournoyer

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(-)

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





^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [bug#50358] [PATCH core-updates-frozen 7/8] gnu: mozjs-78: Update to 78.13.0.
  2021-09-03 15:31 ` [bug#50358] [PATCH core-updates-frozen 1/8] guix: packages: Fix repacking of plain tarballs Maxim Cournoyer
                     ` (4 preceding siblings ...)
  2021-09-03 15:31   ` [bug#50358] [PATCH core-updates-frozen 6/8] gnu: Build all Rust packages using the latest rustc Maxim Cournoyer
@ 2021-09-03 15:31   ` Maxim Cournoyer
  2021-09-03 15:31   ` [bug#50358] [PATCH core-updates-frozen 8/8] gnu: fontconfig: Add a search path for XDG_DATA_DIRS Maxim Cournoyer
                     ` (2 subsequent siblings)
  8 siblings, 0 replies; 22+ messages in thread
From: Maxim Cournoyer @ 2021-09-03 15:31 UTC (permalink / raw)
  To: 50358; +Cc: Maxim Cournoyer

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(-)

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





^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [bug#50358] [PATCH core-updates-frozen 8/8] gnu: fontconfig: Add a search path for XDG_DATA_DIRS.
  2021-09-03 15:31 ` [bug#50358] [PATCH core-updates-frozen 1/8] guix: packages: Fix repacking of plain tarballs Maxim Cournoyer
                     ` (5 preceding siblings ...)
  2021-09-03 15:31   ` [bug#50358] [PATCH core-updates-frozen 7/8] gnu: mozjs-78: Update to 78.13.0 Maxim Cournoyer
@ 2021-09-03 15:31   ` Maxim Cournoyer
  2021-09-08 16:35     ` [bug#50358] [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes Ludovic Courtès
  2021-09-03 18:47   ` [bug#50358] [PATCH core-updates-frozen 1/8] guix: packages: Fix repacking of plain tarballs Mathieu Othacehe
  2021-09-08 16:27   ` [bug#50358] [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes Ludovic Courtès
  8 siblings, 1 reply; 22+ messages in thread
From: Maxim Cournoyer @ 2021-09-03 15:31 UTC (permalink / raw)
  To: 50358; +Cc: Maxim Cournoyer

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.
---
 gnu/packages/fontutils.scm | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

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





^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [bug#50358] [PATCH core-updates-frozen 1/8] guix: packages: Fix repacking of plain tarballs.
  2021-09-03 15:31 ` [bug#50358] [PATCH core-updates-frozen 1/8] guix: packages: Fix repacking of plain tarballs Maxim Cournoyer
                     ` (6 preceding siblings ...)
  2021-09-03 15:31   ` [bug#50358] [PATCH core-updates-frozen 8/8] gnu: fontconfig: Add a search path for XDG_DATA_DIRS Maxim Cournoyer
@ 2021-09-03 18:47   ` Mathieu Othacehe
  2021-09-08 16:27   ` [bug#50358] [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes Ludovic Courtès
  8 siblings, 0 replies; 22+ messages in thread
From: Mathieu Othacehe @ 2021-09-03 18:47 UTC (permalink / raw)
  To: Maxim Cournoyer; +Cc: 50358


Hello Maxim,

> * 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




^ permalink raw reply	[flat|nested] 22+ messages in thread

* [bug#50358] [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes.
  2021-09-03 15:31 ` [bug#50358] [PATCH core-updates-frozen 1/8] guix: packages: Fix repacking of plain tarballs Maxim Cournoyer
                     ` (7 preceding siblings ...)
  2021-09-03 18:47   ` [bug#50358] [PATCH core-updates-frozen 1/8] guix: packages: Fix repacking of plain tarballs Mathieu Othacehe
@ 2021-09-08 16:27   ` Ludovic Courtès
  2021-09-12  2:49     ` Maxim Cournoyer
  8 siblings, 1 reply; 22+ messages in thread
From: Ludovic Courtès @ 2021-09-08 16:27 UTC (permalink / raw)
  To: Maxim Cournoyer; +Cc: Mathieu Othacehe, 50358

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?

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

Thanks,
Ludo’.




^ permalink raw reply	[flat|nested] 22+ messages in thread

* [bug#50358] [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes.
  2021-09-03 15:31   ` [bug#50358] [PATCH core-updates-frozen 8/8] gnu: fontconfig: Add a search path for XDG_DATA_DIRS Maxim Cournoyer
@ 2021-09-08 16:35     ` Ludovic Courtès
  2021-09-12  2:56       ` Maxim Cournoyer
  0 siblings, 1 reply; 22+ messages in thread
From: Ludovic Courtès @ 2021-09-08 16:35 UTC (permalink / raw)
  To: Maxim Cournoyer; +Cc: 50358

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.  :-)

> +     (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’.




^ permalink raw reply	[flat|nested] 22+ messages in thread

* [bug#50358] [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes.
  2021-09-08 16:27   ` [bug#50358] [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes Ludovic Courtès
@ 2021-09-12  2:49     ` Maxim Cournoyer
  0 siblings, 0 replies; 22+ messages in thread
From: Maxim Cournoyer @ 2021-09-12  2:49 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: Mathieu Othacehe, 50358

Hello!

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

> 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) :-).

> 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




^ permalink raw reply	[flat|nested] 22+ messages in thread

* [bug#50358] [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes.
  2021-09-08 16:35     ` [bug#50358] [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes Ludovic Courtès
@ 2021-09-12  2:56       ` Maxim Cournoyer
  2021-09-13  8:24         ` Ludovic Courtès
  0 siblings, 1 reply; 22+ messages in thread
From: Maxim Cournoyer @ 2021-09-12  2:56 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 50358

Hi!

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

> 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.  :-)

:-)

>> +     (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




^ permalink raw reply	[flat|nested] 22+ messages in thread

* [bug#50358] [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes.
  2021-09-12  2:56       ` Maxim Cournoyer
@ 2021-09-13  8:24         ` Ludovic Courtès
  2021-09-15  4:32           ` Maxim Cournoyer
  0 siblings, 1 reply; 22+ messages in thread
From: Ludovic Courtès @ 2021-09-13  8:24 UTC (permalink / raw)
  To: Maxim Cournoyer; +Cc: 50358

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.  ;-)

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’.






^ permalink raw reply	[flat|nested] 22+ messages in thread

* [bug#50358] [PATCH core-updates-frozen 5/8] gnu: rust: Add rust 1.54 and move all non-bootstrapping logic to it.
  2021-09-03 15:31   ` [bug#50358] [PATCH core-updates-frozen 5/8] gnu: rust: Add rust 1.54 and move all non-bootstrapping logic to it Maxim Cournoyer
@ 2021-09-14 23:40     ` Thiago Jung Bauermann via Guix-patches via
  2021-09-22  1:42       ` [bug#50358] [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes Maxim Cournoyer
  0 siblings, 1 reply; 22+ messages in thread
From: Thiago Jung Bauermann via Guix-patches via @ 2021-09-14 23:40 UTC (permalink / raw)
  To: Maxim Cournoyer; +Cc: 50358

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.

-- 
Thanks,
Thiago






^ permalink raw reply	[flat|nested] 22+ messages in thread

* [bug#50358] [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes.
  2021-09-13  8:24         ` Ludovic Courtès
@ 2021-09-15  4:32           ` Maxim Cournoyer
  2021-09-16 19:56             ` Ludovic Courtès
  0 siblings, 1 reply; 22+ messages in thread
From: Maxim Cournoyer @ 2021-09-15  4:32 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 50358

Hello,

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

> 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!

> 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.

> 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).

Thanks,

Maxim




^ permalink raw reply	[flat|nested] 22+ messages in thread

* [bug#50358] [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes.
  2021-09-15  4:32           ` Maxim Cournoyer
@ 2021-09-16 19:56             ` Ludovic Courtès
  0 siblings, 0 replies; 22+ messages in thread
From: Ludovic Courtès @ 2021-09-16 19:56 UTC (permalink / raw)
  To: Maxim Cournoyer; +Cc: 50358

Hi Maxim,

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

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

[...]

>> 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.

>> 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’.




^ permalink raw reply	[flat|nested] 22+ messages in thread

* [bug#50358] [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes.
  2021-09-14 23:40     ` Thiago Jung Bauermann via Guix-patches via
@ 2021-09-22  1:42       ` Maxim Cournoyer
  2021-09-28  4:05         ` Thiago Jung Bauermann via Guix-patches via
  0 siblings, 1 reply; 22+ messages in thread
From: Maxim Cournoyer @ 2021-09-22  1:42 UTC (permalink / raw)
  To: Thiago Jung Bauermann; +Cc: 50358

Hi Thiago,

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

> 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




^ permalink raw reply	[flat|nested] 22+ messages in thread

* [bug#50358] [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes.
  2021-09-22  1:42       ` [bug#50358] [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes Maxim Cournoyer
@ 2021-09-28  4:05         ` Thiago Jung Bauermann via Guix-patches via
  0 siblings, 0 replies; 22+ messages in thread
From: Thiago Jung Bauermann via Guix-patches via @ 2021-09-28  4:05 UTC (permalink / raw)
  To: Maxim Cournoyer; +Cc: 50358

Hello Maxim,

Em terça-feira, 21 de setembro de 2021, às 22:42:26 -03, Maxim Cournoyer 
escreveu:
> 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






^ permalink raw reply	[flat|nested] 22+ messages in thread

* [bug#50358] [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes.
  2021-09-03 15:29 [bug#50358] [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes Maxim Cournoyer
  2021-09-03 15:31 ` [bug#50358] [PATCH core-updates-frozen 1/8] guix: packages: Fix repacking of plain tarballs Maxim Cournoyer
@ 2021-10-15  5:48 ` John Kehayias via Guix-patches via
  2021-11-12  5:57 ` bug#50358: " Maxim Cournoyer
  2 siblings, 0 replies; 22+ messages in thread
From: John Kehayias via Guix-patches via @ 2021-10-15  5:48 UTC (permalink / raw)
  To: 50358@debbugs.gnu.org

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




^ permalink raw reply	[flat|nested] 22+ messages in thread

* bug#50358: [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes.
  2021-09-03 15:29 [bug#50358] [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes Maxim Cournoyer
  2021-09-03 15:31 ` [bug#50358] [PATCH core-updates-frozen 1/8] guix: packages: Fix repacking of plain tarballs Maxim Cournoyer
  2021-10-15  5:48 ` John Kehayias via Guix-patches via
@ 2021-11-12  5:57 ` Maxim Cournoyer
  2 siblings, 0 replies; 22+ messages in thread
From: Maxim Cournoyer @ 2021-11-12  5:57 UTC (permalink / raw)
  To: 50358-done

Hello,

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

> 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




^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2021-11-12  5:58 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-09-03 15:29 [bug#50358] [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes Maxim Cournoyer
2021-09-03 15:31 ` [bug#50358] [PATCH core-updates-frozen 1/8] guix: packages: Fix repacking of plain tarballs Maxim Cournoyer
2021-09-03 15:31   ` [bug#50358] [PATCH core-updates-frozen 2/8] aux-files: sitecustomize: Cleanup and add explanatory comments Maxim Cournoyer
2021-09-03 15:31   ` [bug#50358] [PATCH core-updates-frozen 3/8] gnu: glade3: Remove sitecustomize.py workaround Maxim Cournoyer
2021-09-03 15:31   ` [bug#50358] [PATCH core-updates-frozen 4/8] gnu: rust: Bootstrap rust from 1.39.0 and optimize build time Maxim Cournoyer
2021-09-03 15:31   ` [bug#50358] [PATCH core-updates-frozen 5/8] gnu: rust: Add rust 1.54 and move all non-bootstrapping logic to it Maxim Cournoyer
2021-09-14 23:40     ` Thiago Jung Bauermann via Guix-patches via
2021-09-22  1:42       ` [bug#50358] [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes Maxim Cournoyer
2021-09-28  4:05         ` Thiago Jung Bauermann via Guix-patches via
2021-09-03 15:31   ` [bug#50358] [PATCH core-updates-frozen 6/8] gnu: Build all Rust packages using the latest rustc Maxim Cournoyer
2021-09-03 15:31   ` [bug#50358] [PATCH core-updates-frozen 7/8] gnu: mozjs-78: Update to 78.13.0 Maxim Cournoyer
2021-09-03 15:31   ` [bug#50358] [PATCH core-updates-frozen 8/8] gnu: fontconfig: Add a search path for XDG_DATA_DIRS Maxim Cournoyer
2021-09-08 16:35     ` [bug#50358] [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes Ludovic Courtès
2021-09-12  2:56       ` Maxim Cournoyer
2021-09-13  8:24         ` Ludovic Courtès
2021-09-15  4:32           ` Maxim Cournoyer
2021-09-16 19:56             ` Ludovic Courtès
2021-09-03 18:47   ` [bug#50358] [PATCH core-updates-frozen 1/8] guix: packages: Fix repacking of plain tarballs Mathieu Othacehe
2021-09-08 16:27   ` [bug#50358] [PATCH core-updates-frozen 0/8] Shortened Rust bootstrap & other fixes Ludovic Courtès
2021-09-12  2:49     ` Maxim Cournoyer
2021-10-15  5:48 ` John Kehayias via Guix-patches via
2021-11-12  5:57 ` bug#50358: " Maxim Cournoyer

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).