From 18c35009ebdf23eaf2b84f6c70ca710b896f71e6 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 24 Dec 2023 10:03:49 +0200 Subject: gnu: Add rust-ring-0.17. * gnu/packages/crates-io.scm (rust-ring-0.17, rust-ring-0.17-sources): New variables. (rust-ring-0.16): Inherit from rust-ring-0.17. Change-Id: Ic71f17e7d9c21f75a449ceededf8725870c2395b --- gnu/local.mk | 1 + 1 file changed, 1 insertion(+) (limited to 'gnu/local.mk') diff --git a/gnu/local.mk b/gnu/local.mk index 58011d1149..79cb6d8d1b 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -2003,6 +2003,7 @@ dist_patch_DATA = \ %D%/packages/patches/rust-1.70-fix-rustix-build.patch \ %D%/packages/patches/rust-ring-0.16-missing-files.patch \ %D%/packages/patches/rust-ring-0.16-test-files.patch \ + %D%/packages/patches/rust-ring-0.17-ring-core.patch \ %D%/packages/patches/i3status-rust-enable-unstable-features.patch \ %D%/packages/patches/rust-ndarray-remove-blas-src-dep.patch \ %D%/packages/patches/rust-ndarray-0.13-remove-blas-src.patch \ -- cgit v1.2.3 From eeaead0d2e5d756b2c4aa59e23caf99233123695 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 24 Dec 2023 12:56:49 +0200 Subject: gnu: rust-ring-0.16: Generate more bundled files. * gnu/packages/crates-io.scm (rust-ring-0.16-sources): New variable. (rust-ring-0.16)[source]: Use rust-ring-0.16-sources. Drop patches and snippet. [arguments]: Remove custom phase generating curve25519 tables. [native-inputs]: Remove field. (rust-rustls-0.20)[native-inputs]: Remove field. * gnu/packages/rust-apps.scm (agate, alfis, maturin, rust-cargo-edit, sniffglue, spotifyd, tealdeer)[native-inputs]: Remove perl. * gnu/packages/patches/rust-ring-0.16-missing-files.patch, gnu/packages/patches/rust-ring-0.16-test-files.patch: Remove files. * gnu/local.mk (dist_patch_DATA): Remove them. Change-Id: I919207b6aacab78602ae18123ab345a34b00863f --- gnu/local.mk | 2 - gnu/packages/crates-io.scm | 213 +- .../patches/rust-ring-0.16-missing-files.patch | 2293 -------------------- .../patches/rust-ring-0.16-test-files.patch | 54 - gnu/packages/rust-apps.scm | 15 +- 5 files changed, 183 insertions(+), 2394 deletions(-) delete mode 100644 gnu/packages/patches/rust-ring-0.16-missing-files.patch delete mode 100644 gnu/packages/patches/rust-ring-0.16-test-files.patch (limited to 'gnu/local.mk') diff --git a/gnu/local.mk b/gnu/local.mk index 79cb6d8d1b..b8de8c3141 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -2001,8 +2001,6 @@ dist_patch_DATA = \ %D%/packages/patches/rustc-1.54.0-src.patch \ %D%/packages/patches/rust-1.64-fix-riscv64-bootstrap.patch \ %D%/packages/patches/rust-1.70-fix-rustix-build.patch \ - %D%/packages/patches/rust-ring-0.16-missing-files.patch \ - %D%/packages/patches/rust-ring-0.16-test-files.patch \ %D%/packages/patches/rust-ring-0.17-ring-core.patch \ %D%/packages/patches/i3status-rust-enable-unstable-features.patch \ %D%/packages/patches/rust-ndarray-remove-blas-src-dep.patch \ diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index ba54d7c383..9ed7ddea97 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -64190,33 +64190,187 @@ (define-public rust-ring-0.17 (description "This package provided safe, fast, small crypto using Rust.") (license (list license:isc license:openssl)))) +(define rust-ring-0.16-sources + (let* ((version "0.16.20") + (upstream-source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/briansmith/ring") + (commit "9cc0d45f4d8521f467bb3a621e74b1535e118188"))) + (file-name (git-file-name "rust-ring" version)) + (sha256 + (base32 "1aps05i5308ka03968glnnqr4kdkk2x4ghlg5vrqhl78jm6ivvby"))))) + (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 + #+nasm + #+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 nasm works just fine here. + (substitute* "build.rs" + (("./target/tools/nasm") "nasm")) + ;; Files which would be deleted in a snippet: + (delete-file "crypto/curve25519/curve25519_tables.h") + (delete-file "crypto/fipsmodule/ec/ecp_nistz256_table.inl") + ;; Files to be generated in the sources: + (format #t "Generating the missing files ...~%") + (force-output) + (with-directory-excursion "crypto/curve25519" + (with-output-to-file "curve25519_tables.h" + (lambda _ (invoke "python" "make_curve25519_tables.py")))) + (with-directory-excursion "crypto/fipsmodule/ec" + (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") + + ;; 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))) + + (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/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/fipsmodule/sha/asm/sha512-x86_64.pl" + "crypto/cipher_extra/asm/chacha20_poly1305_x86_64.pl")) + + (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" + "macosx" "pregenerated/sha256-x86_64-macosx.S") + + (invoke "perl" "crypto/fipsmodule/sha/asm/sha512-x86_64.pl" + "nasm" "pregenerated/tmp/sha256-x86_64-nasm.asm") + + (for-each + (lambda (script) + (invoke "nasm" "-o" (string-append (prefix script) "obj") + "-f" "win64" "-Xgnu" "-gcv8" script)) + (find-files "pregenerated/tmp" "\\.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/aes/asm/vpaes-armv8.pl" + "crypto/fipsmodule/bn/asm/armv8-mont.pl" + "crypto/chacha/asm/chacha-armv8.pl" + "crypto/fipsmodule/ec/asm/ecp_nistz256-armv8.pl" + "crypto/fipsmodule/modes/asm/ghash-neon-armv8.pl" + "crypto/fipsmodule/sha/asm/sha512-armv8.pl")) + + (invoke "perl" "crypto/fipsmodule/sha/asm/sha512-armv8.pl" + "ios64" "pregenerated/sha256-armv8-ios64.S") + + (invoke "perl" "crypto/fipsmodule/sha/asm/sha512-armv8.pl" + "linux64" "pregenerated/sha256-armv8-linux64.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/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")) + + (for-each + (lambda (script) + (invoke "nasm" "-o" (string-append (prefix script) "obj") + "-f" "win32" "-Xgnu" "-gcv8" 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/bsaes-armv7.pl" + "crypto/fipsmodule/aes/asm/vpaes-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/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)))))))))))) + (define-public rust-ring-0.16 (package (inherit rust-ring-0.17) (name "rust-ring") (version "0.16.20") - (source - (origin - (method url-fetch) - (uri (crate-uri "ring" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1z682xp7v38ayq9g9nkbhhfpj6ygralmlx7wdmsfv8rnw99cylrh")) - (patches (search-patches "rust-ring-0.16-missing-files.patch" - "rust-ring-0.16-test-files.patch")) - (modules '((guix build utils))) - (snippet - '(begin - (delete-file-recursively "pregenerated") - ;; Regenerating the curve25519_tables requires python2 and clang-format. - ;; Luckily we've added the script back in the patch. - ;; Rust doesn't provide a clear way to regenerate files located in - ;; source directories, so for now we don't remove the file here. - ;(delete-file "crypto/curve25519/curve25519_tables.h") - ;; Pretend this isn't a relase tarball. - (with-output-to-file ".git" - (lambda _ - (format #t ""))))))) + (source rust-ring-0.16-sources) (arguments `(#:cargo-inputs (("rust-libc" ,rust-libc-0.2) @@ -64229,17 +64383,7 @@ (define-public rust-ring-0.16 ("rust-cc" ,rust-cc-1)) #:cargo-development-inputs (("rust-libc" ,rust-libc-0.2) - ("rust-wasm-bindgen-test" ,rust-wasm-bindgen-test-0.3)) - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'generate-curve25519-tables - (lambda _ - (with-directory-excursion "crypto/curve25519" - (with-output-to-file "curve25519_tables.h" - (lambda _ - (invoke "python" "make_curve25519_tables.py"))))))))) - (native-inputs - (list clang perl python-2)) + ("rust-wasm-bindgen-test" ,rust-wasm-bindgen-test-0.3)))) ;; For a mostly complete list of supported systems see: ;; https://github.com/briansmith/ring/blob/main/.github/workflows/ci.yml#L170 (supported-systems (list "aarch64-linux" "armhf-linux" @@ -67144,8 +67288,7 @@ (define-public rust-rustls-0.20 ("rust-env-logger" ,rust-env-logger-0.9) ("rust-log" ,rust-log-0.4) ("rust-rustls-pemfile" ,rust-rustls-pemfile-1) - ("rust-webpki-roots" ,rust-webpki-roots-0.22)))) - (native-inputs (list perl)))) + ("rust-webpki-roots" ,rust-webpki-roots-0.22)))))) (define-public rust-rustls-0.19 (package diff --git a/gnu/packages/patches/rust-ring-0.16-missing-files.patch b/gnu/packages/patches/rust-ring-0.16-missing-files.patch deleted file mode 100644 index fa2f94a801..0000000000 --- a/gnu/packages/patches/rust-ring-0.16-missing-files.patch +++ /dev/null @@ -1,2293 +0,0 @@ -These 4 files exist in the git repository for rust-ring, and are from -the same commit where 0.16.20 is taken from. They were not added to the -include list in Cargo.toml, so they were not added to the tarball. - ---- - crypto/curve25519/make_curve25519_tables.py | 222 +++++ - crypto/fipsmodule/aes/asm/vpaes-armv7.pl | 896 ++++++++++++++++++ - crypto/fipsmodule/aes/asm/vpaes-armv8.pl | 837 ++++++++++++++++ - .../fipsmodule/modes/asm/ghash-neon-armv8.pl | 294 ++++++ - 4 files changed, 2249 insertions(+) - create mode 100755 crypto/curve25519/make_curve25519_tables.py - create mode 100644 crypto/fipsmodule/aes/asm/vpaes-armv7.pl - create mode 100755 crypto/fipsmodule/aes/asm/vpaes-armv8.pl - create mode 100644 crypto/fipsmodule/modes/asm/ghash-neon-armv8.pl - -diff --git a/crypto/curve25519/make_curve25519_tables.py b/crypto/curve25519/make_curve25519_tables.py -new file mode 100755 -index 0000000..50dee2a ---- /dev/null -+++ b/crypto/curve25519/make_curve25519_tables.py -@@ -0,0 +1,222 @@ -+#!/usr/bin/env python -+# coding=utf-8 -+# Copyright (c) 2020, Google Inc. -+# -+# Permission to use, copy, modify, and/or distribute this software for any -+# purpose with or without fee is hereby granted, provided that the above -+# copyright notice and this permission notice appear in all copies. -+# -+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION -+# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN -+# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -+ -+import StringIO -+import subprocess -+ -+# Base field Z_p -+p = 2**255 - 19 -+ -+def modp_inv(x): -+ return pow(x, p-2, p) -+ -+# Square root of -1 -+modp_sqrt_m1 = pow(2, (p-1) // 4, p) -+ -+# Compute corresponding x-coordinate, with low bit corresponding to -+# sign, or return None on failure -+def recover_x(y, sign): -+ if y >= p: -+ return None -+ x2 = (y*y-1) * modp_inv(d*y*y+1) -+ if x2 == 0: -+ if sign: -+ return None -+ else: -+ return 0 -+ -+ # Compute square root of x2 -+ x = pow(x2, (p+3) // 8, p) -+ if (x*x - x2) % p != 0: -+ x = x * modp_sqrt_m1 % p -+ if (x*x - x2) % p != 0: -+ return None -+ -+ if (x & 1) != sign: -+ x = p - x -+ return x -+ -+# Curve constant -+d = -121665 * modp_inv(121666) % p -+ -+# Base point -+g_y = 4 * modp_inv(5) % p -+g_x = recover_x(g_y, 0) -+ -+# Points are represented as affine tuples (x, y). -+ -+def point_add(P, Q): -+ x1, y1 = P -+ x2, y2 = Q -+ x3 = ((x1*y2 + y1*x2) * modp_inv(1 + d*x1*x2*y1*y2)) % p -+ y3 = ((y1*y2 + x1*x2) * modp_inv(1 - d*x1*x2*y1*y2)) % p -+ return (x3, y3) -+ -+# Computes Q = s * P -+def point_mul(s, P): -+ Q = (0, 1) # Neutral element -+ while s > 0: -+ if s & 1: -+ Q = point_add(Q, P) -+ P = point_add(P, P) -+ s >>= 1 -+ return Q -+ -+def to_bytes(x): -+ ret = bytearray(32) -+ for i in range(len(ret)): -+ ret[i] = x % 256 -+ x >>= 8 -+ assert x == 0 -+ return ret -+ -+def to_ge_precomp(P): -+ # typedef struct { -+ # fe_loose yplusx; -+ # fe_loose yminusx; -+ # fe_loose xy2d; -+ # } ge_precomp; -+ x, y = P -+ return ((y + x) % p, (y - x) % p, (x * y * 2 * d) % p) -+ -+def to_base_25_5(x): -+ limbs = (26, 25, 26, 25, 26, 25, 26, 25, 26, 25) -+ ret = [] -+ for l in limbs: -+ ret.append(x & ((1<>= l -+ assert x == 0 -+ return ret -+ -+def to_base_51(x): -+ ret = [] -+ for _ in range(5): -+ ret.append(x & ((1<<51) - 1)) -+ x >>= 51 -+ assert x == 0 -+ return ret -+ -+def to_literal(x): -+ ret = "{{\n#if defined(BORINGSSL_CURVE25519_64BIT)\n" -+ ret += ", ".join(map(str, to_base_51(x))) -+ ret += "\n#else\n" -+ ret += ", ".join(map(str, to_base_25_5(x))) -+ ret += "\n#endif\n}}" -+ return ret -+ -+def main(): -+ d2 = (2 * d) % p -+ -+ small_precomp = bytearray() -+ for i in range(1, 16): -+ s = (i&1) | ((i&2) << (64-1)) | ((i&4) << (128-2)) | ((i&8) << (192-3)) -+ P = point_mul(s, (g_x, g_y)) -+ small_precomp += to_bytes(P[0]) -+ small_precomp += to_bytes(P[1]) -+ -+ large_precomp = [] -+ for i in range(32): -+ large_precomp.append([]) -+ for j in range(8): -+ P = point_mul((j + 1) << (i * 8), (g_x, g_y)) -+ large_precomp[-1].append(to_ge_precomp(P)) -+ -+ bi_precomp = [] -+ for i in range(8): -+ P = point_mul(2*i + 1, (g_x, g_y)) -+ bi_precomp.append(to_ge_precomp(P)) -+ -+ -+ buf = StringIO.StringIO() -+ buf.write("""/* Copyright (c) 2020, Google Inc. -+ * -+ * Permission to use, copy, modify, and/or distribute this software for any -+ * purpose with or without fee is hereby granted, provided that the above -+ * copyright notice and this permission notice appear in all copies. -+ * -+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION -+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN -+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -+ -+// This file is generated from -+// ./make_curve25519_tables.py > curve25519_tables.h -+ -+ -+static const fe d = """) -+ buf.write(to_literal(d)) -+ buf.write("""; -+ -+static const fe sqrtm1 = """) -+ buf.write(to_literal(modp_sqrt_m1)) -+ buf.write("""; -+ -+static const fe d2 = """) -+ buf.write(to_literal(d2)) -+ buf.write("""; -+ -+#if defined(OPENSSL_SMALL) -+ -+// This block of code replaces the standard base-point table with a much smaller -+// one. The standard table is 30,720 bytes while this one is just 960. -+// -+// This table contains 15 pairs of group elements, (x, y), where each field -+// element is serialised with |fe_tobytes|. If |i| is the index of the group -+// element then consider i+1 as a four-bit number: (i₀, i₁, i₂, i₃) (where i₀ -+// is the most significant bit). The value of the group element is then: -+// (i₀×2^192 + i₁×2^128 + i₂×2^64 + i₃)G, where G is the generator. -+static const uint8_t k25519SmallPrecomp[15 * 2 * 32] = {""") -+ for i, b in enumerate(small_precomp): -+ buf.write("0x%02x, " % b) -+ buf.write(""" -+}; -+ -+#else -+ -+// k25519Precomp[i][j] = (j+1)*256^i*B -+static const ge_precomp k25519Precomp[32][8] = { -+""") -+ for child in large_precomp: -+ buf.write("{\n") -+ for val in child: -+ buf.write("{\n") -+ for term in val: -+ buf.write(to_literal(term) + ",\n") -+ buf.write("},\n") -+ buf.write("},\n") -+ buf.write("""}; -+ -+#endif // OPENSSL_SMALL -+ -+// Bi[i] = (2*i+1)*B -+static const ge_precomp Bi[8] = { -+""") -+ for val in bi_precomp: -+ buf.write("{\n") -+ for term in val: -+ buf.write(to_literal(term) + ",\n") -+ buf.write("},\n") -+ buf.write("""}; -+""") -+ -+ proc = subprocess.Popen(["clang-format"], stdin=subprocess.PIPE) -+ proc.communicate(buf.getvalue()) -+ -+if __name__ == "__main__": -+ main() -diff --git a/crypto/fipsmodule/aes/asm/vpaes-armv7.pl b/crypto/fipsmodule/aes/asm/vpaes-armv7.pl -new file mode 100644 -index 0000000..d36a97a ---- /dev/null -+++ b/crypto/fipsmodule/aes/asm/vpaes-armv7.pl -@@ -0,0 +1,896 @@ -+#! /usr/bin/env perl -+# Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. -+# -+# Licensed under the OpenSSL license (the "License"). You may not use -+# this file except in compliance with the License. You can obtain a copy -+# in the file LICENSE in the source distribution or at -+# https://www.openssl.org/source/license.html -+ -+ -+###################################################################### -+## Constant-time SSSE3 AES core implementation. -+## version 0.1 -+## -+## By Mike Hamburg (Stanford University), 2009 -+## Public domain. -+## -+## For details see http://shiftleft.org/papers/vector_aes/ and -+## http://crypto.stanford.edu/vpaes/. -+## -+###################################################################### -+# Adapted from the original x86_64 version and 's ARMv8 -+# version. -+# -+# armv7, aarch64, and x86_64 differ in several ways: -+# -+# * x86_64 SSSE3 instructions are two-address (destination operand is also a -+# source), while NEON is three-address (destination operand is separate from -+# two sources). -+# -+# * aarch64 has 32 SIMD registers available, while x86_64 and armv7 have 16. -+# -+# * x86_64 instructions can take memory references, while ARM is a load/store -+# architecture. This means we sometimes need a spare register. -+# -+# * aarch64 and x86_64 have 128-bit byte shuffle instructions (tbl and pshufb), -+# while armv7 only has a 64-bit byte shuffle (vtbl). -+# -+# This means this armv7 version must be a mix of both aarch64 and x86_64 -+# implementations. armv7 and aarch64 have analogous SIMD instructions, so we -+# base the instructions on aarch64. However, we cannot use aarch64's register -+# allocation. x86_64's register count matches, but x86_64 is two-address. -+# vpaes-armv8.pl already accounts for this in the comments, which use -+# three-address AVX instructions instead of the original SSSE3 ones. We base -+# register usage on these comments, which are preserved in this file. -+# -+# This means we do not use separate input and output registers as in aarch64 and -+# cannot pin as many constants in the preheat functions. However, the load/store -+# architecture means we must still deviate from x86_64 in places. -+# -+# Next, we account for the byte shuffle instructions. vtbl takes 64-bit source -+# and destination and 128-bit table. Fortunately, armv7 also allows addressing -+# upper and lower halves of each 128-bit register. The lower half of q{N} is -+# d{2*N}. The upper half is d{2*N+1}. Instead of the following non-existent -+# instruction, -+# -+# vtbl.8 q0, q1, q2 @ Index each of q2's 16 bytes into q1. Store in q0. -+# -+# we write: -+# -+# vtbl.8 d0, q1, d4 @ Index each of d4's 8 bytes into q1. Store in d0. -+# vtbl.8 d1, q1, d5 @ Index each of d5's 8 bytes into q1. Store in d1. -+# -+# For readability, we write d0 and d1 as q0#lo and q0#hi, respectively and -+# post-process before outputting. (This is adapted from ghash-armv4.pl.) Note, -+# however, that destination (q0) and table (q1) registers may no longer match. -+# We adjust the register usage from x86_64 to avoid this. (Unfortunately, the -+# two-address pshufb always matched these operands, so this is common.) -+# -+# This file also runs against the limit of ARMv7's ADR pseudo-instruction. ADR -+# expands to an ADD or SUB of the pc register to find an address. That immediate -+# must fit in ARM's encoding scheme: 8 bits of constant and 4 bits of rotation. -+# This means larger values must be more aligned. -+# -+# ARM additionally has two encodings, ARM and Thumb mode. Our assembly files may -+# use either encoding (do we actually need to support this?). In ARM mode, the -+# distances get large enough to require 16-byte alignment. Moving constants -+# closer to their use resolves most of this, but common constants in -+# _vpaes_consts are used by the whole file. Affected ADR instructions must be -+# placed at 8 mod 16 (the pc register is 8 ahead). Instructions with this -+# constraint have been commented. -+# -+# For details on ARM's immediate value encoding scheme, see -+# https://alisdair.mcdiarmid.org/arm-immediate-value-encoding/ -+# -+# Finally, a summary of armv7 and aarch64 SIMD syntax differences: -+# -+# * armv7 prefixes SIMD instructions with 'v', while aarch64 does not. -+# -+# * armv7 SIMD registers are named like q0 (and d0 for the half-width ones). -+# aarch64 names registers like v0, and denotes half-width operations in an -+# instruction suffix (see below). -+# -+# * aarch64 embeds size and lane information in register suffixes. v0.16b is -+# 16 bytes, v0.8h is eight u16s, v0.4s is four u32s, and v0.2d is two u64s. -+# armv7 embeds the total size in the register name (see above) and the size of -+# each element in an instruction suffix, which may look like vmov.i8, -+# vshr.u8, or vtbl.8, depending on instruction. -+ -+use strict; -+ -+my $flavour = shift; -+my $output; -+while (($output=shift) && ($output!~/\w[\w\-]*\.\w+$/)) {} -+ -+$0 =~ m/(.*[\/\\])[^\/\\]+$/; -+my $dir=$1; -+my $xlate; -+( $xlate="${dir}arm-xlate.pl" and -f $xlate ) or -+( $xlate="${dir}../../../perlasm/arm-xlate.pl" and -f $xlate) or -+die "can't locate arm-xlate.pl"; -+ -+open OUT,"| \"$^X\" $xlate $flavour $output"; -+*STDOUT=*OUT; -+ -+my $code = ""; -+ -+$code.=<<___; -+.syntax unified -+ -+.arch armv7-a -+.fpu neon -+ -+#if defined(__thumb2__) -+.thumb -+#else -+.code 32 -+#endif -+ -+.text -+ -+.type _vpaes_consts,%object -+.align 7 @ totally strategic alignment -+_vpaes_consts: -+.Lk_mc_forward: @ mc_forward -+ .quad 0x0407060500030201, 0x0C0F0E0D080B0A09 -+ .quad 0x080B0A0904070605, 0x000302010C0F0E0D -+ .quad 0x0C0F0E0D080B0A09, 0x0407060500030201 -+ .quad 0x000302010C0F0E0D, 0x080B0A0904070605 -+.Lk_mc_backward:@ mc_backward -+ .quad 0x0605040702010003, 0x0E0D0C0F0A09080B -+ .quad 0x020100030E0D0C0F, 0x0A09080B06050407 -+ .quad 0x0E0D0C0F0A09080B, 0x0605040702010003 -+ .quad 0x0A09080B06050407, 0x020100030E0D0C0F -+.Lk_sr: @ sr -+ .quad 0x0706050403020100, 0x0F0E0D0C0B0A0908 -+ .quad 0x030E09040F0A0500, 0x0B06010C07020D08 -+ .quad 0x0F060D040B020900, 0x070E050C030A0108 -+ .quad 0x0B0E0104070A0D00, 0x0306090C0F020508 -+ -+@ -+@ "Hot" constants -+@ -+.Lk_inv: @ inv, inva -+ .quad 0x0E05060F0D080180, 0x040703090A0B0C02 -+ .quad 0x01040A060F0B0780, 0x030D0E0C02050809 -+.Lk_ipt: @ input transform (lo, hi) -+ .quad 0xC2B2E8985A2A7000, 0xCABAE09052227808 -+ .quad 0x4C01307D317C4D00, 0xCD80B1FCB0FDCC81 -+.Lk_sbo: @ sbou, sbot -+ .quad 0xD0D26D176FBDC700, 0x15AABF7AC502A878 -+ .quad 0xCFE474A55FBB6A00, 0x8E1E90D1412B35FA -+.Lk_sb1: @ sb1u, sb1t -+ .quad 0x3618D415FAE22300, 0x3BF7CCC10D2ED9EF -+ .quad 0xB19BE18FCB503E00, 0xA5DF7A6E142AF544 -+.Lk_sb2: @ sb2u, sb2t -+ .quad 0x69EB88400AE12900, 0xC2A163C8AB82234A -+ .quad 0xE27A93C60B712400, 0x5EB7E955BC982FCD -+ -+.asciz "Vector Permutation AES for ARMv7 NEON, Mike Hamburg (Stanford University)" -+.size _vpaes_consts,.-_vpaes_consts -+.align 6 -+___ -+ -+{ -+my ($inp,$out,$key) = map("r$_", (0..2)); -+ -+my ($invlo,$invhi) = map("q$_", (10..11)); -+my ($sb1u,$sb1t,$sb2u,$sb2t) = map("q$_", (12..15)); -+ -+$code.=<<___; -+@@ -+@@ _aes_preheat -+@@ -+@@ Fills q9-q15 as specified below. -+@@ -+.type _vpaes_preheat,%function -+.align 4 -+_vpaes_preheat: -+ adr r10, .Lk_inv -+ vmov.i8 q9, #0x0f @ .Lk_s0F -+ vld1.64 {q10,q11}, [r10]! @ .Lk_inv -+ add r10, r10, #64 @ Skip .Lk_ipt, .Lk_sbo -+ vld1.64 {q12,q13}, [r10]! @ .Lk_sb1 -+ vld1.64 {q14,q15}, [r10] @ .Lk_sb2 -+ bx lr -+ -+@@ -+@@ _aes_encrypt_core -+@@ -+@@ AES-encrypt q0. -+@@ -+@@ Inputs: -+@@ q0 = input -+@@ q9-q15 as in _vpaes_preheat -+@@ [$key] = scheduled keys -+@@ -+@@ Output in q0 -+@@ Clobbers q1-q5, r8-r11 -+@@ Preserves q6-q8 so you get some local vectors -+@@ -+@@ -+.type _vpaes_encrypt_core,%function -+.align 4 -+_vpaes_encrypt_core: -+ mov r9, $key -+ ldr r8, [$key,#240] @ pull rounds -+ adr r11, .Lk_ipt -+ @ vmovdqa .Lk_ipt(%rip), %xmm2 # iptlo -+ @ vmovdqa .Lk_ipt+16(%rip), %xmm3 # ipthi -+ vld1.64 {q2, q3}, [r11] -+ adr r11, .Lk_mc_forward+16 -+ vld1.64 {q5}, [r9]! @ vmovdqu (%r9), %xmm5 # round0 key -+ vand q1, q0, q9 @ vpand %xmm9, %xmm0, %xmm1 -+ vshr.u8 q0, q0, #4 @ vpsrlb \$4, %xmm0, %xmm0 -+ vtbl.8 q1#lo, {q2}, q1#lo @ vpshufb %xmm1, %xmm2, %xmm1 -+ vtbl.8 q1#hi, {q2}, q1#hi -+ vtbl.8 q2#lo, {q3}, q0#lo @ vpshufb %xmm0, %xmm3, %xmm2 -+ vtbl.8 q2#hi, {q3}, q0#hi -+ veor q0, q1, q5 @ vpxor %xmm5, %xmm1, %xmm0 -+ veor q0, q0, q2 @ vpxor %xmm2, %xmm0, %xmm0 -+ -+ @ .Lenc_entry ends with a bnz instruction which is normally paired with -+ @ subs in .Lenc_loop. -+ tst r8, r8 -+ b .Lenc_entry -+ -+.align 4 -+.Lenc_loop: -+ @ middle of middle round -+ add r10, r11, #0x40 -+ vtbl.8 q4#lo, {$sb1t}, q2#lo @ vpshufb %xmm2, %xmm13, %xmm4 # 4 = sb1u -+ vtbl.8 q4#hi, {$sb1t}, q2#hi -+ vld1.64 {q1}, [r11]! @ vmovdqa -0x40(%r11,%r10), %xmm1 # .Lk_mc_forward[] -+ vtbl.8 q0#lo, {$sb1u}, q3#lo @ vpshufb %xmm3, %xmm12, %xmm0 # 0 = sb1t -+ vtbl.8 q0#hi, {$sb1u}, q3#hi -+ veor q4, q4, q5 @ vpxor %xmm5, %xmm4, %xmm4 # 4 = sb1u + k -+ vtbl.8 q5#lo, {$sb2t}, q2#lo @ vpshufb %xmm2, %xmm15, %xmm5 # 4 = sb2u -+ vtbl.8 q5#hi, {$sb2t}, q2#hi -+ veor q0, q0, q4 @ vpxor %xmm4, %xmm0, %xmm0 # 0 = A -+ vtbl.8 q2#lo, {$sb2u}, q3#lo @ vpshufb %xmm3, %xmm14, %xmm2 # 2 = sb2t -+ vtbl.8 q2#hi, {$sb2u}, q3#hi -+ vld1.64 {q4}, [r10] @ vmovdqa (%r11,%r10), %xmm4 # .Lk_mc_backward[] -+ vtbl.8 q3#lo, {q0}, q1#lo @ vpshufb %xmm1, %xmm0, %xmm3 # 0 = B -+ vtbl.8 q3#hi, {q0}, q1#hi -+ veor q2, q2, q5 @ vpxor %xmm5, %xmm2, %xmm2 # 2 = 2A -+ @ Write to q5 instead of q0, so the table and destination registers do -+ @ not overlap. -+ vtbl.8 q5#lo, {q0}, q4#lo @ vpshufb %xmm4, %xmm0, %xmm0 # 3 = D -+ vtbl.8 q5#hi, {q0}, q4#hi -+ veor q3, q3, q2 @ vpxor %xmm2, %xmm3, %xmm3 # 0 = 2A+B -+ vtbl.8 q4#lo, {q3}, q1#lo @ vpshufb %xmm1, %xmm3, %xmm4 # 0 = 2B+C -+ vtbl.8 q4#hi, {q3}, q1#hi -+ @ Here we restore the original q0/q5 usage. -+ veor q0, q5, q3 @ vpxor %xmm3, %xmm0, %xmm0 # 3 = 2A+B+D -+ and r11, r11, #~(1<<6) @ and \$0x30, %r11 # ... mod 4 -+ veor q0, q0, q4 @ vpxor %xmm4, %xmm0, %xmm0 # 0 = 2A+3B+C+D -+ subs r8, r8, #1 @ nr-- -+ -+.Lenc_entry: -+ @ top of round -+ vand q1, q0, q9 @ vpand %xmm0, %xmm9, %xmm1 # 0 = k -+ vshr.u8 q0, q0, #4 @ vpsrlb \$4, %xmm0, %xmm0 # 1 = i -+ vtbl.8 q5#lo, {$invhi}, q1#lo @ vpshufb %xmm1, %xmm11, %xmm5 # 2 = a/k -+ vtbl.8 q5#hi, {$invhi}, q1#hi -+ veor q1, q1, q0 @ vpxor %xmm0, %xmm1, %xmm1 # 0 = j -+ vtbl.8 q3#lo, {$invlo}, q0#lo @ vpshufb %xmm0, %xmm10, %xmm3 # 3 = 1/i -+ vtbl.8 q3#hi, {$invlo}, q0#hi -+ vtbl.8 q4#lo, {$invlo}, q1#lo @ vpshufb %xmm1, %xmm10, %xmm4 # 4 = 1/j -+ vtbl.8 q4#hi, {$invlo}, q1#hi -+ veor q3, q3, q5 @ vpxor %xmm5, %xmm3, %xmm3 # 3 = iak = 1/i + a/k -+ veor q4, q4, q5 @ vpxor %xmm5, %xmm4, %xmm4 # 4 = jak = 1/j + a/k -+ vtbl.8 q2#lo, {$invlo}, q3#lo @ vpshufb %xmm3, %xmm10, %xmm2 # 2 = 1/iak -+ vtbl.8 q2#hi, {$invlo}, q3#hi -+ vtbl.8 q3#lo, {$invlo}, q4#lo @ vpshufb %xmm4, %xmm10, %xmm3 # 3 = 1/jak -+ vtbl.8 q3#hi, {$invlo}, q4#hi -+ veor q2, q2, q1 @ vpxor %xmm1, %xmm2, %xmm2 # 2 = io -+ veor q3, q3, q0 @ vpxor %xmm0, %xmm3, %xmm3 # 3 = jo -+ vld1.64 {q5}, [r9]! @ vmovdqu (%r9), %xmm5 -+ bne .Lenc_loop -+ -+ @ middle of last round -+ add r10, r11, #0x80 -+ -+ adr r11, .Lk_sbo -+ @ Read to q1 instead of q4, so the vtbl.8 instruction below does not -+ @ overlap table and destination registers. -+ vld1.64 {q1}, [r11]! @ vmovdqa -0x60(%r10), %xmm4 # 3 : sbou -+ vld1.64 {q0}, [r11] @ vmovdqa -0x50(%r10), %xmm0 # 0 : sbot .Lk_sbo+16 -+ vtbl.8 q4#lo, {q1}, q2#lo @ vpshufb %xmm2, %xmm4, %xmm4 # 4 = sbou -+ vtbl.8 q4#hi, {q1}, q2#hi -+ vld1.64 {q1}, [r10] @ vmovdqa 0x40(%r11,%r10), %xmm1 # .Lk_sr[] -+ @ Write to q2 instead of q0 below, to avoid overlapping table and -+ @ destination registers. -+ vtbl.8 q2#lo, {q0}, q3#lo @ vpshufb %xmm3, %xmm0, %xmm0 # 0 = sb1t -+ vtbl.8 q2#hi, {q0}, q3#hi -+ veor q4, q4, q5 @ vpxor %xmm5, %xmm4, %xmm4 # 4 = sb1u + k -+ veor q2, q2, q4 @ vpxor %xmm4, %xmm0, %xmm0 # 0 = A -+ @ Here we restore the original q0/q2 usage. -+ vtbl.8 q0#lo, {q2}, q1#lo @ vpshufb %xmm1, %xmm0, %xmm0 -+ vtbl.8 q0#hi, {q2}, q1#hi -+ bx lr -+.size _vpaes_encrypt_core,.-_vpaes_encrypt_core -+ -+.globl GFp_vpaes_encrypt -+.type GFp_vpaes_encrypt,%function -+.align 4 -+GFp_vpaes_encrypt: -+ @ _vpaes_encrypt_core uses r8-r11. Round up to r7-r11 to maintain stack -+ @ alignment. -+ stmdb sp!, {r7-r11,lr} -+ @ _vpaes_encrypt_core uses q4-q5 (d8-d11), which are callee-saved. -+ vstmdb sp!, {d8-d11} -+ -+ vld1.64 {q0}, [$inp] -+ bl _vpaes_preheat -+ bl _vpaes_encrypt_core -+ vst1.64 {q0}, [$out] -+ -+ vldmia sp!, {d8-d11} -+ ldmia sp!, {r7-r11, pc} @ return -+.size GFp_vpaes_encrypt,.-GFp_vpaes_encrypt -+___ -+} -+{ -+my ($inp,$bits,$out,$dir)=("r0","r1","r2","r3"); -+my ($rcon,$s0F,$invlo,$invhi,$s63) = map("q$_",(8..12)); -+ -+$code.=<<___; -+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -+@@ @@ -+@@ AES key schedule @@ -+@@ @@ -+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -+ -+@ This function diverges from both x86_64 and armv7 in which constants are -+@ pinned. x86_64 has a common preheat function for all operations. aarch64 -+@ separates them because it has enough registers to pin nearly all constants. -+@ armv7 does not have enough registers, but needing explicit loads and stores -+@ also complicates using x86_64's register allocation directly. -+@ -+@ We pin some constants for convenience and leave q14 and q15 free to load -+@ others on demand. -+ -+@ -+@ Key schedule constants -+@ -+.type _vpaes_key_consts,%object -+.align 4 -+_vpaes_key_consts: -+.Lk_rcon: @ rcon -+ .quad 0x1F8391B9AF9DEEB6, 0x702A98084D7C7D81 -+ -+.Lk_opt: @ output transform -+ .quad 0xFF9F4929D6B66000, 0xF7974121DEBE6808 -+ .quad 0x01EDBD5150BCEC00, 0xE10D5DB1B05C0CE0 -+.Lk_deskew: @ deskew tables: inverts the sbox's "skew" -+ .quad 0x07E4A34047A4E300, 0x1DFEB95A5DBEF91A -+ .quad 0x5F36B5DC83EA6900, 0x2841C2ABF49D1E77 -+.size _vpaes_key_consts,.-_vpaes_key_consts -+ -+.type _vpaes_key_preheat,%function -+.align 4 -+_vpaes_key_preheat: -+ adr r11, .Lk_rcon -+ vmov.i8 $s63, #0x5b @ .Lk_s63 -+ adr r10, .Lk_inv @ Must be aligned to 8 mod 16. -+ vmov.i8 $s0F, #0x0f @ .Lk_s0F -+ vld1.64 {$invlo,$invhi}, [r10] @ .Lk_inv -+ vld1.64 {$rcon}, [r11] @ .Lk_rcon -+ bx lr -+.size _vpaes_key_preheat,.-_vpaes_key_preheat -+ -+.type _vpaes_schedule_core,%function -+.align 4 -+_vpaes_schedule_core: -+ @ We only need to save lr, but ARM requires an 8-byte stack alignment, -+ @ so save an extra register. -+ stmdb sp!, {r3,lr} -+ -+ bl _vpaes_key_preheat @ load the tables -+ -+ adr r11, .Lk_ipt @ Must be aligned to 8 mod 16. -+ vld1.64 {q0}, [$inp]! @ vmovdqu (%rdi), %xmm0 # load key (unaligned) -+ -+ @ input transform -+ @ Use q4 here rather than q3 so .Lschedule_am_decrypting does not -+ @ overlap table and destination. -+ vmov q4, q0 @ vmovdqa %xmm0, %xmm3 -+ bl _vpaes_schedule_transform -+ adr r10, .Lk_sr @ Must be aligned to 8 mod 16. -+ vmov q7, q0 @ vmovdqa %xmm0, %xmm7 -+ -+ add r8, r8, r10 -+ -+ @ encrypting, output zeroth round key after transform -+ vst1.64 {q0}, [$out] @ vmovdqu %xmm0, (%rdx) -+ -+ @ *ring*: Decryption removed. -+ -+.Lschedule_go: -+ cmp $bits, #192 @ cmp \$192, %esi -+ bhi .Lschedule_256 -+ @ 128: fall though -+ -+@@ -+@@ .schedule_128 -+@@ -+@@ 128-bit specific part of key schedule. -+@@ -+@@ This schedule is really simple, because all its parts -+@@ are accomplished by the subroutines. -+@@ -+.Lschedule_128: -+ mov $inp, #10 @ mov \$10, %esi -+ -+.Loop_schedule_128: -+ bl _vpaes_schedule_round -+ subs $inp, $inp, #1 @ dec %esi -+ beq .Lschedule_mangle_last -+ bl _vpaes_schedule_mangle @ write output -+ b .Loop_schedule_128 -+ -+@@ -+@@ .aes_schedule_256 -+@@ -+@@ 256-bit specific part of key schedule. -+@@ -+@@ The structure here is very similar to the 128-bit -+@@ schedule, but with an additional "low side" in -+@@ q6. The low side's rounds are the same as the -+@@ high side's, except no rcon and no rotation. -+@@ -+.align 4 -+.Lschedule_256: -+ vld1.64 {q0}, [$inp] @ vmovdqu 16(%rdi),%xmm0 # load key part 2 (unaligned) -+ bl _vpaes_schedule_transform @ input transform -+ mov $inp, #7 @ mov \$7, %esi -+ -+.Loop_schedule_256: -+ bl _vpaes_schedule_mangle @ output low result -+ vmov q6, q0 @ vmovdqa %xmm0, %xmm6 # save cur_lo in xmm6 -+ -+ @ high round -+ bl _vpaes_schedule_round -+ subs $inp, $inp, #1 @ dec %esi -+ beq .Lschedule_mangle_last -+ bl _vpaes_schedule_mangle -+ -+ @ low round. swap xmm7 and xmm6 -+ vdup.32 q0, q0#hi[1] @ vpshufd \$0xFF, %xmm0, %xmm0 -+ vmov.i8 q4, #0 -+ vmov q5, q7 @ vmovdqa %xmm7, %xmm5 -+ vmov q7, q6 @ vmovdqa %xmm6, %xmm7 -+ bl _vpaes_schedule_low_round -+ vmov q7, q5 @ vmovdqa %xmm5, %xmm7 -+ -+ b .Loop_schedule_256 -+ -+@@ -+@@ .aes_schedule_mangle_last -+@@ -+@@ Mangler for last round of key schedule -+@@ Mangles q0 -+@@ when encrypting, outputs out(q0) ^ 63 -+@@ when decrypting, outputs unskew(q0) -+@@ -+@@ Always called right before return... jumps to cleanup and exits -+@@ -+.align 4 -+.Lschedule_mangle_last: -+ @ schedule last round key from xmm0 -+ adr r11, .Lk_deskew @ lea .Lk_deskew(%rip),%r11 # prepare to deskew -+ -+ @ encrypting -+ vld1.64 {q1}, [r8] @ vmovdqa (%r8,%r10),%xmm1 -+ adr r11, .Lk_opt @ lea .Lk_opt(%rip), %r11 # prepare to output transform -+ add $out, $out, #32 @ add \$32, %rdx -+ vmov q2, q0 -+ vtbl.8 q0#lo, {q2}, q1#lo @ vpshufb %xmm1, %xmm0, %xmm0 # output permute -+ vtbl.8 q0#hi, {q2}, q1#hi -+ -+.Lschedule_mangle_last_dec: -+ sub $out, $out, #16 @ add \$-16, %rdx -+ veor q0, q0, $s63 @ vpxor .Lk_s63(%rip), %xmm0, %xmm0 -+ bl _vpaes_schedule_transform @ output transform -+ vst1.64 {q0}, [$out] @ vmovdqu %xmm0, (%rdx) # save last key -+ -+ @ cleanup -+ veor q0, q0, q0 @ vpxor %xmm0, %xmm0, %xmm0 -+ veor q1, q1, q1 @ vpxor %xmm1, %xmm1, %xmm1 -+ veor q2, q2, q2 @ vpxor %xmm2, %xmm2, %xmm2 -+ veor q3, q3, q3 @ vpxor %xmm3, %xmm3, %xmm3 -+ veor q4, q4, q4 @ vpxor %xmm4, %xmm4, %xmm4 -+ veor q5, q5, q5 @ vpxor %xmm5, %xmm5, %xmm5 -+ veor q6, q6, q6 @ vpxor %xmm6, %xmm6, %xmm6 -+ veor q7, q7, q7 @ vpxor %xmm7, %xmm7, %xmm7 -+ ldmia sp!, {r3,pc} @ return -+.size _vpaes_schedule_core,.-_vpaes_schedule_core -+ -+@@ -+@@ .aes_schedule_round -+@@ -+@@ Runs one main round of the key schedule on q0, q7 -+@@ -+@@ Specifically, runs subbytes on the high dword of q0 -+@@ then rotates it by one byte and xors into the low dword of -+@@ q7. -+@@ -+@@ Adds rcon from low byte of q8, then rotates q8 for -+@@ next rcon. -+@@ -+@@ Smears the dwords of q7 by xoring the low into the -+@@ second low, result into third, result into highest. -+@@ -+@@ Returns results in q7 = q0. -+@@ Clobbers q1-q4, r11. -+@@ -+.type _vpaes_schedule_round,%function -+.align 4 -+_vpaes_schedule_round: -+ @ extract rcon from xmm8 -+ vmov.i8 q4, #0 @ vpxor %xmm4, %xmm4, %xmm4 -+ vext.8 q1, $rcon, q4, #15 @ vpalignr \$15, %xmm8, %xmm4, %xmm1 -+ vext.8 $rcon, $rcon, $rcon, #15 @ vpalignr \$15, %xmm8, %xmm8, %xmm8 -+ veor q7, q7, q1 @ vpxor %xmm1, %xmm7, %xmm7 -+ -+ @ rotate -+ vdup.32 q0, q0#hi[1] @ vpshufd \$0xFF, %xmm0, %xmm0 -+ vext.8 q0, q0, q0, #1 @ vpalignr \$1, %xmm0, %xmm0, %xmm0 -+ -+ @ fall through... -+ -+ @ low round: same as high round, but no rotation and no rcon. -+_vpaes_schedule_low_round: -+ @ The x86_64 version pins .Lk_sb1 in %xmm13 and .Lk_sb1+16 in %xmm12. -+ @ We pin other values in _vpaes_key_preheat, so load them now. -+ adr r11, .Lk_sb1 -+ vld1.64 {q14,q15}, [r11] -+ -+ @ smear xmm7 -+ vext.8 q1, q4, q7, #12 @ vpslldq \$4, %xmm7, %xmm1 -+ veor q7, q7, q1 @ vpxor %xmm1, %xmm7, %xmm7 -+ vext.8 q4, q4, q7, #8 @ vpslldq \$8, %xmm7, %xmm4 -+ -+ @ subbytes -+ vand q1, q0, $s0F @ vpand %xmm9, %xmm0, %xmm1 # 0 = k -+ vshr.u8 q0, q0, #4 @ vpsrlb \$4, %xmm0, %xmm0 # 1 = i -+ veor q7, q7, q4 @ vpxor %xmm4, %xmm7, %xmm7 -+ vtbl.8 q2#lo, {$invhi}, q1#lo @ vpshufb %xmm1, %xmm11, %xmm2 # 2 = a/k -+ vtbl.8 q2#hi, {$invhi}, q1#hi -+ veor q1, q1, q0 @ vpxor %xmm0, %xmm1, %xmm1 # 0 = j -+ vtbl.8 q3#lo, {$invlo}, q0#lo @ vpshufb %xmm0, %xmm10, %xmm3 # 3 = 1/i -+ vtbl.8 q3#hi, {$invlo}, q0#hi -+ veor q3, q3, q2 @ vpxor %xmm2, %xmm3, %xmm3 # 3 = iak = 1/i + a/k -+ vtbl.8 q4#lo, {$invlo}, q1#lo @ vpshufb %xmm1, %xmm10, %xmm4 # 4 = 1/j -+ vtbl.8 q4#hi, {$invlo}, q1#hi -+ veor q7, q7, $s63 @ vpxor .Lk_s63(%rip), %xmm7, %xmm7 -+ vtbl.8 q3#lo, {$invlo}, q3#lo @ vpshufb %xmm3, %xmm10, %xmm3 # 2 = 1/iak -+ vtbl.8 q3#hi, {$invlo}, q3#hi -+ veor q4, q4, q2 @ vpxor %xmm2, %xmm4, %xmm4 # 4 = jak = 1/j + a/k -+ vtbl.8 q2#lo, {$invlo}, q4#lo @ vpshufb %xmm4, %xmm10, %xmm2 # 3 = 1/jak -+ vtbl.8 q2#hi, {$invlo}, q4#hi -+ veor q3, q3, q1 @ vpxor %xmm1, %xmm3, %xmm3 # 2 = io -+ veor q2, q2, q0 @ vpxor %xmm0, %xmm2, %xmm2 # 3 = jo -+ vtbl.8 q4#lo, {q15}, q3#lo @ vpshufb %xmm3, %xmm13, %xmm4 # 4 = sbou -+ vtbl.8 q4#hi, {q15}, q3#hi -+ vtbl.8 q1#lo, {q14}, q2#lo @ vpshufb %xmm2, %xmm12, %xmm1 # 0 = sb1t -+ vtbl.8 q1#hi, {q14}, q2#hi -+ veor q1, q1, q4 @ vpxor %xmm4, %xmm1, %xmm1 # 0 = sbox output -+ -+ @ add in smeared stuff -+ veor q0, q1, q7 @ vpxor %xmm7, %xmm1, %xmm0 -+ veor q7, q1, q7 @ vmovdqa %xmm0, %xmm7 -+ bx lr -+.size _vpaes_schedule_round,.-_vpaes_schedule_round -+ -+@@ -+@@ .aes_schedule_transform -+@@ -+@@ Linear-transform q0 according to tables at [r11] -+@@ -+@@ Requires that q9 = 0x0F0F... as in preheat -+@@ Output in q0 -+@@ Clobbers q1, q2, q14, q15 -+@@ -+.type _vpaes_schedule_transform,%function -+.align 4 -+_vpaes_schedule_transform: -+ vld1.64 {q14,q15}, [r11] @ vmovdqa (%r11), %xmm2 # lo -+ @ vmovdqa 16(%r11), %xmm1 # hi -+ vand q1, q0, $s0F @ vpand %xmm9, %xmm0, %xmm1 -+ vshr.u8 q0, q0, #4 @ vpsrlb \$4, %xmm0, %xmm0 -+ vtbl.8 q2#lo, {q14}, q1#lo @ vpshufb %xmm1, %xmm2, %xmm2 -+ vtbl.8 q2#hi, {q14}, q1#hi -+ vtbl.8 q0#lo, {q15}, q0#lo @ vpshufb %xmm0, %xmm1, %xmm0 -+ vtbl.8 q0#hi, {q15}, q0#hi -+ veor q0, q0, q2 @ vpxor %xmm2, %xmm0, %xmm0 -+ bx lr -+.size _vpaes_schedule_transform,.-_vpaes_schedule_transform -+ -+@@ -+@@ .aes_schedule_mangle -+@@ -+@@ Mangles q0 from (basis-transformed) standard version -+@@ to our version. -+@@ -+@@ On encrypt, -+@@ xor with 0x63 -+@@ multiply by circulant 0,1,1,1 -+@@ apply shiftrows transform -+@@ -+@@ On decrypt, -+@@ xor with 0x63 -+@@ multiply by "inverse mixcolumns" circulant E,B,D,9 -+@@ deskew -+@@ apply shiftrows transform -+@@ -+@@ -+@@ Writes out to [r2], and increments or decrements it -+@@ Keeps track of round number mod 4 in r8 -+@@ Preserves q0 -+@@ Clobbers q1-q5 -+@@ -+.type _vpaes_schedule_mangle,%function -+.align 4 -+_vpaes_schedule_mangle: -+ tst $dir, $dir -+ vmov q4, q0 @ vmovdqa %xmm0, %xmm4 # save xmm0 for later -+ adr r11, .Lk_mc_forward @ Must be aligned to 8 mod 16. -+ vld1.64 {q5}, [r11] @ vmovdqa .Lk_mc_forward(%rip),%xmm5 -+ -+ @ encrypting -+ @ Write to q2 so we do not overlap table and destination below. -+ veor q2, q0, $s63 @ vpxor .Lk_s63(%rip), %xmm0, %xmm4 -+ add $out, $out, #16 @ add \$16, %rdx -+ vtbl.8 q4#lo, {q2}, q5#lo @ vpshufb %xmm5, %xmm4, %xmm4 -+ vtbl.8 q4#hi, {q2}, q5#hi -+ vtbl.8 q1#lo, {q4}, q5#lo @ vpshufb %xmm5, %xmm4, %xmm1 -+ vtbl.8 q1#hi, {q4}, q5#hi -+ vtbl.8 q3#lo, {q1}, q5#lo @ vpshufb %xmm5, %xmm1, %xmm3 -+ vtbl.8 q3#hi, {q1}, q5#hi -+ veor q4, q4, q1 @ vpxor %xmm1, %xmm4, %xmm4 -+ vld1.64 {q1}, [r8] @ vmovdqa (%r8,%r10), %xmm1 -+ veor q3, q3, q4 @ vpxor %xmm4, %xmm3, %xmm3 -+ -+.Lschedule_mangle_both: -+ @ Write to q2 so table and destination do not overlap. -+ vtbl.8 q2#lo, {q3}, q1#lo @ vpshufb %xmm1, %xmm3, %xmm3 -+ vtbl.8 q2#hi, {q3}, q1#hi -+ add r8, r8, #64-16 @ add \$-16, %r8 -+ and r8, r8, #~(1<<6) @ and \$0x30, %r8 -+ vst1.64 {q2}, [$out] @ vmovdqu %xmm3, (%rdx) -+ bx lr -+.size _vpaes_schedule_mangle,.-_vpaes_schedule_mangle -+ -+.globl GFp_vpaes_set_encrypt_key -+.type GFp_vpaes_set_encrypt_key,%function -+.align 4 -+GFp_vpaes_set_encrypt_key: -+ stmdb sp!, {r7-r11, lr} -+ vstmdb sp!, {d8-d15} -+ -+ lsr r9, $bits, #5 @ shr \$5,%eax -+ add r9, r9, #5 @ \$5,%eax -+ str r9, [$out,#240] @ mov %eax,240(%rdx) # AES_KEY->rounds = nbits/32+5; -+ -+ mov $dir, #0 @ mov \$0,%ecx -+ mov r8, #0x30 @ mov \$0x30,%r8d -+ bl _vpaes_schedule_core -+ eor r0, r0, r0 -+ -+ vldmia sp!, {d8-d15} -+ ldmia sp!, {r7-r11, pc} @ return -+.size GFp_vpaes_set_encrypt_key,.-GFp_vpaes_set_encrypt_key -+___ -+} -+ -+{ -+my ($out, $inp) = map("r$_", (0..1)); -+my ($s0F, $s63, $s63_raw, $mc_forward) = map("q$_", (9..12)); -+ -+$code .= <<___; -+ -+@ Additional constants for converting to bsaes. -+.type _vpaes_convert_consts,%object -+.align 4 -+_vpaes_convert_consts: -+@ .Lk_opt_then_skew applies skew(opt(x)) XOR 0x63, where skew is the linear -+@ transform in the AES S-box. 0x63 is incorporated into the low half of the -+@ table. This was computed with the following script: -+@ -+@ def u64s_to_u128(x, y): -+@ return x | (y << 64) -+@ def u128_to_u64s(w): -+@ return w & ((1<<64)-1), w >> 64 -+@ def get_byte(w, i): -+@ return (w >> (i*8)) & 0xff -+@ def apply_table(table, b): -+@ lo = b & 0xf -+@ hi = b >> 4 -+@ return get_byte(table[0], lo) ^ get_byte(table[1], hi) -+@ def opt(b): -+@ table = [ -+@ u64s_to_u128(0xFF9F4929D6B66000, 0xF7974121DEBE6808), -+@ u64s_to_u128(0x01EDBD5150BCEC00, 0xE10D5DB1B05C0CE0), -+@ ] -+@ return apply_table(table, b) -+@ def rot_byte(b, n): -+@ return 0xff & ((b << n) | (b >> (8-n))) -+@ def skew(x): -+@ return (x ^ rot_byte(x, 1) ^ rot_byte(x, 2) ^ rot_byte(x, 3) ^ -+@ rot_byte(x, 4)) -+@ table = [0, 0] -+@ for i in range(16): -+@ table[0] |= (skew(opt(i)) ^ 0x63) << (i*8) -+@ table[1] |= skew(opt(i<<4)) << (i*8) -+@ print("\t.quad\t0x%016x, 0x%016x" % u128_to_u64s(table[0])) -+@ print("\t.quad\t0x%016x, 0x%016x" % u128_to_u64s(table[1])) -+.Lk_opt_then_skew: -+ .quad 0x9cb8436798bc4763, 0x6440bb9f6044bf9b -+ .quad 0x1f30062936192f00, 0xb49bad829db284ab -+ -+@ void GFp_vpaes_encrypt_key_to_bsaes(AES_KEY *bsaes, const AES_KEY *vpaes); -+.globl GFp_vpaes_encrypt_key_to_bsaes -+.type GFp_vpaes_encrypt_key_to_bsaes,%function -+.align 4 -+GFp_vpaes_encrypt_key_to_bsaes: -+ stmdb sp!, {r11, lr} -+ -+ @ See _vpaes_schedule_core for the key schedule logic. In particular, -+ @ _vpaes_schedule_transform(.Lk_ipt) (section 2.2 of the paper), -+ @ _vpaes_schedule_mangle (section 4.3), and .Lschedule_mangle_last -+ @ contain the transformations not in the bsaes representation. This -+ @ function inverts those transforms. -+ @ -+ @ Note also that bsaes-armv7.pl expects aes-armv4.pl's key -+ @ representation, which does not match the other aes_nohw_* -+ @ implementations. The ARM aes_nohw_* stores each 32-bit word -+ @ byteswapped, as a convenience for (unsupported) big-endian ARM, at the -+ @ cost of extra REV and VREV32 operations in little-endian ARM. -+ -+ vmov.i8 $s0F, #0x0f @ Required by _vpaes_schedule_transform -+ adr r2, .Lk_mc_forward @ Must be aligned to 8 mod 16. -+ add r3, r2, 0x90 @ .Lk_sr+0x10-.Lk_mc_forward = 0x90 (Apple's toolchain doesn't support the expression) -+ -+ vld1.64 {$mc_forward}, [r2] -+ vmov.i8 $s63, #0x5b @ .Lk_s63 from vpaes-x86_64 -+ adr r11, .Lk_opt @ Must be aligned to 8 mod 16. -+ vmov.i8 $s63_raw, #0x63 @ .LK_s63 without .Lk_ipt applied -+ -+ @ vpaes stores one fewer round count than bsaes, but the number of keys -+ @ is the same. -+ ldr r2, [$inp,#240] -+ add r2, r2, #1 -+ str r2, [$out,#240] -+ -+ @ The first key is transformed with _vpaes_schedule_transform(.Lk_ipt). -+ @ Invert this with .Lk_opt. -+ vld1.64 {q0}, [$inp]! -+ bl _vpaes_schedule_transform -+ vrev32.8 q0, q0 -+ vst1.64 {q0}, [$out]! -+ -+ @ The middle keys have _vpaes_schedule_transform(.Lk_ipt) applied, -+ @ followed by _vpaes_schedule_mangle. _vpaes_schedule_mangle XORs 0x63, -+ @ multiplies by the circulant 0,1,1,1, then applies ShiftRows. -+.Loop_enc_key_to_bsaes: -+ vld1.64 {q0}, [$inp]! -+ -+ @ Invert the ShiftRows step (see .Lschedule_mangle_both). Note we cycle -+ @ r3 in the opposite direction and start at .Lk_sr+0x10 instead of 0x30. -+ @ We use r3 rather than r8 to avoid a callee-saved register. -+ vld1.64 {q1}, [r3] -+ vtbl.8 q2#lo, {q0}, q1#lo -+ vtbl.8 q2#hi, {q0}, q1#hi -+ add r3, r3, #16 -+ and r3, r3, #~(1<<6) -+ vmov q0, q2 -+ -+ @ Handle the last key differently. -+ subs r2, r2, #1 -+ beq .Loop_enc_key_to_bsaes_last -+ -+ @ Multiply by the circulant. This is its own inverse. -+ vtbl.8 q1#lo, {q0}, $mc_forward#lo -+ vtbl.8 q1#hi, {q0}, $mc_forward#hi -+ vmov q0, q1 -+ vtbl.8 q2#lo, {q1}, $mc_forward#lo -+ vtbl.8 q2#hi, {q1}, $mc_forward#hi -+ veor q0, q0, q2 -+ vtbl.8 q1#lo, {q2}, $mc_forward#lo -+ vtbl.8 q1#hi, {q2}, $mc_forward#hi -+ veor q0, q0, q1 -+ -+ @ XOR and finish. -+ veor q0, q0, $s63 -+ bl _vpaes_schedule_transform -+ vrev32.8 q0, q0 -+ vst1.64 {q0}, [$out]! -+ b .Loop_enc_key_to_bsaes -+ -+.Loop_enc_key_to_bsaes_last: -+ @ The final key does not have a basis transform (note -+ @ .Lschedule_mangle_last inverts the original transform). It only XORs -+ @ 0x63 and applies ShiftRows. The latter was already inverted in the -+ @ loop. Note that, because we act on the original representation, we use -+ @ $s63_raw, not $s63. -+ veor q0, q0, $s63_raw -+ vrev32.8 q0, q0 -+ vst1.64 {q0}, [$out] -+ -+ @ Wipe registers which contained key material. -+ veor q0, q0, q0 -+ veor q1, q1, q1 -+ veor q2, q2, q2 -+ -+ ldmia sp!, {r11, pc} @ return -+.size GFp_vpaes_encrypt_key_to_bsaes,.-GFp_vpaes_encrypt_key_to_bsaes -+___ -+} -+ -+{ -+# Register-passed parameters. -+my ($inp, $out, $len, $key) = map("r$_", 0..3); -+# Temporaries. _vpaes_encrypt_core already uses r8..r11, so overlap $ivec and -+# $tmp. $ctr is r7 because it must be preserved across calls. -+my ($ctr, $ivec, $tmp) = map("r$_", 7..9); -+ -+# void vpaes_ctr32_encrypt_blocks(const uint8_t *in, uint8_t *out, size_t len, -+# const AES_KEY *key, const uint8_t ivec[16]); -+$code .= <<___; -+.globl GFp_vpaes_ctr32_encrypt_blocks -+.type GFp_vpaes_ctr32_encrypt_blocks,%function -+.align 4 -+GFp_vpaes_ctr32_encrypt_blocks: -+ mov ip, sp -+ stmdb sp!, {r7-r11, lr} -+ @ This function uses q4-q7 (d8-d15), which are callee-saved. -+ vstmdb sp!, {d8-d15} -+ -+ cmp $len, #0 -+ @ $ivec is passed on the stack. -+ ldr $ivec, [ip] -+ beq .Lctr32_done -+ -+ @ _vpaes_encrypt_core expects the key in r2, so swap $len and $key. -+ mov $tmp, $key -+ mov $key, $len -+ mov $len, $tmp -+___ -+my ($len, $key) = ($key, $len); -+$code .= <<___; -+ -+ @ Load the IV and counter portion. -+ ldr $ctr, [$ivec, #12] -+ vld1.8 {q7}, [$ivec] -+ -+ bl _vpaes_preheat -+ rev $ctr, $ctr @ The counter is big-endian. -+ -+.Lctr32_loop: -+ vmov q0, q7 -+ vld1.8 {q6}, [$inp]! @ Load input ahead of time -+ bl _vpaes_encrypt_core -+ veor q0, q0, q6 @ XOR input and result -+ vst1.8 {q0}, [$out]! -+ subs $len, $len, #1 -+ @ Update the counter. -+ add $ctr, $ctr, #1 -+ rev $tmp, $ctr -+ vmov.32 q7#hi[1], $tmp -+ bne .Lctr32_loop -+ -+.Lctr32_done: -+ vldmia sp!, {d8-d15} -+ ldmia sp!, {r7-r11, pc} @ return -+.size GFp_vpaes_ctr32_encrypt_blocks,.-GFp_vpaes_ctr32_encrypt_blocks -+___ -+} -+ -+foreach (split("\n",$code)) { -+ s/\bq([0-9]+)#(lo|hi)/sprintf "d%d",2*$1+($2 eq "hi")/geo; -+ print $_,"\n"; -+} -+ -+close STDOUT; -diff --git a/crypto/fipsmodule/aes/asm/vpaes-armv8.pl b/crypto/fipsmodule/aes/asm/vpaes-armv8.pl -new file mode 100755 -index 0000000..b31bbb8 ---- /dev/null -+++ b/crypto/fipsmodule/aes/asm/vpaes-armv8.pl -@@ -0,0 +1,837 @@ -+#! /usr/bin/env perl -+# Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. -+# -+# Licensed under the OpenSSL license (the "License"). You may not use -+# this file except in compliance with the License. You can obtain a copy -+# in the file LICENSE in the source distribution or at -+# https://www.openssl.org/source/license.html -+ -+ -+###################################################################### -+## Constant-time SSSE3 AES core implementation. -+## version 0.1 -+## -+## By Mike Hamburg (Stanford University), 2009 -+## Public domain. -+## -+## For details see http://shiftleft.org/papers/vector_aes/ and -+## http://crypto.stanford.edu/vpaes/. -+## -+###################################################################### -+# ARMv8 NEON adaptation by -+# -+# Reason for undertaken effort is that there is at least one popular -+# SoC based on Cortex-A53 that doesn't have crypto extensions. -+# -+# CBC enc ECB enc/dec(*) [bit-sliced enc/dec] -+# Cortex-A53 21.5 18.1/20.6 [17.5/19.8 ] -+# Cortex-A57 36.0(**) 20.4/24.9(**) [14.4/16.6 ] -+# X-Gene 45.9(**) 45.8/57.7(**) [33.1/37.6(**) ] -+# Denver(***) 16.6(**) 15.1/17.8(**) [8.80/9.93 ] -+# Apple A7(***) 22.7(**) 10.9/14.3 [8.45/10.0 ] -+# Mongoose(***) 26.3(**) 21.0/25.0(**) [13.3/16.8 ] -+# -+# (*) ECB denotes approximate result for parallelizable modes -+# such as CBC decrypt, CTR, etc.; -+# (**) these results are worse than scalar compiler-generated -+# code, but it's constant-time and therefore preferred; -+# (***) presented for reference/comparison purposes; -+ -+$flavour = shift; -+while (($output=shift) && ($output!~/\w[\w\-]*\.\w+$/)) {} -+ -+$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1; -+( $xlate="${dir}arm-xlate.pl" and -f $xlate ) or -+( $xlate="${dir}../../../perlasm/arm-xlate.pl" and -f $xlate) or -+die "can't locate arm-xlate.pl"; -+ -+open OUT,"| \"$^X\" $xlate $flavour $output"; -+*STDOUT=*OUT; -+ -+$code.=<<___; -+#include -+ -+.section .rodata -+ -+.type _vpaes_consts,%object -+.align 7 // totally strategic alignment -+_vpaes_consts: -+.Lk_mc_forward: // mc_forward -+ .quad 0x0407060500030201, 0x0C0F0E0D080B0A09 -+ .quad 0x080B0A0904070605, 0x000302010C0F0E0D -+ .quad 0x0C0F0E0D080B0A09, 0x0407060500030201 -+ .quad 0x000302010C0F0E0D, 0x080B0A0904070605 -+.Lk_mc_backward:// mc_backward -+ .quad 0x0605040702010003, 0x0E0D0C0F0A09080B -+ .quad 0x020100030E0D0C0F, 0x0A09080B06050407 -+ .quad 0x0E0D0C0F0A09080B, 0x0605040702010003 -+ .quad 0x0A09080B06050407, 0x020100030E0D0C0F -+.Lk_sr: // sr -+ .quad 0x0706050403020100, 0x0F0E0D0C0B0A0908 -+ .quad 0x030E09040F0A0500, 0x0B06010C07020D08 -+ .quad 0x0F060D040B020900, 0x070E050C030A0108 -+ .quad 0x0B0E0104070A0D00, 0x0306090C0F020508 -+ -+// -+// "Hot" constants -+// -+.Lk_inv: // inv, inva -+ .quad 0x0E05060F0D080180, 0x040703090A0B0C02 -+ .quad 0x01040A060F0B0780, 0x030D0E0C02050809 -+.Lk_ipt: // input transform (lo, hi) -+ .quad 0xC2B2E8985A2A7000, 0xCABAE09052227808 -+ .quad 0x4C01307D317C4D00, 0xCD80B1FCB0FDCC81 -+.Lk_sbo: // sbou, sbot -+ .quad 0xD0D26D176FBDC700, 0x15AABF7AC502A878 -+ .quad 0xCFE474A55FBB6A00, 0x8E1E90D1412B35FA -+.Lk_sb1: // sb1u, sb1t -+ .quad 0x3618D415FAE22300, 0x3BF7CCC10D2ED9EF -+ .quad 0xB19BE18FCB503E00, 0xA5DF7A6E142AF544 -+.Lk_sb2: // sb2u, sb2t -+ .quad 0x69EB88400AE12900, 0xC2A163C8AB82234A -+ .quad 0xE27A93C60B712400, 0x5EB7E955BC982FCD -+ -+// -+// Key schedule constants -+// -+.Lk_dksd: // decryption key schedule: invskew x*D -+ .quad 0xFEB91A5DA3E44700, 0x0740E3A45A1DBEF9 -+ .quad 0x41C277F4B5368300, 0x5FDC69EAAB289D1E -+.Lk_dksb: // decryption key schedule: invskew x*B -+ .quad 0x9A4FCA1F8550D500, 0x03D653861CC94C99 -+ .quad 0x115BEDA7B6FC4A00, 0xD993256F7E3482C8 -+.Lk_dkse: // decryption key schedule: invskew x*E + 0x63 -+ .quad 0xD5031CCA1FC9D600, 0x53859A4C994F5086 -+ .quad 0xA23196054FDC7BE8, 0xCD5EF96A20B31487 -+.Lk_dks9: // decryption key schedule: invskew x*9 -+ .quad 0xB6116FC87ED9A700, 0x4AED933482255BFC -+ .quad 0x4576516227143300, 0x8BB89FACE9DAFDCE -+ -+.Lk_rcon: // rcon -+ .quad 0x1F8391B9AF9DEEB6, 0x702A98084D7C7D81 -+ -+.Lk_opt: // output transform -+ .quad 0xFF9F4929D6B66000, 0xF7974121DEBE6808 -+ .quad 0x01EDBD5150BCEC00, 0xE10D5DB1B05C0CE0 -+.Lk_deskew: // deskew tables: inverts the sbox's "skew" -+ .quad 0x07E4A34047A4E300, 0x1DFEB95A5DBEF91A -+ .quad 0x5F36B5DC83EA6900, 0x2841C2ABF49D1E77 -+ -+.asciz "Vector Permutation AES for ARMv8, Mike Hamburg (Stanford University)" -+.size _vpaes_consts,.-_vpaes_consts -+.align 6 -+ -+.text -+___ -+ -+{ -+my ($inp,$out,$key) = map("x$_",(0..2)); -+ -+my ($invlo,$invhi,$iptlo,$ipthi,$sbou,$sbot) = map("v$_.16b",(18..23)); -+my ($sb1u,$sb1t,$sb2u,$sb2t) = map("v$_.16b",(24..27)); -+my ($sb9u,$sb9t,$sbdu,$sbdt,$sbbu,$sbbt,$sbeu,$sbet)=map("v$_.16b",(24..31)); -+ -+$code.=<<___; -+## -+## _aes_preheat -+## -+## Fills register %r10 -> .aes_consts (so you can -fPIC) -+## and %xmm9-%xmm15 as specified below. -+## -+.type _vpaes_encrypt_preheat,%function -+.align 4 -+_vpaes_encrypt_preheat: -+ adrp x10, :pg_hi21:.Lk_inv -+ add x10, x10, :lo12:.Lk_inv -+ movi v17.16b, #0x0f -+ ld1 {v18.2d-v19.2d}, [x10],#32 // .Lk_inv -+ ld1 {v20.2d-v23.2d}, [x10],#64 // .Lk_ipt, .Lk_sbo -+ ld1 {v24.2d-v27.2d}, [x10] // .Lk_sb1, .Lk_sb2 -+ ret -+.size _vpaes_encrypt_preheat,.-_vpaes_encrypt_preheat -+ -+## -+## _aes_encrypt_core -+## -+## AES-encrypt %xmm0. -+## -+## Inputs: -+## %xmm0 = input -+## %xmm9-%xmm15 as in _vpaes_preheat -+## (%rdx) = scheduled keys -+## -+## Output in %xmm0 -+## Clobbers %xmm1-%xmm5, %r9, %r10, %r11, %rax -+## Preserves %xmm6 - %xmm8 so you get some local vectors -+## -+## -+.type _vpaes_encrypt_core,%function -+.align 4 -+_vpaes_encrypt_core: -+ mov x9, $key -+ ldr w8, [$key,#240] // pull rounds -+ adrp x11, :pg_hi21:.Lk_mc_forward+16 -+ add x11, x11, :lo12:.Lk_mc_forward+16 -+ // vmovdqa .Lk_ipt(%rip), %xmm2 # iptlo -+ ld1 {v16.2d}, [x9], #16 // vmovdqu (%r9), %xmm5 # round0 key -+ and v1.16b, v7.16b, v17.16b // vpand %xmm9, %xmm0, %xmm1 -+ ushr v0.16b, v7.16b, #4 // vpsrlb \$4, %xmm0, %xmm0 -+ tbl v1.16b, {$iptlo}, v1.16b // vpshufb %xmm1, %xmm2, %xmm1 -+ // vmovdqa .Lk_ipt+16(%rip), %xmm3 # ipthi -+ tbl v2.16b, {$ipthi}, v0.16b // vpshufb %xmm0, %xmm3, %xmm2 -+ eor v0.16b, v1.16b, v16.16b // vpxor %xmm5, %xmm1, %xmm0 -+ eor v0.16b, v0.16b, v2.16b // vpxor %xmm2, %xmm0, %xmm0 -+ b .Lenc_entry -+ -+.align 4 -+.Lenc_loop: -+ // middle of middle round -+ add x10, x11, #0x40 -+ tbl v4.16b, {$sb1t}, v2.16b // vpshufb %xmm2, %xmm13, %xmm4 # 4 = sb1u -+ ld1 {v1.2d}, [x11], #16 // vmovdqa -0x40(%r11,%r10), %xmm1 # .Lk_mc_forward[] -+ tbl v0.16b, {$sb1u}, v3.16b // vpshufb %xmm3, %xmm12, %xmm0 # 0 = sb1t -+ eor v4.16b, v4.16b, v16.16b // vpxor %xmm5, %xmm4, %xmm4 # 4 = sb1u + k -+ tbl v5.16b, {$sb2t}, v2.16b // vpshufb %xmm2, %xmm15, %xmm5 # 4 = sb2u -+ eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 0 = A -+ tbl v2.16b, {$sb2u}, v3.16b // vpshufb %xmm3, %xmm14, %xmm2 # 2 = sb2t -+ ld1 {v4.2d}, [x10] // vmovdqa (%r11,%r10), %xmm4 # .Lk_mc_backward[] -+ tbl v3.16b, {v0.16b}, v1.16b // vpshufb %xmm1, %xmm0, %xmm3 # 0 = B -+ eor v2.16b, v2.16b, v5.16b // vpxor %xmm5, %xmm2, %xmm2 # 2 = 2A -+ tbl v0.16b, {v0.16b}, v4.16b // vpshufb %xmm4, %xmm0, %xmm0 # 3 = D -+ eor v3.16b, v3.16b, v2.16b // vpxor %xmm2, %xmm3, %xmm3 # 0 = 2A+B -+ tbl v4.16b, {v3.16b}, v1.16b // vpshufb %xmm1, %xmm3, %xmm4 # 0 = 2B+C -+ eor v0.16b, v0.16b, v3.16b // vpxor %xmm3, %xmm0, %xmm0 # 3 = 2A+B+D -+ and x11, x11, #~(1<<6) // and \$0x30, %r11 # ... mod 4 -+ eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 0 = 2A+3B+C+D -+ sub w8, w8, #1 // nr-- -+ -+.Lenc_entry: -+ // top of round -+ and v1.16b, v0.16b, v17.16b // vpand %xmm0, %xmm9, %xmm1 # 0 = k -+ ushr v0.16b, v0.16b, #4 // vpsrlb \$4, %xmm0, %xmm0 # 1 = i -+ tbl v5.16b, {$invhi}, v1.16b // vpshufb %xmm1, %xmm11, %xmm5 # 2 = a/k -+ eor v1.16b, v1.16b, v0.16b // vpxor %xmm0, %xmm1, %xmm1 # 0 = j -+ tbl v3.16b, {$invlo}, v0.16b // vpshufb %xmm0, %xmm10, %xmm3 # 3 = 1/i -+ tbl v4.16b, {$invlo}, v1.16b // vpshufb %xmm1, %xmm10, %xmm4 # 4 = 1/j -+ eor v3.16b, v3.16b, v5.16b // vpxor %xmm5, %xmm3, %xmm3 # 3 = iak = 1/i + a/k -+ eor v4.16b, v4.16b, v5.16b // vpxor %xmm5, %xmm4, %xmm4 # 4 = jak = 1/j + a/k -+ tbl v2.16b, {$invlo}, v3.16b // vpshufb %xmm3, %xmm10, %xmm2 # 2 = 1/iak -+ tbl v3.16b, {$invlo}, v4.16b // vpshufb %xmm4, %xmm10, %xmm3 # 3 = 1/jak -+ eor v2.16b, v2.16b, v1.16b // vpxor %xmm1, %xmm2, %xmm2 # 2 = io -+ eor v3.16b, v3.16b, v0.16b // vpxor %xmm0, %xmm3, %xmm3 # 3 = jo -+ ld1 {v16.2d}, [x9],#16 // vmovdqu (%r9), %xmm5 -+ cbnz w8, .Lenc_loop -+ -+ // middle of last round -+ add x10, x11, #0x80 -+ // vmovdqa -0x60(%r10), %xmm4 # 3 : sbou .Lk_sbo -+ // vmovdqa -0x50(%r10), %xmm0 # 0 : sbot .Lk_sbo+16 -+ tbl v4.16b, {$sbou}, v2.16b // vpshufb %xmm2, %xmm4, %xmm4 # 4 = sbou -+ ld1 {v1.2d}, [x10] // vmovdqa 0x40(%r11,%r10), %xmm1 # .Lk_sr[] -+ tbl v0.16b, {$sbot}, v3.16b // vpshufb %xmm3, %xmm0, %xmm0 # 0 = sb1t -+ eor v4.16b, v4.16b, v16.16b // vpxor %xmm5, %xmm4, %xmm4 # 4 = sb1u + k -+ eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 0 = A -+ tbl v0.16b, {v0.16b}, v1.16b // vpshufb %xmm1, %xmm0, %xmm0 -+ ret -+.size _vpaes_encrypt_core,.-_vpaes_encrypt_core -+ -+.globl GFp_vpaes_encrypt -+.type GFp_vpaes_encrypt,%function -+.align 4 -+GFp_vpaes_encrypt: -+ AARCH64_SIGN_LINK_REGISTER -+ stp x29,x30,[sp,#-16]! -+ add x29,sp,#0 -+ -+ ld1 {v7.16b}, [$inp] -+ bl _vpaes_encrypt_preheat -+ bl _vpaes_encrypt_core -+ st1 {v0.16b}, [$out] -+ -+ ldp x29,x30,[sp],#16 -+ AARCH64_VALIDATE_LINK_REGISTER -+ ret -+.size GFp_vpaes_encrypt,.-GFp_vpaes_encrypt -+ -+.type _vpaes_encrypt_2x,%function -+.align 4 -+_vpaes_encrypt_2x: -+ mov x9, $key -+ ldr w8, [$key,#240] // pull rounds -+ adrp x11, :pg_hi21:.Lk_mc_forward+16 -+ add x11, x11, :lo12:.Lk_mc_forward+16 -+ // vmovdqa .Lk_ipt(%rip), %xmm2 # iptlo -+ ld1 {v16.2d}, [x9], #16 // vmovdqu (%r9), %xmm5 # round0 key -+ and v1.16b, v14.16b, v17.16b // vpand %xmm9, %xmm0, %xmm1 -+ ushr v0.16b, v14.16b, #4 // vpsrlb \$4, %xmm0, %xmm0 -+ and v9.16b, v15.16b, v17.16b -+ ushr v8.16b, v15.16b, #4 -+ tbl v1.16b, {$iptlo}, v1.16b // vpshufb %xmm1, %xmm2, %xmm1 -+ tbl v9.16b, {$iptlo}, v9.16b -+ // vmovdqa .Lk_ipt+16(%rip), %xmm3 # ipthi -+ tbl v2.16b, {$ipthi}, v0.16b // vpshufb %xmm0, %xmm3, %xmm2 -+ tbl v10.16b, {$ipthi}, v8.16b -+ eor v0.16b, v1.16b, v16.16b // vpxor %xmm5, %xmm1, %xmm0 -+ eor v8.16b, v9.16b, v16.16b -+ eor v0.16b, v0.16b, v2.16b // vpxor %xmm2, %xmm0, %xmm0 -+ eor v8.16b, v8.16b, v10.16b -+ b .Lenc_2x_entry -+ -+.align 4 -+.Lenc_2x_loop: -+ // middle of middle round -+ add x10, x11, #0x40 -+ tbl v4.16b, {$sb1t}, v2.16b // vpshufb %xmm2, %xmm13, %xmm4 # 4 = sb1u -+ tbl v12.16b, {$sb1t}, v10.16b -+ ld1 {v1.2d}, [x11], #16 // vmovdqa -0x40(%r11,%r10), %xmm1 # .Lk_mc_forward[] -+ tbl v0.16b, {$sb1u}, v3.16b // vpshufb %xmm3, %xmm12, %xmm0 # 0 = sb1t -+ tbl v8.16b, {$sb1u}, v11.16b -+ eor v4.16b, v4.16b, v16.16b // vpxor %xmm5, %xmm4, %xmm4 # 4 = sb1u + k -+ eor v12.16b, v12.16b, v16.16b -+ tbl v5.16b, {$sb2t}, v2.16b // vpshufb %xmm2, %xmm15, %xmm5 # 4 = sb2u -+ tbl v13.16b, {$sb2t}, v10.16b -+ eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 0 = A -+ eor v8.16b, v8.16b, v12.16b -+ tbl v2.16b, {$sb2u}, v3.16b // vpshufb %xmm3, %xmm14, %xmm2 # 2 = sb2t -+ tbl v10.16b, {$sb2u}, v11.16b -+ ld1 {v4.2d}, [x10] // vmovdqa (%r11,%r10), %xmm4 # .Lk_mc_backward[] -+ tbl v3.16b, {v0.16b}, v1.16b // vpshufb %xmm1, %xmm0, %xmm3 # 0 = B -+ tbl v11.16b, {v8.16b}, v1.16b -+ eor v2.16b, v2.16b, v5.16b // vpxor %xmm5, %xmm2, %xmm2 # 2 = 2A -+ eor v10.16b, v10.16b, v13.16b -+ tbl v0.16b, {v0.16b}, v4.16b // vpshufb %xmm4, %xmm0, %xmm0 # 3 = D -+ tbl v8.16b, {v8.16b}, v4.16b -+ eor v3.16b, v3.16b, v2.16b // vpxor %xmm2, %xmm3, %xmm3 # 0 = 2A+B -+ eor v11.16b, v11.16b, v10.16b -+ tbl v4.16b, {v3.16b}, v1.16b // vpshufb %xmm1, %xmm3, %xmm4 # 0 = 2B+C -+ tbl v12.16b, {v11.16b},v1.16b -+ eor v0.16b, v0.16b, v3.16b // vpxor %xmm3, %xmm0, %xmm0 # 3 = 2A+B+D -+ eor v8.16b, v8.16b, v11.16b -+ and x11, x11, #~(1<<6) // and \$0x30, %r11 # ... mod 4 -+ eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 0 = 2A+3B+C+D -+ eor v8.16b, v8.16b, v12.16b -+ sub w8, w8, #1 // nr-- -+ -+.Lenc_2x_entry: -+ // top of round -+ and v1.16b, v0.16b, v17.16b // vpand %xmm0, %xmm9, %xmm1 # 0 = k -+ ushr v0.16b, v0.16b, #4 // vpsrlb \$4, %xmm0, %xmm0 # 1 = i -+ and v9.16b, v8.16b, v17.16b -+ ushr v8.16b, v8.16b, #4 -+ tbl v5.16b, {$invhi},v1.16b // vpshufb %xmm1, %xmm11, %xmm5 # 2 = a/k -+ tbl v13.16b, {$invhi},v9.16b -+ eor v1.16b, v1.16b, v0.16b // vpxor %xmm0, %xmm1, %xmm1 # 0 = j -+ eor v9.16b, v9.16b, v8.16b -+ tbl v3.16b, {$invlo},v0.16b // vpshufb %xmm0, %xmm10, %xmm3 # 3 = 1/i -+ tbl v11.16b, {$invlo},v8.16b -+ tbl v4.16b, {$invlo},v1.16b // vpshufb %xmm1, %xmm10, %xmm4 # 4 = 1/j -+ tbl v12.16b, {$invlo},v9.16b -+ eor v3.16b, v3.16b, v5.16b // vpxor %xmm5, %xmm3, %xmm3 # 3 = iak = 1/i + a/k -+ eor v11.16b, v11.16b, v13.16b -+ eor v4.16b, v4.16b, v5.16b // vpxor %xmm5, %xmm4, %xmm4 # 4 = jak = 1/j + a/k -+ eor v12.16b, v12.16b, v13.16b -+ tbl v2.16b, {$invlo},v3.16b // vpshufb %xmm3, %xmm10, %xmm2 # 2 = 1/iak -+ tbl v10.16b, {$invlo},v11.16b -+ tbl v3.16b, {$invlo},v4.16b // vpshufb %xmm4, %xmm10, %xmm3 # 3 = 1/jak -+ tbl v11.16b, {$invlo},v12.16b -+ eor v2.16b, v2.16b, v1.16b // vpxor %xmm1, %xmm2, %xmm2 # 2 = io -+ eor v10.16b, v10.16b, v9.16b -+ eor v3.16b, v3.16b, v0.16b // vpxor %xmm0, %xmm3, %xmm3 # 3 = jo -+ eor v11.16b, v11.16b, v8.16b -+ ld1 {v16.2d}, [x9],#16 // vmovdqu (%r9), %xmm5 -+ cbnz w8, .Lenc_2x_loop -+ -+ // middle of last round -+ add x10, x11, #0x80 -+ // vmovdqa -0x60(%r10), %xmm4 # 3 : sbou .Lk_sbo -+ // vmovdqa -0x50(%r10), %xmm0 # 0 : sbot .Lk_sbo+16 -+ tbl v4.16b, {$sbou}, v2.16b // vpshufb %xmm2, %xmm4, %xmm4 # 4 = sbou -+ tbl v12.16b, {$sbou}, v10.16b -+ ld1 {v1.2d}, [x10] // vmovdqa 0x40(%r11,%r10), %xmm1 # .Lk_sr[] -+ tbl v0.16b, {$sbot}, v3.16b // vpshufb %xmm3, %xmm0, %xmm0 # 0 = sb1t -+ tbl v8.16b, {$sbot}, v11.16b -+ eor v4.16b, v4.16b, v16.16b // vpxor %xmm5, %xmm4, %xmm4 # 4 = sb1u + k -+ eor v12.16b, v12.16b, v16.16b -+ eor v0.16b, v0.16b, v4.16b // vpxor %xmm4, %xmm0, %xmm0 # 0 = A -+ eor v8.16b, v8.16b, v12.16b -+ tbl v0.16b, {v0.16b},v1.16b // vpshufb %xmm1, %xmm0, %xmm0 -+ tbl v1.16b, {v8.16b},v1.16b -+ ret -+.size _vpaes_encrypt_2x,.-_vpaes_encrypt_2x -+___ -+} -+{ -+my ($inp,$bits,$out,$dir)=("x0","w1","x2","w3"); -+my ($invlo,$invhi,$iptlo,$ipthi,$rcon) = map("v$_.16b",(18..21,8)); -+ -+$code.=<<___; -+######################################################## -+## ## -+## AES key schedule ## -+## ## -+######################################################## -+.type _vpaes_key_preheat,%function -+.align 4 -+_vpaes_key_preheat: -+ adrp x10, :pg_hi21:.Lk_inv -+ add x10, x10, :lo12:.Lk_inv -+ movi v16.16b, #0x5b // .Lk_s63 -+ adrp x11, :pg_hi21:.Lk_sb1 -+ add x11, x11, :lo12:.Lk_sb1 -+ movi v17.16b, #0x0f // .Lk_s0F -+ ld1 {v18.2d-v21.2d}, [x10] // .Lk_inv, .Lk_ipt -+ adrp x10, :pg_hi21:.Lk_dksd -+ add x10, x10, :lo12:.Lk_dksd -+ ld1 {v22.2d-v23.2d}, [x11] // .Lk_sb1 -+ adrp x11, :pg_hi21:.Lk_mc_forward -+ add x11, x11, :lo12:.Lk_mc_forward -+ ld1 {v24.2d-v27.2d}, [x10],#64 // .Lk_dksd, .Lk_dksb -+ ld1 {v28.2d-v31.2d}, [x10],#64 // .Lk_dkse, .Lk_dks9 -+ ld1 {v8.2d}, [x10] // .Lk_rcon -+ ld1 {v9.2d}, [x11] // .Lk_mc_forward[0] -+ ret -+.size _vpaes_key_preheat,.-_vpaes_key_preheat -+ -+.type _vpaes_schedule_core,%function -+.align 4 -+_vpaes_schedule_core: -+ AARCH64_SIGN_LINK_REGISTER -+ stp x29, x30, [sp,#-16]! -+ add x29,sp,#0 -+ -+ bl _vpaes_key_preheat // load the tables -+ -+ ld1 {v0.16b}, [$inp],#16 // vmovdqu (%rdi), %xmm0 # load key (unaligned) -+ -+ // input transform -+ mov v3.16b, v0.16b // vmovdqa %xmm0, %xmm3 -+ bl _vpaes_schedule_transform -+ mov v7.16b, v0.16b // vmovdqa %xmm0, %xmm7 -+ -+ adrp x10, :pg_hi21:.Lk_sr // lea .Lk_sr(%rip),%r10 -+ add x10, x10, :lo12:.Lk_sr -+ -+ add x8, x8, x10 -+ -+ // encrypting, output zeroth round key after transform -+ st1 {v0.2d}, [$out] // vmovdqu %xmm0, (%rdx) -+ -+ cmp $bits, #192 // cmp \$192, %esi -+ b.hi .Lschedule_256 -+ b.eq .Lschedule_192 -+ // 128: fall though -+ -+## -+## .schedule_128 -+## -+## 128-bit specific part of key schedule. -+## -+## This schedule is really simple, because all its parts -+## are accomplished by the subroutines. -+## -+.Lschedule_128: -+ mov $inp, #10 // mov \$10, %esi -+ -+.Loop_schedule_128: -+ sub $inp, $inp, #1 // dec %esi -+ bl _vpaes_schedule_round -+ cbz $inp, .Lschedule_mangle_last -+ bl _vpaes_schedule_mangle // write output -+ b .Loop_schedule_128 -+ -+## -+## .aes_schedule_192 -+## -+## 192-bit specific part of key schedule. -+## -+## The main body of this schedule is the same as the 128-bit -+## schedule, but with more smearing. The long, high side is -+## stored in %xmm7 as before, and the short, low side is in -+## the high bits of %xmm6. -+## -+## This schedule is somewhat nastier, however, because each -+## round produces 192 bits of key material, or 1.5 round keys. -+## Therefore, on each cycle we do 2 rounds and produce 3 round -+## keys. -+## -+.align 4 -+.Lschedule_192: -+ sub $inp, $inp, #8 -+ ld1 {v0.16b}, [$inp] // vmovdqu 8(%rdi),%xmm0 # load key part 2 (very unaligned) -+ bl _vpaes_schedule_transform // input transform -+ mov v6.16b, v0.16b // vmovdqa %xmm0, %xmm6 # save short part -+ eor v4.16b, v4.16b, v4.16b // vpxor %xmm4, %xmm4, %xmm4 # clear 4 -+ ins v6.d[0], v4.d[0] // vmovhlps %xmm4, %xmm6, %xmm6 # clobber low side with zeros -+ mov $inp, #4 // mov \$4, %esi -+ -+.Loop_schedule_192: -+ sub $inp, $inp, #1 // dec %esi -+ bl _vpaes_schedule_round -+ ext v0.16b, v6.16b, v0.16b, #8 // vpalignr \$8,%xmm6,%xmm0,%xmm0 -+ bl _vpaes_schedule_mangle // save key n -+ bl _vpaes_schedule_192_smear -+ bl _vpaes_schedule_mangle // save key n+1 -+ bl _vpaes_schedule_round -+ cbz $inp, .Lschedule_mangle_last -+ bl _vpaes_schedule_mangle // save key n+2 -+ bl _vpaes_schedule_192_smear -+ b .Loop_schedule_192 -+ -+## -+## .aes_schedule_256 -+## -+## 256-bit specific part of key schedule. -+## -+## The structure here is very similar to the 128-bit -+## schedule, but with an additional "low side" in -+## %xmm6. The low side's rounds are the same as the -+## high side's, except no rcon and no rotation. -+## -+.align 4 -+.Lschedule_256: -+ ld1 {v0.16b}, [$inp] // vmovdqu 16(%rdi),%xmm0 # load key part 2 (unaligned) -+ bl _vpaes_schedule_transform // input transform -+ mov $inp, #7 // mov \$7, %esi -+ -+.Loop_schedule_256: -+ sub $inp, $inp, #1 // dec %esi -+ bl _vpaes_schedule_mangle // output low result -+ mov v6.16b, v0.16b // vmovdqa %xmm0, %xmm6 # save cur_lo in xmm6 -+ -+ // high round -+ bl _vpaes_schedule_round -+ cbz $inp, .Lschedule_mangle_last -+ bl _vpaes_schedule_mangle -+ -+ // low round. swap xmm7 and xmm6 -+ dup v0.4s, v0.s[3] // vpshufd \$0xFF, %xmm0, %xmm0 -+ movi v4.16b, #0 -+ mov v5.16b, v7.16b // vmovdqa %xmm7, %xmm5 -+ mov v7.16b, v6.16b // vmovdqa %xmm6, %xmm7 -+ bl _vpaes_schedule_low_round -+ mov v7.16b, v5.16b // vmovdqa %xmm5, %xmm7 -+ -+ b .Loop_schedule_256 -+ -+## -+## .aes_schedule_mangle_last -+## -+## Mangler for last round of key schedule -+## Mangles %xmm0 -+## when encrypting, outputs out(%xmm0) ^ 63 -+## when decrypting, outputs unskew(%xmm0) -+## -+## Always called right before return... jumps to cleanup and exits -+## -+.align 4 -+.Lschedule_mangle_last: -+ // schedule last round key from xmm0 -+ adrp x11, :pg_hi21:.Lk_deskew // lea .Lk_deskew(%rip),%r11 # prepare to deskew -+ add x11, x11, :lo12:.Lk_deskew -+ -+ cbnz $dir, .Lschedule_mangle_last_dec -+ -+ // encrypting -+ ld1 {v1.2d}, [x8] // vmovdqa (%r8,%r10),%xmm1 -+ adrp x11, :pg_hi21:.Lk_opt // lea .Lk_opt(%rip), %r11 # prepare to output transform -+ add x11, x11, :lo12:.Lk_opt -+ add $out, $out, #32 // add \$32, %rdx -+ tbl v0.16b, {v0.16b}, v1.16b // vpshufb %xmm1, %xmm0, %xmm0 # output permute -+ -+.Lschedule_mangle_last_dec: -+ ld1 {v20.2d-v21.2d}, [x11] // reload constants -+ sub $out, $out, #16 // add \$-16, %rdx -+ eor v0.16b, v0.16b, v16.16b // vpxor .Lk_s63(%rip), %xmm0, %xmm0 -+ bl _vpaes_schedule_transform // output transform -+ st1 {v0.2d}, [$out] // vmovdqu %xmm0, (%rdx) # save last key -+ -+ // cleanup -+ eor v0.16b, v0.16b, v0.16b // vpxor %xmm0, %xmm0, %xmm0 -+ eor v1.16b, v1.16b, v1.16b // vpxor %xmm1, %xmm1, %xmm1 -+ eor v2.16b, v2.16b, v2.16b // vpxor %xmm2, %xmm2, %xmm2 -+ eor v3.16b, v3.16b, v3.16b // vpxor %xmm3, %xmm3, %xmm3 -+ eor v4.16b, v4.16b, v4.16b // vpxor %xmm4, %xmm4, %xmm4 -+ eor v5.16b, v5.16b, v5.16b // vpxor %xmm5, %xmm5, %xmm5 -+ eor v6.16b, v6.16b, v6.16b // vpxor %xmm6, %xmm6, %xmm6 -+ eor v7.16b, v7.16b, v7.16b // vpxor %xmm7, %xmm7, %xmm7 -+ ldp x29, x30, [sp],#16 -+ AARCH64_VALIDATE_LINK_REGISTER -+ ret -+.size _vpaes_schedule_core,.-_vpaes_schedule_core -+ -+## -+## .aes_schedule_192_smear -+## -+## Smear the short, low side in the 192-bit key schedule. -+## -+## Inputs: -+## %xmm7: high side, b a x y -+## %xmm6: low side, d c 0 0 -+## %xmm13: 0 -+## -+## Outputs: -+## %xmm6: b+c+d b+c 0 0 -+## %xmm0: b+c+d b+c b a -+## -+.type _vpaes_schedule_192_smear,%function -+.align 4 -+_vpaes_schedule_192_smear: -+ movi v1.16b, #0 -+ dup v0.4s, v7.s[3] -+ ins v1.s[3], v6.s[2] // vpshufd \$0x80, %xmm6, %xmm1 # d c 0 0 -> c 0 0 0 -+ ins v0.s[0], v7.s[2] // vpshufd \$0xFE, %xmm7, %xmm0 # b a _ _ -> b b b a -+ eor v6.16b, v6.16b, v1.16b // vpxor %xmm1, %xmm6, %xmm6 # -> c+d c 0 0 -+ eor v1.16b, v1.16b, v1.16b // vpxor %xmm1, %xmm1, %xmm1 -+ eor v6.16b, v6.16b, v0.16b // vpxor %xmm0, %xmm6, %xmm6 # -> b+c+d b+c b a -+ mov v0.16b, v6.16b // vmovdqa %xmm6, %xmm0 -+ ins v6.d[0], v1.d[0] // vmovhlps %xmm1, %xmm6, %xmm6 # clobber low side with zeros -+ ret -+.size _vpaes_schedule_192_smear,.-_vpaes_schedule_192_smear -+ -+## -+## .aes_schedule_round -+## -+## Runs one main round of the key schedule on %xmm0, %xmm7 -+## -+## Specifically, runs subbytes on the high dword of %xmm0 -+## then rotates it by one byte and xors into the low dword of -+## %xmm7. -+## -+## Adds rcon from low byte of %xmm8, then rotates %xmm8 for -+## next rcon. -+## -+## Smears the dwords of %xmm7 by xoring the low into the -+## second low, result into third, result into highest. -+## -+## Returns results in %xmm7 = %xmm0. -+## Clobbers %xmm1-%xmm4, %r11. -+## -+.type _vpaes_schedule_round,%function -+.align 4 -+_vpaes_schedule_round: -+ // extract rcon from xmm8 -+ movi v4.16b, #0 // vpxor %xmm4, %xmm4, %xmm4 -+ ext v1.16b, $rcon, v4.16b, #15 // vpalignr \$15, %xmm8, %xmm4, %xmm1 -+ ext $rcon, $rcon, $rcon, #15 // vpalignr \$15, %xmm8, %xmm8, %xmm8 -+ eor v7.16b, v7.16b, v1.16b // vpxor %xmm1, %xmm7, %xmm7 -+ -+ // rotate -+ dup v0.4s, v0.s[3] // vpshufd \$0xFF, %xmm0, %xmm0 -+ ext v0.16b, v0.16b, v0.16b, #1 // vpalignr \$1, %xmm0, %xmm0, %xmm0 -+ -+ // fall through... -+ -+ // low round: same as high round, but no rotation and no rcon. -+_vpaes_schedule_low_round: -+ // smear xmm7 -+ ext v1.16b, v4.16b, v7.16b, #12 // vpslldq \$4, %xmm7, %xmm1 -+ eor v7.16b, v7.16b, v1.16b // vpxor %xmm1, %xmm7, %xmm7 -+ ext v4.16b, v4.16b, v7.16b, #8 // vpslldq \$8, %xmm7, %xmm4 -+ -+ // subbytes -+ and v1.16b, v0.16b, v17.16b // vpand %xmm9, %xmm0, %xmm1 # 0 = k -+ ushr v0.16b, v0.16b, #4 // vpsrlb \$4, %xmm0, %xmm0 # 1 = i -+ eor v7.16b, v7.16b, v4.16b // vpxor %xmm4, %xmm7, %xmm7 -+ tbl v2.16b, {$invhi}, v1.16b // vpshufb %xmm1, %xmm11, %xmm2 # 2 = a/k -+ eor v1.16b, v1.16b, v0.16b // vpxor %xmm0, %xmm1, %xmm1 # 0 = j -+ tbl v3.16b, {$invlo}, v0.16b // vpshufb %xmm0, %xmm10, %xmm3 # 3 = 1/i -+ eor v3.16b, v3.16b, v2.16b // vpxor %xmm2, %xmm3, %xmm3 # 3 = iak = 1/i + a/k -+ tbl v4.16b, {$invlo}, v1.16b // vpshufb %xmm1, %xmm10, %xmm4 # 4 = 1/j -+ eor v7.16b, v7.16b, v16.16b // vpxor .Lk_s63(%rip), %xmm7, %xmm7 -+ tbl v3.16b, {$invlo}, v3.16b // vpshufb %xmm3, %xmm10, %xmm3 # 2 = 1/iak -+ eor v4.16b, v4.16b, v2.16b // vpxor %xmm2, %xmm4, %xmm4 # 4 = jak = 1/j + a/k -+ tbl v2.16b, {$invlo}, v4.16b // vpshufb %xmm4, %xmm10, %xmm2 # 3 = 1/jak -+ eor v3.16b, v3.16b, v1.16b // vpxor %xmm1, %xmm3, %xmm3 # 2 = io -+ eor v2.16b, v2.16b, v0.16b // vpxor %xmm0, %xmm2, %xmm2 # 3 = jo -+ tbl v4.16b, {v23.16b}, v3.16b // vpshufb %xmm3, %xmm13, %xmm4 # 4 = sbou -+ tbl v1.16b, {v22.16b}, v2.16b // vpshufb %xmm2, %xmm12, %xmm1 # 0 = sb1t -+ eor v1.16b, v1.16b, v4.16b // vpxor %xmm4, %xmm1, %xmm1 # 0 = sbox output -+ -+ // add in smeared stuff -+ eor v0.16b, v1.16b, v7.16b // vpxor %xmm7, %xmm1, %xmm0 -+ eor v7.16b, v1.16b, v7.16b // vmovdqa %xmm0, %xmm7 -+ ret -+.size _vpaes_schedule_round,.-_vpaes_schedule_round -+ -+## -+## .aes_schedule_transform -+## -+## Linear-transform %xmm0 according to tables at (%r11) -+## -+## Requires that %xmm9 = 0x0F0F... as in preheat -+## Output in %xmm0 -+## Clobbers %xmm1, %xmm2 -+## -+.type _vpaes_schedule_transform,%function -+.align 4 -+_vpaes_schedule_transform: -+ and v1.16b, v0.16b, v17.16b // vpand %xmm9, %xmm0, %xmm1 -+ ushr v0.16b, v0.16b, #4 // vpsrlb \$4, %xmm0, %xmm0 -+ // vmovdqa (%r11), %xmm2 # lo -+ tbl v2.16b, {$iptlo}, v1.16b // vpshufb %xmm1, %xmm2, %xmm2 -+ // vmovdqa 16(%r11), %xmm1 # hi -+ tbl v0.16b, {$ipthi}, v0.16b // vpshufb %xmm0, %xmm1, %xmm0 -+ eor v0.16b, v0.16b, v2.16b // vpxor %xmm2, %xmm0, %xmm0 -+ ret -+.size _vpaes_schedule_transform,.-_vpaes_schedule_transform -+ -+## -+## .aes_schedule_mangle -+## -+## Mangle xmm0 from (basis-transformed) standard version -+## to our version. -+## -+## On encrypt, -+## xor with 0x63 -+## multiply by circulant 0,1,1,1 -+## apply shiftrows transform -+## -+## On decrypt, -+## xor with 0x63 -+## multiply by "inverse mixcolumns" circulant E,B,D,9 -+## deskew -+## apply shiftrows transform -+## -+## -+## Writes out to (%rdx), and increments or decrements it -+## Keeps track of round number mod 4 in %r8 -+## Preserves xmm0 -+## Clobbers xmm1-xmm5 -+## -+.type _vpaes_schedule_mangle,%function -+.align 4 -+_vpaes_schedule_mangle: -+ mov v4.16b, v0.16b // vmovdqa %xmm0, %xmm4 # save xmm0 for later -+ // vmovdqa .Lk_mc_forward(%rip),%xmm5 -+ -+ // encrypting -+ eor v4.16b, v0.16b, v16.16b // vpxor .Lk_s63(%rip), %xmm0, %xmm4 -+ add $out, $out, #16 // add \$16, %rdx -+ tbl v4.16b, {v4.16b}, v9.16b // vpshufb %xmm5, %xmm4, %xmm4 -+ tbl v1.16b, {v4.16b}, v9.16b // vpshufb %xmm5, %xmm4, %xmm1 -+ tbl v3.16b, {v1.16b}, v9.16b // vpshufb %xmm5, %xmm1, %xmm3 -+ eor v4.16b, v4.16b, v1.16b // vpxor %xmm1, %xmm4, %xmm4 -+ ld1 {v1.2d}, [x8] // vmovdqa (%r8,%r10), %xmm1 -+ eor v3.16b, v3.16b, v4.16b // vpxor %xmm4, %xmm3, %xmm3 -+ -+.Lschedule_mangle_both: -+ tbl v3.16b, {v3.16b}, v1.16b // vpshufb %xmm1, %xmm3, %xmm3 -+ add x8, x8, #64-16 // add \$-16, %r8 -+ and x8, x8, #~(1<<6) // and \$0x30, %r8 -+ st1 {v3.2d}, [$out] // vmovdqu %xmm3, (%rdx) -+ ret -+.size _vpaes_schedule_mangle,.-_vpaes_schedule_mangle -+ -+.globl GFp_vpaes_set_encrypt_key -+.type GFp_vpaes_set_encrypt_key,%function -+.align 4 -+GFp_vpaes_set_encrypt_key: -+ AARCH64_SIGN_LINK_REGISTER -+ stp x29,x30,[sp,#-16]! -+ add x29,sp,#0 -+ stp d8,d9,[sp,#-16]! // ABI spec says so -+ -+ lsr w9, $bits, #5 // shr \$5,%eax -+ add w9, w9, #5 // \$5,%eax -+ str w9, [$out,#240] // mov %eax,240(%rdx) # AES_KEY->rounds = nbits/32+5; -+ -+ mov $dir, #0 // mov \$0,%ecx -+ mov x8, #0x30 // mov \$0x30,%r8d -+ bl _vpaes_schedule_core -+ eor x0, x0, x0 -+ -+ ldp d8,d9,[sp],#16 -+ ldp x29,x30,[sp],#16 -+ AARCH64_VALIDATE_LINK_REGISTER -+ ret -+.size GFp_vpaes_set_encrypt_key,.-GFp_vpaes_set_encrypt_key -+___ -+} -+{ -+my ($inp,$out,$len,$key,$ivec) = map("x$_",(0..4)); -+my ($ctr, $ctr_tmp) = ("w6", "w7"); -+ -+# void GFp_vpaes_ctr32_encrypt_blocks(const uint8_t *in, uint8_t *out, size_t len, -+# const AES_KEY *key, const uint8_t ivec[16]); -+$code.=<<___; -+.globl GFp_vpaes_ctr32_encrypt_blocks -+.type GFp_vpaes_ctr32_encrypt_blocks,%function -+.align 4 -+GFp_vpaes_ctr32_encrypt_blocks: -+ AARCH64_SIGN_LINK_REGISTER -+ stp x29,x30,[sp,#-16]! -+ add x29,sp,#0 -+ stp d8,d9,[sp,#-16]! // ABI spec says so -+ stp d10,d11,[sp,#-16]! -+ stp d12,d13,[sp,#-16]! -+ stp d14,d15,[sp,#-16]! -+ -+ cbz $len, .Lctr32_done -+ -+ // Note, unlike the other functions, $len here is measured in blocks, -+ // not bytes. -+ mov x17, $len -+ mov x2, $key -+ -+ // Load the IV and counter portion. -+ ldr $ctr, [$ivec, #12] -+ ld1 {v7.16b}, [$ivec] -+ -+ bl _vpaes_encrypt_preheat -+ tst x17, #1 -+ rev $ctr, $ctr // The counter is big-endian. -+ b.eq .Lctr32_prep_loop -+ -+ // Handle one block so the remaining block count is even for -+ // _vpaes_encrypt_2x. -+ ld1 {v6.16b}, [$inp], #16 // Load input ahead of time -+ bl _vpaes_encrypt_core -+ eor v0.16b, v0.16b, v6.16b // XOR input and result -+ st1 {v0.16b}, [$out], #16 -+ subs x17, x17, #1 -+ // Update the counter. -+ add $ctr, $ctr, #1 -+ rev $ctr_tmp, $ctr -+ mov v7.s[3], $ctr_tmp -+ b.ls .Lctr32_done -+ -+.Lctr32_prep_loop: -+ // _vpaes_encrypt_core takes its input from v7, while _vpaes_encrypt_2x -+ // uses v14 and v15. -+ mov v15.16b, v7.16b -+ mov v14.16b, v7.16b -+ add $ctr, $ctr, #1 -+ rev $ctr_tmp, $ctr -+ mov v15.s[3], $ctr_tmp -+ -+.Lctr32_loop: -+ ld1 {v6.16b,v7.16b}, [$inp], #32 // Load input ahead of time -+ bl _vpaes_encrypt_2x -+ eor v0.16b, v0.16b, v6.16b // XOR input and result -+ eor v1.16b, v1.16b, v7.16b // XOR input and result (#2) -+ st1 {v0.16b,v1.16b}, [$out], #32 -+ subs x17, x17, #2 -+ // Update the counter. -+ add $ctr_tmp, $ctr, #1 -+ add $ctr, $ctr, #2 -+ rev $ctr_tmp, $ctr_tmp -+ mov v14.s[3], $ctr_tmp -+ rev $ctr_tmp, $ctr -+ mov v15.s[3], $ctr_tmp -+ b.hi .Lctr32_loop -+ -+.Lctr32_done: -+ ldp d14,d15,[sp],#16 -+ ldp d12,d13,[sp],#16 -+ ldp d10,d11,[sp],#16 -+ ldp d8,d9,[sp],#16 -+ ldp x29,x30,[sp],#16 -+ AARCH64_VALIDATE_LINK_REGISTER -+ ret -+.size GFp_vpaes_ctr32_encrypt_blocks,.-GFp_vpaes_ctr32_encrypt_blocks -+___ -+} -+ -+print $code; -+ -+close STDOUT or die "error closing STDOUT"; -diff --git a/crypto/fipsmodule/modes/asm/ghash-neon-armv8.pl b/crypto/fipsmodule/modes/asm/ghash-neon-armv8.pl -new file mode 100644 -index 0000000..7e52ad6 ---- /dev/null -+++ b/crypto/fipsmodule/modes/asm/ghash-neon-armv8.pl -@@ -0,0 +1,294 @@ -+#! /usr/bin/env perl -+# Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved. -+# -+# Licensed under the OpenSSL license (the "License"). You may not use -+# this file except in compliance with the License. You can obtain a copy -+# in the file LICENSE in the source distribution or at -+# https://www.openssl.org/source/license.html -+ -+# ==================================================================== -+# Written by Andy Polyakov for the OpenSSL -+# project. The module is, however, dual licensed under OpenSSL and -+# CRYPTOGAMS licenses depending on where you obtain it. For further -+# details see http://www.openssl.org/~appro/cryptogams/. -+# ==================================================================== -+ -+# This file was adapted to AArch64 from the 32-bit version in ghash-armv4.pl. It -+# implements the multiplication algorithm described in: -+# -+# Câmara, D.; Gouvêa, C. P. L.; López, J. & Dahab, R.: Fast Software -+# Polynomial Multiplication on ARM Processors using the NEON Engine. -+# -+# http://conradoplg.cryptoland.net/files/2010/12/mocrysen13.pdf -+# -+# The main distinction to keep in mind between 32-bit NEON and AArch64 SIMD is -+# AArch64 cannot compute over the upper halves of SIMD registers. In 32-bit -+# NEON, the low and high halves of the 128-bit register q0 are accessible as -+# 64-bit registers d0 and d1, respectively. In AArch64, dN is the lower half of -+# vN. Where the 32-bit version would use the upper half, this file must keep -+# halves in separate registers. -+# -+# The other distinction is in syntax. 32-bit NEON embeds lane information in the -+# instruction name, while AArch64 uses suffixes on the registers. For instance, -+# left-shifting 64-bit lanes of a SIMD register in 32-bit would be written: -+# -+# vshl.i64 q0, q0, #1 -+# -+# in 64-bit, it would be written: -+# -+# shl v0.2d, v0.2d, #1 -+# -+# See Programmer's Guide for ARMv8-A, section 7 for details. -+# http://infocenter.arm.com/help/topic/com.arm.doc.den0024a/DEN0024A_v8_architecture_PG.pdf -+# -+# Finally, note the 8-bit and 64-bit polynomial multipliers in AArch64 differ -+# only by suffix. pmull vR.8h, vA.8b, vB.8b multiplies eight 8-bit polynomials -+# and is always available. pmull vR.1q, vA.1d, vB.1d multiplies a 64-bit -+# polynomial and is conditioned on the PMULL extension. This file emulates the -+# latter with the former. -+ -+use strict; -+ -+my $flavour = shift; -+my $output; -+if ($flavour=~/\w[\w\-]*\.\w+$/) { $output=$flavour; undef $flavour; } -+else { while (($output=shift) && ($output!~/\w[\w\-]*\.\w+$/)) {} } -+ -+if ($flavour && $flavour ne "void") { -+ $0 =~ m/(.*[\/\\])[^\/\\]+$/; -+ my $dir = $1; -+ my $xlate; -+ ( $xlate="${dir}arm-xlate.pl" and -f $xlate ) or -+ ( $xlate="${dir}../../../perlasm/arm-xlate.pl" and -f $xlate) or -+ die "can't locate arm-xlate.pl"; -+ -+ open OUT,"| \"$^X\" $xlate $flavour $output"; -+ *STDOUT=*OUT; -+} else { -+ open OUT,">$output"; -+ *STDOUT=*OUT; -+} -+ -+my ($Xi, $Htbl, $inp, $len) = map("x$_", (0..3)); # argument block -+my ($Xl, $Xm, $Xh, $INlo, $INhi) = map("v$_", (0..4)); -+my ($Hlo, $Hhi, $Hhl) = map("v$_", (5..7)); -+# d8-d15 are callee-saved, so avoid v8-v15. AArch64 SIMD has plenty of registers -+# to spare. -+my ($t0, $t1, $t2, $t3) = map("v$_", (16..19)); -+my ($t0l_t1l, $t0h_t1h, $t2l_t3l, $t2h_t3h) = map("v$_", (20..23)); -+my ($k48_k32, $k16_k0) = map("v$_", (24..25)); -+ -+my $code = ""; -+ -+# clmul64x64 emits code which emulates pmull $r.1q, $a.1d, $b.1d. $r, $a, and $b -+# must be distinct from $t* and $k*. $t* are clobbered by the emitted code. -+sub clmul64x64 { -+my ($r, $a, $b) = @_; -+$code .= <<___; -+ ext $t0.8b, $a.8b, $a.8b, #1 // A1 -+ pmull $t0.8h, $t0.8b, $b.8b // F = A1*B -+ ext $r.8b, $b.8b, $b.8b, #1 // B1 -+ pmull $r.8h, $a.8b, $r.8b // E = A*B1 -+ ext $t1.8b, $a.8b, $a.8b, #2 // A2 -+ pmull $t1.8h, $t1.8b, $b.8b // H = A2*B -+ ext $t3.8b, $b.8b, $b.8b, #2 // B2 -+ pmull $t3.8h, $a.8b, $t3.8b // G = A*B2 -+ ext $t2.8b, $a.8b, $a.8b, #3 // A3 -+ eor $t0.16b, $t0.16b, $r.16b // L = E + F -+ pmull $t2.8h, $t2.8b, $b.8b // J = A3*B -+ ext $r.8b, $b.8b, $b.8b, #3 // B3 -+ eor $t1.16b, $t1.16b, $t3.16b // M = G + H -+ pmull $r.8h, $a.8b, $r.8b // I = A*B3 -+ -+ // Here we diverge from the 32-bit version. It computes the following -+ // (instructions reordered for clarity): -+ // -+ // veor \$t0#lo, \$t0#lo, \$t0#hi @ t0 = P0 + P1 (L) -+ // vand \$t0#hi, \$t0#hi, \$k48 -+ // veor \$t0#lo, \$t0#lo, \$t0#hi -+ // -+ // veor \$t1#lo, \$t1#lo, \$t1#hi @ t1 = P2 + P3 (M) -+ // vand \$t1#hi, \$t1#hi, \$k32 -+ // veor \$t1#lo, \$t1#lo, \$t1#hi -+ // -+ // veor \$t2#lo, \$t2#lo, \$t2#hi @ t2 = P4 + P5 (N) -+ // vand \$t2#hi, \$t2#hi, \$k16 -+ // veor \$t2#lo, \$t2#lo, \$t2#hi -+ // -+ // veor \$t3#lo, \$t3#lo, \$t3#hi @ t3 = P6 + P7 (K) -+ // vmov.i64 \$t3#hi, #0 -+ // -+ // \$kN is a mask with the bottom N bits set. AArch64 cannot compute on -+ // upper halves of SIMD registers, so we must split each half into -+ // separate registers. To compensate, we pair computations up and -+ // parallelize. -+ -+ ext $t3.8b, $b.8b, $b.8b, #4 // B4 -+ eor $t2.16b, $t2.16b, $r.16b // N = I + J -+ pmull $t3.8h, $a.8b, $t3.8b // K = A*B4 -+ -+ // This can probably be scheduled more efficiently. For now, we just -+ // pair up independent instructions. -+ zip1 $t0l_t1l.2d, $t0.2d, $t1.2d -+ zip1 $t2l_t3l.2d, $t2.2d, $t3.2d -+ zip2 $t0h_t1h.2d, $t0.2d, $t1.2d -+ zip2 $t2h_t3h.2d, $t2.2d, $t3.2d -+ eor $t0l_t1l.16b, $t0l_t1l.16b, $t0h_t1h.16b -+ eor $t2l_t3l.16b, $t2l_t3l.16b, $t2h_t3h.16b -+ and $t0h_t1h.16b, $t0h_t1h.16b, $k48_k32.16b -+ and $t2h_t3h.16b, $t2h_t3h.16b, $k16_k0.16b -+ eor $t0l_t1l.16b, $t0l_t1l.16b, $t0h_t1h.16b -+ eor $t2l_t3l.16b, $t2l_t3l.16b, $t2h_t3h.16b -+ zip1 $t0.2d, $t0l_t1l.2d, $t0h_t1h.2d -+ zip1 $t2.2d, $t2l_t3l.2d, $t2h_t3h.2d -+ zip2 $t1.2d, $t0l_t1l.2d, $t0h_t1h.2d -+ zip2 $t3.2d, $t2l_t3l.2d, $t2h_t3h.2d -+ -+ ext $t0.16b, $t0.16b, $t0.16b, #15 // t0 = t0 << 8 -+ ext $t1.16b, $t1.16b, $t1.16b, #14 // t1 = t1 << 16 -+ pmull $r.8h, $a.8b, $b.8b // D = A*B -+ ext $t3.16b, $t3.16b, $t3.16b, #12 // t3 = t3 << 32 -+ ext $t2.16b, $t2.16b, $t2.16b, #13 // t2 = t2 << 24 -+ eor $t0.16b, $t0.16b, $t1.16b -+ eor $t2.16b, $t2.16b, $t3.16b -+ eor $r.16b, $r.16b, $t0.16b -+ eor $r.16b, $r.16b, $t2.16b -+___ -+} -+ -+$code .= <<___; -+#include -+ -+.text -+ -+.global GFp_gcm_init_neon -+.type GFp_gcm_init_neon,%function -+.align 4 -+GFp_gcm_init_neon: -+ AARCH64_VALID_CALL_TARGET -+ // This function is adapted from gcm_init_v8. xC2 is t3. -+ ld1 {$t1.2d}, [x1] // load H -+ movi $t3.16b, #0xe1 -+ shl $t3.2d, $t3.2d, #57 // 0xc2.0 -+ ext $INlo.16b, $t1.16b, $t1.16b, #8 -+ ushr $t2.2d, $t3.2d, #63 -+ dup $t1.4s, $t1.s[1] -+ ext $t0.16b, $t2.16b, $t3.16b, #8 // t0=0xc2....01 -+ ushr $t2.2d, $INlo.2d, #63 -+ sshr $t1.4s, $t1.4s, #31 // broadcast carry bit -+ and $t2.16b, $t2.16b, $t0.16b -+ shl $INlo.2d, $INlo.2d, #1 -+ ext $t2.16b, $t2.16b, $t2.16b, #8 -+ and $t0.16b, $t0.16b, $t1.16b -+ orr $INlo.16b, $INlo.16b, $t2.16b // H<<<=1 -+ eor $Hlo.16b, $INlo.16b, $t0.16b // twisted H -+ st1 {$Hlo.2d}, [x0] // store Htable[0] -+ ret -+.size GFp_gcm_init_neon,.-GFp_gcm_init_neon -+ -+.global GFp_gcm_gmult_neon -+.type GFp_gcm_gmult_neon,%function -+.align 4 -+GFp_gcm_gmult_neon: -+ AARCH64_VALID_CALL_TARGET -+ ld1 {$INlo.16b}, [$Xi] // load Xi -+ ld1 {$Hlo.1d}, [$Htbl], #8 // load twisted H -+ ld1 {$Hhi.1d}, [$Htbl] -+ adrp x9, :pg_hi21:.Lmasks // load constants -+ add x9, x9, :lo12:.Lmasks -+ ld1 {$k48_k32.2d, $k16_k0.2d}, [x9] -+ rev64 $INlo.16b, $INlo.16b // byteswap Xi -+ ext $INlo.16b, $INlo.16b, $INlo.16b, #8 -+ eor $Hhl.8b, $Hlo.8b, $Hhi.8b // Karatsuba pre-processing -+ -+ mov $len, #16 -+ b .Lgmult_neon -+.size GFp_gcm_gmult_neon,.-GFp_gcm_gmult_neon -+ -+.global GFp_gcm_ghash_neon -+.type GFp_gcm_ghash_neon,%function -+.align 4 -+GFp_gcm_ghash_neon: -+ AARCH64_VALID_CALL_TARGET -+ ld1 {$Xl.16b}, [$Xi] // load Xi -+ ld1 {$Hlo.1d}, [$Htbl], #8 // load twisted H -+ ld1 {$Hhi.1d}, [$Htbl] -+ adrp x9, :pg_hi21:.Lmasks // load constants -+ add x9, x9, :lo12:.Lmasks -+ ld1 {$k48_k32.2d, $k16_k0.2d}, [x9] -+ rev64 $Xl.16b, $Xl.16b // byteswap Xi -+ ext $Xl.16b, $Xl.16b, $Xl.16b, #8 -+ eor $Hhl.8b, $Hlo.8b, $Hhi.8b // Karatsuba pre-processing -+ -+.Loop_neon: -+ ld1 {$INlo.16b}, [$inp], #16 // load inp -+ rev64 $INlo.16b, $INlo.16b // byteswap inp -+ ext $INlo.16b, $INlo.16b, $INlo.16b, #8 -+ eor $INlo.16b, $INlo.16b, $Xl.16b // inp ^= Xi -+ -+.Lgmult_neon: -+ // Split the input into $INlo and $INhi. (The upper halves are unused, -+ // so it is okay to leave them alone.) -+ ins $INhi.d[0], $INlo.d[1] -+___ -+&clmul64x64 ($Xl, $Hlo, $INlo); # H.lo·Xi.lo -+$code .= <<___; -+ eor $INlo.8b, $INlo.8b, $INhi.8b // Karatsuba pre-processing -+___ -+&clmul64x64 ($Xm, $Hhl, $INlo); # (H.lo+H.hi)·(Xi.lo+Xi.hi) -+&clmul64x64 ($Xh, $Hhi, $INhi); # H.hi·Xi.hi -+$code .= <<___; -+ ext $t0.16b, $Xl.16b, $Xh.16b, #8 -+ eor $Xm.16b, $Xm.16b, $Xl.16b // Karatsuba post-processing -+ eor $Xm.16b, $Xm.16b, $Xh.16b -+ eor $Xm.16b, $Xm.16b, $t0.16b // Xm overlaps Xh.lo and Xl.hi -+ ins $Xl.d[1], $Xm.d[0] // Xh|Xl - 256-bit result -+ // This is a no-op due to the ins instruction below. -+ // ins $Xh.d[0], $Xm.d[1] -+ -+ // equivalent of reduction_avx from ghash-x86_64.pl -+ shl $t1.2d, $Xl.2d, #57 // 1st phase -+ shl $t2.2d, $Xl.2d, #62 -+ eor $t2.16b, $t2.16b, $t1.16b // -+ shl $t1.2d, $Xl.2d, #63 -+ eor $t2.16b, $t2.16b, $t1.16b // -+ // Note Xm contains {Xl.d[1], Xh.d[0]}. -+ eor $t2.16b, $t2.16b, $Xm.16b -+ ins $Xl.d[1], $t2.d[0] // Xl.d[1] ^= t2.d[0] -+ ins $Xh.d[0], $t2.d[1] // Xh.d[0] ^= t2.d[1] -+ -+ ushr $t2.2d, $Xl.2d, #1 // 2nd phase -+ eor $Xh.16b, $Xh.16b,$Xl.16b -+ eor $Xl.16b, $Xl.16b,$t2.16b // -+ ushr $t2.2d, $t2.2d, #6 -+ ushr $Xl.2d, $Xl.2d, #1 // -+ eor $Xl.16b, $Xl.16b, $Xh.16b // -+ eor $Xl.16b, $Xl.16b, $t2.16b // -+ -+ subs $len, $len, #16 -+ bne .Loop_neon -+ -+ rev64 $Xl.16b, $Xl.16b // byteswap Xi and write -+ ext $Xl.16b, $Xl.16b, $Xl.16b, #8 -+ st1 {$Xl.16b}, [$Xi] -+ -+ ret -+.size GFp_gcm_ghash_neon,.-GFp_gcm_ghash_neon -+ -+.section .rodata -+.align 4 -+.Lmasks: -+.quad 0x0000ffffffffffff // k48 -+.quad 0x00000000ffffffff // k32 -+.quad 0x000000000000ffff // k16 -+.quad 0x0000000000000000 // k0 -+.asciz "GHASH for ARMv8, derived from ARMv4 version by " -+.align 2 -+___ -+ -+foreach (split("\n",$code)) { -+ s/\`([^\`]*)\`/eval $1/geo; -+ -+ print $_,"\n"; -+} -+close STDOUT or die "error closing STDOUT"; # enforce flush --- -Efraim Flashner רנשלפ םירפא -GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 -Confidentiality cannot be guaranteed on emails sent or received unencrypted - diff --git a/gnu/packages/patches/rust-ring-0.16-test-files.patch b/gnu/packages/patches/rust-ring-0.16-test-files.patch deleted file mode 100644 index dbe5c0f4ee..0000000000 --- a/gnu/packages/patches/rust-ring-0.16-test-files.patch +++ /dev/null @@ -1,54 +0,0 @@ -This file exists in the upstream repository at the commit which -corresponds to the ring-0.16.20 release, but was excluded from the -release tarball. - ---- - tests/ed25519_verify_tests.txt | 34 ++++++++++++++++++++++++++++++++++ - 1 file changed, 34 insertions(+) - create mode 100644 tests/ed25519_verify_tests.txt - -diff --git a/tests/ed25519_verify_tests.txt b/tests/ed25519_verify_tests.txt -new file mode 100644 -index 0000000..74c94b3 ---- /dev/null -+++ b/tests/ed25519_verify_tests.txt -@@ -0,0 +1,34 @@ -+# BoringSSL TEST(Ed25519Test Malleability) -+ -+# Control; S is in range. -+MESSAGE = 54657374 -+SIG = 7c38e026f29e14aabd059a0f2db8b0cd783040609a8be684db12f82a27774ab07a9155711ecfaf7f99f277bad0c6ae7e39d4eef676573336a5c51eb6f946b30d -+PUB = 7d4d0e7f6153a69b6242b522abbee685fda4420f8834b108c3bdae369ef549fa -+Result = P -+ -+# Same as above, but with the order L added to S so it is out of range. -+# BoringSSL commit 472ba2c2dd52d06a657a63b7fbf02732a6649d21 -+MESSAGE = 54657374 -+SIG = 7c38e026f29e14aabd059a0f2db8b0cd783040609a8be684db12f82a27774ab067654bce3832c2d76f8f6f5dafc08d9339d4eef676573336a5c51eb6f946b31d -+PUB = 7d4d0e7f6153a69b6242b522abbee685fda4420f8834b108c3bdae369ef549fa -+Result = F -+ -+ -+# BoringSSL commit 3094902fcdc2db2cc832fa854b9a6a8be383926c -+MESSAGE = 124e583f8b8eca58bb29c271b41d36986bbc45541f8e51f9cb0133eca447601e -+SIG = dac119d6ca87fc59ae611c157048f4d4fc932a149dbe20ec6effd1436abf83ea05c7df0fef06147241259113909bc71bd3c53ba4464ffcad3c0968f2ffffff0f -+PUB = 100fdf47fb94f1536a4f7c3fda27383fa03375a8f527c537e6f1703c47f94f86 -+Result = P -+ -+# Control. Same key as above; same message and signature as below, except S is in range. -+PUB = 100fdf47fb94f1536a4f7c3fda27383fa03375a8f527c537e6f1703c47f94f86 -+MESSAGE = 6a0bc2b0057cedfc0fa2e3f7f7d39279b30f454a69dfd1117c758d86b19d85e0 -+SIG = 0971f86d2c9c78582524a103cb9cf949522ae528f8054dc20107d999be673ff4f58ac9d20ec563133cabc6230b1db8625f8446639ede46ad4df4053000000000 -+Result = P -+ -+# Same key as above, but S is out of range. -+# BoringSSL commit 472ba2c2dd52d06a657a63b7fbf02732a6649d21 -+PUB = 100fdf47fb94f1536a4f7c3fda27383fa03375a8f527c537e6f1703c47f94f86 -+MESSAGE = 6a0bc2b0057cedfc0fa2e3f7f7d39279b30f454a69dfd1117c758d86b19d85e0 -+SIG = 0971f86d2c9c78582524a103cb9cf949522ae528f8054dc20107d999be673ff4e25ebf2f2928766b1248bec6e91697775f8446639ede46ad4df4053000000010 -+Result = F --- -Efraim Flashner רנשלפ םירפא -GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 -Confidentiality cannot be guaranteed on emails sent or received unencrypted - diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm index 77e4f24f50..0675fee658 100644 --- a/gnu/packages/rust-apps.scm +++ b/gnu/packages/rust-apps.scm @@ -114,8 +114,6 @@ (define-public agate ("rust-tokio" ,rust-tokio-1) ("rust-tokio-rustls" ,rust-tokio-rustls-0.22) ("rust-url" ,rust-url-2)))) - (native-inputs - (list perl)) (home-page "https://github.com/mbrubeck/agate") (synopsis "Very simple server for the Gemini hypertext protocol") (description @@ -192,7 +190,7 @@ (define-public alfis (("rust-serde-bytes" ,rust-serde-bytes-0.11) ("rust-serde-derive" ,rust-serde-derive-1)))) (native-inputs - (list perl pkg-config)) + (list pkg-config)) (inputs (list at-spi2-core gtk @@ -1193,8 +1191,7 @@ (define-public maturin (list python-tomli)) (inputs (list bzip2)) (native-inputs - (list perl - python-wheel + (list python-wheel python-wrapper python-setuptools-rust)) (home-page "https://github.com/pyo3/maturin") @@ -1504,7 +1501,7 @@ (define-public rust-cargo-edit (substitute* "Cargo.toml" ((".*\"vendored-libgit2\".*") ""))))))) (native-inputs - (list perl pkg-config)) + (list pkg-config)) (inputs (list libgit2-1.4 libssh2 @@ -1695,8 +1692,6 @@ (define-public sniffglue (("rust-boxxy" ,rust-boxxy-0.12)))) (inputs (list libpcap libseccomp)) - (native-inputs - (list perl)) (home-page "https://github.com/kpcyrd/sniffglue") (synopsis "Secure multithreaded packet sniffer") (description @@ -2366,7 +2361,7 @@ (define-public spotifyd ;"dbus_mpris" ; Conflicts with rust-chrono-0.4 version. "pulseaudio_backend" "rodio_backend"))) - (native-inputs (list perl pkg-config)) + (native-inputs (list pkg-config)) (inputs (list alsa-lib dbus pulseaudio)) (home-page "https://github.com/Spotifyd/spotifyd") (synopsis "Spotify streaming daemon with Spotify Connect support") @@ -2543,7 +2538,7 @@ (define-public tealdeer ("rust-predicates" ,rust-predicates-2) ("rust-tempfile" ,rust-tempfile-3)))) (native-inputs - (list perl pkg-config)) + (list pkg-config)) (inputs (list openssl)) (home-page "https://github.com/dbrgn/tealdeer/") -- cgit v1.2.3 From e2cf93aaa8c8ec3d58fc1661c01f9700d201ee7c Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Mon, 25 Dec 2023 09:26:04 +0200 Subject: gnu: rust-cargo-edit: Update to 0.12.2. * gnu/packages/rust-apps.scm (rust-cargo-edit): Update to 0.12.2. [source]: Add patch. [cargo-inputs]: Add rust-clap-cargo-0.12, rust-home-0.5, rust-toml-0.7. Replace rust-clap-3 with 4, rust-crates-index-0.18 with 0.19, rust-git2-0.14 with 0.17, rust-toml-edit-0.14 with 0.19. Remove rust-dirs-next-2, rust-ureq-2. [cargo-development-inputs]: Replace rust-predicates-2 with 3, rust-snapbox-0.2 with 0.4, rust-trycmd-0.13 with 0.14. [inputs]: Replace libgit2-1.4 with 1.6. * gnu/packages/patches/rust-cargo-edit-remove-ureq.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. Change-Id: I71ac74de44e322eb9f5233262b3a989395b592ff --- gnu/local.mk | 1 + .../patches/rust-cargo-edit-remove-ureq.patch | 33 ++++++++++++++++++++++ gnu/packages/rust-apps.scm | 26 +++++++++-------- 3 files changed, 48 insertions(+), 12 deletions(-) create mode 100644 gnu/packages/patches/rust-cargo-edit-remove-ureq.patch (limited to 'gnu/local.mk') diff --git a/gnu/local.mk b/gnu/local.mk index b8de8c3141..7dcd65e840 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -2001,6 +2001,7 @@ dist_patch_DATA = \ %D%/packages/patches/rustc-1.54.0-src.patch \ %D%/packages/patches/rust-1.64-fix-riscv64-bootstrap.patch \ %D%/packages/patches/rust-1.70-fix-rustix-build.patch \ + %D%/packages/patches/rust-cargo-edit-remove-ureq.patch \ %D%/packages/patches/rust-ring-0.17-ring-core.patch \ %D%/packages/patches/i3status-rust-enable-unstable-features.patch \ %D%/packages/patches/rust-ndarray-remove-blas-src-dep.patch \ diff --git a/gnu/packages/patches/rust-cargo-edit-remove-ureq.patch b/gnu/packages/patches/rust-cargo-edit-remove-ureq.patch new file mode 100644 index 0000000000..99c58103c7 --- /dev/null +++ b/gnu/packages/patches/rust-cargo-edit-remove-ureq.patch @@ -0,0 +1,33 @@ +This is modeled after the upstream commit which removes ureq as a dependency. + +diff --git a/Cargo.toml b/Cargo.toml +index 5a787e1..27171c7 100644 +--- a/Cargo.toml ++++ b/Cargo.toml +@@ -201,26 +201,3 @@ test-external-apis = [] + upgrade = ["cli"] + vendored-libgit2 = ["git2/vendored-libgit2"] + vendored-openssl = ["git2/vendored-openssl"] +- +-[target."cfg(any(target_arch = \"x86_64\", target_arch = \"arm\", target_arch = \"x86\", target_arch = \"aarch64\"))".dependencies.ureq] +-version = "2.7.1" +-features = [ +- "tls", +- "json", +- "socks", +- "socks-proxy", +-] +-default-features = false +- +-[target."cfg(not(any(target_arch = \"x86_64\", target_arch = \"arm\", target_arch = \"x86\", target_arch = \"aarch64\")))".dependencies.native-tls] +-version = "^0.2" +- +-[target."cfg(not(any(target_arch = \"x86_64\", target_arch = \"arm\", target_arch = \"x86\", target_arch = \"aarch64\")))".dependencies.ureq] +-version = "2.7.1" +-features = [ +- "native-tls", +- "json", +- "socks", +- "socks-proxy", +-] +-default-features = false diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm index 0675fee658..f88d65d49d 100644 --- a/gnu/packages/rust-apps.scm +++ b/gnu/packages/rust-apps.scm @@ -1450,14 +1450,15 @@ (define-deprecated rust-swc-1 rust-swc) (define-public rust-cargo-edit (package (name "rust-cargo-edit") - (version "0.10.4") + (version "0.12.2") (source (origin (method url-fetch) (uri (crate-uri "cargo-edit" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "19wfjz7z4kqjfjmnq1bl6dhsvskjy6r656fqmbha9dfdspbsnmd0")))) + "03lxi7z1n9xq287lqvqnhzg5r0yv1fi3569ryw3jqcrvv8nqs0c2")) + (patches (search-patches "rust-cargo-edit-remove-ureq.patch")))) (build-system cargo-build-system) (arguments `(#:install-source? #f @@ -1466,14 +1467,15 @@ (define-public rust-cargo-edit #:cargo-inputs (("rust-anyhow" ,rust-anyhow-1) ("rust-cargo-metadata" ,rust-cargo-metadata-0.15) - ("rust-clap" ,rust-clap-3) + ("rust-clap" ,rust-clap-4) + ("rust-clap-cargo" ,rust-clap-cargo-0.12) ("rust-concolor-control" ,rust-concolor-control-0.0.7) - ("rust-crates-index" ,rust-crates-index-0.18) - ("rust-dirs-next" ,rust-dirs-next-2) + ("rust-crates-index" ,rust-crates-index-0.19) ("rust-dunce" ,rust-dunce-1) ("rust-env-proxy" ,rust-env-proxy-0.4) - ("rust-git2" ,rust-git2-0.14) + ("rust-git2" ,rust-git2-0.17) ("rust-hex" ,rust-hex-0.4) + ("rust-home" ,rust-home-0.5) ("rust-indexmap" ,rust-indexmap-1) ("rust-native-tls" ,rust-native-tls-0.2) ("rust-pathdiff" ,rust-pathdiff-0.2) @@ -1484,15 +1486,15 @@ (define-public rust-cargo-edit ("rust-serde-json" ,rust-serde-json-1) ("rust-subprocess" ,rust-subprocess-0.2) ("rust-termcolor" ,rust-termcolor-1) - ("rust-toml-edit" ,rust-toml-edit-0.14) - ("rust-ureq" ,rust-ureq-2) + ("rust-toml" ,rust-toml-0.7) + ("rust-toml-edit" ,rust-toml-edit-0.19) ("rust-url" ,rust-url-2)) #:cargo-development-inputs (("rust-assert-cmd" ,rust-assert-cmd-2) ("rust-assert-fs" ,rust-assert-fs-1) - ("rust-predicates" ,rust-predicates-2) - ("rust-snapbox" ,rust-snapbox-0.2) - ("rust-trycmd" ,rust-trycmd-0.13) + ("rust-predicates" ,rust-predicates-3) + ("rust-snapbox" ,rust-snapbox-0.4) + ("rust-trycmd" ,rust-trycmd-0.14) ("rust-url" ,rust-url-2)) #:phases (modify-phases %standard-phases @@ -1503,7 +1505,7 @@ (define-public rust-cargo-edit (native-inputs (list pkg-config)) (inputs - (list libgit2-1.4 + (list libgit2-1.6 libssh2 openssl zlib)) -- cgit v1.2.3 From 8f99a3e60477f8ee1a51b061ea4d969da0e24d6c Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Wed, 27 Dec 2023 08:19:59 +0200 Subject: gnu: rust-trash-2: Update to 2.1.5. * gnu/packages/crates-io.scm (rust-trash-2): Update to 2.1.5. [source]: Add patch. [cargo-inputs]: Replace rust-windows-0.9 with 0.44. * gnu/packages/patches/rust-trash-2-update-windows.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. Change-Id: I707b2139800d37f3609958251893e5948e40cd34 --- gnu/local.mk | 1 + gnu/packages/crates-io.scm | 7 +- .../patches/rust-trash-2-update-windows.patch | 132 +++++++++++++++++++++ 3 files changed, 137 insertions(+), 3 deletions(-) create mode 100644 gnu/packages/patches/rust-trash-2-update-windows.patch (limited to 'gnu/local.mk') diff --git a/gnu/local.mk b/gnu/local.mk index 7dcd65e840..1fc05619a7 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -2008,6 +2008,7 @@ dist_patch_DATA = \ %D%/packages/patches/rust-ndarray-0.13-remove-blas-src.patch \ %D%/packages/patches/rust-ndarray-0.14-remove-blas-src.patch \ %D%/packages/patches/rust-nettle-disable-vendor.patch \ + %D%/packages/patches/rust-trash-2-update-windows.patch \ %D%/packages/patches/rust-webbrowser-remove-unsupported-os.patch \ %D%/packages/patches/rust-wl-clipboard-rs-newer-wl.patch \ %D%/packages/patches/rw-igraph-0.10.patch \ diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 2ce531eda0..5e8bc0e64a 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -85416,14 +85416,15 @@ (define-public rust-traitobject-0.1 (define-public rust-trash-2 (package (name "rust-trash") - (version "2.1.3") + (version "2.1.5") (source (origin (method url-fetch) (uri (crate-uri "trash" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "14ji8b84ghwkln01v90ahhl2jkxv2qxkm0afprzphf1ln41k6nqi")))) + (base32 "0djjjvvpxhx4li3y0jp1q48xabvazzif8g7z6110rm4chikh62gy")) + (patches (search-patches "rust-trash-2-update-windows.patch")))) (build-system cargo-build-system) (arguments `(#:cargo-inputs @@ -85434,7 +85435,7 @@ (define-public rust-trash-2 ("rust-once-cell" ,rust-once-cell-1) ("rust-scopeguard" ,rust-scopeguard-1) ("rust-url" ,rust-url-2) - ("rust-windows" ,rust-windows-0.9)) + ("rust-windows" ,rust-windows-0.44)) #:cargo-development-inputs (("rust-chrono" ,rust-chrono-0.4) ("rust-env-logger" ,rust-env-logger-0.9) diff --git a/gnu/packages/patches/rust-trash-2-update-windows.patch b/gnu/packages/patches/rust-trash-2-update-windows.patch new file mode 100644 index 0000000000..f6b13a4658 --- /dev/null +++ b/gnu/packages/patches/rust-trash-2-update-windows.patch @@ -0,0 +1,132 @@ +This patch is taken from upstream so we can use an already packaged +version of the windows crate. + +diff --git a/Cargo.toml b/Cargo.toml +index 2c28dfe..6b61771 100644 +--- a/Cargo.toml ++++ b/Cargo.toml +@@ -87,9 +87,8 @@ version = "0.2.7" + version = "1.0.0" + + [target."cfg(windows)".dependencies.windows] +-version = "0.37.0" ++version = "0.44.0" + features = [ +- "alloc", + "Win32_Foundation", + "Win32_System_Com_StructuredStorage", + "Win32_UI_Shell_PropertiesSystem", +diff --git a/Cargo.toml.orig b/Cargo.toml.orig +index 894a78c..c17fc02 100644 +--- a/Cargo.toml.orig ++++ b/Cargo.toml.orig +@@ -44,7 +44,7 @@ once_cell = "1.7.2" + once_cell = "1.7.2" + + [target.'cfg(windows)'.dependencies] +-windows = { version = "0.37.0", features = [ "alloc", ++windows = { version = "0.44.0", features = [ + "Win32_Foundation", + "Win32_System_Com_StructuredStorage", + "Win32_UI_Shell_PropertiesSystem", +diff --git a/src/windows.rs b/src/windows.rs +index c1379d3..3f4426b 100644 +--- a/src/windows.rs ++++ b/src/windows.rs +@@ -1,7 +1,6 @@ + use crate::{Error, TrashContext, TrashItem}; + use std::{ +- ffi::{OsStr, OsString}, +- mem::MaybeUninit, ++ ffi::{c_void, OsStr, OsString}, + os::windows::{ffi::OsStrExt, prelude::*}, + path::PathBuf, + }; +@@ -66,7 +65,7 @@ impl TrashContext { + let shi: IShellItem = + SHCreateItemFromParsingName(PCWSTR(wide_path_slice.as_ptr()), None)?; + +- pfo.DeleteItem(shi, None)?; ++ pfo.DeleteItem(&shi, None)?; + } + pfo.PerformOperations()?; + Ok(()) +@@ -78,28 +77,18 @@ pub fn list() -> Result, Error> { + ensure_com_initialized(); + unsafe { + let mut item_vec = Vec::new(); +- let mut recycle_bin = MaybeUninit::>::uninit(); + +- SHGetKnownFolderItem( +- &FOLDERID_RecycleBinFolder, +- KF_FLAG_DEFAULT, +- HANDLE::default(), +- &IShellItem::IID, +- recycle_bin.as_mut_ptr() as _, +- )?; +- +- let recycle_bin = recycle_bin.assume_init().ok_or(Error::Unknown { +- description: "SHGetKnownFolderItem gave NULL for FOLDERID_RecycleBinFolder".into(), +- })?; ++ let recycle_bin: IShellItem = ++ SHGetKnownFolderItem(&FOLDERID_RecycleBinFolder, KF_FLAG_DEFAULT, HANDLE::default())?; + + let pesi: IEnumShellItems = recycle_bin.BindToHandler(None, &BHID_EnumItems)?; +- let mut fetched: u32 = 0; + + loop { ++ let mut fetched_count: u32 = 0; + let mut arr = [None]; +- pesi.Next(&mut arr, &mut fetched)?; ++ pesi.Next(&mut arr, Some(&mut fetched_count as *mut u32))?; + +- if fetched == 0 { ++ if fetched_count == 0 { + break; + } + +@@ -145,7 +134,7 @@ where + at_least_one = true; + let id_as_wide: Vec = item.id.encode_wide().chain(std::iter::once(0)).collect(); + let parsing_name = PCWSTR(id_as_wide.as_ptr()); +- let trash_item: IShellItem = SHCreateItemFromParsingName(&parsing_name, None)?; ++ let trash_item: IShellItem = SHCreateItemFromParsingName(parsing_name, None)?; + pfo.DeleteItem(&trash_item, None)?; + } + if at_least_one { +@@ -181,7 +170,7 @@ where + for item in items.iter() { + let id_as_wide: Vec = item.id.encode_wide().chain(std::iter::once(0)).collect(); + let parsing_name = PCWSTR(id_as_wide.as_ptr()); +- let trash_item: IShellItem = SHCreateItemFromParsingName(&parsing_name, None)?; ++ let trash_item: IShellItem = SHCreateItemFromParsingName(parsing_name, None)?; + let parent_path_wide: Vec<_> = + item.original_parent.as_os_str().encode_wide().chain(std::iter::once(0)).collect(); + let orig_folder_shi: IShellItem = +@@ -191,7 +180,7 @@ where + .chain(std::iter::once(0)) + .collect(); + +- pfo.MoveItem(trash_item, orig_folder_shi, PCWSTR(name_wstr.as_ptr()), None)?; ++ pfo.MoveItem(&trash_item, &orig_folder_shi, PCWSTR(name_wstr.as_ptr()), None)?; + } + if !items.is_empty() { + pfo.PerformOperations()?; +@@ -203,7 +192,7 @@ where + unsafe fn get_display_name(psi: &IShellItem, sigdnname: SIGDN) -> Result { + let name = psi.GetDisplayName(sigdnname)?; + let result = wstr_to_os_string(name); +- CoTaskMemFree(name.0 as _); ++ CoTaskMemFree(Some(name.0 as *const c_void)); + Ok(result) + } + +@@ -257,7 +246,7 @@ impl CoInitializer { + if cfg!(feature = "coinit_speed_over_memory") { + init_mode |= COINIT_SPEED_OVER_MEMORY; + } +- let hr = unsafe { CoInitializeEx(std::ptr::null_mut(), init_mode) }; ++ let hr = unsafe { CoInitializeEx(None, init_mode) }; + if hr.is_err() { + panic!("Call to CoInitializeEx failed. HRESULT: {:?}. Consider using `trash` with the feature `coinit_multithreaded`", hr); + } -- cgit v1.2.3 From 27f4d9a2c0f85df6925a28137e15d8e585e9b6cd Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Wed, 27 Dec 2023 10:54:32 +0200 Subject: gnu: rust-rspec-1: Remove dependency on clippy. * gnu/packages/crates-io.scm (rust-rspec-1)[source]: Add patch. [cargo-inputs]: Remove rust-clippy-0.0.153. * gnu/packages/patches/rust-rspec-1-remove-clippy.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. Change-Id: Ia6cc5e2fa798986b93ccba5f8907de79676fd1b0 --- gnu/local.mk | 1 + gnu/packages/crates-io.scm | 6 +++--- gnu/packages/patches/rust-rspec-1-remove-clippy.patch | 16 ++++++++++++++++ 3 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 gnu/packages/patches/rust-rspec-1-remove-clippy.patch (limited to 'gnu/local.mk') diff --git a/gnu/local.mk b/gnu/local.mk index 1fc05619a7..db18a09f8a 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -2008,6 +2008,7 @@ dist_patch_DATA = \ %D%/packages/patches/rust-ndarray-0.13-remove-blas-src.patch \ %D%/packages/patches/rust-ndarray-0.14-remove-blas-src.patch \ %D%/packages/patches/rust-nettle-disable-vendor.patch \ + %D%/packages/patches/rust-rspec-1-remove-clippy.patch \ %D%/packages/patches/rust-trash-2-update-windows.patch \ %D%/packages/patches/rust-webbrowser-remove-unsupported-os.patch \ %D%/packages/patches/rust-wl-clipboard-rs-newer-wl.patch \ diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 8d9cde1e9a..a278fde74b 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -65217,12 +65217,12 @@ (define-public rust-rspec-1 (uri (crate-uri "rspec" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 "02hfwxqjdc39ygnjysvn5qz343fahmwm16rxvxayh403d5y9wf49")))) + (base32 "02hfwxqjdc39ygnjysvn5qz343fahmwm16rxvxayh403d5y9wf49")) + (patches (search-patches "rust-rspec-1-remove-clippy.patch")))) (build-system cargo-build-system) (arguments `(#:cargo-inputs - (("rust-clippy" ,rust-clippy-0.0.153) - ("rust-colored" ,rust-colored-2) + (("rust-colored" ,rust-colored-2) ("rust-derive-new" ,rust-derive-new-0.5) ("rust-derive-builder" ,rust-derive-builder-0.9) ("rust-expectest" ,rust-expectest-0.12) diff --git a/gnu/packages/patches/rust-rspec-1-remove-clippy.patch b/gnu/packages/patches/rust-rspec-1-remove-clippy.patch new file mode 100644 index 0000000000..46c994f7ee --- /dev/null +++ b/gnu/packages/patches/rust-rspec-1-remove-clippy.patch @@ -0,0 +1,16 @@ +Remove the dependency on clippy + +diff --git a/Cargo.toml b/Cargo.toml +index 177cb80..7260c34 100644 +--- a/Cargo.toml ++++ b/Cargo.toml +@@ -39,9 +39,6 @@ version = "1.5" + + [dependencies.time] + version = "0.2" +-[build-dependencies.clippy] +-version = "0.0.153" +-optional = true + + [features] + default = [] -- cgit v1.2.3 From 495c4868bee3df666ecdb07240cfdcd28b642905 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Wed, 27 Dec 2023 11:28:37 +0200 Subject: gnu: rust-git-testament-derive-0.1: Move to (gnu packages crates-vcs). * gnu/packages/crates-io.scm (rust-git-testament-derive-0.1): Move from here ... * gnu/packages/crates-vcs.scm: ... to here. Change-Id: If002423ef70413d6ced9b2f18d86d625fd5bf9ba --- gnu/local.mk | 1 + gnu/packages/crates-io.scm | 28 +----------------------- gnu/packages/crates-vcs.scm | 53 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 27 deletions(-) create mode 100644 gnu/packages/crates-vcs.scm (limited to 'gnu/local.mk') diff --git a/gnu/local.mk b/gnu/local.mk index db18a09f8a..7231aa898b 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -204,6 +204,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/crates-io.scm \ %D%/packages/crates-graphics.scm \ %D%/packages/crates-gtk.scm \ + %D%/packages/crates-vcs.scm \ %D%/packages/cross-base.scm \ %D%/packages/cross-toolchain.scm \ %D%/packages/crypto.scm \ diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 03821e8656..4865585838 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -74,6 +74,7 @@ (define-module (gnu packages crates-io) #:use-module (gnu packages cpp) #:use-module (gnu packages crates-graphics) #:use-module (gnu packages crates-gtk) + #:use-module (gnu packages crates-vcs) #:use-module (gnu packages crypto) #:use-module (gnu packages curl) #:use-module (gnu packages databases) @@ -30316,33 +30317,6 @@ (define-public rust-git-testament-0.2 (description "Record git working tree status when compiling your crate") (license license:bsd-3))) -(define-public rust-git-testament-derive-0.1 - (package - (name "rust-git-testament-derive") - (version "0.1.14") - (source (origin - (method url-fetch) - (uri (crate-uri "git-testament-derive" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1rlais0i47mgsmp3r5jcqry2agjfyg5s9paj6mgvfykchssjsy2a")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-log" ,rust-log-0.4) - ("rust-proc-macro2" ,rust-proc-macro2-1) - ("rust-quote" ,rust-quote-1) - ("rust-syn" ,rust-syn-1) - ("rust-time" ,rust-time-0.3)) - #:cargo-development-inputs - (("rust-git-testament" ,rust-git-testament-0.2)))) - (home-page "https://github.com/kinnison/git-testament/") - (synopsis "Record git working tree status when compiling your crate") - (description - "This package provides an inner procedural macro for git-testament.") - (license license:bsd-3))) - (define-public rust-git-version-0.3 (package (name "rust-git-version") diff --git a/gnu/packages/crates-vcs.scm b/gnu/packages/crates-vcs.scm new file mode 100644 index 0000000000..f92f14eda0 --- /dev/null +++ b/gnu/packages/crates-vcs.scm @@ -0,0 +1,53 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2023 Efraim Flashner +;;; +;;; 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 . + +(define-module (gnu packages crates-vcs) + #:use-module (guix build-system cargo) + #:use-module (guix download) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix utils) + #:use-module (gnu packages) + #:use-module (gnu packages crates-io)) + +(define-public rust-git-testament-derive-0.1 + (package + (name "rust-git-testament-derive") + (version "0.1.14") + (source (origin + (method url-fetch) + (uri (crate-uri "git-testament-derive" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1rlais0i47mgsmp3r5jcqry2agjfyg5s9paj6mgvfykchssjsy2a")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-log" ,rust-log-0.4) + ("rust-proc-macro2" ,rust-proc-macro2-1) + ("rust-quote" ,rust-quote-1) + ("rust-syn" ,rust-syn-1) + ("rust-time" ,rust-time-0.3)) + #:cargo-development-inputs + (("rust-git-testament" ,rust-git-testament-0.2)))) + (home-page "https://github.com/kinnison/git-testament/") + (synopsis "Record git working tree status when compiling your crate") + (description + "This package provides an inner procedural macro for git-testament.") + (license license:bsd-3))) -- cgit v1.2.3 From 6851b30def30f3da7043af5e47c101b822b018bd Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Wed, 27 Dec 2023 13:11:37 +0200 Subject: gnu: rust-webpki: Move to (gnu packages crates-web). * gnu/packages/crates-io.scm (rust-webpki-0.22, rust-webpki-0.21, rust-webpki-0.19, rust-webpki-0.18, rust-webpki-roots-0.25, rust-webpki-roots-0.23, rust-webpki-roots-0.22, rust-webpki-roots-0.21, rust-webpki-roots-0.20, rust-webpki-roots-0.19, rust-webpki-roots-0.18, rust-webpki-roots-0.17, rust-webpki-roots-0.16, rust-webpki-roots-0.15): Move from here ... * gnu/packages/crates-web.scm: ... to here. Change-Id: I7eb05c11453bc780f4c66c2c3ac2c3c20cafcee3 --- gnu/local.mk | 1 + gnu/packages/crates-io.scm | 276 +-------------------------------------- gnu/packages/crates-web.scm | 307 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 309 insertions(+), 275 deletions(-) create mode 100644 gnu/packages/crates-web.scm (limited to 'gnu/local.mk') diff --git a/gnu/local.mk b/gnu/local.mk index 7231aa898b..e0b551233f 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -205,6 +205,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/crates-graphics.scm \ %D%/packages/crates-gtk.scm \ %D%/packages/crates-vcs.scm \ + %D%/packages/crates-web.scm \ %D%/packages/cross-base.scm \ %D%/packages/cross-toolchain.scm \ %D%/packages/crypto.scm \ diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index fc87a94143..f8cecd47da 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -75,6 +75,7 @@ (define-module (gnu packages crates-io) #:use-module (gnu packages crates-graphics) #:use-module (gnu packages crates-gtk) #:use-module (gnu packages crates-vcs) + #:use-module (gnu packages crates-web) #:use-module (gnu packages crypto) #:use-module (gnu packages curl) #:use-module (gnu packages databases) @@ -86752,281 +86753,6 @@ (define-public rust-webbrowser-0.5 ("rust-widestring" ,rust-widestring-0.4) ("rust-winapi" ,rust-winapi-0.3)))))) -(define-public rust-webpki-0.22 - (package - (name "rust-webpki") - (version "0.22.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "webpki" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1gd1gxip5kgdwmrvhj5gjxij2mgg2mavq1ych4q1h272ja0xg5gh")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-ring" ,rust-ring-0.16) - ("rust-untrusted" ,rust-untrusted-0.7)) - #:cargo-development-inputs - (("rust-base64" ,rust-base64-0.9)))) - (home-page "https://github.com/briansmith/webpki") - (synopsis "Web PKI X.509 Certificate Verification") - (description "This package provides Web PKI X.509 Certificate -Verification.") - (license license:isc))) - -(define-public rust-webpki-0.21 - (package - (inherit rust-webpki-0.22) - (name "rust-webpki") - (version "0.21.4") - (source - (origin - (method url-fetch) - (uri (crate-uri "webpki" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1sm4i8c5bw3bdhi7mjk0wpvwx55hvsmyn0k2lpa4cb161038rqxq")))) - (arguments - `(#:tests? #f ;; tests fail to build "missing file tests/ed25519/ee.der" - #:cargo-inputs - (("rust-ring" ,rust-ring-0.16) - ("rust-untrusted" ,rust-untrusted-0.7)) - #:cargo-development-inputs - (("rust-base64" ,rust-base64-0.9)))))) - -(define-public rust-webpki-0.19 - (package - (inherit rust-webpki-0.21) - (name "rust-webpki") - (version "0.19.1") - (source - (origin - (method url-fetch) - (uri (crate-uri "webpki" version)) - (file-name - (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "10nhyxlqsa4caxlxrijm5h79rdg6ld8hqy78ldjnnfhaj3biqzjg")))) - (arguments - `(#:tests? #f ; tests fail to build "missing file tests/ed25519/ee.der" - #:cargo-inputs - (("rust-ring" ,rust-ring-0.14) - ("rust-untrusted" ,rust-untrusted-0.6)) - #:cargo-development-inputs - (("rust-base64" ,rust-base64-0.9)))))) - -(define-public rust-webpki-0.18 - (package - (inherit rust-webpki-0.19) - (name "rust-webpki") - (version "0.18.1") - (source - (origin - (method url-fetch) - (uri (crate-uri "webpki" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0zx1v8afa4ig97dyqfrnlj5i7pib6dnfw88qn2iiqhfq2rrrdmqp")))) - (build-system cargo-build-system) - (arguments - `(#:skip-build? #t ; TODO: Fix building rust-ring-0.13 - #:cargo-inputs - (("rust-ring" ,rust-ring-0.13) - ("rust-untrusted" ,rust-untrusted-0.6)) - #:cargo-development-inputs - (("rust-base64" ,rust-base64-0.9)) - #:phases - (modify-phases %standard-phases - (add-before 'build 'build-curve25519-tables - (lambda* (#:key vendor-dir #:allow-other-keys) - (with-directory-excursion - (dirname (car (find-files vendor-dir "make_curve25519_tables.py"))) - (with-output-to-file "curve25519_tables.h" - (lambda _ - (invoke "python" "make_curve25519_tables.py"))))))))))) - -(define-public rust-webpki-roots-0.25 - (package - (name "rust-webpki-roots") - (version "0.25.1") - (source (origin - (method url-fetch) - (uri (crate-uri "webpki-roots" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "15piy0vccppqb74li32gnn9l5a4ysxzwh8bp3qv6z8rhr2hyvin9")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-test-flags - (list "--release" "--" - ;; This test wants network access. - "--skip=generated_code_is_fresh") - #:cargo-development-inputs - (("rust-percent-encoding" ,rust-percent-encoding-2) - ("rust-reqwest" ,rust-reqwest-0.11) - ("rust-ring" ,rust-ring-0.16) - ("rust-rustls-pemfile" ,rust-rustls-pemfile-1) - ("rust-rustls-webpki" ,rust-rustls-webpki-0.101) - ("rust-tokio" ,rust-tokio-1)))) - (native-inputs - (list pkg-config)) - (inputs - (list openssl)) - (home-page "https://github.com/rustls/webpki-roots") - (synopsis "Mozilla's CA root certificates for use with webpki") - (description "This package provides Mozilla's CA root certificates for use -with webpki.") - (license license:mpl2.0))) - -(define-public rust-webpki-roots-0.23 - (package - (inherit rust-webpki-roots-0.25) - (name "rust-webpki-roots") - (version "0.23.1") - (source (origin - (method url-fetch) - (uri (crate-uri "webpki-roots" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0f4k8nng542iilxbibh1nhrdf5wbyi9is4fr219zzrc6hgw5hc5h")))) - (arguments - `(#:cargo-inputs (("rust-rustls-webpki" ,rust-rustls-webpki-0.100)))))) - -(define-public rust-webpki-roots-0.22 - (package - (inherit rust-webpki-roots-0.25) - (name "rust-webpki-roots") - (version "0.22.2") - (source - (origin - (method url-fetch) - (uri (crate-uri "webpki-roots" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0jbll0ys9jakrvv3l1i216bbgj7jbxr7ad2dihw28xcm7s8fnb2m")))) - (arguments - `(#:cargo-inputs - (("rust-webpki" ,rust-webpki-0.22)))))) - -(define-public rust-webpki-roots-0.21 - (package - (inherit rust-webpki-roots-0.22) - (name "rust-webpki-roots") - (version "0.21.1") - (source - (origin - (method url-fetch) - (uri (crate-uri "webpki-roots" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0h49lkr7hrxpyr0xg1nph4m3v1l6rhg8ax9n8msvfwz48hsibgma")))) - (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-webpki" ,rust-webpki-0.21)))))) - -(define-public rust-webpki-roots-0.20 - (package - (inherit rust-webpki-roots-0.21) - (name "rust-webpki-roots") - (version "0.20.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "webpki-roots" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "17qpmyym1lsi967b4nc3112nb13ism8731bhjqd9hlajafkxw80g")))) - (arguments - `(#:cargo-inputs - (("rust-webpki" ,rust-webpki-0.21)))))) - -(define-public rust-webpki-roots-0.19 - (package - (inherit rust-webpki-roots-0.20) - (name "rust-webpki-roots") - (version "0.19.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "webpki-roots" version)) - (file-name - (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0fapdqwbfv0kncplpvbgnr0bjd5a9krlpij9jdzk0mvaa6vz9vzq")))))) - -(define-public rust-webpki-roots-0.18 - (package - (inherit rust-webpki-roots-0.19) - (name "rust-webpki-roots") - (version "0.18.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "webpki-roots" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1d4ss607rgi9pj01zzqa13c1p3m35z314yh6lmjaj4kzvwv5gkci")))))) - -(define-public rust-webpki-roots-0.17 - (package - (inherit rust-webpki-roots-0.18) - (name "rust-webpki-roots") - (version "0.17.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "webpki-roots" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "12vi8dh0yik0h4f0b9dnlw5i3gxyky7iblbksh6zcq4xvlvswqm2")))))) - -(define-public rust-webpki-roots-0.16 - (package - (inherit rust-webpki-roots-0.17) - (name "rust-webpki-roots") - (version "0.16.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "webpki-roots" version)) - (file-name - (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "03ny02mwqdgd2ff23k03kbwr2rrcaymxhp7jcjjikfh340hs83y1")))) - (arguments - `(#:cargo-inputs - (("rust-untrusted" ,rust-untrusted-0.6) - ("rust-webpki" ,rust-webpki-0.19)))))) - -(define-public rust-webpki-roots-0.15 - (package - (inherit rust-webpki-roots-0.20) - (name "rust-webpki-roots") - (version "0.15.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "webpki-roots" version)) - (file-name - (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1gya8j75jnvf9lz36w0l4bf2xnw8qdx6plvhia891mcgj44g9lc5")))) - (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-untrusted" ,rust-untrusted-0.6) - ("rust-webpki" ,rust-webpki-0.18)))))) - (define-public rust-webview-sys-0.6 (package (name "rust-webview-sys") diff --git a/gnu/packages/crates-web.scm b/gnu/packages/crates-web.scm new file mode 100644 index 0000000000..9396fca76a --- /dev/null +++ b/gnu/packages/crates-web.scm @@ -0,0 +1,307 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2020 Hartmut Goebel +;;; Copyright © 2020 Arun Isaac +;;; Copyright © 2020, 2023 Efraim Flashner +;;; Copyright © 2021 Nicolas Goaziou +;;; Copyright © 2022 Aleksandr Vityazev +;;; +;;; 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 . + +(define-module (gnu packages crates-web) + #:use-module (guix build-system cargo) + #:use-module (guix download) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix utils) + #:use-module (gnu packages) + #:use-module (gnu packages crates-io) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages tls)) + +(define-public rust-webpki-0.22 + (package + (name "rust-webpki") + (version "0.22.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "webpki" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1gd1gxip5kgdwmrvhj5gjxij2mgg2mavq1ych4q1h272ja0xg5gh")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-ring" ,rust-ring-0.16) + ("rust-untrusted" ,rust-untrusted-0.7)) + #:cargo-development-inputs + (("rust-base64" ,rust-base64-0.9)))) + (home-page "https://github.com/briansmith/webpki") + (synopsis "Web PKI X.509 Certificate Verification") + (description "This package provides Web PKI X.509 Certificate +Verification.") + (license license:isc))) + +(define-public rust-webpki-0.21 + (package + (inherit rust-webpki-0.22) + (name "rust-webpki") + (version "0.21.4") + (source + (origin + (method url-fetch) + (uri (crate-uri "webpki" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1sm4i8c5bw3bdhi7mjk0wpvwx55hvsmyn0k2lpa4cb161038rqxq")))) + (arguments + `(#:tests? #f ;; tests fail to build "missing file tests/ed25519/ee.der" + #:cargo-inputs + (("rust-ring" ,rust-ring-0.16) + ("rust-untrusted" ,rust-untrusted-0.7)) + #:cargo-development-inputs + (("rust-base64" ,rust-base64-0.9)))))) + +(define-public rust-webpki-0.19 + (package + (inherit rust-webpki-0.21) + (name "rust-webpki") + (version "0.19.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "webpki" version)) + (file-name + (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "10nhyxlqsa4caxlxrijm5h79rdg6ld8hqy78ldjnnfhaj3biqzjg")))) + (arguments + `(#:tests? #f ; tests fail to build "missing file tests/ed25519/ee.der" + #:cargo-inputs + (("rust-ring" ,rust-ring-0.14) + ("rust-untrusted" ,rust-untrusted-0.6)) + #:cargo-development-inputs + (("rust-base64" ,rust-base64-0.9)))))) + +(define-public rust-webpki-0.18 + (package + (inherit rust-webpki-0.19) + (name "rust-webpki") + (version "0.18.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "webpki" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0zx1v8afa4ig97dyqfrnlj5i7pib6dnfw88qn2iiqhfq2rrrdmqp")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t ; TODO: Fix building rust-ring-0.13 + #:cargo-inputs + (("rust-ring" ,rust-ring-0.13) + ("rust-untrusted" ,rust-untrusted-0.6)) + #:cargo-development-inputs + (("rust-base64" ,rust-base64-0.9)) + #:phases + (modify-phases %standard-phases + (add-before 'build 'build-curve25519-tables + (lambda* (#:key vendor-dir #:allow-other-keys) + (with-directory-excursion + (dirname (car (find-files vendor-dir "make_curve25519_tables.py"))) + (with-output-to-file "curve25519_tables.h" + (lambda _ + (invoke "python" "make_curve25519_tables.py"))))))))))) + +(define-public rust-webpki-roots-0.25 + (package + (name "rust-webpki-roots") + (version "0.25.1") + (source (origin + (method url-fetch) + (uri (crate-uri "webpki-roots" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "15piy0vccppqb74li32gnn9l5a4ysxzwh8bp3qv6z8rhr2hyvin9")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-test-flags + (list "--release" "--" + ;; This test wants network access. + "--skip=generated_code_is_fresh") + #:cargo-development-inputs + (("rust-percent-encoding" ,rust-percent-encoding-2) + ("rust-reqwest" ,rust-reqwest-0.11) + ("rust-ring" ,rust-ring-0.16) + ("rust-rustls-pemfile" ,rust-rustls-pemfile-1) + ("rust-rustls-webpki" ,rust-rustls-webpki-0.101) + ("rust-tokio" ,rust-tokio-1)))) + (native-inputs + (list pkg-config)) + (inputs + (list openssl)) + (home-page "https://github.com/rustls/webpki-roots") + (synopsis "Mozilla's CA root certificates for use with webpki") + (description "This package provides Mozilla's CA root certificates for use +with webpki.") + (license license:mpl2.0))) + +(define-public rust-webpki-roots-0.23 + (package + (inherit rust-webpki-roots-0.25) + (name "rust-webpki-roots") + (version "0.23.1") + (source (origin + (method url-fetch) + (uri (crate-uri "webpki-roots" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0f4k8nng542iilxbibh1nhrdf5wbyi9is4fr219zzrc6hgw5hc5h")))) + (arguments + `(#:cargo-inputs (("rust-rustls-webpki" ,rust-rustls-webpki-0.100)))))) + +(define-public rust-webpki-roots-0.22 + (package + (inherit rust-webpki-roots-0.25) + (name "rust-webpki-roots") + (version "0.22.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "webpki-roots" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0jbll0ys9jakrvv3l1i216bbgj7jbxr7ad2dihw28xcm7s8fnb2m")))) + (arguments + `(#:cargo-inputs + (("rust-webpki" ,rust-webpki-0.22)))))) + +(define-public rust-webpki-roots-0.21 + (package + (inherit rust-webpki-roots-0.22) + (name "rust-webpki-roots") + (version "0.21.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "webpki-roots" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0h49lkr7hrxpyr0xg1nph4m3v1l6rhg8ax9n8msvfwz48hsibgma")))) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-webpki" ,rust-webpki-0.21)))))) + +(define-public rust-webpki-roots-0.20 + (package + (inherit rust-webpki-roots-0.21) + (name "rust-webpki-roots") + (version "0.20.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "webpki-roots" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "17qpmyym1lsi967b4nc3112nb13ism8731bhjqd9hlajafkxw80g")))) + (arguments + `(#:cargo-inputs + (("rust-webpki" ,rust-webpki-0.21)))))) + +(define-public rust-webpki-roots-0.19 + (package + (inherit rust-webpki-roots-0.20) + (name "rust-webpki-roots") + (version "0.19.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "webpki-roots" version)) + (file-name + (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0fapdqwbfv0kncplpvbgnr0bjd5a9krlpij9jdzk0mvaa6vz9vzq")))))) + +(define-public rust-webpki-roots-0.18 + (package + (inherit rust-webpki-roots-0.19) + (name "rust-webpki-roots") + (version "0.18.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "webpki-roots" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1d4ss607rgi9pj01zzqa13c1p3m35z314yh6lmjaj4kzvwv5gkci")))))) + +(define-public rust-webpki-roots-0.17 + (package + (inherit rust-webpki-roots-0.18) + (name "rust-webpki-roots") + (version "0.17.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "webpki-roots" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "12vi8dh0yik0h4f0b9dnlw5i3gxyky7iblbksh6zcq4xvlvswqm2")))))) + +(define-public rust-webpki-roots-0.16 + (package + (inherit rust-webpki-roots-0.17) + (name "rust-webpki-roots") + (version "0.16.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "webpki-roots" version)) + (file-name + (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "03ny02mwqdgd2ff23k03kbwr2rrcaymxhp7jcjjikfh340hs83y1")))) + (arguments + `(#:cargo-inputs + (("rust-untrusted" ,rust-untrusted-0.6) + ("rust-webpki" ,rust-webpki-0.19)))))) + +(define-public rust-webpki-roots-0.15 + (package + (inherit rust-webpki-roots-0.20) + (name "rust-webpki-roots") + (version "0.15.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "webpki-roots" version)) + (file-name + (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1gya8j75jnvf9lz36w0l4bf2xnw8qdx6plvhia891mcgj44g9lc5")))) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-untrusted" ,rust-untrusted-0.6) + ("rust-webpki" ,rust-webpki-0.18)))))) -- cgit v1.2.3 From 123ea83f13b742fc168674c16bf7489d2b2e8962 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Wed, 27 Dec 2023 13:43:35 +0200 Subject: gnu: rust-rustls: Move to (gnu packages crates-tls). * gnu/packages/crates-io.scm (rust-rustls-0.21, rust-rustls-0.20, rust-rustls-0.19, rust-rustls-0.18, rust-rustls-0.17, rust-rustls-0.16, rust-rustls-0.15, rust-rustls-0.14, rust-rustls-ffi-0.8, rust-rustls-native-certs-0.6, rust-rustls-native-certs-0.5, rust-rustls-native-certs-0.4, rust-rustls-pemfile-2, rust-rustls-pemfile-1, rust-rustls-pemfile-0.2, rust-rustls-pki-types-1, rust-rustls-webpki-0.101, rust-rustls-webpki-0.100): Move from here ... * gnu/packages/crates-tls.scm: ... to here. Change-Id: Ief4208a2f86151447337b9ca037b4b28f753a9f8 --- gnu/local.mk | 1 + gnu/packages/crates-io.scm | 460 +---------------------------------------- gnu/packages/crates-tls.scm | 494 ++++++++++++++++++++++++++++++++++++++++++++ gnu/packages/crates-web.scm | 1 + gnu/packages/rust-apps.scm | 1 + 5 files changed, 498 insertions(+), 459 deletions(-) create mode 100644 gnu/packages/crates-tls.scm (limited to 'gnu/local.mk') diff --git a/gnu/local.mk b/gnu/local.mk index e0b551233f..9e9f763bc6 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -204,6 +204,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/crates-io.scm \ %D%/packages/crates-graphics.scm \ %D%/packages/crates-gtk.scm \ + %D%/packages/crates-tls.scm \ %D%/packages/crates-vcs.scm \ %D%/packages/crates-web.scm \ %D%/packages/cross-base.scm \ diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index c424b70ef4..113fd1da7a 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -74,6 +74,7 @@ (define-module (gnu packages crates-io) #:use-module (gnu packages cpp) #:use-module (gnu packages crates-graphics) #:use-module (gnu packages crates-gtk) + #:use-module (gnu packages crates-tls) #:use-module (gnu packages crates-vcs) #:use-module (gnu packages crates-web) #:use-module (gnu packages crypto) @@ -62448,465 +62449,6 @@ (define-public rust-rustix-0.35 ("rust-serial-test" ,rust-serial-test-0.6) ("rust-tempfile" ,rust-tempfile-3)))))) -(define-public rust-rustls-0.21 - (package - (name "rust-rustls") - (version "0.21.10") - (source (origin - (method url-fetch) - (uri (crate-uri "rustls" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1fmpzk3axnhkd99saqkvraifdfms4pkyi56lkihf8n877j0sdmgr")))) - (build-system cargo-build-system) - (arguments - `(#:tests? #f ; Not all files included. - #:cargo-inputs - (("rust-log" ,rust-log-0.4) - ("rust-ring" ,rust-ring-0.17) - ("rust-rustls-webpki" ,rust-rustls-webpki-0.101) - ("rust-rustversion" ,rust-rustversion-1) - ("rust-sct" ,rust-sct-0.7)) - #:cargo-development-inputs - (("rust-base64" ,rust-base64-0.21) - ("rust-bencher" ,rust-bencher-0.1) - ("rust-env-logger" ,rust-env-logger-0.10) - ("rust-log" ,rust-log-0.4) - ("rust-rustls-pemfile" ,rust-rustls-pemfile-1) - ("rust-webpki-roots" ,rust-webpki-roots-0.25)))) - (home-page "https://github.com/rustls/rustls") - (synopsis "Modern TLS library written in Rust") - (description - "This package provides a modern TLS library written in Rust.") - (license (list license:asl2.0 license:isc license:expat)))) - -(define-public rust-rustls-0.20 - (package - (inherit rust-rustls-0.21) - (name "rust-rustls") - (version "0.20.8") - (source (origin - (method url-fetch) - (uri (crate-uri "rustls" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0bqfymq5bjs1jxg1iw2nn4ab3kzz2lrk8a1vx3s98lhp9p3qzxzz")))) - (arguments - `(#:tests? #f ; Not all files included. - #:cargo-inputs - (("rust-log" ,rust-log-0.4) - ("rust-ring" ,rust-ring-0.16) - ("rust-rustversion" ,rust-rustversion-1) - ("rust-sct" ,rust-sct-0.7) - ("rust-webpki" ,rust-webpki-0.22)) - #:cargo-development-inputs - (("rust-base64" ,rust-base64-0.13) - ("rust-criterion" ,rust-criterion-0.3) - ("rust-env-logger" ,rust-env-logger-0.9) - ("rust-log" ,rust-log-0.4) - ("rust-rustls-pemfile" ,rust-rustls-pemfile-1) - ("rust-webpki-roots" ,rust-webpki-roots-0.22)))))) - -(define-public rust-rustls-0.19 - (package - (inherit rust-rustls-0.20) - (name "rust-rustls") - (version "0.19.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "rustls" version)) - (file-name - (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "02wqas2pcxk75s9l9c9f1r5am7258bmqprh68pnqfvkwz0gx4kq6")))) - (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-base64" ,rust-base64-0.13) - ("rust-log" ,rust-log-0.4) - ("rust-ring" ,rust-ring-0.16) - ("rust-sct" ,rust-sct-0.6) - ("rust-webpki" ,rust-webpki-0.21)))))) - -(define-public rust-rustls-0.18 - (package - (inherit rust-rustls-0.19) - (name "rust-rustls") - (version "0.18.1") - (source - (origin - (method url-fetch) - (uri (crate-uri "rustls" version)) - (file-name - (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "108cf3bfw5high066shz9xrfv4jz7djdmnwqs3kwx4wfypf2c4ax")))) - (arguments - `(#:tests? #f ; Not all files included. - #:cargo-inputs - (("rust-base64" ,rust-base64-0.12) - ("rust-log" ,rust-log-0.4) - ("rust-ring" ,rust-ring-0.16) - ("rust-sct" ,rust-sct-0.6) - ("rust-webpki" ,rust-webpki-0.21)) - #:cargo-development-inputs - (("rust-criterion" ,rust-criterion-0.3) - ("rust-env-logger" ,rust-env-logger-0.7) - ("rust-log" ,rust-log-0.4) - ("rust-webpki-roots" ,rust-webpki-roots-0.20)))))) - -(define-public rust-rustls-0.17 - (package - (inherit rust-rustls-0.18) - (name "rust-rustls") - (version "0.17.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "rustls" version)) - (file-name - (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1q8m835viqrf4bbd2fa8rnmaj48fkd984saxf0238hb8blgs7m60")))) - (arguments - `(#:tests? #f ; Not all files included. - #:cargo-inputs - (("rust-base64" ,rust-base64-0.11) - ("rust-log" ,rust-log-0.4) - ("rust-ring" ,rust-ring-0.16) - ("rust-sct" ,rust-sct-0.6) - ("rust-webpki" ,rust-webpki-0.21)) - #:cargo-development-inputs - (("rust-criterion" ,rust-criterion-0.3) - ("rust-env-logger" ,rust-env-logger-0.7) - ("rust-log" ,rust-log-0.4) - ("rust-tempfile" ,rust-tempfile-3) - ("rust-webpki-roots" ,rust-webpki-roots-0.19)))))) - -(define-public rust-rustls-0.16 - (package - (inherit rust-rustls-0.17) - (name "rust-rustls") - (version "0.16.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "rustls" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "17n0fx3fpkg4fhpdplrdhkissnl003kj90vzbqag11vkpyqihnmj")))) - (arguments - `(#:tests? #f ;; 1/114 tests fail (test file not found) - #:cargo-inputs - (("rust-base64" ,rust-base64-0.10) - ("rust-log" ,rust-log-0.4) - ("rust-ring" ,rust-ring-0.16) - ("rust-sct" ,rust-sct-0.6) - ("rust-webpki" ,rust-webpki-0.21)) - #:cargo-development-inputs - (("rust-criterion" ,rust-criterion-0.2) - ("rust-env-logger" ,rust-env-logger-0.6) - ("rust-log" ,rust-log-0.4) - ("rust-tempfile" ,rust-tempfile-3) - ("rust-webpki-roots" ,rust-webpki-roots-0.17)))))) - -(define-public rust-rustls-0.15 - (package - (inherit rust-rustls-0.16) - (name "rust-rustls") - (version "0.15.2") - (source - (origin - (method url-fetch) - (uri (crate-uri "rustls" version)) - (file-name - (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0vh93fhqfbn4ysw4xzkpkpqdz36xixz4mhs1qllgldfq5iay6wgj")))) - (arguments - `(#:tests? #f ; API tests panic - #:cargo-test-flags - '("--release" "--" - "--skip=msgs::message_test::test_read_fuzz_corpus") - #:cargo-inputs - (("rust-base64" ,rust-base64-0.10) - ("rust-log" ,rust-log-0.4) - ("rust-ring" ,rust-ring-0.14) - ("rust-sct" ,rust-sct-0.5) - ("rust-untrusted" ,rust-untrusted-0.6) - ("rust-webpki" ,rust-webpki-0.19)) - #:cargo-development-inputs - (("rust-env-logger" ,rust-env-logger-0.6) - ("rust-log" ,rust-log-0.4) - ("rust-tempfile" ,rust-tempfile-3) - ("rust-webpki-roots" ,rust-webpki-roots-0.16)))))) - -(define-public rust-rustls-0.14 - (package - (inherit rust-rustls-0.18) - (name "rust-rustls") - (version "0.14.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "rustls" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1nal4qca7f7mhwnvx3m824ymdj6qmzfcl64sxmrmpis32dwr2y4b")))) - (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-base64" ,rust-base64-0.9) - ("rust-log" ,rust-log-0.4) - ("rust-ring" ,rust-ring-0.13) - ("rust-sct" ,rust-sct-0.4) - ("rust-untrusted" ,rust-untrusted-0.6) - ("rust-webpki" ,rust-webpki-0.18)))))) - -(define-public rust-rustls-ffi-0.8 - (package - (name "rust-rustls-ffi") - (version "0.8.2") - (source (origin - (method url-fetch) - (uri (crate-uri "rustls-ffi" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "06kqrvm1d5ps9pml26zdd2hm8hh20j6svwvqibpnx7m5rh3jg9cx")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-libc" ,rust-libc-0.2) - ("rust-log" ,rust-log-0.4) - ("rust-num-enum" ,rust-num-enum-0.5) - ("rust-rustls" ,rust-rustls-0.20) - ("rust-rustls-pemfile" ,rust-rustls-pemfile-0.2) - ("rust-sct" ,rust-sct-0.7) - ("rust-webpki" ,rust-webpki-0.22)) - #:cargo-development-inputs - (("rust-cbindgen" ,rust-cbindgen-0.26)) - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'adjust-cbindgen-requirement - ;; The Cargo.toml in the git repository doesn't specify - ;; a version requirement for cbindgen. - (lambda _ - (substitute* "Cargo.toml" - (("0\\.19\\.0") "*"))))))) - (home-page "https://github.com/rustls/rustls-ffi") - (synopsis "Rustls bindings for non-Rust languages") - (description "Rustls bindings for non-Rust languages") - (license (list license:asl2.0 license:isc license:expat)))) - -(define-public rust-rustls-native-certs-0.6 - (package - (name "rust-rustls-native-certs") - (version "0.6.3") - (source - (origin - (method url-fetch) - (uri (crate-uri "rustls-native-certs" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "007zind70rd5rfsrkdcfm8vn09j8sg02phg9334kark6rdscxam9")))) - (build-system cargo-build-system) - (arguments - `(#:tests? #f ; Tests want network access. - #:cargo-inputs - (("rust-openssl-probe" ,rust-openssl-probe-0.1) - ("rust-rustls-pemfile" ,rust-rustls-pemfile-1) - ("rust-schannel" ,rust-schannel-0.1) - ("rust-security-framework" ,rust-security-framework-2)) - #:cargo-development-inputs - (("rust-ring" ,rust-ring-0.16) - ("rust-rustls" ,rust-rustls-0.21) - ("rust-rustls-webpki" ,rust-rustls-webpki-0.100) - ("rust-serial-test" ,rust-serial-test-2) - ("rust-untrusted" ,rust-untrusted-0.7) - ("rust-webpki-roots" ,rust-webpki-roots-0.23) - ("rust-x509-parser" ,rust-x509-parser-0.15)))) - (home-page "https://github.com/ctz/rustls-native-certs") - (synopsis "Use the platform native certificate store with rustls") - (description "@code{rustls-native-certs} allows rustls to use the platform -native certificate store.") - (license - (list license:asl2.0 license:isc license:expat)))) - -(define-public rust-rustls-native-certs-0.5 - (package - (inherit rust-rustls-native-certs-0.6) - (name "rust-rustls-native-certs") - (version "0.5.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "rustls-native-certs" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "14i0bbbigk6r6262hvc51vz4dvqk1f3vg2f264wfvn2vi30vf1ss")))) - (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-openssl-probe" ,rust-openssl-probe-0.1) - ("rust-rustls" ,rust-rustls-0.19) - ("rust-schannel" ,rust-schannel-0.1) - ("rust-security-framework" ,rust-security-framework-2)))))) - -(define-public rust-rustls-native-certs-0.4 - (package - (inherit rust-rustls-native-certs-0.5) - (name "rust-rustls-native-certs") - (version "0.4.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "rustls-native-certs" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1f2rkvdkz92qcmwryyqiw9phkqkf95g4962ljpfq5nkjfsd477b2")))) - (arguments - `(#:tests? #f ; Tests want network access - #:cargo-inputs - (("rust-openssl-probe" ,rust-openssl-probe-0.1) - ("rust-rustls" ,rust-rustls-0.18) - ("rust-schannel" ,rust-schannel-0.1) - ("rust-security-framework" - ,rust-security-framework-1)) - #:cargo-development-inputs - (("rust-ring" ,rust-ring-0.16) - ("rust-untrusted" ,rust-untrusted-0.7) - ("rust-webpki" ,rust-webpki-0.21) - ("rust-webpki-roots" ,rust-webpki-roots-0.20)))))) - -(define-public rust-rustls-pemfile-2 - (package - (name "rust-rustls-pemfile") - (version "2.0.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "rustls-pemfile" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1x34xidvzn4br2vl8f8xwmhgbjv4lmlb0ggv5whlnk4yl87rir1m")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs (("rust-base64" ,rust-base64-0.21) - ("rust-rustls-pki-types" ,rust-rustls-pki-types-1)) - #:cargo-development-inputs (("rust-bencher" ,rust-bencher-0.1)))) - (home-page "https://github.com/rustls/pemfile") - (synopsis "Basic parser for PEM formatted keys and certificates") - (description "This package provides a very basic parser for the -PEM-encodings commonly used to store keys and certificates at rest.") - (license (list license:asl2.0 license:isc license:expat)))) - -(define-public rust-rustls-pemfile-1 - (package - (inherit rust-rustls-pemfile-2) - (name "rust-rustls-pemfile") - (version "1.0.3") - (source - (origin - (method url-fetch) - (uri (crate-uri "rustls-pemfile" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1cplx6hgkr32nq31p3613b2sj7csrrq3zp6znx9vc1qx9c4qff9d")))) - (arguments - `(#:cargo-inputs - (("rust-base64" ,rust-base64-0.21)) - #:cargo-development-inputs - (("rust-bencher" ,rust-bencher-0.1)))))) - -(define-public rust-rustls-pemfile-0.2 - (package - (inherit rust-rustls-pemfile-1) - (name "rust-rustls-pemfile") - (version "0.2.1") - (source - (origin - (method url-fetch) - (uri (crate-uri "rustls-pemfile" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1jfi97lqnnnnxhmfy6ygrsp0x70m8wsdpaw45svvz1qc6vmymssy")))) - (arguments - `(#:cargo-inputs - (("rust-base64" ,rust-base64-0.13)) - #:cargo-development-inputs - (("rust-criterion" ,rust-criterion-0.3)))))) - -(define-public rust-rustls-pki-types-1 - (package - (name "rust-rustls-pki-types") - (version "1.0.1") - (source - (origin - (method url-fetch) - (uri (crate-uri "rustls-pki-types" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "16rkx6gn5l2zximxy8fx9h2vzks1hfxi5z5cd9y97r0fl853wrz7")))) - (build-system cargo-build-system) - (home-page "https://github.com/rustls/pki-types") - (synopsis "Shared types for the rustls PKI ecosystem") - (description "Shared types for the rustls PKI ecosystem.") - (license (list license:expat license:asl2.0)))) - -(define-public rust-rustls-webpki-0.101 - (package - (name "rust-rustls-webpki") - (version "0.101.7") - (source (origin - (method url-fetch) - (uri (crate-uri "rustls-webpki" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0rapfhpkqp75552i8r0y7f4vq7csb4k7gjjans0df73sxv8paqlb")))) - (build-system cargo-build-system) - (arguments - `(#:tests? #f ; Not all files included. - #:cargo-inputs - (("rust-ring" ,rust-ring-0.17) - ("rust-untrusted" ,rust-untrusted-0.9)) - #:cargo-development-inputs - (("rust-base64" ,rust-base64-0.21) - ("rust-bencher" ,rust-bencher-0.1) - ("rust-once-cell" ,rust-once-cell-1) - ("rust-rcgen" ,rust-rcgen-0.11) - ("rust-serde" ,rust-serde-1) - ("rust-serde-json" ,rust-serde-json-1)))) - (home-page "https://github.com/rustls/webpki") - (synopsis "Web PKI X.509 Certificate Verification") - (description "Web PKI X.509 Certificate Verification.") - (license license:isc))) - -(define-public rust-rustls-webpki-0.100 - (package - (inherit rust-rustls-webpki-0.101) - (name "rust-rustls-webpki") - (version "0.100.1") - (source (origin - (method url-fetch) - (uri (crate-uri "rustls-webpki" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0sxlgpcczd1wihmnbgv5qz00jim32dap5wzq2rwcm39xxpapq86n")))) - (arguments - `(#:tests? #f ; Not all files included. - #:cargo-inputs - (("rust-ring" ,rust-ring-0.16) - ("rust-untrusted" ,rust-untrusted-0.7)) - #:cargo-development-inputs (("rust-base64" ,rust-base64-0.13)))))) - (define-public rust-rusttype-0.9 (package (name "rust-rusttype") diff --git a/gnu/packages/crates-tls.scm b/gnu/packages/crates-tls.scm new file mode 100644 index 0000000000..a6dd512547 --- /dev/null +++ b/gnu/packages/crates-tls.scm @@ -0,0 +1,494 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2020 Hartmut Goebel +;;; Copyright © 2020 Arun Isaac +;;; Copyright © 2020, 2023 Efraim Flashner +;;; Copyright © 2021 Nicolas Goaziou +;;; Copyright © 2021 Alexandru-Sergiu Marton +;;; Copyright © 2022 Aleksandr Vityazev +;;; Copyright © 2022 Ricardo Wurmus +;;; +;;; 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 . + +(define-module (gnu packages crates-tls) + #:use-module (guix build-system cargo) + #:use-module (guix download) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix utils) + #:use-module (gnu packages) + #:use-module (gnu packages crates-io) + #:use-module (gnu packages crates-web) + #:use-module (gnu packages rust-apps)) + +(define-public rust-rustls-0.21 + (package + (name "rust-rustls") + (version "0.21.10") + (source (origin + (method url-fetch) + (uri (crate-uri "rustls" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1fmpzk3axnhkd99saqkvraifdfms4pkyi56lkihf8n877j0sdmgr")))) + (build-system cargo-build-system) + (arguments + `(#:tests? #f ; Not all files included. + #:cargo-inputs + (("rust-log" ,rust-log-0.4) + ("rust-ring" ,rust-ring-0.17) + ("rust-rustls-webpki" ,rust-rustls-webpki-0.101) + ("rust-rustversion" ,rust-rustversion-1) + ("rust-sct" ,rust-sct-0.7)) + #:cargo-development-inputs + (("rust-base64" ,rust-base64-0.21) + ("rust-bencher" ,rust-bencher-0.1) + ("rust-env-logger" ,rust-env-logger-0.10) + ("rust-log" ,rust-log-0.4) + ("rust-rustls-pemfile" ,rust-rustls-pemfile-1) + ("rust-webpki-roots" ,rust-webpki-roots-0.25)))) + (home-page "https://github.com/rustls/rustls") + (synopsis "Modern TLS library written in Rust") + (description + "This package provides a modern TLS library written in Rust.") + (license (list license:asl2.0 license:isc license:expat)))) + +(define-public rust-rustls-0.20 + (package + (inherit rust-rustls-0.21) + (name "rust-rustls") + (version "0.20.8") + (source (origin + (method url-fetch) + (uri (crate-uri "rustls" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0bqfymq5bjs1jxg1iw2nn4ab3kzz2lrk8a1vx3s98lhp9p3qzxzz")))) + (arguments + `(#:tests? #f ; Not all files included. + #:cargo-inputs + (("rust-log" ,rust-log-0.4) + ("rust-ring" ,rust-ring-0.16) + ("rust-rustversion" ,rust-rustversion-1) + ("rust-sct" ,rust-sct-0.7) + ("rust-webpki" ,rust-webpki-0.22)) + #:cargo-development-inputs + (("rust-base64" ,rust-base64-0.13) + ("rust-criterion" ,rust-criterion-0.3) + ("rust-env-logger" ,rust-env-logger-0.9) + ("rust-log" ,rust-log-0.4) + ("rust-rustls-pemfile" ,rust-rustls-pemfile-1) + ("rust-webpki-roots" ,rust-webpki-roots-0.22)))))) + +(define-public rust-rustls-0.19 + (package + (inherit rust-rustls-0.20) + (name "rust-rustls") + (version "0.19.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "rustls" version)) + (file-name + (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "02wqas2pcxk75s9l9c9f1r5am7258bmqprh68pnqfvkwz0gx4kq6")))) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-base64" ,rust-base64-0.13) + ("rust-log" ,rust-log-0.4) + ("rust-ring" ,rust-ring-0.16) + ("rust-sct" ,rust-sct-0.6) + ("rust-webpki" ,rust-webpki-0.21)))))) + +(define-public rust-rustls-0.18 + (package + (inherit rust-rustls-0.19) + (name "rust-rustls") + (version "0.18.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "rustls" version)) + (file-name + (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "108cf3bfw5high066shz9xrfv4jz7djdmnwqs3kwx4wfypf2c4ax")))) + (arguments + `(#:tests? #f ; Not all files included. + #:cargo-inputs + (("rust-base64" ,rust-base64-0.12) + ("rust-log" ,rust-log-0.4) + ("rust-ring" ,rust-ring-0.16) + ("rust-sct" ,rust-sct-0.6) + ("rust-webpki" ,rust-webpki-0.21)) + #:cargo-development-inputs + (("rust-criterion" ,rust-criterion-0.3) + ("rust-env-logger" ,rust-env-logger-0.7) + ("rust-log" ,rust-log-0.4) + ("rust-webpki-roots" ,rust-webpki-roots-0.20)))))) + +(define-public rust-rustls-0.17 + (package + (inherit rust-rustls-0.18) + (name "rust-rustls") + (version "0.17.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "rustls" version)) + (file-name + (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1q8m835viqrf4bbd2fa8rnmaj48fkd984saxf0238hb8blgs7m60")))) + (arguments + `(#:tests? #f ; Not all files included. + #:cargo-inputs + (("rust-base64" ,rust-base64-0.11) + ("rust-log" ,rust-log-0.4) + ("rust-ring" ,rust-ring-0.16) + ("rust-sct" ,rust-sct-0.6) + ("rust-webpki" ,rust-webpki-0.21)) + #:cargo-development-inputs + (("rust-criterion" ,rust-criterion-0.3) + ("rust-env-logger" ,rust-env-logger-0.7) + ("rust-log" ,rust-log-0.4) + ("rust-tempfile" ,rust-tempfile-3) + ("rust-webpki-roots" ,rust-webpki-roots-0.19)))))) + +(define-public rust-rustls-0.16 + (package + (inherit rust-rustls-0.17) + (name "rust-rustls") + (version "0.16.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "rustls" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "17n0fx3fpkg4fhpdplrdhkissnl003kj90vzbqag11vkpyqihnmj")))) + (arguments + `(#:tests? #f ;; 1/114 tests fail (test file not found) + #:cargo-inputs + (("rust-base64" ,rust-base64-0.10) + ("rust-log" ,rust-log-0.4) + ("rust-ring" ,rust-ring-0.16) + ("rust-sct" ,rust-sct-0.6) + ("rust-webpki" ,rust-webpki-0.21)) + #:cargo-development-inputs + (("rust-criterion" ,rust-criterion-0.2) + ("rust-env-logger" ,rust-env-logger-0.6) + ("rust-log" ,rust-log-0.4) + ("rust-tempfile" ,rust-tempfile-3) + ("rust-webpki-roots" ,rust-webpki-roots-0.17)))))) + +(define-public rust-rustls-0.15 + (package + (inherit rust-rustls-0.16) + (name "rust-rustls") + (version "0.15.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "rustls" version)) + (file-name + (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0vh93fhqfbn4ysw4xzkpkpqdz36xixz4mhs1qllgldfq5iay6wgj")))) + (arguments + `(#:tests? #f ; API tests panic + #:cargo-test-flags + '("--release" "--" + "--skip=msgs::message_test::test_read_fuzz_corpus") + #:cargo-inputs + (("rust-base64" ,rust-base64-0.10) + ("rust-log" ,rust-log-0.4) + ("rust-ring" ,rust-ring-0.14) + ("rust-sct" ,rust-sct-0.5) + ("rust-untrusted" ,rust-untrusted-0.6) + ("rust-webpki" ,rust-webpki-0.19)) + #:cargo-development-inputs + (("rust-env-logger" ,rust-env-logger-0.6) + ("rust-log" ,rust-log-0.4) + ("rust-tempfile" ,rust-tempfile-3) + ("rust-webpki-roots" ,rust-webpki-roots-0.16)))))) + +(define-public rust-rustls-0.14 + (package + (inherit rust-rustls-0.18) + (name "rust-rustls") + (version "0.14.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "rustls" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1nal4qca7f7mhwnvx3m824ymdj6qmzfcl64sxmrmpis32dwr2y4b")))) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-base64" ,rust-base64-0.9) + ("rust-log" ,rust-log-0.4) + ("rust-ring" ,rust-ring-0.13) + ("rust-sct" ,rust-sct-0.4) + ("rust-untrusted" ,rust-untrusted-0.6) + ("rust-webpki" ,rust-webpki-0.18)))))) + +(define-public rust-rustls-ffi-0.8 + (package + (name "rust-rustls-ffi") + (version "0.8.2") + (source (origin + (method url-fetch) + (uri (crate-uri "rustls-ffi" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "06kqrvm1d5ps9pml26zdd2hm8hh20j6svwvqibpnx7m5rh3jg9cx")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-libc" ,rust-libc-0.2) + ("rust-log" ,rust-log-0.4) + ("rust-num-enum" ,rust-num-enum-0.5) + ("rust-rustls" ,rust-rustls-0.20) + ("rust-rustls-pemfile" ,rust-rustls-pemfile-0.2) + ("rust-sct" ,rust-sct-0.7) + ("rust-webpki" ,rust-webpki-0.22)) + #:cargo-development-inputs + (("rust-cbindgen" ,rust-cbindgen-0.26)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'adjust-cbindgen-requirement + ;; The Cargo.toml in the git repository doesn't specify + ;; a version requirement for cbindgen. + (lambda _ + (substitute* "Cargo.toml" + (("0\\.19\\.0") "*"))))))) + (home-page "https://github.com/rustls/rustls-ffi") + (synopsis "Rustls bindings for non-Rust languages") + (description "Rustls bindings for non-Rust languages") + (license (list license:asl2.0 license:isc license:expat)))) + +(define-public rust-rustls-native-certs-0.6 + (package + (name "rust-rustls-native-certs") + (version "0.6.3") + (source + (origin + (method url-fetch) + (uri (crate-uri "rustls-native-certs" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "007zind70rd5rfsrkdcfm8vn09j8sg02phg9334kark6rdscxam9")))) + (build-system cargo-build-system) + (arguments + `(#:tests? #f ; Tests want network access. + #:cargo-inputs + (("rust-openssl-probe" ,rust-openssl-probe-0.1) + ("rust-rustls-pemfile" ,rust-rustls-pemfile-1) + ("rust-schannel" ,rust-schannel-0.1) + ("rust-security-framework" ,rust-security-framework-2)) + #:cargo-development-inputs + (("rust-ring" ,rust-ring-0.16) + ("rust-rustls" ,rust-rustls-0.21) + ("rust-rustls-webpki" ,rust-rustls-webpki-0.100) + ("rust-serial-test" ,rust-serial-test-2) + ("rust-untrusted" ,rust-untrusted-0.7) + ("rust-webpki-roots" ,rust-webpki-roots-0.23) + ("rust-x509-parser" ,rust-x509-parser-0.15)))) + (home-page "https://github.com/ctz/rustls-native-certs") + (synopsis "Use the platform native certificate store with rustls") + (description "@code{rustls-native-certs} allows rustls to use the platform +native certificate store.") + (license + (list license:asl2.0 license:isc license:expat)))) + +(define-public rust-rustls-native-certs-0.5 + (package + (inherit rust-rustls-native-certs-0.6) + (name "rust-rustls-native-certs") + (version "0.5.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "rustls-native-certs" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "14i0bbbigk6r6262hvc51vz4dvqk1f3vg2f264wfvn2vi30vf1ss")))) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-openssl-probe" ,rust-openssl-probe-0.1) + ("rust-rustls" ,rust-rustls-0.19) + ("rust-schannel" ,rust-schannel-0.1) + ("rust-security-framework" ,rust-security-framework-2)))))) + +(define-public rust-rustls-native-certs-0.4 + (package + (inherit rust-rustls-native-certs-0.5) + (name "rust-rustls-native-certs") + (version "0.4.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "rustls-native-certs" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1f2rkvdkz92qcmwryyqiw9phkqkf95g4962ljpfq5nkjfsd477b2")))) + (arguments + `(#:tests? #f ; Tests want network access + #:cargo-inputs + (("rust-openssl-probe" ,rust-openssl-probe-0.1) + ("rust-rustls" ,rust-rustls-0.18) + ("rust-schannel" ,rust-schannel-0.1) + ("rust-security-framework" + ,rust-security-framework-1)) + #:cargo-development-inputs + (("rust-ring" ,rust-ring-0.16) + ("rust-untrusted" ,rust-untrusted-0.7) + ("rust-webpki" ,rust-webpki-0.21) + ("rust-webpki-roots" ,rust-webpki-roots-0.20)))))) + +(define-public rust-rustls-pemfile-2 + (package + (name "rust-rustls-pemfile") + (version "2.0.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "rustls-pemfile" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1x34xidvzn4br2vl8f8xwmhgbjv4lmlb0ggv5whlnk4yl87rir1m")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs (("rust-base64" ,rust-base64-0.21) + ("rust-rustls-pki-types" ,rust-rustls-pki-types-1)) + #:cargo-development-inputs (("rust-bencher" ,rust-bencher-0.1)))) + (home-page "https://github.com/rustls/pemfile") + (synopsis "Basic parser for PEM formatted keys and certificates") + (description "This package provides a very basic parser for the +PEM-encodings commonly used to store keys and certificates at rest.") + (license (list license:asl2.0 license:isc license:expat)))) + +(define-public rust-rustls-pemfile-1 + (package + (inherit rust-rustls-pemfile-2) + (name "rust-rustls-pemfile") + (version "1.0.3") + (source + (origin + (method url-fetch) + (uri (crate-uri "rustls-pemfile" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1cplx6hgkr32nq31p3613b2sj7csrrq3zp6znx9vc1qx9c4qff9d")))) + (arguments + `(#:cargo-inputs + (("rust-base64" ,rust-base64-0.21)) + #:cargo-development-inputs + (("rust-bencher" ,rust-bencher-0.1)))))) + +(define-public rust-rustls-pemfile-0.2 + (package + (inherit rust-rustls-pemfile-1) + (name "rust-rustls-pemfile") + (version "0.2.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "rustls-pemfile" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1jfi97lqnnnnxhmfy6ygrsp0x70m8wsdpaw45svvz1qc6vmymssy")))) + (arguments + `(#:cargo-inputs + (("rust-base64" ,rust-base64-0.13)) + #:cargo-development-inputs + (("rust-criterion" ,rust-criterion-0.3)))))) + +(define-public rust-rustls-pki-types-1 + (package + (name "rust-rustls-pki-types") + (version "1.0.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "rustls-pki-types" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "16rkx6gn5l2zximxy8fx9h2vzks1hfxi5z5cd9y97r0fl853wrz7")))) + (build-system cargo-build-system) + (home-page "https://github.com/rustls/pki-types") + (synopsis "Shared types for the rustls PKI ecosystem") + (description "Shared types for the rustls PKI ecosystem.") + (license (list license:expat license:asl2.0)))) + +(define-public rust-rustls-webpki-0.101 + (package + (name "rust-rustls-webpki") + (version "0.101.7") + (source (origin + (method url-fetch) + (uri (crate-uri "rustls-webpki" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0rapfhpkqp75552i8r0y7f4vq7csb4k7gjjans0df73sxv8paqlb")))) + (build-system cargo-build-system) + (arguments + `(#:tests? #f ; Not all files included. + #:cargo-inputs + (("rust-ring" ,rust-ring-0.17) + ("rust-untrusted" ,rust-untrusted-0.9)) + #:cargo-development-inputs + (("rust-base64" ,rust-base64-0.21) + ("rust-bencher" ,rust-bencher-0.1) + ("rust-once-cell" ,rust-once-cell-1) + ("rust-rcgen" ,rust-rcgen-0.11) + ("rust-serde" ,rust-serde-1) + ("rust-serde-json" ,rust-serde-json-1)))) + (home-page "https://github.com/rustls/webpki") + (synopsis "Web PKI X.509 Certificate Verification") + (description "Web PKI X.509 Certificate Verification.") + (license license:isc))) + +(define-public rust-rustls-webpki-0.100 + (package + (inherit rust-rustls-webpki-0.101) + (name "rust-rustls-webpki") + (version "0.100.1") + (source (origin + (method url-fetch) + (uri (crate-uri "rustls-webpki" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0sxlgpcczd1wihmnbgv5qz00jim32dap5wzq2rwcm39xxpapq86n")))) + (arguments + `(#:tests? #f ; Not all files included. + #:cargo-inputs + (("rust-ring" ,rust-ring-0.16) + ("rust-untrusted" ,rust-untrusted-0.7)) + #:cargo-development-inputs (("rust-base64" ,rust-base64-0.13)))))) + diff --git a/gnu/packages/crates-web.scm b/gnu/packages/crates-web.scm index 99cf1afdac..71d89bf170 100644 --- a/gnu/packages/crates-web.scm +++ b/gnu/packages/crates-web.scm @@ -29,6 +29,7 @@ (define-module (gnu packages crates-web) #:use-module (gnu packages) #:use-module (gnu packages crates-io) #:use-module (gnu packages crates-gtk) + #:use-module (gnu packages crates-tls) #:use-module (gnu packages gtk) #:use-module (gnu packages pkg-config) #:use-module (gnu packages tls) diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm index 0b6610cd32..561c338959 100644 --- a/gnu/packages/rust-apps.scm +++ b/gnu/packages/rust-apps.scm @@ -60,6 +60,7 @@ (define-module (gnu packages rust-apps) #:use-module (gnu packages compression) #:use-module (gnu packages crates-io) #:use-module (gnu packages crates-graphics) + #:use-module (gnu packages crates-tls) #:use-module (gnu packages crates-vcs) #:use-module (gnu packages crates-web) #:use-module (gnu packages curl) -- cgit v1.2.3 From 87630f28811526ad90f9bb6b8f6b9d5cec7a73fe Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Wed, 27 Dec 2023 14:48:18 +0200 Subject: gnu: rust-windows: Move to (gnu packages crates-windows). * gnu/packages/crates-io.scm (rust-windows-0.48, rust-windows-0.46, rust-windows-0.44, rust-windows-0.39, rust-windows-0.32, rust-windows-0.9, rust-windows-aarch64-gnullvm-0.52, rust-windows-aarch64-gnullvm-0.48, rust-windows-aarch64-gnullvm-0.42, rust-windows-aarch64-msvc-0.52, rust-windows-aarch64-msvc-0.48, rust-windows-aarch64-msvc-0.42, rust-windows-aarch64-msvc-0.39, rust-windows-aarch64-msvc-0.36, rust-windows-aarch64-msvc-0.32, rust-windows-aarch64-msvc-0.28, rust-windows-bindgen-0.51, rust-windows-i686-gnu-0.52, rust-windows-i686-gnu-0.48, rust-windows-i686-gnu-0.42, rust-windows-i686-gnu-0.36, rust-windows-i686-gnu-0.32, rust-windows-i686-gnu-0.28, rust-windows-i686-msvc-0.52, rust-windows-i686-msvc-0.48, rust-windows-i686-msvc-0.42, rust-windows-i686-msvc-0.39, rust-windows-i686-msvc-0.36, rust-windows-i686-msvc-0.32, rust-windows-i686-msvc-0.28, rust-windows-implement-0.48, rust-windows-implement-0.46, rust-windows-implement-0.44, rust-windows-implement-0.39, rust-windows-implement-0.32, rust-windows-interface-0.48, rust-windows-interface-0.46, rust-windows-interface-0.44, rust-windows-interface-0.39, rust-windows-metadata-0.51, rust-windows-sys-0.52, rust-windows-sys-0.48, rust-windows-sys-0.45, rust-windows-sys-0.42, rust-windows-sys-0.36, rust-windows-sys-0.28, rust-windows-gen-0.9, rust-windows-macros-0.9, rust-windows-targets-0.52, rust-windows-targets-0.48, rust-windows-targets-0.42, rust-windows-targets-0.39, rust-windows-targets-0.32, rust-windows-x86-64-gnu-0.52, rust-windows-x86-64-gnu-0.48, rust-windows-x86-64-gnu-0.42, rust-windows-x86-64-gnu-0.39, rust-windows-x86-64-gnu-0.36, rust-windows-x86-64-gnu-0.32, rust-windows-x86-64-gnu-0.28, rust-windows-x86-64-gnullvm-0.52, rust-windows-x86-64-gnullvm-48, rust-windows-x86-64-gnullvm-0.42, rust-windows-x86-64-msvc-0.52, rust-windows-x86-64-msvc-0.48, rust-windows-x86-64-msvc-0.42, rust-windows-x86-64-msvc-0.39, rust-windows-x86-64-msvc-0.36, rust-windows-x86-64-msvc-0.32, rust-windows-x86-64-msvc-0.28): Move from here ... * gnu/packages/crates-windows.scm: ... to here. Change-Id: I5abaa9402ae75199d4ec26b1e37b3a7293437c93 --- gnu/local.mk | 1 + gnu/packages/crates-graphics.scm | 1 + gnu/packages/crates-io.scm | 1254 +------------------------------------ gnu/packages/crates-vcs.scm | 1 + gnu/packages/crates-windows.scm | 1286 ++++++++++++++++++++++++++++++++++++++ gnu/packages/rust-apps.scm | 1 + gnu/packages/terminals.scm | 1 + 7 files changed, 1293 insertions(+), 1252 deletions(-) create mode 100644 gnu/packages/crates-windows.scm (limited to 'gnu/local.mk') diff --git a/gnu/local.mk b/gnu/local.mk index 9e9f763bc6..1588c6100c 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -207,6 +207,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/crates-tls.scm \ %D%/packages/crates-vcs.scm \ %D%/packages/crates-web.scm \ + %D%/packages/crates-windows.scm \ %D%/packages/cross-base.scm \ %D%/packages/cross-toolchain.scm \ %D%/packages/crypto.scm \ diff --git a/gnu/packages/crates-graphics.scm b/gnu/packages/crates-graphics.scm index fdb54b435b..8f1c773607 100644 --- a/gnu/packages/crates-graphics.scm +++ b/gnu/packages/crates-graphics.scm @@ -39,6 +39,7 @@ (define-module (gnu packages crates-graphics) #:use-module (gnu packages assembly) #:use-module (gnu packages compression) #:use-module (gnu packages crates-io) + #:use-module (gnu packages crates-windows) #:use-module (gnu packages freedesktop) #:use-module (gnu packages gl) #:use-module (gnu packages llvm) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 3193eb0d86..80793200f6 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -37,6 +37,7 @@ ;;; Copyright © 2023 Steve George ;;; Copyright © 2023 Sergio Pastor Pérez ;;; Copyright © 2023 VÖRÖSKŐI András +;;; Copyright © 2023 Daniel Ziltener ;;; ;;; This file is part of GNU Guix. ;;; @@ -78,6 +79,7 @@ (define-module (gnu packages crates-io) #:use-module (gnu packages crates-tls) #:use-module (gnu packages crates-vcs) #:use-module (gnu packages crates-web) + #:use-module (gnu packages crates-windows) #:use-module (gnu packages crypto) #:use-module (gnu packages curl) #:use-module (gnu packages databases) @@ -83276,1258 +83278,6 @@ (define-public rust-wincolor-0.1 #:cargo-inputs (("rust-winapi" ,rust-winapi-0.3)))))) -(define-public rust-windows-0.48 - (package - (name "rust-windows") - (version "0.48.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "windows" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "03vh89ilnxdxdh0n9np4ns4m10fvm93h3b0cc05ipg3qq1mqi1p6")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-windows-implement" ,rust-windows-implement-0.48) - ("rust-windows-interface" ,rust-windows-interface-0.48) - ("rust-windows-targets" ,rust-windows-targets-0.48)))) - (home-page "https://github.com/microsoft/windows-rs") - (synopsis "Rust for Windows") - (description "The windows crate lets you call any Windows API past, -present, and future using code generated on the fly directly from the metadata -describing the API and right into your Rust package where you can call them as -if they were just another Rust module.") - (license (list license:expat license:asl2.0)))) - -(define-public rust-windows-0.46 - (package - (inherit rust-windows-0.48) - (name "rust-windows") - (version "0.46.0") - (source (origin - (method url-fetch) - (uri (crate-uri "windows" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "098crdz9gxgy3614ygznqqhn28q097r498b3rg35584nd8gb9b6d")))) - (arguments - `(#:cargo-inputs - (("rust-windows-implement" ,rust-windows-implement-0.46) - ("rust-windows-interface" ,rust-windows-interface-0.46) - ("rust-windows-targets" ,rust-windows-targets-0.42)))))) - -(define-public rust-windows-0.44 - (package - (inherit rust-windows-0.48) - (name "rust-windows") - (version "0.44.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "windows" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0ax1ip82dhszxz4hhsrdj3b0681xw6axahnfldxcgi506nmmsx4y")))) - (arguments - `(#:tests? #f ; Test suite only runs on Windows. - #:cargo-inputs - (("rust-windows-implement" ,rust-windows-implement-0.44) - ("rust-windows-interface" ,rust-windows-interface-0.44) - ("rust-windows-targets" ,rust-windows-targets-0.42)))))) - -(define-public rust-windows-0.39 - (package - (inherit rust-windows-0.46) - (name "rust-windows") - (version "0.39.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "windows" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0jkr4rxj6jn7brqxycr1pjgvnixsimsiywl4a7v20q5ca05bvi7i")))) - (arguments - `(#:cargo-inputs (("rust-windows-implement" ,rust-windows-implement-0.39) - ("rust-windows-interface" ,rust-windows-interface-0.39) - ("rust-windows-aarch64-msvc" ,rust-windows-aarch64-msvc-0.39) - ("rust-windows-i686-gnu" ,rust-windows-i686-gnu-0.39) - ("rust-windows-i686-msvc" ,rust-windows-i686-msvc-0.39) - ("rust-windows-x86-64-gnu" ,rust-windows-x86-64-gnu-0.39) - ("rust-windows-x86-64-msvc" ,rust-windows-x86-64-msvc-0.39)))))) - -(define-public rust-windows-0.32 - (package - (inherit rust-windows-0.46) - (name "rust-windows") - (version "0.32.0") - (source (origin - (method url-fetch) - (uri (crate-uri "windows" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1v0h5b5g1ak2f2a6gkgjqgrqkkbdcfmf02nfmmj27g4nj3dzdvgv")))) - (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-windows-implement" ,rust-windows-implement-0.32) - ("rust-windows-aarch64-msvc" ,rust-windows-aarch64-msvc-0.32) - ("rust-windows-i686-gnu" ,rust-windows-i686-gnu-0.32) - ("rust-windows-i686-msvc" ,rust-windows-i686-msvc-0.32) - ("rust-windows-x86-64-gnu" ,rust-windows-x86-64-gnu-0.32) - ("rust-windows-x86-64-msvc" ,rust-windows-x86-64-msvc-0.32)))))) - -(define-public rust-windows-0.9 - (package - (inherit rust-windows-0.46) - (name "rust-windows") - (version "0.9.1") - (source - (origin - (method url-fetch) - (uri (crate-uri "windows" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0zy9jmhkhmsng7l9qiznxpdh5ns303s875p5kf6a5q9ym0rka7rn")))) - (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-const-sha1" ,rust-const-sha1-0.2) - ("rust-windows-gen" ,rust-windows-gen-0.9) - ("rust-windows-macros" ,rust-windows-macros-0.9)))))) - -(define-public rust-windows-aarch64-gnullvm-0.52 - (package - (name "rust-windows-aarch64-gnullvm") - (version "0.52.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "windows_aarch64_gnullvm" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1shmn1kbdc0bpphcxz0vlph96bxz0h1jlmh93s9agf2dbpin8xyb")) - (snippet - '(delete-file "lib/libwindows.0.52.0.a")))) - (build-system cargo-build-system) - (arguments (list #:skip-build? #t)) - (home-page "https://github.com/microsoft/windows-rs") - (synopsis "Code gen support for the windows crate") - (description - "This package provides code gen support for the windows crate.") - (license (list license:expat license:asl2.0)))) - -(define-public rust-windows-aarch64-gnullvm-0.48 - (package - (inherit rust-windows-aarch64-gnullvm-0.52) - (name "rust-windows-aarch64-gnullvm") - (version "0.48.0") - (source (origin - (method url-fetch) - (uri (crate-uri "windows_aarch64_gnullvm" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1g71yxi61c410pwzq05ld7si4p9hyx6lf5fkw21sinvr3cp5gbli")) - (snippet - '(delete-file "lib/libwindows.0.48.0.a")))) - (arguments (list #:skip-build? #t)))) - -(define-public rust-windows-aarch64-gnullvm-0.42 - (package - (inherit rust-windows-aarch64-gnullvm-0.48) - (name "rust-windows-aarch64-gnullvm") - (version "0.42.2") - (source (origin - (method url-fetch) - (uri (crate-uri "windows_aarch64_gnullvm" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1y4q0qmvl0lvp7syxvfykafvmwal5hrjb4fmv04bqs0bawc52yjr")) - (snippet - '(delete-file "lib/libwindows.a")))) - (arguments - (list #:skip-build? #t)))) - -(define-public rust-windows-aarch64-msvc-0.52 - (package - (name "rust-windows-aarch64-msvc") - (version "0.52.0") - (source (origin - (method url-fetch) - (uri (crate-uri "windows_aarch64_msvc" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1vvmy1ypvzdvxn9yf0b8ygfl85gl2gpcyvsvqppsmlpisil07amv")) - (snippet - '(delete-file "lib/windows.0.52.0.lib")))) - (build-system cargo-build-system) - (arguments (list #:skip-build? #t)) - (home-page "https://github.com/microsoft/windows-rs") - (synopsis "Code gen support for the windows crate") - (description "This package provides code gen support for the windows -crate.") - (license (list license:expat license:asl2.0)))) - -(define-public rust-windows-aarch64-msvc-0.48 - (package - (inherit rust-windows-aarch64-msvc-0.52) - (name "rust-windows-aarch64-msvc") - (version "0.48.0") - (source (origin - (method url-fetch) - (uri (crate-uri "windows_aarch64_msvc" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1wvwipchhywcjaw73h998vzachf668fpqccbhrxzrz5xszh2gvxj")) - (snippet - #~(delete-file "lib/windows.0.48.0.lib")))) - (arguments (list #:skip-build? #t)))) - -(define-public rust-windows-aarch64-msvc-0.42 - (package - (inherit rust-windows-aarch64-msvc-0.48) - (name "rust-windows-aarch64-msvc") - (version "0.42.2") - (source (origin - (method url-fetch) - (uri (crate-uri "windows_aarch64_msvc" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0hsdikjl5sa1fva5qskpwlxzpc5q9l909fpl1w6yy1hglrj8i3p0")) - (snippet - #~(delete-file "lib/windows.lib")))) - (arguments - (list #:skip-build? #t)))) - -(define-public rust-windows-aarch64-msvc-0.39 - (package - (inherit rust-windows-aarch64-msvc-0.42) - (name "rust-windows-aarch64-msvc") - (version "0.39.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "windows_aarch64_msvc" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1wj0nfmyli4bn5af243r4s3zncxv0n4j6dd8zyb41gcnc1k12xzc")) - (snippet - #~(delete-file "lib/windows.lib")))))) - -(define-public rust-windows-aarch64-msvc-0.36 - (package - (inherit rust-windows-aarch64-msvc-0.42) - (name "rust-windows-aarch64-msvc") - (version "0.36.1") - (source - (origin - (inherit (package-source rust-windows-aarch64-msvc-0.42)) - (method url-fetch) - (uri (crate-uri "windows_aarch64_msvc" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0ixaxs2c37ll2smprzh0xq5p238zn8ylzb3lk1zddqmd77yw7f4v")))))) - -(define-public rust-windows-aarch64-msvc-0.32 - (package - (inherit rust-windows-aarch64-msvc-0.36) - (name "rust-windows-aarch64-msvc") - (version "0.32.0") - (source (origin - (inherit (package-source rust-windows-aarch64-msvc-0.36)) - (method url-fetch) - (uri (crate-uri "windows_aarch64_msvc" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1x8bnafz15ksgpbjbgk1l1j2jx4rq4a2ylzcahb1jhy4n59jgsfq")))))) - -(define-public rust-windows-aarch64-msvc-0.28 - (package - (inherit rust-windows-aarch64-msvc-0.32) - (name "rust-windows-aarch64-msvc") - (version "0.28.0") - (source (origin - (inherit (package-source rust-windows-aarch64-msvc-0.32)) - (method url-fetch) - (uri (crate-uri "windows_aarch64_msvc" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1hpk0n2z0jzzvwlvs98b75sa4q920953nqfc119rv19nwm0mlsaj")))))) - -(define-public rust-windows-bindgen-0.51 - (package - (name "rust-windows-bindgen") - (version "0.51.1") - (source - (origin - (method url-fetch) - (uri (crate-uri "windows-bindgen" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0xfdq4q958qal5iks8xkaanf7w3akzfxc58dxvz7amhjg2vic7xw")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs (("rust-proc-macro2" ,rust-proc-macro2-1) - ("rust-rayon" ,rust-rayon-1) - ("rust-syn" ,rust-syn-2) - ("rust-windows-metadata" ,rust-windows-metadata-0.51)))) - (home-page "https://github.com/microsoft/windows-rs") - (synopsis "Windows metadata compiler") - (description "Windows metadata compiler.") - (license (list license:expat license:asl2.0)))) - -(define-public rust-windows-i686-gnu-0.52 - (package - (name "rust-windows-i686-gnu") - (version "0.52.0") - (source (origin - (method url-fetch) - (uri (crate-uri "windows_i686_gnu" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "04zkglz4p3pjsns5gbz85v4s5aw102raz4spj4b0lmm33z5kg1m2")) - (snippet - '(delete-file "lib/libwindows.0.52.0.a")))) - (build-system cargo-build-system) - (arguments (list #:skip-build? #t)) - (home-page "https://github.com/microsoft/windows-rs") - (synopsis "Code gen support for the windows crate") - (description - "This package provides code gen support for the windows crate.") - (license (list license:expat license:asl2.0)))) - -(define-public rust-windows-i686-gnu-0.48 - (package - (inherit rust-windows-i686-gnu-0.52) - (name "rust-windows-i686-gnu") - (version "0.48.0") - (source (origin - (method url-fetch) - (uri (crate-uri "windows_i686_gnu" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0hd2v9kp8fss0rzl83wzhw0s5z8q1b4875m6s1phv0yvlxi1jak2")) - (snippet - #~(delete-file "lib/libwindows.0.48.0.a")))) - (arguments (list #:skip-build? #t)))) - -(define-public rust-windows-i686-gnu-0.42 - (package - (inherit rust-windows-i686-gnu-0.48) - (name "rust-windows-i686-gnu") - (version "0.42.2") - (source (origin - (method url-fetch) - (uri (crate-uri "windows_i686_gnu" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0kx866dfrby88lqs9v1vgmrkk1z6af9lhaghh5maj7d4imyr47f6")) - (snippet - #~(delete-file "lib/libwindows.a")))) - (arguments - (list #:skip-build? #t)))) - -(define-public rust-windows-i686-gnu-0.39 - (package - (inherit rust-windows-i686-gnu-0.42) - (name "rust-windows-i686-gnu") - (version "0.39.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "windows_i686_gnu" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "06wynhxklmh3s1ril9bh00rhv1npppcyirsp60p09xx501qwagvn")) - (snippet - #~(delete-file "lib/libwindows.a")))))) - -(define-public rust-windows-i686-gnu-0.36 - (package - (inherit rust-windows-i686-gnu-0.42) - (name "rust-windows-i686-gnu") - (version "0.36.1") - (source (origin - (inherit (package-source rust-windows-i686-gnu-0.42)) - (method url-fetch) - (uri (crate-uri "windows_i686_gnu" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1dm3svxfzamrv6kklyda9c3qylgwn5nwdps6p0kc9x6s077nq3hq")))))) - -(define-public rust-windows-i686-gnu-0.32 - (package - (inherit rust-windows-i686-gnu-0.36) - (name "rust-windows-i686-gnu") - (version "0.32.0") - (source (origin - (inherit (package-source rust-windows-i686-gnu-0.36)) - (method url-fetch) - (uri (crate-uri "windows_i686_gnu" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "05g6kpdfxwxnw2gn1nrd7bsf5997rci0k3h3nqby168ph5l1qwba")))))) - -(define-public rust-windows-i686-gnu-0.28 - (package - (inherit rust-windows-i686-gnu-0.32) - (name "rust-windows-i686-gnu") - (version "0.28.0") - (source (origin - (inherit (package-source rust-windows-i686-gnu-0.32)) - (method url-fetch) - (uri (crate-uri "windows_i686_gnu" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "12hx7qpsjg9p7jggfcplqa3mf1mzr7k7s5ybzqwg1zmg4fn2aizm")))))) - -(define-public rust-windows-i686-msvc-0.52 - (package - (name "rust-windows-i686-msvc") - (version "0.52.0") - (source (origin - (method url-fetch) - (uri (crate-uri "windows_i686_msvc" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "16kvmbvx0vr0zbgnaz6nsks9ycvfh5xp05bjrhq65kj623iyirgz")) - (snippet - '(delete-file "lib/windows.0.52.0.lib")))) - (build-system cargo-build-system) - (arguments (list #:skip-build? #t)) - (home-page "https://github.com/microsoft/windows-rs") - (synopsis "Code gen support for the windows crate") - (description - "This package provides code gen support for the windows crate.") - (license (list license:expat license:asl2.0)))) - -(define-public rust-windows-i686-msvc-0.48 - (package - (inherit rust-windows-i686-msvc-0.52) - (name "rust-windows-i686-msvc") - (version "0.48.0") - (source (origin - (method url-fetch) - (uri (crate-uri "windows_i686_msvc" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "004fkyqv3if178xx9ksqc4qqv8sz8n72mpczsr2vy8ffckiwchj5")) - (snippet - #~(delete-file "lib/windows.0.48.0.lib")))) - (arguments (list #:skip-build? #t)))) - -(define-public rust-windows-i686-msvc-0.42 - (package - (inherit rust-windows-i686-msvc-0.48) - (name "rust-windows-i686-msvc") - (version "0.42.2") - (source (origin - (method url-fetch) - (uri (crate-uri "windows_i686_msvc" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0q0h9m2aq1pygc199pa5jgc952qhcnf0zn688454i7v4xjv41n24")) - (snippet - #~(delete-file "lib/windows.lib")))) - (arguments - (list #:skip-build? #t)))) - -(define-public rust-windows-i686-msvc-0.39 - (package - (inherit rust-windows-i686-msvc-0.42) - (name "rust-windows-i686-msvc") - (version "0.39.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "windows_i686_msvc" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "01hiv9msxssy5iqxs7bczvf094k4mz56yi4z1bhj32c2b3zcpivv")) - (snippet - #~(delete-file "lib/windows.lib")))))) - -(define-public rust-windows-i686-msvc-0.36 - (package - (inherit rust-windows-i686-msvc-0.42) - (name "rust-windows-i686-msvc") - (version "0.36.1") - (source (origin - (inherit (package-source rust-windows-i686-msvc-0.42)) - (method url-fetch) - (uri (crate-uri "windows_i686_msvc" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "097h2a7wig04wbmpi3rz1akdy4s8gslj5szsx8g2v0dj91qr3rz2")))))) - -(define-public rust-windows-i686-msvc-0.32 - (package - (inherit rust-windows-i686-msvc-0.36) - (name "rust-windows-i686-msvc") - (version "0.32.0") - (source (origin - (inherit (package-source rust-windows-i686-msvc-0.36)) - (method url-fetch) - (uri (crate-uri "windows_i686_msvc" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0wj1wi01fc8hrasbakjcq8y5a7ynw9l2mcw08svmsq823axi2v0l")))))) - -(define-public rust-windows-i686-msvc-0.28 - (package - (inherit rust-windows-i686-msvc-0.32) - (name "rust-windows-i686-msvc") - (version "0.28.0") - (source (origin - (inherit (package-source rust-windows-i686-msvc-0.32)) - (method url-fetch) - (uri (crate-uri "windows_i686_msvc" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0r0z8s1wcdwd20azsdfilf2a6bz68xkavl990wy64hyc8f51bmai")))))) - -(define-public rust-windows-implement-0.48 - (package - (name "rust-windows-implement") - (version "0.48.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "windows-implement" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1764n853zd7bb0wn94i0qxfs6kdy7wrz7v9qhdn7x7hvk64fabjy")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-proc-macro2" ,rust-proc-macro2-1) - ("rust-quote" ,rust-quote-1) - ("rust-syn" ,rust-syn-1)))) - (home-page "https://github.com/microsoft/windows-rs") - (synopsis "The implement macro for the windows crate") - (description "This package provides the @code{implement} macro for the -windows crate.") - (license (list license:expat license:asl2.0)))) - -(define-public rust-windows-implement-0.46 - (package - (inherit rust-windows-implement-0.48) - (name "rust-windows-implement") - (version "0.46.0") - (source (origin - (method url-fetch) - (uri (crate-uri "windows-implement" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "09kw706qcms5yy34lf714zspj34v8jirfxv7yycavpcsa9czpd69")))) - (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-proc-macro2" ,rust-proc-macro2-1) - ("rust-quote" ,rust-quote-1) - ("rust-syn" ,rust-syn-1)))))) - -(define-public rust-windows-implement-0.44 - (package - (inherit rust-windows-implement-0.48) - (name "rust-windows-implement") - (version "0.44.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "windows-implement" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1ij5q9khlcfn43a1p3ypjbn711k50s9pc8la5bf04ys1wfl7rs3c")))) - (arguments - `(#:cargo-inputs - (("rust-proc-macro2" ,rust-proc-macro2-1) - ("rust-quote" ,rust-quote-1) - ("rust-syn" ,rust-syn-1)))))) - -(define-public rust-windows-implement-0.39 - (package - (inherit rust-windows-implement-0.46) - (name "rust-windows-implement") - (version "0.39.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "windows-implement" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1ryfy5sgf26xmflf33zabzqn10pp6pjrbz75yh2xrdcwa27zj0ds")))) - (arguments - `(#:cargo-inputs (("rust-syn" ,rust-syn-1) - ("rust-windows-tokens" ,rust-windows-tokens-0.39)))))) - -(define-public rust-windows-implement-0.32 - (package - (inherit rust-windows-implement-0.46) - (name "rust-windows-implement") - (version "0.32.0") - (source (origin - (method url-fetch) - (uri (crate-uri "windows-implement" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0f3lnjs9rlihin9cjf9y7np1x15c0v09v0cwlw1n7c30145xmciz")))) - (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-syn" ,rust-syn-1) - ("rust-windows-tokens" ,rust-windows-tokens-0.32)))))) - -(define-public rust-windows-interface-0.48 - (package - (name "rust-windows-interface") - (version "0.48.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "windows-interface" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1iqcilw0hfyzwhk12xfmcy40r10406sgf4xmdansijlv1kr8vyz6")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-proc-macro2" ,rust-proc-macro2-1) - ("rust-quote" ,rust-quote-1) - ("rust-syn" ,rust-syn-1)))) - (home-page "https://github.com/microsoft/windows-rs") - (synopsis "The interface macro for the windows crate") - (description "This package provides the interface macro for the windows -crate.") - (license (list license:expat license:asl2.0)))) - -(define-public rust-windows-interface-0.46 - (package - (inherit rust-windows-interface-0.48) - (name "rust-windows-interface") - (version "0.46.0") - (source (origin - (method url-fetch) - (uri (crate-uri "windows-interface" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0a87zxh3wq5ng1vvgqf7jhydsshrpc5w39pyvr0l1vyv3q5k67xc")))) - (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-proc-macro2" ,rust-proc-macro2-1) - ("rust-quote" ,rust-quote-1) - ("rust-syn" ,rust-syn-1)))))) - -(define-public rust-windows-interface-0.44 - (package - (inherit rust-windows-interface-0.48) - (name "rust-windows-interface") - (version "0.44.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "windows-interface" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0zwwwfzjdf087gvgy48bbfq9yd0fsh1fj5wzs88gim7cj6jnjgw5")))) - (arguments - `(#:cargo-inputs - (("rust-proc-macro2" ,rust-proc-macro2-1) - ("rust-quote" ,rust-quote-1) - ("rust-syn" ,rust-syn-1)))))) - -(define-public rust-windows-interface-0.39 - (package - (inherit rust-windows-interface-0.46) - (name "rust-windows-interface") - (version "0.39.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "windows-interface" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "00h56znmak3p8bh28y3s48m5zv6q7dn40vnvf3dzf0sz5rszrym2")))))) - -(define-public rust-windows-metadata-0.51 - (package - (name "rust-windows-metadata") - (version "0.51.1") - (source - (origin - (method url-fetch) - (uri (crate-uri "windows-metadata" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "03h0c6qs1yyl0z69p4k1hdq636j868qdxnri1dy47nprjvckacbm")))) - (build-system cargo-build-system) - (home-page "https://github.com/microsoft/windows-rs") - (synopsis "Windows metadata reader") - (description "Windows metadata reader.") - (license (list license:expat license:asl2.0)))) - -(define-public rust-windows-sys-0.52 - (package - (name "rust-windows-sys") - (version "0.52.0") - (source (origin - (method url-fetch) - (uri (crate-uri "windows-sys" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0gd3v4ji88490zgb6b5mq5zgbvwv7zx1ibn8v3x83rwcdbryaar8")))) - (build-system cargo-build-system) - (arguments - `(#:skip-build? #t - #:cargo-inputs (("rust-windows-targets" ,rust-windows-targets-0.52)))) - (home-page "https://github.com/microsoft/windows-rs") - (synopsis "Rust for Windows") - (description "The windows crate lets you call any Windows API past, -present, and future using code generated on the fly directly from the metadata -describing the API and right into your Rust package where you can call them as -if they were just another Rust module.") - (license (list license:expat license:asl2.0)))) - -(define-public rust-windows-sys-0.48 - (package - (inherit rust-windows-sys-0.52) - (name "rust-windows-sys") - (version "0.48.0") - (source (origin - (method url-fetch) - (uri (crate-uri "windows-sys" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1aan23v5gs7gya1lc46hqn9mdh8yph3fhxmhxlw36pn6pqc28zb7")))) - (arguments - `(#:skip-build? #t - #:cargo-inputs (("rust-windows-targets" ,rust-windows-targets-0.48)))))) - -(define-public rust-windows-sys-0.45 - (package - (inherit rust-windows-sys-0.48) - (name "rust-windows-sys") - (version "0.45.0") - (source (origin - (method url-fetch) - (uri (crate-uri "windows-sys" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1l36bcqm4g89pknfp8r9rl1w4bn017q6a8qlx8viv0xjxzjkna3m")))) - (arguments - (list #:skip-build? #t - #:cargo-inputs - `(("rust-windows-targets" ,rust-windows-targets-0.42)))))) - -(define-public rust-windows-sys-0.42 - (package - (inherit rust-windows-sys-0.45) - (name "rust-windows-sys") - (version "0.42.0") - (source (origin - (method url-fetch) - (uri (crate-uri "windows-sys" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "19waf8aryvyq9pzk0gamgfwjycgzk4gnrazpfvv171cby0h1hgjs")))) - (arguments - (list #:skip-build? #t - #:cargo-inputs - `(("rust-windows-aarch64-gnullvm" ,rust-windows-aarch64-gnullvm-0.42) - ("rust-windows-aarch64-msvc" ,rust-windows-aarch64-msvc-0.42) - ("rust-windows-i686-gnu" ,rust-windows-i686-gnu-0.42) - ("rust-windows-i686-msvc" ,rust-windows-i686-msvc-0.42) - ("rust-windows-x86-64-gnu" ,rust-windows-x86-64-gnu-0.42) - ("rust-windows-x86-64-gnullvm" ,rust-windows-x86-64-gnullvm-0.42) - ("rust-windows-x86-64-msvc" ,rust-windows-x86-64-msvc-0.42)))))) - -(define-public rust-windows-sys-0.36 - (package - (inherit rust-windows-sys-0.42) - (name "rust-windows-sys") - (version "0.36.1") - (source (origin - (method url-fetch) - (uri (crate-uri "windows-sys" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1lmqangv0zg1l46xiq7rfnqwsx8f8m52mqbgg2mrx7x52rd1a17a")))) - (arguments - (list #:skip-build? #t - #:cargo-inputs - `(("rust-windows-aarch64-msvc" ,rust-windows-aarch64-msvc-0.36) - ("rust-windows-i686-gnu" ,rust-windows-i686-gnu-0.36) - ("rust-windows-i686-msvc" ,rust-windows-i686-msvc-0.36) - ("rust-windows-x86-64-gnu" ,rust-windows-x86-64-gnu-0.36) - ("rust-windows-x86-64-msvc" ,rust-windows-x86-64-msvc-0.36)))))) - -(define-public rust-windows-sys-0.28 - (package - (inherit rust-windows-sys-0.36) - (name "rust-windows-sys") - (version "0.28.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "windows-sys" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1xkghf343nll9i1yvha1a4spf53mnb5knzmnqj9adgsw5mh3kjl2")))) - (arguments - (list #:skip-build? #t - #:cargo-inputs - `(("rust-windows-aarch64-msvc" ,rust-windows-aarch64-msvc-0.28) - ("rust-windows-i686-gnu" ,rust-windows-i686-gnu-0.28) - ("rust-windows-i686-msvc" ,rust-windows-i686-msvc-0.28) - ("rust-windows-x86-64-gnu" ,rust-windows-x86-64-gnu-0.28) - ("rust-windows-x86-64-msvc" ,rust-windows-x86-64-msvc-0.28)))))) - -(define-public rust-windows-gen-0.9 - (package - (name "rust-windows-gen") - (version "0.9.1") - (source - (origin - (method url-fetch) - (uri (crate-uri "windows_gen" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0lh492px26rrna0harikyy4p7nk520pw2lv0dczp4n2xa6y4s5al")))) - (build-system cargo-build-system) - (arguments `(#:skip-build? #t #:cargo-inputs (("rust-syn" ,rust-syn-1)))) - (home-page "https://github.com/microsoft/windows-rs") - (synopsis "Code gen support for the windows crate") - (description "Code gen support for the windows crate") - (license (list license:expat license:asl2.0)))) - -(define-public rust-windows-macros-0.9 - (package - (name "rust-windows-macros") - (version "0.9.1") - (source - (origin - (method url-fetch) - (uri (crate-uri "windows_macros" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0xivsg3lf023hs83xiab2k40fmrl11nbihcdrdkc8pc4ab398xqg")))) - (build-system cargo-build-system) - (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-syn" ,rust-syn-1) ("rust-windows-gen" ,rust-windows-gen-0.9)))) - (home-page "https://github.com/microsoft/windows-rs") - (synopsis "Macros for the windows crate") - (description "Macros for the windows crate") - (license (list license:expat license:asl2.0)))) - -(define-public rust-windows-targets-0.52 - (package - (name "rust-windows-targets") - (version "0.52.0") - (source (origin - (method url-fetch) - (uri (crate-uri "windows-targets" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1kg7a27ynzw8zz3krdgy6w5gbqcji27j1sz4p7xk2j5j8082064a")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-windows-aarch64-gnullvm" ,rust-windows-aarch64-gnullvm-0.52) - ("rust-windows-aarch64-msvc" ,rust-windows-aarch64-msvc-0.52) - ("rust-windows-i686-gnu" ,rust-windows-i686-gnu-0.52) - ("rust-windows-i686-msvc" ,rust-windows-i686-msvc-0.52) - ("rust-windows-x86-64-gnu" ,rust-windows-x86-64-gnu-0.52) - ("rust-windows-x86-64-gnullvm" ,rust-windows-x86-64-gnullvm-0.52) - ("rust-windows-x86-64-msvc" ,rust-windows-x86-64-msvc-0.52)))) - (home-page "https://github.com/microsoft/windows-rs") - (synopsis "Code gen support for the windows crate") - (description - "This package provides code gen support for the windows crate.") - (license (list license:expat license:asl2.0)))) - -(define-public rust-windows-targets-0.48 - (package - (inherit rust-windows-targets-0.52) - (name "rust-windows-targets") - (version "0.48.0") - (source (origin - (method url-fetch) - (uri (crate-uri "windows-targets" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1mfzg94w0c8h4ya9sva7rra77f3iy1712af9b6bwg03wrpqbc7kv")))) - (arguments - `(#:cargo-inputs - (("rust-windows-aarch64-gnullvm" ,rust-windows-aarch64-gnullvm-0.48) - ("rust-windows-aarch64-msvc" ,rust-windows-aarch64-msvc-0.48) - ("rust-windows-i686-gnu" ,rust-windows-i686-gnu-0.48) - ("rust-windows-i686-msvc" ,rust-windows-i686-msvc-0.48) - ("rust-windows-x86-64-gnu" ,rust-windows-x86-64-gnu-0.48) - ("rust-windows-x86-64-gnullvm" ,rust-windows-x86-64-gnullvm-0.48) - ("rust-windows-x86-64-msvc" ,rust-windows-x86-64-msvc-0.48)))))) - -(define-public rust-windows-targets-0.42 - (package - (inherit rust-windows-targets-0.48) - (name "rust-windows-targets") - (version "0.42.2") - (source (origin - (method url-fetch) - (uri (crate-uri "windows-targets" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0wfhnib2fisxlx8c507dbmh97kgij4r6kcxdi0f9nk6l1k080lcf")))) - (arguments - `(#:cargo-inputs - (("rust-windows-aarch64-gnullvm" ,rust-windows-aarch64-gnullvm-0.42) - ("rust-windows-aarch64-msvc" ,rust-windows-aarch64-msvc-0.42) - ("rust-windows-i686-gnu" ,rust-windows-i686-gnu-0.42) - ("rust-windows-i686-msvc" ,rust-windows-i686-msvc-0.42) - ("rust-windows-x86-64-gnu" ,rust-windows-x86-64-gnu-0.42) - ("rust-windows-x86-64-gnullvm" ,rust-windows-x86-64-gnullvm-0.42) - ("rust-windows-x86-64-msvc" ,rust-windows-x86-64-msvc-0.42)))))) - -(define-public rust-windows-tokens-0.39 - (package - (name "rust-windows-tokens") - (version "0.39.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "windows-tokens" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "15zmsz8ji6z7471xwznrm4hqp6j94s7pjjz7i34vmrjzw4pxwf7q")))) - (build-system cargo-build-system) - (arguments - `(#:skip-build? #t)) - (home-page "https://github.com/microsoft/windows-rs") - (synopsis "Code gen support for the windows crate") - (description "This package provides code generation support for the -windows crate.") - (license (list license:expat license:asl2.0)))) - -(define-public rust-windows-tokens-0.32 - (package - (inherit rust-windows-tokens-0.39) - (name "rust-windows-tokens") - (version "0.32.0") - (source (origin - (method url-fetch) - (uri (crate-uri "windows-tokens" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1rrqbxjkyk6h6p6jjzbcxr0mhqbz0yfndd2s2dsgmbl75f4yy7gn")))))) - -(define-public rust-windows-x86-64-gnu-0.52 - (package - (name "rust-windows-x86-64-gnu") - (version "0.52.0") - (source (origin - (method url-fetch) - (uri (crate-uri "windows_x86_64_gnu" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1zdy4qn178sil5sdm63lm7f0kkcjg6gvdwmcprd2yjmwn8ns6vrx")) - (snippet - '(delete-file "lib/libwindows.0.52.0.a")))) - (build-system cargo-build-system) - (arguments (list #:skip-build? #t)) - (home-page "https://github.com/microsoft/windows-rs") - (synopsis "Code gen support for the windows crate") - (description - "This package provides code gen support for the windows crate.") - (license (list license:expat license:asl2.0)))) - -(define-public rust-windows-x86-64-gnu-0.48 - (package - (inherit rust-windows-x86-64-gnu-0.52) - (name "rust-windows-x86-64-gnu") - (version "0.48.0") - (source (origin - (method url-fetch) - (uri (crate-uri "windows_x86_64_gnu" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1cblz5m6a8q6ha09bz4lz233dnq5sw2hpra06k9cna3n3xk8laya")) - (snippet - #~(delete-file "lib/libwindows.0.48.0.a")))) - (arguments (list #:skip-build? #t)))) - -(define-public rust-windows-x86-64-gnu-0.42 - (package - (inherit rust-windows-x86-64-gnu-0.48) - (name "rust-windows-x86-64-gnu") - (version "0.42.2") - (source (origin - (method url-fetch) - (uri (crate-uri "windows_x86_64_gnu" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0dnbf2xnp3xrvy8v9mgs3var4zq9v9yh9kv79035rdgyp2w15scd")) - (snippet - #~(delete-file "lib/libwindows.a")))) - (arguments - (list #:skip-build? #t)))) - -(define-public rust-windows-x86-64-gnu-0.39 - (package - (inherit rust-windows-x86-64-gnu-0.42) - (name "rust-windows-x86-64-gnu") - (version "0.39.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "windows_x86_64_gnu" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0r9b4lmapq66nn2dga7a0mkdv5sgbp184kfwx3hklrbxcdjw2s38")) - (snippet - #~(delete-file "lib/libwindows.a")))))) - -(define-public rust-windows-x86-64-gnu-0.36 - (package - (inherit rust-windows-x86-64-gnu-0.42) - (name "rust-windows-x86-64-gnu") - (version "0.36.1") - (source (origin - (inherit (package-source rust-windows-x86-64-gnu-0.42)) - (method url-fetch) - (uri (crate-uri "windows_x86_64_gnu" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1qfrck3jnihymfrd01s8260d4snql8ks2p8yaabipi3nhwdigkad")))))) - -(define-public rust-windows-x86-64-gnu-0.32 - (package - (inherit rust-windows-x86-64-gnu-0.36) - (name "rust-windows-x86-64-gnu") - (version "0.32.0") - (source (origin - (inherit (package-source rust-windows-x86-64-gnu-0.36)) - (method url-fetch) - (uri (crate-uri "windows_x86_64_gnu" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1g34xhcayig9sndq3555w95q6lr7jr839zxv6l365ijlfhpv24n9")))))) - -(define-public rust-windows-x86-64-gnu-0.28 - (package - (inherit rust-windows-x86-64-gnu-0.32) - (name "rust-windows-x86-64-gnu") - (version "0.28.0") - (source (origin - (inherit (package-source rust-windows-x86-64-gnu-0.32)) - (method url-fetch) - (uri (crate-uri "windows_x86_64_gnu" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0m79bhdr54g4h4wh2q8wkjlkypb5wvl7xzhc2csiaqb5yl4z8cdw")))))) - -(define-public rust-windows-x86-64-gnullvm-0.52 - (package - (name "rust-windows-x86-64-gnullvm") - (version "0.52.0") - (source (origin - (method url-fetch) - (uri (crate-uri "windows_x86_64_gnullvm" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "17lllq4l2k1lqgcnw1cccphxp9vs7inq99kjlm2lfl9zklg7wr8s")) - (snippet - '(delete-file "lib/libwindows.0.52.0.a")))) - (build-system cargo-build-system) - (arguments (list #:skip-build? #t)) - (home-page "https://github.com/microsoft/windows-rs") - (synopsis "Code gen support for the windows crate") - (description - "This package provides code gen support for the windows crate.") - (license (list license:expat license:asl2.0)))) - -(define-public rust-windows-x86-64-gnullvm-0.48 - (package - (inherit rust-windows-x86-64-gnullvm-0.52) - (name "rust-windows-x86-64-gnullvm") - (version "0.48.0") - (source (origin - (method url-fetch) - (uri (crate-uri "windows_x86_64_gnullvm" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0lxryz3ysx0145bf3i38jkr7f9nxiym8p3syklp8f20yyk0xp5kq")) - (snippet - '(delete-file "lib/libwindows.0.48.0.a")))) - (arguments (list #:skip-build? #t)))) - -(define-public rust-windows-x86-64-gnullvm-0.42 - (package - (inherit rust-windows-x86-64-gnullvm-0.48) - (name "rust-windows-x86-64-gnullvm") - (version "0.42.2") - (source (origin - (method url-fetch) - (uri (crate-uri "windows_x86_64_gnullvm" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "18wl9r8qbsl475j39zvawlidp1bsbinliwfymr43fibdld31pm16")) - (snippet - '(delete-file "lib/libwindows.a")))) - (arguments (list #:skip-build? #t)))) - -(define-public rust-windows-x86-64-msvc-0.52 - (package - (name "rust-windows-x86-64-msvc") - (version "0.52.0") - (source (origin - (method url-fetch) - (uri (crate-uri "windows_x86_64_msvc" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "012wfq37f18c09ij5m6rniw7xxn5fcvrxbqd0wd8vgnl3hfn9yfz")) - (snippet - '(delete-file "lib/windows.0.52.0.lib")))) - (build-system cargo-build-system) - (arguments (list #:skip-build? #t)) - (home-page "https://github.com/microsoft/windows-rs") - (synopsis "Code gen support for the windows crate") - (description - "This package provides code gen support for the windows crate.") - (license (list license:expat license:asl2.0)))) - -(define-public rust-windows-x86-64-msvc-0.48 - (package - (inherit rust-windows-x86-64-msvc-0.52) - (name "rust-windows-x86-64-msvc") - (version "0.48.0") - (source (origin - (method url-fetch) - (uri (crate-uri "windows_x86_64_msvc" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "12ipr1knzj2rwjygyllfi5mkd0ihnbi3r61gag5n2jgyk5bmyl8s")) - (snippet - #~(delete-file "lib/windows.0.48.0.lib")))) - (arguments (list #:skip-build? #t)))) - -(define-public rust-windows-x86-64-msvc-0.42 - (package - (inherit rust-windows-x86-64-msvc-0.48) - (name "rust-windows-x86-64-msvc") - (version "0.42.2") - (source (origin - (method url-fetch) - (uri (crate-uri "windows_x86_64_msvc" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1w5r0q0yzx827d10dpjza2ww0j8iajqhmb54s735hhaj66imvv4s")) - (snippet - #~(delete-file "lib/windows.lib")))) - (arguments (list #:skip-build? #t)))) - -(define-public rust-windows-x86-64-msvc-0.39 - (package - (inherit rust-windows-x86-64-msvc-0.42) - (name "rust-windows-x86-64-msvc") - (version "0.39.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "windows_x86_64_msvc" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "02g8fy1sv8g0p4fi2yk62j9a5zwhcfknp9vwg1ifkjp97a440kay")) - (snippet - #~(delete-file "lib/windows.lib")))))) - -(define-public rust-windows-x86-64-msvc-0.36 - (package - (inherit rust-windows-x86-64-msvc-0.42) - (name "rust-windows-x86-64-msvc") - (version "0.36.1") - (source (origin - (inherit (package-source rust-windows-x86-64-msvc-0.42)) - (method url-fetch) - (uri (crate-uri "windows_x86_64_msvc" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "103n3xijm5vr7qxr1dps202ckfnv7njjnnfqmchg8gl5ii5cl4f8")))))) - -(define-public rust-windows-x86-64-msvc-0.32 - (package - (inherit rust-windows-x86-64-msvc-0.36) - (name "rust-windows-x86-64-msvc") - (version "0.32.0") - (source (origin - (inherit (package-source rust-windows-x86-64-msvc-0.36)) - (method url-fetch) - (uri (crate-uri "windows_x86_64_msvc" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "05l392h518dxn808dc1zkv6d0r9z38q68qqc0ix9fs9741v28jjh")))))) - -(define-public rust-windows-x86-64-msvc-0.28 - (package - (inherit rust-windows-x86-64-msvc-0.32) - (name "rust-windows-x86-64-msvc") - (version "0.28.0") - (source (origin - (inherit (package-source rust-windows-x86-64-msvc-0.32)) - (method url-fetch) - (uri (crate-uri "windows_x86_64_msvc" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "17z8q25pd3dp6b84qm9nlayd3ym78sbryxlqmgcxvz9vpmy8qarz")))))) - (define-public rust-winnow-0.5 (package (name "rust-winnow") diff --git a/gnu/packages/crates-vcs.scm b/gnu/packages/crates-vcs.scm index beaca6aba9..8edc31f6da 100644 --- a/gnu/packages/crates-vcs.scm +++ b/gnu/packages/crates-vcs.scm @@ -32,6 +32,7 @@ (define-module (gnu packages crates-vcs) #:use-module (gnu packages) #:use-module (gnu packages compression) #:use-module (gnu packages crates-io) + #:use-module (gnu packages crates-windows) #:use-module (gnu packages curl) #:use-module (gnu packages llvm) #:use-module (gnu packages nettle) diff --git a/gnu/packages/crates-windows.scm b/gnu/packages/crates-windows.scm new file mode 100644 index 0000000000..279f11af7f --- /dev/null +++ b/gnu/packages/crates-windows.scm @@ -0,0 +1,1286 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2021 Nicolas Goaziou +;;; Copyright © 2022 Zheng Junjie <873216071@qq.com> +;;; Copyright © 2022 ( +;;; Copyright © 2022, 2023 Ricardo Wurmus +;;; Copyright © 2023 Efraim Flashner +;;; Copyright © 2023 Jaeme Sifat +;;; Copyright © 2023 Daniel Ziltener +;;; +;;; 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 . + +(define-module (gnu packages crates-windows) + #:use-module (guix build-system cargo) + #:use-module (guix download) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix gexp) + #:use-module (guix utils) + #:use-module (gnu packages) + #:use-module (gnu packages crates-io)) + +(define-public rust-windows-0.48 + (package + (name "rust-windows") + (version "0.48.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "windows" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "03vh89ilnxdxdh0n9np4ns4m10fvm93h3b0cc05ipg3qq1mqi1p6")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-windows-implement" ,rust-windows-implement-0.48) + ("rust-windows-interface" ,rust-windows-interface-0.48) + ("rust-windows-targets" ,rust-windows-targets-0.48)))) + (home-page "https://github.com/microsoft/windows-rs") + (synopsis "Rust for Windows") + (description "The windows crate lets you call any Windows API past, +present, and future using code generated on the fly directly from the metadata +describing the API and right into your Rust package where you can call them as +if they were just another Rust module.") + (license (list license:expat license:asl2.0)))) + +(define-public rust-windows-0.46 + (package + (inherit rust-windows-0.48) + (name "rust-windows") + (version "0.46.0") + (source (origin + (method url-fetch) + (uri (crate-uri "windows" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "098crdz9gxgy3614ygznqqhn28q097r498b3rg35584nd8gb9b6d")))) + (arguments + `(#:cargo-inputs + (("rust-windows-implement" ,rust-windows-implement-0.46) + ("rust-windows-interface" ,rust-windows-interface-0.46) + ("rust-windows-targets" ,rust-windows-targets-0.42)))))) + +(define-public rust-windows-0.44 + (package + (inherit rust-windows-0.48) + (name "rust-windows") + (version "0.44.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "windows" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0ax1ip82dhszxz4hhsrdj3b0681xw6axahnfldxcgi506nmmsx4y")))) + (arguments + `(#:tests? #f ; Test suite only runs on Windows. + #:cargo-inputs + (("rust-windows-implement" ,rust-windows-implement-0.44) + ("rust-windows-interface" ,rust-windows-interface-0.44) + ("rust-windows-targets" ,rust-windows-targets-0.42)))))) + +(define-public rust-windows-0.39 + (package + (inherit rust-windows-0.46) + (name "rust-windows") + (version "0.39.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "windows" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0jkr4rxj6jn7brqxycr1pjgvnixsimsiywl4a7v20q5ca05bvi7i")))) + (arguments + `(#:cargo-inputs (("rust-windows-implement" ,rust-windows-implement-0.39) + ("rust-windows-interface" ,rust-windows-interface-0.39) + ("rust-windows-aarch64-msvc" ,rust-windows-aarch64-msvc-0.39) + ("rust-windows-i686-gnu" ,rust-windows-i686-gnu-0.39) + ("rust-windows-i686-msvc" ,rust-windows-i686-msvc-0.39) + ("rust-windows-x86-64-gnu" ,rust-windows-x86-64-gnu-0.39) + ("rust-windows-x86-64-msvc" ,rust-windows-x86-64-msvc-0.39)))))) + +(define-public rust-windows-0.32 + (package + (inherit rust-windows-0.46) + (name "rust-windows") + (version "0.32.0") + (source (origin + (method url-fetch) + (uri (crate-uri "windows" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1v0h5b5g1ak2f2a6gkgjqgrqkkbdcfmf02nfmmj27g4nj3dzdvgv")))) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-windows-implement" ,rust-windows-implement-0.32) + ("rust-windows-aarch64-msvc" ,rust-windows-aarch64-msvc-0.32) + ("rust-windows-i686-gnu" ,rust-windows-i686-gnu-0.32) + ("rust-windows-i686-msvc" ,rust-windows-i686-msvc-0.32) + ("rust-windows-x86-64-gnu" ,rust-windows-x86-64-gnu-0.32) + ("rust-windows-x86-64-msvc" ,rust-windows-x86-64-msvc-0.32)))))) + +(define-public rust-windows-0.9 + (package + (inherit rust-windows-0.46) + (name "rust-windows") + (version "0.9.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "windows" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0zy9jmhkhmsng7l9qiznxpdh5ns303s875p5kf6a5q9ym0rka7rn")))) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-const-sha1" ,rust-const-sha1-0.2) + ("rust-windows-gen" ,rust-windows-gen-0.9) + ("rust-windows-macros" ,rust-windows-macros-0.9)))))) + +(define-public rust-windows-aarch64-gnullvm-0.52 + (package + (name "rust-windows-aarch64-gnullvm") + (version "0.52.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "windows_aarch64_gnullvm" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1shmn1kbdc0bpphcxz0vlph96bxz0h1jlmh93s9agf2dbpin8xyb")) + (snippet + '(delete-file "lib/libwindows.0.52.0.a")))) + (build-system cargo-build-system) + (arguments (list #:skip-build? #t)) + (home-page "https://github.com/microsoft/windows-rs") + (synopsis "Code gen support for the windows crate") + (description + "This package provides code gen support for the windows crate.") + (license (list license:expat license:asl2.0)))) + +(define-public rust-windows-aarch64-gnullvm-0.48 + (package + (inherit rust-windows-aarch64-gnullvm-0.52) + (name "rust-windows-aarch64-gnullvm") + (version "0.48.0") + (source (origin + (method url-fetch) + (uri (crate-uri "windows_aarch64_gnullvm" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1g71yxi61c410pwzq05ld7si4p9hyx6lf5fkw21sinvr3cp5gbli")) + (snippet + '(delete-file "lib/libwindows.0.48.0.a")))) + (arguments (list #:skip-build? #t)))) + +(define-public rust-windows-aarch64-gnullvm-0.42 + (package + (inherit rust-windows-aarch64-gnullvm-0.48) + (name "rust-windows-aarch64-gnullvm") + (version "0.42.2") + (source (origin + (method url-fetch) + (uri (crate-uri "windows_aarch64_gnullvm" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1y4q0qmvl0lvp7syxvfykafvmwal5hrjb4fmv04bqs0bawc52yjr")) + (snippet + '(delete-file "lib/libwindows.a")))) + (arguments + (list #:skip-build? #t)))) + +(define-public rust-windows-aarch64-msvc-0.52 + (package + (name "rust-windows-aarch64-msvc") + (version "0.52.0") + (source (origin + (method url-fetch) + (uri (crate-uri "windows_aarch64_msvc" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1vvmy1ypvzdvxn9yf0b8ygfl85gl2gpcyvsvqppsmlpisil07amv")) + (snippet + '(delete-file "lib/windows.0.52.0.lib")))) + (build-system cargo-build-system) + (arguments (list #:skip-build? #t)) + (home-page "https://github.com/microsoft/windows-rs") + (synopsis "Code gen support for the windows crate") + (description "This package provides code gen support for the windows +crate.") + (license (list license:expat license:asl2.0)))) + +(define-public rust-windows-aarch64-msvc-0.48 + (package + (inherit rust-windows-aarch64-msvc-0.52) + (name "rust-windows-aarch64-msvc") + (version "0.48.0") + (source (origin + (method url-fetch) + (uri (crate-uri "windows_aarch64_msvc" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1wvwipchhywcjaw73h998vzachf668fpqccbhrxzrz5xszh2gvxj")) + (snippet + #~(delete-file "lib/windows.0.48.0.lib")))) + (arguments (list #:skip-build? #t)))) + +(define-public rust-windows-aarch64-msvc-0.42 + (package + (inherit rust-windows-aarch64-msvc-0.48) + (name "rust-windows-aarch64-msvc") + (version "0.42.2") + (source (origin + (method url-fetch) + (uri (crate-uri "windows_aarch64_msvc" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0hsdikjl5sa1fva5qskpwlxzpc5q9l909fpl1w6yy1hglrj8i3p0")) + (snippet + #~(delete-file "lib/windows.lib")))) + (arguments + (list #:skip-build? #t)))) + +(define-public rust-windows-aarch64-msvc-0.39 + (package + (inherit rust-windows-aarch64-msvc-0.42) + (name "rust-windows-aarch64-msvc") + (version "0.39.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "windows_aarch64_msvc" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1wj0nfmyli4bn5af243r4s3zncxv0n4j6dd8zyb41gcnc1k12xzc")) + (snippet + #~(delete-file "lib/windows.lib")))))) + +(define-public rust-windows-aarch64-msvc-0.36 + (package + (inherit rust-windows-aarch64-msvc-0.42) + (name "rust-windows-aarch64-msvc") + (version "0.36.1") + (source + (origin + (inherit (package-source rust-windows-aarch64-msvc-0.42)) + (method url-fetch) + (uri (crate-uri "windows_aarch64_msvc" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0ixaxs2c37ll2smprzh0xq5p238zn8ylzb3lk1zddqmd77yw7f4v")))))) + +(define-public rust-windows-aarch64-msvc-0.32 + (package + (inherit rust-windows-aarch64-msvc-0.36) + (name "rust-windows-aarch64-msvc") + (version "0.32.0") + (source (origin + (inherit (package-source rust-windows-aarch64-msvc-0.36)) + (method url-fetch) + (uri (crate-uri "windows_aarch64_msvc" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1x8bnafz15ksgpbjbgk1l1j2jx4rq4a2ylzcahb1jhy4n59jgsfq")))))) + +(define-public rust-windows-aarch64-msvc-0.28 + (package + (inherit rust-windows-aarch64-msvc-0.32) + (name "rust-windows-aarch64-msvc") + (version "0.28.0") + (source (origin + (inherit (package-source rust-windows-aarch64-msvc-0.32)) + (method url-fetch) + (uri (crate-uri "windows_aarch64_msvc" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1hpk0n2z0jzzvwlvs98b75sa4q920953nqfc119rv19nwm0mlsaj")))))) + +(define-public rust-windows-bindgen-0.51 + (package + (name "rust-windows-bindgen") + (version "0.51.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "windows-bindgen" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0xfdq4q958qal5iks8xkaanf7w3akzfxc58dxvz7amhjg2vic7xw")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs (("rust-proc-macro2" ,rust-proc-macro2-1) + ("rust-rayon" ,rust-rayon-1) + ("rust-syn" ,rust-syn-2) + ("rust-windows-metadata" ,rust-windows-metadata-0.51)))) + (home-page "https://github.com/microsoft/windows-rs") + (synopsis "Windows metadata compiler") + (description "Windows metadata compiler.") + (license (list license:expat license:asl2.0)))) + +(define-public rust-windows-i686-gnu-0.52 + (package + (name "rust-windows-i686-gnu") + (version "0.52.0") + (source (origin + (method url-fetch) + (uri (crate-uri "windows_i686_gnu" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "04zkglz4p3pjsns5gbz85v4s5aw102raz4spj4b0lmm33z5kg1m2")) + (snippet + '(delete-file "lib/libwindows.0.52.0.a")))) + (build-system cargo-build-system) + (arguments (list #:skip-build? #t)) + (home-page "https://github.com/microsoft/windows-rs") + (synopsis "Code gen support for the windows crate") + (description + "This package provides code gen support for the windows crate.") + (license (list license:expat license:asl2.0)))) + +(define-public rust-windows-i686-gnu-0.48 + (package + (inherit rust-windows-i686-gnu-0.52) + (name "rust-windows-i686-gnu") + (version "0.48.0") + (source (origin + (method url-fetch) + (uri (crate-uri "windows_i686_gnu" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0hd2v9kp8fss0rzl83wzhw0s5z8q1b4875m6s1phv0yvlxi1jak2")) + (snippet + #~(delete-file "lib/libwindows.0.48.0.a")))) + (arguments (list #:skip-build? #t)))) + +(define-public rust-windows-i686-gnu-0.42 + (package + (inherit rust-windows-i686-gnu-0.48) + (name "rust-windows-i686-gnu") + (version "0.42.2") + (source (origin + (method url-fetch) + (uri (crate-uri "windows_i686_gnu" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0kx866dfrby88lqs9v1vgmrkk1z6af9lhaghh5maj7d4imyr47f6")) + (snippet + #~(delete-file "lib/libwindows.a")))) + (arguments + (list #:skip-build? #t)))) + +(define-public rust-windows-i686-gnu-0.39 + (package + (inherit rust-windows-i686-gnu-0.42) + (name "rust-windows-i686-gnu") + (version "0.39.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "windows_i686_gnu" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "06wynhxklmh3s1ril9bh00rhv1npppcyirsp60p09xx501qwagvn")) + (snippet + #~(delete-file "lib/libwindows.a")))))) + +(define-public rust-windows-i686-gnu-0.36 + (package + (inherit rust-windows-i686-gnu-0.42) + (name "rust-windows-i686-gnu") + (version "0.36.1") + (source (origin + (inherit (package-source rust-windows-i686-gnu-0.42)) + (method url-fetch) + (uri (crate-uri "windows_i686_gnu" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1dm3svxfzamrv6kklyda9c3qylgwn5nwdps6p0kc9x6s077nq3hq")))))) + +(define-public rust-windows-i686-gnu-0.32 + (package + (inherit rust-windows-i686-gnu-0.36) + (name "rust-windows-i686-gnu") + (version "0.32.0") + (source (origin + (inherit (package-source rust-windows-i686-gnu-0.36)) + (method url-fetch) + (uri (crate-uri "windows_i686_gnu" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "05g6kpdfxwxnw2gn1nrd7bsf5997rci0k3h3nqby168ph5l1qwba")))))) + +(define-public rust-windows-i686-gnu-0.28 + (package + (inherit rust-windows-i686-gnu-0.32) + (name "rust-windows-i686-gnu") + (version "0.28.0") + (source (origin + (inherit (package-source rust-windows-i686-gnu-0.32)) + (method url-fetch) + (uri (crate-uri "windows_i686_gnu" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "12hx7qpsjg9p7jggfcplqa3mf1mzr7k7s5ybzqwg1zmg4fn2aizm")))))) + +(define-public rust-windows-i686-msvc-0.52 + (package + (name "rust-windows-i686-msvc") + (version "0.52.0") + (source (origin + (method url-fetch) + (uri (crate-uri "windows_i686_msvc" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "16kvmbvx0vr0zbgnaz6nsks9ycvfh5xp05bjrhq65kj623iyirgz")) + (snippet + '(delete-file "lib/windows.0.52.0.lib")))) + (build-system cargo-build-system) + (arguments (list #:skip-build? #t)) + (home-page "https://github.com/microsoft/windows-rs") + (synopsis "Code gen support for the windows crate") + (description + "This package provides code gen support for the windows crate.") + (license (list license:expat license:asl2.0)))) + +(define-public rust-windows-i686-msvc-0.48 + (package + (inherit rust-windows-i686-msvc-0.52) + (name "rust-windows-i686-msvc") + (version "0.48.0") + (source (origin + (method url-fetch) + (uri (crate-uri "windows_i686_msvc" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "004fkyqv3if178xx9ksqc4qqv8sz8n72mpczsr2vy8ffckiwchj5")) + (snippet + #~(delete-file "lib/windows.0.48.0.lib")))) + (arguments (list #:skip-build? #t)))) + +(define-public rust-windows-i686-msvc-0.42 + (package + (inherit rust-windows-i686-msvc-0.48) + (name "rust-windows-i686-msvc") + (version "0.42.2") + (source (origin + (method url-fetch) + (uri (crate-uri "windows_i686_msvc" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0q0h9m2aq1pygc199pa5jgc952qhcnf0zn688454i7v4xjv41n24")) + (snippet + #~(delete-file "lib/windows.lib")))) + (arguments + (list #:skip-build? #t)))) + +(define-public rust-windows-i686-msvc-0.39 + (package + (inherit rust-windows-i686-msvc-0.42) + (name "rust-windows-i686-msvc") + (version "0.39.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "windows_i686_msvc" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "01hiv9msxssy5iqxs7bczvf094k4mz56yi4z1bhj32c2b3zcpivv")) + (snippet + #~(delete-file "lib/windows.lib")))))) + +(define-public rust-windows-i686-msvc-0.36 + (package + (inherit rust-windows-i686-msvc-0.42) + (name "rust-windows-i686-msvc") + (version "0.36.1") + (source (origin + (inherit (package-source rust-windows-i686-msvc-0.42)) + (method url-fetch) + (uri (crate-uri "windows_i686_msvc" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "097h2a7wig04wbmpi3rz1akdy4s8gslj5szsx8g2v0dj91qr3rz2")))))) + +(define-public rust-windows-i686-msvc-0.32 + (package + (inherit rust-windows-i686-msvc-0.36) + (name "rust-windows-i686-msvc") + (version "0.32.0") + (source (origin + (inherit (package-source rust-windows-i686-msvc-0.36)) + (method url-fetch) + (uri (crate-uri "windows_i686_msvc" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0wj1wi01fc8hrasbakjcq8y5a7ynw9l2mcw08svmsq823axi2v0l")))))) + +(define-public rust-windows-i686-msvc-0.28 + (package + (inherit rust-windows-i686-msvc-0.32) + (name "rust-windows-i686-msvc") + (version "0.28.0") + (source (origin + (inherit (package-source rust-windows-i686-msvc-0.32)) + (method url-fetch) + (uri (crate-uri "windows_i686_msvc" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0r0z8s1wcdwd20azsdfilf2a6bz68xkavl990wy64hyc8f51bmai")))))) + +(define-public rust-windows-implement-0.48 + (package + (name "rust-windows-implement") + (version "0.48.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "windows-implement" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1764n853zd7bb0wn94i0qxfs6kdy7wrz7v9qhdn7x7hvk64fabjy")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-proc-macro2" ,rust-proc-macro2-1) + ("rust-quote" ,rust-quote-1) + ("rust-syn" ,rust-syn-1)))) + (home-page "https://github.com/microsoft/windows-rs") + (synopsis "The implement macro for the windows crate") + (description "This package provides the @code{implement} macro for the +windows crate.") + (license (list license:expat license:asl2.0)))) + +(define-public rust-windows-implement-0.46 + (package + (inherit rust-windows-implement-0.48) + (name "rust-windows-implement") + (version "0.46.0") + (source (origin + (method url-fetch) + (uri (crate-uri "windows-implement" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "09kw706qcms5yy34lf714zspj34v8jirfxv7yycavpcsa9czpd69")))) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-proc-macro2" ,rust-proc-macro2-1) + ("rust-quote" ,rust-quote-1) + ("rust-syn" ,rust-syn-1)))))) + +(define-public rust-windows-implement-0.44 + (package + (inherit rust-windows-implement-0.48) + (name "rust-windows-implement") + (version "0.44.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "windows-implement" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1ij5q9khlcfn43a1p3ypjbn711k50s9pc8la5bf04ys1wfl7rs3c")))) + (arguments + `(#:cargo-inputs + (("rust-proc-macro2" ,rust-proc-macro2-1) + ("rust-quote" ,rust-quote-1) + ("rust-syn" ,rust-syn-1)))))) + +(define-public rust-windows-implement-0.39 + (package + (inherit rust-windows-implement-0.46) + (name "rust-windows-implement") + (version "0.39.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "windows-implement" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1ryfy5sgf26xmflf33zabzqn10pp6pjrbz75yh2xrdcwa27zj0ds")))) + (arguments + `(#:cargo-inputs (("rust-syn" ,rust-syn-1) + ("rust-windows-tokens" ,rust-windows-tokens-0.39)))))) + +(define-public rust-windows-implement-0.32 + (package + (inherit rust-windows-implement-0.46) + (name "rust-windows-implement") + (version "0.32.0") + (source (origin + (method url-fetch) + (uri (crate-uri "windows-implement" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0f3lnjs9rlihin9cjf9y7np1x15c0v09v0cwlw1n7c30145xmciz")))) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-syn" ,rust-syn-1) + ("rust-windows-tokens" ,rust-windows-tokens-0.32)))))) + +(define-public rust-windows-interface-0.48 + (package + (name "rust-windows-interface") + (version "0.48.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "windows-interface" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1iqcilw0hfyzwhk12xfmcy40r10406sgf4xmdansijlv1kr8vyz6")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-proc-macro2" ,rust-proc-macro2-1) + ("rust-quote" ,rust-quote-1) + ("rust-syn" ,rust-syn-1)))) + (home-page "https://github.com/microsoft/windows-rs") + (synopsis "The interface macro for the windows crate") + (description "This package provides the interface macro for the windows +crate.") + (license (list license:expat license:asl2.0)))) + +(define-public rust-windows-interface-0.46 + (package + (inherit rust-windows-interface-0.48) + (name "rust-windows-interface") + (version "0.46.0") + (source (origin + (method url-fetch) + (uri (crate-uri "windows-interface" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0a87zxh3wq5ng1vvgqf7jhydsshrpc5w39pyvr0l1vyv3q5k67xc")))) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-proc-macro2" ,rust-proc-macro2-1) + ("rust-quote" ,rust-quote-1) + ("rust-syn" ,rust-syn-1)))))) + +(define-public rust-windows-interface-0.44 + (package + (inherit rust-windows-interface-0.48) + (name "rust-windows-interface") + (version "0.44.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "windows-interface" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0zwwwfzjdf087gvgy48bbfq9yd0fsh1fj5wzs88gim7cj6jnjgw5")))) + (arguments + `(#:cargo-inputs + (("rust-proc-macro2" ,rust-proc-macro2-1) + ("rust-quote" ,rust-quote-1) + ("rust-syn" ,rust-syn-1)))))) + +(define-public rust-windows-interface-0.39 + (package + (inherit rust-windows-interface-0.46) + (name "rust-windows-interface") + (version "0.39.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "windows-interface" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "00h56znmak3p8bh28y3s48m5zv6q7dn40vnvf3dzf0sz5rszrym2")))))) + +(define-public rust-windows-metadata-0.51 + (package + (name "rust-windows-metadata") + (version "0.51.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "windows-metadata" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "03h0c6qs1yyl0z69p4k1hdq636j868qdxnri1dy47nprjvckacbm")))) + (build-system cargo-build-system) + (home-page "https://github.com/microsoft/windows-rs") + (synopsis "Windows metadata reader") + (description "Windows metadata reader.") + (license (list license:expat license:asl2.0)))) + +(define-public rust-windows-sys-0.52 + (package + (name "rust-windows-sys") + (version "0.52.0") + (source (origin + (method url-fetch) + (uri (crate-uri "windows-sys" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0gd3v4ji88490zgb6b5mq5zgbvwv7zx1ibn8v3x83rwcdbryaar8")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs (("rust-windows-targets" ,rust-windows-targets-0.52)))) + (home-page "https://github.com/microsoft/windows-rs") + (synopsis "Rust for Windows") + (description "The windows crate lets you call any Windows API past, +present, and future using code generated on the fly directly from the metadata +describing the API and right into your Rust package where you can call them as +if they were just another Rust module.") + (license (list license:expat license:asl2.0)))) + +(define-public rust-windows-sys-0.48 + (package + (inherit rust-windows-sys-0.52) + (name "rust-windows-sys") + (version "0.48.0") + (source (origin + (method url-fetch) + (uri (crate-uri "windows-sys" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1aan23v5gs7gya1lc46hqn9mdh8yph3fhxmhxlw36pn6pqc28zb7")))) + (arguments + `(#:skip-build? #t + #:cargo-inputs (("rust-windows-targets" ,rust-windows-targets-0.48)))))) + +(define-public rust-windows-sys-0.45 + (package + (inherit rust-windows-sys-0.48) + (name "rust-windows-sys") + (version "0.45.0") + (source (origin + (method url-fetch) + (uri (crate-uri "windows-sys" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1l36bcqm4g89pknfp8r9rl1w4bn017q6a8qlx8viv0xjxzjkna3m")))) + (arguments + (list #:skip-build? #t + #:cargo-inputs + `(("rust-windows-targets" ,rust-windows-targets-0.42)))))) + +(define-public rust-windows-sys-0.42 + (package + (inherit rust-windows-sys-0.45) + (name "rust-windows-sys") + (version "0.42.0") + (source (origin + (method url-fetch) + (uri (crate-uri "windows-sys" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "19waf8aryvyq9pzk0gamgfwjycgzk4gnrazpfvv171cby0h1hgjs")))) + (arguments + (list #:skip-build? #t + #:cargo-inputs + `(("rust-windows-aarch64-gnullvm" ,rust-windows-aarch64-gnullvm-0.42) + ("rust-windows-aarch64-msvc" ,rust-windows-aarch64-msvc-0.42) + ("rust-windows-i686-gnu" ,rust-windows-i686-gnu-0.42) + ("rust-windows-i686-msvc" ,rust-windows-i686-msvc-0.42) + ("rust-windows-x86-64-gnu" ,rust-windows-x86-64-gnu-0.42) + ("rust-windows-x86-64-gnullvm" ,rust-windows-x86-64-gnullvm-0.42) + ("rust-windows-x86-64-msvc" ,rust-windows-x86-64-msvc-0.42)))))) + +(define-public rust-windows-sys-0.36 + (package + (inherit rust-windows-sys-0.42) + (name "rust-windows-sys") + (version "0.36.1") + (source (origin + (method url-fetch) + (uri (crate-uri "windows-sys" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1lmqangv0zg1l46xiq7rfnqwsx8f8m52mqbgg2mrx7x52rd1a17a")))) + (arguments + (list #:skip-build? #t + #:cargo-inputs + `(("rust-windows-aarch64-msvc" ,rust-windows-aarch64-msvc-0.36) + ("rust-windows-i686-gnu" ,rust-windows-i686-gnu-0.36) + ("rust-windows-i686-msvc" ,rust-windows-i686-msvc-0.36) + ("rust-windows-x86-64-gnu" ,rust-windows-x86-64-gnu-0.36) + ("rust-windows-x86-64-msvc" ,rust-windows-x86-64-msvc-0.36)))))) + +(define-public rust-windows-sys-0.28 + (package + (inherit rust-windows-sys-0.36) + (name "rust-windows-sys") + (version "0.28.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "windows-sys" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1xkghf343nll9i1yvha1a4spf53mnb5knzmnqj9adgsw5mh3kjl2")))) + (arguments + (list #:skip-build? #t + #:cargo-inputs + `(("rust-windows-aarch64-msvc" ,rust-windows-aarch64-msvc-0.28) + ("rust-windows-i686-gnu" ,rust-windows-i686-gnu-0.28) + ("rust-windows-i686-msvc" ,rust-windows-i686-msvc-0.28) + ("rust-windows-x86-64-gnu" ,rust-windows-x86-64-gnu-0.28) + ("rust-windows-x86-64-msvc" ,rust-windows-x86-64-msvc-0.28)))))) + +(define-public rust-windows-gen-0.9 + (package + (name "rust-windows-gen") + (version "0.9.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "windows_gen" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0lh492px26rrna0harikyy4p7nk520pw2lv0dczp4n2xa6y4s5al")))) + (build-system cargo-build-system) + (arguments `(#:skip-build? #t #:cargo-inputs (("rust-syn" ,rust-syn-1)))) + (home-page "https://github.com/microsoft/windows-rs") + (synopsis "Code gen support for the windows crate") + (description "Code gen support for the windows crate") + (license (list license:expat license:asl2.0)))) + +(define-public rust-windows-macros-0.9 + (package + (name "rust-windows-macros") + (version "0.9.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "windows_macros" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0xivsg3lf023hs83xiab2k40fmrl11nbihcdrdkc8pc4ab398xqg")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-syn" ,rust-syn-1) ("rust-windows-gen" ,rust-windows-gen-0.9)))) + (home-page "https://github.com/microsoft/windows-rs") + (synopsis "Macros for the windows crate") + (description "Macros for the windows crate") + (license (list license:expat license:asl2.0)))) + +(define-public rust-windows-targets-0.52 + (package + (name "rust-windows-targets") + (version "0.52.0") + (source (origin + (method url-fetch) + (uri (crate-uri "windows-targets" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1kg7a27ynzw8zz3krdgy6w5gbqcji27j1sz4p7xk2j5j8082064a")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-windows-aarch64-gnullvm" ,rust-windows-aarch64-gnullvm-0.52) + ("rust-windows-aarch64-msvc" ,rust-windows-aarch64-msvc-0.52) + ("rust-windows-i686-gnu" ,rust-windows-i686-gnu-0.52) + ("rust-windows-i686-msvc" ,rust-windows-i686-msvc-0.52) + ("rust-windows-x86-64-gnu" ,rust-windows-x86-64-gnu-0.52) + ("rust-windows-x86-64-gnullvm" ,rust-windows-x86-64-gnullvm-0.52) + ("rust-windows-x86-64-msvc" ,rust-windows-x86-64-msvc-0.52)))) + (home-page "https://github.com/microsoft/windows-rs") + (synopsis "Code gen support for the windows crate") + (description + "This package provides code gen support for the windows crate.") + (license (list license:expat license:asl2.0)))) + +(define-public rust-windows-targets-0.48 + (package + (inherit rust-windows-targets-0.52) + (name "rust-windows-targets") + (version "0.48.0") + (source (origin + (method url-fetch) + (uri (crate-uri "windows-targets" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1mfzg94w0c8h4ya9sva7rra77f3iy1712af9b6bwg03wrpqbc7kv")))) + (arguments + `(#:cargo-inputs + (("rust-windows-aarch64-gnullvm" ,rust-windows-aarch64-gnullvm-0.48) + ("rust-windows-aarch64-msvc" ,rust-windows-aarch64-msvc-0.48) + ("rust-windows-i686-gnu" ,rust-windows-i686-gnu-0.48) + ("rust-windows-i686-msvc" ,rust-windows-i686-msvc-0.48) + ("rust-windows-x86-64-gnu" ,rust-windows-x86-64-gnu-0.48) + ("rust-windows-x86-64-gnullvm" ,rust-windows-x86-64-gnullvm-0.48) + ("rust-windows-x86-64-msvc" ,rust-windows-x86-64-msvc-0.48)))))) + +(define-public rust-windows-targets-0.42 + (package + (inherit rust-windows-targets-0.48) + (name "rust-windows-targets") + (version "0.42.2") + (source (origin + (method url-fetch) + (uri (crate-uri "windows-targets" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0wfhnib2fisxlx8c507dbmh97kgij4r6kcxdi0f9nk6l1k080lcf")))) + (arguments + `(#:cargo-inputs + (("rust-windows-aarch64-gnullvm" ,rust-windows-aarch64-gnullvm-0.42) + ("rust-windows-aarch64-msvc" ,rust-windows-aarch64-msvc-0.42) + ("rust-windows-i686-gnu" ,rust-windows-i686-gnu-0.42) + ("rust-windows-i686-msvc" ,rust-windows-i686-msvc-0.42) + ("rust-windows-x86-64-gnu" ,rust-windows-x86-64-gnu-0.42) + ("rust-windows-x86-64-gnullvm" ,rust-windows-x86-64-gnullvm-0.42) + ("rust-windows-x86-64-msvc" ,rust-windows-x86-64-msvc-0.42)))))) + +(define-public rust-windows-tokens-0.39 + (package + (name "rust-windows-tokens") + (version "0.39.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "windows-tokens" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "15zmsz8ji6z7471xwznrm4hqp6j94s7pjjz7i34vmrjzw4pxwf7q")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t)) + (home-page "https://github.com/microsoft/windows-rs") + (synopsis "Code gen support for the windows crate") + (description "This package provides code generation support for the +windows crate.") + (license (list license:expat license:asl2.0)))) + +(define-public rust-windows-tokens-0.32 + (package + (inherit rust-windows-tokens-0.39) + (name "rust-windows-tokens") + (version "0.32.0") + (source (origin + (method url-fetch) + (uri (crate-uri "windows-tokens" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1rrqbxjkyk6h6p6jjzbcxr0mhqbz0yfndd2s2dsgmbl75f4yy7gn")))))) + +(define-public rust-windows-x86-64-gnu-0.52 + (package + (name "rust-windows-x86-64-gnu") + (version "0.52.0") + (source (origin + (method url-fetch) + (uri (crate-uri "windows_x86_64_gnu" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1zdy4qn178sil5sdm63lm7f0kkcjg6gvdwmcprd2yjmwn8ns6vrx")) + (snippet + '(delete-file "lib/libwindows.0.52.0.a")))) + (build-system cargo-build-system) + (arguments (list #:skip-build? #t)) + (home-page "https://github.com/microsoft/windows-rs") + (synopsis "Code gen support for the windows crate") + (description + "This package provides code gen support for the windows crate.") + (license (list license:expat license:asl2.0)))) + +(define-public rust-windows-x86-64-gnu-0.48 + (package + (inherit rust-windows-x86-64-gnu-0.52) + (name "rust-windows-x86-64-gnu") + (version "0.48.0") + (source (origin + (method url-fetch) + (uri (crate-uri "windows_x86_64_gnu" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1cblz5m6a8q6ha09bz4lz233dnq5sw2hpra06k9cna3n3xk8laya")) + (snippet + #~(delete-file "lib/libwindows.0.48.0.a")))) + (arguments (list #:skip-build? #t)))) + +(define-public rust-windows-x86-64-gnu-0.42 + (package + (inherit rust-windows-x86-64-gnu-0.48) + (name "rust-windows-x86-64-gnu") + (version "0.42.2") + (source (origin + (method url-fetch) + (uri (crate-uri "windows_x86_64_gnu" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0dnbf2xnp3xrvy8v9mgs3var4zq9v9yh9kv79035rdgyp2w15scd")) + (snippet + #~(delete-file "lib/libwindows.a")))) + (arguments + (list #:skip-build? #t)))) + +(define-public rust-windows-x86-64-gnu-0.39 + (package + (inherit rust-windows-x86-64-gnu-0.42) + (name "rust-windows-x86-64-gnu") + (version "0.39.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "windows_x86_64_gnu" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0r9b4lmapq66nn2dga7a0mkdv5sgbp184kfwx3hklrbxcdjw2s38")) + (snippet + #~(delete-file "lib/libwindows.a")))))) + +(define-public rust-windows-x86-64-gnu-0.36 + (package + (inherit rust-windows-x86-64-gnu-0.42) + (name "rust-windows-x86-64-gnu") + (version "0.36.1") + (source (origin + (inherit (package-source rust-windows-x86-64-gnu-0.42)) + (method url-fetch) + (uri (crate-uri "windows_x86_64_gnu" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1qfrck3jnihymfrd01s8260d4snql8ks2p8yaabipi3nhwdigkad")))))) + +(define-public rust-windows-x86-64-gnu-0.32 + (package + (inherit rust-windows-x86-64-gnu-0.36) + (name "rust-windows-x86-64-gnu") + (version "0.32.0") + (source (origin + (inherit (package-source rust-windows-x86-64-gnu-0.36)) + (method url-fetch) + (uri (crate-uri "windows_x86_64_gnu" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1g34xhcayig9sndq3555w95q6lr7jr839zxv6l365ijlfhpv24n9")))))) + +(define-public rust-windows-x86-64-gnu-0.28 + (package + (inherit rust-windows-x86-64-gnu-0.32) + (name "rust-windows-x86-64-gnu") + (version "0.28.0") + (source (origin + (inherit (package-source rust-windows-x86-64-gnu-0.32)) + (method url-fetch) + (uri (crate-uri "windows_x86_64_gnu" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0m79bhdr54g4h4wh2q8wkjlkypb5wvl7xzhc2csiaqb5yl4z8cdw")))))) + +(define-public rust-windows-x86-64-gnullvm-0.52 + (package + (name "rust-windows-x86-64-gnullvm") + (version "0.52.0") + (source (origin + (method url-fetch) + (uri (crate-uri "windows_x86_64_gnullvm" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "17lllq4l2k1lqgcnw1cccphxp9vs7inq99kjlm2lfl9zklg7wr8s")) + (snippet + '(delete-file "lib/libwindows.0.52.0.a")))) + (build-system cargo-build-system) + (arguments (list #:skip-build? #t)) + (home-page "https://github.com/microsoft/windows-rs") + (synopsis "Code gen support for the windows crate") + (description + "This package provides code gen support for the windows crate.") + (license (list license:expat license:asl2.0)))) + +(define-public rust-windows-x86-64-gnullvm-0.48 + (package + (inherit rust-windows-x86-64-gnullvm-0.52) + (name "rust-windows-x86-64-gnullvm") + (version "0.48.0") + (source (origin + (method url-fetch) + (uri (crate-uri "windows_x86_64_gnullvm" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0lxryz3ysx0145bf3i38jkr7f9nxiym8p3syklp8f20yyk0xp5kq")) + (snippet + '(delete-file "lib/libwindows.0.48.0.a")))) + (arguments (list #:skip-build? #t)))) + +(define-public rust-windows-x86-64-gnullvm-0.42 + (package + (inherit rust-windows-x86-64-gnullvm-0.48) + (name "rust-windows-x86-64-gnullvm") + (version "0.42.2") + (source (origin + (method url-fetch) + (uri (crate-uri "windows_x86_64_gnullvm" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "18wl9r8qbsl475j39zvawlidp1bsbinliwfymr43fibdld31pm16")) + (snippet + '(delete-file "lib/libwindows.a")))) + (arguments (list #:skip-build? #t)))) + +(define-public rust-windows-x86-64-msvc-0.52 + (package + (name "rust-windows-x86-64-msvc") + (version "0.52.0") + (source (origin + (method url-fetch) + (uri (crate-uri "windows_x86_64_msvc" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "012wfq37f18c09ij5m6rniw7xxn5fcvrxbqd0wd8vgnl3hfn9yfz")) + (snippet + '(delete-file "lib/windows.0.52.0.lib")))) + (build-system cargo-build-system) + (arguments (list #:skip-build? #t)) + (home-page "https://github.com/microsoft/windows-rs") + (synopsis "Code gen support for the windows crate") + (description + "This package provides code gen support for the windows crate.") + (license (list license:expat license:asl2.0)))) + +(define-public rust-windows-x86-64-msvc-0.48 + (package + (inherit rust-windows-x86-64-msvc-0.52) + (name "rust-windows-x86-64-msvc") + (version "0.48.0") + (source (origin + (method url-fetch) + (uri (crate-uri "windows_x86_64_msvc" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "12ipr1knzj2rwjygyllfi5mkd0ihnbi3r61gag5n2jgyk5bmyl8s")) + (snippet + #~(delete-file "lib/windows.0.48.0.lib")))) + (arguments (list #:skip-build? #t)))) + +(define-public rust-windows-x86-64-msvc-0.42 + (package + (inherit rust-windows-x86-64-msvc-0.48) + (name "rust-windows-x86-64-msvc") + (version "0.42.2") + (source (origin + (method url-fetch) + (uri (crate-uri "windows_x86_64_msvc" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1w5r0q0yzx827d10dpjza2ww0j8iajqhmb54s735hhaj66imvv4s")) + (snippet + #~(delete-file "lib/windows.lib")))) + (arguments (list #:skip-build? #t)))) + +(define-public rust-windows-x86-64-msvc-0.39 + (package + (inherit rust-windows-x86-64-msvc-0.42) + (name "rust-windows-x86-64-msvc") + (version "0.39.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "windows_x86_64_msvc" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "02g8fy1sv8g0p4fi2yk62j9a5zwhcfknp9vwg1ifkjp97a440kay")) + (snippet + #~(delete-file "lib/windows.lib")))))) + +(define-public rust-windows-x86-64-msvc-0.36 + (package + (inherit rust-windows-x86-64-msvc-0.42) + (name "rust-windows-x86-64-msvc") + (version "0.36.1") + (source (origin + (inherit (package-source rust-windows-x86-64-msvc-0.42)) + (method url-fetch) + (uri (crate-uri "windows_x86_64_msvc" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "103n3xijm5vr7qxr1dps202ckfnv7njjnnfqmchg8gl5ii5cl4f8")))))) + +(define-public rust-windows-x86-64-msvc-0.32 + (package + (inherit rust-windows-x86-64-msvc-0.36) + (name "rust-windows-x86-64-msvc") + (version "0.32.0") + (source (origin + (inherit (package-source rust-windows-x86-64-msvc-0.36)) + (method url-fetch) + (uri (crate-uri "windows_x86_64_msvc" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "05l392h518dxn808dc1zkv6d0r9z38q68qqc0ix9fs9741v28jjh")))))) + +(define-public rust-windows-x86-64-msvc-0.28 + (package + (inherit rust-windows-x86-64-msvc-0.32) + (name "rust-windows-x86-64-msvc") + (version "0.28.0") + (source (origin + (inherit (package-source rust-windows-x86-64-msvc-0.32)) + (method url-fetch) + (uri (crate-uri "windows_x86_64_msvc" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "17z8q25pd3dp6b84qm9nlayd3ym78sbryxlqmgcxvz9vpmy8qarz")))))) + diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm index 561c338959..df731d4b61 100644 --- a/gnu/packages/rust-apps.scm +++ b/gnu/packages/rust-apps.scm @@ -63,6 +63,7 @@ (define-module (gnu packages rust-apps) #:use-module (gnu packages crates-tls) #:use-module (gnu packages crates-vcs) #:use-module (gnu packages crates-web) + #:use-module (gnu packages crates-windows) #:use-module (gnu packages curl) #:use-module (gnu packages documentation) #:use-module (gnu packages fontutils) diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm index ef187c6ced..5a4fee11a5 100644 --- a/gnu/packages/terminals.scm +++ b/gnu/packages/terminals.scm @@ -78,6 +78,7 @@ (define-module (gnu packages terminals) #:use-module (gnu packages compression) #:use-module (gnu packages crates-io) #:use-module (gnu packages crates-graphics) + #:use-module (gnu packages crates-windows) #:use-module (gnu packages crypto) #:use-module (gnu packages curl) #:use-module (gnu packages dlang) -- cgit v1.2.3 From 6a56702df71ffebf9fceeef140876dd490974112 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Thu, 4 Jan 2024 14:21:00 +0200 Subject: gnu: rust-block: Move to (gnu packages crates-apple). * gnu/packages/crates-io.scm (rust-block-0.1, rust-block2-0.3, rust-block2-0.2, rust-block-sys-0.2, rust-block-sys-0.1): Move from here ... * gnu/packages/crates-apple.scm: ... to here. * gnu/local.mk (GNU_SYSTEM_MODULES): Register new file. Change-Id: I278dfdb829340fba937d29691b1451401675c87b --- gnu/local.mk | 1 + gnu/packages/crates-apple.scm | 128 ++++++++++++++++++++++++++++++++++++++++++ gnu/packages/crates-io.scm | 102 +-------------------------------- 3 files changed, 130 insertions(+), 101 deletions(-) create mode 100644 gnu/packages/crates-apple.scm (limited to 'gnu/local.mk') diff --git a/gnu/local.mk b/gnu/local.mk index 1588c6100c..0668ad34dc 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -201,6 +201,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/cpp.scm \ %D%/packages/cppi.scm \ %D%/packages/cran.scm \ + %D%/packages/crates-apple.scm \ %D%/packages/crates-io.scm \ %D%/packages/crates-graphics.scm \ %D%/packages/crates-gtk.scm \ diff --git a/gnu/packages/crates-apple.scm b/gnu/packages/crates-apple.scm new file mode 100644 index 0000000000..c2275334e1 --- /dev/null +++ b/gnu/packages/crates-apple.scm @@ -0,0 +1,128 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2020 Valentin Ignatev +;;; Copyright © 2023, 2024 Efraim Flashner +;;; +;;; 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 . + +(define-module (gnu packages crates-apple) + #:use-module (guix build-system cargo) + #:use-module (guix download) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix utils) + #:use-module (gnu packages) + #:use-module (gnu packages crates-io)) + +(define-public rust-block-0.1 + (package + (name "rust-block") + (version "0.1.6") + (source + (origin + (method url-fetch) + (uri (crate-uri "block" version)) + (file-name + (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "16k9jgll25pzsq14f244q22cdv0zb4bqacldg3kx6h89d7piz30d")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-development-inputs + (("rust-objc-test-utils" ,rust-objc-test-utils-0.0)))) + (home-page "https://github.com/SSheldon/rust-block") + (synopsis "Rust interface for Apple's C language extension of blocks") + (description "This package provides a rust interface for Apple's C language +extension of blocks.") + (license license:expat))) + +(define-public rust-block2-0.3 + (package + (name "rust-block2") + (version "0.3.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "block2" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0s2ywcis2xf9444vmdgzr7ankrrkpchn8zimaw950cszm1imdd8m")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t ; link kind `framework` is only supported on Apple targets + #:cargo-inputs (("rust-block-sys" ,rust-block-sys-0.2) + ("rust-objc2" ,rust-objc2-0.4)))) + (home-page "https://github.com/madsmtm/objc2") + (synopsis "Apple's C language extension of blocks") + (description "This package contains Apple's C language extension of blocks.") + (license license:expat))) + +(define-public rust-block2-0.2 + (package + (inherit rust-block2-0.3) + (name "rust-block2") + (version "0.2.0-alpha.6") + (source (origin + (method url-fetch) + (uri (crate-uri "block2" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0hpcdl81rmwvhfni9413hrg1wd4xwf6vhch3yv15bxs42wyfdncd")))) + (arguments + `(#:tests? #f ; Tests require gcc-objc. + #:cargo-inputs + (("rust-block-sys" ,rust-block-sys-0.1) + ("rust-objc2-encode" ,rust-objc2-encode-2)))))) + +(define-public rust-block-sys-0.2 + (package + (name "rust-block-sys") + (version "0.2.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "block-sys" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "14pddxc4rma833prvlbh5a22q6qwx32hhz7aqmnw1p9cj58czmrd")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t ; Needs to bind to MacOS libraries. + #:cargo-inputs (("rust-objc-sys" ,rust-objc-sys-0.3)))) + (home-page "https://github.com/madsmtm/objc2") + (synopsis "Raw bindings to Apple's C language extension of blocks") + (description "This package contains raw bindings to Apple's C language +extension of blocks.") + (license license:expat))) + +(define-public rust-block-sys-0.1 + (package + (inherit rust-block-sys-0.2) + (name "rust-block-sys") + (version "0.1.0-beta.1") + (source (origin + (method url-fetch) + (uri (crate-uri "block-sys" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0ihiar08hk0das4q0ii1gsmql975z3rslli1h13jb44hxr0mg98g")))) + (arguments + `(#:tests? #f ; Tests require gcc-objc. + #:cargo-inputs + (("rust-objc-sys" ,rust-objc-sys-0.2)))))) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index 7dafcc6596..6e2f5ff2e0 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -74,6 +74,7 @@ (define-module (gnu packages crates-io) #:use-module (gnu packages cmake) #:use-module (gnu packages compression) #:use-module (gnu packages cpp) + #:use-module (gnu packages crates-apple) #:use-module (gnu packages crates-graphics) #:use-module (gnu packages crates-gtk) #:use-module (gnu packages crates-tls) @@ -7305,69 +7306,6 @@ (define-public rust-blobby-0.1 (("rust-byteorder" ,rust-byteorder-1) ("rust-hex" ,rust-hex-0.3)))))) -(define-public rust-block-0.1 - (package - (name "rust-block") - (version "0.1.6") - (source - (origin - (method url-fetch) - (uri (crate-uri "block" version)) - (file-name - (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "16k9jgll25pzsq14f244q22cdv0zb4bqacldg3kx6h89d7piz30d")))) - (build-system cargo-build-system) - (arguments - `(#:skip-build? #t - #:cargo-development-inputs - (("rust-objc-test-utils" ,rust-objc-test-utils-0.0)))) - (home-page "https://github.com/SSheldon/rust-block") - (synopsis "Rust interface for Apple's C language extension of blocks") - (description "This package provides a rust interface for Apple's C language -extension of blocks.") - (license license:expat))) - -(define-public rust-block2-0.3 - (package - (name "rust-block2") - (version "0.3.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "block2" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0s2ywcis2xf9444vmdgzr7ankrrkpchn8zimaw950cszm1imdd8m")))) - (build-system cargo-build-system) - (arguments - `(#:skip-build? #t ; link kind `framework` is only supported on Apple targets - #:cargo-inputs (("rust-block-sys" ,rust-block-sys-0.2) - ("rust-objc2" ,rust-objc2-0.4)))) - (home-page "https://github.com/madsmtm/objc2") - (synopsis "Apple's C language extension of blocks") - (description "This package contains Apple's C language extension of blocks.") - (license license:expat))) - -(define-public rust-block2-0.2 - (package - (inherit rust-block2-0.3) - (name "rust-block2") - (version "0.2.0-alpha.6") - (source (origin - (method url-fetch) - (uri (crate-uri "block2" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0hpcdl81rmwvhfni9413hrg1wd4xwf6vhch3yv15bxs42wyfdncd")))) - (arguments - `(#:tests? #f ; Tests require gcc-objc. - #:cargo-inputs - (("rust-block-sys" ,rust-block-sys-0.1) - ("rust-objc2-encode" ,rust-objc2-encode-2)))))) - (define-public rust-block-buffer-0.10 (package (name "rust-block-buffer") @@ -7610,44 +7548,6 @@ (define-public rust-block-padding-0.1 `(#:cargo-inputs (("rust-byte-tools" ,rust-byte-tools-0.3)))))) -(define-public rust-block-sys-0.2 - (package - (name "rust-block-sys") - (version "0.2.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "block-sys" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "14pddxc4rma833prvlbh5a22q6qwx32hhz7aqmnw1p9cj58czmrd")))) - (build-system cargo-build-system) - (arguments - `(#:skip-build? #t ; Needs to bind to MacOS libraries. - #:cargo-inputs (("rust-objc-sys" ,rust-objc-sys-0.3)))) - (home-page "https://github.com/madsmtm/objc2") - (synopsis "Raw bindings to Apple's C language extension of blocks") - (description "This package contains raw bindings to Apple's C language -extension of blocks.") - (license license:expat))) - -(define-public rust-block-sys-0.1 - (package - (inherit rust-block-sys-0.2) - (name "rust-block-sys") - (version "0.1.0-beta.1") - (source (origin - (method url-fetch) - (uri (crate-uri "block-sys" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0ihiar08hk0das4q0ii1gsmql975z3rslli1h13jb44hxr0mg98g")))) - (arguments - `(#:tests? #f ; Tests require gcc-objc. - #:cargo-inputs - (("rust-objc-sys" ,rust-objc-sys-0.2)))))) - (define-public rust-blocking-1 (package (name "rust-blocking") -- cgit v1.2.3 From 179900942d3ad6f26947c570421a71b8666124db Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Sun, 21 Jan 2024 13:40:54 +0200 Subject: gnu: rust-botan: Move to (gnu packages crates-crypto). * gnu/packages/crates-io.scm (rust-botan-0.10, rust-botan-0.8, rust-botan-sys-0.10, rust-botan-sys-0.8, rust-botan-src-0.21903, rust-botan-src-0.21703): Move from here ... * gnu/packages/crates-crypto.scm: ... to here. * gnu/local.mk (GNU_SYSTEM_MODULES): Register new file. Change-Id: I459c94e9f70a51bdf48020792562e57ebc2119df --- gnu/local.mk | 1 + gnu/packages/crates-crypto.scm | 146 +++++++++++++++++++++++++++++++++++++++++ gnu/packages/crates-io.scm | 115 +------------------------------- gnu/packages/sequoia.scm | 1 + 4 files changed, 149 insertions(+), 114 deletions(-) create mode 100644 gnu/packages/crates-crypto.scm (limited to 'gnu/local.mk') diff --git a/gnu/local.mk b/gnu/local.mk index 0668ad34dc..917ff9db97 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -202,6 +202,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/cppi.scm \ %D%/packages/cran.scm \ %D%/packages/crates-apple.scm \ + %D%/packages/crates-crypto.scm \ %D%/packages/crates-io.scm \ %D%/packages/crates-graphics.scm \ %D%/packages/crates-gtk.scm \ diff --git a/gnu/packages/crates-crypto.scm b/gnu/packages/crates-crypto.scm new file mode 100644 index 0000000000..67de332f12 --- /dev/null +++ b/gnu/packages/crates-crypto.scm @@ -0,0 +1,146 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2023 Efraim Flashner +;;; +;;; 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 . + +(define-module (gnu packages crates-crypto) + #:use-module (guix build-system cargo) + #:use-module (guix download) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix gexp) + #:use-module (guix utils) + #:use-module (gnu packages) + #:use-module (gnu packages crates-io) + #:use-module (gnu packages crypto)) + +;;; +;;; Please: Try to add new module packages in alphabetic order. +;;; + +(define-public rust-botan-0.10 + (package + (name "rust-botan") + (version "0.10.3") + (source (origin + (method url-fetch) + (uri (crate-uri "botan" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1vzl5pdysh848zpphsgvj9c40zdi3ynl32zzixsd8vg4vaflhb49")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-botan-sys" ,rust-botan-sys-0.10)) + #:cargo-development-inputs + (("rust-hex" ,rust-hex-0.4) + ("rust-wycheproof" ,rust-wycheproof-0.5)))) + (inputs (list botan)) + (home-page "https://botan.randombit.net/") + (synopsis "Rust wrapper for Botan cryptography library") + (description "Rust wrapper for Botan cryptography library") + (license license:expat))) + +(define-public rust-botan-0.8 + (package + (inherit rust-botan-0.10) + (name "rust-botan") + (version "0.8.1") + (source (origin + (method url-fetch) + (uri (crate-uri "botan" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "08bmiyn7c3b0dgx20w6hr28d9jcq7cj78cchr84pc686sb2s41ik")))) + (arguments + `(#:cargo-inputs + (("rust-botan-sys" ,rust-botan-sys-0.8) + ("rust-cstr-core" ,rust-cstr-core-0.2) + ("rust-cty" ,rust-cty-0.2)))))) + +(define-public rust-botan-sys-0.10 + (package + (name "rust-botan-sys") + (version "0.10.3") + (source (origin + (method url-fetch) + (uri (crate-uri "botan-sys" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1cbjr44gc5dhmgl43sfiqzbsma4anfi3h26m4yzsli23yd1lmyf8")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs (("rust-botan-src" ,rust-botan-src-0.21903)))) + (inputs (list botan)) + (home-page "https://botan.randombit.net/") + (synopsis "FFI wrapper for Botan cryptography library") + (description "FFI wrapper for Botan cryptography library") + (license license:expat))) + +(define-public rust-botan-sys-0.8 + (package + (inherit rust-botan-sys-0.10) + (name "rust-botan-sys") + (version "0.8.1") + (source (origin + (method url-fetch) + (uri (crate-uri "botan-sys" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1m11zblxfanrhl97j7z3ap7n17rr8j0rg91sr7f9j6y2bsniaz1x")))) + (arguments + `(#:cargo-inputs + (("rust-botan-src" ,rust-botan-src-0.21703) + ("rust-cty" ,rust-cty-0.2)))))) + +(define-public rust-botan-src-0.21903 + (package + (name "rust-botan-src") + (version "0.21903.1") + (source (origin + (method url-fetch) + (uri (crate-uri "botan-src" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "19fhll4g0v8hbyjxg8c790l9ln5xgf4r6xdcnw438mpy81hvrdxy")) + (modules '((guix build utils))) + (snippet + '(begin (delete-file-recursively "botan"))))) + (build-system cargo-build-system) + (arguments '(#:skip-build? #t)) + (home-page "https://botan.randombit.net/") + (synopsis "Sources of Botan cryptography library") + (description "Sources of Botan cryptography library") + (license license:expat))) + +(define-public rust-botan-src-0.21703 + (package + (inherit rust-botan-src-0.21903) + (name "rust-botan-src") + (version "0.21703.0") + (source (origin + (method url-fetch) + (uri (crate-uri "botan-src" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0s2ad9q84qsrllfsbj7hjhn7gr3hab9ng6lwzwqmimia6yvja8y8")) + (modules '((guix build utils))) + (snippet + '(begin (delete-file-recursively "botan"))))))) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index b964333984..712341a101 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -75,6 +75,7 @@ (define-module (gnu packages crates-io) #:use-module (gnu packages compression) #:use-module (gnu packages cpp) #:use-module (gnu packages crates-apple) + #:use-module (gnu packages crates-crypto) #:use-module (gnu packages crates-graphics) #:use-module (gnu packages crates-gtk) #:use-module (gnu packages crates-tls) @@ -8103,120 +8104,6 @@ (define-public rust-borsh-schema-derive-internal-0.10 (description "This crate implements schema generator for @code{borsh}.") (license license:asl2.0))) -(define-public rust-botan-0.10 - (package - (name "rust-botan") - (version "0.10.3") - (source (origin - (method url-fetch) - (uri (crate-uri "botan" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1vzl5pdysh848zpphsgvj9c40zdi3ynl32zzixsd8vg4vaflhb49")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-botan-sys" ,rust-botan-sys-0.10)) - #:cargo-development-inputs - (("rust-hex" ,rust-hex-0.4) - ("rust-wycheproof" ,rust-wycheproof-0.5)))) - (inputs (list botan)) - (home-page "https://botan.randombit.net/") - (synopsis "Rust wrapper for Botan cryptography library") - (description "Rust wrapper for Botan cryptography library") - (license license:expat))) - -(define-public rust-botan-0.8 - (package - (inherit rust-botan-0.10) - (name "rust-botan") - (version "0.8.1") - (source (origin - (method url-fetch) - (uri (crate-uri "botan" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "08bmiyn7c3b0dgx20w6hr28d9jcq7cj78cchr84pc686sb2s41ik")))) - (arguments - `(#:cargo-inputs - (("rust-botan-sys" ,rust-botan-sys-0.8) - ("rust-cstr-core" ,rust-cstr-core-0.2) - ("rust-cty" ,rust-cty-0.2)))))) - -(define-public rust-botan-sys-0.10 - (package - (name "rust-botan-sys") - (version "0.10.3") - (source (origin - (method url-fetch) - (uri (crate-uri "botan-sys" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1cbjr44gc5dhmgl43sfiqzbsma4anfi3h26m4yzsli23yd1lmyf8")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs (("rust-botan-src" ,rust-botan-src-0.21903)))) - (inputs (list botan)) - (home-page "https://botan.randombit.net/") - (synopsis "FFI wrapper for Botan cryptography library") - (description "FFI wrapper for Botan cryptography library") - (license license:expat))) - -(define-public rust-botan-sys-0.8 - (package - (inherit rust-botan-sys-0.10) - (name "rust-botan-sys") - (version "0.8.1") - (source (origin - (method url-fetch) - (uri (crate-uri "botan-sys" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1m11zblxfanrhl97j7z3ap7n17rr8j0rg91sr7f9j6y2bsniaz1x")))) - (arguments - `(#:cargo-inputs - (("rust-botan-src" ,rust-botan-src-0.21703) - ("rust-cty" ,rust-cty-0.2)))))) - -(define-public rust-botan-src-0.21903 - (package - (name "rust-botan-src") - (version "0.21903.1") - (source (origin - (method url-fetch) - (uri (crate-uri "botan-src" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "19fhll4g0v8hbyjxg8c790l9ln5xgf4r6xdcnw438mpy81hvrdxy")) - (modules '((guix build utils))) - (snippet - '(begin (delete-file-recursively "botan"))))) - (build-system cargo-build-system) - (arguments '(#:skip-build? #t)) - (home-page "https://botan.randombit.net/") - (synopsis "Sources of Botan cryptography library") - (description "Sources of Botan cryptography library") - (license license:expat))) - -(define-public rust-botan-src-0.21703 - (package - (inherit rust-botan-src-0.21903) - (name "rust-botan-src") - (version "0.21703.0") - (source (origin - (method url-fetch) - (uri (crate-uri "botan-src" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0s2ad9q84qsrllfsbj7hjhn7gr3hab9ng6lwzwqmimia6yvja8y8")) - (modules '((guix build utils))) - (snippet - '(begin (delete-file-recursively "botan"))))))) - (define-public rust-boxfnonce-0.1 (package (name "rust-boxfnonce") diff --git a/gnu/packages/sequoia.scm b/gnu/packages/sequoia.scm index 0501bdaf15..067197ffc5 100644 --- a/gnu/packages/sequoia.scm +++ b/gnu/packages/sequoia.scm @@ -27,6 +27,7 @@ (define-module (gnu packages sequoia) #:use-module (guix utils) #:use-module (gnu packages) #:use-module (gnu packages base) ; glibc + #:use-module (gnu packages crates-crypto) #:use-module (gnu packages crates-io) #:use-module (gnu packages crates-tls) #:use-module (gnu packages crates-web) -- cgit v1.2.3 From 8a8c1f5d54d69637b62fdc401e8e5dd3027617f0 Mon Sep 17 00:00:00 2001 From: Herman Rimm Date: Tue, 30 Jan 2024 16:25:23 +0100 Subject: gnu: i3status-rust: Update to 0.32.3. * gnu/packages/rust-apps.scm (i3status-rust): Update to 0.32.3. [source]: Remove patch. Add snippet to adjust package dependencies. [arguments]: Remove features flag. Replace 'enable-unstable-features phase with 'remove-optional-icu-deps phase to skip the calendar option. [cargo-inputs]: Add rust-anyhow-1, rust-async-once-cell-0.5, rust-async-trait-0.1, rust-backon-0.4, rust-calibright-0.1, rust-clap-4, rust-clap-mangen-0.2, rust-dirs-5, rust-env-logger-0.10, rust-futures-0.3, rust-glob-0.3, rust-hyper-0.14, rust-libc-0.2, rust-log-0.4, rust-neli-0.6, rust-neli-wifi-0.6, rust-nom-7, rust-once-cell-1, rust-pandoc-0.8, rust-regex-1, rust-reqwest-0.11, rust-sensors-0.2, rust-serde-with-3, rust-shellexpand-3, rust-signal-hook-tokio-0.3, rust-smart-default-0.7, rust-swayipc-async-2, rust-thiserror-1, rust-tokio-1, rust-unicode-segmentation-1, rust-wayrs-client-1, rust-wayrs-protocols-0.13, rust-zbus-3. Replace rust-chrono-tz-0.5 with 0.8, rust-inotify-0.9 with 0.10, rust-maildir-0.5 with 0.6, rust-notmuch-0.6 with 0.8, rust-nix-0.20 with 0.27, rust-toml-0.5 with 0.8. Remove rust-curl-0.4, rust-dbus-0.9, rust-dbus-tree-0.9, rust-lazy-static-1, rust-nl80211-0.0.2, rust-progress-0.2, rust-serde-derive-1, rust-swayipc-2, rust-cpuprofiler-0.0. [cargo-development-inputs]: Remove rust-assert-fs-1. [inputs]: Switch from lm-sensors to its "lib" output. [synopsis]: Expand. * gnu/packages/patches/i3status-rust-enable-unstable-features.patch: Remove file. * gnu/local.mk (dist_patch_DATA): Remove it. Change-Id: I84e34ee0f60c3c10a013e3b8edc42f157db5732c Signed-off-by: Efraim Flashner --- gnu/local.mk | 1 - .../i3status-rust-enable-unstable-features.patch | 20 ---- gnu/packages/rust-apps.scm | 102 ++++++++++++++------- 3 files changed, 67 insertions(+), 56 deletions(-) delete mode 100644 gnu/packages/patches/i3status-rust-enable-unstable-features.patch (limited to 'gnu/local.mk') diff --git a/gnu/local.mk b/gnu/local.mk index 917ff9db97..3b1a4db9d8 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -2009,7 +2009,6 @@ dist_patch_DATA = \ %D%/packages/patches/rust-1.70-fix-rustix-build.patch \ %D%/packages/patches/rust-cargo-edit-remove-ureq.patch \ %D%/packages/patches/rust-ring-0.17-ring-core.patch \ - %D%/packages/patches/i3status-rust-enable-unstable-features.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-ndarray-0.14-remove-blas-src.patch \ diff --git a/gnu/packages/patches/i3status-rust-enable-unstable-features.patch b/gnu/packages/patches/i3status-rust-enable-unstable-features.patch deleted file mode 100644 index 535b45d865..0000000000 --- a/gnu/packages/patches/i3status-rust-enable-unstable-features.patch +++ /dev/null @@ -1,20 +0,0 @@ -From 3006390c0058f06c255d9850327163aebcdc3b40 Mon Sep 17 00:00:00 2001 -From: Petr Hodina -Date: Mon, 11 Oct 2021 22:35:39 +0200 -Subject: [PATCH] Enable unstable features. - - -diff --git a/src/main.rs b/src/main.rs -index d9e964b..820e22e 100644 ---- a/src/main.rs -+++ b/src/main.rs -@@ -1,3 +1,6 @@ -+#![feature(bool_to_option)] -+#![feature(clamp)] -+ - #[macro_use] - mod de; - #[macro_use] --- -2.33.0 - diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm index b796279fe2..f5fd0623ef 100644 --- a/gnu/packages/rust-apps.scm +++ b/gnu/packages/rust-apps.scm @@ -768,7 +768,7 @@ (define-public hyperfine (define-public i3status-rust (package (name "i3status-rust") - (version "0.20.1") + (version "0.32.3") (source (origin (method git-fetch) @@ -776,42 +776,73 @@ (define-public i3status-rust (url "https://github.com/greshake/i3status-rust") (commit (string-append "v" version)))) (file-name (git-file-name name version)) - (patches (search-patches "i3status-rust-enable-unstable-features.patch")) (sha256 - (base32 "00gzm3g297s9bfp13vnb623p7dfac3g6cdhz2b3lc6l0kmnnqs1s")))) + (base32 "11n32kkfwlv38mj9018hp5rbg4w3d1vq9f6x8rhqahs19mm5amqa")) + (snippet + #~(begin + (use-modules (guix build utils)) + ;; This comes a few commits after the 0.32.3 tag. + (substitute* "Cargo.toml" + (("^(wayrs-client = \\{ version = \")0\\.12\"" all most) + (string-append most "1.0\"")) + (("^(wayrs-protocols = \\{ version = \")0\\.12\"" all most) + (string-append most "0.13\""))))))) (build-system cargo-build-system) (arguments - `(#:features '("pulseaudio" "libpulse-binding") - #:install-source? #f + `(#:install-source? #f #:cargo-inputs - (("rust-chrono" ,rust-chrono-0.4) - ("rust-chrono-tz" ,rust-chrono-tz-0.5) - ("rust-crossbeam-channel" ,rust-crossbeam-channel-0.5) - ("rust-curl" ,rust-curl-0.4) - ("rust-dbus" ,rust-dbus-0.9) - ("rust-dbus-tree" ,rust-dbus-tree-0.9) - ("rust-lazy-static" ,rust-lazy-static-1) - ("rust-nix" ,rust-nix-0.20) - ("rust-nl80211" ,rust-nl80211-0.0.2) + (("rust-anyhow" ,rust-anyhow-1) ; Dependency of xtask. + ("rust-async-once-cell" ,rust-async-once-cell-0.5) + ("rust-async-trait" ,rust-async-trait-0.1) + ("rust-backon" ,rust-backon-0.4) + ("rust-calibright" ,rust-calibright-0.1) + ("rust-chrono" ,rust-chrono-0.4) + ("rust-chrono-tz" ,rust-chrono-tz-0.8) + ("rust-clap" ,rust-clap-4) ; Dependency of xtask also. + ("rust-clap-mangen" ,rust-clap-mangen-0.2) ; Dependency of xtask. + ("rust-dirs" ,rust-dirs-5) + ("rust-env-logger" ,rust-env-logger-0.10) + ("rust-futures" ,rust-futures-0.3) + ("rust-glob" ,rust-glob-0.3) + ("rust-hyper" ,rust-hyper-0.14) + ("rust-inotify" ,rust-inotify-0.10) + ("rust-libc" ,rust-libc-0.2) + ("rust-libpulse-binding" ,rust-libpulse-binding-2) + ("rust-log" ,rust-log-0.4) + ("rust-maildir" ,rust-maildir-0.6) + ("rust-neli" ,rust-neli-0.6) + ("rust-neli-wifi" ,rust-neli-wifi-0.6) + ("rust-nix" ,rust-nix-0.27) + ("rust-nom" ,rust-nom-7) + ("rust-notmuch" ,rust-notmuch-0.8) + ("rust-once-cell" ,rust-once-cell-1) + ("rust-pandoc" ,rust-pandoc-0.8) ; Dependency of xtask. + ("rust-regex" ,rust-regex-1) + ("rust-reqwest" ,rust-reqwest-0.11) + ("rust-sensors" ,rust-sensors-0.2) ("rust-serde" ,rust-serde-1) - ("rust-serde-derive" ,rust-serde-derive-1) ("rust-serde-json" ,rust-serde-json-1) + ("rust-serde-with" ,rust-serde-with-3) + ("rust-shellexpand" ,rust-shellexpand-3) ("rust-signal-hook" ,rust-signal-hook-0.3) - ("rust-swayipc" ,rust-swayipc-2) - ("rust-toml" ,rust-toml-0.5) - ("rust-cpuprofiler" ,rust-cpuprofiler-0.0) - ("rust-inotify" ,rust-inotify-0.9) - ("rust-libpulse-binding" ,rust-libpulse-binding-2) - ("rust-maildir" ,rust-maildir-0.5) - ("rust-notmuch" ,rust-notmuch-0.6) - ("rust-progress" ,rust-progress-0.2)) - #:cargo-development-inputs - (("rust-assert-fs" ,rust-assert-fs-1)) + ("rust-signal-hook-tokio" ,rust-signal-hook-tokio-0.3) + ("rust-smart-default" ,rust-smart-default-0.7) + ("rust-swayipc-async" ,rust-swayipc-async-2) + ("rust-thiserror" ,rust-thiserror-1) + ("rust-tokio" ,rust-tokio-1) + ("rust-toml" ,rust-toml-0.8) + ("rust-unicode-segmentation" ,rust-unicode-segmentation-1) + ("rust-wayrs-client" ,rust-wayrs-client-1) + ("rust-wayrs-protocols" ,rust-wayrs-protocols-0.13) + ("rust-zbus" ,rust-zbus-3)) #:phases (modify-phases %standard-phases - (add-after 'unpack 'enable-unstable-features + (add-after 'unpack 'remove-optional-icu-deps (lambda _ - (setenv "RUSTC_BOOTSTRAP" "1"))) + (substitute* "Cargo.toml" + (("^icu_calendar.*") "") + (("^icu_datetime.*") "") + (("^icu_locid.*") "")))) (add-after 'unpack 'fix-resources-path (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -827,11 +858,12 @@ (define-public i3status-rust (let ((out (assoc-ref outputs "out")) (paths (map (lambda (input) - (string-append (assoc-ref inputs input) "/bin")) - '("alsa-utils" "coreutils" "curl" "dbus" "ibus" "iproute" - "kdeconnect" "lm-sensors" "pulseaudio" - "openssl" - "setxkbmap" "speedtest-cli" "xdg-utils" "xrandr" + (string-append + (assoc-ref inputs input) "/bin")) + '("alsa-utils" "coreutils" "curl" "dbus" + "ibus" "iproute" "kdeconnect" "lm-sensors" + "pulseaudio" "openssl" "setxkbmap" + "speedtest-cli" "xdg-utils" "xrandr" "zlib")))) (wrap-program (string-append out "/bin/i3status-rs") `("PATH" prefix ,paths)))))))) @@ -846,7 +878,7 @@ (define-public i3status-rust ("ibus" ,ibus) ("iproute" ,iproute) ("kdeconnect" ,kdeconnect) - ("lm-sensors" ,lm-sensors) + ("lm-sensors" ,lm-sensors "lib") ("pulseaudio" ,pulseaudio) ("openssl" ,openssl) ("setxkbmap" ,setxkbmap) @@ -854,8 +886,8 @@ (define-public i3status-rust ("xdg-utils" ,xdg-utils) ("xrandr" ,xrandr) ("zlib" ,zlib))) - (home-page "https://github.com/greshake/i3status-rust") - (synopsis "i3status, written in pure Rust") + (home-page "https://github.com/greshake/i3status-rust/") + (synopsis "Replacement for i3status, written in Rust") (description "@code{i3status-rs} is a feature-rich and resource-friendly replacement for i3status, written in pure Rust. It provides a way to display @code{blocks} of system information (time, battery status, volume, etc) on the i3 -- cgit v1.2.3