(use-modules (guix download) (guix packages) (guix build-system cargo) (gnu packages crates-io) (srfi srfi-1) (srfi srfi-26) (gnu packages crates-graphics) (gnu packages rust-apps)) (define-public rust-pretty-assertions-0.5 (package (inherit rust-pretty-assertions-0.6) (name "rust-pretty-assertions") (version "0.5.1") (source (origin (method url-fetch) (uri (crate-uri "pretty_assertions" version)) (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 "1ins6swkpxmrh8q5h96h8nv0497d3dclsiyx2lyvqi6py0q980is")))) (build-system cargo-build-system) (arguments `(#:tests? #f #:cargo-inputs (("rust-ansi-term" ,rust-ansi-term-0.11) ("rust-difference" ,rust-difference-2)))))) ;; /gnu/store/wknzymkfbfjbxwfd3djrn4hk9zdfgs56-rust-xmlparser-0.13.3 -- original ;; ;; libxmlparser-f82b201ea4144ed3.rlib (define-public myrust-xmlparser (package (inherit rust-xmlparser-0.13) (outputs '("out" "rlib")) (arguments `(#:skip-build? #f #:tests? #f #:cargo-build-flags (list "--release" "-vv") #:phases (modify-phases %standard-phases (add-after 'install 'install-rlib (lambda* (#:key outputs #:allow-other-keys) (let* ((rout (assoc-ref outputs "rlib")) (dest (string-append rout "/rlib"))) ;;(mkdir dest) ;;(for-each (cut install-file <> (string-append rout "/rlib")) (for-each (lambda (fn) (install-file fn (string-append rout "/rlib"))) (find-files "target/release/deps" "\\.(rlib|rmeta)$")) ))) ;; (add-after 'install 'fail ;; (lambda _ #f)) ))))) (define-public myrust-roxmltree (package (inherit rust-roxmltree-0.14) ;;(outputs '("out" "crate")) (inputs `(("rust-xmlparser" ,myrust-xmlparser "rlib"))) (arguments `(#:skip-build? #f #:tests? #f ;;#:vendor-dir "/tmp/src" #:cargo-build-flags (list "--release" "-vv") #:cargo-inputs (("rust-xmlparser:src" ,rust-xmlparser-0.13) ("rust-pretty-assertions" ,rust-pretty-assertions-0.5)) #:phases (modify-phases %standard-phases (add-after 'patch-cargo-checksums 'bring-in-rlib (lambda* (#:key inputs #:allow-other-keys) (let* ((rin (assoc-ref inputs "rust-xmlparser")) (src (assoc-ref inputs "rust-xmlparser")) (rlib (string-append rin "/rlib"))) (mkdir "/tmp/guix-build-rust-xmlparser-0.13.3.drv-0/") (copy-recursively "guix-vendor/rust-xmlparser-0.13.3.tar.gz" "/tmp/guix-build-rust-xmlparser-0.13.3.drv-0/xmlparser-0.13.3") (rename-file "guix-vendor/rust-xmlparser-0.13.3.tar.gz" "../rust-xmlparser-0.13.3.tar.gz") (symlink "/tmp/guix-build-rust-xmlparser-0.13.3.drv-0/xmlparser-0.13.3" "guix-vendor/rust-xmlparser-0.13.3") ;; (let ((port (open-file ".cargo/config" "w" #:encoding "utf-8"))) ;; (display " ;; #paths = [\"/tmp/guix-build-rust-xmlparser-0.13.3.drv-0/xmlparser-0.13.3\"] ;; [source.crates-io] ;; replace-with = 'vendored-sources' ;; #[patch.crates-io] ;; #xmlparser = { path = '/tmp/guix-build-rust-xmlparser-0.13.3.drv-0/xmlparser-0.13.3' } ;; [source.vendored-sources] ;; directory = '" port) ;; (display (string-append (getcwd) "/guix-vendor") port) ;; (display "' ;; " port) ;; (close-port port)) ;; (substitute* ".cargo/config" ;; (("\\.vendored-sources\\]" _) ;; (string-append _ "\n[paths]")) (for-each (lambda (fn) (install-file fn "target/release/deps")) (pk (find-files rlib "\\.(rlib|rmeta)$"))) #t ))) (add-before 'install 'fail (lambda _ #f))) )))) ;;myrust-xmlparser myrust-roxmltree