diff options
author | Sandro <sandro.jaeckel@gmail.com> | 2022-07-28 11:59:09 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-28 11:59:09 +0200 |
commit | f358b0d40d93bfb77552360ff5d0ca62f73e834f (patch) | |
tree | 3cb46d8094ac1c8ec24003ad1af0250eee3bc274 /pkgs/build-support | |
parent | 68efafbe134d1e356cf7e9dd1c4e944bbed27d6b (diff) | |
parent | 124fa63a8838fe8ad532e8278f154c09c47e6eec (diff) |
Merge pull request #182273 from mdarocha/dotnet-self-contained-build
buildDotnetModule: add option to make a self-contained build
Diffstat (limited to 'pkgs/build-support')
4 files changed, 19 insertions, 2 deletions
diff --git a/pkgs/build-support/dotnet/build-dotnet-module/default.nix b/pkgs/build-support/dotnet/build-dotnet-module/default.nix index 15fe5a2c5d417..339eac16b0b2d 100644 --- a/pkgs/build-support/dotnet/build-dotnet-module/default.nix +++ b/pkgs/build-support/dotnet/build-dotnet-module/default.nix @@ -55,6 +55,8 @@ # The type of build to perform. This is passed to `dotnet` with the `--configuration` flag. Possible values are `Release`, `Debug`, etc. , buildType ? "Release" +# If set to true, builds the application as a self-contained - removing the runtime dependency on dotnet +, selfContainedBuild ? false # The dotnet SDK to use. , dotnet-sdk ? dotnetCorePackages.sdk_6_0 # The dotnet runtime to use. diff --git a/pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-build-hook.sh b/pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-build-hook.sh index 5a5ece6d99756..a8a830195eaa8 100644 --- a/pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-build-hook.sh +++ b/pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-build-hook.sh @@ -14,6 +14,12 @@ dotnetBuildHook() { parallelBuildFlag="false" fi + if [ "${selfContainedBuild-}" ]; then + dotnetBuildFlags+=("--self-contained") + else + dotnetBuildFlags+=("--no-self-contained") + fi + if [ "${version-}" ]; then versionFlag="-p:Version=${version-}" fi diff --git a/pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-fixup-hook.sh b/pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-fixup-hook.sh index 675006508f6c7..0a881fae9cfa1 100644 --- a/pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-fixup-hook.sh +++ b/pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-fixup-hook.sh @@ -4,8 +4,12 @@ makeWrapperArgs=( ${makeWrapperArgs-} ) # First argument is the executable you want to wrap, # the second is the destination for the wrapper. wrapDotnetProgram() { + if [ ! "${selfContainedBuild-}" ]; then + dotnetRootFlag=("--set" "DOTNET_ROOT" "@dotnetRuntime@") + fi + makeWrapper "$1" "$2" \ - --set "DOTNET_ROOT" "@dotnetRuntime@" \ + "${dotnetRootFlag[@]}" \ --suffix "LD_LIBRARY_PATH" : "@runtimeDeps@" \ "${gappsWrapperArgs[@]}" \ "${makeWrapperArgs[@]}" diff --git a/pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-install-hook.sh b/pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-install-hook.sh index 7984c5ebd3ccb..fd88ea32ec042 100644 --- a/pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-install-hook.sh +++ b/pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-install-hook.sh @@ -6,6 +6,12 @@ dotnetInstallHook() { runHook preInstall + if [ "${selfContainedBuild-}" ]; then + dotnetInstallFlags+=("--self-contained") + else + dotnetInstallFlags+=("--no-self-contained") + fi + for project in ${projectFile[@]}; do env \ dotnet publish "$project" \ @@ -15,7 +21,6 @@ dotnetInstallHook() { --output "$out/lib/${pname}" \ --configuration "@buildType@" \ --no-build \ - --no-self-contained \ ${dotnetInstallFlags[@]} \ ${dotnetFlags[@]} done |