diff --git a/user/dotnet8-stage0/APKBUILD b/user/dotnet8-stage0/APKBUILD new file mode 100644 index 0000000..1e8f080 --- /dev/null +++ b/user/dotnet8-stage0/APKBUILD @@ -0,0 +1,528 @@ +# Maintainer: Antoine Martin (ayakael) +# Contributor: Antoine Martin (ayakael) + +pkgname=dotnet8-stage0 +pkgver=8.0.100_pre1 +pkgrel=0 + +[ "$CBUILD" != "$CHOST" ] && _cross="-$CARCH" || _cross="" + +# Tag of tarball generator. +_gittag=v8.0.100-preview.1 + +# Versions of prebuilt artifacts and bootstrap tar +_artifactsver=0.1.0-8.0.100-5.centos.8-x64 +_prebuiltsver=0.1.0-8.0.100-4.centos.8-x64 +_bootstrapver="8.0.100-preview.1.23115.2" +_installerver=$_bootstrapver + +# Version of packages that aren't defined in git-info or badly defined +_iltoolsver=8.0.0-alpha.1.23076.9 + +# Patches to be used. String before '_' refers to repo to patch +# Look for patch notes within each patch for what they fix / where they come from +# build_* patches applies directly to $builddir +_patches=" + aspnetcore_use-linux-musl-crossgen-on-non-x64.patch + build_set-local-repo.patch + installer_runtimepacks.patch + roslyn_allow-extra-params.patch + runtime_76500-properly-set-toolchain-for-alpine.patch + runtime_make-lld-use-depend-on-existing-on-target.patch + runtime_mono-thread-coop-undefine-fortify-source.patch + runtime_no-additional-runtime-id.patch + sdk_dotnet-watch-nowarn-ad0001.patch + sdk_dummyshim-fix.patch + sdk_fix-sdk-download.patch + " +_extra_nupkgs=" + https://globalcdn.nuget.org/packages/microsoft.netcore.app.host.linux-musl-x64.7.0.2.nupkg + https://globalcdn.nuget.org/packages/microsoft.netcore.app.host.linux-musl-arm64.7.0.2.nupkg + https://globalcdn.nuget.org/packages/microsoft.netcore.app.host.linux-musl-arm.7.0.2.nupkg + " + +_pkgver_macro=${pkgver%.*} +_pkgver_prior=1 +_pkgver_name="${_pkgver_macro//[.0]}" +pkgdesc="The .NET Core stage0 bits for dotnet build" +# x86: blocked by https://github.com/dotnet/runtime/issues/77667 +# armhf: blocked by https://github.com/dotnet/runtime/issues/77663 +# riscv64: port WIP https://github.com/dotnet/runtime/issues/36748 +# s390x / ppc64le: no bootstrap crossbuilt yet +arch="all !x86 !armhf !riscv64 !s390x !ppc64le" +url=https://dotnet.microsoft.com +license="MIT" +options="!check" # Testsuite in main -build aport +subpackages=" + dotnet$_pkgver_name-stage0-artifacts:artifacts:noarch + dotnet$_pkgver_name-stage0-bootstrap + " +source=" + https://lab.ilot.io/dotnet/dotnet/-/releases/$_gittag/downloads/tarball/dotnet-$_gittag.tar.xz + dotnet-sdk-$_bootstrapver-linux.musl.x64.noextract::https://dotnetbuilds.azureedge.net/public/Sdk/$_bootstrapver/dotnet-sdk-$_bootstrapver-linux-musl-x64.tar.gz + dotnet-sdk-$_bootstrapver-linux.musl.arm64.noextract::https://dotnetbuilds.azureedge.net/public/Sdk/$_bootstrapver/dotnet-sdk-$_bootstrapver-linux-musl-arm64.tar.gz + dotnet-sdk-$_bootstrapver-linux.musl.arm.noextract::https://dotnetbuilds.azureedge.net/public/Sdk/$_bootstrapver/dotnet-sdk-$_bootstrapver-linux-musl-arm.tar.gz + Private.SourceBuilt.Artifacts.$_artifactsver.noextract::https://dotnetcli.azureedge.net/source-built-artifacts/assets/Private.SourceBuilt.Artifacts.$_artifactsver.tar.gz + Private.SourceBuilt.Prebuilts.$_prebuiltsver.noextract::https://dotnetcli.azureedge.net/source-built-artifacts/assets/Private.SourceBuilt.Prebuilts.$_prebuiltsver.tar.gz + $_extra_nupkgs + $_patches + " + +makedepends_host=" + alpine-release + autoconf + automake + bash + binutils + clang + cmake + findutils + g++ + gcc + grep + icu-dev + krb5-dev + libintl + libstdc++ + libucontext-dev + libunwind-dev + libxml2-dev + libxml2-utils + linux-headers + lttng-ust-dev + musl-dev + musl-utils + openssl-dev + pigz + unzip + zip + zlib-dev + " +case $CARCH in + s390x|x86) ;; + *) makedepends_host="$makedepends_host lld-dev";; +esac +makedepends_build=" + $makedepends_host + binutils$_cross + git + gcc$_cross + jq + llvm + llvm-dev + python3 + sed + xz + " +case $CBUILD_ARCH in + x86_64) _dotnet_arch="x64";; + aarch64) _dotnet_arch="arm64";; + armv7|armhf) _dotnet_arch="arm";; + i586) _dotnet_arch="x86";; + *) _dotnet_arch=$CBUILD_ARCH;; +esac +case $CTARGET_ARCH in + x86_64) _dotnet_target="x64";; + aarch64) _dotnet_target="arm64";; + armv7|armhf) _dotnet_target="arm";; + i586) _dotnet_target="x86";; + *) _dotnet_target=$CTARGET_ARCH;; +esac + +builddir="$srcdir"/dotnet-${_gittag/release\/} +_packagesdir="$srcdir"/local-packages +_libdir="/usr/lib" +_nugetdir="$srcdir"/nuget +_downloaddir="$srcdir"/local-downloads +_cli_root="$srcdir"/bootstrap +_nuget="$_cli_root/dotnet nuget" +_outputdir="$srcdir"/artifacts +# if true, then within pipeline environment, in which case send logs there +# to be scooped +if [ -d "$APORTSDIR/logs" ]; then + _logdir="$APORTSDIR"/logs/$pkgname +else + _logdir="$srcdir"/logs +fi + +# generates tarball containing all components built by dotnet +snapshot() { + local _pkg="$srcdir"/${builddir##*/}.tar + ulimit -n 4096 + if [ -d "$srcdir" ]; then + cd "$srcdir" + else + mkdir -p "$srcdir" && cd "$srcdir" + fi + if [ -d "installer" ]; then + cd "$srcdir"/installer + else + git clone https://github.com/dotnet/installer && cd "$srcdir"/installer + fi + git checkout $_gittag + + sed 's|/src/installer||' "$startdir"/installer_2780-reprodicible-tarball.patch | patch -Np1 || true + sed 's|/src/installer||' "$startdir"/installer_fix-version.patch | patch -Np1 || true + if [ ! -d "$_cli_root" ]; then + local _cli_root= + fi + + _InitializeDotNetCli="$_cli_root" DOTNET_INSTALL_DIR="$_cli_root" DotNetBuildFromSource=true ./build.sh \ + /p:ArcadeBuildTarball=true \ + /p:TarballDir=$builddir \ + /p:TarballFilePath=$_pkg + + msg "Compressing ${builddir##*/}.tar to $SRCDEST" + xz -T0 -9 -vv -e -c > "$SRCDEST"/${builddir##*/}.tar.xz < "$_pkg" + + cd "$startdir" + abuild checksum +} + +prepare() { + default_prepare + + # Parallel restore is broken on mono-based builds since dotnet7 + # see https://github.com/dotnet/runtime/issues/77364 + # A workaround via runtime_enable-runtime-marshalling.diff + case $CARCH in + s390x|ppc64le) + msg "runtime_enable-runtime-marshalling.diff" + patch -p1 -i "$srcdir"/runtime_enable-runtime-marshalling.diff + ;; + esac + + # adjusts sdk version and packagedir to expected + for i in runtime sdk installer aspnetcore roslyn; do + sed "s|@@PACKAGESDIR@@|$_packagesdir|" -i "$builddir"/src/$i/NuGet.config + tmp=$(mktemp) + jq ".sdk.version = \"$_bootstrapver\"" "$builddir"/src/$i/global.json > $tmp && mv $tmp "$builddir"/src/$i/global.json + done + + mkdir -p "$_cli_root" + mkdir -p $_packagesdir $_downloaddir $_outputdir $_nugetdir $_logdir + + # links logfiles to pipeline logs for easy pickup in pipelines + mkdir -p "$_logdir" "$builddir"/artifacts + ln -s "$_logdir" "$builddir"/artifacts/logs + ln -s "$_logdir" "$builddir"/artifacts/log + for i in "$builddir"/src/*; do + if [ -f "$i" ]; then + continue + fi + mkdir -p "$_logdir"/${i##*\/} "$builddir"/src/${i##*\/}/artifacts + ln -s "$_logdir"/${i##*\/} "$builddir"/src/${i##*\/}/artifacts/log + done + + tar --use-compress-program="pigz" -xf "$srcdir"/dotnet-sdk-$_pkgver_macro*$_dotnet_arch.noextract -C "$_cli_root" --no-same-owner + + for i in $_extra_nupkgs; do + $_nuget push "$srcdir"/${i##*/} --source="$_packagesdir" + done +} + +_runtime() { + "$_cli_root"/dotnet build-server shutdown + if [ -z "${_runtimever+x}" ]; then + local _runtimever=$(grep OutputPackageVersion "$builddir"/prereqs/git-info/runtime.props | sed -E 's|||g' | tr -d ' ') + fi + 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}') + + msg "[$(date)] Building runtime version $_runtimever" + cd "$builddir"/src/runtime + + local args=" + -c Release + -bl + -clang + -arch $_dotnet_target + /consoleLoggerParameters:ShowTimestamp + /p:NoPgoOptimize=true + /p:EnableNgenOptimization=false + /p:ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch=none + /p:GitCommitHash=$(grep GitCommitHash "$builddir"/prereqs/git-info/runtime.props | sed -E 's|||g' | tr -d ' ') + " + if [ "$CBUILD" != "$CHOST" ]; then + local args="$args -cross" + fi + if [ "$_runtimever" != "${_runtimever##*-}" ]; then + local args="$args /p:VersionSuffix=${_runtimever##*-}" + fi + ROOTFS_DIR="$CBUILDROOT" ./build.sh $args + + for i in artifacts/packages/*/*/*.nupkg; do + $_nuget push $i --source="$_packagesdir" + done + mkdir -p "$_downloaddir"/Runtime/$_runtimever_ns + cp artifacts/packages/*/*/dotnet-runtime-*-*.tar.gz $_downloaddir/Runtime/$_runtimever_ns +} + +_roslyn() { + "$_cli_root"/dotnet build-server shutdown + if [ -z "${_roslynver+x}" ]; then + local _roslynver=$(grep OutputPackageVersion "$builddir"/prereqs/git-info/roslyn.props | sed -E 's|||g' | tr -d ' ') + fi + local _roslynver_ns=$(awk '{if($2 == "Name=\"Microsoft.Net.Compilers.Toolset\""){print $3}}' "$builddir"/src/installer/eng/Version.Details.xml | awk -F '"' '{print $2}') + + msg "[$(date)] Building roslyn version $_roslynver" + cd "$builddir"/src/roslyn + + local args=" + -c Release + -bl + /consoleLoggerParameters:ShowTimestamp + /p:GitCommitHash=$(grep GitCommitHash "$builddir"/prereqs/git-info/roslyn.props | sed -E 's|||g' | tr -d ' ') + " + if [ "$_roslynver" != "${_roslynver##*-}" ]; then + local args="$args /p:VersionSuffix=${_roslynver##*-}" + fi + DotNetBuildFromSource=false ./eng/build.sh --restore $args /p:UseAppHost=false + ./eng/build.sh --restore --build --pack $args + for i in artifacts/packages/*/*/*.nupkg; do + $_nuget push $i --source="$_packagesdir" + done +} + +_sdk() { + "$_cli_root"/dotnet build-server shutdown + if [ -z "${_sdkver+x}" ]; then + local _sdkver=$(grep OutputPackageVersion "$builddir"/prereqs/git-info/sdk.props | sed -E 's|||g' | tr -d ' ') + fi + local _sdkver_ns=$(awk '{if($2 == "Name=\"Microsoft.NET.Sdk\""){print $3}}' "$builddir"/src/installer/eng/Version.Details.xml | awk -F '"' '{print $2}') + + msg "[$(date)] Building sdk version $_sdkver" + cd "$builddir"/src/sdk + + local args=" + -c Release + -bl + /consoleLoggerParameters:ShowTimestamp + /p:GitCommitHash=$(grep GitCommitHash "$builddir"/prereqs/git-info/sdk.props | sed -E 's|||g' | tr -d ' ') + /p:Architecture=$_dotnet_target + " + if [ "$_sdkver" != "${_sdkver##*-}" ]; then + local args="$args /p:VersionSuffix=${_sdkver##*-}" + fi + + # ArgumentsReflector doesn't build correctly when built from source + DotNetBuildFromSource=false dotnet build src/Tests/ArgumentsReflector/ArgumentsReflector.csproj $args + ./build.sh --pack $args + + for i in artifacts/packages/*/*/*.nupkg; do + $_nuget push $i --source="$_packagesdir" + done + mkdir -p "$_downloaddir"/Sdk/$_sdkver_ns + cp artifacts/packages/*/*/dotnet-toolset-internal-*.zip "$_downloaddir"/Sdk/$_sdkver_ns +} + +_aspnetcore() { + "$_cli_root"/dotnet build-server shutdown + if [ -z "${_aspnetver+x}" ]; then + local _aspnetver=$(grep OutputPackageVersion "$builddir"/prereqs/git-info/aspnetcore.props | sed -E 's|||g' | tr -d ' ') + fi + 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}') + + msg "[$(date)] Build aspnetcore version $_aspnetver" + cd "$builddir"/src/aspnetcore + local args=" + -c Release + -bl + --os-name linux-musl + -arch $_dotnet_target + -no-build-nodejs + /consoleLoggerParameters:ShowTimestamp + /p:BuildNodeJs=false + /p:GitCommitHash=$(grep GitCommitHash "$builddir"/prereqs/git-info/aspnetcore.props | sed -E 's|||g' | tr -d ' ') + /p:DotNetAssetRootUrl=file://$_downloaddir/ + /p:EnablePackageValidation=false + " + if [ "$_dotnet_target" = "x86" ] || [ "$_dotnet_target" = "ppc64le" ]; then + local args="$args /p:CrossgenOutput=false" + fi + if [ "$_aspnetver" != "${_aspnetver##*-}" ]; then + local args="$args /p:VersionSuffix=${_aspnetver##*-}" + fi + ./eng/build.sh --pack $args + + for i in artifacts/packages/*/*/*.nupkg; do + $_nuget push $i --source="$_packagesdir" + done + mkdir -p "$_downloaddir"/aspnetcore/Runtime/$_aspnetver_ns + cp artifacts/installers/*/aspnetcore-runtime-*-linux-musl-$_dotnet_target.tar.gz "$_downloaddir"/aspnetcore/Runtime/$_aspnetver_ns + cp artifacts/installers/*/aspnetcore_base_runtime.version "$_downloaddir"/aspnetcore/Runtime/$_aspnetver_ns +} + +_installer() { + "$_cli_root"/dotnet build-server shutdown + msg "[$(date)] Building installer version $_installerver" + cd "$builddir"/src/installer + + local args=" + -c Release + -bl + /consoleLoggerParameters:ShowTimestamp + /p:OSName=linux-musl + /p:HostOSName=linux-musl + /p:Architecture=$_dotnet_target + /p:CoreSetupBlobRootUrl=file://$_downloaddir/ + /p:DotnetToolsetBlobRootUrl=file://$_downloaddir/ + /p:GitCommitHash=$(grep GitCommitHash "$builddir"/prereqs/git-info/installer.props | sed -E 's|||g' | tr -d ' ') + /p:GitCommitCount=1 + /p:PublicBaseURL=file://$_downloaddir/ + " + if [ "$_installerver" != "${_installerver##*-}" ]; then + local args="$args /p:VersionSuffix=${_installerver##*-}" + fi + if [ "$_dotnet_target" = "x86" ]; then + local args="$args /p:DISABLE_CROSSGEN=True" + fi + ./build.sh $args + + mkdir -p "$_downloaddir"/installer/$_installerver + cp artifacts/packages/*/*/dotnet-sdk-$_pkgver_macro*.tar.gz "$_downloaddir"/installer/$_installerver +} + +build() { + export _InitializeDotNetCli=$_cli_root + export DOTNET_INSTALL_DIR=$_cli_root + export PATH="$_cli_root:$PATH" + export NUGET_PACKAGES=$_nugetdir + export DotNetBuildFromSource=true + export DOTNET_CLI_TELEMETRY_OPTOUT=true + export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true + export SHELL=/bin/bash + export EXTRA_CPPFLAGS="${CPPFLAGS/--sysroot=$CBUILDROOT}" + export EXTRA_CXXFLAGS="${CXXFLAGS/--sysroot=$CBUILDROOT}" + export EXTRA_CFLAGS="${CFLAGS/--sysroot=$CBUILDROOT}" + export EXTRA_LDFLAGS="$LDFLAGS" + unset CXXFLAGS CFLAGS LDFLAGS CPPFLAGS + + ulimit -n 4096 + + _runtime + _roslyn + _sdk + _aspnetcore + _installer +} + +package() { + # lua-aports / buildrepo doesn't know to always build stage0 first when dealing + # with virtual packages. Thus, we need to depend on an empty stage0 pkg that + # dotnetx-build will pull, thus forcing build of stage0 first + mkdir -p "$pkgdir" +} + +bootstrap() { + # allows stage0 to be pulled by dotnetx-build if first build of dotnetx + provides="dotnet$_pkgver_name-bootstrap" + provider_priority=$_pkgver_prior + + install -dm 755 \ + "$subpkgdir"/$_libdir/dotnet/bootstrap/$pkgver/docs \ + "$subpkgdir"/$_libdir/dotnet/bootstrap/$pkgver/comp \ + "$subpkgdir"/$_libdir/dotnet/artifacts/$pkgver + + # unpack build artifacts to bootstrap subdir for use by future builds + tar --use-compress-program="pigz" \ + -xf "$_downloaddir"/installer/$_installerver/dotnet-sdk-$_pkgver_macro*.tar.gz \ + -C "$subpkgdir"/$_libdir/dotnet/bootstrap/$pkgver/ \ + --no-same-owner + + local _iltoolsArray=" + runtime.*.Microsoft.NETCore.TestHost.*.nupkg + runtime.*.Microsoft.NETCore.ILAsm.*.nupkg + runtime.*.Microsoft.NETCore.ILDAsm.*.nupkg + " + + local _nupkgsArray=" + $_iltoolsArray + Microsoft.NETCore.App.Host.*.*.nupkg + Microsoft.NETCore.App.Runtime.*.*.nupkg + Microsoft.NETCore.App.Crossgen2.*.*.nupkg + runtime.*.Microsoft.NETCore.DotNetHost.*.nupkg + runtime.*.Microsoft.NETCore.DotNetHostPolicy.*.nupkg + runtime.*.Microsoft.NETCore.DotNetHostResolver.*.nupkg + runtime.*.Microsoft.NETCore.DotNetAppHost.*.nupkg + Microsoft.AspNetCore.App.Runtime.linux-musl-*.*.nupkg + " + + # copies artifacts to artifacts dir for use by future dotnet builds + for i in $_nupkgsArray; do install -Dm644 "$_packagesdir"/$i "$subpkgdir"/$_libdir/dotnet/artifacts/$pkgver/ || true; done + for i in $_extra_nupkgs; do install -Dm644 "$srcdir"/${i##*/} "$subpkgdir"/$_libdir/dotnet/artifacts/$pkgver/; done + + msg "Changing iltools version to $_iltoolsver" + # source-build expects a certain version of ilasm, ildasm and testhost + # following adjusts version + for i in $_iltoolsArray; do + local nupath="$subpkgdir"$_libdir/dotnet/artifacts/$pkgver/$i + local nupath=$(find $nupath || true) + local nupkg="${nupath##*/}" + local nuname="${nupkg/.nupkg}" + if [ -z "${nuname/*rtm*}" ] || [ -z "${nuname/*servicing*}" ] || [ -z "${nuname/*preview*}" ]; then + nuname=${nuname%-*} + fi + local nuname="${nuname%.*.*.*}" + local nuver="${nupkg/$nuname.}" + local nuver="${nuver/.nupkg}" + local nuspec="$nuname.nuspec" + + if [ ! "$nupath" ] || [ "$nupath" = "${nupath/$nuver/$_iltoolsver}" ]; then + continue + fi + # shellcheck disable=SC2094 + unzip -p "$nupath" $nuspec | sed "s|$nuver|$_iltoolsver|" > "$srcdir"/$nuspec + cd "$srcdir" + zip -u "$nupath" $nuspec + mv "$nupath" "${nupath/$nuver/$_iltoolsver}" + done +} + +# build relies on a plethora of nupkgs which are provided by this Artifacts file. +# stage0 sources these from Microsoft, which then allows bootstrap to build +# locally hosted versions. The following unpacks built tarball into directory +# for use by future builds. +artifacts() { + pkgdesc="Internal package for building .NET $_pkgver_macro Software Development Kit" + # hack to allow artifacts to pull itself + provides="dotnet$_pkgver_name-bootstrap-artifacts" + provider_priority=$_pkgver_prior + + # directory creation + install -dm 755 \ + "$subpkgdir"/$_libdir/dotnet/artifacts/$pkgver \ + "$subpkgdir"/usr/share/licenses + + # extract artifacts to artifacts dir for use by future dotnet builds + tar --use-compress-program="pigz" \ + -xf "$srcdir"/Private.SourceBuilt.Artifacts.*.noextract \ + -C "$subpkgdir"/$_libdir/dotnet/artifacts/$pkgver/ \ + --no-same-owner + tar --use-compress-program="pigz" \ + -xf "$srcdir"/Private.SourceBuilt.Prebuilts.*.noextract \ + -C "$subpkgdir"/$_libdir/dotnet/artifacts/$pkgver/ \ + --no-same-owner +} + +sha512sums=" +f48d4168f526aade888bbd17f2da87f721dabc8ae004707ef9195b6359b79b871115a686678c87542ba74e1d86e5485df13d77ef4d3f4001c0804426aebaf92c dotnet-v8.0.100-preview.1.tar.xz +120048fce7c455cb2f98cbdda6b7f789f210d9e7e0b48304f8fdc8b4838c705c6af18b2b4c375b57aa48e0e5084e60ecefad0edc09c19aca166855b3dd3fb539 dotnet-sdk-8.0.100-preview.1.23115.2-linux.musl.x64.noextract +bf985c3b9c1f6f09f46f88527c54445c502e7c75dcbc004dccfb5339d0b5766290ff183abe3808919137ebc5a50c91cbd58a56ec31ad50a5e39a26671e990c61 dotnet-sdk-8.0.100-preview.1.23115.2-linux.musl.arm64.noextract +461094d1f53067c2b496ec25b1bf7686aee3a75f0de5a139bb29a3ac989cdb824367165c8385b78185414430f0579bbba8c94be6d511d793a16746dc018f232f dotnet-sdk-8.0.100-preview.1.23115.2-linux.musl.arm.noextract +bb40f2fcd6f51e908e68fce740400345f2b3ee9c66c1cc69116b4188a19bb0f510e96c8ddcf99e03ee35d16f95ac0b918f940317cb7a5dd858682c4483d3c93b Private.SourceBuilt.Artifacts.0.1.0-8.0.100-5.centos.8-x64.noextract +f20d22a4d069c3647433def852dba50e803a494f4a9f455c24baff8e259896ec709ebcd2a80a1716a9b582ad0d36cd4be98ee4918b0349cca46cea0643a1a9d8 Private.SourceBuilt.Prebuilts.0.1.0-8.0.100-4.centos.8-x64.noextract +5c1fd9e250e7f08d996b7b335134973624a8d1afc331f7fda3a81eee7d2170e39905be20b8786e99078892b21d1582092aeee45d49c5feae3b2bd5374c306fec microsoft.netcore.app.host.linux-musl-x64.7.0.2.nupkg +c5bb986179b4789a24cc4552fa33bee2015acba1c9775ff8fe2295797dd7114f244df2c133e8cee8a3de392c5c47530ba9ef87939cc55660f8c937146b98e1fb microsoft.netcore.app.host.linux-musl-arm64.7.0.2.nupkg +2f35742d74255dd6e7a39e48f29e01cead2b410dabd9e4192d724186a8bd2e04f970b5015229045c732e6c7bcd89a8e9787d19fc50f09fcaab8cd94516f5a0ce microsoft.netcore.app.host.linux-musl-arm.7.0.2.nupkg +9c2f5410c2983ae1d073a5efb78afa56b212165a18252400a42696e10d8cb6016fde5941d1f453eb5332a77f5e209bcb5d40b8ee142609232be95b0cdca1e060 aspnetcore_use-linux-musl-crossgen-on-non-x64.patch +ead38430e54530819ecdb7ab5b087707eee97c4e77b5011a42758352e8265417c65f07b4eec2488708d932de240877695b474e07b8984d34086ef539d5022830 build_set-local-repo.patch +9fe4494b291128469874147e5f28f8fbd023b014114f0aa151fa5cf57821318fa88b834a131eeb77478c8c87adca8c1c0ff3e8c59264c7394fd0621a520eb014 installer_runtimepacks.patch +d1811c1364d9ce4d180d61adf8a9074cf71cf854776959a6db98740f17ed75beec8536602cfb335f534a703d3917e43c3cd91f0f6aed68b5d40c1c80396f5908 roslyn_allow-extra-params.patch +ba9c66b5bb8b8d2de87922717b8a7a6f880eed2a38b5208a554ebd64841c6053658692463471a26442c85cb9adb94043a9d91190786d46c0f45ff4e7cc9c707e runtime_76500-properly-set-toolchain-for-alpine.patch +946f7ddc979bced4e2991f0fe768476b537c97d864362d105fcaec9e6f9f312a798e5e19312966f29fdd80593aa88870be5747b74172d9a70bb1b173c3c75a43 runtime_make-lld-use-depend-on-existing-on-target.patch +d732df247c721c9f677baabdd7f36dbf4b564814ff64164361065bb1c196b767494a1d39f634eadf01a23032c7b3e64102614b7213065c81096bbf3f8022e6a0 runtime_mono-thread-coop-undefine-fortify-source.patch +1de4459522525e1d570e219c9ef067fbbf8745ad369602a006ea62cbafa0f64d2b01b63e00147cf8fed0ea9764373fb4c66aae2323b43a34447990a24f9f29c3 runtime_no-additional-runtime-id.patch +89d008944bf0ba16250ff078e650619b2087654d98b4f7dd614b8197774236e946d92ea17d81d037251ab16880e7bb8f74dbd8a244ca713ecd3efbea17e09318 sdk_dotnet-watch-nowarn-ad0001.patch +f8cdeb30e4b9d4ebf40ded00614813c1afb5d560c0969edc9be2bd594238152a8a932121a4c88c3deca813cc4a62bac96c12c0d7a0c57191911c15eef728c96b sdk_dummyshim-fix.patch +b456f28045ac7c71b3f8ceb0d1836a0290c6527375cd84116c8f259de59434340e259695d7d728d2e0ab6eb4758d7ef14328c50529fad3fe38a5f15262b2a366 sdk_fix-sdk-download.patch +" diff --git a/user/dotnet8-stage0/README.md b/user/dotnet8-stage0/README.md new file mode 100644 index 0000000..9bce6c4 --- /dev/null +++ b/user/dotnet8-stage0/README.md @@ -0,0 +1,140 @@ +# dotnet7-stage0 + +This is the .NET 7.0 package for Alpine Linux. + +Please report any issues [using Gitlab](https://gitlab.alpinelinux.org/alpine/aports/-/issues/new) and tag @ayakael + +# Building info + +## Generated packages +* `dotnet7` (empty package to go around `buildrepo` build ordering bug) +* `dotnet7-stage0-bootstrap` (packages binary bootstrap artifacts) +* `dotnet7-stage0-artifacts` (packages non-binary bootstrap artifacts) + +## How to build dotnet7 on Alpine +As dotnet is a self-hosting compiler (thus it compiles using itself), it +requires a bootstrap for the initial build. To solve this problem, this package +follows the `stage0` proposal outlined [here](https://lists.alpinelinux.org/~alpine/devel/%3C33KG0XO61I4IL.2Z7RTAZ5J3SY6%408pit.net%3E) + +The goal of `stage0` is to bootstrap dotnet with as little intervention as +possible, thus allowing seamless Alpine upgrades. Unfortunately, upstream only +builds bootstraps for Alpine on `x86_64`, `aarch64`, and `armv7`. Thus, `stage0` +has also been designed to be crossbuild aware, allowing bootstrapping to other +platforms. + +In summary, dotnet7 is built using three different aports. + +* `community/dotnet7-stage0` +Builds minimum components for full build of dotnet7, and packages these in an initial +`dotnet7-stage0-bootstrap` package that `dotnet7-build` pulls. +* `community/dotnet7-build` +Builds full and packages dotnet7 fully using either stage0 or previoulsy built +dotnet7 build. +* `community/dotnet7-runtime` +As abuild does not allow different versions for subpackages, a different aport +is required to package runtime bits from dotnet7-build. + +## Crossbuilding with `stage0` +Crossbuilding `stage0` is a three step process: +1. Build sysroot for target platform by using `scripts/bootstrap.sh` in aports repo: +``` +./bootstrap.sh $CTARGET_ARCH +``` +2. Although not necessary, it is recommended to add Alpine repositories to + `$HOME/sysroot-$CTARGET_ARCH/etc/apk/repositories`, making sure to add required + keys. This makes it so that whatever package is not built in step 1 will + be pulled from package repos +3. Crossbuild `dotnet7-stage0` via: +``` +CHOST=$CTARGET_ARCH abuild -r +``` + +# Specification + +This package follows [package naming and contents suggested by upstream](https://docs.microsoft.com/en-us/dotnet/core/build/distribution-packaging), +with two exceptions. It installs dotnet to `/usr/lib/dotnet` (aka `$_libdir`). +In addition, the package is named `dotnet7` as opposed to `dotnet-7.0` +to match Alpine Linux naming conventions for packages with many installable versions + +# Contributing + +The steps below are for the final package. Please only contribute to a +pre-release version if you know what you are doing. Original instructions +follow. + +## General Changes + +1. Fork the main aports repo. + +2. Checkout the forked repository. + + - `git clone ssh://git@gitlab.alpinelinux.org/$USER/aports` + - `cd community/dotnet7-build` + +3. Make your changes. Don't forget to add a changelog. + +4. Do local builds. + + - `abuild -r` + +5. Fix any errors that come up and rebuild until it works locally. + +6. Commit the changes to the git repo in a git branch + + - `git checkout -b dotnet7/` + - `git add` any new patches + - `git remove` any now-unnecessary patches + - `git commit -m 'community/dotnet7-build: descriptive description'` + - `git push` + +7. Create a merge request with your changes, tagging @ayakael for review. + +8. Once the tests in the pull-request pass, and reviewers are happy, your changes + will be merged. + +## Updating to an new upstream release + +1. Fork the main aports repo. + +2. Checkout the forked repository. + + - `git clone ssh://git@gitlab.alpinelinux.org/$USER/aports` + - `cd community/dotnet7-build` + + +3. Build the new upstream source tarball. Update the versions in the + APKBUILD file, and then create a snapshot. After build, update checksum. + + - `abuild snapshot` + - `abuild checksum` + +4. Do local builds. + + - `abuild -r` + +5. Fix any errors that come up and rebuild until it works locally. Any + patches that are needed at this point should be added to the APKBUILD file + in `_patches` variable. + +6. Upload the source archive to a remote location, and update `source` variable. + +7. Commit the changes to the git repo in a git branch. + + - `git checkout -b dotnet7/` + - `git add` any new patches + - `git remove` any now-unnecessary patches + - `git commit -m 'community/dotnet7-build: upgrade to ` + - `git push` + +8. Create a merge request with your changes, tagging @ayakael for review. + +9. Once the tests in the pull-request pass, and reviewers are happy, your changes + will be merged. + +# Testing + +This package uses CI tests as defined in `check()` function. Creating a +merge-request or running a build will fire off tests and flag any issues. + +The tests themselves are contained in this external repository: +https://github.com/redhat-developer/dotnet-regular-tests/ diff --git a/user/dotnet8-stage0/aspnetcore_use-linux-musl-crossgen-on-non-x64.patch b/user/dotnet8-stage0/aspnetcore_use-linux-musl-crossgen-on-non-x64.patch new file mode 100644 index 0000000..ddd8920 --- /dev/null +++ b/user/dotnet8-stage0/aspnetcore_use-linux-musl-crossgen-on-non-x64.patch @@ -0,0 +1,26 @@ +From 65613dc9cf76432dcbde3db3db1005c2aa902fee Mon Sep 17 00:00:00 2001 +From: Antoine Martin +Date: Tue, 21 Feb 2023 15:51:31 -0500 +Subject: [PATCH 09/15] aspnetcore_use-linux-musl-crossgen + +Line causes build of aspnetcore on arm to look for linux version of +CrossGen2 rather than linux-musl. This removes the line so that +BuildOsName is pulled from TargetOsName as expected +--- + .../App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/src/aspnetcore/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj b/src/aspnetcore/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj +index 326968018..fa1f72e62 100644 +--- a/src/aspnetcore/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj ++++ b/src/aspnetcore/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj +@@ -103,7 +103,6 @@ This package is an internal implementation of the .NET Core SDK and is not meant + Special case the crossgen2 package reference on Windows to avoid the x86 package when building in Visual Studio. + --> + $(TargetOsName) +- linux + $(TargetRuntimeIdentifier.Substring(0,$(TargetRuntimeIdentifier.IndexOf('-')))) + x64 + $(BuildArchitecture) +-- +2.38.2 diff --git a/user/dotnet8-stage0/build_set-local-repo.patch b/user/dotnet8-stage0/build_set-local-repo.patch new file mode 100644 index 0000000..ddc55ae --- /dev/null +++ b/user/dotnet8-stage0/build_set-local-repo.patch @@ -0,0 +1,80 @@ +From b5b7fda232e513a04879d82e4035ce548cb8bb34 Mon Sep 17 00:00:00 2001 +From: Antoine Martin +Date: Tue, 21 Feb 2023 15:50:19 -0500 +Subject: [PATCH 08/15] build_set-local-repo + +Patch necessary for stage0, as each component requires the artifacts +from previously built component. This patch (along with a prepare step +in aport) adds a "local" nupkg repository that artifacts are pushed to +at end of component build +--- + src/aspnetcore/NuGet.config | 1 + + src/installer/NuGet.config | 1 + + src/roslyn/NuGet.config | 1 + + src/runtime/NuGet.config | 1 + + src/sdk/NuGet.config | 1 + + 5 files changed, 5 insertions(+) + +diff --git a/src/aspnetcore/NuGet.config b/src/aspnetcore/NuGet.config +index 50e58d647..b30b2cdbc 100644 +--- a/src/aspnetcore/NuGet.config ++++ b/src/aspnetcore/NuGet.config +@@ -2,6 +2,7 @@ + + + ++ + + + +diff --git a/src/installer/NuGet.config b/src/installer/NuGet.config +index 77050d5f1..6ee3c6ecb 100644 +--- a/src/installer/NuGet.config ++++ b/src/installer/NuGet.config +@@ -5,6 +5,7 @@ + + + ++ + + + +diff --git a/src/roslyn/NuGet.config b/src/roslyn/NuGet.config +index 1aafa4f96..87d12ccde 100644 +--- a/src/roslyn/NuGet.config ++++ b/src/roslyn/NuGet.config +@@ -3,6 +3,7 @@ + + + ++ + + + +diff --git a/src/runtime/NuGet.config b/src/runtime/NuGet.config +index 33b098b12..85a58caeb 100644 +--- a/src/runtime/NuGet.config ++++ b/src/runtime/NuGet.config +@@ -7,6 +7,7 @@ + + + ++ + + + +-- +2.38.2 + diff --git a/user/dotnet8-stage0/installer_runtimepacks.patch b/user/dotnet8-stage0/installer_runtimepacks.patch new file mode 100644 index 0000000..03f9980 --- /dev/null +++ b/user/dotnet8-stage0/installer_runtimepacks.patch @@ -0,0 +1,45 @@ +From 96cdd52ef27bff89ae167e6b13fcb8d82da14a69 Mon Sep 17 00:00:00 2001 +From: Antoine Martin +Date: Tue, 21 Feb 2023 15:53:24 -0500 +Subject: [PATCH 10/15] installer_runtimepacks + +Necessary for stage0, as installer doesn't pull runtime packs. +--- + .../src/redist/targets/GenerateLayout.targets | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +diff --git a/src/installer/src/redist/targets/GenerateLayout.targets b/src/installer/src/redist/targets/GenerateLayout.targets +index a27834f85..ca86967df 100644 +--- a/src/installer/src/redist/targets/GenerateLayout.targets ++++ b/src/installer/src/redist/targets/GenerateLayout.targets +@@ -143,6 +143,13 @@ + packs/%(PackageName)/%(PackageVersion) + + ++ ++ Microsoft.NETCore.App.Runtime.$(SharedFrameworkRid) ++ $(MicrosoftNETCoreAppRefPackageVersion) ++ $(TargetFramework) ++ packs/%(PackageName)/%(PackageVersion) ++ ++ + + NETStandard.Library.Ref + $(NETStandardLibraryRefPackageVersion) +@@ -157,6 +164,13 @@ + packs/%(PackageName)/%(PackageVersion) + + ++ ++ Microsoft.AspNetCore.App.Runtime.$(SharedFrameworkRid) ++ $(MicrosoftAspNetCoreAppRefPackageVersion) ++ $(TargetFramework) ++ packs/%(PackageName)/%(PackageVersion) ++ ++ + + Microsoft.NETCore.App.Host.$(SharedFrameworkRid) + $(MicrosoftNETCoreAppHostPackageVersion) +-- +2.38.2 + diff --git a/user/dotnet8-stage0/roslyn_allow-extra-params.patch b/user/dotnet8-stage0/roslyn_allow-extra-params.patch new file mode 100644 index 0000000..b6b628f --- /dev/null +++ b/user/dotnet8-stage0/roslyn_allow-extra-params.patch @@ -0,0 +1,26 @@ +From 84191e5b729198f92152b6ca27129cbcd5b7cd88 Mon Sep 17 00:00:00 2001 +From: Antoine Martin +Date: Tue, 21 Feb 2023 15:54:08 -0500 +Subject: [PATCH 11/15] roslyn_allow-extra-params + +Necessary as to allow manually setting binlog location +--- + src/roslyn/eng/build.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/roslyn/eng/build.sh b/src/roslyn/eng/build.sh +index d49ebf7de..bd9564244 100755 +--- a/src/roslyn/eng/build.sh ++++ b/src/roslyn/eng/build.sh +@@ -167,7 +167,7 @@ while [[ $# > 0 ]]; do + args="$args $1" + shift + ;; +- /p:*) ++ /*) + properties="$properties $1" + ;; + *) +-- +2.38.2 + diff --git a/user/dotnet8-stage0/runtime_76500-properly-set-toolchain-for-alpine.patch b/user/dotnet8-stage0/runtime_76500-properly-set-toolchain-for-alpine.patch new file mode 100644 index 0000000..5bb027c --- /dev/null +++ b/user/dotnet8-stage0/runtime_76500-properly-set-toolchain-for-alpine.patch @@ -0,0 +1,86 @@ +From bf9063bfad5856a2541fbab692197bafc5a4412a Mon Sep 17 00:00:00 2001 +From: Antoine Martin +Date: Tue, 21 Feb 2023 15:55:33 -0500 +Subject: [PATCH 12/15] runtime_76500-properly-set-toolchain-for-alpine + +--- + src/runtime/eng/common/cross/toolchain.cmake | 38 ++++++++++++++++---- + 1 file changed, 31 insertions(+), 7 deletions(-) + +diff --git a/src/runtime/eng/common/cross/toolchain.cmake b/src/runtime/eng/common/cross/toolchain.cmake +index ccfb9951a..2bb1e0845 100644 +--- a/src/runtime/eng/common/cross/toolchain.cmake ++++ b/src/runtime/eng/common/cross/toolchain.cmake +@@ -67,13 +67,25 @@ elseif(TARGET_ARCH_NAME STREQUAL "armv6") + endif() + elseif(TARGET_ARCH_NAME STREQUAL "ppc64le") + set(CMAKE_SYSTEM_PROCESSOR ppc64le) +- set(TOOLCHAIN "powerpc64le-linux-gnu") ++ if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/powerpc64le-alpine-linux-musl) ++ set(TOOLCHAIN "powerpc64le-alpine-linux-musl") ++ else() ++ set(TOOLCHAIN "powerpc64le-linux-gnu") ++ endif() + elseif(TARGET_ARCH_NAME STREQUAL "riscv64") + set(CMAKE_SYSTEM_PROCESSOR riscv64) +- set(TOOLCHAIN "riscv64-linux-gnu") ++ if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/riscv64-alpine-linux-musl) ++ set(TOOLCHAIN "riscv64-alpine-linux-musl") ++ else() ++ set(TOOLCHAIN "riscv64-linux-gnu") ++ endif() + elseif(TARGET_ARCH_NAME STREQUAL "s390x") + set(CMAKE_SYSTEM_PROCESSOR s390x) +- set(TOOLCHAIN "s390x-linux-gnu") ++ if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/s390x-alpine-linux-musl) ++ set(TOOLCHAIN "s390x-alpine-linux-musl") ++ else() ++ set(TOOLCHAIN "s390x-linux-gnu") ++ endif() + elseif(TARGET_ARCH_NAME STREQUAL "x64") + set(CMAKE_SYSTEM_PROCESSOR x86_64) + if(LINUX) +@@ -90,7 +102,11 @@ elseif(TARGET_ARCH_NAME STREQUAL "x64") + endif() + elseif(TARGET_ARCH_NAME STREQUAL "x86") + set(CMAKE_SYSTEM_PROCESSOR i686) +- set(TOOLCHAIN "i686-linux-gnu") ++ if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/i586-alpine-linux-musl) ++ set(TOOLCHAIN "i586-alpine-linux-musl") ++ else() ++ set(TOOLCHAIN "i686-linux-gnu") ++ endif() + if(TIZEN) + set(TIZEN_TOOLCHAIN "i586-tizen-linux-gnu/9.2.0") + endif() +@@ -264,8 +280,12 @@ elseif(TARGET_ARCH_NAME MATCHES "^(arm64|x64)$") + add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}") + endif() + elseif(TARGET_ARCH_NAME STREQUAL "x86") +- add_toolchain_linker_flag(-m32) +- ++ if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/i586-alpine-linux-musl) ++ add_toolchain_linker_flag("--target=${TOOLCHAIN}") ++ add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/usr/lib/gcc/${TOOLCHAIN}") ++ else() ++ add_toolchain_linker_flag(-m32) ++ endif() + if(TIZEN) + add_toolchain_linker_flag("-B${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}") + add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib") +@@ -302,7 +322,11 @@ if(TARGET_ARCH_NAME MATCHES "^(arm|armel)$") + add_compile_options(-mfloat-abi=softfp) + endif() + elseif(TARGET_ARCH_NAME STREQUAL "x86") +- add_compile_options(-m32) ++ if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/i586-alpine-linux-musl) ++ add_compile_options(--target=${TOOLCHAIN}) ++ else() ++ add_compile_options(-m32) ++ endif() + add_compile_options(-Wno-error=unused-command-line-argument) + endif() + +-- +2.38.2 + diff --git a/user/dotnet8-stage0/runtime_make-lld-use-depend-on-existing-on-target.patch b/user/dotnet8-stage0/runtime_make-lld-use-depend-on-existing-on-target.patch new file mode 100644 index 0000000..da3f05e --- /dev/null +++ b/user/dotnet8-stage0/runtime_make-lld-use-depend-on-existing-on-target.patch @@ -0,0 +1,25 @@ +From fed0cbcfd1db11cc913d4dbb0e577172471eec50 Mon Sep 17 00:00:00 2001 +From: Antoine Martin +Date: Tue, 21 Feb 2023 15:57:02 -0500 +Subject: [PATCH 13/15] runtime_make-lld-us-depend-on-existing-on-target + +--- + src/runtime/eng/common/native/init-compiler.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/runtime/eng/common/native/init-compiler.sh b/src/runtime/eng/common/native/init-compiler.sh +index c670cb796..a7bfef593 100644 +--- a/src/runtime/eng/common/native/init-compiler.sh ++++ b/src/runtime/eng/common/native/init-compiler.sh +@@ -128,7 +128,7 @@ fi + # Only lld version >= 9 can be considered stable. lld doesn't support s390x. + if [ "$compiler" = "clang" ] && [ -n "$majorVersion" ] && [ "$majorVersion" -ge 9 ] && [ "$build_arch" != "s390x" ]; then + if "$CC" -fuse-ld=lld -Wl,--version >/dev/null 2>&1; then +- LDFLAGS="-fuse-ld=lld" ++ [ -f "$ROOTFS_DIR/usr/bin/lld" ] && LDFLAGS="-fuse-ld=lld" + fi + fi + +-- +2.38.2 + diff --git a/user/dotnet8-stage0/runtime_mono-thread-coop-undefine-fortify-source.patch b/user/dotnet8-stage0/runtime_mono-thread-coop-undefine-fortify-source.patch new file mode 100644 index 0000000..d4cbe4d --- /dev/null +++ b/user/dotnet8-stage0/runtime_mono-thread-coop-undefine-fortify-source.patch @@ -0,0 +1,25 @@ +From 98054ea87ce70247bb09ceafd2ad1a0b36d2fef4 Mon Sep 17 00:00:00 2001 +Patch-Source: https://github.com/dotnet/runtime/issues/82269 +From: Antoine Martin +Date: Sat, 1 Oct 2022 09:21:58 -0400 +Subject: [PATCH] Undefine fortify-source on mono-thread-coop + +When _FORTIFY_SOURCE=2, there is a bug relating to memcpy that expresses itself. +See: https://gitlab.alpinelinux.org/alpine/aports/-/issues/14105. Alpine Linux +now sets this by default since https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/43463, +which makes mono-flavored runtime dump its core. This patch offers a workaround +by undefining _FORTIFY_SOURCE in the problematic file. + +--- +diff --git a/src/runtime/src/mono/mono/utils/mono-threads-coop.c b/src/runtime/src/mono/mono/utils/mono-threads-coop.c +index 4ed659d6605..34bb5785fba 100644 +--- a/src/runtime/src/mono/mono/utils/mono-threads-coop.c ++++ b/src/runtime/src/mono/mono/utils/mono-threads-coop.c +@@ -15,6 +15,7 @@ + #ifdef TARGET_MACH + #define _DARWIN_C_SOURCE + #endif ++#undef _FORTIFY_SOURCE + + #include + #include diff --git a/user/dotnet8-stage0/runtime_no-additional-runtime-id.patch b/user/dotnet8-stage0/runtime_no-additional-runtime-id.patch new file mode 100644 index 0000000..c1dc571 --- /dev/null +++ b/user/dotnet8-stage0/runtime_no-additional-runtime-id.patch @@ -0,0 +1,27 @@ +From b5bd27a369f9e4786c9c540a7fd96c766b4dca0a Mon Sep 17 00:00:00 2001 +From: Antoine Martin +Date: Tue, 21 Feb 2023 17:06:45 -0500 +Subject: [PATCH 1/1] runtime_no-additional-runtime-id + +For some reason, AdditionalRuntimeIdentifiers gets set as '$arch' rather than 'linux-musl-$arch' +Since we know our portable RID exists, just skip ensuring RID existence +--- + .../src/Microsoft.NETCore.Platforms.csproj | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/src/runtime/src/libraries/Microsoft.NETCore.Platforms/src/Microsoft.NETCore.Platforms.csproj b/src/runtime/src/libraries/Microsoft.NETCore.Platforms/src/Microsoft.NETCore.Platforms.csproj +index 742f17881..81877a5e6 100644 +--- a/src/runtime/src/libraries/Microsoft.NETCore.Platforms/src/Microsoft.NETCore.Platforms.csproj ++++ b/src/runtime/src/libraries/Microsoft.NETCore.Platforms/src/Microsoft.NETCore.Platforms.csproj +@@ -21,8 +21,6 @@ + <_generateRuntimeGraphTargetFramework Condition="'$(MSBuildRuntimeType)' == 'core'">$(NetCoreAppToolCurrent) + <_generateRuntimeGraphTargetFramework Condition="'$(MSBuildRuntimeType)' != 'core'">net472 + <_generateRuntimeGraphTask>$([MSBuild]::NormalizePath('$(BaseOutputPath)', $(Configuration), '$(_generateRuntimeGraphTargetFramework)', '$(AssemblyName).dll')) +- +- $(AdditionalRuntimeIdentifiers);$(OutputRID) + + + +-- +2.38.2 + diff --git a/user/dotnet8-stage0/sdk_dotnet-watch-nowarn-ad0001.patch b/user/dotnet8-stage0/sdk_dotnet-watch-nowarn-ad0001.patch new file mode 100644 index 0000000..3987891 --- /dev/null +++ b/user/dotnet8-stage0/sdk_dotnet-watch-nowarn-ad0001.patch @@ -0,0 +1,24 @@ +From 8f8fa898b907192462834cced1bc39bca8ade9f7 Mon Sep 17 00:00:00 2001 +From: Antoine Martin +Date: Tue, 21 Feb 2023 19:14:55 -0500 +Subject: [PATCH 1/1] sdk_dotnet-watch-nowarn-ad0001 + +--- + src/sdk/src/BuiltInTools/dotnet-watch/dotnet-watch.csproj | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/sdk/src/BuiltInTools/dotnet-watch/dotnet-watch.csproj b/src/sdk/src/BuiltInTools/dotnet-watch/dotnet-watch.csproj +index 0e8811a7b..a359ae5e8 100644 +--- a/src/sdk/src/BuiltInTools/dotnet-watch/dotnet-watch.csproj ++++ b/src/sdk/src/BuiltInTools/dotnet-watch/dotnet-watch.csproj +@@ -9,6 +9,7 @@ + MicrosoftAspNetCore + false + ++ AD0001 + + + +-- +2.38.2 + diff --git a/user/dotnet8-stage0/sdk_dummyshim-fix.patch b/user/dotnet8-stage0/sdk_dummyshim-fix.patch new file mode 100644 index 0000000..c8facc9 --- /dev/null +++ b/user/dotnet8-stage0/sdk_dummyshim-fix.patch @@ -0,0 +1,53 @@ +From 16119e8a420ad8972693530de11697079f8bec51 Mon Sep 17 00:00:00 2001 +From: Antoine Martin +Date: Tue, 21 Feb 2023 15:59:54 -0500 +Subject: [PATCH 15/15] sdk_dummy-shim-fix + +Hack for building sdk within stage0, which expects to be built using the +whole stack. +--- + src/sdk/build/GenerateResxSource.targets | 1 - + .../Microsoft.DotNet.PackageInstall.Tests.csproj | 1 - + .../SampleGlobalToolWithShim/includepublish.nuspec | 2 -- + 3 files changed, 4 deletions(-) + +diff --git a/src/sdk/build/GenerateResxSource.targets b/src/sdk/build/GenerateResxSource.targets +index 239665655..b47510d90 100644 +--- a/src/sdk/build/GenerateResxSource.targets ++++ b/src/sdk/build/GenerateResxSource.targets +@@ -1,7 +1,6 @@ + + + + +diff --git a/src/sdk/src/Tests/Microsoft.DotNet.PackageInstall.Tests/Microsoft.DotNet.PackageInstall.Tests.csproj b/src/sdk/src/Tests/Microsoft.DotNet.PackageInstall.Tests/Microsoft.DotNet.PackageInstall.Tests.csproj +index c75bf86d3..a295df546 100644 +--- a/src/sdk/src/Tests/Microsoft.DotNet.PackageInstall.Tests/Microsoft.DotNet.PackageInstall.Tests.csproj ++++ b/src/sdk/src/Tests/Microsoft.DotNet.PackageInstall.Tests/Microsoft.DotNet.PackageInstall.Tests.csproj +@@ -104,7 +104,6 @@ + + + +- + + + +diff --git a/src/sdk/src/Tests/Microsoft.DotNet.PackageInstall.Tests/SampleGlobalToolWithShim/includepublish.nuspec b/src/sdk/src/Tests/Microsoft.DotNet.PackageInstall.Tests/SampleGlobalToolWithShim/includepublish.nuspec +index b2ed9d349..a93fb1f0d 100644 +--- a/src/sdk/src/Tests/Microsoft.DotNet.PackageInstall.Tests/SampleGlobalToolWithShim/includepublish.nuspec ++++ b/src/sdk/src/Tests/Microsoft.DotNet.PackageInstall.Tests/SampleGlobalToolWithShim/includepublish.nuspec +@@ -12,8 +12,6 @@ + + + +- +- + + + +-- +2.38.2 + diff --git a/user/dotnet8-stage0/sdk_fix-sdk-download.patch b/user/dotnet8-stage0/sdk_fix-sdk-download.patch new file mode 100644 index 0000000..9a390b2 --- /dev/null +++ b/user/dotnet8-stage0/sdk_fix-sdk-download.patch @@ -0,0 +1,25 @@ +From 1c330142683d6d398e38762f7f04f0918426d79d Mon Sep 17 00:00:00 2001 +From: Antoine Martin +Date: Tue, 21 Feb 2023 15:58:42 -0500 +Subject: [PATCH 14/15] sdk_fix-sdk-download + +--- + src/sdk/eng/restore-toolset.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/sdk/eng/restore-toolset.sh b/src/sdk/eng/restore-toolset.sh +index da38088d5..d5dd0956d 100644 +--- a/src/sdk/eng/restore-toolset.sh ++++ b/src/sdk/eng/restore-toolset.sh +@@ -7,7 +7,7 @@ function InitializeCustomSDKToolset { + + # The following frameworks and tools are used only for testing. + # Do not attempt to install them in source build. +- if [[ $properties == *"ArcadeBuildFromSource=true"* ]]; then ++ if [[ "${DotNetBuildFromSource:-}" == "true" ]]; then + return + fi + +-- +2.38.2 +