Move from crate2nix to buildRustPackage based on the Cargo.lock

Nixpkgs recently gained the ability to fetch cargo dependencies based on
the Cargo.lock file which means we can get rid of all the generated Nix
expressions. The only downside to that is that we are now building
everything in one go and do not have the semi-incremental builds as we
had before.
This commit is contained in:
Andreas Rammhold 2021-07-05 17:34:20 +02:00 committed by Cole Helbling
parent 179f1fc018
commit 804bb34181
5 changed files with 33 additions and 5057 deletions

View file

@ -19,7 +19,7 @@ jobs:
git config --global user.email "ofborg@example.com" git config --global user.email "ofborg@example.com"
git config --global user.name "ofborg" git config --global user.name "ofborg"
- name: checkPhase - name: checkPhase
run: nix-shell --pure --run checkPhase run: nix-shell --pure --run "cargo test"
nix-build: nix-build:
runs-on: ubuntu-latest runs-on: ubuntu-latest

5017
Cargo.nix

File diff suppressed because it is too large Load diff

View file

@ -1,3 +0,0 @@
{
"hubcaps 0.3.16 (git+https://github.com/grahamc/hubcaps.git#5e656ba35ab4ee74aa72b3b5c3a62e1bf351ff6a)": "1p7rn8y71fjwfag65437gz7a56pysz9n69smaknvblyxpjdzmh4d"
}

View file

@ -1,22 +1,44 @@
{ pkgs ? import ./nix { { pkgs ? import ./nix {
overlays = [ (import ./nix/overlay.nix) ]; overlays = [ (import ./nix/overlay.nix) ];
} }
, ofborgCrates ? import ./Cargo.nix {
inherit pkgs;
release = pkgs.stdenv.isDarwin;
}
}: }:
let let
inherit (ofborgCrates.workspaceMembers) ofborg-simple-build ofborg; pkg = pkgs.rustPlatform.buildRustPackage {
name = "ofborg";
src = pkgs.nix-gitignore.gitignoreSource [] ./.;
nativeBuildInputs = with pkgs; [
pkgconfig
pkgs.rustPackages.clippy
];
buildInputs = with pkgs; [
openssl
];
preBuild = ''
cargo clippy
'';
doCheck = false; # Tests require access to a /nix/ and a nix daemon
checkInputs = with pkgs; [
nix
];
cargoLock = {
lockFile = ./Cargo.lock;
outputHashes = {
"hubcaps-0.3.16" = "1p7rn8y71fjwfag65437gz7a56pysz9n69smaknvblyxpjdzmh4d";
};
};
};
in in
{ {
inherit ofborgCrates; inherit pkg;
ofborg.simple-build = ofborg-simple-build.build; ofborg.rs = pkgs.runCommand "ofborg-rs-symlink-compat" { src = pkg; } ''
ofborg.rs = pkgs.runCommand "ofborg-rs-symlink-compat" { src = ofborg.build; } ''
mkdir -p $out/bin mkdir -p $out/bin
for f in $(find $src -type f); do for f in $(find $src -type f); do
bn=$(basename "$f") bn=$(basename "$f")
@ -34,31 +56,6 @@ in
test -e $out/bin/github_comment_poster test -e $out/bin/github_comment_poster
test -e $out/bin/log_message_collector test -e $out/bin/log_message_collector
test -e $out/bin/evaluation_filter test -e $out/bin/evaluation_filter
# Verify that the outpath contains the version number matching the
# Cargo.toml
if ! grep -q 'version = "${ofborg.build.crateVersion}"' ${./ofborg/Cargo.toml}; then
cat <<EOF
Build failed because you bumped the Cargo
version without regenerating the Cargo.nix.
Run:
nix-shell --run ./nix/update-crates.sh
and commit those changes.
EOF
fi
''; '';
ofborg.php = import ./php { inherit pkgs; }; ofborg.php = import ./php { inherit pkgs; };

View file

@ -1,6 +1,5 @@
#!/usr/bin/env nix-shell #!/usr/bin/env nix-shell
#!nix-shell -i bash -E "with import ./nix {}; mkShell { nativeBuildInputs = [ cacert cargo (import (builtins.fetchTarball https://github.com/kolloch/crate2nix/archive/0.9.0.tar.gz) {}) ]; }" #!nix-shell -i bash
set -e set -e
cargo fetch --locked cargo fetch --locked
crate2nix generate