Compare commits

...

7 Commits

Author SHA1 Message Date
TakeV 0b9abd61dc
I have no idea 2023-12-28 13:01:31 -05:00
TakeV 9bc7a2fb74
Add dir-local.el 2023-08-20 20:56:39 -07:00
TakeV 9f9d695611
Add guix channel 2023-08-20 20:56:32 -07:00
TakeV 486ffacbef
Add manifest.scm 2023-08-20 20:56:23 -07:00
TakeV 6bc2801044
Add meowy-webring guix file 2023-08-20 20:56:08 -07:00
TakeV d5b719a909
Add crates-io, for packages not yet imported into guix 2023-08-20 20:55:27 -07:00
TakeV ca779e67f7
Backport rust 1.71 from Fries' patch 2023-08-20 20:54:45 -07:00
8 changed files with 1324 additions and 0 deletions

100
.dir-locals.el Normal file
View File

@ -0,0 +1,100 @@
;;; SPDX-License-Identifier: GPL-3.0-or-later
;; Per-directory local variables for GNU Emacs 23 and later.
((nil
. ((fill-column . 78)
(tab-width . 8)
(sentence-end-double-space . t)
;; For use with 'bug-reference-prog-mode'.
(bug-reference-url-format . "https://gitlab.com/nonguix/nonguix/issues/%s")
(bug-reference-bug-regexp
. "\\(#\\([0-9]+\\)\\)")))
(c-mode . ((c-file-style . "gnu")))
(scheme-mode
.
((indent-tabs-mode . nil)
(eval . (put 'eval-when 'scheme-indent-function 1))
(eval . (put 'call-with-prompt 'scheme-indent-function 1))
(eval . (put 'test-assert 'scheme-indent-function 1))
(eval . (put 'test-assertm 'scheme-indent-function 1))
(eval . (put 'test-equalm 'scheme-indent-function 1))
(eval . (put 'test-equal 'scheme-indent-function 1))
(eval . (put 'test-eq 'scheme-indent-function 1))
(eval . (put 'call-with-input-string 'scheme-indent-function 1))
(eval . (put 'guard 'scheme-indent-function 1))
(eval . (put 'lambda* 'scheme-indent-function 1))
(eval . (put 'substitute* 'scheme-indent-function 1))
(eval . (put 'match-record 'scheme-indent-function 2))
;; 'modify-phases' and its keywords.
(eval . (put 'modify-phases 'scheme-indent-function 1))
(eval . (put 'replace 'scheme-indent-function 1))
(eval . (put 'add-before 'scheme-indent-function 2))
(eval . (put 'add-after 'scheme-indent-function 2))
(eval . (put 'modify-services 'scheme-indent-function 1))
(eval . (put 'with-directory-excursion 'scheme-indent-function 1))
(eval . (put 'package 'scheme-indent-function 0))
(eval . (put 'origin 'scheme-indent-function 0))
(eval . (put 'build-system 'scheme-indent-function 0))
(eval . (put 'bag 'scheme-indent-function 0))
(eval . (put 'graft 'scheme-indent-function 0))
(eval . (put 'operating-system 'scheme-indent-function 0))
(eval . (put 'file-system 'scheme-indent-function 0))
(eval . (put 'manifest-entry 'scheme-indent-function 0))
(eval . (put 'manifest-pattern 'scheme-indent-function 0))
(eval . (put 'substitute-keyword-arguments 'scheme-indent-function 1))
(eval . (put 'with-store 'scheme-indent-function 1))
(eval . (put 'with-external-store 'scheme-indent-function 1))
(eval . (put 'with-error-handling 'scheme-indent-function 0))
(eval . (put 'with-mutex 'scheme-indent-function 1))
(eval . (put 'with-atomic-file-output 'scheme-indent-function 1))
(eval . (put 'call-with-compressed-output-port 'scheme-indent-function 2))
(eval . (put 'call-with-decompressed-port 'scheme-indent-function 2))
(eval . (put 'call-with-gzip-input-port 'scheme-indent-function 1))
(eval . (put 'call-with-gzip-output-port 'scheme-indent-function 1))
(eval . (put 'call-with-lzip-input-port 'scheme-indent-function 1))
(eval . (put 'call-with-lzip-output-port 'scheme-indent-function 1))
(eval . (put 'signature-case 'scheme-indent-function 1))
(eval . (put 'emacs-batch-eval 'scheme-indent-function 0))
(eval . (put 'emacs-batch-edit-file 'scheme-indent-function 1))
(eval . (put 'emacs-substitute-sexps 'scheme-indent-function 1))
(eval . (put 'emacs-substitute-variables 'scheme-indent-function 1))
(eval . (put 'with-derivation-narinfo 'scheme-indent-function 1))
(eval . (put 'with-derivation-substitute 'scheme-indent-function 2))
(eval . (put 'with-status-report 'scheme-indent-function 1))
(eval . (put 'with-status-verbosity 'scheme-indent-function 1))
(eval . (put 'mlambda 'scheme-indent-function 1))
(eval . (put 'mlambdaq 'scheme-indent-function 1))
(eval . (put 'syntax-parameterize 'scheme-indent-function 1))
(eval . (put 'with-monad 'scheme-indent-function 1))
(eval . (put 'mbegin 'scheme-indent-function 1))
(eval . (put 'mwhen 'scheme-indent-function 1))
(eval . (put 'munless 'scheme-indent-function 1))
(eval . (put 'mlet* 'scheme-indent-function 2))
(eval . (put 'mlet 'scheme-indent-function 2))
(eval . (put 'run-with-store 'scheme-indent-function 1))
(eval . (put 'run-with-state 'scheme-indent-function 1))
(eval . (put 'wrap-program 'scheme-indent-function 1))
(eval . (put 'with-imported-modules 'scheme-indent-function 1))
(eval . (put 'with-extensions 'scheme-indent-function 1))
(eval . (put 'with-database 'scheme-indent-function 2))
(eval . (put 'call-with-transaction 'scheme-indent-function 2))
(eval . (put 'call-with-container 'scheme-indent-function 1))
(eval . (put 'container-excursion 'scheme-indent-function 1))
(eval . (put 'eventually 'scheme-indent-function 1))
(eval . (put 'call-with-progress-reporter 'scheme-indent-function 1))
;; This notably allows '(' in Paredit to not insert a space when the
;; preceding symbol is one of these.
(eval . (modify-syntax-entry ?~ "'"))
(eval . (modify-syntax-entry ?$ "'"))
(eval . (modify-syntax-entry ?+ "'"))))
(emacs-lisp-mode . ((indent-tabs-mode . nil)))
(texinfo-mode . ((indent-tabs-mode . nil)
(fill-column . 72))))

9
.guix-channel Normal file
View File

@ -0,0 +1,9 @@
(channel
(version 0)
(directory ".guix/modules"))
;;; Local Variables:
;;; mode: scheme
;;; End:

846
.guix/modules/crates-io.scm Normal file
View File

@ -0,0 +1,846 @@
(define-module (crates-io)
#:use-module (gnu packages crates-io)
#:use-module (guix)
#:use-module (guix build-system cargo)
#:use-module ((guix licenses) #:prefix license:))
(define-public rust-ubyte-0.10
(package
(name "rust-ubyte")
(version "0.10.3")
(source (origin
(method url-fetch)
(uri (crate-uri "ubyte" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1rlg6sr14i3rd4kfhrwd7b7w7krlg6kpjxkd6vcx0si8gnp0s7y8"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs (("rust-serde" ,rust-serde-1))))
(home-page "https://github.com/SergioBenitez/ubyte")
(synopsis
"A simple, complete, const-everything, saturating, human-friendly, no_std library for byte units. ")
(description
"This package provides a simple, complete, const-everything, saturating,human-friendly, no_std library for byte units.")
(license (list license:expat license:asl2.0))))
(define-public rust-oid-registry-0.4
(package
(name "rust-oid-registry")
(version "0.4.0")
(source (origin
(method url-fetch)
(uri (crate-uri "oid-registry" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0akbah3j8231ayrp2l1y5d9zmvbvqcsj0sa6s6dz6h85z8bhgqiq"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs (("rust-asn1-rs" ,rust-asn1-rs-0.3))))
(home-page "https://github.com/rusticata/oid-registry")
(synopsis "Object Identifier (OID) database")
(description "Object Identifier (OID) database")
(license (list license:expat license:asl2.0))))
(define-public rust-der-parser-7
(package
(name "rust-der-parser")
(version "7.0.0")
(source (origin
(method url-fetch)
(uri (crate-uri "der-parser" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"10kfa2gzl3x20mwgrd43cyi79xgkqxyzcyrh0xylv4apa33qlfgy"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs (("rust-asn1-rs" ,rust-asn1-rs-0.3)
("rust-cookie-factory" ,rust-cookie-factory-0.3)
("rust-displaydoc" ,rust-displaydoc-0.2)
("rust-nom" ,rust-nom-7)
("rust-num-bigint" ,rust-num-bigint-0.4)
("rust-num-traits" ,rust-num-traits-0.2)
("rust-rusticata-macros" ,rust-rusticata-macros-4))))
(home-page "https://github.com/rusticata/der-parser")
(synopsis "Parser/encoder for ASN.1 BER/DER data")
(description "Parser/encoder for ASN.1 BER/DER data")
(license (list license:expat license:asl2.0))))
(define-public rust-asn1-rs-derive-0.1
(package
(name "rust-asn1-rs-derive")
(version "0.1.0")
(source (origin
(method url-fetch)
(uri (crate-uri "asn1-rs-derive" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1gzf9vab06lk0zjvbr07axx64fndkng2s28bnj27fnwd548pb2yv"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs (("rust-proc-macro2" ,rust-proc-macro2-1)
("rust-quote" ,rust-quote-1)
("rust-syn" ,rust-syn-1)
("rust-synstructure" ,rust-synstructure-0.12))))
(home-page "https://github.com/rusticata/asn1-rs")
(synopsis "Derive macros for the `asn1-rs` crate")
(description "Derive macros for the `asn1-rs` crate")
(license (list license:expat license:asl2.0))))
(define-public rust-asn1-rs-0.3
(package
(name "rust-asn1-rs")
(version "0.3.1")
(source (origin
(method url-fetch)
(uri (crate-uri "asn1-rs" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0czsk1nd4dx2k83f7jzkn8klx05wbmblkx1jh51i4c170akhbzrh"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs (("rust-asn1-rs-derive" ,rust-asn1-rs-derive-0.1)
("rust-asn1-rs-impl" ,rust-asn1-rs-impl-0.1)
("rust-bitvec" ,rust-bitvec-1)
("rust-cookie-factory" ,rust-cookie-factory-0.3)
("rust-displaydoc" ,rust-displaydoc-0.2)
("rust-nom" ,rust-nom-7)
("rust-num-bigint" ,rust-num-bigint-0.4)
("rust-num-traits" ,rust-num-traits-0.2)
("rust-rusticata-macros" ,rust-rusticata-macros-4)
("rust-thiserror" ,rust-thiserror-1)
("rust-time" ,rust-time-0.3))))
(home-page "https://github.com/rusticata/asn1-rs")
(synopsis "Parser/encoder for ASN.1 BER/DER data")
(description "Parser/encoder for ASN.1 BER/DER data")
(license (list license:expat license:asl2.0))))
(define-public rust-x509-parser-0.13
(package
(name "rust-x509-parser")
(version "0.13.2")
(source (origin
(method url-fetch)
(uri (crate-uri "x509-parser" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"077bi0xyaa8cmrqf3rrw1z6kkzscwd1nxdxgs7mgz2ambg7bmfcz"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs (("rust-asn1-rs" ,rust-asn1-rs-0.3)
("rust-base64" ,rust-base64-0.13)
("rust-data-encoding" ,rust-data-encoding-2)
("rust-der-parser" ,rust-der-parser-7)
("rust-lazy-static" ,rust-lazy-static-1)
("rust-nom" ,rust-nom-7)
("rust-oid-registry" ,rust-oid-registry-0.4)
("rust-ring" ,rust-ring-0.16)
("rust-rusticata-macros" ,rust-rusticata-macros-4)
("rust-thiserror" ,rust-thiserror-1)
("rust-time" ,rust-time-0.3))))
(home-page "https://github.com/rusticata/x509-parser")
(synopsis "Parser for the X.509 v3 format (RFC 5280 certificates)")
(description "Parser for the X.509 v3 format (RFC 5280 certificates)")
(license (list license:expat license:asl2.0))))
(define-public rust-stable-pattern-0.1
(package
(name "rust-stable-pattern")
(version "0.1.0")
(source (origin
(method url-fetch)
(uri (crate-uri "stable-pattern" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0i8hq82vm82mqj02qqcsd7caibrih7x5w3a1xpm8hpv30261cr25"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs (("rust-memchr" ,rust-memchr-2))))
(home-page "https://github.com/SergioBenitez/stable-pattern")
(synopsis "Stable port of std::str::Pattern and friends.")
(description "Stable port of std::str::Pattern and friends.")
(license (list license:expat license:asl2.0))))
(define-public rust-rocket-http-0.5
(package
(name "rust-rocket-http")
(version "0.5.0-rc.3")
(source (origin
(method url-fetch)
(uri (crate-uri "rocket_http" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1x4h411ldb59c6bq05r7dzi65xiqz7akd63zydkkm832j74i4q4k"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs (("rust-cookie" ,rust-cookie-0.17)
("rust-either" ,rust-either-1)
("rust-futures" ,rust-futures-0.3)
("rust-http" ,rust-http-0.2)
("rust-hyper" ,rust-hyper-0.14)
("rust-indexmap" ,rust-indexmap-1)
("rust-log" ,rust-log-0.4)
("rust-memchr" ,rust-memchr-2)
("rust-pear" ,rust-pear-0.2)
("rust-percent-encoding" ,rust-percent-encoding-2)
("rust-pin-project-lite" ,rust-pin-project-lite-0.2)
("rust-ref-cast" ,rust-ref-cast-1)
("rust-rustls" ,rust-rustls-0.20)
("rust-rustls-pemfile" ,rust-rustls-pemfile-1)
("rust-serde" ,rust-serde-1)
("rust-smallvec" ,rust-smallvec-1)
("rust-stable-pattern" ,rust-stable-pattern-0.1)
("rust-state" ,rust-state-0.5)
("rust-time" ,rust-time-0.3)
("rust-tokio" ,rust-tokio-1)
("rust-tokio-rustls" ,rust-tokio-rustls-0.23)
("rust-uncased" ,rust-uncased-0.9)
("rust-uuid" ,rust-uuid-1)
("rust-x509-parser" ,rust-x509-parser-0.13))))
(home-page "https://rocket.rs")
(synopsis
"Types, traits, and parsers for HTTP requests, responses, and headers.
")
(description
"Types, traits, and parsers for HTTP requests, responses, and headers.")
(license (list license:expat license:asl2.0))))
(define-public rust-devise-core-0.4
(package
(name "rust-devise-core")
(version "0.4.1")
(source (origin
(method url-fetch)
(uri (crate-uri "devise_core" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0sp5idq0idng9i5kwjd8slvc724s97r28arrhyqq1jpx1ax0vd9m"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs (("rust-bitflags" ,rust-bitflags-2)
("rust-proc-macro2" ,rust-proc-macro2-1)
("rust-proc-macro2-diagnostics" ,rust-proc-macro2-diagnostics-0.10)
("rust-quote" ,rust-quote-1)
("rust-syn" ,rust-syn-2))))
(home-page "https://github.com/SergioBenitez/Devise")
(synopsis "A library for devising derives and other procedural macros.")
(description
"This package provides a library for devising derives and other procedural
macros.")
(license (list license:expat license:asl2.0))))
(define-public rust-devise-codegen-0.4
(package
(name "rust-devise-codegen")
(version "0.4.1")
(source (origin
(method url-fetch)
(uri (crate-uri "devise_codegen" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1mpy5mmsigkj5f72gby82yk4advcqj97am2wzn0dwkj8vnwg934w"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs (("rust-devise-core" ,rust-devise-core-0.4)
("rust-quote" ,rust-quote-1))))
(home-page "https://github.com/SergioBenitez/Devise")
(synopsis "A library for devising derives and other procedural macros.")
(description
"This package provides a library for devising derives and other procedural
macros.")
(license (list license:expat license:asl2.0))))
(define-public rust-devise-0.4
(package
(name "rust-devise")
(version "0.4.1")
(source (origin
(method url-fetch)
(uri (crate-uri "devise" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1y45iag4hyvspkdsf6d856hf0ihf9vjnaga3c7y6c72l7zywxsnn"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs (("rust-devise-codegen" ,rust-devise-codegen-0.4)
("rust-devise-core" ,rust-devise-core-0.4))))
(home-page "https://github.com/SergioBenitez/Devise")
(synopsis "A library for devising derives and other procedural macros.")
(description
"This package provides a library for devising derives and other procedural
macros.")
(license (list license:expat license:asl2.0))))
(define-public rust-rocket-codegen-0.5
(package
(name "rust-rocket-codegen")
(version "0.5.0-rc.3")
(source (origin
(method url-fetch)
(uri (crate-uri "rocket_codegen" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"12shzkr9zmc0v3r190nhcfavly28nngja2g4h94p93122hzkb4vh"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs (("rust-devise" ,rust-devise-0.4)
("rust-glob" ,rust-glob-0.3)
("rust-indexmap" ,rust-indexmap-1)
("rust-proc-macro2" ,rust-proc-macro2-1)
("rust-quote" ,rust-quote-1)
("rust-rocket-http" ,rust-rocket-http-0.5)
("rust-syn" ,rust-syn-2)
("rust-unicode-xid" ,rust-unicode-xid-0.2))))
(home-page "https://rocket.rs")
(synopsis "Procedural macros for the Rocket web framework.")
(description "Procedural macros for the Rocket web framework.")
(license (list license:expat license:asl2.0))))
(define-public rust-rmp-0.8
(package
(name "rust-rmp")
(version "0.8.12")
(source (origin
(method url-fetch)
(uri (crate-uri "rmp" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"083bbqw8ibqp63v6scmaxmy5x8yznj4j0i2n6jjivv9qrjk6163z"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs (("rust-byteorder" ,rust-byteorder-1)
("rust-num-traits" ,rust-num-traits-0.2)
("rust-paste" ,rust-paste-1))))
(home-page "https://github.com/3Hren/msgpack-rust")
(synopsis "Pure Rust MessagePack serialization implementation")
(description "Pure Rust @code{MessagePack} serialization implementation")
(license license:expat)))
(define-public rust-rmp-serde-1
(package
(name "rust-rmp-serde")
(version "1.1.2")
(source (origin
(method url-fetch)
(uri (crate-uri "rmp-serde" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"12i5aglyni58hlq19pi58z1z6a1hv6l04p9y8ms8l3cqx9gaizmz"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs (("rust-byteorder" ,rust-byteorder-1)
("rust-rmp" ,rust-rmp-0.8)
("rust-serde" ,rust-serde-1))))
(home-page "https://github.com/3Hren/msgpack-rust")
(synopsis "Serde bindings for RMP")
(description "Serde bindings for RMP")
(license license:expat)))
(define-public rust-multer-2
(package
(name "rust-multer")
(version "2.1.0")
(source (origin
(method url-fetch)
(uri (crate-uri "multer" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1hjiphaypj3phqaj5igrzcia9xfmf4rr4ddigbh8zzb96k1bvb01"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs (("rust-bytes" ,rust-bytes-1)
("rust-encoding-rs" ,rust-encoding-rs-0.8)
("rust-futures-util" ,rust-futures-util-0.3)
("rust-http" ,rust-http-0.2)
("rust-httparse" ,rust-httparse-1)
("rust-log" ,rust-log-0.4)
("rust-memchr" ,rust-memchr-2)
("rust-mime" ,rust-mime-0.3)
("rust-serde" ,rust-serde-1)
("rust-serde-json" ,rust-serde-json-1)
("rust-spin" ,rust-spin-0.9)
("rust-tokio" ,rust-tokio-1)
("rust-tokio-util" ,rust-tokio-util-0.7)
("rust-version-check" ,rust-version-check-0.9))))
(home-page "https://github.com/rousan/multer-rs")
(synopsis
"An async parser for `multipart/form-data` content-type in Rust.")
(description
"An async parser for `multipart/form-data` content-type in Rust.")
(license license:expat)))
(define-public rust-yansi-1
(package
(name "rust-yansi")
(version "1.0.0-rc.1")
(source (origin
(method url-fetch)
(uri (crate-uri "yansi" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0xr3n41j5v00scfkac2d6vhkxiq9nz3l5j6vw8f3g3bqixdjjrqk"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs (("rust-is-terminal" ,rust-is-terminal-0.4))))
(home-page "https://github.com/SergioBenitez/yansi")
(synopsis "A dead simple ANSI terminal color painting library.")
(description
"This package provides a dead simple ANSI terminal color painting library.")
(license (list license:expat license:asl2.0))))
(define-public rust-proc-macro2-diagnostics-0.10
(package
(name "rust-proc-macro2-diagnostics")
(version "0.10.1")
(source (origin
(method url-fetch)
(uri (crate-uri "proc-macro2-diagnostics" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1j48ipc80pykvhx6yhndfa774s58ax1h6sm6mlhf09ls76f6l1mg"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs (("rust-proc-macro2" ,rust-proc-macro2-1)
("rust-quote" ,rust-quote-1)
("rust-syn" ,rust-syn-2)
("rust-version-check" ,rust-version-check-0.9)
("rust-yansi" ,rust-yansi-1))))
(home-page "https://github.com/SergioBenitez/proc-macro2-diagnostics")
(synopsis "Diagnostics for proc-macro2.")
(description "Diagnostics for proc-macro2.")
(license (list license:expat license:asl2.0))))
(define-public rust-pear-codegen-0.2
(package
(name "rust-pear-codegen")
(version "0.2.7")
(source (origin
(method url-fetch)
(uri (crate-uri "pear_codegen" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0m0dras73cm92sqn1715ypn46h9z1r8sc043kq9rq1n8v89hz7ys"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs (("rust-proc-macro2" ,rust-proc-macro2-1)
("rust-proc-macro2-diagnostics" ,rust-proc-macro2-diagnostics-0.10)
("rust-quote" ,rust-quote-1)
("rust-syn" ,rust-syn-2))))
(home-page "")
(synopsis "A (codegen) pear is a fruit.")
(description "This package provides a (codegen) pear is a fruit.")
(license (list license:expat license:asl2.0))))
(define-public rust-inlinable-string-0.1
(package
(name "rust-inlinable-string")
(version "0.1.15")
(source (origin
(method url-fetch)
(uri (crate-uri "inlinable_string" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1ysjci8yfvxgf51z0ny2nnwhxrclhmb3vbngin8v4bznhr3ybyn8"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs (("rust-serde" ,rust-serde-1))))
(home-page "https://github.com/fitzgen/inlinable_string")
(synopsis
"The `inlinable_string` crate provides the `InlinableString` type -- an owned, grow-able UTF-8 string that stores small strings inline and avoids heap-allocation -- and the `StringExt` trait which abstracts string operations over both `std::string::String` and `InlinableString` (or even your own custom string type).")
(description
"The `inlinable_string` crate provides the @code{`InlinableString`} type -- an
owned, grow-able UTF-8 string that stores small strings inline and avoids
heap-allocation -- and the @code{`StringExt`} trait which abstracts string
operations over both `std::string::String` and @code{`InlinableString`} (or even
your own custom string type).")
(license (list license:asl2.0 license:expat))))
(define-public rust-pear-0.2
(package
(name "rust-pear")
(version "0.2.7")
(source (origin
(method url-fetch)
(uri (crate-uri "pear" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"077pd1lbr5g99gsmcbglcrq6izl32qvd2l2bc2cx6aajf76qd8v1"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs (("rust-inlinable-string" ,rust-inlinable-string-0.1)
("rust-pear-codegen" ,rust-pear-codegen-0.2)
("rust-yansi" ,rust-yansi-1))))
(home-page "")
(synopsis "A pear is a fruit.")
(description "This package provides a pear is a fruit.")
(license (list license:expat license:asl2.0))))
(define-public rust-figment-0.10
(package
(name "rust-figment")
(version "0.10.10")
(source (origin
(method url-fetch)
(uri (crate-uri "figment" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"19f932h57nzw6kd3ispch1aigcwj841sjw70f42qday9yhkf4is5"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs (("rust-atomic" ,rust-atomic-0.5)
("rust-parking-lot" ,rust-parking-lot-0.12)
("rust-pear" ,rust-pear-0.2)
("rust-serde" ,rust-serde-1)
("rust-serde-json" ,rust-serde-json-1)
("rust-serde-yaml" ,rust-serde-yaml-0.9)
("rust-tempfile" ,rust-tempfile-3)
("rust-toml" ,rust-toml-0.7)
("rust-uncased" ,rust-uncased-0.9)
("rust-version-check" ,rust-version-check-0.9))))
(home-page "https://github.com/SergioBenitez/Figment")
(synopsis "A configuration library so con-free, it's unreal.")
(description
"This package provides a configuration library so con-free, it's unreal.")
(license (list license:expat license:asl2.0))))
(define-public rust-binascii-0.1
(package
(name "rust-binascii")
(version "0.1.4")
(source (origin
(method url-fetch)
(uri (crate-uri "binascii" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0wnaglgl72pn5ilv61q6y34w76gbg7crb8ifqk6lsxnq2gajjg9q"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t))
(home-page "https://github.com/naim94a/binascii-rs")
(synopsis
"Useful no-std binascii operations including base64, base32 and base16 (hex)")
(description
"Useful no-std binascii operations including base64, base32 and base16 (hex)")
(license license:expat)))
(define-public rust-rocket-0.5
(package
(name "rust-rocket")
(version "0.5.0-rc.3")
(source (origin
(method url-fetch)
(uri (crate-uri "rocket" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1jcwrkqvmbh1gwvg55kv6mdp8c9331hqzd45jq9gsp5f05s4ywsq"))))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs (("rust-async-stream" ,rust-async-stream-0.3)
("rust-async-trait" ,rust-async-trait-0.1)
("rust-atomic" ,rust-atomic-0.5)
("rust-binascii" ,rust-binascii-0.1)
("rust-bytes" ,rust-bytes-1)
("rust-either" ,rust-either-1)
("rust-figment" ,rust-figment-0.10)
("rust-futures" ,rust-futures-0.3)
("rust-indexmap" ,rust-indexmap-1)
("rust-is-terminal" ,rust-is-terminal-0.4)
("rust-log" ,rust-log-0.4)
("rust-memchr" ,rust-memchr-2)
("rust-multer" ,rust-multer-2)
("rust-num-cpus" ,rust-num-cpus-1)
("rust-parking-lot" ,rust-parking-lot-0.12)
("rust-pin-project-lite" ,rust-pin-project-lite-0.2)
("rust-rand" ,rust-rand-0.8)
("rust-ref-cast" ,rust-ref-cast-1)
("rust-rmp-serde" ,rust-rmp-serde-1)
("rust-rocket-codegen" ,rust-rocket-codegen-0.5)
("rust-rocket-http" ,rust-rocket-http-0.5)
("rust-serde" ,rust-serde-1)
("rust-serde-json" ,rust-serde-json-1)
("rust-state" ,rust-state-0.5)
("rust-tempfile" ,rust-tempfile-3)
("rust-time" ,rust-time-0.3)
("rust-tokio" ,rust-tokio-1)
("rust-tokio-stream" ,rust-tokio-stream-0.1)
("rust-tokio-util" ,rust-tokio-util-0.7)
("rust-ubyte" ,rust-ubyte-0.10)
("rust-uuid" ,rust-uuid-1)
("rust-version-check" ,rust-version-check-0.9)
("rust-yansi" ,rust-yansi-0.5))
#:cargo-development-inputs (("rust-figment" ,rust-figment-0.10)
("rust-pretty-assertions" ,rust-pretty-assertions-1))))
(home-page "https://rocket.rs")
(synopsis
"Web framework with a focus on usability, security, extensibility, and speed.
")
(description
"Web framework with a focus on usability, security, extensibility, and speed.")
(license (list license:expat license:asl2.0))))
(define-public rust-quick-xml-0.29
(package
(name "rust-quick-xml")
(version "0.29.0")
(source (origin
(method url-fetch)
(uri (crate-uri "quick-xml" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0lfaciwimmlsx9c6w3vhypk5ssqkhzi1vv0g95hpnb6q2n125fc1"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs (("rust-arbitrary" ,rust-arbitrary-1)
("rust-document-features" ,rust-document-features-0.2)
("rust-encoding-rs" ,rust-encoding-rs-0.8)
("rust-memchr" ,rust-memchr-2)
("rust-serde" ,rust-serde-1)
("rust-tokio" ,rust-tokio-1))))
(home-page "https://github.com/tafia/quick-xml")
(synopsis "High performance xml reader and writer")
(description "High performance xml reader and writer")
(license license:expat)))
(define-public rust-plist-1
(package
(name "rust-plist")
(version "1.5.0")
(source (origin
(method url-fetch)
(uri (crate-uri "plist" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"01mfd4129p1iqadvpylpbx5ma3p2x4cdih2bwai5gnx3zqf01h5x"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs (("rust-base64" ,rust-base64-0.21)
("rust-indexmap" ,rust-indexmap-1)
("rust-line-wrap" ,rust-line-wrap-0.1)
("rust-quick-xml" ,rust-quick-xml-0.29)
("rust-serde" ,rust-serde-1)
("rust-time" ,rust-time-0.3))))
(home-page "https://github.com/ebarnard/rust-plist/")
(synopsis "A rusty plist parser. Supports Serde serialization.")
(description
"This package provides a rusty plist parser. Supports Serde serialization.")
(license license:expat)))
(define-public rust-fancy-regex-0.11
(package
(name "rust-fancy-regex")
(version "0.11.0")
(source (origin
(method url-fetch)
(uri (crate-uri "fancy-regex" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"18j0mmzfycibhxhhhfja00dxd1vf8x5c28lbry224574h037qpxr"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs (("rust-bit-set" ,rust-bit-set-0.5)
("rust-regex" ,rust-regex-1))))
(home-page "https://github.com/fancy-regex/fancy-regex")
(synopsis
"An implementation of regexes, supporting a relatively rich set of features, including backreferences and look-around.")
(description
"An implementation of regexes, supporting a relatively rich set of features,
including backreferences and look-around.")
(license license:expat)))
(define-public rust-syntect-5
(package
(name "rust-syntect")
(version "5.1.0")
(source (origin
(method url-fetch)
(uri (crate-uri "syntect" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"14cg314vzabi45cdbqgcpav0dlx3d18blp24n3z8pl7q7cq4naz0"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs (("rust-bincode" ,rust-bincode-1)
("rust-bitflags" ,rust-bitflags-1)
("rust-fancy-regex" ,rust-fancy-regex-0.11)
("rust-flate2" ,rust-flate2-1)
("rust-fnv" ,rust-fnv-1)
("rust-once-cell" ,rust-once-cell-1)
("rust-onig" ,rust-onig-6)
("rust-plist" ,rust-plist-1)
("rust-regex-syntax" ,rust-regex-syntax-0.7)
("rust-serde" ,rust-serde-1)
("rust-serde-json" ,rust-serde-json-1)
("rust-thiserror" ,rust-thiserror-1)
("rust-walkdir" ,rust-walkdir-2)
("rust-yaml-rust" ,rust-yaml-rust-0.4))))
(home-page "https://github.com/trishume/syntect")
(synopsis
"library for high quality syntax highlighting and code intelligence using Sublime Text's grammars")
(description
"library for high quality syntax highlighting and code intelligence using Sublime
Text's grammars")
(license license:expat)))
(define-public rust-emojis-0.5
(package
(name "rust-emojis")
(version "0.5.3")
(source (origin
(method url-fetch)
(uri (crate-uri "emojis" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0pdrhzlx53ksb41dx3qjl6qg9nj711vj28r8d92pv0lij5sbq1rl"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs (("rust-phf" ,rust-phf-0.11))))
(home-page "https://github.com/rossmacarthur/emojis")
(synopsis
"✨ Lookup and iterate over emoji names, shortcodes, and groups")
(description
"✨ Lookup and iterate over emoji names, shortcodes, and groups")
(license (list license:expat license:asl2.0))))
(define-public rust-comrak-0.16
(package
(name "rust-comrak")
(version "0.16.0")
(source (origin
(method url-fetch)
(uri (crate-uri "comrak" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"004m3512w5xwzxmsmmvgf5708is8d2qwj36cg4ay1b9dh783cj3q"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs (("rust-clap" ,rust-clap-4)
("rust-emojis" ,rust-emojis-0.5)
("rust-entities" ,rust-entities-1)
("rust-memchr" ,rust-memchr-2)
("rust-once-cell" ,rust-once-cell-1)
("rust-pest" ,rust-pest-2)
("rust-pest-derive" ,rust-pest-derive-2)
("rust-regex" ,rust-regex-1)
("rust-shell-words" ,rust-shell-words-1)
("rust-slug" ,rust-slug-0.1)
("rust-syntect" ,rust-syntect-5)
("rust-typed-arena" ,rust-typed-arena-2)
("rust-unicode-categories" ,rust-unicode-categories-0.1)
("rust-xdg" ,rust-xdg-2))))
(home-page "https://github.com/kivikakk/comrak")
(synopsis
"A 100% CommonMark-compatible GitHub Flavored Markdown parser and formatter")
(description
"This package provides a 100% @code{CommonMark-compatible} @code{GitHub} Flavored
Markdown parser and formatter")
(license license:bsd-2)))
(define-public rust-askama-derive-0.12
(package
(name "rust-askama-derive")
(version "0.12.1")
(source (origin
(method url-fetch)
(uri (crate-uri "askama_derive" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"157w36qk4l6nzcy23bhm0bhkkl6d4bzncsg5b21hjp2l2c2bwby2"))))
(build-system cargo-build-system)
(arguments
`(#:skip-build? #t
#:cargo-inputs (("rust-basic-toml" ,rust-basic-toml-0.1)
("rust-mime" ,rust-mime-0.3)
("rust-mime-guess" ,rust-mime-guess-2)
("rust-nom" ,rust-nom-7)
("rust-proc-macro2" ,rust-proc-macro2-1)
("rust-quote" ,rust-quote-1)
("rust-serde" ,rust-serde-1)
("rust-syn" ,rust-syn-2))))
(home-page "https://github.com/djc/askama")
(synopsis "Procedural macro package for Askama")
(description "Procedural macro package for Askama")
(license (list license:expat license:asl2.0))))
(define-public rust-askama-0.12
(package
(name "rust-askama")
(version "0.12.0")
(source (origin
(method url-fetch)
(uri (crate-uri "askama" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0zmmrzwy1l5mlzwxlwjvssh23i55bf1y9gkvf8rri3gsfg7w7js7"))))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs (("rust-askama-derive" ,rust-askama-derive-0.12)
("rust-askama-escape" ,rust-askama-escape-0.10)
("rust-comrak" ,rust-comrak-0.16)
("rust-humansize" ,rust-humansize-2)
("rust-num-traits" ,rust-num-traits-0.2)
("rust-percent-encoding" ,rust-percent-encoding-2)
("rust-serde" ,rust-serde-1)
("rust-serde-json" ,rust-serde-json-1)
("rust-serde-yaml" ,rust-serde-yaml-0.9))))
(home-page "https://github.com/djc/askama")
(synopsis "Type-safe, compiled Jinja-like templates for Rust")
(description "Type-safe, compiled Jinja-like templates for Rust")
(license (list license:expat license:asl2.0))))

View File

@ -0,0 +1,34 @@
(load "rust.scm")
(load "crates-io.scm")
(define-module (meowy-webring)
#:use-module (crates-io)
#:use-module (guix)
#:use-module (guix build-system cargo)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages)
#:use-module (gnu packages crates-io)
#:use-module (rust)
#:use-module (srfi srfi-1))
(define (keep-file? file stat)
(not (any (lambda (my-string)
(string-contains file my-string))
(list ".git" ".dir-locals.el" "guix.scm" ".guix"))))
(define-public meowy-webring
(package
(name "meowy-webring")
(version "0.1.0-git")
(source (local-file "../.." "meowy-webring-checkout"
#:recursive? #t
#:select? keep-file?))
(build-system cargo-build-system)
(arguments (list #:rust backported-rust
#:cargo-inputs `(("rust-rocket" ,rust-rocket-0.5)
("rust-askama" ,rust-askama-0.12))))
(synopsis "")
(description "")
(home-page "")
(license license:cc0)))
meowy-webring

View File

@ -0,0 +1,20 @@
--- a/vendor/fd-lock/Cargo.toml 2023-05-31 14:44:48.000000000 -0700
+++ b/vendor/fd-lock/Cargo.toml 2023-07-14 21:19:34.637702319 -0700
@@ -45,7 +45,7 @@
[target."cfg(unix)".dependencies.rustix]
version = "0.37.0"
-features = ["fs"]
+features = ["fs", "cc"]
[target."cfg(windows)".dependencies.windows-sys]
version = "0.45.0"
--- a/src/bootstrap/Cargo.lock 2023-07-11 20:32:40.000000000 -0700
+++ b/src/bootstrap/Cargo.lock 2023-07-14 22:41:53.269284713 -0700
@@ -618,6 +618,7 @@
dependencies = [
"bitflags",
+ "cc",
"errno",
"io-lifetimes",
"libc",

302
.guix/modules/rust.scm Normal file
View File

@ -0,0 +1,302 @@
(define-module (rust)
#:use-module (guix)
#:use-module (guix build-system cargo)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages)
#:use-module (gnu packages crates-io)
#:use-module (gnu packages gdb)
#:use-module (gnu packages linux)
#:use-module (gnu packages rust)
#:use-module (srfi srfi-1))
(define rust-1.68
(@@ (gnu packages rust) rust-1.68))
(define rust-bootstrapped-package
(@@ (gnu packages rust) rust-bootstrapped-package))
(define %cargo-reference-hash
(@@ (gnu packages rust) %cargo-reference-hash))
(define rust-1.69
(let ((base-rust
(rust-bootstrapped-package
rust-1.68 "1.69.0" "03zn7kx5bi5mdfsqfccj4h8gd6abm7spj0kjsfxwlv5dcwc9f1gv")))
(package
(inherit base-rust)
(source
(origin
(inherit (package-source base-rust))
(snippet
'(begin
(for-each delete-file-recursively
'("src/llvm-project"
"vendor/tikv-jemalloc-sys/jemalloc"))
;; Also remove the bundled (mostly Windows) libraries.
(for-each delete-file
(find-files "vendor" ".*\\.(a|dll|exe|lib)$")))))))))
(define rust-1.70
(let ((base-rust
(rust-bootstrapped-package
rust-1.69 "1.70.0" "0z6j7d0ni0rmfznv0w3mrf882m11kyh51g2bxkj40l3s1c0axgxj")))
(package
(inherit base-rust)
(source
(origin
(inherit (package-source base-rust))
;; Rust 1.70 uses the rustix library which on Linux, it defaults to
;; using outline ASM which without the cc cargo feature enabled, it
;; will expect a precompiled binary library. This patch will enable the cargo
;; cc feature flag inside the fd-lock vendored Cargo.toml file, which is the
;; crate that uses rustix.
(patches (list "./patches/rust-1.70-fix-rustix-build.patch"))
(patch-flags '("-p1"))))
(arguments
(substitute-keyword-arguments (package-arguments base-rust)
((#:phases phases)
`(modify-phases ,phases
(replace 'build
(lambda* (#:key parallel-build? #:allow-other-keys)
(let ((job-spec (string-append
"-j" (if parallel-build?
(number->string (parallel-job-count))
"1"))))
(invoke "./x.py" job-spec "build" "--stage=1"
"library/std"
"src/tools/cargo")))))))))))
(define rust-1.71
(let ((base-rust
(rust-bootstrapped-package
rust-1.70 "1.71.0" "15jc0d13cmrh2xvpkyyvsbwgn3w4klqiwf2wlgzfp22mvjmy8rx6")))
(package
(inherit base-rust)
(arguments
(substitute-keyword-arguments (package-arguments base-rust)
((#:validate-runpath? _ #t)
#f)
((#:phases phases)
`(modify-phases ,phases
(replace 'patch-cargo-checksums
(lambda _
(substitute* '("Cargo.lock"
"src/bootstrap/Cargo.lock"
"src/tools/rust-analyzer/Cargo.lock"
"src/tools/cargo/Cargo.lock")
(("(checksum = )\".*\"" all name)
(string-append name "\"" ,%cargo-reference-hash "\"")))
(generate-all-checksums "vendor"))))))))))
;;; Function to make creating a list to ignore tests a bit easier.
(define (make-ignore-test-list strs)
(map (lambda (str)
(let ((ignore-string (format #f "#[ignore]\n~a" str)))
`((,str) ,ignore-string)))
strs))
;;; Note: Only the latest versions of Rust are supported and tested. The
;;; intermediate rusts are built for bootstrapping purposes and should not
;;; be relied upon. This is to ease maintenance and reduce the time
;;; required to build the full Rust bootstrap chain.
;;;
;;; Here we take the latest included Rust, make it public, and re-enable tests
;;; and extra components such as rustfmt.
(define-public backported-rust
(let ((base-rust rust-1.71))
(package
(inherit base-rust)
(outputs (cons "rustfmt" (package-outputs base-rust)))
(arguments
(substitute-keyword-arguments (package-arguments base-rust)
((#:tests? _ #f)
(not (%current-target-system)))
((#:phases phases)
`(modify-phases ,phases
(add-after 'unpack 'relax-gdb-auto-load-safe-path
;; Allow GDB to load binaries from any location, otherwise the
;; gdbinfo tests fail. This is only useful when testing with a
;; GDB version newer than 8.2.
(lambda _
(setenv "HOME" (getcwd))
(with-output-to-file (string-append (getenv "HOME") "/.gdbinit")
(lambda _
(format #t "set auto-load safe-path /~%")))
;; Do not launch gdb with '-nx' which causes it to not execute
;; any init file.
(substitute* "src/tools/compiletest/src/runtest.rs"
(("\"-nx\".as_ref\\(\\), ")
""))))
(add-after 'unpack 'patch-cargo-env-shebang
(lambda _
(substitute* '("src/tools/cargo/tests/testsuite/build.rs"
"src/tools/cargo/tests/testsuite/fix.rs")
;; The cargo *_wrapper tests set RUSTC.*WRAPPER environment
;; variable which points to /usr/bin/env. Since it's not a
;; shebang, it needs to be manually patched.
(("/usr/bin/env")
(which "env")))))
(add-after 'unpack 'disable-tests-requiring-git
(lambda _
(substitute* "src/tools/cargo/tests/testsuite/git.rs"
,@(make-ignore-test-list '("fn fetch_downloads_with_git2_first_then_with_gitoxide_and_vice_versa"
"fn git_fetch_cli_env_clean"
"fn git_with_cli_force"
"fn use_the_cli")))
;; Gitoxide tests seem to require the internet to run
;; and Guix build containers don't have the internet.
(substitute* "src/tools/cargo/tests/testsuite/git_shallow.rs"
,@(make-ignore-test-list
'("fn gitoxide_clones_git_dependency_with_shallow_protocol_and_git2_is_used_for_followup_fetches"
"fn gitoxide_clones_registry_with_shallow_protocol_and_aborts_and_updates_again"
"fn gitoxide_clones_registry_with_shallow_protocol_and_follow_up_fetch_maintains_shallowness"
"fn gitoxide_clones_registry_with_shallow_protocol_and_follow_up_with_git2_fetch"
"fn gitoxide_clones_registry_without_shallow_protocol_and_follow_up_fetch_uses_shallowness"
"fn gitoxide_clones_shallow_two_revs_same_deps"
"fn gitoxide_git_dependencies_switch_from_branch_to_rev"
"fn gitoxide_shallow_clone_followed_by_non_shallow_update"
"fn shallow_deps_work_with_revisions_and_branches_mixed_on_same_dependency")))
(substitute* "src/tools/cargo/tests/testsuite/offline.rs"
,@(make-ignore-test-list '("fn gitoxide_cargo_compile_offline_with_cached_git_dep_shallow_dep")))
(substitute* "src/tools/cargo/tests/testsuite/patch.rs"
,@(make-ignore-test-list '("fn gitoxide_clones_shallow_old_git_patch")))))
(add-after 'unpack 'disable-tests-requiring-mercurial
(lambda _
(substitute*
"src/tools/cargo/tests/testsuite/init/mercurial_autodetect/mod.rs"
,@(make-ignore-test-list '("fn case")))
(substitute*
"src/tools/cargo/tests/testsuite/init/simple_hg/mod.rs"
,@(make-ignore-test-list '("fn case")))
(substitute*
"src/tools/cargo/tests/testsuite/init/simple_hg_ignore_exists/mod.rs"
,@(make-ignore-test-list '("fn case")))
(substitute*
"src/tools/cargo/tests/testsuite/new.rs"
,@(make-ignore-test-list '("fn simple_hg")))))
(add-after 'unpack 'disable-tests-broken-on-aarch64
(lambda _
(with-directory-excursion "src/tools/cargo/tests/testsuite/"
(substitute* "build_script_extra_link_arg.rs"
(("^fn build_script_extra_link_arg_bin_single" m)
(string-append "#[ignore]\n" m)))
(substitute* "build_script.rs"
(("^fn env_test" m)
(string-append "#[ignore]\n" m)))
(substitute* "collisions.rs"
(("^fn collision_doc_profile_split" m)
(string-append "#[ignore]\n" m)))
(substitute* "concurrent.rs"
(("^fn no_deadlock_with_git_dependencies" m)
(string-append "#[ignore]\n" m)))
(substitute* "features2.rs"
(("^fn dep_with_optional_host_deps_activated" m)
(string-append "#[ignore]\n" m))))))
(add-after 'unpack 'patch-command-exec-tests
;; This test suite includes some tests that the stdlib's
;; `Command` execution properly handles in situations where
;; the environment or PATH variable are empty, but this fails
;; since we don't have `echo` available at its usual FHS
;; location.
(lambda _
(substitute* (match (find-files "." "^command-exec.rs$")
((file) file))
(("Command::new\\(\"echo\"\\)")
(format #f "Command::new(~s)" (which "echo"))))))
(add-after 'unpack 'patch-command-uid-gid-test
(lambda _
(substitute* (match (find-files "." "^command-uid-gid.rs$")
((file) file))
(("/bin/sh")
(which "sh")))))
(add-after 'unpack 'skip-shebang-tests
;; This test make sure that the parser behaves properly when a
;; source file starts with a shebang. Unfortunately, the
;; patch-shebangs phase changes the meaning of these edge-cases.
;; We skip the test since it's drastically unlikely Guix's
;; packaging will introduce a bug here.
(lambda _
(delete-file "tests/ui/parser/shebang/sneaky-attrib.rs")))
(add-after 'unpack 'patch-process-tests
(lambda* (#:key inputs #:allow-other-keys)
(let ((bash (assoc-ref inputs "bash")))
(substitute* "library/std/src/process/tests.rs"
(("\"/bin/sh\"")
(string-append "\"" bash "/bin/sh\"")))
;; The three tests which are known to fail upstream on QEMU
;; emulation on aarch64 and riscv64 also fail on x86_64 in Guix's
;; build system. Skip them on all builds.
(substitute* "library/std/src/sys/unix/process/process_common/tests.rs"
(("target_arch = \"arm\",") "target_os = \"linux\",")))))
(add-after 'unpack 'disable-interrupt-tests
(lambda _
;; This test hangs in the build container; disable it.
(substitute* (match (find-files "." "^freshness.rs$")
((file) file))
(("fn linking_interrupted")
"#[ignore]\nfn linking_interrupted"))
;; Likewise for the ctrl_c_kills_everyone test.
(substitute* (match (find-files "." "^death.rs$")
((file) file))
(("fn ctrl_c_kills_everyone")
"#[ignore]\nfn ctrl_c_kills_everyone"))))
(add-after 'unpack 'adjust-rpath-values
;; This adds %output:out to rpath, allowing us to install utilities in
;; different outputs while reusing the shared libraries.
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(substitute* "src/bootstrap/builder.rs"
((" = rpath.*" all)
(string-append all
" "
"rustflags.arg(\"-Clink-args=-Wl,-rpath="
out "/lib\");\n"))))))
(add-after 'configure 'add-gdb-to-config
(lambda* (#:key inputs #:allow-other-keys)
(let ((gdb (assoc-ref inputs "gdb")))
(substitute* "config.toml"
(("^python =.*" all)
(string-append all
"gdb = \"" gdb "/bin/gdb\"\n"))))))
(replace 'build
;; Phase overridden to also build rustfmt.
(lambda* (#:key parallel-build? #:allow-other-keys)
(let ((job-spec (string-append
"-j" (if parallel-build?
(number->string (parallel-job-count))
"1"))))
(invoke "./x.py" job-spec "build"
"library/std" ;rustc
"src/tools/cargo"
"src/tools/rustfmt"))))
(replace 'check
;; Phase overridden to also test rustfmt.
(lambda* (#:key tests? parallel-build? #:allow-other-keys)
(when tests?
(let ((job-spec (string-append
"-j" (if parallel-build?
(number->string (parallel-job-count))
"1"))))
(invoke "./x.py" job-spec "test" "-vv"
"library/std"
"src/tools/cargo"
"src/tools/rustfmt")))))
(replace 'install
;; Phase overridden to also install rustfmt.
(lambda* (#:key outputs #:allow-other-keys)
(invoke "./x.py" "install")
(substitute* "config.toml"
;; Adjust the prefix to the 'cargo' output.
(("prefix = \"[^\"]*\"")
(format #f "prefix = ~s" (assoc-ref outputs "cargo"))))
(invoke "./x.py" "install" "cargo")
(substitute* "config.toml"
;; Adjust the prefix to the 'rustfmt' output.
(("prefix = \"[^\"]*\"")
(format #f "prefix = ~s" (assoc-ref outputs "rustfmt"))))
(invoke "./x.py" "install" "rustfmt")))))))
;; Add test inputs.
(native-inputs (cons* `("gdb" ,gdb/pinned)
`("procps" ,procps)
(package-native-inputs base-rust))))))

1
guix.scm Symbolic link
View File

@ -0,0 +1 @@
.guix/modules/meowy-webring.scm

12
manifest.scm Normal file
View File

@ -0,0 +1,12 @@
;; What follows is a "manifest" equivalent to the command line you gave.
;; You can store it in a file that you may then pass to any 'guix' command
;; that accepts a '--manifest' (or '-m') option.
(specifications->manifest
(list "nss-certs"
"rust-async-stream"
"rust-cargo"
"rust-rocket"
"rust-askama"
"rust-serde"
"rust"))