GNU bug report logs - #34483
[PATCH] gnu: rust: remove dependency on cargo-build-system module

Previous Next

Package: guix-patches;

Reported by: Ivan Petkov <ivanppetkov <at> gmail.com>

Date: Fri, 15 Feb 2019 07:06:02 UTC

Severity: normal

Tags: patch

Done: Danny Milosavljevic <dannym <at> scratchpost.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 34483 in the body.
You can then email your comments to 34483 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#34483; Package guix-patches. (Fri, 15 Feb 2019 07:06:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Ivan Petkov <ivanppetkov <at> gmail.com>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Fri, 15 Feb 2019 07:06:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Ivan Petkov <ivanppetkov <at> gmail.com>
To: guix-patches <at> gnu.org
Cc: Danny Milosavljevic <dannym <at> scratchpost.org>
Subject: [PATCH] gnu: rust: remove dependency on cargo-build-system module
Date: Thu, 14 Feb 2019 23:04:28 -0800
* Makefile.am (guix/build/cargo-utils.scm): add it
* guix/build/cargo-utils.scm: Add new module for standalone cargo
utilities
* guix/build-system/cargo.scm (%cargo-utils-modules): define a
list of modules which (guix build cargo-utils) depends on
(%cargo-build-system-modules): change it to depend on
%cargo-utils-modules
* guix/build/cargo-build-system.scm (file-sha256): move it to
(guix build cargo-utils)
(generate-checksums): move it to (guix build cargo-utils)
* gnu/packages/rust.scm (rust-1.19.0):
[imported-modules]: change to using %cargo-utils-modules
['patch-cargo-checksums]: import (guix build cargo-utils) instead of
(guix build cargo-build-system)
* gnu/packages/gnuzilla.scm (icecat):
[imported-modules]: change to using %cargo-utils-modules
['patch-cargo-checksums]: import (guix build cargo-utils) instead of
(guix build cargo-build-system)
---
 Makefile.am                       |  1 +
 gnu/packages/gnuzilla.scm         |  7 ++--
 gnu/packages/rust.scm             |  5 ++-
 guix/build-system/cargo.scm       |  9 ++++-
 guix/build/cargo-build-system.scm | 39 +-----------------
 guix/build/cargo-utils.scm        | 67 +++++++++++++++++++++++++++++++
 6 files changed, 85 insertions(+), 43 deletions(-)
 create mode 100644 guix/build/cargo-utils.scm

diff --git a/Makefile.am b/Makefile.am
index fec9800ce..1083ee2ac 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -144,6 +144,7 @@ MODULES =					\
   guix/build/download.scm			\
   guix/build/download-nar.scm			\
   guix/build/cargo-build-system.scm		\
+  guix/build/cargo-utils.scm			\
   guix/build/cmake-build-system.scm		\
   guix/build/dub-build-system.scm		\
   guix/build/dune-build-system.scm		\
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 1f299a2b1..e5006e4bf 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -9,6 +9,7 @@
 ;;; Copyright © 2017 Nils Gillmann <ng0 <at> n0.is>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me <at> tobias.gr>
 ;;; Copyright © 2018 Ricardo Wurmus <rekado <at> elephly.net>
+;;; Copyright © 2019 Ivan Petkov <ivanppetkov <at> gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -865,8 +866,6 @@ from forcing GEXP-PROMISE."
        ;; practice somehow.  See <http://hydra.gnu.org/build/378133>.
        #:validate-runpath? #f
 
-       #:imported-modules ,%cargo-build-system-modules ;for `generate-checksums'
-
        #:configure-flags `("--enable-default-toolkit=cairo-gtk3"
 
                            "--with-distribution-id=org.gnu"
@@ -938,6 +937,8 @@ from forcing GEXP-PROMISE."
                            ;; "--with-system-png"
                            )
 
+       #:imported-modules ,%cargo-utils-modules ;for `generate-checksums'
+
        #:modules ((ice-9 ftw)
                   (ice-9 rdelim)
                   (ice-9 match)
@@ -977,7 +978,7 @@ from forcing GEXP-PROMISE."
              (invoke "sh" "-c" "autoconf old-configure.in > old-configure")))
          (add-after 'patch-source-shebangs 'patch-cargo-checksums
            (lambda _
-             (use-modules (guix build cargo-build-system))
+             (use-modules (guix build cargo-utils))
              (let ((null-file "/dev/null")
                    (null-hash "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"))
                (substitute* '("Cargo.lock" "servo/Cargo.lock")
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 179689973..3cb64795b 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2017 Efraim Flashner <efraim <at> flashner.co.il>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me <at> tobias.gr>
 ;;; Copyright © 2018 Danny Milosavljevic <dannym+a <at> scratchpost.org>
+;;; Copyright © 2019 Ivan Petkov <ivanppetkov <at> gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -194,7 +195,7 @@ safety and thread safety guarantees.")
     (properties '((timeout . 72000)               ;20 hours
                   (max-silent-time . 18000)))     ;5 hours (for armel)
     (arguments
-     `(#:imported-modules ,%cargo-build-system-modules ;for `generate-checksums'
+     `(#:imported-modules ,%cargo-utils-modules ;for `generate-checksums'
        #:modules ((guix build utils) (ice-9 match) (guix build gnu-build-system))
        #:phases
        (modify-phases %standard-phases
@@ -273,7 +274,7 @@ test = { path = \"../libtest\" }
                 (string-append name "\"" ,%cargo-reference-hash "\"")))
              (for-each
               (lambda (filename)
-                (use-modules (guix build cargo-build-system))
+                (use-modules (guix build cargo-utils))
                 (delete-file filename)
                 (let* ((dir (dirname filename)))
                   (display (string-append
diff --git a/guix/build-system/cargo.scm b/guix/build-system/cargo.scm
index 4a1eb0cfa..7ff4e90f7 100644
--- a/guix/build-system/cargo.scm
+++ b/guix/build-system/cargo.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2013 Andreas Enge <andreas <at> enge.fr>
 ;;; Copyright © 2013 Nikita Karetnikov <nikita <at> karetnikov.org>
 ;;; Copyright © 2016 David Craven <david <at> craven.ch>
+;;; Copyright © 2019 Ivan Petkov <ivanppetkov <at> gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -30,6 +31,7 @@
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-26)
   #:export (%cargo-build-system-modules
+            %cargo-utils-modules
             cargo-build-system
             crate-url
             crate-url?
@@ -49,10 +51,15 @@ to NAME and VERSION."
   (let ((rust (resolve-interface '(gnu packages rust))))
     (module-ref rust 'rust)))
 
+(define %cargo-utils-modules
+  ;; Build-side modules imported by default.
+  `((guix build cargo-utils)
+    ,@%gnu-build-system-modules))
+
 (define %cargo-build-system-modules
   ;; Build-side modules imported by default.
   `((guix build cargo-build-system)
-    ,@%gnu-build-system-modules))
+    ,@%cargo-utils-modules))
 
 (define* (cargo-build store name inputs
                       #:key
diff --git a/guix/build/cargo-build-system.scm b/guix/build/cargo-build-system.scm
index f52444f61..20087fa6c 100644
--- a/guix/build/cargo-build-system.scm
+++ b/guix/build/cargo-build-system.scm
@@ -20,6 +20,7 @@
 (define-module (guix build cargo-build-system)
   #:use-module ((guix build gnu-build-system) #:prefix gnu:)
   #:use-module (guix build utils)
+  #:use-module (guix build cargo-utils)
   #:use-module (ice-9 popen)
   #:use-module (ice-9 rdelim)
   #:use-module (ice-9 ftw)
@@ -28,8 +29,7 @@
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26)
   #:export (%standard-phases
-            cargo-build
-            generate-checksums))
+            cargo-build))
 
 ;; Commentary:
 ;;
@@ -107,41 +107,6 @@ directory = '" port)
       (zero? (system* "cargo" "test"))
       #t))
 
-(define (file-sha256 file-name)
-  "Calculate the hexdigest of the sha256 checksum of FILE-NAME and return it."
-  (let ((port (open-pipe* OPEN_READ
-                          "sha256sum"
-                          "--"
-                          file-name)))
-    (let ((result (read-delimited " " port)))
-      (close-pipe port)
-      result)))
-
-(define (generate-checksums dir-name src-name)
-  "Given DIR-NAME, a store directory, checksum all the files in it one
-by one and put the result into the file \".cargo-checksum.json\" in
-the same directory.  Also includes the checksum of an extra file
-SRC-NAME as if it was part of the directory DIR-NAME with name
-\"package\"."
-  (let* ((file-names (find-files dir-name "."))
-         (dir-prefix-name (string-append dir-name "/"))
-         (dir-prefix-name-len (string-length dir-prefix-name))
-         (checksums-file-name (string-append dir-name "/.cargo-checksum.json")))
-    (call-with-output-file checksums-file-name
-      (lambda (port)
-        (display "{\"files\":{" port)
-        (let ((sep ""))
-          (for-each (lambda (file-name)
-            (let ((file-relative-name (string-drop file-name dir-prefix-name-len)))
-                  (display sep port)
-                  (set! sep ",")
-                  (write file-relative-name port)
-                  (display ":" port)
-                  (write (file-sha256 file-name) port))) file-names))
-        (display "},\"package\":" port)
-        (write (file-sha256 src-name) port)
-        (display "}" port)))))
-
 (define (touch file-name)
   (call-with-output-file file-name (const #t)))
 
diff --git a/guix/build/cargo-utils.scm b/guix/build/cargo-utils.scm
new file mode 100644
index 000000000..6af572e61
--- /dev/null
+++ b/guix/build/cargo-utils.scm
@@ -0,0 +1,67 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 David Craven <david <at> craven.ch>
+;;; Copyright © 2017 Mathieu Othacehe <m.othacehe <at> gmail.com>
+;;; Copyright © 2019 Ivan Petkov <ivanppetkov <at> gmail.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (guix build cargo-utils)
+  #:use-module (guix build utils)
+  #:use-module (ice-9 popen)
+  #:use-module (ice-9 rdelim)
+  #:export (generate-checksums))
+
+;; Commentary:
+;;
+;; Stand alone utilities for building Rust crates or the compiler itself,
+;; without depending on the entire cargo build-system itself.
+;;
+;; Code:
+
+(define (file-sha256 file-name)
+  "Calculate the hexdigest of the sha256 checksum of FILE-NAME and return it."
+  (let ((port (open-pipe* OPEN_READ
+                          "sha256sum"
+                          "--"
+                          file-name)))
+    (let ((result (read-delimited " " port)))
+      (close-pipe port)
+      result)))
+
+(define (generate-checksums dir-name src-name)
+  "Given DIR-NAME, a store directory, checksum all the files in it one
+by one and put the result into the file \".cargo-checksum.json\" in
+the same directory.  Also includes the checksum of an extra file
+SRC-NAME as if it was part of the directory DIR-NAME with name
+\"package\"."
+  (let* ((file-names (find-files dir-name "."))
+         (dir-prefix-name (string-append dir-name "/"))
+         (dir-prefix-name-len (string-length dir-prefix-name))
+         (checksums-file-name (string-append dir-name "/.cargo-checksum.json")))
+    (call-with-output-file checksums-file-name
+      (lambda (port)
+        (display "{\"files\":{" port)
+        (let ((sep ""))
+          (for-each (lambda (file-name)
+            (let ((file-relative-name (string-drop file-name dir-prefix-name-len)))
+                  (display sep port)
+                  (set! sep ",")
+                  (write file-relative-name port)
+                  (display ":" port)
+                  (write (file-sha256 file-name) port))) file-names))
+        (display "},\"package\":" port)
+        (write (file-sha256 src-name) port)
+        (display "}" port)))))
-- 
2.20.1





Information forwarded to guix-patches <at> gnu.org:
bug#34483; Package guix-patches. (Sun, 24 Feb 2019 19:47:02 GMT) Full text and rfc822 format available.

Message #8 received at 34483 <at> debbugs.gnu.org (full text, mbox):

From: Ivan Petkov <ivanppetkov <at> gmail.com>
To: Danny Milosavljevic <dannym <at> scratchpost.org>
Cc: 34483 <at> debbugs.gnu.org
Subject: [bug #34483] [PATCH] gnu: rust: remove dependency on
 cargo-build-system module
Date: Sun, 24 Feb 2019 11:46:47 -0800
Hi Danny,

Do you have any feedback on this patch, or do you know someone else who might?

Thanks,
--Ivan



Information forwarded to guix-patches <at> gnu.org:
bug#34483; Package guix-patches. (Wed, 27 Feb 2019 16:02:01 GMT) Full text and rfc822 format available.

Message #11 received at 34483 <at> debbugs.gnu.org (full text, mbox):

From: Danny Milosavljevic <dannym <at> scratchpost.org>
To: Ivan Petkov <ivanppetkov <at> gmail.com>
Cc: 34483 <at> debbugs.gnu.org
Subject: Re: [bug #34483] [PATCH] gnu: rust: remove dependency on
 cargo-build-system module
Date: Wed, 27 Feb 2019 17:01:00 +0100
[Message part 1 (text/plain, inline)]
Hi,

that patch is a good idea.

I'm running tests of both icecat and rust using this patch, it will take a few days for them to finish.
[Message part 2 (application/pgp-signature, inline)]

Reply sent to Danny Milosavljevic <dannym <at> scratchpost.org>:
You have taken responsibility. (Fri, 01 Mar 2019 07:23:01 GMT) Full text and rfc822 format available.

Notification sent to Ivan Petkov <ivanppetkov <at> gmail.com>:
bug acknowledged by developer. (Fri, 01 Mar 2019 07:23:02 GMT) Full text and rfc822 format available.

Message #16 received at 34483-done <at> debbugs.gnu.org (full text, mbox):

From: Danny Milosavljevic <dannym <at> scratchpost.org>
To: Ivan Petkov <ivanppetkov <at> gmail.com>
Cc: 34483-done <at> debbugs.gnu.org
Subject: Re: [bug #34483] [PATCH] gnu: rust: remove dependency on
 cargo-build-system module
Date: Fri, 1 Mar 2019 08:22:03 +0100
[Message part 1 (text/plain, inline)]
Hi,

I've applied that patch to guix master and pushed.

Thanks!
[Message part 2 (application/pgp-signature, inline)]

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Fri, 29 Mar 2019 11:24:05 GMT) Full text and rfc822 format available.

This bug report was last modified 5 years and 27 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.