1
1
mirror of https://github.com/tweag/nickel.git synced 2024-10-04 07:07:10 +03:00

Add flake output for static binaries on linux (#1322)

* Add flake output for static binaries on linux

* Use static nickel binaries for the docker image

* Use Entrypoint instead of Cmd for the docker image
This commit is contained in:
Viktor Kleen 2023-06-02 07:39:21 +00:00 committed by GitHub
parent 018afbd6cb
commit 495af70d07
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -105,6 +105,10 @@
[ ];
mkRust =
let
inherit (pkgs.stdenv) hostPlatform;
inherit (pkgs.rust) toRustTarget;
in
{ rustProfile ? "minimal"
, rustExtensions ? [
"rust-src"
@ -113,18 +117,19 @@
"clippy"
]
, channel ? "stable"
, target ? pkgs.rust.toRustTarget pkgs.stdenv.hostPlatform
, targets ? [ (toRustTarget hostPlatform) ]
++ pkgs.lib.optional (!hostPlatform.isMacOS) (toRustTarget pkgs.pkgsMusl.stdenv.hostPlatform)
}:
if channel == "nightly" then
pkgs.rust-bin.selectLatestNightlyWith
(toolchain: toolchain.${rustProfile}.override {
extensions = rustExtensions;
targets = [ target ];
inherit targets;
})
else
pkgs.rust-bin.${channel}.latest.${rustProfile}.override {
extensions = rustExtensions;
targets = [ target ];
inherit targets;
};
# A note on check_format: the way we invoke rustfmt here works locally but fails on CI.
@ -206,21 +211,31 @@
buildInputs = [ pkgs.python3 ];
};
buildPackage = pname:
craneLib.buildPackage {
buildPackage = { pname, extraArgs ? { } }:
craneLib.buildPackage ({
inherit
pname
src
cargoArtifacts;
cargoExtraArgs = "${cargoBuildExtraArgs} --package ${pname}";
};
} // extraArgs);
in
{
nickel = buildPackage "nickel-lang";
lsp-nls = buildPackage "nickel-lang-lsp";
rec {
nickel = buildPackage { pname = "nickel-lang"; };
lsp-nls = buildPackage { pname = "nickel-lang-lsp"; };
nickel-static =
if pkgs.stdenv.hostPlatform.isMacOS
then nickel
else
buildPackage {
pname = "nickel-lang";
extraArgs = {
CARGO_BUILD_TARGET = pkgs.rust.toRustTarget pkgs.pkgsMusl.stdenv.hostPlatform;
CARGO_BUILD_RUSTFLAGS = "-C target-feature=+crt-static";
};
};
benchmarks = craneLib.mkCargoDerivation {
inherit src cargoArtifacts;
@ -301,7 +316,7 @@
# - dev for checks, as the code isn't optimized, and WASM optimization
# takes time
buildNickelWasm =
{ rust ? mkRust { target = "wasm32-unknown-unknown"; }
{ rust ? mkRust { targets = [ "wasm32-unknown-unknown" ]; }
, profile ? "release"
}:
let
@ -357,10 +372,9 @@
tag = version;
contents = [
nickel
pkgs.bashInteractive
];
config = {
Cmd = "bash";
Entrypoint = "${nickel}/bin/nickel";
};
};
@ -422,13 +436,14 @@
inherit (mkCraneArtifacts { })
nickel
benchmarks
lsp-nls;
lsp-nls
nickel-static;
default = pkgs.buildEnv {
name = "nickel";
paths = [ packages.nickel packages.lsp-nls ];
};
nickelWasm = buildNickelWasm { };
dockerImage = buildDocker packages.nickel; # TODO: docker image should be a passthru
dockerImage = buildDocker packages.nickel-static; # TODO: docker image should be a passthru
inherit vscodeExtension;
inherit userManual;
stdlibMarkdown = stdlibDoc "markdown";