Fix release validation and packaging with latest sources
This commit is contained in:
parent
123205c97d
commit
4ad0faf307
5 changed files with 67 additions and 46 deletions
|
|
@ -1,36 +1,40 @@
|
|||
{ root, kind ? "tools", channel ? "canary", system ? builtins.currentSystem }:
|
||||
{ root, kind ? "tools", channel ? "canary", system ? builtins.currentSystem, sources ? {} }:
|
||||
let
|
||||
central = builtins.getFlake (toString root);
|
||||
pkgs = import central.inputs.nixpkgs {
|
||||
inherit system;
|
||||
overlays = [ central.inputs.rust-overlay.overlays.default ];
|
||||
};
|
||||
project = central.lib.mkPackages { inherit system; };
|
||||
project = central.lib.mkPackages { inherit system sources; };
|
||||
# Reuse only the client's tool shells, with central nixpkgs and Rust inputs.
|
||||
# Client builds below always consume client-source and mtp-sdk from prod-pins.
|
||||
clientTools = (import (central.inputs.client + "/flake.nix")).outputs {
|
||||
self = central.inputs.client;
|
||||
nixpkgs = central.inputs.nixpkgs // {
|
||||
# The client's old SDK platform-tools pin is absent in central nixpkgs.
|
||||
outPath = pkgs.runCommand "release-client-nixpkgs" {} ''
|
||||
mkdir -p "$out"
|
||||
cat > "$out/default.nix" <<'EOF'
|
||||
args: let
|
||||
pkgs = import ${central.inputs.nixpkgs} args;
|
||||
in pkgs // { androidenv = pkgs.androidenv // {
|
||||
composeAndroidPackages = options: pkgs.androidenv.composeAndroidPackages
|
||||
(options // { platformToolsVersion = "37.0.1"; });
|
||||
}; }
|
||||
EOF
|
||||
'';
|
||||
prod-pins = central // {
|
||||
inputs = central.inputs // {
|
||||
nixpkgs = central.inputs.nixpkgs // {
|
||||
# Use the platform-tools version available in central nixpkgs.
|
||||
outPath = pkgs.runCommand "release-client-nixpkgs" {} ''
|
||||
mkdir -p "$out"
|
||||
cat > "$out/default.nix" <<'EOF'
|
||||
args: let
|
||||
pkgs = import ${central.inputs.nixpkgs} args;
|
||||
in pkgs // { androidenv = pkgs.androidenv // {
|
||||
composeAndroidPackages = options: pkgs.androidenv.composeAndroidPackages
|
||||
(options // { platformToolsVersion = "37.0.1"; });
|
||||
}; }
|
||||
EOF
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
rust-overlay = central.inputs.rust-overlay;
|
||||
};
|
||||
branded = name: project.packages.${name}.overrideAttrs {
|
||||
TENSAMIN_CHANNEL = channel;
|
||||
};
|
||||
checked = name: project.packages.${name}.overrideAttrs (old: {
|
||||
doCheck = true;
|
||||
SSL_CERT_FILE = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";
|
||||
installPhase = ''mkdir -p "$out"'';
|
||||
nativeBuildInputs = old.nativeBuildInputs ++ project.devShells.${name}.nativeBuildInputs;
|
||||
preBuild = (old.preBuild or "") + ''
|
||||
|
|
@ -43,20 +47,27 @@ let
|
|||
pname = "mtp-checks";
|
||||
src = project.packages.mtp-sdk.src;
|
||||
cargoDeps = project.packages.mtp-vendor;
|
||||
cargoBuildFlags = [ "--workspace" ];
|
||||
cargoTestFlags = [ "--workspace" ];
|
||||
cargoBuildFlags = [ "--workspace" "--exclude" "mtp-wasm" ];
|
||||
cargoTestFlags = [ "--workspace" "--exclude" "mtp-wasm" ];
|
||||
doCheck = true;
|
||||
MTP_TYPE_MAPS = "${project.packages.mtp-sdk.src}/tests/fixtures/example/type-maps.yaml";
|
||||
installPhase = ''mkdir -p "$out"'';
|
||||
nativeBuildInputs = old.nativeBuildInputs ++ project.devShells.mtp.nativeBuildInputs;
|
||||
preBuild = ''
|
||||
cargo fmt --all --check
|
||||
cargo clippy --locked --offline --workspace --all-targets -- -D warnings
|
||||
cargo clippy --locked --offline --workspace --exclude mtp-wasm --all-targets -- -D warnings
|
||||
'';
|
||||
});
|
||||
in
|
||||
if kind == "tools" then pkgs.mkShell {
|
||||
packages = with pkgs; [ nix git (python3.withPackages (p: [ p.pyyaml ])) bash coreutils jq zip gnutar gzip openssh skopeo shellcheck ruff ];
|
||||
} else if kind == "electron" || kind == "tauri" then clientTools.devShells.${system}.${kind}
|
||||
} else if kind == "electron" || kind == "tauri" then
|
||||
clientTools.devShells.${system}.${kind}.overrideAttrs (old: {
|
||||
shellHook = builtins.replaceStrings
|
||||
[ ''cd "$workRoot/tensamin/client"'' ]
|
||||
[ ''cd "''${RELEASE_WORK:-$workRoot/tensamin/client}"'' ]
|
||||
old.shellHook;
|
||||
})
|
||||
else if kind == "checks" then pkgs.linkFarm "release-checks" (map (name: {
|
||||
inherit name;
|
||||
path = checked name;
|
||||
|
|
|
|||
Loading…
Reference in a new issue