@immae Tu es un ouf en nix ! Une PR sur le dépôt officiel
Je ferais bien une visio avec toi si tu as le temps ! J’ai plein de questions…
Je suis largué en nix
Depuis mon repo gcli-v2s, git pull.
Puis j’ai créé le default.nix avec ton code ci-dessus, puis commande nix-shell et ça plante
C’est pas ça qu’il fallait faire ? Faut attendre le merge de ta PR ?
Output :
this derivation will be built:
/nix/store/gcz4dqpajkwdvr0j1n1qc5z9vkhlgdsb-gcli-0.3.0-vendor.tar.gz.drv
these 7 paths will be fetched (0.39 MiB download, 1.18 MiB unpacked):
/nix/store/r0qnqmfq11rpf6n6zflld014xjp5808l-auditable-cargo-1.82.0
/nix/store/ydhbsmaazzw9q9ny1i5yjk850mmmfanl-cargo-auditable-0.6.2
/nix/store/j4qrwpqim26jhm243im22wzgxb7w0gxk-cargo-build-hook.sh
/nix/store/2ai38pkyd83mcvs0lr9nwh38xpnihxga-cargo-check-hook.sh
/nix/store/n8xilr39f5b6q6givmvq6qsrmyfhlzws-cargo-install-hook.sh
/nix/store/8950g8dgzmy2gslcg1dcn5dkl5b64018-cargo-setup-hook.sh
/nix/store/fh7vjdscr0jc0qww7wvfw739vzglynpy-cargo-vendor-normalise
copying path '/nix/store/n8xilr39f5b6q6givmvq6qsrmyfhlzws-cargo-install-hook.sh' from 'https://cache.nixos.org'...
copying path '/nix/store/ydhbsmaazzw9q9ny1i5yjk850mmmfanl-cargo-auditable-0.6.2' from 'https://cache.nixos.org'...
copying path '/nix/store/2ai38pkyd83mcvs0lr9nwh38xpnihxga-cargo-check-hook.sh' from 'https://cache.nixos.org'...
copying path '/nix/store/j4qrwpqim26jhm243im22wzgxb7w0gxk-cargo-build-hook.sh' from 'https://cache.nixos.org'...
copying path '/nix/store/8950g8dgzmy2gslcg1dcn5dkl5b64018-cargo-setup-hook.sh' from 'https://cache.nixos.org'...
copying path '/nix/store/fh7vjdscr0jc0qww7wvfw739vzglynpy-cargo-vendor-normalise' from 'https://cache.nixos.org'...
building '/nix/store/gcz4dqpajkwdvr0j1n1qc5z9vkhlgdsb-gcli-0.3.0-vendor.tar.gz.drv'...
copying path '/nix/store/r0qnqmfq11rpf6n6zflld014xjp5808l-auditable-cargo-1.82.0' from 'https://cache.nixos.org'...
Running phase: unpackPhase
unpacking source archive /nix/store/vnjzndgdgh2jfrlzdm2r1zm8ih6fs507-source
source root is source
Running phase: patchPhase
Running phase: updateAutotoolsGnuConfigScriptsPhase
Running phase: configurePhase
no configure script, doing nothing
Running phase: buildPhase
source = "git+https://github.com/duniter/ring-vrf#93af77b15de3bb34f1c46913599f4f4c4faa3215"
source = "git+https://github.com/duniter/ring-vrf#93af77b15de3bb34f1c46913599f4f4c4faa3215"
source = "git+https://github.com/duniter/ring-vrf#93af77b15de3bb34f1c46913599f4f4c4faa3215"
source = "git+https://github.com/w3f/ring-proof?rev=665f5f5#665f5f51af5734c7b6d90b985dd6861d4c5b4752"
source = "git+https://github.com/duniter/ring-vrf#93af77b15de3bb34f1c46913599f4f4c4faa3215"
source = "git+https://github.com/w3f/fflonk#1e854f35e9a65d08b11a86291405cdc95baa0a35"
source = "git+https://github.com/w3f/ring-proof?rev=665f5f5#665f5f51af5734c7b6d90b985dd6861d4c5b4752"
source = "git+https://github.com/duniter/duniter-polkadot-sdk.git?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
source = "git+https://github.com/duniter/duniter-polkadot-sdk.git?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
source = "git+https://github.com/duniter/arkworks-substrate#1dbec3114648697c992d3d022ade24c7a221c4c8"
source = "git+https://github.com/duniter/arkworks-substrate#1dbec3114648697c992d3d022ade24c7a221c4c8"
source = "git+https://github.com/duniter/duniter-polkadot-sdk.git?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
source = "git+https://github.com/duniter/duniter-polkadot-sdk#c84530c57a6f9ab808a92f6b5d29338acf1c6e4f"
source = "git+https://github.com/duniter/duniter-polkadot-sdk.git?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
source = "git+https://github.com/duniter/duniter-polkadot-sdk#c84530c57a6f9ab808a92f6b5d29338acf1c6e4f"
source = "git+https://github.com/duniter/duniter-polkadot-sdk.git?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
source = "git+https://github.com/duniter/duniter-polkadot-sdk#c84530c57a6f9ab808a92f6b5d29338acf1c6e4f"
source = "git+https://github.com/duniter/duniter-polkadot-sdk.git?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
source = "git+https://github.com/duniter/duniter-polkadot-sdk.git?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
source = "git+https://github.com/duniter/duniter-polkadot-sdk.git?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
source = "git+https://github.com/duniter/duniter-polkadot-sdk.git?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
source = "git+https://github.com/duniter/duniter-polkadot-sdk.git?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
source = "git+https://github.com/duniter/duniter-polkadot-sdk#c84530c57a6f9ab808a92f6b5d29338acf1c6e4f"
source = "git+https://github.com/duniter/duniter-polkadot-sdk.git?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
source = "git+https://github.com/duniter/duniter-polkadot-sdk#c84530c57a6f9ab808a92f6b5d29338acf1c6e4f"
source = "git+https://github.com/duniter/duniter-polkadot-sdk.git?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
source = "git+https://github.com/duniter/duniter-polkadot-sdk.git?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
source = "git+https://github.com/duniter/duniter-polkadot-sdk#c84530c57a6f9ab808a92f6b5d29338acf1c6e4f"
source = "git+https://github.com/duniter/duniter-polkadot-sdk.git?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
source = "git+https://github.com/duniter/duniter-polkadot-sdk#c84530c57a6f9ab808a92f6b5d29338acf1c6e4f"
source = "git+https://github.com/duniter/duniter-polkadot-sdk.git?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
source = "git+https://github.com/duniter/duniter-polkadot-sdk#c84530c57a6f9ab808a92f6b5d29338acf1c6e4f"
source = "git+https://github.com/duniter/duniter-polkadot-sdk.git?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
source = "git+https://github.com/duniter/duniter-polkadot-sdk.git?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
source = "git+https://github.com/duniter/duniter-polkadot-sdk#c84530c57a6f9ab808a92f6b5d29338acf1c6e4f"
source = "git+https://github.com/duniter/duniter-polkadot-sdk.git?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
source = "git+https://github.com/duniter/duniter-polkadot-sdk.git?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
source = "git+https://github.com/duniter/duniter-polkadot-sdk.git?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
source = "git+https://github.com/duniter/subxt?branch=subxt-v0.37.0-duniter-substrate-v1.14.0#00f181c1a5d8986e7146ddc72a745c793a9a1d8e"
source = "git+https://github.com/duniter/subxt?branch=subxt-v0.37.0-duniter-substrate-v1.14.0#00f181c1a5d8986e7146ddc72a745c793a9a1d8e"
source = "git+https://github.com/duniter/subxt?branch=subxt-v0.37.0-duniter-substrate-v1.14.0#00f181c1a5d8986e7146ddc72a745c793a9a1d8e"
source = "git+https://github.com/duniter/subxt?branch=subxt-v0.37.0-duniter-substrate-v1.14.0#00f181c1a5d8986e7146ddc72a745c793a9a1d8e"
source = "git+https://github.com/duniter/subxt?branch=subxt-v0.37.0-duniter-substrate-v1.14.0#00f181c1a5d8986e7146ddc72a745c793a9a1d8e"
source = "git+https://github.com/duniter/subxt?branch=subxt-v0.37.0-duniter-substrate-v1.14.0#00f181c1a5d8986e7146ddc72a745c793a9a1d8e"
ERROR: The Cargo.lock contains git dependencies
This is currently not supported in the fixed-output derivation fetcher.
Use cargoLock.lockFile / importCargoLock instead.
error: builder for '/nix/store/gcz4dqpajkwdvr0j1n1qc5z9vkhlgdsb-gcli-0.3.0-vendor.tar.gz.drv' failed with exit code 1;
last 25 log lines:
> source = "git+https://github.com/duniter/duniter-polkadot-sdk.git?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
> source = "git+https://github.com/duniter/duniter-polkadot-sdk.git?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
> source = "git+https://github.com/duniter/duniter-polkadot-sdk#c84530c57a6f9ab808a92f6b5d29338acf1c6e4f"
> source = "git+https://github.com/duniter/duniter-polkadot-sdk.git?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
> source = "git+https://github.com/duniter/duniter-polkadot-sdk#c84530c57a6f9ab808a92f6b5d29338acf1c6e4f"
> source = "git+https://github.com/duniter/duniter-polkadot-sdk.git?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
> source = "git+https://github.com/duniter/duniter-polkadot-sdk#c84530c57a6f9ab808a92f6b5d29338acf1c6e4f"
> source = "git+https://github.com/duniter/duniter-polkadot-sdk.git?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
> source = "git+https://github.com/duniter/duniter-polkadot-sdk.git?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
> source = "git+https://github.com/duniter/duniter-polkadot-sdk#c84530c57a6f9ab808a92f6b5d29338acf1c6e4f"
> source = "git+https://github.com/duniter/duniter-polkadot-sdk.git?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
> source = "git+https://github.com/duniter/duniter-polkadot-sdk.git?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
> source = "git+https://github.com/duniter/duniter-polkadot-sdk.git?branch=duniter-substrate-v1.14.0#bcc60f3e4170c3908689252242f40761270c9a51"
> source = "git+https://github.com/duniter/subxt?branch=subxt-v0.37.0-duniter-substrate-v1.14.0#00f181c1a5d8986e7146ddc72a745c793a9a1d8e"
> source = "git+https://github.com/duniter/subxt?branch=subxt-v0.37.0-duniter-substrate-v1.14.0#00f181c1a5d8986e7146ddc72a745c793a9a1d8e"
> source = "git+https://github.com/duniter/subxt?branch=subxt-v0.37.0-duniter-substrate-v1.14.0#00f181c1a5d8986e7146ddc72a745c793a9a1d8e"
> source = "git+https://github.com/duniter/subxt?branch=subxt-v0.37.0-duniter-substrate-v1.14.0#00f181c1a5d8986e7146ddc72a745c793a9a1d8e"
> source = "git+https://github.com/duniter/subxt?branch=subxt-v0.37.0-duniter-substrate-v1.14.0#00f181c1a5d8986e7146ddc72a745c793a9a1d8e"
> source = "git+https://github.com/duniter/subxt?branch=subxt-v0.37.0-duniter-substrate-v1.14.0#00f181c1a5d8986e7146ddc72a745c793a9a1d8e"
>
> ERROR: The Cargo.lock contains git dependencies
>
> This is currently not supported in the fixed-output derivation fetcher.
> Use cargoLock.lockFile / importCargoLock instead.
>
For full logs, run 'nix log /nix/store/gcz4dqpajkwdvr0j1n1qc5z9vkhlgdsb-gcli-0.3.0-vendor.tar.gz.drv'.
C’est plutôt nix-build qu’il faut lancer que nix-shell.
Mais en l’occurence l’erreur suggère que ton installation de nix est peut être un peu ancienne.
Essaye NIX_PATH=nixpkgs=channel:nixos-unstable nix-build ?
Pour répondre à des questions précises sur nix aucun problème pour faire une visio. Si c’est plutôt pour une formation je suis pas certain d’être le mieux placé pour ça
Il s’est passé un tas de truc : execute, symlink, copy, build, created, unpack, patch, run, test… et mis 20 min !
Mais pas de gcli dans mon terminal ?!
J’ai raté un truc ?
La fin des logs de 20 min :
Finished cargoCheckHook
Running phase: installPhase
Executing cargoInstallHook
Finished cargoInstallHook
Running phase: fixupPhase
shrinking RPATHs of ELF executables and libraries in /nix/store/pd7h4by1jbgkdkx9cv55prsxi2f03xys-gcli-0.3.0
shrinking /nix/store/pd7h4by1jbgkdkx9cv55prsxi2f03xys-gcli-0.3.0/bin/gcli
checking for references to /build/ in /nix/store/pd7h4by1jbgkdkx9cv55prsxi2f03xys-gcli-0.3.0...
patching script interpreter paths in /nix/store/pd7h4by1jbgkdkx9cv55prsxi2f03xys-gcli-0.3.0
stripping (with command strip and flags -S -p) in /nix/store/pd7h4by1jbgkdkx9cv55prsxi2f03xys-gcli-0.3.0/bin
/nix/store/pd7h4by1jbgkdkx9cv55prsxi2f03xys-gcli-0.3.0
oui à la fin du nix-build il t’a créé un symlink (/nix/store/pd7h4by1jbgkdkx9cv55prsxi2f03xys-gcli-0.3.0 -> result ) dans ton dossier actuel, qui contient le gcli
(note: la dernière ligne de ton log contient aussi le chemin qui vient d’être buildé)
Je viens d’approuver alors que je ne comprends rien au code nix, et j’ai aussi fusionné car les modifications ne concernent que les fichiers nix.
Peut-être que tu peux faire une aide au build nix dans le README.md, pour savoir comment lancer le build dans nixos ? Mais alors je laisserai un mainteneur du dépôt valider la modification.
@immae Effectivement ce serais top si tu pouvais ajouter les infos de base pour lancer ces builds classique & incrémental depuis NixOS (j’utilise NixOS également, mais je n’ai pas encore trop regardé pour les possibilités de build que cela offre )
À noter que de façon générale les flakes sont auto-découvrables :
En faisant nix flake showdepuis le repo on peut voir la liste de ce qu’il contient. Ici, on a donc deux packages .#gcli et `.#incremental-gclidisponibles (j’ai ajouté une description similaire à ce que j’ai ajouté dans le readme).
Je ne connais pas cette commande nix profile install.
J’ai fait un nix profile install .#incremental-gcli, ça build jusqu’au bout mais j’ai cette erreur à la fin: error: cannot read directory “/nix/var/nix/profiles/per-user/manu”: No such file or directory
Je pense que ça vient de ma config…
Pour info, je fais tout à l’ancienne en mettant à la main dans mon home.nix les packages que je veux.
Résolu !
J’avais un lien symbolique dans mon home: lrwxrwxrwx - manu 10 oct. 2023 .nix-profile → /nix/var/nix/profiles/per-user/manu/profile qui pointé vers rien.
Je l’ai supprimé, relancé la commande nix profile install .#incremental-gcli et en un quart de seconde c’est passé. Maintenant j’ai un lien symbolique: lrwxrwxrwx - manu 5 sept. 13:52 .nix-profile → /home/manu/.local/state/nix/profiles/profile/
Je ne comprends pas bien ou a été installé gcli… mais la command gcli fonctionne. gcli -V retourne gcli 0.4.2 !
which gcli retourne: /home/manu/.nix-profile/bin/gcli
Je pense que nix profile install .#incremental-gcli marcherait oui, mais en vrai tu n’as pas besoin de cloner / puller le repo, tu peux juste l’installer directement avec nix profile install git+https://git.duniter.org/clients/rust/gcli-v2s#incremental-gcli puis nix profile upgrade (ou nix profile upgrade incremental-gcli pour ne mettre à jour qu’un seul paquet)
Dans ton home.nix tu peux aussi le faire (et c’est mieux, si tu as un home-manager), avec par exemple
home.packages =
let
gcli-src = builtins.fetchTarball {
(url vers un tarball du repo...)
}
in
[ (builtins.getFlake gcli-src).packages.x86_64-linux.incremental-gcli
];
(à ajuster si tu as des flakes, mais ça ne semble pas être le cas)