From 3aae527c29c1622189f49a4e38a7976376b4d10c Mon Sep 17 00:00:00 2001 From: Ana Hobden Date: Sun, 26 Dec 2021 14:02:47 -0800 Subject: [PATCH] Nix debug option (#349) * Add debug option to nix template Signed-off-by: Ana Hobden * Slightly nicer nix code Signed-off-by: Ana Hobden * Add gitignore for smaller closures Signed-off-by: Ana Hobden --- cargo-pgx/default.nix | 21 ++++- flake.lock | 21 +++++ flake.nix | 16 +++- nix/templates/default/default.nix | 8 +- nix/templates/default/flake.lock | 146 ++++++++++++++++++++++++++++++ nix/templates/default/flake.nix | 82 ++++++++++++----- 6 files changed, 266 insertions(+), 28 deletions(-) create mode 100644 nix/templates/default/flake.lock diff --git a/cargo-pgx/default.nix b/cargo-pgx/default.nix index 37b0d82b4..6f3f70d91 100644 --- a/cargo-pgx/default.nix +++ b/cargo-pgx/default.nix @@ -1,4 +1,20 @@ -{ lib, naersk, hostPlatform, fetchFromGitHub, postgresql_10, postgresql_11, postgresql_12, postgresql_13, pkg-config, openssl, rustfmt, libiconv, llvmPackages, }: +{ lib +, naersk +, hostPlatform +, fetchFromGitHub +, postgresql_10 +, postgresql_11 +, postgresql_12 +, postgresql_13 +, pkg-config +, openssl +, rustfmt +, libiconv +, llvmPackages +, gitignoreSource +, release ? true +, +}: let cargoToml = (builtins.fromTOML (builtins.readFile ./Cargo.toml)); @@ -8,7 +24,8 @@ naersk.lib."${hostPlatform.system}".buildPackage rec { name = cargoToml.package.name; version = cargoToml.package.version; - src = ../.; + src = gitignoreSource ../.; + inherit release; cargoBuildOptions = final: final ++ [ "--package" "cargo-pgx" ]; cargoTestOptions = final: final ++ [ "--package" "cargo-pgx" ]; diff --git a/flake.lock b/flake.lock index 4a89548b1..b7e5208f2 100644 --- a/flake.lock +++ b/flake.lock @@ -15,6 +15,26 @@ "type": "github" } }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1635165013, + "narHash": "sha256-o/BdVjNwcB6jOmzZjOH703BesSkkS5O7ej3xhyO8hAY=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "5b9e0ff9d3b551234b4f3eb3983744fa354b17f1", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, "naersk": { "inputs": { "nixpkgs": [ @@ -51,6 +71,7 @@ }, "root": { "inputs": { + "gitignore": "gitignore", "naersk": "naersk", "nixpkgs": "nixpkgs", "rust-overlay": "rust-overlay" diff --git a/flake.nix b/flake.nix index c0c5ee3a7..2784dc325 100644 --- a/flake.nix +++ b/flake.nix @@ -7,9 +7,11 @@ rust-overlay.inputs.nixpkgs.follows = "nixpkgs"; naersk.url = "github:nix-community/naersk"; naersk.inputs.nixpkgs.follows = "nixpkgs"; + gitignore.url = "github:hercules-ci/gitignore.nix"; + gitignore.inputs.nixpkgs.follows = "nixpkgs"; }; - outputs = { self, nixpkgs, rust-overlay, naersk }: + outputs = { self, nixpkgs, rust-overlay, naersk, gitignore }: let supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; forAllSystems = f: nixpkgs.lib.genAttrs supportedSystems (system: f system); @@ -52,7 +54,15 @@ }); overlay = final: prev: { - cargo-pgx = final.callPackage ./cargo-pgx { inherit naersk; }; + cargo-pgx = final.callPackage ./cargo-pgx { + inherit naersk; + gitignoreSource = gitignore.lib.gitignoreSource; + }; + cargo-pgx_debug = final.callPackage ./cargo-pgx { + inherit naersk; + release = false; + gitignoreSource = gitignore.lib.gitignoreSource; + }; }; devShell = forAllSystems (system: @@ -126,7 +136,7 @@ ${pkgs.nixpkgs-fmt}/bin/nixpkgs-fmt --check ${./.} touch $out # it worked! ''; - pkgs-cargo-pgx = pkgs.cargo-pgx.out; + pkgs-cargo-pgx = pkgs.cargo-pgx_debug.out; }); defaultTemplate = self.templates.default; diff --git a/nix/templates/default/default.nix b/nix/templates/default/default.nix index ff85d07a5..e08e980d1 100644 --- a/nix/templates/default/default.nix +++ b/nix/templates/default/default.nix @@ -19,7 +19,9 @@ , rustc , llvmPackages , gcc +, gitignoreSource , pgxPostgresVersion ? 11 +, release ? true }: let @@ -30,15 +32,17 @@ let else if (pgxPostgresVersion == 13) then postgresql_13 else if (pgxPostgresVersion == 14) then postgresql_14 else null; + maybeReleaseFlag = if release == true then "--release" else ""; pgxPostgresVersionString = builtins.toString pgxPostgresVersion; cargoToml = (builtins.fromTOML (builtins.readFile ./Cargo.toml)); in naersk.lib."${targetPlatform.system}".buildPackage rec { + inherit release; name = "${cargoToml.package.name}-pg${pgxPostgresVersionString}"; version = cargoToml.package.version; - src = ./.; + src = gitignoreSource ./.; inputsFrom = [ postgresql_10 postgresql_11 postgresql_12 postgresql_13 cargo-pgx ]; @@ -115,7 +119,7 @@ naersk.lib."${targetPlatform.system}".buildPackage rec { ''; postBuild = '' export PGX_HOME=$out/.pgx - ${cargo-pgx}/bin/cargo-pgx pgx schema --skip-build --release + ${cargo-pgx}/bin/cargo-pgx pgx schema --skip-build ${maybeReleaseFlag} cp -v ./sql/* $out/ cp -v ./${cargoToml.package.name}.control $out/${cargoToml.package.name}.control ''; diff --git a/nix/templates/default/flake.lock b/nix/templates/default/flake.lock new file mode 100644 index 000000000..0380c1491 --- /dev/null +++ b/nix/templates/default/flake.lock @@ -0,0 +1,146 @@ +{ + "nodes": { + "flake-utils": { + "locked": { + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "locked": { + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "naersk": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1639947939, + "narHash": "sha256-pGsM8haJadVP80GFq4xhnSpNitYNQpaXk4cnA796Cso=", + "owner": "nix-community", + "repo": "naersk", + "rev": "2fc8ce9d3c025d59fee349c1f80be9785049d653", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "naersk", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1640090545, + "narHash": "sha256-6qiF46uBGoSQmjDTFl8ilT+d1DuK39IRHlj0jE5gqZE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1dd151f0c0c216f416e9553af08f724a2499c795", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "pgx": { + "inputs": { + "naersk": [ + "naersk" + ], + "nixpkgs": [ + "nixpkgs" + ], + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1640192598, + "narHash": "sha256-1TycGkfjb7NJ4GnUZoEQOZ9534mlroRkjVblRgQi15k=", + "owner": "zombodb", + "repo": "pgx", + "rev": "90db903c6e4bf9bf509a3ef036bc5e16a30a1e15", + "type": "github" + }, + "original": { + "owner": "zombodb", + "ref": "develop", + "repo": "pgx", + "type": "github" + } + }, + "root": { + "inputs": { + "naersk": "naersk", + "nixpkgs": "nixpkgs", + "pgx": "pgx", + "rust-overlay": "rust-overlay_2" + } + }, + "rust-overlay": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "pgx", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1639534642, + "narHash": "sha256-Id6MajrGvH3WO1IP36oGQ82GLS/1T63nE12ZfTSsUdU=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "712446b06015f7f51e60a440949357c6f18ea25f", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_2": { + "inputs": { + "flake-utils": "flake-utils_2", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1640140850, + "narHash": "sha256-XRfxdj6riiH+r5hPh6vxJ5rPQcsIiJ1g3XK/dMlrp3M=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "1efeb891b85c70ded412eb78a04bccb9badb14c6", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/nix/templates/default/flake.nix b/nix/templates/default/flake.nix index 9fc9741c7..247cb84ff 100644 --- a/nix/templates/default/flake.nix +++ b/nix/templates/default/flake.nix @@ -7,16 +7,19 @@ rust-overlay.inputs.nixpkgs.follows = "nixpkgs"; naersk.url = "github:nix-community/naersk"; naersk.inputs.nixpkgs.follows = "nixpkgs"; + gitignore.url = "github:hercules-ci/gitignore.nix"; + gitignore.inputs.nixpkgs.follows = "nixpkgs"; pgx.url = "github:zombodb/pgx/develop"; pgx.inputs.nixpkgs.follows = "nixpkgs"; pgx.inputs.naersk.follows = "naersk"; }; - outputs = { self, nixpkgs, rust-overlay, naersk, pgx }: + outputs = { self, nixpkgs, rust-overlay, naersk, gitignore, pgx }: let cargoToml = (builtins.fromTOML (builtins.readFile ./Cargo.toml)); supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; forAllSystems = f: nixpkgs.lib.genAttrs supportedSystems (system: f system); + supportedPostgresVersions = [ 10 11 12 13 14 ]; in { inherit (pgx) devShell; @@ -45,12 +48,7 @@ in { "${cargoToml.package.name}" = pkgs."${cargoToml.package.name}"; - "${cargoToml.package.name}_10" = pkgs."${cargoToml.package.name}_10"; - "${cargoToml.package.name}_11" = pkgs."${cargoToml.package.name}_11"; - "${cargoToml.package.name}_12" = pkgs."${cargoToml.package.name}_12"; - "${cargoToml.package.name}_13" = pkgs."${cargoToml.package.name}_13"; - "${cargoToml.package.name}_14" = pkgs."${cargoToml.package.name}_14"; - + "${cargoToml.package.name}_debug" = pkgs."${cargoToml.package.name}_debug"; "${cargoToml.package.name}_all" = pkgs.runCommandNoCC "allVersions" { } '' mkdir -p $out cp -r ${pkgs."${cargoToml.package.name}_10"} $out/${cargoToml.package.name}_10 @@ -59,16 +57,58 @@ cp -r ${pkgs."${cargoToml.package.name}_13"} $out/${cargoToml.package.name}_13 cp -r ${pkgs."${cargoToml.package.name}_14"} $out/${cargoToml.package.name}_14 ''; - }); + "${cargoToml.package.name}_all_debug" = pkgs.runCommandNoCC "allVersions" { } '' + mkdir -p $out + cp -r ${pkgs."${cargoToml.package.name}_10_debug"} $out/${cargoToml.package.name}_10 + cp -r ${pkgs."${cargoToml.package.name}_11_debug"} $out/${cargoToml.package.name}_11 + cp -r ${pkgs."${cargoToml.package.name}_12_debug"} $out/${cargoToml.package.name}_12 + cp -r ${pkgs."${cargoToml.package.name}_13_debug"} $out/${cargoToml.package.name}_13 + cp -r ${pkgs."${cargoToml.package.name}_14_debug"} $out/${cargoToml.package.name}_14 + ''; + } // (nixpkgs.lib.foldl' + (x: y: x // y) + { } + (map + (version: + let versionString = builtins.toString version; in + { + "${cargoToml.package.name}_${versionString}" = pkgs."${cargoToml.package.name}_${versionString}"; + "${cargoToml.package.name}_${versionString}_debug" = pkgs."${cargoToml.package.name}_${versionString}_debug"; + }) + supportedPostgresVersions) + )); overlay = final: prev: { - "${cargoToml.package.name}" = final.callPackage ./. { inherit naersk; }; - "${cargoToml.package.name}_10" = final.callPackage ./. { pgxPostgresVersion = 10; inherit naersk; }; - "${cargoToml.package.name}_11" = final.callPackage ./. { pgxPostgresVersion = 11; inherit naersk; }; - "${cargoToml.package.name}_12" = final.callPackage ./. { pgxPostgresVersion = 12; inherit naersk; }; - "${cargoToml.package.name}_13" = final.callPackage ./. { pgxPostgresVersion = 13; inherit naersk; }; - "${cargoToml.package.name}_14" = final.callPackage ./. { pgxPostgresVersion = 14; inherit naersk; }; - }; + "${cargoToml.package.name}" = final.callPackage ./. { + inherit naersk; + gitignoreSource = gitignore.lib.gitignoreSource; + }; + "${cargoToml.package.name}_debug" = final.callPackage ./. { + inherit naersk; + release = false; + gitignoreSource = gitignore.lib.gitignoreSource; + }; + } // (nixpkgs.lib.foldl' + (x: y: x // y) + { } + (map + (version: + let versionString = builtins.toString version; in + { + "${cargoToml.package.name}_${versionString}" = final.callPackage ./. { + inherit naersk; + pgxPostgresVersion = version; + gitignoreSource = gitignore.lib.gitignoreSource; + }; + "${cargoToml.package.name}_${versionString}_debug" = final.callPackage ./. { + inherit naersk; + release = false; + pgxPostgresVersion = version; + gitignoreSource = gitignore.lib.gitignoreSource; + }; + }) + supportedPostgresVersions) + ); nixosModule = { config, pkgs, lib, ... }: let @@ -118,12 +158,12 @@ # ${pkgs.cargo-audit}/bin/cargo-audit audit --no-fetch # # it worked! # ''; - "${cargoToml.package.name}" = pkgs."${cargoToml.package.name}"; - "${cargoToml.package.name}_10" = pkgs."${cargoToml.package.name}_10"; - "${cargoToml.package.name}_11" = pkgs."${cargoToml.package.name}_11"; - "${cargoToml.package.name}_12" = pkgs."${cargoToml.package.name}_12"; - "${cargoToml.package.name}_13" = pkgs."${cargoToml.package.name}_13"; - "${cargoToml.package.name}_14" = pkgs."${cargoToml.package.name}_14"; + "${cargoToml.package.name}_debug" = pkgs."${cargoToml.package.name}_debug"; + "${cargoToml.package.name}_10_debug" = pkgs."${cargoToml.package.name}_10_debug"; + "${cargoToml.package.name}_11_debug" = pkgs."${cargoToml.package.name}_11_debug"; + "${cargoToml.package.name}_12_debug" = pkgs."${cargoToml.package.name}_12_debug"; + "${cargoToml.package.name}_13_debug" = pkgs."${cargoToml.package.name}_13_debug"; + "${cargoToml.package.name}_14_debug" = pkgs."${cargoToml.package.name}_14_debug"; }); }; }