Merge pull request #258184 from mdarocha/dotnet-fixes

buildDotnetModule small improvements

Changed files
+27 -4
doc
languages-frameworks
pkgs
build-support
dotnet
build-dotnet-module
+3 -1
doc/languages-frameworks/dotnet.section.md
···
src = ./.;
projectFile = "src/project.sln";
-
nugetDeps = ./deps.nix; # File generated with `nix-build -A package.passthru.fetch-deps`.
+
# File generated with `nix-build -A package.passthru.fetch-deps`.
+
# To run fetch-deps when this file does not yet exist, set nugetDeps to null
+
nugetDeps = ./deps.nix;
projectReferences = [ referencedProject ]; # `referencedProject` must contain `nupkg` in the folder structure.
+17 -1
pkgs/build-support/dotnet/build-dotnet-module/default.nix
···
dotnet-sdk
];
+
# Parse the version attr into a format acceptable for the Version msbuild property
+
# The actual version attr is saved in InformationalVersion, which accepts an arbitrary string
+
versionForDotnet = if !(lib.hasAttr "version" args) || args.version == null
+
then null else let
+
components = lib.pipe args.version [
+
lib.splitVersion
+
(lib.filter (x: (lib.strings.match "[0-9]+" x) != null))
+
(lib.filter (x: (lib.toInt x) < 65535)) # one version component in dotnet has to fit in 16 bits
+
];
+
in if (lib.length components) == 0
+
then null
+
else lib.concatStringsSep "." ((lib.take 4 components)
+
++ (if (lib.length components) < 4
+
then lib.replicate (4 - (lib.length components)) "0"
+
else [ ]));
+
makeWrapperArgs = args.makeWrapperArgs or [ ] ++ [
"--prefix LD_LIBRARY_PATH : ${dotnet-sdk.icu}/lib"
];
···
passthru = {
inherit nuget-source;
-
} // lib.optionalAttrs (nugetDepsFile != null) {
+
} // lib.optionalAttrs (!lib.isDerivation nugetDeps) {
fetch-deps =
let
flags = dotnetFlags ++ dotnetRestoreFlags;
+7 -2
pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-build-hook.sh
···
dotnetBuildFlags+=("-p:UseAppHost=true")
fi
+
local versionFlags=()
if [ "${version-}" ]; then
-
local -r versionFlag="-p:Version=${version-}"
+
versionFlags+=("-p:InformationalVersion=${version-}")
+
fi
+
+
if [ "${versionForDotnet-}" ]; then
+
versionFlags+=("-p:Version=${versionForDotnet-}")
fi
dotnetBuild() {
···
-p:Deterministic=true \
--configuration "@buildType@" \
--no-restore \
-
${versionFlag-} \
+
${versionFlags[@]} \
${runtimeIdFlags[@]} \
${dotnetBuildFlags[@]} \
${dotnetFlags[@]}