buildGraalvmNativeImage: use lib.extendMkDerivation
Co-authored-by: Philip Taron <philip.taron@gmail.com>
This commit is contained in:
parent
de57db2293
commit
4d134f63fd
@ -2,13 +2,33 @@
|
|||||||
lib,
|
lib,
|
||||||
stdenv,
|
stdenv,
|
||||||
glibcLocales,
|
glibcLocales,
|
||||||
# The GraalVM derivation to use
|
|
||||||
graalvmDrv,
|
|
||||||
removeReferencesTo,
|
removeReferencesTo,
|
||||||
executable ? args.pname,
|
graalvmPackages,
|
||||||
# JAR used as input for GraalVM derivation, defaults to src
|
}:
|
||||||
jar ? args.src,
|
|
||||||
dontUnpack ? (jar == args.src),
|
lib.extendMkDerivation {
|
||||||
|
constructDrv = stdenv.mkDerivation;
|
||||||
|
|
||||||
|
excludeDrvArgNames = [
|
||||||
|
"executable"
|
||||||
|
"extraNativeImageBuildArgs"
|
||||||
|
"graalvmDrv"
|
||||||
|
"graalvmXmx"
|
||||||
|
"nativeImageBuildArgs"
|
||||||
|
];
|
||||||
|
|
||||||
|
extendDrvArgs =
|
||||||
|
finalAttrs:
|
||||||
|
{
|
||||||
|
dontUnpack ? true,
|
||||||
|
strictDeps ? true,
|
||||||
|
__structuredAttrs ? true,
|
||||||
|
|
||||||
|
# The GraalVM derivation to use
|
||||||
|
graalvmDrv ? graalvmPackages.graalvm-ce,
|
||||||
|
|
||||||
|
executable ? finalAttrs.meta.mainProgram,
|
||||||
|
|
||||||
# Default native-image arguments. You probably don't want to set this,
|
# Default native-image arguments. You probably don't want to set this,
|
||||||
# except in special cases. In most cases, use extraNativeBuildArgs instead
|
# except in special cases. In most cases, use extraNativeBuildArgs instead
|
||||||
nativeImageBuildArgs ? [
|
nativeImageBuildArgs ? [
|
||||||
@ -20,35 +40,24 @@
|
|||||||
"-march=compatibility"
|
"-march=compatibility"
|
||||||
"--verbose"
|
"--verbose"
|
||||||
],
|
],
|
||||||
|
|
||||||
# Extra arguments to be passed to the native-image
|
# Extra arguments to be passed to the native-image
|
||||||
extraNativeImageBuildArgs ? [ ],
|
extraNativeImageBuildArgs ? [ ],
|
||||||
|
|
||||||
# XMX size of GraalVM during build
|
# XMX size of GraalVM during build
|
||||||
graalvmXmx ? "-J-Xmx6g",
|
graalvmXmx ? "-J-Xmx6g",
|
||||||
|
|
||||||
|
env ? { },
|
||||||
meta ? { },
|
meta ? { },
|
||||||
LC_ALL ? "en_US.UTF-8",
|
passthru ? { },
|
||||||
...
|
...
|
||||||
}@args:
|
}@args:
|
||||||
|
|
||||||
let
|
|
||||||
extraArgs = builtins.removeAttrs args [
|
|
||||||
"lib"
|
|
||||||
"stdenv"
|
|
||||||
"glibcLocales"
|
|
||||||
"jar"
|
|
||||||
"dontUnpack"
|
|
||||||
"LC_ALL"
|
|
||||||
"meta"
|
|
||||||
"buildPhase"
|
|
||||||
"nativeBuildInputs"
|
|
||||||
"installPhase"
|
|
||||||
"postInstall"
|
|
||||||
];
|
|
||||||
in
|
|
||||||
stdenv.mkDerivation (
|
|
||||||
{
|
{
|
||||||
inherit dontUnpack jar;
|
env = {
|
||||||
|
LC_ALL = "en_US.UTF-8";
|
||||||
|
} // env;
|
||||||
|
|
||||||
env = { inherit LC_ALL; };
|
inherit dontUnpack strictDeps __structuredAttrs;
|
||||||
|
|
||||||
nativeBuildInputs = (args.nativeBuildInputs or [ ]) ++ [
|
nativeBuildInputs = (args.nativeBuildInputs or [ ]) ++ [
|
||||||
graalvmDrv
|
graalvmDrv
|
||||||
@ -56,13 +65,17 @@ stdenv.mkDerivation (
|
|||||||
removeReferencesTo
|
removeReferencesTo
|
||||||
];
|
];
|
||||||
|
|
||||||
nativeImageBuildArgs = nativeImageBuildArgs ++ extraNativeImageBuildArgs ++ [ graalvmXmx ];
|
# `nativeBuildInputs` does not allow `graalvmDrv`'s propagatedBuildInput to reach here this package.
|
||||||
|
# As its `propagatedBuildInputs` is required for the build process with `native-image`, we must add it here as well.
|
||||||
|
buildInputs = [ graalvmDrv ];
|
||||||
|
|
||||||
|
nativeImageArgs = nativeImageBuildArgs ++ extraNativeImageBuildArgs ++ [ graalvmXmx ];
|
||||||
|
|
||||||
buildPhase =
|
buildPhase =
|
||||||
args.buildPhase or ''
|
args.buildPhase or ''
|
||||||
runHook preBuild
|
runHook preBuild
|
||||||
|
|
||||||
native-image -jar "$jar" ''${nativeImageBuildArgs[@]}
|
native-image -jar "$src" ''${nativeImageArgs[@]}
|
||||||
|
|
||||||
runHook postBuild
|
runHook postBuild
|
||||||
'';
|
'';
|
||||||
@ -83,14 +96,13 @@ stdenv.mkDerivation (
|
|||||||
|
|
||||||
disallowedReferences = [ graalvmDrv ];
|
disallowedReferences = [ graalvmDrv ];
|
||||||
|
|
||||||
passthru = { inherit graalvmDrv; };
|
passthru = {
|
||||||
|
inherit graalvmDrv;
|
||||||
|
} // passthru;
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
# default to graalvm's platforms
|
# default to graalvm's platforms
|
||||||
platforms = graalvmDrv.meta.platforms;
|
inherit (graalvmDrv.meta) platforms;
|
||||||
# default to executable name
|
|
||||||
mainProgram = executable;
|
|
||||||
} // meta;
|
} // meta;
|
||||||
}
|
};
|
||||||
// extraArgs
|
}
|
||||||
)
|
|
||||||
|
|||||||
@ -5747,10 +5747,7 @@ with pkgs;
|
|||||||
openjdk_headless = jdk_headless;
|
openjdk_headless = jdk_headless;
|
||||||
|
|
||||||
graalvmPackages = recurseIntoAttrs (callPackage ../development/compilers/graalvm { });
|
graalvmPackages = recurseIntoAttrs (callPackage ../development/compilers/graalvm { });
|
||||||
buildGraalvmNativeImage =
|
buildGraalvmNativeImage = callPackage ../build-support/build-graalvm-native-image { };
|
||||||
(callPackage ../build-support/build-graalvm-native-image {
|
|
||||||
graalvmDrv = graalvmPackages.graalvm-ce;
|
|
||||||
}).override;
|
|
||||||
|
|
||||||
openshot-qt = libsForQt5.callPackage ../applications/video/openshot-qt { };
|
openshot-qt = libsForQt5.callPackage ../applications/video/openshot-qt { };
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user