nix: simplify malloc outputs
Signed-off-by: strawberry <strawberry@puppygock.gay>
This commit is contained in:
parent
354487fa10
commit
89c22435d5
1 changed files with 29 additions and 105 deletions
134
flake.nix
134
flake.nix
|
@ -36,6 +36,7 @@
|
||||||
}: flake-utils.lib.eachDefaultSystem (system:
|
}: flake-utils.lib.eachDefaultSystem (system:
|
||||||
let
|
let
|
||||||
pkgsHost = nixpkgs.legacyPackages.${system};
|
pkgsHost = nixpkgs.legacyPackages.${system};
|
||||||
|
allocator = null;
|
||||||
|
|
||||||
rocksdb' = pkgs:
|
rocksdb' = pkgs:
|
||||||
let
|
let
|
||||||
|
@ -74,8 +75,6 @@
|
||||||
|
|
||||||
env = pkgs: {
|
env = pkgs: {
|
||||||
CONDUIT_VERSION_EXTRA = self.shortRev or self.dirtyShortRev;
|
CONDUIT_VERSION_EXTRA = self.shortRev or self.dirtyShortRev;
|
||||||
# Debian makes builds reproducible through using the HEAD commit's date
|
|
||||||
TIMESTAMP = self.lastModified;
|
|
||||||
ROCKSDB_INCLUDE_DIR = "${rocksdb' pkgs}/include";
|
ROCKSDB_INCLUDE_DIR = "${rocksdb' pkgs}/include";
|
||||||
ROCKSDB_LIB_DIR = "${rocksdb' pkgs}/lib";
|
ROCKSDB_LIB_DIR = "${rocksdb' pkgs}/lib";
|
||||||
}
|
}
|
||||||
|
@ -168,7 +167,7 @@
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
package = pkgs: builder pkgs {
|
mkPackage = pkgs: allocator: builder pkgs {
|
||||||
src = nix-filter {
|
src = nix-filter {
|
||||||
root = ./.;
|
root = ./.;
|
||||||
include = [
|
include = [
|
||||||
|
@ -178,6 +177,13 @@
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
buildFeatures = [ ]
|
||||||
|
++ (if allocator == "jemalloc" then [ "jemalloc" ] else [ ])
|
||||||
|
++ (if allocator == "hmalloc" then [ "hardened_malloc" ] else [ ])
|
||||||
|
;
|
||||||
|
|
||||||
|
rocksdb' = (if allocator == "jemalloc" then (pkgs.rocksdb.override { enableJemalloc = true; }) else (rocksdb' pkgs));
|
||||||
|
|
||||||
# This is redundant with CI
|
# This is redundant with CI
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
|
||||||
|
@ -187,55 +193,12 @@
|
||||||
meta.mainProgram = cargoToml.package.name;
|
meta.mainProgram = cargoToml.package.name;
|
||||||
};
|
};
|
||||||
|
|
||||||
packageJemalloc = pkgs: builder pkgs {
|
mkOciImage = pkgs: package: allocator:
|
||||||
src = nix-filter {
|
|
||||||
root = ./.;
|
|
||||||
include = [
|
|
||||||
"src"
|
|
||||||
"Cargo.toml"
|
|
||||||
"Cargo.lock"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
rocksdb' = pkgs.rocksdb.override { enableJemalloc = true; };
|
|
||||||
|
|
||||||
# This is redundant with CI
|
|
||||||
doCheck = false;
|
|
||||||
|
|
||||||
env = env pkgs;
|
|
||||||
nativeBuildInputs = nativeBuildInputs pkgs;
|
|
||||||
|
|
||||||
meta.mainProgram = cargoToml.package.name;
|
|
||||||
|
|
||||||
buildFeatures = [ "jemalloc" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
packageHMalloc = pkgs: builder pkgs {
|
|
||||||
src = nix-filter {
|
|
||||||
root = ./.;
|
|
||||||
include = [
|
|
||||||
"src"
|
|
||||||
"Cargo.toml"
|
|
||||||
"Cargo.lock"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# This is redundant with CI
|
|
||||||
doCheck = false;
|
|
||||||
|
|
||||||
env = env pkgs;
|
|
||||||
nativeBuildInputs = nativeBuildInputs pkgs;
|
|
||||||
|
|
||||||
meta.mainProgram = cargoToml.package.name;
|
|
||||||
|
|
||||||
buildFeatures = [ "hardened_malloc" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
mkOciImage = pkgs: package:
|
|
||||||
pkgs.dockerTools.buildImage {
|
pkgs.dockerTools.buildImage {
|
||||||
name = package.pname;
|
name = package.pname;
|
||||||
tag = "main";
|
tag = "main";
|
||||||
created = "${env.TIMESTAMP}";
|
# Debian makes builds reproducible through using the HEAD commit's date
|
||||||
|
created = self.lastModified;
|
||||||
copyToRoot = [
|
copyToRoot = [
|
||||||
pkgs.dockerTools.caCertificates
|
pkgs.dockerTools.caCertificates
|
||||||
];
|
];
|
||||||
|
@ -251,57 +214,15 @@
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
mkOciImageJemalloc = pkgs: packageJemalloc:
|
|
||||||
pkgs.dockerTools.buildImage {
|
|
||||||
name = "${package.pname}-jemalloc";
|
|
||||||
tag = "main";
|
|
||||||
created = "${env.TIMESTAMP}";
|
|
||||||
copyToRoot = [
|
|
||||||
pkgs.dockerTools.caCertificates
|
|
||||||
];
|
|
||||||
config = {
|
|
||||||
# Use the `tini` init system so that signals (e.g. ctrl+c/SIGINT)
|
|
||||||
# are handled as expected
|
|
||||||
Entrypoint = [
|
|
||||||
"${pkgs.lib.getExe' pkgs.tini "tini"}"
|
|
||||||
"--"
|
|
||||||
];
|
|
||||||
Cmd = [
|
|
||||||
"${pkgs.lib.getExe package}"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
mkOciImageHMalloc = pkgs: packageHMalloc:
|
|
||||||
pkgs.dockerTools.buildImage {
|
|
||||||
name = "${package.pname}-hmalloc";
|
|
||||||
tag = "main";
|
|
||||||
created = "${env.TIMESTAMP}";
|
|
||||||
copyToRoot = [
|
|
||||||
pkgs.dockerTools.caCertificates
|
|
||||||
];
|
|
||||||
config = {
|
|
||||||
# Use the `tini` init system so that signals (e.g. ctrl+c/SIGINT)
|
|
||||||
# are handled as expected
|
|
||||||
Entrypoint = [
|
|
||||||
"${pkgs.lib.getExe' pkgs.tini "tini"}"
|
|
||||||
"--"
|
|
||||||
];
|
|
||||||
Cmd = [
|
|
||||||
"${pkgs.lib.getExe package}"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
packages = {
|
packages = {
|
||||||
default = package pkgsHost;
|
default = mkPackage pkgsHost null;
|
||||||
jemalloc = packageJemalloc pkgsHost;
|
jemalloc = mkPackage pkgsHost "jemalloc";
|
||||||
hmalloc = packageHMalloc pkgsHost;
|
hmalloc = mkPackage pkgsHost "hmalloc";
|
||||||
oci-image = mkOciImage pkgsHost self.packages.${system}.default;
|
oci-image = mkOciImage pkgsHost self.packages.${system}.default null;
|
||||||
oci-image-jemalloc = mkOciImageJemalloc pkgsHost self.packages.${system}.default;
|
oci-image-jemalloc = mkOciImage pkgsHost self.packages.${system}.default "jemalloc";
|
||||||
oci-image-hmalloc = mkOciImageHMalloc pkgsHost self.packages.${system}.default;
|
oci-image-hmalloc = mkOciImage pkgsHost self.packages.${system}.default "hmalloc";
|
||||||
|
|
||||||
book =
|
book =
|
||||||
let
|
let
|
||||||
|
@ -351,19 +272,19 @@
|
||||||
# An output for a statically-linked binary
|
# An output for a statically-linked binary
|
||||||
{
|
{
|
||||||
name = binaryName;
|
name = binaryName;
|
||||||
value = package pkgsCrossStatic;
|
value = mkPackage pkgsCrossStatic null;
|
||||||
}
|
}
|
||||||
|
|
||||||
# An output for a statically-linked binary with jemalloc
|
# An output for a statically-linked binary with jemalloc
|
||||||
{
|
{
|
||||||
name = "${binaryName}-jemalloc";
|
name = "${binaryName}-jemalloc";
|
||||||
value = packageJemalloc pkgsCrossStatic;
|
value = mkPackage pkgsCrossStatic "jemalloc";
|
||||||
}
|
}
|
||||||
|
|
||||||
# An output for a statically-linked binary with hardened_malloc
|
# An output for a statically-linked binary with hardened_malloc
|
||||||
{
|
{
|
||||||
name = "${binaryName}-hmalloc";
|
name = "${binaryName}-hmalloc";
|
||||||
value = packageHMalloc pkgsCrossStatic;
|
value = mkPackage pkgsCrossStatic "hmalloc";
|
||||||
}
|
}
|
||||||
|
|
||||||
# An output for an OCI image based on that binary
|
# An output for an OCI image based on that binary
|
||||||
|
@ -371,23 +292,26 @@
|
||||||
name = "oci-image-${crossSystem}";
|
name = "oci-image-${crossSystem}";
|
||||||
value = mkOciImage
|
value = mkOciImage
|
||||||
pkgsCrossStatic
|
pkgsCrossStatic
|
||||||
self.packages.${system}.${binaryName};
|
self.packages.${system}.${binaryName}
|
||||||
|
null;
|
||||||
}
|
}
|
||||||
|
|
||||||
# An output for an OCI image based on that binary with jemalloc
|
# An output for an OCI image based on that binary with jemalloc
|
||||||
{
|
{
|
||||||
name = "oci-image-${crossSystem}-jemalloc";
|
name = "oci-image-${crossSystem}-jemalloc";
|
||||||
value = mkOciImageJemalloc
|
value = mkOciImage
|
||||||
pkgsCrossStatic
|
pkgsCrossStatic
|
||||||
self.packages.${system}.${binaryName};
|
self.packages.${system}.${binaryName}
|
||||||
|
"jemalloc";
|
||||||
}
|
}
|
||||||
|
|
||||||
# An output for an OCI image based on that binary with hardened_malloc
|
# An output for an OCI image based on that binary with hardened_malloc
|
||||||
{
|
{
|
||||||
name = "oci-image-${crossSystem}-hmalloc";
|
name = "oci-image-${crossSystem}-hmalloc";
|
||||||
value = mkOciImageHMalloc
|
value = mkOciImage
|
||||||
pkgsCrossStatic
|
pkgsCrossStatic
|
||||||
self.packages.${system}.${binaryName};
|
self.packages.${system}.${binaryName}
|
||||||
|
"hmalloc";
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue