Subject: bug#52181: closed (Re: bug#52181: [core-update-frozen] many rust package can't build because them source file-name use ".crate" suffix.)

From: [email-masked] (GNU bug Tracking System)
Date: Thu, 02 Dec 2021 08:38:01 +0000

Your bug report

#52181: [core-update-frozen] many rust package can't build because them source file-name use ".crate" suffix.

which was filed against the guix package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
52181: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=52181
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#52181: [core-update-frozen] many rust package can't build because them source file-name use ".crate" suffix.
From: Efraim Flashner <[email-masked]>
To: [email-masked]
Date: Thu, 2 Dec 2021 10:36:51 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Thanks for the patch. Patch pushed!

-- 
Efraim Flashner   <[email-masked]>   רנשלפ םירפא
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted

Subject: [core-update-frozen] many rust package can't build because them source file-name use ".crate" suffix.
From: Z572 <[email-masked]>
To: [email-masked]
Date: Mon, 29 Nov 2021 22:31:48 +0800
List-Id: <debbugs-submit.debbugs.gnu.org>

hello,

many rust package can't build in core-update-frozen because them
source file-name use ".crate" suffix.

core-update-frozen change unpack phase:
see guix/build/gnu-build-system.scm unpack phase:

#+BEGIN_SRC diff
@@ -156,13 +157,25 @@
         ;; Preserve timestamps (set to the Epoch) on the copied tree so that
         ;; things work deterministically.
         (copy-recursively source "."
-                          #:keep-mtime? #t))
+                          #:keep-mtime? #t)
+        ;; Make the source checkout files writable, for convenience.
+        (for-each (lambda (f)
+                    (false-if-exception (make-file-writable f)))
+                  (find-files ".")))
       (begin
-        (if (string-suffix? ".zip" source)
-            (invoke "unzip" source)
-            (invoke "tar" "xvf" source))
-        (chdir (first-subdirectory "."))))
-  #t)
+        (cond
+         ((string-suffix? ".zip" source)
+          (invoke "unzip" source))
+         ((tarball? source)
+          (invoke "tar" "xvf" source))
+         (else
+          (let ((name (strip-store-file-name source))
+                (command (compressor source)))
+            (copy-file source name)
+            (when command
+              (invoke command "--decompress" name)))))
+        ;; Attempt to change into child directory.
+        (and=> (first-subdirectory ".") chdir))))

#+END_SRC

and guix/build/utils.scm:

#+BEGIN_SRC scheme
(define (tarball? file-name)
  "True when FILE-NAME has a tar file extension."
  (string-match "\\.(tar(\\..*)?|tgz|tbz)$" file-name))
#+END_SRC

".crate" no match it.

so

#+BEGIN_SRC bash
$ ls /tmp/guix-build-rust-pkg-config-0.3.19.drv-0/
environment-variables  rust-pkg-config-0.3.19.crate
#+END_SRC

I think have 2 option:

 1. change suffix from ".crate" to ".tar.gz".
 2. maybe let "tarball?" check file like command-line program "file", no
 just check filename suffix.

-- 
over