diff options
Diffstat (limited to 'pkgs/development/compilers/dotnet/update.sh')
-rwxr-xr-x | pkgs/development/compilers/dotnet/update.sh | 441 |
1 files changed, 228 insertions, 213 deletions
diff --git a/pkgs/development/compilers/dotnet/update.sh b/pkgs/development/compilers/dotnet/update.sh index fbcbd84bf9f6c..486ad2636a0e0 100755 --- a/pkgs/development/compilers/dotnet/update.sh +++ b/pkgs/development/compilers/dotnet/update.sh @@ -7,46 +7,48 @@ set -Eeuo pipefail cd "$(dirname "${BASH_SOURCE[0]}")" release () { - local content="$1" - local version="$2" + local content="$1" + local version="$2" - jq -r '.releases[] | select(."release-version" == "'"$version"'")' <<< "$content" + jq -r '.releases[] | select(."release-version" == "'"$version"'")' <<< "$content" } release_files () { - local release="$1" - local expr="$2" + local release="$1" + local expr="$2" - jq -r '[('"$expr"').files[] | select(.name | test("^.*.tar.gz$"))]' <<< "$release" + jq -r '[('"$expr"').files[] | select(.name | test("^.*.tar.gz$"))]' <<< "$release" } release_platform_attr () { - local release_files="$1" - local platform="$2" - local attr="$3" + local release_files="$1" + local platform="$2" + local attr="$3" - jq -r '.[] | select((.rid == "'"$platform"'") and (.name | contains("composite") | not)) | ."'"$attr"'"' <<< "$release_files" + jq -r '.[] | select((.rid == "'"$platform"'") and (.name | contains("composite") | not)) | ."'"$attr"'"' <<< "$release_files" } platform_sources () { - local release_files="$1" - local platforms=( - "x86_64-linux linux-x64" - "aarch64-linux linux-arm64" - "x86_64-darwin osx-x64" - "aarch64-darwin osx-arm64" - ) - - echo "srcs = {" - for kv in "${platforms[@]}"; do - local nix_platform=${kv%% *} - local ms_platform=${kv##* } - - local url=$(release_platform_attr "$release_files" "$ms_platform" url) - local hash=$(release_platform_attr "$release_files" "$ms_platform" hash) - - [[ -z "$url" || -z "$hash" ]] && continue - echo " $nix_platform = { + local release_files="$1" + local platforms=( + "x86_64-linux linux-x64" + "aarch64-linux linux-arm64" + "x86_64-darwin osx-x64" + "aarch64-darwin osx-arm64" + ) + + echo "srcs = {" + local kv + for kv in "${platforms[@]}"; do + local nix_platform=${kv%% *} + local ms_platform=${kv##* } + local url hash + + url=$(release_platform_attr "$release_files" "$ms_platform" url) + hash=$(release_platform_attr "$release_files" "$ms_platform" hash) + + [[ -z "$url" || -z "$hash" ]] && continue + echo " $nix_platform = { url = \"$url\"; sha512 = \"$hash\"; };" @@ -55,15 +57,13 @@ platform_sources () { } generate_package_list() { - local version pkgs nuget_url - version="$1" + local version="$1" shift - pkgs=( "$@" ) + local pkgs=( "$@" ) nuget_url pkg url hash nuget_url="$(curl -f "https://api.nuget.org/v3/index.json" | jq --raw-output '.resources[] | select(."@type" == "PackageBaseAddress/3.0.0")."@id"')" for pkg in "${pkgs[@]}"; do - local url hash url="${nuget_url}${pkg,,}/${version,,}/${pkg,,}.${version,,}.nupkg" hash="$(nix-prefetch-url "$url")" if [[ -z "$hash" ]]; then @@ -76,8 +76,10 @@ generate_package_list() { } version_older () { - cur_version=$1 - max_version=$2 + local cur_version=$1 + local max_version=$2 + local result + result=$(nix-instantiate -I ../../../../. \ --eval -E "(import ../../../../. {}).lib.versionOlder \"$cur_version\" \"$max_version\"") if [[ "$result" == "true" ]]; then @@ -112,15 +114,15 @@ aspnetcore_packages () { # This should not happend in minor or bugfix updates, but probably happens # with every new major .NET release. local pkgs=( - "Microsoft.AspNetCore.App.Runtime.linux-arm" - "Microsoft.AspNetCore.App.Runtime.linux-arm64" - "Microsoft.AspNetCore.App.Runtime.linux-musl-arm64" - "Microsoft.AspNetCore.App.Runtime.linux-musl-x64" - "Microsoft.AspNetCore.App.Runtime.linux-x64" - "Microsoft.AspNetCore.App.Runtime.osx-x64" - "Microsoft.AspNetCore.App.Runtime.win-arm64" - "Microsoft.AspNetCore.App.Runtime.win-x64" - "Microsoft.AspNetCore.App.Runtime.win-x86" + "Microsoft.AspNetCore.App.Runtime.linux-arm" + "Microsoft.AspNetCore.App.Runtime.linux-arm64" + "Microsoft.AspNetCore.App.Runtime.linux-musl-arm64" + "Microsoft.AspNetCore.App.Runtime.linux-musl-x64" + "Microsoft.AspNetCore.App.Runtime.linux-x64" + "Microsoft.AspNetCore.App.Runtime.osx-x64" + "Microsoft.AspNetCore.App.Runtime.win-arm64" + "Microsoft.AspNetCore.App.Runtime.win-x64" + "Microsoft.AspNetCore.App.Runtime.win-x86" ) # These packages are currently broken on .NET 8 @@ -133,9 +135,9 @@ aspnetcore_packages () { # Packages that only apply to .NET 6 and up if ! version_older "$version" "6"; then pkgs+=( - "Microsoft.AspNetCore.App.Ref" - "Microsoft.AspNetCore.App.Runtime.linux-musl-arm" - "Microsoft.AspNetCore.App.Runtime.osx-arm64" + "Microsoft.AspNetCore.App.Ref" + "Microsoft.AspNetCore.App.Runtime.linux-musl-arm" + "Microsoft.AspNetCore.App.Runtime.osx-arm64" ) fi @@ -168,102 +170,103 @@ sdk_packages () { # This should not happend in minor or bugfix updates, but probably happens # with every new major .NET release. local pkgs=( - "Microsoft.NETCore.App.Host.linux-arm" - "Microsoft.NETCore.App.Host.linux-arm64" - "Microsoft.NETCore.App.Host.linux-musl-arm64" - "Microsoft.NETCore.App.Host.linux-musl-x64" - "Microsoft.NETCore.App.Host.linux-x64" - "Microsoft.NETCore.App.Host.osx-x64" - "Microsoft.NETCore.App.Host.win-arm64" - "Microsoft.NETCore.App.Host.win-x64" - "Microsoft.NETCore.App.Host.win-x86" - "Microsoft.NETCore.App.Runtime.linux-arm" - "Microsoft.NETCore.App.Runtime.linux-arm64" - "Microsoft.NETCore.App.Runtime.linux-musl-arm64" - "Microsoft.NETCore.App.Runtime.linux-musl-x64" - "Microsoft.NETCore.App.Runtime.linux-x64" - "Microsoft.NETCore.App.Runtime.osx-x64" - "Microsoft.NETCore.App.Runtime.win-arm64" - "Microsoft.NETCore.App.Runtime.win-x64" - "Microsoft.NETCore.App.Runtime.win-x86" - "Microsoft.NETCore.DotNetAppHost" - "Microsoft.NETCore.DotNetHost" - "Microsoft.NETCore.DotNetHostPolicy" - "Microsoft.NETCore.DotNetHostResolver" - "runtime.linux-arm64.Microsoft.NETCore.DotNetAppHost" - "runtime.linux-arm64.Microsoft.NETCore.DotNetHost" - "runtime.linux-arm64.Microsoft.NETCore.DotNetHostPolicy" - "runtime.linux-arm64.Microsoft.NETCore.DotNetHostResolver" - "runtime.linux-arm.Microsoft.NETCore.DotNetAppHost" - "runtime.linux-arm.Microsoft.NETCore.DotNetHost" - "runtime.linux-arm.Microsoft.NETCore.DotNetHostPolicy" - "runtime.linux-arm.Microsoft.NETCore.DotNetHostResolver" - "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetAppHost" - "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetHost" - "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetHostPolicy" - "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetHostResolver" - "runtime.linux-musl-x64.Microsoft.NETCore.DotNetAppHost" - "runtime.linux-musl-x64.Microsoft.NETCore.DotNetHost" - "runtime.linux-musl-x64.Microsoft.NETCore.DotNetHostPolicy" - "runtime.linux-musl-x64.Microsoft.NETCore.DotNetHostResolver" - "runtime.linux-x64.Microsoft.NETCore.DotNetAppHost" - "runtime.linux-x64.Microsoft.NETCore.DotNetHost" - "runtime.linux-x64.Microsoft.NETCore.DotNetHostPolicy" - "runtime.linux-x64.Microsoft.NETCore.DotNetHostResolver" - "runtime.osx-x64.Microsoft.NETCore.DotNetAppHost" - "runtime.osx-x64.Microsoft.NETCore.DotNetHost" - "runtime.osx-x64.Microsoft.NETCore.DotNetHostPolicy" - "runtime.osx-x64.Microsoft.NETCore.DotNetHostResolver" - "runtime.win-arm64.Microsoft.NETCore.DotNetAppHost" - "runtime.win-arm64.Microsoft.NETCore.DotNetHost" - "runtime.win-arm64.Microsoft.NETCore.DotNetHostPolicy" - "runtime.win-arm64.Microsoft.NETCore.DotNetHostResolver" - "runtime.win-x64.Microsoft.NETCore.DotNetAppHost" - "runtime.win-x64.Microsoft.NETCore.DotNetHost" - "runtime.win-x64.Microsoft.NETCore.DotNetHostPolicy" - "runtime.win-x64.Microsoft.NETCore.DotNetHostResolver" - "runtime.win-x86.Microsoft.NETCore.DotNetAppHost" - "runtime.win-x86.Microsoft.NETCore.DotNetHost" - "runtime.win-x86.Microsoft.NETCore.DotNetHostPolicy" - "runtime.win-x86.Microsoft.NETCore.DotNetHostResolver" - "Microsoft.NETCore.App.Host.linux-musl-arm" - "Microsoft.NETCore.App.Host.osx-arm64" - "Microsoft.NETCore.App.Runtime.linux-musl-arm" - "Microsoft.NETCore.App.Runtime.osx-arm64" - "Microsoft.NETCore.App.Ref" - "Microsoft.NETCore.App.Runtime.Mono.linux-arm" - "Microsoft.NETCore.App.Runtime.Mono.linux-arm64" - "Microsoft.NETCore.App.Runtime.Mono.linux-musl-x64" - "Microsoft.NETCore.App.Runtime.Mono.linux-x64" - "Microsoft.NETCore.App.Runtime.Mono.osx-arm64" - "Microsoft.NETCore.App.Runtime.Mono.osx-x64" - "Microsoft.NETCore.App.Runtime.Mono.win-x64" - "Microsoft.NETCore.App.Runtime.Mono.win-x86" - "runtime.linux-musl-arm.Microsoft.NETCore.DotNetAppHost" - "runtime.linux-musl-arm.Microsoft.NETCore.DotNetHost" - "runtime.linux-musl-arm.Microsoft.NETCore.DotNetHostPolicy" - "runtime.linux-musl-arm.Microsoft.NETCore.DotNetHostResolver" - "runtime.osx-arm64.Microsoft.NETCore.DotNetAppHost" - "runtime.osx-arm64.Microsoft.NETCore.DotNetHost" - "runtime.osx-arm64.Microsoft.NETCore.DotNetHostPolicy" - "runtime.osx-arm64.Microsoft.NETCore.DotNetHostResolver" - "Microsoft.NETCore.App.Crossgen2.linux-musl-arm" - "Microsoft.NETCore.App.Crossgen2.linux-musl-arm64" - "Microsoft.NETCore.App.Crossgen2.linux-musl-x64" - "Microsoft.NETCore.App.Crossgen2.linux-arm" - "Microsoft.NETCore.App.Crossgen2.linux-arm64" - "Microsoft.NETCore.App.Crossgen2.linux-x64" - "Microsoft.NETCore.App.Crossgen2.osx-x64" - "Microsoft.NETCore.App.Crossgen2.osx-arm64" + "Microsoft.NETCore.App.Host.linux-arm" + "Microsoft.NETCore.App.Host.linux-arm64" + "Microsoft.NETCore.App.Host.linux-musl-arm64" + "Microsoft.NETCore.App.Host.linux-musl-x64" + "Microsoft.NETCore.App.Host.linux-x64" + "Microsoft.NETCore.App.Host.osx-x64" + "Microsoft.NETCore.App.Host.win-arm64" + "Microsoft.NETCore.App.Host.win-x64" + "Microsoft.NETCore.App.Host.win-x86" + "Microsoft.NETCore.App.Runtime.linux-arm" + "Microsoft.NETCore.App.Runtime.linux-arm64" + "Microsoft.NETCore.App.Runtime.linux-musl-arm64" + "Microsoft.NETCore.App.Runtime.linux-musl-x64" + "Microsoft.NETCore.App.Runtime.linux-x64" + "Microsoft.NETCore.App.Runtime.osx-x64" + "Microsoft.NETCore.App.Runtime.win-arm64" + "Microsoft.NETCore.App.Runtime.win-x64" + "Microsoft.NETCore.App.Runtime.win-x86" + "Microsoft.NETCore.DotNetAppHost" + "Microsoft.NETCore.DotNetHost" + "Microsoft.NETCore.DotNetHostPolicy" + "Microsoft.NETCore.DotNetHostResolver" + "runtime.linux-arm64.Microsoft.NETCore.DotNetAppHost" + "runtime.linux-arm64.Microsoft.NETCore.DotNetHost" + "runtime.linux-arm64.Microsoft.NETCore.DotNetHostPolicy" + "runtime.linux-arm64.Microsoft.NETCore.DotNetHostResolver" + "runtime.linux-arm.Microsoft.NETCore.DotNetAppHost" + "runtime.linux-arm.Microsoft.NETCore.DotNetHost" + "runtime.linux-arm.Microsoft.NETCore.DotNetHostPolicy" + "runtime.linux-arm.Microsoft.NETCore.DotNetHostResolver" + "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetAppHost" + "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetHost" + "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetHostPolicy" + "runtime.linux-musl-arm64.Microsoft.NETCore.DotNetHostResolver" + "runtime.linux-musl-x64.Microsoft.NETCore.DotNetAppHost" + "runtime.linux-musl-x64.Microsoft.NETCore.DotNetHost" + "runtime.linux-musl-x64.Microsoft.NETCore.DotNetHostPolicy" + "runtime.linux-musl-x64.Microsoft.NETCore.DotNetHostResolver" + "runtime.linux-x64.Microsoft.NETCore.DotNetAppHost" + "runtime.linux-x64.Microsoft.NETCore.DotNetHost" + "runtime.linux-x64.Microsoft.NETCore.DotNetHostPolicy" + "runtime.linux-x64.Microsoft.NETCore.DotNetHostResolver" + "runtime.osx-x64.Microsoft.NETCore.DotNetAppHost" + "runtime.osx-x64.Microsoft.NETCore.DotNetHost" + "runtime.osx-x64.Microsoft.NETCore.DotNetHostPolicy" + "runtime.osx-x64.Microsoft.NETCore.DotNetHostResolver" + "runtime.win-arm64.Microsoft.NETCore.DotNetAppHost" + "runtime.win-arm64.Microsoft.NETCore.DotNetHost" + "runtime.win-arm64.Microsoft.NETCore.DotNetHostPolicy" + "runtime.win-arm64.Microsoft.NETCore.DotNetHostResolver" + "runtime.win-x64.Microsoft.NETCore.DotNetAppHost" + "runtime.win-x64.Microsoft.NETCore.DotNetHost" + "runtime.win-x64.Microsoft.NETCore.DotNetHostPolicy" + "runtime.win-x64.Microsoft.NETCore.DotNetHostResolver" + "runtime.win-x86.Microsoft.NETCore.DotNetAppHost" + "runtime.win-x86.Microsoft.NETCore.DotNetHost" + "runtime.win-x86.Microsoft.NETCore.DotNetHostPolicy" + "runtime.win-x86.Microsoft.NETCore.DotNetHostResolver" + "Microsoft.NETCore.App.Host.linux-musl-arm" + "Microsoft.NETCore.App.Host.osx-arm64" + "Microsoft.NETCore.App.Runtime.linux-musl-arm" + "Microsoft.NETCore.App.Runtime.osx-arm64" + "Microsoft.NETCore.App.Ref" + "Microsoft.NETCore.App.Runtime.Mono.linux-arm" + "Microsoft.NETCore.App.Runtime.Mono.linux-arm64" + "Microsoft.NETCore.App.Runtime.Mono.linux-musl-x64" + "Microsoft.NETCore.App.Runtime.Mono.linux-x64" + "Microsoft.NETCore.App.Runtime.Mono.osx-arm64" + "Microsoft.NETCore.App.Runtime.Mono.osx-x64" + "Microsoft.NETCore.App.Runtime.Mono.win-x64" + "Microsoft.NETCore.App.Runtime.Mono.win-x86" + "runtime.linux-musl-arm.Microsoft.NETCore.DotNetAppHost" + "runtime.linux-musl-arm.Microsoft.NETCore.DotNetHost" + "runtime.linux-musl-arm.Microsoft.NETCore.DotNetHostPolicy" + "runtime.linux-musl-arm.Microsoft.NETCore.DotNetHostResolver" + "runtime.osx-arm64.Microsoft.NETCore.DotNetAppHost" + "runtime.osx-arm64.Microsoft.NETCore.DotNetHost" + "runtime.osx-arm64.Microsoft.NETCore.DotNetHostPolicy" + "runtime.osx-arm64.Microsoft.NETCore.DotNetHostResolver" + "Microsoft.NETCore.App.Crossgen2.linux-musl-arm" + "Microsoft.NETCore.App.Crossgen2.linux-musl-arm64" + "Microsoft.NETCore.App.Crossgen2.linux-musl-x64" + "Microsoft.NETCore.App.Crossgen2.linux-arm" + "Microsoft.NETCore.App.Crossgen2.linux-arm64" + "Microsoft.NETCore.App.Crossgen2.linux-x64" + "Microsoft.NETCore.App.Crossgen2.osx-x64" + "Microsoft.NETCore.App.Crossgen2.osx-arm64" ) # These packages were removed on .NET 9 if ! version_older "$version" "9"; then - local newpkgs=() - for pkg in "${pkgs[@]}"; do - [[ "$pkg" = *Microsoft.NETCore.DotNetHost* ]] || newpkgs+=("$pkg") - done - pkgs=("${newpkgs[@]}") + local newpkgs=() + local pkg + for pkg in "${pkgs[@]}"; do + [[ "$pkg" = *Microsoft.NETCore.DotNetHost* ]] || newpkgs+=("$pkg") + done + pkgs=("${newpkgs[@]}") fi # These packages were removed on .NET 8 @@ -282,13 +285,14 @@ sdk_packages () { # Packages that only apply to .NET 7 and up if ! version_older "$version" "7"; then pkgs+=( - "runtime.linux-arm64.Microsoft.DotNet.ILCompiler" - "runtime.linux-musl-arm64.Microsoft.DotNet.ILCompiler" - "runtime.linux-musl-x64.Microsoft.DotNet.ILCompiler" - "runtime.linux-x64.Microsoft.DotNet.ILCompiler" - "runtime.osx-x64.Microsoft.DotNet.ILCompiler" - "runtime.win-arm64.Microsoft.DotNet.ILCompiler" - "runtime.win-x64.Microsoft.DotNet.ILCompiler" + "Microsoft.DotNet.ILCompiler" + "runtime.linux-arm64.Microsoft.DotNet.ILCompiler" + "runtime.linux-musl-arm64.Microsoft.DotNet.ILCompiler" + "runtime.linux-musl-x64.Microsoft.DotNet.ILCompiler" + "runtime.linux-x64.Microsoft.DotNet.ILCompiler" + "runtime.osx-x64.Microsoft.DotNet.ILCompiler" + "runtime.win-arm64.Microsoft.DotNet.ILCompiler" + "runtime.win-x64.Microsoft.DotNet.ILCompiler" ) fi @@ -296,6 +300,7 @@ sdk_packages () { if ! version_older "$version" "8"; then pkgs+=( "Microsoft.NET.ILLink.Tasks" + "runtime.osx-arm64.Microsoft.DotNet.ILCompiler" ) fi @@ -303,74 +308,83 @@ sdk_packages () { } main () { - pname=$(basename "$0") - if [[ ! "$*" =~ ^.*[0-9]{1,}\.[0-9]{1,}.*$ ]]; then - echo "Usage: $pname [sem-versions] + local pname + pname=$(basename "$0") + if [[ ! "$*" =~ ^.*[0-9]{1,}\.[0-9]{1,}.*$ ]]; then + echo "Usage: $pname [sem-versions] Get updated dotnet src (platform - url & sha512) expressions for specified versions Examples: $pname 6.0.14 7.0.201 - specific x.y.z versions $pname 6.0 7.0 - latest x.y versions " >&2 - exit 1 - fi - - for sem_version in "$@"; do - echo "Generating ./versions/${sem_version}.nix" - patch_specified=false - # Check if a patch was specified as an argument. - # If so, generate file for the specific version. - # If only x.y version was provided, get the latest patch - # version of the given x.y version. - if [[ "$sem_version" =~ ^[0-9]{1,}\.[0-9]{1,}\.[0-9]{1,} ]]; then - patch_specified=true - elif [[ ! "$sem_version" =~ ^[0-9]{1,}\.[0-9]{1,}$ ]]; then - continue + exit 1 fi - # Make sure the x.y version is properly passed to .NET release metadata url. - # Then get the json file and parse it to find the latest patch release. - major_minor=$(sed 's/^\([0-9]*\.[0-9]*\).*$/\1/' <<< "$sem_version") - content=$(curl -sL https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/"$major_minor"/releases.json) - major_minor_patch=$([ "$patch_specified" == true ] && echo "$sem_version" || jq -r '."latest-release"' <<< "$content") - major_minor_underscore=${major_minor/./_} - - release_content=$(release "$content" "$major_minor_patch") - aspnetcore_version=$(jq -r '."aspnetcore-runtime".version' <<< "$release_content") - runtime_version=$(jq -r '.runtime.version' <<< "$release_content") - mapfile -t sdk_versions < <(jq -r '.sdks[] | .version' <<< "$release_content" | sort -rn) - - # If patch was not specified, check if the package is already the latest version - # If it is, exit early - if [ "$patch_specified" == false ] && [ -f "./versions/${sem_version}.nix" ]; then - current_version=$(nix-instantiate --eval -E "(import ./versions/${sem_version}.nix { \ + for sem_version in "$@"; do + echo "Generating ./versions/${sem_version}.nix" + local patch_specified=false + # Check if a patch was specified as an argument. + # If so, generate file for the specific version. + # If only x.y version was provided, get the latest patch + # version of the given x.y version. + if [[ "$sem_version" =~ ^[0-9]{1,}\.[0-9]{1,}\.[0-9]{1,} ]]; then + patch_specified=true + elif [[ ! "$sem_version" =~ ^[0-9]{1,}\.[0-9]{1,}$ ]]; then + continue + fi + + # Make sure the x.y version is properly passed to .NET release metadata url. + # Then get the json file and parse it to find the latest patch release. + local major_minor content major_minor_patch + major_minor=$(sed 's/^\([0-9]*\.[0-9]*\).*$/\1/' <<< "$sem_version") + content=$(curl -sL https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/"$major_minor"/releases.json) + major_minor_patch=$([ "$patch_specified" == true ] && echo "$sem_version" || jq -r '."latest-release"' <<< "$content") + local major_minor_underscore=${major_minor/./_} + + local release_content aspnetcore_version runtime_version + release_content=$(release "$content" "$major_minor_patch") + aspnetcore_version=$(jq -r '."aspnetcore-runtime".version' <<< "$release_content") + runtime_version=$(jq -r '.runtime.version' <<< "$release_content") + local -a sdk_versions + mapfile -t sdk_versions < <(jq -r '.sdks[] | .version' <<< "$release_content" | sort -rn) + + # If patch was not specified, check if the package is already the latest version + # If it is, exit early + if [ "$patch_specified" == false ] && [ -f "./versions/${sem_version}.nix" ]; then + local current_version + current_version=$(nix-instantiate --eval -E "(import ./versions/${sem_version}.nix { \ buildAspNetCore = { ... }: {}; \ buildNetSdk = { ... }: {}; \ buildNetRuntime = { ... }: {}; \ }).release_${major_minor_underscore}" | jq -r) - if [[ "$current_version" == "$major_minor_patch" ]]; then - echo "Nothing to update." - continue + if [[ "$current_version" == "$major_minor_patch" ]]; then + echo "Nothing to update." + continue + fi fi - fi - aspnetcore_files="$(release_files "$release_content" .\"aspnetcore-runtime\")" - runtime_files="$(release_files "$release_content" .runtime)" + local aspnetcore_files runtime_files + aspnetcore_files="$(release_files "$release_content" .\"aspnetcore-runtime\")" + runtime_files="$(release_files "$release_content" .runtime)" - channel_version=$(jq -r '."channel-version"' <<< "$content") - support_phase=$(jq -r '."support-phase"' <<< "$content") + local channel_version support_phase + channel_version=$(jq -r '."channel-version"' <<< "$content") + support_phase=$(jq -r '."support-phase"' <<< "$content") - aspnetcore_sources="$(platform_sources "$aspnetcore_files")" - runtime_sources="$(platform_sources "$runtime_files")" + local aspnetcore_sources runtime_sources + aspnetcore_sources="$(platform_sources "$aspnetcore_files")" + runtime_sources="$(platform_sources "$runtime_files")" - sdk_packages="$(sdk_packages "${runtime_version}")" - aspnetcore_packages="$(aspnetcore_packages "${aspnetcore_version}")" + local sdk_packages aspnetcore_packages + sdk_packages="$(sdk_packages "${runtime_version}")" + aspnetcore_packages="$(aspnetcore_packages "${aspnetcore_version}")" - result=$(mktemp) - trap "rm -f $result" TERM INT EXIT + result=$(mktemp) + trap "rm -f $result" TERM INT EXIT - echo "{ buildAspNetCore, buildNetRuntime, buildNetSdk }: + echo "{ buildAspNetCore, buildNetRuntime, buildNetSdk }: # v$channel_version ($support_phase) @@ -392,35 +406,36 @@ in rec { $runtime_sources };" > "${result}" - declare -A feature_bands - unset latest_sdk - - for sdk_version in "${sdk_versions[@]}"; do - sdk_base_version=${sdk_version%-*} - feature_band=${sdk_base_version:0:-2}xx - # sometimes one release has e.g. both 8.0.202 and 8.0.203 - [[ ! ${feature_bands[$feature_band]+true} ]] || continue - feature_bands[$feature_band]=$sdk_version - sdk_files="$(release_files "$release_content" ".sdks[] | select(.version == \"$sdk_version\")")" - sdk_sources="$(platform_sources "$sdk_files")" - sdk_attrname=sdk_${feature_band//./_} - [[ -v latest_sdk ]] || latest_sdk=$sdk_attrname - - echo " + local -A feature_bands + unset latest_sdk + + for sdk_version in "${sdk_versions[@]}"; do + local sdk_base_version=${sdk_version%-*} + local feature_band=${sdk_base_version:0:-2}xx + # sometimes one release has e.g. both 8.0.202 and 8.0.203 + [[ ! ${feature_bands[$feature_band]+true} ]] || continue + feature_bands[$feature_band]=$sdk_version + local sdk_files sdk_sources + sdk_files="$(release_files "$release_content" ".sdks[] | select(.version == \"$sdk_version\")")" + sdk_sources="$(platform_sources "$sdk_files")" + local sdk_attrname=sdk_${feature_band//./_} + [[ -v latest_sdk ]] || local latest_sdk=$sdk_attrname + + echo " $sdk_attrname = buildNetSdk { version = \"${sdk_version}\"; $sdk_sources inherit packages; };" >> "${result}" - done + done - echo " + echo " sdk_$major_minor_underscore = $latest_sdk; }" >> "${result}" - cp "${result}" "./versions/${sem_version}.nix" - echo "Generated ./versions/${sem_version}.nix" - done + cp "${result}" "./versions/${sem_version}.nix" + echo "Generated ./versions/${sem_version}.nix" + done } main "$@" |