feat: added zig loaders for unix and refactor
This commit is contained in:
+116
-7
@@ -19,6 +19,15 @@ let
|
||||
};
|
||||
patch-freebsd-elf = patch-elf 9;
|
||||
|
||||
freebsd-zig-libc = pkgs.writeText "freebsd-libc.txt" ''
|
||||
include_dir=${freebsd-libs}/usr/include
|
||||
sys_include_dir=${freebsd-libs}/usr/include
|
||||
sys_include_dir=${freebsd-libs}/usr/lib
|
||||
msvc_lib_dir=
|
||||
kernel32_lib_dir=
|
||||
gcc_dir=
|
||||
'';
|
||||
|
||||
src = craneLib.cleanCargoSource ./.;
|
||||
|
||||
commonArgs = buildEnvironment // {
|
||||
@@ -45,6 +54,22 @@ let
|
||||
];
|
||||
};
|
||||
|
||||
fileSetForInstallerCrate = pkgs.lib.fileset.toSource {
|
||||
root = ./.;
|
||||
fileset = pkgs.lib.fileset.unions [
|
||||
./.cargo/config.toml
|
||||
./Cargo.toml
|
||||
./Cargo.lock
|
||||
./build_common.rs
|
||||
(craneLib.fileset.commonCargoSources ./sparse-actions)
|
||||
(craneLib.fileset.commonCargoSources ./pcap-sys)
|
||||
(craneLib.fileset.commonCargoSources ./nl-sys)
|
||||
./nl-sys/src/bridge.c
|
||||
(craneLib.fileset.commonCargoSources ./packets)
|
||||
(craneLib.fileset.commonCargoSources ./sparse-installer)
|
||||
];
|
||||
};
|
||||
|
||||
fileSetForWebCrate = pkgs.lib.fileset.toSource {
|
||||
root = ./.;
|
||||
fileset = pkgs.lib.fileset.unions [
|
||||
@@ -97,7 +122,7 @@ let
|
||||
sparse-beacon-linux = craneLib.buildPackage (commonArgs // {
|
||||
cargoArtifacts = linuxCargoArtifacts;
|
||||
name = "sparse-beacon-linux";
|
||||
cargoExtraArgs = "-p sparse-beacon";
|
||||
cargoExtraArgs = "-p sparse-unix-beacon";
|
||||
src = fileSetForBeaconCrate;
|
||||
|
||||
CARGO_BUILD_TARGET = "x86_64-unknown-linux-musl";
|
||||
@@ -107,7 +132,7 @@ let
|
||||
sparse-beacon-freebsd-sysv = craneLib.buildPackage (freebsdArgs // {
|
||||
cargoArtifacts = freebsdCargoArtifacts;
|
||||
name = "sparse-beacon-freebsd";
|
||||
cargoExtraArgs = "-p sparse-beacon";
|
||||
cargoExtraArgs = "-p sparse-unix-beacon";
|
||||
|
||||
nativeBuildInputs = buildTools;
|
||||
|
||||
@@ -121,12 +146,81 @@ let
|
||||
sparse-beacon-windows = craneLib.buildPackage (windowsArgs // {
|
||||
cargoArtifacts = windowsCargoArtifacts;
|
||||
name = "sparse-beacon-windows";
|
||||
cargoExtraArgs = "-p sparse-beacon";
|
||||
cargoExtraArgs = "-p sparse-windows-beacon";
|
||||
|
||||
CARGO_BUILD_TARGET = "x86_64-pc-windows-gnu";
|
||||
CARGO_BUILD_RUSTFLAGS = "-Ctarget-feature=+crt-static";
|
||||
});
|
||||
|
||||
linux-loader = pkgs.stdenv.mkDerivation {
|
||||
name = "sparse-linux-loader";
|
||||
|
||||
buildInputs = with pkgs; [ zig ];
|
||||
|
||||
src = ./unix-loader;
|
||||
|
||||
buildPhase = ''
|
||||
zig build \
|
||||
-Dtarget=x86_64-linux-musl
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/lib
|
||||
cp zig-out/lib/libunix-loader.so $out/lib/unix-loader.so
|
||||
'';
|
||||
|
||||
SPARSE_BEACON = "${sparse-beacon-linux}/bin/sparse-beacon";
|
||||
};
|
||||
|
||||
freebsd-loader = pkgs.stdenv.mkDerivation {
|
||||
name = "sparse-freebsd-loader";
|
||||
|
||||
buildInputs = with pkgs; [ zig ];
|
||||
|
||||
src = ./unix-loader;
|
||||
|
||||
buildPhase = ''
|
||||
zig build \
|
||||
-Dtarget=x86_64-freebsd \
|
||||
--sysroot ${freebsd-libs} \
|
||||
--libc ${freebsd-zig-libc}
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/lib
|
||||
cp zig-out/lib/libunix-loader.so $out/lib/unix-loader.so
|
||||
'';
|
||||
|
||||
SPARSE_BEACON = "${sparse-beacon-freebsd}/bin/sparse-beacon";
|
||||
};
|
||||
|
||||
sparse-installer-linux = craneLib.buildPackage (commonArgs // {
|
||||
cargoArtifacts = linuxCargoArtifacts;
|
||||
name = "sparse-installer-linux";
|
||||
cargoExtraArgs = "-p sparse-installer";
|
||||
src = fileSetForInstallerCrate;
|
||||
|
||||
CARGO_BUILD_TARGET = "x86_64-unknown-linux-musl";
|
||||
CARGO_BUILD_RUSTFLAGS = "-Ctarget-feature=+crt-static";
|
||||
|
||||
SPARSE_INSTALLER_LINUX = "${linux-loader}/lib/unix-loader.so";
|
||||
});
|
||||
|
||||
sparse-installer-freebsd-sysv = craneLib.buildPackage (commonArgs // {
|
||||
cargoArtifacts = linuxCargoArtifacts;
|
||||
name = "sparse-installer-linux";
|
||||
cargoExtraArgs = "-p sparse-installer";
|
||||
src = fileSetForInstallerCrate;
|
||||
|
||||
CARGO_BUILD_TARGET = "x86_64-unknown-linux-musl";
|
||||
CARGO_BUILD_RUSTFLAGS = "-Ctarget-feature=+crt-static";
|
||||
|
||||
SPARSE_INSTALLER_FREEBSD = "${freebsd-loader}/lib/unix-loader.so";
|
||||
});
|
||||
|
||||
sparse-installer-freebsd =
|
||||
patch-freebsd-elf sparse-installer-freebsd-sysv "bin/sparse-installer";
|
||||
|
||||
sparse-server = craneLib.buildPackage (commonArgs // {
|
||||
src = fileSetForWebCrate;
|
||||
|
||||
@@ -145,15 +239,20 @@ let
|
||||
cp target/x86_64-unknown-linux-musl/release/sparse-server $out/bin
|
||||
'';
|
||||
|
||||
SPARSE_BEACON_LINUX = "${sparse-beacon-linux}/bin/sparse-beacon";
|
||||
SPARSE_INSTALLER_LINUX = "${sparse-installer-linux}/bin/sparse-installer";
|
||||
SPARSE_INSTALLER_FREEBSD =
|
||||
"${sparse-installer-freebsd}/bin/sparse-installer";
|
||||
SPARSE_BEACON_WINDOWS = "${sparse-beacon-windows}/bin/sparse-beacon.exe";
|
||||
SPARSE_BEACON_FREEBSD = "${sparse-beacon-freebsd}/bin/sparse-beacon";
|
||||
});
|
||||
|
||||
outputs = rec {
|
||||
packages = {
|
||||
inherit sparse-beacon-linux sparse-beacon-windows sparse-beacon-freebsd
|
||||
sparse-server;
|
||||
inherit sparse-server sparse-beacon-linux sparse-beacon-windows
|
||||
linux-loader freebsd-loader sparse-beacon-freebsd;
|
||||
|
||||
inherit freebsd-zig-libc;
|
||||
|
||||
default = sparse-server;
|
||||
};
|
||||
checks = outputs.packages // {
|
||||
rs-fmt = craneLib.cargoFmt { inherit src; };
|
||||
@@ -166,6 +265,16 @@ let
|
||||
cargoArtifacts = linuxCargoArtifacts;
|
||||
cargoClippyExtraArgs = "--all-targets -- --deny warnings";
|
||||
});
|
||||
|
||||
zig-fmt = pkgs.stdenv.mkDerivation {
|
||||
name = "zig-fmt-check";
|
||||
|
||||
src = ./.;
|
||||
|
||||
checkPhase = ''
|
||||
zig fmt --check
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
in outputs
|
||||
|
||||
Reference in New Issue
Block a user