From 57be7a01841e9d0a07b02ab7779d65f216d83758 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Tue, 17 Dec 2024 11:50:56 +0200 Subject: [PATCH] gnu: rust-ring-0.14: Build source using trivial-build-system. This removes this use of computed-origin-method. * gnu/packages/crates-crypto.scm (rust-ring-0.14-sources): Replace use of computed-origin-method with an actual package. Change-Id: Ice40161411828b88321509a1cf5b07a6553f0ce7 --- gnu/packages/crates-crypto.scm | 345 +++++++++++++++++---------------- 1 file changed, 173 insertions(+), 172 deletions(-) diff --git a/gnu/packages/crates-crypto.scm b/gnu/packages/crates-crypto.scm index d2dd3f8ec7..25bb1bb897 100644 --- a/gnu/packages/crates-crypto.scm +++ b/gnu/packages/crates-crypto.scm @@ -4617,198 +4617,198 @@ (define-public rust-ring-0.16 (supported-systems (list "aarch64-linux" "armhf-linux" "i686-linux" "x86_64-linux")))) -(define computed-origin-method (@@ (guix packages) computed-origin-method)) (define rust-ring-0.14-sources - (let* ((version "0.14.6") - (upstream-source - (origin + (package + (inherit rust-ring-0.17-sources) + (name "rust-ring") + (version "0.14.6.tar.gz") ; Hack to adjust the output name. + (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/briansmith/ring") (commit "ef85df478152aa3fe06c811309379efa08f8a529"))) (file-name (git-file-name "rust-ring" version)) (sha256 - (base32 "12dgw2spvmkdypgzymw3bxpv4bbpnlq8s10sdggral31x597n6xx"))))) - (origin - (method computed-origin-method) - (file-name (string-append "rust-ring-" version ".tar.gz")) - (sha256 #f) - (uri - (delay - (with-imported-modules '((guix build utils)) - #~(begin - (use-modules (guix build utils)) - (set-path-environment-variable - "PATH" '("bin") - (list #+(canonical-package gzip) - #+(canonical-package tar) - #+perl - #+yasm - #+go - #+clang ; clang-format - #+python2-minimal)) - (setenv "HOME" (getcwd)) - (copy-recursively #+upstream-source - (string-append "ring-" #$version)) - (with-directory-excursion (string-append "ring-" #$version) - (begin - ;; It turns out Guix's yasm works just fine here. - (substitute* "build.rs" - (("yasm.exe") "yasm")) - ;; Files which would be deleted in a snippet: - (delete-file "third_party/fiat/curve25519_tables.h") - (delete-file "crypto/fipsmodule/ec/ecp_nistz256_table.inl") - (delete-file "util/ar/testdata/linux/libsample.a") - (delete-file "util/ar/testdata/mac/libsample.a") - (delete-file "util/ar/testdata/windows/sample.lib") - ;; Fix the doc tests. - (substitute* "src/ec/curve25519/ed25519/verification.rs" - ((";;") ";")) - ;; Files to be generated in the sources: - (format #t "Generating the missing files ...~%") - (force-output) - (with-directory-excursion "third_party/fiat" - (with-output-to-file "curve25519_tables.h" - (lambda _ (invoke "python" "make_curve25519_tables.py")))) - (with-directory-excursion "crypto/fipsmodule/ec" - ;; This one seems to have been changed elsewhere in the - ;; sources but not in the script generating the definition. - (substitute* "make_p256-x86_64-table.go" - (("ecp_nistz256_precomputed") "GFp_nistz256_precomputed")) - (with-output-to-file "ecp_nistz256_table.inl" - (lambda _ (invoke "go" "run" "make_p256-x86_64-table.go")))) - (format #t "Generating the pregenerated files ...~%") - (force-output) - (mkdir-p "pregenerated/tmp") + (base32 "12dgw2spvmkdypgzymw3bxpv4bbpnlq8s10sdggral31x597n6xx")) + (snippet + #~(begin (use-modules (guix build utils)) + ;; It turns out Guix's yasm works just fine here. + (substitute* "build.rs" + (("yasm.exe") "yasm")) + ;; These files are pregenerated: + (delete-file "third_party/fiat/curve25519_tables.h") + (delete-file "crypto/fipsmodule/ec/ecp_nistz256_table.inl") + (delete-file "util/ar/testdata/linux/libsample.a") + (delete-file "util/ar/testdata/mac/libsample.a") + (delete-file "util/ar/testdata/windows/sample.lib") + ;; Fix the doc tests. + (substitute* "src/ec/curve25519/ed25519/verification.rs" + ((";;") ";")))))) + (arguments + (list + #:modules '((guix build utils)) + #:builder + #~(begin + (use-modules (guix build utils)) + (setenv "PATH" + (string-join + (list #+(this-package-native-input "clang") ; for clang-format + #+(this-package-native-input "go") + #+(this-package-native-input "gzip") + #+(this-package-native-input "perl") + #+(this-package-native-input "python2-minimal") + #+(this-package-native-input "tar") + #+(this-package-native-input "yasm")) + "/bin:" 'suffix)) - ;; We generate all the files which upstream would normally be - ;; generate by using '(cd pregenerate_asm && cargo clean && - ;; cargo build) ./pregenerate_asm/target/debug/pregenerate_asm' - ;; in order to not include a dependency on cargo when - ;; generating the sources. - (define (prefix script) - (string-append - "pregenerated/" - (string-drop-right - (string-drop script - (string-index-right script #\/)) 3))) + (setenv "HOME" (getcwd)) + (copy-recursively #+source (string-append "ring-" #$version)) + (with-directory-excursion (string-append "ring-" #$version) + (begin + (with-directory-excursion "third_party/fiat" + (with-output-to-file "curve25519_tables.h" + (lambda _ (invoke "python" "make_curve25519_tables.py")))) + (with-directory-excursion "crypto/fipsmodule/ec" + ;; This one seems to have been changed elsewhere in the + ;; sources but not in the script generating the definition. + (substitute* "make_p256-x86_64-table.go" + (("ecp_nistz256_precomputed") "GFp_nistz256_precomputed")) + (with-output-to-file "ecp_nistz256_table.inl" + (lambda _ (invoke "go" "run" "make_p256-x86_64-table.go")))) + (format #t "Generating the pregenerated files ...~%") + (force-output) + (mkdir-p "pregenerated/tmp") - (for-each - (lambda (script) - (invoke "perl" script "elf" - (string-append (prefix script) "-elf.S")) - (invoke "perl" script "macosx" - (string-append (prefix script) "-macosx.S")) - (invoke "perl" script "nasm" - (string-append - "pregenerated/tmp/" - (string-drop (prefix script) 13) "-nasm.asm"))) - '("crypto/fipsmodule/aes/asm/aes-x86_64.pl" - "crypto/fipsmodule/aes/asm/aesni-x86_64.pl" - "crypto/fipsmodule/aes/asm/vpaes-x86_64.pl" - "crypto/fipsmodule/bn/asm/x86_64-mont.pl" - "crypto/fipsmodule/bn/asm/x86_64-mont5.pl" - "crypto/chacha/asm/chacha-x86_64.pl" - "crypto/fipsmodule/ec/asm/p256-x86_64-asm.pl" - "crypto/fipsmodule/modes/asm/aesni-gcm-x86_64.pl" - "crypto/fipsmodule/modes/asm/ghash-x86_64.pl" - "crypto/poly1305/asm/poly1305-x86_64.pl" - "crypto/fipsmodule/sha/asm/sha512-x86_64.pl")) + ;; We generate all the files which upstream would normally be + ;; generate by using '(cd pregenerate_asm && cargo clean && + ;; cargo build) ./pregenerate_asm/target/debug/pregenerate_asm' + ;; in order to not include a dependency on cargo when + ;; generating the sources. + (define (prefix script) + (string-append + "pregenerated/" + (string-drop-right + (string-drop script (string-index-right script #\/)) 3))) - (invoke "perl" "crypto/fipsmodule/sha/asm/sha512-x86_64.pl" - "elf" "pregenerated/sha256-x86_64-elf.S") + (for-each + (lambda (script) + (invoke "perl" script "elf" + (string-append (prefix script) "-elf.S")) + (invoke "perl" script "macosx" + (string-append (prefix script) "-macosx.S")) + (invoke "perl" script "nasm" + (string-append + "pregenerated/tmp/" + (string-drop (prefix script) 13) "-nasm.asm"))) + '("crypto/fipsmodule/aes/asm/aes-x86_64.pl" + "crypto/fipsmodule/aes/asm/aesni-x86_64.pl" + "crypto/fipsmodule/aes/asm/vpaes-x86_64.pl" + "crypto/fipsmodule/bn/asm/x86_64-mont.pl" + "crypto/fipsmodule/bn/asm/x86_64-mont5.pl" + "crypto/chacha/asm/chacha-x86_64.pl" + "crypto/fipsmodule/ec/asm/p256-x86_64-asm.pl" + "crypto/fipsmodule/modes/asm/aesni-gcm-x86_64.pl" + "crypto/fipsmodule/modes/asm/ghash-x86_64.pl" + "crypto/poly1305/asm/poly1305-x86_64.pl" + "crypto/fipsmodule/sha/asm/sha512-x86_64.pl")) - (invoke "perl" "crypto/fipsmodule/sha/asm/sha512-x86_64.pl" - "macosx" "pregenerated/sha256-x86_64-macosx.S") + (invoke "perl" "crypto/fipsmodule/sha/asm/sha512-x86_64.pl" + "elf" "pregenerated/sha256-x86_64-elf.S") - (invoke "perl" "crypto/fipsmodule/sha/asm/sha512-x86_64.pl" - "nasm" "pregenerated/tmp/sha256-x86_64-nasm.asm") + (invoke "perl" "crypto/fipsmodule/sha/asm/sha512-x86_64.pl" + "macosx" "pregenerated/sha256-x86_64-macosx.S") - (for-each - (lambda (script) - (invoke "yasm" "-X" "vc" "--dformat=cv8" - "--oformat=win64" "--machine=amd64" "-o" - (string-append (prefix script) "obj") script)) - (find-files "pregenerated/tmp" "\\.asm")) + (invoke "perl" "crypto/fipsmodule/sha/asm/sha512-x86_64.pl" + "nasm" "pregenerated/tmp/sha256-x86_64-nasm.asm") - (for-each - (lambda (script) - (invoke "perl" script "ios64" - (string-append (prefix script) "-ios64.S")) - (invoke "perl" script "linux64" - (string-append (prefix script) "-linux64.S"))) - '("crypto/fipsmodule/aes/asm/aesv8-armx.pl" - "crypto/fipsmodule/modes/asm/ghashv8-armx.pl" - "crypto/fipsmodule/bn/asm/armv8-mont.pl" - "crypto/chacha/asm/chacha-armv8.pl" - "crypto/fipsmodule/ec/asm/ecp_nistz256-armv8.pl" - "crypto/poly1305/asm/poly1305-armv8.pl" - "crypto/fipsmodule/sha/asm/sha512-armv8.pl")) + (for-each + (lambda (script) + (invoke "yasm" "-X" "vc" "--dformat=cv8" + "--oformat=win64" "--machine=amd64" "-o" + (string-append (prefix script) "obj") script)) + (find-files "pregenerated/tmp" "\\.asm")) - (invoke "perl" "crypto/fipsmodule/sha/asm/sha512-armv8.pl" - "ios64" "pregenerated/sha256-armv8-ios64.S") + (for-each + (lambda (script) + (invoke "perl" script "ios64" + (string-append (prefix script) "-ios64.S")) + (invoke "perl" script "linux64" + (string-append (prefix script) "-linux64.S"))) + '("crypto/fipsmodule/aes/asm/aesv8-armx.pl" + "crypto/fipsmodule/modes/asm/ghashv8-armx.pl" + "crypto/fipsmodule/bn/asm/armv8-mont.pl" + "crypto/chacha/asm/chacha-armv8.pl" + "crypto/fipsmodule/ec/asm/ecp_nistz256-armv8.pl" + "crypto/poly1305/asm/poly1305-armv8.pl" + "crypto/fipsmodule/sha/asm/sha512-armv8.pl")) - (invoke "perl" "crypto/fipsmodule/sha/asm/sha512-armv8.pl" - "linux64" "pregenerated/sha256-armv8-linux64.S") + (invoke "perl" "crypto/fipsmodule/sha/asm/sha512-armv8.pl" + "ios64" "pregenerated/sha256-armv8-ios64.S") - (for-each - (lambda (script) - (invoke "perl" script "elf" - "-fPIC" "-DOPENSSL_IA32_SSE2" - (string-append (prefix script) "-elf.S")) - (invoke "perl" script "macosx" - "-fPIC" "-DOPENSSL_IA32_SSE2" - (string-append (prefix script) "-macosx.S")) - (invoke "perl" script "win32n" - "-fPIC" "-DOPENSSL_IA32_SSE2" - (string-append - "pregenerated/tmp/" - (string-drop (prefix script) 13) "-win32n.asm"))) - '("crypto/fipsmodule/aes/asm/aes-586.pl" - "crypto/fipsmodule/aes/asm/aesni-x86.pl" - "crypto/fipsmodule/aes/asm/vpaes-x86.pl" - "crypto/fipsmodule/bn/asm/x86-mont.pl" - "crypto/chacha/asm/chacha-x86.pl" - "crypto/fipsmodule/ec/asm/ecp_nistz256-x86.pl" - "crypto/fipsmodule/modes/asm/ghash-x86.pl" - "crypto/poly1305/asm/poly1305-x86.pl" - "crypto/fipsmodule/sha/asm/sha256-586.pl" - "crypto/fipsmodule/sha/asm/sha512-586.pl")) + (invoke "perl" "crypto/fipsmodule/sha/asm/sha512-armv8.pl" + "linux64" "pregenerated/sha256-armv8-linux64.S") - (for-each - (lambda (script) - (invoke "yasm" "-X" "vc" "--dformat=cv8" - "--oformat=win32" "--machine=x86" "-o" - (string-append (prefix script) "obj") script)) - (find-files "pregenerated/tmp" "-win32n\\.asm")) + (for-each + (lambda (script) + (invoke "perl" script "elf" + "-fPIC" "-DOPENSSL_IA32_SSE2" + (string-append (prefix script) "-elf.S")) + (invoke "perl" script "macosx" + "-fPIC" "-DOPENSSL_IA32_SSE2" + (string-append (prefix script) "-macosx.S")) + (invoke "perl" script "win32n" + "-fPIC" "-DOPENSSL_IA32_SSE2" + (string-append + "pregenerated/tmp/" + (string-drop (prefix script) 13) "-win32n.asm"))) + '("crypto/fipsmodule/aes/asm/aes-586.pl" + "crypto/fipsmodule/aes/asm/aesni-x86.pl" + "crypto/fipsmodule/aes/asm/vpaes-x86.pl" + "crypto/fipsmodule/bn/asm/x86-mont.pl" + "crypto/chacha/asm/chacha-x86.pl" + "crypto/fipsmodule/ec/asm/ecp_nistz256-x86.pl" + "crypto/fipsmodule/modes/asm/ghash-x86.pl" + "crypto/poly1305/asm/poly1305-x86.pl" + "crypto/fipsmodule/sha/asm/sha256-586.pl" + "crypto/fipsmodule/sha/asm/sha512-586.pl")) - (for-each - (lambda (script) - (invoke "perl" script "ios32" - (string-append (prefix script) "-ios32.S")) - (invoke "perl" script "linux32" - (string-append (prefix script) "-linux32.S"))) - '("crypto/fipsmodule/aes/asm/aesv8-armx.pl" - "crypto/fipsmodule/modes/asm/ghashv8-armx.pl" - "crypto/fipsmodule/aes/asm/aes-armv4.pl" - "crypto/fipsmodule/aes/asm/bsaes-armv7.pl" - "crypto/fipsmodule/bn/asm/armv4-mont.pl" - "crypto/chacha/asm/chacha-armv4.pl" - "crypto/fipsmodule/ec/asm/ecp_nistz256-armv4.pl" - "crypto/fipsmodule/modes/asm/ghash-armv4.pl" - "crypto/poly1305/asm/poly1305-armv4.pl" - "crypto/fipsmodule/sha/asm/sha256-armv4.pl" - "crypto/fipsmodule/sha/asm/sha512-armv4.pl")) + (for-each + (lambda (script) + (invoke "yasm" "-X" "vc" "--dformat=cv8" + "--oformat=win32" "--machine=x86" "-o" + (string-append (prefix script) "obj") script)) + (find-files "pregenerated/tmp" "-win32n\\.asm")) + + (for-each + (lambda (script) + (invoke "perl" script "ios32" + (string-append (prefix script) "-ios32.S")) + (invoke "perl" script "linux32" + (string-append (prefix script) "-linux32.S"))) + '("crypto/fipsmodule/aes/asm/aesv8-armx.pl" + "crypto/fipsmodule/modes/asm/ghashv8-armx.pl" + "crypto/fipsmodule/aes/asm/aes-armv4.pl" + "crypto/fipsmodule/aes/asm/bsaes-armv7.pl" + "crypto/fipsmodule/bn/asm/armv4-mont.pl" + "crypto/chacha/asm/chacha-armv4.pl" + "crypto/fipsmodule/ec/asm/ecp_nistz256-armv4.pl" + "crypto/fipsmodule/modes/asm/ghash-armv4.pl" + "crypto/poly1305/asm/poly1305-armv4.pl" + "crypto/fipsmodule/sha/asm/sha256-armv4.pl" + "crypto/fipsmodule/sha/asm/sha512-armv4.pl")) + + (format #t "Creating the tarball ...~%") + (force-output) + ;; The other option is to use cargo package --allow-dirty + (with-directory-excursion "../" + (invoke "tar" "czf" #$output + ;; avoid non-determinism in the archive + "--sort=name" "--mtime=@0" + "--owner=root:0" "--group=root:0" + (string-append "ring-" #$version)))))))) + (native-inputs + (list clang go gzip perl python2-minimal tar yasm)))) - (format #t "Creating the tarball ...~%") - (force-output) - ;; The other option is to use cargo package --allow-dirty - (with-directory-excursion "../" - (invoke "tar" "czf" #$output - ;; avoid non-determinism in the archive - "--sort=name" "--mtime=@0" - "--owner=root:0" "--group=root:0" - (string-append "ring-" #$version)))))))))))) (define-public rust-ring-0.14 (package (inherit rust-ring-0.16) @@ -4824,6 +4824,7 @@ (define-public rust-ring-0.14 ("rust-untrusted" ,rust-untrusted-0.6) ("rust-winapi" ,rust-winapi-0.3)))))) +(define computed-origin-method (@@ (guix packages) computed-origin-method)) (define rust-ring-0.13-sources (let* ((version "0.13.5") (upstream-source