summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authormdarocha <git@mdarocha.pl>2022-07-20 22:37:14 +0200
committermdarocha <git@mdarocha.pl>2022-07-26 18:00:15 +0200
commit19403a85d93d6814d057ac4f665708b87736e483 (patch)
treeb46c7e9d420923e7af75e99bab0f7a75e57e67a3 /pkgs
parent3bbb296d9a0088c314ce83038b896753bbe33acb (diff)
downloadnixpkgs-19403a85d93d6814d057ac4f665708b87736e483.tar
nixpkgs-19403a85d93d6814d057ac4f665708b87736e483.tar.gz
nixpkgs-19403a85d93d6814d057ac4f665708b87736e483.tar.bz2
nixpkgs-19403a85d93d6814d057ac4f665708b87736e483.tar.lz
nixpkgs-19403a85d93d6814d057ac4f665708b87736e483.tar.xz
nixpkgs-19403a85d93d6814d057ac4f665708b87736e483.tar.zst
nixpkgs-19403a85d93d6814d057ac4f665708b87736e483.zip
buildDotnetModule: add option to make a self-contained build
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/build-support/dotnet/build-dotnet-module/default.nix2
-rw-r--r--pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-build-hook.sh6
-rw-r--r--pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-fixup-hook.sh6
-rw-r--r--pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-install-hook.sh7
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 15fe5a2c5d4..339eac16b0b 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 5a5ece6d997..a8a830195ea 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 675006508f6..0a881fae9cf 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 7984c5ebd3c..fd88ea32ec0 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