| 1 | # Contributor: Antoine Martin (ayakael) <[email protected]> |
| 2 | # Maintainer: Antoine Martin (ayakael) <[email protected]> |
| 3 | pkgname=dotnet8-stage0 |
| 4 | pkgver=8.0.132 |
| 5 | pkgrel=0 |
| 6 | |
| 7 | [ "$CBUILD" != "$CHOST" ] && _cross="-$CARCH" || _cross="" |
| 8 | |
| 9 | # Tag of tarball generator. |
| 10 | _gittag=v$pkgver |
| 11 | |
| 12 | # Versions of prebuilt artifacts and bootstrap tar |
| 13 | # _artifactsver can be set using PrivateSourceBuiltArtifactsVersion |
| 14 | # in `eng/Versions.props` keeping centos.9-x64 |
| 15 | _artifactsver="8.0.132-servicing.26505.1.centos.9-x64" |
| 16 | _bootstrapver="8.0.132" |
| 17 | _installerver=8.0.132 |
| 18 | _runtimever=8.0.132 |
| 19 | _aspnetver=8.0.132 |
| 20 | |
| 21 | # Patches to be used. String before '_' refers to repo to patch |
| 22 | # Look for patch notes within each patch for what they fix / where they come from |
| 23 | # build_* patches applies directly to $builddir |
| 24 | _patches=" |
| 25 | installer_set-crossgen2rid-using-buildarchitecture.patch |
| 26 | runtime_82269-mono-thread-coop-undefine-fortify-source.patch |
| 27 | runtime_83682-specify-notext-on-linux-musl-x86.patch |
| 28 | runtime_90251-rename-mono-cmake-host-var.patch |
| 29 | runtime_100781-fix-mono-build-on-arm.patch |
| 30 | runtime_reverse-101869-transition-1es-template-work.patch |
| 31 | runtime_disable-crossgen-on-riscv64.patch |
| 32 | runtime_disable-local-exec-tls-riscv64.patch |
| 33 | runtime_clang-20.patch |
| 34 | " |
| 35 | |
| 36 | _pkgver_macro=${pkgver%.*} |
| 37 | _pkgver_prior=1 |
| 38 | _pkgver_name="${_pkgver_macro//[.0]}" |
| 39 | pkgdesc="The .NET Core stage0 bits for dotnet build" |
| 40 | # x86: blocked by https://github.com/dotnet/runtime/issues/83509 |
| 41 | # armhf: blocked by https://github.com/dotnet/runtime/issues/77663 |
| 42 | # riscv64: port WIP https://github.com/dotnet/runtime/issues/84834 |
| 43 | # s390x | ppc64le: mono-based builds are not yet stable on musl |
| 44 | # loongarch64: upstream code supported, blocked by binary tarball |
| 45 | arch="all !x86 !armhf !riscv64 !s390x !ppc64le !loongarch64" |
| 46 | _giturl=https://github.com/dotnet/dotnet |
| 47 | url="https://dotnet.microsoft.com" |
| 48 | license="MIT" |
| 49 | options="!check net" # Testsuite in main runtime aport |
| 50 | subpackages=" |
| 51 | dotnet$_pkgver_name-stage0-artifacts:artifacts:noarch |
| 52 | dotnet$_pkgver_name-stage0-bootstrap |
| 53 | " |
| 54 | source=" |
| 55 | dotnet-tarball-$_gittag.tar.gz::https://github.com/dotnet/dotnet/archive/refs/tags/$_gittag.tar.gz |
| 56 | dotnet-release-$_gittag.json::https://github.com/dotnet/dotnet/releases/download/$_gittag/release.json |
| 57 | dotnet-sdk-$_bootstrapver-linux-musl-x64.noextract::https://dotnetcli.azureedge.net/dotnet/Sdk/$_bootstrapver/dotnet-sdk-$_bootstrapver-linux-musl-x64.tar.gz |
| 58 | dotnet-sdk-$_bootstrapver-linux-musl-arm64.noextract::https://dotnetcli.azureedge.net/dotnet/Sdk/$_bootstrapver/dotnet-sdk-$_bootstrapver-linux-musl-arm64.tar.gz |
| 59 | dotnet-sdk-$_bootstrapver-linux-musl-arm.noextract::https://dotnetcli.azureedge.net/dotnet/Sdk/$_bootstrapver/dotnet-sdk-$_bootstrapver-linux-musl-arm.tar.gz |
| 60 | Private.SourceBuilt.Artifacts.$_artifactsver.noextract::https://dotnetcli.azureedge.net/source-built-artifacts/assets/Private.SourceBuilt.Artifacts.$_artifactsver.tar.gz |
| 61 | $_patches |
| 62 | " |
| 63 | |
| 64 | _llvmver=20 |
| 65 | makedepends_host=" |
| 66 | alpine-release |
| 67 | autoconf |
| 68 | automake |
| 69 | bash |
| 70 | binutils |
| 71 | clang$_llvmver |
| 72 | cmake |
| 73 | findutils |
| 74 | g++ |
| 75 | gcc |
| 76 | grep |
| 77 | icu-dev |
| 78 | icu-data-full |
| 79 | krb5-dev |
| 80 | libintl |
| 81 | libstdc++ |
| 82 | libucontext-dev |
| 83 | libunwind-dev |
| 84 | libxml2-dev |
| 85 | libxml2-utils |
| 86 | linux-headers |
| 87 | lttng-ust-dev |
| 88 | musl-dev |
| 89 | musl-utils |
| 90 | openssl-dev |
| 91 | pigz |
| 92 | samurai |
| 93 | unzip |
| 94 | zip |
| 95 | zlib-dev |
| 96 | " |
| 97 | case $CARCH in |
| 98 | s390x) ;; |
| 99 | *) makedepends_host="$makedepends_host lld$_llvmver-dev";; |
| 100 | esac |
| 101 | makedepends_build=" |
| 102 | $makedepends_host |
| 103 | binutils$_cross |
| 104 | git |
| 105 | gcc$_cross |
| 106 | jq |
| 107 | llvm$_llvmver |
| 108 | llvm$_llvmver-dev |
| 109 | patchelf |
| 110 | python3 |
| 111 | sed |
| 112 | xz |
| 113 | " |
| 114 | case $CBUILD_ARCH in |
| 115 | x86_64) _dotnet_arch="x64";; |
| 116 | aarch64) _dotnet_arch="arm64";; |
| 117 | armv7|armhf) _dotnet_arch="arm";; |
| 118 | i586) _dotnet_arch="x86";; |
| 119 | *) _dotnet_arch=$CBUILD_ARCH;; |
| 120 | esac |
| 121 | case $CTARGET_ARCH in |
| 122 | x86_64) _dotnet_target="x64";; |
| 123 | aarch64) _dotnet_target="arm64";; |
| 124 | armv7|armhf) _dotnet_target="arm";; |
| 125 | i586) _dotnet_target="x86";; |
| 126 | *) _dotnet_target=$CTARGET_ARCH;; |
| 127 | esac |
| 128 | |
| 129 | builddir="$srcdir"/dotnet-${_gittag/v} |
| 130 | _packagesdir="$srcdir"/local-packages |
| 131 | _libdir="/usr/lib" |
| 132 | _nugetdir="$srcdir"/nuget |
| 133 | _downloaddir="$srcdir"/local-downloads |
| 134 | _cli_root="$srcdir"/bootstrap |
| 135 | _nuget="$_cli_root/dotnet nuget" |
| 136 | _outputdir="$srcdir"/artifacts |
| 137 | # if true, then within pipeline environment, in which case send logs there |
| 138 | # to be scooped |
| 139 | if [ -d "$APORTSDIR/logs" ]; then |
| 140 | _logdir="$APORTSDIR"/logs/$pkgname |
| 141 | else |
| 142 | _logdir="$srcdir"/logs |
| 143 | fi |
| 144 | |
| 145 | prepare() { |
| 146 | default_prepare |
| 147 | |
| 148 | mkdir -p "$_cli_root" |
| 149 | mkdir -p $_packagesdir $_downloaddir $_outputdir $_nugetdir $_logdir |
| 150 | |
| 151 | # sdk and installer insists on downloading its own dotnet unless ArcadeBuildFromSource |
| 152 | # is true, which opens up a can of worms |
| 153 | sed 's|ArcadeBuildFromSource=true|Architecture|' -i src/*/eng/restore-toolset.sh |
| 154 | |
| 155 | # links logfiles to pipeline logs for easy pickup in pipelines |
| 156 | mkdir -p "$_logdir" "$builddir"/artifacts |
| 157 | ln -s "$_logdir" "$builddir"/artifacts/logs |
| 158 | ln -s "$_logdir" "$builddir"/artifacts/log |
| 159 | for i in "$builddir"/src/*; do |
| 160 | if [ -f "$i" ]; then |
| 161 | continue |
| 162 | fi |
| 163 | mkdir -p "$_logdir"/${i##*\/} "$builddir"/src/${i##*\/}/artifacts |
| 164 | ln -s "$_logdir"/${i##*\/} "$builddir"/src/${i##*\/}/artifacts/log |
| 165 | done |
| 166 | |
| 167 | tar -xf "$srcdir"/dotnet-sdk-$_pkgver_macro*$_dotnet_arch.noextract -C "$_cli_root" --no-same-owner |
| 168 | |
| 169 | local components="$(find "$builddir"/src -maxdepth 1 -mindepth 1 -type d -exec basename '{}' \;)" |
| 170 | for i in $components; do |
| 171 | if [ -f "$builddir/src/$i/NuGet.config" ]; then |
| 172 | $_nuget add source $_packagesdir --name local --configfile "$builddir"/src/$i/NuGet.config |
| 173 | fi |
| 174 | if [ -f "$builddir/src/$i/global.json" ]; then |
| 175 | tmp=$(mktemp) |
| 176 | jq ".tools.dotnet = \"$_bootstrapver\"" "$builddir"/src/$i/global.json > $tmp && mv $tmp "$builddir"/src/$i/global.json |
| 177 | jq 'del(.sdk.version)' "$builddir"/src/$i/global.json > $tmp && mv $tmp "$builddir"/src/$i/global.json |
| 178 | jq 'del(.tools.runtimes)' "$builddir"/src/$i/global.json > $tmp && mv $tmp "$builddir"/src/$i/global.json |
| 179 | fi |
| 180 | done |
| 181 | |
| 182 | # extracting PackageVersions.props as some version information is there |
| 183 | tar -xzf "$srcdir"/Private.SourceBuilt.Artifacts.*.noextract PackageVersions.props |
| 184 | |
| 185 | # sdk looks for TestCli at wrong place |
| 186 | sed '/<TestCliNuGetDirectoryTargetFramework/d' -i "$builddir"/src/sdk/src/Layout/redist/targets/GenerateLayout.targets |
| 187 | } |
| 188 | |
| 189 | _init() { |
| 190 | export _InitializeDotNetCli=$_cli_root |
| 191 | export DOTNET_INSTALL_DIR=$_cli_root |
| 192 | export DOTNET_PATH=$_cli_root |
| 193 | export DotnetTool=$_cli_root/dotnet |
| 194 | export PATH="$_cli_root:/usr/lib/llvm$_llvmver/bin:$PATH" |
| 195 | export NUGET_PACKAGES=$_nugetdir |
| 196 | export DOTNET_CLI_TELEMETRY_OPTOUT=true |
| 197 | export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true |
| 198 | export SHELL=/bin/bash |
| 199 | export EXTRA_CPPFLAGS="${CPPFLAGS/--sysroot=$CBUILDROOT}" |
| 200 | export EXTRA_CXXFLAGS="${CXXFLAGS/--sysroot=$CBUILDROOT}" |
| 201 | export EXTRA_CFLAGS="${CFLAGS/--sysroot=$CBUILDROOT}" |
| 202 | export EXTRA_LDFLAGS="$LDFLAGS" |
| 203 | # sets LIBC_SO for /usr-merge setups |
| 204 | export EXTRA_CFLAGS="$EXTRA_CFLAGS -DLIBC_SO=\\\"libc.musl-$CARCH.so.1\\\"" |
| 205 | unset CXXFLAGS CFLAGS LDFLAGS CPPFLAGS |
| 206 | |
| 207 | ulimit -n 4096 |
| 208 | |
| 209 | "$_cli_root"/dotnet build-server shutdown |
| 210 | } |
| 211 | |
| 212 | _runtime() { |
| 213 | _init |
| 214 | if [ -z "${_runtimever+x}" ]; then |
| 215 | local _runtimever=$(grep OutputPackageVersion "$builddir"/prereqs/git-info/runtime.props | sed -E 's|</?OutputPackageVersion>||g' | tr -d ' ') |
| 216 | fi |
| 217 | local _runtimever_ns=$(awk '{if($2 ~ "Name=\"VS.Redist.Common.NetCore.SharedFramework.x64.*\""){print $3}}' "$builddir"/src/installer/eng/Version.Details.xml | awk -F '"' '{print $2}') |
| 218 | |
| 219 | msg "[$(date)] Building runtime version $_runtimever" |
| 220 | cd "$builddir"/src/runtime |
| 221 | |
| 222 | local args=" |
| 223 | -c Release |
| 224 | -bl |
| 225 | -clang |
| 226 | -arch $_dotnet_target |
| 227 | /consoleLoggerParameters:ShowTimestamp |
| 228 | /p:NoPgoOptimize=true |
| 229 | /p:EnableNgenOptimization=false |
| 230 | /p:ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch=none |
| 231 | /p:_toolsRID=linux-musl-$_dotnet_arch |
| 232 | /p:OutputRid=linux-musl-$_dotnet_target |
| 233 | /p:GitCommitHash=$(grep GitCommitHash "$builddir"/prereqs/git-info/runtime.props | sed -E 's|</?GitCommitHash>||g' | tr -d ' ') |
| 234 | " |
| 235 | if [ "$CBUILD" != "$CHOST" ]; then |
| 236 | local args="$args -cross" |
| 237 | # x86 build of mono broken, thus do not build mono |
| 238 | case $_dotnet_target in |
| 239 | x86) local args="$args /p:DefaultSubsets=clr+libs+host+packs";; |
| 240 | esac |
| 241 | fi |
| 242 | if [ "$_runtimever" != "${_runtimever##*-}" ]; then |
| 243 | local args="$args /p:VersionSuffix=${_runtimever##*-}" |
| 244 | fi |
| 245 | ROOTFS_DIR="$CBUILDROOT" ./build.sh $args |
| 246 | |
| 247 | for i in artifacts/packages/*/*/*.nupkg; do |
| 248 | $_nuget push $i --source="$_packagesdir" |
| 249 | done |
| 250 | mkdir -p "$_downloaddir"/Runtime/$_runtimever_ns |
| 251 | cp artifacts/packages/*/*/dotnet-runtime-*-*.tar.gz $_downloaddir/Runtime/$_runtimever_ns |
| 252 | } |
| 253 | |
| 254 | _sdk() { |
| 255 | _init |
| 256 | if [ -z "${_sdkver+x}" ]; then |
| 257 | local _sdkver=$(grep OutputPackageVersion "$builddir"/prereqs/git-info/sdk.props | sed -E 's|</?OutputPackageVersion>||g' | tr -d ' ') |
| 258 | fi |
| 259 | local _sdkver_ns=$(awk '{if($2 == "Name=\"Microsoft.NET.Sdk\""){print $3}}' "$builddir"/src/installer/eng/Version.Details.xml | awk -F '"' '{print $2}') |
| 260 | |
| 261 | msg "[$(date)] Building sdk version $_sdkver" |
| 262 | cd "$builddir"/src/sdk |
| 263 | |
| 264 | local args=" |
| 265 | -c Release |
| 266 | -bl |
| 267 | /consoleLoggerParameters:ShowTimestamp |
| 268 | /p:GitCommitHash=$(grep GitCommitHash "$builddir"/prereqs/git-info/sdk.props | sed -E 's|</?GitCommitHash>||g' | tr -d ' ') |
| 269 | /p:Architecture=$_dotnet_target |
| 270 | /p:TestCliNuGetDirectoryTargetFramework=netcoreapp3.1 |
| 271 | " |
| 272 | if [ "$_sdkver" != "${_sdkver##*-}" ]; then |
| 273 | local args="$args /p:VersionSuffix=${_sdkver##*-}" |
| 274 | fi |
| 275 | ./build.sh --pack /p:Projects=$builddir/src/sdk/source-build.slnf $args |
| 276 | |
| 277 | for i in artifacts/packages/*/*/*.nupkg; do |
| 278 | $_nuget push $i --source="$_packagesdir" |
| 279 | done |
| 280 | mkdir -p "$_downloaddir"/Sdk/$_sdkver_ns |
| 281 | cp artifacts/packages/*/*/dotnet-toolset-internal-*.zip "$_downloaddir"/Sdk/$_sdkver_ns |
| 282 | } |
| 283 | |
| 284 | _aspnetcore() { |
| 285 | _init |
| 286 | if [ -z "${_aspnetver+x}" ]; then |
| 287 | local _aspnetver=$(grep OutputPackageVersion "$builddir"/prereqs/git-info/aspnetcore.props | sed -E 's|</?OutputPackageVersion>||g' | tr -d ' ') |
| 288 | fi |
| 289 | local _aspnetver_ns=$(awk '{if($2 == "Name=\"Microsoft.AspNetCore.App.Ref.Internal\""){print $3}}' "$builddir"/src/installer/eng/Version.Details.xml | awk -F '"' '{print $2}') |
| 290 | |
| 291 | msg "[$(date)] Build aspnetcore version $_aspnetver" |
| 292 | cd "$builddir"/src/aspnetcore |
| 293 | local args=" |
| 294 | -c Release |
| 295 | -bl |
| 296 | --os-name linux-musl |
| 297 | -arch $_dotnet_target |
| 298 | -no-build-nodejs |
| 299 | /consoleLoggerParameters:ShowTimestamp |
| 300 | /p:BuildNodeJs=false |
| 301 | /p:BuildOSName=linux-musl |
| 302 | /p:GitCommitHash=$(grep GitCommitHash "$builddir"/prereqs/git-info/aspnetcore.props | sed -E 's|</?GitCommitHash>||g' | tr -d ' ') |
| 303 | /p:DotNetAssetRootUrl=file://$_downloaddir/ |
| 304 | /p:EnablePackageValidation=false |
| 305 | " |
| 306 | if [ "$_aspnetver" != "${_aspnetver##*-}" ]; then |
| 307 | local args="$args /p:VersionSuffix=${_aspnetver##*-}" |
| 308 | fi |
| 309 | |
| 310 | # aspnetcore can't find newly created Microsoft.NETCore.App.Runtime.linux-musl-x86 for some reason |
| 311 | case $_dotnet_target in |
| 312 | riscv64|x86) local args="$args /p:CrossgenOutput=false";; |
| 313 | esac |
| 314 | |
| 315 | DotNetBuildFromSource=true ./eng/build.sh --pack $args |
| 316 | |
| 317 | for i in artifacts/packages/*/*/*.nupkg; do |
| 318 | $_nuget push $i --source="$_packagesdir" |
| 319 | done |
| 320 | |
| 321 | mkdir -p "$_downloaddir"/aspnetcore/Runtime/$_aspnetver_ns |
| 322 | cp artifacts/installers/*/aspnetcore-runtime-*-linux-musl-$_dotnet_target.tar.gz "$_downloaddir"/aspnetcore/Runtime/$_aspnetver_ns |
| 323 | cp artifacts/installers/*/aspnetcore_base_runtime.version "$_downloaddir"/aspnetcore/Runtime/$_aspnetver_ns |
| 324 | } |
| 325 | |
| 326 | _installer() { |
| 327 | _init |
| 328 | msg "[$(date)] Building installer version $_installerver" |
| 329 | cd "$builddir"/src/installer |
| 330 | |
| 331 | local args=" |
| 332 | -c Release |
| 333 | -bl |
| 334 | /consoleLoggerParameters:ShowTimestamp |
| 335 | /p:EnableSourceLink=false |
| 336 | /p:OSName=linux-musl |
| 337 | /p:HostOSName=linux-musl |
| 338 | /p:Architecture=$_dotnet_target |
| 339 | /p:CoreSetupBlobRootUrl=file://$_downloaddir/ |
| 340 | /p:DotnetToolsetBlobRootUrl=file://$_downloaddir/ |
| 341 | /p:GitCommitHash=$(grep GitCommitHash "$builddir"/prereqs/git-info/installer.props | sed -E 's|</?GitCommitHash>||g' | tr -d ' ') |
| 342 | /p:GitCommitCount=1 |
| 343 | /p:PublicBaseURL=file://$_downloaddir/ |
| 344 | " |
| 345 | if [ "$_installerver" != "${_installerver##*-}" ]; then |
| 346 | local args="$args /p:VersionSuffix=${_installerver##*-}" |
| 347 | fi |
| 348 | # crossgen broken on x86 |
| 349 | case $_dotnet_target in |
| 350 | riscv64|x86) local args="$args /p:DISABLE_CROSSGEN=True";; |
| 351 | esac |
| 352 | |
| 353 | ./build.sh $args |
| 354 | |
| 355 | mkdir -p "$_downloaddir"/installer/$_installerver |
| 356 | cp artifacts/packages/*/*/dotnet-sdk-$_pkgver_macro*.tar.gz "$_downloaddir"/installer/$_installerver |
| 357 | } |
| 358 | |
| 359 | build() { |
| 360 | _runtime |
| 361 | _sdk |
| 362 | _aspnetcore |
| 363 | _installer |
| 364 | } |
| 365 | |
| 366 | package() { |
| 367 | # lua-aports / buildrepo doesn't know to always build stage0 first when dealing |
| 368 | # with virtual packages. Thus, we need to depend on an empty stage0 pkg that |
| 369 | # dotnetx-build will pull, thus forcing build of stage0 first |
| 370 | mkdir -p "$pkgdir" |
| 371 | } |
| 372 | |
| 373 | bootstrap() { |
| 374 | # allows stage0 to be pulled by dotnetx-build if first build of dotnetx |
| 375 | provides="dotnet$_pkgver_name-bootstrap" |
| 376 | provider_priority=$_pkgver_prior |
| 377 | |
| 378 | local _iltoolsver=$(grep \<MicrosoftNETCoreILAsmVersion "$builddir"/PackageVersions.props | sed -E 's|</?MicrosoftNETCoreILAsmVersion>||g' | tr -d ' ') |
| 379 | |
| 380 | install -dm 755 \ |
| 381 | "$subpkgdir"/$_libdir/dotnet/bootstrap/$pkgver/docs \ |
| 382 | "$subpkgdir"/$_libdir/dotnet/bootstrap/$pkgver/comp \ |
| 383 | "$subpkgdir"/$_libdir/dotnet/artifacts/$pkgver |
| 384 | |
| 385 | # unpack build artifacts to bootstrap subdir for use by future builds |
| 386 | tar --use-compress-program="pigz" \ |
| 387 | -xf "$_downloaddir"/installer/$_installerver/dotnet-sdk-$_pkgver_macro*.tar.gz \ |
| 388 | -C "$subpkgdir"/$_libdir/dotnet/bootstrap/$pkgver/ \ |
| 389 | --no-same-owner |
| 390 | |
| 391 | local _iltools_array=" |
| 392 | runtime.*.Microsoft.NETCore.TestHost.*.nupkg |
| 393 | runtime.*.Microsoft.NETCore.ILAsm.*.nupkg |
| 394 | runtime.*.Microsoft.NETCore.ILDAsm.*.nupkg |
| 395 | " |
| 396 | |
| 397 | local _nupkgs_array=" |
| 398 | $_iltools_array |
| 399 | Microsoft.NETCore.App.Host.*.*.nupkg |
| 400 | Microsoft.NETCore.App.Runtime.*.*.nupkg |
| 401 | Microsoft.NETCore.App.Crossgen2.*.*.nupkg |
| 402 | runtime.*.Microsoft.NETCore.DotNetHost.*.nupkg |
| 403 | runtime.*.Microsoft.NETCore.DotNetHostPolicy.*.nupkg |
| 404 | runtime.*.Microsoft.NETCore.DotNetHostResolver.*.nupkg |
| 405 | runtime.*.Microsoft.NETCore.DotNetAppHost.*.nupkg |
| 406 | Microsoft.AspNetCore.App.Runtime.linux-musl-*.*.nupkg |
| 407 | " |
| 408 | |
| 409 | # copies artifacts to artifacts dir for use by future dotnet builds |
| 410 | for i in $_nupkgs_array; do install -Dm644 "$_packagesdir"/$i "$subpkgdir"/$_libdir/dotnet/artifacts/$pkgver/ || true; done |
| 411 | |
| 412 | msg "Changing iltools version to $_iltoolsver" |
| 413 | # source-build expects a certain version of ilasm, ildasm and testhost |
| 414 | # following adjusts version |
| 415 | for i in $_iltools_array; do |
| 416 | local nupath="$subpkgdir"$_libdir/dotnet/artifacts/$pkgver/$i |
| 417 | local nupath=$(find $nupath || true) |
| 418 | local nupkg="${nupath##*/}" |
| 419 | local nuname="${nupkg/.nupkg}" |
| 420 | if [ -z "${nuname/*rtm*}" ] || [ -z "${nuname/*servicing*}" ] || [ -z "${nuname/*preview*}" ]; then |
| 421 | nuname=${nuname%-*} |
| 422 | fi |
| 423 | local nuname="${nuname%.*.*.*}" |
| 424 | local nuver="${nupkg/$nuname.}" |
| 425 | local nuver="${nuver/.nupkg}" |
| 426 | local nuspec="$nuname.nuspec" |
| 427 | |
| 428 | if [ ! "$nupath" ] || [ "$nupath" = "${nupath/$nuver/$_iltoolsver}" ]; then |
| 429 | continue |
| 430 | fi |
| 431 | # shellcheck disable=SC2094 |
| 432 | unzip -p "$nupath" $nuspec | sed "s|$nuver|$_iltoolsver|" > "$srcdir"/$nuspec |
| 433 | cd "$srcdir" |
| 434 | zip -u "$nupath" $nuspec |
| 435 | mv "$nupath" "${nupath/$nuver/$_iltoolsver}" |
| 436 | done |
| 437 | |
| 438 | # make absolute rpath of libmscordbi.so to help abuild find libmscordaccore.so |
| 439 | local _libmscordbi_path="$(realpath "$subpkgdir"/usr/lib/dotnet/bootstrap/*/shared/Microsoft.NETCore.App/*/libmscordbi.so)" |
| 440 | local _libmscordbi_path="${_libmscordbi_path/$subpkgdir/}" |
| 441 | local _libmscordbi_path="${_libmscordbi_path%/*}" |
| 442 | patchelf $subpkgdir/usr/lib/dotnet/bootstrap/*/shared/Microsoft.NETCore.App/*/libmscordbi.so --set-rpath $_libmscordbi_path |
| 443 | } |
| 444 | |
| 445 | # build relies on a plethora of nupkgs which are provided by this Artifacts file. |
| 446 | # stage0 sources these from Microsoft, which then allows bootstrap to build |
| 447 | # locally hosted versions. The following unpacks built tarball into directory |
| 448 | # for use by future builds. |
| 449 | artifacts() { |
| 450 | pkgdesc="Internal package for building .NET $_pkgver_macro Software Development Kit" |
| 451 | # hack to allow artifacts to pull itself |
| 452 | provides="dotnet$_pkgver_name-bootstrap-artifacts" |
| 453 | provider_priority=$_pkgver_prior |
| 454 | |
| 455 | # directory creation |
| 456 | install -dm 755 \ |
| 457 | "$subpkgdir"/$_libdir/dotnet/artifacts/$pkgver \ |
| 458 | "$subpkgdir"/usr/share/licenses |
| 459 | |
| 460 | # extract artifacts to artifacts dir for use by future dotnet builds |
| 461 | tar --use-compress-program="pigz" \ |
| 462 | -xf "$srcdir"/Private.SourceBuilt.Artifacts.*.noextract \ |
| 463 | -C "$subpkgdir"/$_libdir/dotnet/artifacts/$pkgver/ \ |
| 464 | --no-same-owner |
| 465 | } |
| 466 | |
| 467 | sha512sums=" |
| 468 | acaa7ca6a414daeb113c2d2b7522a3a533f585db802a53c867873142dd2391a46760faea8f142ef68be0204b11d7b50cb6469301d54d756993d8105d63d8e668 dotnet-tarball-v8.0.132.tar.gz |
| 469 | b369bffbbaa6e62df9d981fec0ad070021c2862779fd8efefa74897a0028b081fc167b1838c9fa41e1671354a667f1341c8ac61d33cffe37796c6b443b173138 dotnet-release-v8.0.132.json |
| 470 | d201d23d068c5c320c3120c077438b5700ae1102e087209cee8caf370836709eabd3a80d1184bdd134b04175df3aad1233c7956e67bcc45fc644fc7acf95db77 dotnet-sdk-8.0.132-linux-musl-x64.noextract |
| 471 | 0af578cdbf3258c36bee35b8abf4f62d45380e199d76bf5c97910edd92fd073f383afd42df9115f68a4563e1e26a0b0ae2398dae1c1cc7a15fbd927e242e130e dotnet-sdk-8.0.132-linux-musl-arm64.noextract |
| 472 | 9b3e0cb267155d81f950d78bb6d60d7c7d179997d941d80762486b5d1983955341517053b659d64cdcb9e060860ee8806e5c18765f6a3fac8699af83ee2135dd dotnet-sdk-8.0.132-linux-musl-arm.noextract |
| 473 | 46ee04bede7a40b1d0ed402f6b184044870fd2eca22b7f1027055b9826c8410ce4210570e34f8d66edc1fff23326868b515e31d107845922c747892a7b8721e8 Private.SourceBuilt.Artifacts.8.0.132-servicing.26505.1.centos.9-x64.noextract |
| 474 | b6a2dfeccac329546f87f1019c1f2cf07e2f294dd33914449ad08d92269c8713b6fa1e330ef257c24e189023fd0b824df97688b0ba6e578a6d0292b07a72b4c1 installer_set-crossgen2rid-using-buildarchitecture.patch |
| 475 | d732df247c721c9f677baabdd7f36dbf4b564814ff64164361065bb1c196b767494a1d39f634eadf01a23032c7b3e64102614b7213065c81096bbf3f8022e6a0 runtime_82269-mono-thread-coop-undefine-fortify-source.patch |
| 476 | c983a1ab7f06ac86691e0fa7a61fcad69a074d984ef4a4116bee43f20be918215963c7ec8ddd7edd70432b29b160ff78288183acc89fda15ce4a75bfdbf99ee3 runtime_83682-specify-notext-on-linux-musl-x86.patch |
| 477 | 3354fa721809f1b94c579408ee78004ff3ca2ba79212c1a0ecc424a9955bb5d5a80c115d4c30dd257526f356ea76f0562db6f83d8dd0b6135f8c689886b3348d runtime_90251-rename-mono-cmake-host-var.patch |
| 478 | e748953eeeb13963f4e680fe6d38a5d0d1fc34b45fe9c62ba0b15ea647b23be826aaa7dd6466765c554bfed491b36c5822ac6f71b377dd95f31e16e6e75e0661 runtime_100781-fix-mono-build-on-arm.patch |
| 479 | 5b882e17c92a040a784742f637a19e7c09f10ed9e922436eaedaf0e2238e31fd67547821d073eaff6f7f61110be44af9d9e1786b6227659f72e8e1e549f6f540 runtime_reverse-101869-transition-1es-template-work.patch |
| 480 | 8348b51168709cd1f9e946dbfb02eaf3088d7c68e986390cf5fd861a057e188064013fbc008aa1e12d19d12b9ad7a4091732cd1b0fb8b629ef2a880718def5a7 runtime_disable-crossgen-on-riscv64.patch |
| 481 | 93454767eaa812ac39b38b04764bd41480fea9b5a78f32d2ea1baa072a20eb31d302c475e8737b0fb2a3b8a6f47567795ddd0a7603369e90e7c5944b11357b00 runtime_disable-local-exec-tls-riscv64.patch |
| 482 | 829f67ea6b3aae77a073a21ddc184f9751e44f3e721588907db9a6e00cd694a123a6e3866749aaee0e57290250ef3e67a8da8604f806e1d9a356fe9bc3fc9cdd runtime_clang-20.patch |
| 483 | " |