Package Nix pour Ğcli

Et voilà le default.nix utilisable directement sur le code non modifié :tada:

{ pkgs ? import <nixpkgs> {} }:
let
  pkgsPatched = pkgs.applyPatches {
    src = pkgs.path;
    patches = [
      (pkgs.fetchpatch {
        url = "https://patch-diff.githubusercontent.com/raw/NixOS/nixpkgs/pull/377721.patch";
        sha256 = "sha256-jsy5msGbkNK+4x9Y+XGV0pyF14pOPvsETvj+cNAJSAw=";
      })
    ];
  };
in
with import pkgsPatched {};
rustPlatform.buildRustPackage {
  pname = "gcli";
  version = (builtins.fromTOML (builtins.readFile ./Cargo.toml)).package.version;
  src = lib.cleanSource ./.;
  cargoHash = "sha256-lQbvBOE/9ufZ1UacEmnAE483P63CBT1ejansamxU8Ug=";
  useFetchCargoVendor = true;
}

Il n’y aura plus besoin de patcher nixpkgs une fois que Allow "package" key in Cargo.toml dependencies by immae · Pull Request #377721 · NixOS/nixpkgs · GitHub sera mergée

5 Likes

@immae Tu es un ouf en nix ! Une PR sur le dépôt officiel :upside_down_face:
Je ferais bien une visio avec toi si tu as le temps ! J’ai plein de questions…
Je suis largué en nix :roll_eyes:

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 :cry:

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

1 Like

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é)