benjamin wil <[email protected]> writes: > Hi there, > > I'm attempting to package a Rust program, `kak-tree-sitter`, that's > available as a crate, but am having some difficulties. I'll try to > describe what I've done so far... it's possible I'm doing something very > obviously wrong as I'm quite new to Guix. > > The program relies on another crate, `kak-tree-sitter-config`, that I > think Guix should consider "private package". Both `kak-tree-sitter` and > `kak-tree-sitter-config` use a single git repository to store their > source code. > > As suggested by the documentation about common workflows for Rust > packaging I have used `guix import` to get a list of crate dependencies > for both `kak-tree-sitter` and `kak-tree-sitter-config`: > > cd $HOME/Dev/kak-tree-sitter > > guix import \ > --insert=$HOME/Dev/guix/gnu/packages/rust-crates.scm \ > crate --lockfile=./Cargo.lock kak-tree-sitter > > guix import \ > --insert=$HOME/Dev/guix/gnu/packages/rust-crates.scm \ > crate --lockfile=./Cargo.lock kak-tree-sitter-config > > This appears to have worked as intended but did not provide a definition > for `kak-tree-sitter-config`, so I manually added a `rust-` prefixed > entry to `rust-sources.scm` and to `rust-crates.scm`. > > In addition to that, I have added package entries for both > `kak-tree-sitter` and `kak-tree-sitter-config` to the `text-editors.scm` > package list for now: > > # gnu/packages/rust-sources.scm > (define-public rust-kak-tree-sitter-config-3.0.0 > (hidden-package > (package > (name "rust-kak-tree-sitter-config") > (version "3.0.0") > (source (origin > (method url-fetch) > (uri (crate-uri "kak-tree-sitter-config" version)) > (file-name (string-append name "-v" version ".tar.gz")) > (sha256 > (base32 > "1s2g4z1yrh1sxl4qkmpd19ss3x2lr9115vbir7pnhgy63r1d63yv")))) > (build-system cargo-build-system) > (inputs (cargo-inptus 'rust-kak-tree-sitter-config-3.0.0)) > (home-page "https://sh.rt/~hadronized/kak-tree-sitter") > (synopsis "Configuration package for kak-tree-sitter") > (description "Configuration package for kak-tree-sitter") > (license license:bsd-3)))) > > # gnu/packages/rust-crates.scm > (define rust-kak-tree-sitter-config-3.0.0 > (crate-source "kak-tree-sitter-config" "3.0.0" > "0mcpy1gdxpqayc74i3x3ayh3q5bl6dzvsgmw91jq1r9sjkxill0r")) > > # gnu/packages/text-editors.csm > (define-public kak-tree-sitter > (package > (name "kak-tree-sitter") > (version "2.0.0") > (source > (origin > (method url-fetch) > (uri (crate-uri "kak-tree-sitter" version)) > (file-name (string-append name "-" version ".tar.gz")) > (sha256 > (base32 > "0kmilfxfm426jgkdvp2n668iwfi56v08bhv2wgp7hi4yf24kygl2")))) > (build-system cargo-build-system) > (inputs (cargo-inputs 'kak-tree-sitter)) > (home-page "https://sr.ht/~hadronized/kak-tree-sitter/") > (synopsis "Server between Kakoune and tree-sitter") > (description > "This package provides Server between Kakoune and tree-sitter.") > (license license:bsd-3))) > > (define-public kak-tree-sitter-config > (package > (name "kak-tree-sitter-config") > (version "3.0.0") > (source > (origin > (method url-fetch) > (uri (crate-uri "kak-tree-sitter-config" version)) > (file-name (string-append name "-" version ".tar.gz")) > (sha256 > (base32 > "03yjv9rsc5l8ky4dc5s1b3sg7fhfl9nsz2mgv42lsvqifidjkqqj")))) > (build-system cargo-build-system) > (inputs (cargo-inputs 'kak-tree-sitter-config)) > (home-page "https://sr.ht/~hadronized/kak-tree-sitter") > (synopsis "Server between Kakoune and tree-sitter; > configuration layer") > (description > "This package provides Server between Kakoune and tree-sitter; > configuration layer.") > (license license:bsd-3))) > > Despite my having defined these packages, running `./pre-inst-env guix > build kak-tree-sitter` results in in an error, `no matching package > named 'kak-tree-sitter-config'` despite there being both a > `kak-tree-sitter-config` and `rust-kak-tree-sitter-config` defined, as > well as a real crate on htths://crates.io. Here is the error and stack > trace following: > > error: no matching package named `kak-tree-sitter-config` found > location searched: directory source > `/tmp/guix-build-kak-tree-sitter-2.0.0.drv-0/kak-tree-sitter-2.0.0/guix-vendor` > > (which is replacing registry `crates-io`) > required by package `kak-tree-sitter v2.0.0 > (/tmp/guix-build-kak-tree-sitter-2.0.0.drv-0/kak-tree-sitter-2.0.0)` > As a reminder, you're using offline mode (--offline) which can > sometimes cause surprising resolution failures, if this error is too > confusing you may wish to retry without the offline flag. > error: in phase 'build': uncaught exception: > %exception #<&invoke-error program: "cargo" arguments: ("build" > "--offline" "-j" "16" "--release") exit-status: 101 term-signal: #f > stop-signal: #f> > phase `build' failed after 0.1 seconds > command "cargo" "build" "--offline" "-j" "16" "--release" failed > with status 101 > build process 18 exited with status 256 > note: keeping build directory > `/tmp/guix-build-kak-tree-sitter-2.0.0.drv-15' > builder for > `/gnu/store/nh4scf63kl9fisgf4fdmndrr93x1hfc1-kak-tree-sitter-2.0.0.drv' > failed with exit code 1 > build of > /gnu/store/nh4scf63kl9fisgf4fdmndrr93x1hfc1-kak-tree-sitter-2.0.0.drv failed > View build log at > '/var/log/guix/drvs/nh/4scf63kl9fisgf4fdmndrr93x1hfc1-kak-tree-sitter-2.0.0.drv.gz'. > guix build: error: build of > `/gnu/store/nh4scf63kl9fisgf4fdmndrr93x1hfc1-kak-tree-sitter-2.0.0.drv' > failed > > > So, it seems likely that I am missing *something* and have probably > defined more things called `kak-tree-sitter-config` than I actually need > to. But I'm not sure what actions to take next. Would appreciate any > hints you have to get be started in the right direction. > > Thanks! > Benjamin
Hey Benjamin, It seems you’re trying to import a Cargo workspace. They are handled a bit differently from single packages. See <https://guix.gnu.org/cookbook/en/html_node/Cargo-Workspaces-and-Development-Snapshots.html>. As I understand it, you would have only one workspace package in rust-sources.scm for both, then add aliases to each contained library in rust-crates.scm (see <https://guix.gnu.org/cookbook/en/html_node/Common-Workflow-for-Rust-Packaging.html>). Hope that helps, Noé
signature.asc
Description: PGP signature
