user/dotnet8-runtime: swap sdk and runtime + portable build
This commit is contained in:
parent
aa71d24702
commit
32a55f61be
15 changed files with 459 additions and 657 deletions
|
@ -1,490 +0,0 @@
|
|||
# Maintainer: Antoine Martin (ayakael) <dev@ayakael.net>
|
||||
# Contributor: Antoine Martin (ayakael) <dev@ayakael.net>
|
||||
|
||||
pkgname=dotnet8-build
|
||||
pkgver=8.0.100_pre7
|
||||
pkgrel=1
|
||||
_gittag=v8.0.0-preview.7.23375.6
|
||||
_giturl="https://github.com/dotnet/dotnet"
|
||||
_testtag=e1cc0f181ffd4d755756d30d985513897d592ba4
|
||||
_bunnytag=v12
|
||||
_stage0ver=8.0.100_pre7-r1
|
||||
_patches="
|
||||
build_enable-timestamps.patch
|
||||
installer_hard-dereference-tar-gz.patch
|
||||
roslyn-analyzer_disable-apphost.patch
|
||||
runtime_82269-mono-thread-coop-undefine-fortify-source.patch
|
||||
runtime_90251-rename-mono-cmake-host-var.patch
|
||||
runtime_enable-system-libunwind.diff
|
||||
runtime_more-clang-16-suppression.patch
|
||||
runtime_remove-usage-of-off64-t.patch
|
||||
vstest_intent-net8.0.patch
|
||||
"
|
||||
|
||||
_pkgver_macro=${pkgver%.*}
|
||||
_pkgver_prior=${pkgver%.*.*}
|
||||
_pkgver_name=${_pkgver_macro//[.0]}
|
||||
pkgdesc="The .NET $_pkgver_macro bootstrap"
|
||||
# x86: blocked by https://github.com/dotnet/runtime/issues/77667
|
||||
# armhf: blocked by https://github.com/dotnet/runtime/issues/77663
|
||||
arch="all !x86 !armhf"
|
||||
url=https://dotnet.microsoft.com
|
||||
license="MIT"
|
||||
# hack for dotnetx-build to be able to pull itself for bootstrapping
|
||||
provides="dotnet$_pkgver_name-bootstrap"
|
||||
provider_priority=$_pkgver_prior
|
||||
checkdepends="
|
||||
babeltrace
|
||||
binutils
|
||||
coreutils
|
||||
file
|
||||
gawk
|
||||
jq
|
||||
lttng-tools
|
||||
npm
|
||||
procps
|
||||
sed
|
||||
strace
|
||||
util-linux-misc
|
||||
which
|
||||
"
|
||||
# For now package is not tested to build on itself
|
||||
# To test: replace 'dotnet-stage0-bootstrap' with 'dotnet-bootstrap'
|
||||
# and 'dotnet-stage0-artifacts' with 'dotnet-bootstrap-artifacts'
|
||||
makedepends="
|
||||
bash
|
||||
clang
|
||||
cmake
|
||||
dotnet$_pkgver_name-stage0-bootstrap=$_stage0ver
|
||||
dotnet$_pkgver_name-stage0-artifacts=$_stage0ver
|
||||
dotnet$_pkgver_name-stage0=$_stage0ver
|
||||
findutils
|
||||
git
|
||||
grep
|
||||
icu-data-full
|
||||
icu-dev
|
||||
inetutils-syslogd
|
||||
krb5-dev
|
||||
libgit2-dev
|
||||
libintl
|
||||
libucontext-dev
|
||||
libunwind-dev
|
||||
libxml2-dev
|
||||
libxml2-utils
|
||||
linux-headers
|
||||
lldb-dev
|
||||
llvm-dev
|
||||
lttng-ust-dev
|
||||
nodejs
|
||||
numactl-dev
|
||||
openssl-dev
|
||||
pigz
|
||||
rsync
|
||||
samurai
|
||||
tar
|
||||
xz
|
||||
zlib-dev
|
||||
"
|
||||
case $CARCH in
|
||||
s390x|x86) ;;
|
||||
*) makedepends="$makedepends lld-dev";;
|
||||
esac
|
||||
|
||||
subpackages="
|
||||
dotnet$_pkgver_name-artifacts:artifacts:noarch
|
||||
dotnet$_pkgver_name-sdk
|
||||
dotnet$_pkgver_name-templates:templates:noarch
|
||||
dotnet-zsh-completion:zshcomp:noarch
|
||||
dotnet-bash-completion:bashcomp:noarch
|
||||
dotnet-doc
|
||||
netstandard21-targeting-pack:netstandard_targeting_pack:noarch
|
||||
"
|
||||
source="
|
||||
dotnet-tarball-$_gittag.tar.gz::https://github.com/dotnet/dotnet/archive/refs/tags/$_gittag.tar.gz
|
||||
dotnet-release-$_gittag.json::https://github.com/dotnet/dotnet/releases/download/$_gittag/release.json
|
||||
dotnet-testsuite-$_testtag.tar.gz::https://github.com/redhat-developer/dotnet-regular-tests/archive/$_testtag.tar.gz
|
||||
dotnet-bunny-$_bunnytag.tar.gz::https://github.com/redhat-developer/dotnet-bunny/archive/$_bunnytag.tar.gz
|
||||
$_patches
|
||||
"
|
||||
builddir="$srcdir"/dotnet-${_gittag/v}
|
||||
_checkdir="$srcdir"/dotnet-bunny-${_bunnytag/v}
|
||||
_testdir="$srcdir"/dotnet-regular-tests-$_testtag
|
||||
_cli_root="$srcdir"/bootstrap
|
||||
_libdir="/usr/lib"
|
||||
# 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
|
||||
|
||||
case $CARCH in
|
||||
x86_64) _dotnet_arch="x64";;
|
||||
aarch64) _dotnet_arch="arm64";;
|
||||
armv7) _dotnet_arch="arm";;
|
||||
armhf) _dotnet_arch="armv6";;
|
||||
*) _dotnet_arch="$CARCH";;
|
||||
esac
|
||||
|
||||
# Build doesn't set all the right executable bits for the right file types
|
||||
_fix_executable() {
|
||||
# add executable bit
|
||||
find "$1" -type f \( \
|
||||
-name 'apphost' -o \
|
||||
-name 'singlefilehost' -o \
|
||||
-name 'lib*so' \
|
||||
\) \
|
||||
-exec chmod +x '{}' \;
|
||||
|
||||
# remove executable bit
|
||||
find "$1" -type f \( \
|
||||
-name '*.a' -o \
|
||||
-name '*.dll' -o \
|
||||
-name '*.h' -o \
|
||||
-name '*.json' -o \
|
||||
-name '*.pdb' -o \
|
||||
-name '*.props' -o \
|
||||
-name '*.pubxml' -o \
|
||||
-name '*.targets' -o \
|
||||
-name '*.txt' -o \
|
||||
-name '*.xml' \
|
||||
\) \
|
||||
-exec chmod -x '{}' \;
|
||||
}
|
||||
|
||||
prepare() {
|
||||
default_prepare
|
||||
|
||||
# Using system libunwind is broken on aarch64|armv7, and unused on mono-based builds
|
||||
# see https://github.com/dotnet/source-build/issues/2408,
|
||||
case $CARCH in
|
||||
aarch64|armv7) msg "Using bundled libunwind";;
|
||||
armhf|s390x|ppc64le) msg "No libunwind used";;
|
||||
*)
|
||||
msg "Using system libunwind"
|
||||
patch -p1 -i "$srcdir"/runtime_enable-system-libunwind.diff
|
||||
;;
|
||||
esac
|
||||
|
||||
# ensure that dotnet does not download artifacts provided by dotnet-artifacts
|
||||
rm -rf "$builddir"/packages/archive
|
||||
|
||||
# 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
|
||||
|
||||
# dotnet requires its bootstrap to be in a writable dir
|
||||
msg "Setting up bootstrap"
|
||||
local _bootstrapdir=$(find $_libdir/dotnet/bootstrap/$_pkgver_macro* -maxdepth 0 | sort -r | head -n 1)
|
||||
if [ ! -d "$_cli_root" ]; then
|
||||
cp -r "$_bootstrapdir" "$_cli_root"
|
||||
fi
|
||||
}
|
||||
|
||||
build() {
|
||||
msg "Building $pkgname-$pkgver"
|
||||
|
||||
ulimit -n 4096
|
||||
|
||||
# Disable use of LTTng as tracing on lttng <=2,13,0 is broken
|
||||
# See https://github.com/dotnet/runtime/issues/57784.
|
||||
if [ -f "/usr/lib/liblttng-ust.so.1 " ]; then
|
||||
export DOTNET_LTTng=0
|
||||
fi
|
||||
|
||||
case "$CARCH" in
|
||||
x86*) ;;
|
||||
*)
|
||||
# clang doesn't implement this outside of x86, and it causes a later configure to fail
|
||||
export CFLAGS="${CFLAGS/-fstack-clash-protection}"
|
||||
export CXXFLAGS="${CXXFLAGS/-fstack-clash-protection}"
|
||||
;;
|
||||
esac
|
||||
|
||||
# looks for most recent recent version of _artifactsdir
|
||||
local _artifactsdir=$(find $_libdir/dotnet/artifacts/$_pkgver_macro* -maxdepth 0 | sort -r | head -n 1)
|
||||
|
||||
# ci args, else the output is forwarded to log files which isn't ideal in a
|
||||
# pipeline environment, and build by defaults uses lots of space
|
||||
local args="
|
||||
/v:minimal
|
||||
/p:LogVerbosity=minimal
|
||||
/p:MinimalConsoleLogOutput=true
|
||||
/p:CleanWhileBuilding=true
|
||||
"
|
||||
|
||||
# part of https://github.com/dotnet/installer/pull/14792 that sets this flag
|
||||
# was not integrated in 7.0.1xx yet
|
||||
case $CARCH in
|
||||
riscv64|s390x|ppc64le) local args="$args /p:SourceBuildUseMonoRuntime=true";;
|
||||
esac
|
||||
|
||||
# Sets TargetRid manually as dotnet cannot be trusted to reliably compute
|
||||
# the machine's runtime ID between releases.
|
||||
# shellcheck disable=SC2034
|
||||
. /etc/os-release
|
||||
local VERSION_ID_DOT="${VERSION_ID//[^.]}"
|
||||
while [ ${#VERSION_ID_DOT} -gt 1 ]; do
|
||||
local VERSION_ID="${VERSION_ID%.*}"
|
||||
local VERSION_ID_DOT="${VERSION_ID//[^.]}"
|
||||
done
|
||||
local VERSION_ID_DASH="${VERSION_ID//[^_]}"
|
||||
while [ ${#VERSION_ID_DASH} -ge 1 ]; do
|
||||
local VERSION_ID="${VERSION_ID%_*}"
|
||||
local VERSION_ID_DASH="${VERSION_ID//[^_]}"
|
||||
done
|
||||
local args="$args /p:TargetRid=$ID.$VERSION_ID-$_dotnet_arch"
|
||||
|
||||
./build.sh \
|
||||
--with-sdk "$_cli_root" \
|
||||
--with-packages "$_artifactsdir" \
|
||||
--release-manifest "$srcdir"/dotnet-release-$_gittag.json \
|
||||
-- $args
|
||||
}
|
||||
|
||||
check() {
|
||||
ulimit -n 4096
|
||||
# Tests timeout (in seconds)
|
||||
local _tests_timeout=1000
|
||||
# Test suite disable flags
|
||||
# following tests can only work after packaging step
|
||||
local _disabled_tests="man-pages distribution-package bash-completion install-location release-version-sane"
|
||||
# test broken: permission issue on lxc / pipelines
|
||||
local _disabled_tests="$_disabled_tests createdump-aspnet workload"
|
||||
# liblttng-ust_sys-sdt.h: no 'NT_STAPSDT' on Alpine's lttng-ust package
|
||||
# lttng: known issue, see https://github.com/dotnet/runtime/issues/57784
|
||||
local _disabled_tests="$_disabled_tests liblttng-ust_sys-sdt.h lttng"
|
||||
# {bundled,system}-libunwind: use system version on all but aarch64/armv7, as broken
|
||||
# see https://github.com/redhat-developer/dotnet-regular-tests/issues/113
|
||||
# disable on mono-flavored runtime as mono does not use libunwind
|
||||
case $CARCH in
|
||||
armv7|aarch64) local _disabled_tests="$_disabled_tests system-libunwind";;
|
||||
s390x|ppc64le|armhf) local _disabled_tests="$_disabled_tests bundled-libunwind system-libunwind";;
|
||||
*) local _disabled_tests="$_disabled_tests bundled-libunwind";;
|
||||
esac
|
||||
# test unit broken currently
|
||||
_disabled_tests="$_disabled_tests system-libunwind"
|
||||
# nativeaot is not supported on armv7
|
||||
case $CARCH in
|
||||
armv7) local _disabled_tests="$_disabled_tests nativeaot"
|
||||
esac
|
||||
# debugging-via-dotnet-dump hangs
|
||||
local _disabled_tests="$_disabled_tests debugging-via-dotnet-dump"
|
||||
|
||||
msg "Unpacking produced dotnet"
|
||||
export DOTNET_ROOT="$_checkdir/release"
|
||||
if [ ! -d "$DOTNET_ROOT" ]; then
|
||||
mkdir -p "$DOTNET_ROOT"
|
||||
tar --use-compress-program="pigz" \
|
||||
-xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \
|
||||
-C "$DOTNET_ROOT" \
|
||||
--no-same-owner
|
||||
fi
|
||||
export PATH="$DOTNET_ROOT:$PATH"
|
||||
# some files either should or should not have executable bits
|
||||
# (done again during packaging - this is for tests)
|
||||
_fix_executable "$DOTNET_ROOT"
|
||||
|
||||
msg "Building turkey test suite"
|
||||
if [ ! -d "$_logdir/check" ]; then
|
||||
mkdir -p "$_logdir"/check
|
||||
fi
|
||||
if [ ! -d "$_checkdir"/turkey ]; then
|
||||
cd "$_checkdir"/Turkey
|
||||
dotnet publish -bl:"$_logdir"/check/turkey.binlog -f netcoreapp3.1 -c Release -p:VersionPrefix=1 -p:VersionSuffix="$(git rev-parse --short HEAD)" -o "$_checkdir"/turkey
|
||||
fi
|
||||
|
||||
msg "Running test suite"
|
||||
cd "$_testdir"
|
||||
for i in $_disabled_tests; do
|
||||
if [ -d "$i" ]; then
|
||||
sed -i 's|"enabled": true|"enabled": false|' $i/test.json
|
||||
fi
|
||||
done
|
||||
dotnet "$_checkdir"/turkey/Turkey.dll -t $_tests_timeout -l "$_logdir"/check || local ERROR=true
|
||||
if [ $ERROR ]; then
|
||||
msg "Check error reported, please check logs"
|
||||
fi
|
||||
}
|
||||
|
||||
package() {
|
||||
# directory creation
|
||||
install -dm 755 \
|
||||
"$pkgdir"/$_libdir/dotnet/bootstrap/$pkgver \
|
||||
"$pkgdir"/usr/share/man/man1 \
|
||||
"$pkgdir"/$_libdir/dotnet/artifacts/$pkgver
|
||||
|
||||
# unpack sdk to bootstrap
|
||||
tar --use-compress-program="pigz" \
|
||||
-xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \
|
||||
-C "$pkgdir"/$_libdir/dotnet/bootstrap/$pkgver/ \
|
||||
--no-same-owner
|
||||
|
||||
# extract arch-specific artifacts to artifacts dir for use by future dotnet builds
|
||||
tar --use-compress-program="pigz" \
|
||||
-xf "$builddir"/artifacts/$_dotnet_arch/Release/Private.SourceBuilt.Artifacts.*.tar.gz \
|
||||
-C "$pkgdir"/$_libdir/dotnet/artifacts/$pkgver/ \
|
||||
--no-same-owner \
|
||||
--wildcards \
|
||||
'*alpine*'
|
||||
|
||||
# assemble docs
|
||||
find "$builddir" -iname 'dotnet*.1' -type f -exec cp '{}' "$pkgdir"/usr/share/man/man1/. \;
|
||||
|
||||
# some files either should or should not have executable bits
|
||||
_fix_executable "$pkgdir"
|
||||
|
||||
# Disable use of LTTng as tracing on lttng <=2,13,0 is broken
|
||||
# See https://github.com/dotnet/runtime/issues/57784.
|
||||
if [ -f "/usr/lib/liblttng-ust.so.1 " ]; then
|
||||
rm "$pkgdir"/$_libdir/dotnet/bootstrap/*/shared/Microsoft.NETCore.App/*/libcoreclrtraceptprovider.so
|
||||
fi
|
||||
}
|
||||
|
||||
sdk() {
|
||||
pkgdesc="The .NET $_pkgver_macro SDK"
|
||||
# libucontext isn't automatically detected on all platforms
|
||||
depends="
|
||||
aspnetcore$_pkgver_name-runtime
|
||||
aspnetcore$_pkgver_name-targeting-pack
|
||||
dotnet$_pkgver_name-apphost-pack
|
||||
dotnet$_pkgver_name-targeting-pack
|
||||
dotnet$_pkgver_name-templates
|
||||
netstandard21-targeting-pack
|
||||
libucontext
|
||||
"
|
||||
provides="
|
||||
dotnet-sdk-$_pkgver_macro=$pkgver-r$pkgrel
|
||||
dotnet$_pkgver_name-dev=$pkgver-r$pkgrel
|
||||
"
|
||||
|
||||
install -dm 755 "$subpkgdir"/$_libdir/dotnet
|
||||
|
||||
# sdk
|
||||
tar --use-compress-program="pigz" \
|
||||
-xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \
|
||||
-C "$subpkgdir"/$_libdir/dotnet/ \
|
||||
--no-same-owner \
|
||||
./sdk ./sdk-manifests
|
||||
|
||||
# some files either should or should not have executable bits
|
||||
_fix_executable "$subpkgdir"
|
||||
|
||||
# See https://github.com/dotnet/source-build/issues/2579
|
||||
find "$subpkgdir" -type f -name 'testhost.x86' -delete
|
||||
find "$subpkgdir" -type f -name 'vstest.console' -delete
|
||||
}
|
||||
|
||||
netstandard_targeting_pack() {
|
||||
pkgdesc="The .NET 2.1 Standard targeting pack"
|
||||
depends="dotnet-host"
|
||||
provides="netstandard-targeting-pack-2.1=$pkgver-r$pkgrel"
|
||||
|
||||
install -dm 755 "$subpkgdir"/$_libdir/dotnet/packs
|
||||
tar --use-compress-program="pigz" \
|
||||
-xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \
|
||||
-C "$subpkgdir"/$_libdir/dotnet/ \
|
||||
--no-same-owner \
|
||||
./packs/NETStandard.Library.Ref
|
||||
|
||||
# some files either should or should not have executable bits
|
||||
_fix_executable "$subpkgdir"
|
||||
}
|
||||
|
||||
templates() {
|
||||
pkgdesc="The .NET $_pkgver_macro templates"
|
||||
depends="dotnet-host"
|
||||
provides="dotnet-templates-$_pkgver_macro=$pkgver-r$pkgrel"
|
||||
|
||||
install -dm 755 "$subpkgdir"/$_libdir/dotnet
|
||||
tar --use-compress-program="pigz" \
|
||||
-xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \
|
||||
-C "$subpkgdir"/$_libdir/dotnet/ \
|
||||
--no-same-owner \
|
||||
./templates
|
||||
|
||||
# some files either should or should not have executable bits
|
||||
_fix_executable "$subpkgdir"
|
||||
}
|
||||
|
||||
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 arch-agnostic artifacts to artifacts dir for use by future dotnet builds
|
||||
tar --use-compress-program="pigz" \
|
||||
-xf "$builddir"/artifacts/$_dotnet_arch/Release/Private.SourceBuilt.Artifacts.*.tar.gz \
|
||||
-C "$subpkgdir"/$_libdir/dotnet/artifacts/$pkgver/ \
|
||||
--no-same-owner \
|
||||
--exclude '*Intermediate*' \
|
||||
--exclude '*alpine*'
|
||||
}
|
||||
|
||||
zshcomp() {
|
||||
depends=""
|
||||
pkgdesc="zsh completion for .NET"
|
||||
# netstandard21-targeting-pack will always be pulled by any dotnetx-sdk
|
||||
# thus pulling this with it for sdk
|
||||
install_if="netstandard21-targeting-pack zsh"
|
||||
depends="dotnet-host"
|
||||
|
||||
install -dm 755 "$subpkgdir"/usr/share/zsh/site-functions
|
||||
install -m 755 "$builddir"/src/sdk/scripts/register-completions.zsh "$subpkgdir"/usr/share/zsh/site-functions/_dotnet
|
||||
}
|
||||
|
||||
bashcomp() {
|
||||
depends=""
|
||||
pkgdesc="bash completion for .NET"
|
||||
# netstandard21-targeting-pack will always be pulled by any dotnetx-sdk
|
||||
# thus pulling this with it for sdk
|
||||
install_if="netstandard21-targeting-pack bash-completion"
|
||||
depends="dotnet-host"
|
||||
|
||||
install -dm 755 "$subpkgdir"/usr/share/bash-completion/completions
|
||||
install -m 755 "$builddir"/src/sdk/scripts/register-completions.bash "$subpkgdir"/usr/share/bash-completion/completions/_dotnet
|
||||
}
|
||||
|
||||
doc() {
|
||||
default_doc
|
||||
pkgdesc="Docs for .NET"
|
||||
|
||||
# licenses
|
||||
install -dm 755 "$subpkgdir"/usr/share/licenses/dotnet
|
||||
tar --use-compress-program="pigz" \
|
||||
-xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \
|
||||
-C "$subpkgdir"/usr/share/licenses/dotnet/ \
|
||||
--no-same-owner \
|
||||
./LICENSE.txt ./ThirdPartyNotices.txt
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
06cb81a5667153a7d6ae190d169dcafea88954d1d42f9f1ae0fffe7cb4787599d7cad5428f66a6ce10af24898bd4ffbe1b9e95f1d3b698641437298055ebd10f dotnet-tarball-v8.0.0-preview.7.23375.6.tar.gz
|
||||
5598ae0b9044dd2d2b5eba10ce420cd14266bd25412b37e9766bbaf1b1ce79438a5c7db559431aa59c0b49f14187ca3f78a57065b7802df304910b00b6694bfa dotnet-release-v8.0.0-preview.7.23375.6.json
|
||||
e9f3df13d093fac214778c1137857e065f58d4e0d2a48d540d8ed7bb41e2fd73b2b3f62a0aa5b0e80fa80a5b58ba77ff19b9d10a492802f8539e3a6ed79d299d dotnet-testsuite-e1cc0f181ffd4d755756d30d985513897d592ba4.tar.gz
|
||||
0028d5d97b814b122d73137b4e0d64ca5d788aa0ae5fde500de722e23522827f2538f06e75acb17cc39b8917961ee78d1f0bbc84b2b624ae0e9bf88adca2ba6f dotnet-bunny-v12.tar.gz
|
||||
eed7a7481a967f6938de956a6df485efa6dd61bf36ae4a768493cb1f7da0296dc91e0f2f89f7c302083ba9cf0c778e28228ec1b52e902077a00072d7d9957ef3 build_enable-timestamps.patch
|
||||
ab362bdbbea8d8116b6bf7bf58e330ce6d7d171b42613ac03514f76afa2574b75d6566148d1b72047fbfe61b40ac67b3f2d8af87a7074c790bf882a5b7e73960 installer_hard-dereference-tar-gz.patch
|
||||
097db705c787501782a1b203e8c453453075dfcadc4f5282849c6ffdda4d7832f75c56089bced4542cc83704fe33842cc725084dac2ba261cacdaf54ae468b3c roslyn-analyzer_disable-apphost.patch
|
||||
d732df247c721c9f677baabdd7f36dbf4b564814ff64164361065bb1c196b767494a1d39f634eadf01a23032c7b3e64102614b7213065c81096bbf3f8022e6a0 runtime_82269-mono-thread-coop-undefine-fortify-source.patch
|
||||
c1e8a51bca47f13e60cb28fa3c58c4bdc0fd8fa19177855b6cc9a767016fc239064aced57530e227c772e302671fc91e86c718a39aecb05eb7f601c8d931de81 runtime_90251-rename-mono-cmake-host-var.patch
|
||||
39e1b848d1ae81e4b81758522de7d3e36b11d2ab626565efb8e4cceae8da29018277709f0af8fcfa75be8da79f8d6432eb6aac49a5e82510c3aca34632df4d8e runtime_enable-system-libunwind.diff
|
||||
887112eb2b103eadd6887529ebae7f9a75df2c2cb168e84fd40cc09f9bcd20917d428bbba06968b07b0a463890da82b1b2b1d033a3dd016e6494067464ae6f74 runtime_more-clang-16-suppression.patch
|
||||
0c25319125ef5b0ad490b37a643c0c5257c796d5ed24f9ac404f698710b07de790bcbb0b6336d4a50025b94c3bff99b214951bd8f0a79a8d6f543ebaa300740f runtime_remove-usage-of-off64-t.patch
|
||||
5c74abbd7ea71ba6164f71b866c9da564db9ccd95f1a9a8b82f5b0b599fab6d59d64ba1157ec13d7ac36d23145f3d9de2189ed6c40f56e46555ab378c161948b vstest_intent-net8.0.patch
|
||||
"
|
|
@ -1,145 +0,0 @@
|
|||
# dotnet8-build
|
||||
|
||||
This is the .NET 8.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
|
||||
* `dotnet8-build` (aimed for internal use as bootstrap)
|
||||
* `dotnet8-build-artifacts` (aimed for internal use as bootstrap)
|
||||
* `dotnet8-sdk`
|
||||
* `dotnet8-templates` (required by sdk)
|
||||
* `dotnet-zsh-completion`
|
||||
* `dotnet-bash-completion`
|
||||
* `dotnet-doc`
|
||||
* `netstandard21-targeting-pack`
|
||||
|
||||
## How to build dotnet8 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, dotnet8 is built using three different aports.
|
||||
|
||||
* `community/dotnet8-stage0`
|
||||
Builds minimum components for full build of dotnet8, and packages these in an initial
|
||||
`dotnet8-stage0-bootstrap` package that `dotnet8-build` pulls.
|
||||
* `community/dotnet8-build`
|
||||
Builds full and packages dotnet8 fully using either stage0 or previoulsy built
|
||||
dotnet8 build.
|
||||
* `community/dotnet8-runtime`
|
||||
As abuild does not allow different versions for subpackages, a different aport
|
||||
is required to package runtime bits from dotnet8-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 `dotnet8-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 `dotnet8` as opposed to `dotnet-8.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/dotnet8-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 dotnet8/<name>`
|
||||
- `git add` any new patches
|
||||
- `git remove` any now-unnecessary patches
|
||||
- `git commit -m 'community/dotnet8-build: descriptive description'`
|
||||
- `git push`
|
||||
|
||||
7. Create a merge request with your changes, tagging @ayakael for review.
|
||||
|
||||
8. Once the tests in the merge-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/dotnet8-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 dotnet8/<name>`
|
||||
- `git add` any new patches
|
||||
- `git remove` any now-unnecessary patches
|
||||
- `git commit -m 'community/dotnet8-build: upgrade to <new-version>`
|
||||
- `git push`
|
||||
|
||||
8. Create a merge request with your changes, tagging @ayakael for review.
|
||||
|
||||
9. Once the tests in the merge-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/
|
|
@ -3,38 +3,128 @@
|
|||
|
||||
pkgname=dotnet8-runtime
|
||||
pkgver=8.0.0_pre7
|
||||
_bldver=8.0.100_pre7-r1
|
||||
pkgrel=1
|
||||
pkgrel=2
|
||||
_gittag=v8.0.0-preview.7.23375.6
|
||||
_giturl="https://github.com/dotnet/dotnet"
|
||||
_testtag=e1cc0f181ffd4d755756d30d985513897d592ba4
|
||||
_bunnytag=v12
|
||||
_stage0ver=8.0.0_pre7-r2
|
||||
_patches="
|
||||
aspnetcore_portable-build-workaround.patch
|
||||
build_enable-timestamps.patch
|
||||
installer_hard-dereference-tar-gz.patch
|
||||
roslyn-analyzer_disable-apphost.patch
|
||||
runtime_82269-mono-thread-coop-undefine-fortify-source.patch
|
||||
runtime_90251-rename-mono-cmake-host-var.patch
|
||||
runtime_enable-system-libunwind.diff
|
||||
runtime_more-clang-16-suppression.patch
|
||||
runtime_remove-usage-of-off64-t.patch
|
||||
vstest_intent-net8.0.patch
|
||||
"
|
||||
|
||||
# Following for dotnet build version 6.0 and up
|
||||
_pkgver_macro=${pkgver%.*}
|
||||
_pkgver_prior=${pkgver%.*.*}
|
||||
_pkgver_name=${_pkgver_macro//[.0]}
|
||||
_bldver_ver=${_bldver%%-*}
|
||||
_pkgver_sdk=${pkgver/0./0.10}
|
||||
pkgdesc="The .NET $_pkgver_macro Core runtime"
|
||||
# x86: blocked by https://github.com/dotnet/runtime/issues/77667
|
||||
# armhf: blocked by https://github.com/dotnet/runtime/issues/77663
|
||||
arch="all !x86 !armhf"
|
||||
url=https://dotnet.microsoft.com
|
||||
license="MIT"
|
||||
provides="dotnet$_pkgver_name=$pkgver-r$pkgrel"
|
||||
depends="
|
||||
dotnet$_pkgver_name-hostfxr
|
||||
icu-data-full
|
||||
icu-libs
|
||||
"
|
||||
makedepends="dotnet$_pkgver_name-build=$_bldver"
|
||||
checkdepends="
|
||||
babeltrace
|
||||
binutils
|
||||
coreutils
|
||||
file
|
||||
gawk
|
||||
jq
|
||||
lttng-tools
|
||||
npm
|
||||
procps
|
||||
sed
|
||||
strace
|
||||
util-linux-misc
|
||||
which
|
||||
"
|
||||
# For now package is not tested to build on itself
|
||||
# To test: replace 'dotnet-stage0-bootstrap' with 'dotnet-bootstrap'
|
||||
# and 'dotnet-stage0-artifacts' with 'dotnet-bootstrap-artifacts'
|
||||
makedepends="
|
||||
bash
|
||||
clang
|
||||
cmake
|
||||
dotnet$_pkgver_name-stage0-bootstrap=$_stage0ver
|
||||
dotnet$_pkgver_name-stage0-artifacts=$_stage0ver
|
||||
dotnet$_pkgver_name-stage0=$_stage0ver
|
||||
findutils
|
||||
git
|
||||
grep
|
||||
icu-data-full
|
||||
icu-dev
|
||||
inetutils-syslogd
|
||||
krb5-dev
|
||||
libgit2-dev
|
||||
libintl
|
||||
libucontext-dev
|
||||
libunwind-dev
|
||||
libxml2-dev
|
||||
libxml2-utils
|
||||
linux-headers
|
||||
lldb-dev
|
||||
llvm-dev
|
||||
lttng-ust-dev
|
||||
nodejs
|
||||
numactl-dev
|
||||
openssl-dev
|
||||
pigz
|
||||
rsync
|
||||
samurai
|
||||
tar
|
||||
xz
|
||||
zlib-dev
|
||||
"
|
||||
case $CARCH in
|
||||
s390x|x86) ;;
|
||||
*) makedepends="$makedepends lld-dev";;
|
||||
esac
|
||||
|
||||
subpackages="
|
||||
aspnetcore$_pkgver_name-runtime:aspnetcore_runtime:noarch
|
||||
aspnetcore$_pkgver_name-targeting-pack:aspnetcore_targeting_pack:noarch
|
||||
dotnet$_pkgver_name-runtime-artifacts::noarch
|
||||
dotnet$_pkgver_name-runtime-bootstrap
|
||||
dotnet$_pkgver_name-apphost-pack:apphost_pack
|
||||
dotnet$_pkgver_name-hostfxr
|
||||
dotnet$_pkgver_name-targeting-pack:targeting_pack:noarch
|
||||
dotnet-host:host
|
||||
"
|
||||
provides="dotnet$_pkgver_name=$pkgver-r$pkgrel"
|
||||
options="!check" # No test suite
|
||||
source="dotnet.sh.in"
|
||||
builddir="$srcdir"
|
||||
source="
|
||||
dotnet-tarball-$_gittag.tar.gz::https://github.com/dotnet/dotnet/archive/refs/tags/$_gittag.tar.gz
|
||||
dotnet-release-$_gittag.json::https://github.com/dotnet/dotnet/releases/download/$_gittag/release.json
|
||||
dotnet-testsuite-$_testtag.tar.gz::https://github.com/redhat-developer/dotnet-regular-tests/archive/$_testtag.tar.gz
|
||||
dotnet-bunny-$_bunnytag.tar.gz::https://github.com/redhat-developer/dotnet-bunny/archive/$_bunnytag.tar.gz
|
||||
dotnet.sh.in
|
||||
$_patches
|
||||
"
|
||||
builddir="$srcdir"/dotnet-${_gittag/v}
|
||||
_checkdir="$srcdir"/dotnet-bunny-${_bunnytag/v}
|
||||
_testdir="$srcdir"/dotnet-regular-tests-$_testtag
|
||||
_cli_root="$srcdir"/bootstrap
|
||||
_libdir="/usr/lib"
|
||||
# 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
|
||||
|
||||
case $CARCH in
|
||||
x86_64) _dotnet_arch="x64";;
|
||||
|
@ -44,14 +134,263 @@ case $CARCH in
|
|||
*) _dotnet_arch="$CARCH";;
|
||||
esac
|
||||
|
||||
# Build doesn't set all the right executable bits for the right file types
|
||||
_fix_executable() {
|
||||
# add executable bit
|
||||
find "$1" -type f \( \
|
||||
-name 'apphost' -o \
|
||||
-name 'singlefilehost' -o \
|
||||
-name 'lib*so' \
|
||||
\) \
|
||||
-exec chmod +x '{}' \;
|
||||
|
||||
# remove executable bit
|
||||
find "$1" -type f \( \
|
||||
-name '*.a' -o \
|
||||
-name '*.dll' -o \
|
||||
-name '*.h' -o \
|
||||
-name '*.json' -o \
|
||||
-name '*.pdb' -o \
|
||||
-name '*.props' -o \
|
||||
-name '*.pubxml' -o \
|
||||
-name '*.targets' -o \
|
||||
-name '*.txt' -o \
|
||||
-name '*.xml' \
|
||||
\) \
|
||||
-exec chmod -x '{}' \;
|
||||
}
|
||||
|
||||
prepare() {
|
||||
default_prepare
|
||||
|
||||
# Using system libunwind is broken on aarch64|armv7, and unused on mono-based builds
|
||||
# see https://github.com/dotnet/source-build/issues/2408,
|
||||
case $CARCH in
|
||||
aarch64|armv7) msg "Using bundled libunwind";;
|
||||
armhf|s390x|ppc64le) msg "No libunwind used";;
|
||||
*)
|
||||
msg "Using system libunwind"
|
||||
patch -p1 -i "$srcdir"/runtime_enable-system-libunwind.diff
|
||||
;;
|
||||
esac
|
||||
|
||||
# ensure that dotnet does not download artifacts provided by dotnet-artifacts
|
||||
rm -rf "$builddir"/packages/archive
|
||||
|
||||
# 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
|
||||
|
||||
# dotnet requires its bootstrap to be in a writable dir
|
||||
msg "Setting up bootstrap"
|
||||
local _bootstrapdir=$(find $_libdir/dotnet/bootstrap/$_pkgver_macro* -maxdepth 0 | sort -r | head -n 1)
|
||||
if [ ! -d "$_cli_root" ]; then
|
||||
cp -r "$_bootstrapdir" "$_cli_root"
|
||||
fi
|
||||
}
|
||||
|
||||
build() {
|
||||
sed "s|%LIBDIR%|$_libdir/dotnet|" "$srcdir"/dotnet.sh.in > "$srcdir"/dotnet.sh
|
||||
msg "Building $pkgname-$pkgver"
|
||||
|
||||
ulimit -n 4096
|
||||
|
||||
# Disable use of LTTng as tracing on lttng <=2,13,0 is broken
|
||||
# See https://github.com/dotnet/runtime/issues/57784.
|
||||
if [ -f "/usr/lib/liblttng-ust.so.1 " ]; then
|
||||
export DOTNET_LTTng=0
|
||||
fi
|
||||
|
||||
case "$CARCH" in
|
||||
x86*) ;;
|
||||
*)
|
||||
# clang doesn't implement this outside of x86, and it causes a later configure to fail
|
||||
export CFLAGS="${CFLAGS/-fstack-clash-protection}"
|
||||
export CXXFLAGS="${CXXFLAGS/-fstack-clash-protection}"
|
||||
;;
|
||||
esac
|
||||
|
||||
# looks for most recent recent version of _artifactsdir
|
||||
local _artifactsdir=$(find $_libdir/dotnet/artifacts/$_pkgver_macro* -maxdepth 0 | sort -r | head -n 1)
|
||||
|
||||
# ci args, else the output is forwarded to log files which isn't ideal in a
|
||||
# pipeline environment, and build by defaults uses lots of space
|
||||
local args="
|
||||
/v:minimal
|
||||
/p:LogVerbosity=minimal
|
||||
/p:MinimalConsoleLogOutput=true
|
||||
/p:CleanWhileBuilding=true
|
||||
"
|
||||
|
||||
# part of https://github.com/dotnet/installer/pull/14792 that sets this flag
|
||||
# was not integrated in 7.0.1xx yet
|
||||
case $CARCH in
|
||||
riscv64|s390x|ppc64le) local args="$args /p:SourceBuildUseMonoRuntime=true";;
|
||||
esac
|
||||
|
||||
# Source-Build now builds using portable RID
|
||||
local args="$args /p:PortableBuild=true /p:PortableRid=linux-musl-$_dotnet_arch /p:_portableRidOverridden=true"
|
||||
|
||||
./build.sh \
|
||||
--with-sdk "$_cli_root" \
|
||||
--with-packages "$_artifactsdir" \
|
||||
--release-manifest "$srcdir"/dotnet-release-$_gittag.json \
|
||||
-- $args
|
||||
}
|
||||
|
||||
check() {
|
||||
ulimit -n 4096
|
||||
# Tests timeout (in seconds)
|
||||
local _tests_timeout=1000
|
||||
# Test suite disable flags
|
||||
# following tests can only work after packaging step
|
||||
local _disabled_tests="man-pages distribution-package bash-completion install-location release-version-sane"
|
||||
# test broken: permission issue on lxc / pipelines
|
||||
local _disabled_tests="$_disabled_tests createdump-aspnet workload"
|
||||
# liblttng-ust_sys-sdt.h: no 'NT_STAPSDT' on Alpine's lttng-ust package
|
||||
# lttng: known issue, see https://github.com/dotnet/runtime/issues/57784
|
||||
local _disabled_tests="$_disabled_tests liblttng-ust_sys-sdt.h lttng"
|
||||
# {bundled,system}-libunwind: use system version on all but aarch64/armv7, as broken
|
||||
# see https://github.com/redhat-developer/dotnet-regular-tests/issues/113
|
||||
# disable on mono-flavored runtime as mono does not use libunwind
|
||||
case $CARCH in
|
||||
armv7|aarch64) local _disabled_tests="$_disabled_tests system-libunwind";;
|
||||
s390x|ppc64le|armhf) local _disabled_tests="$_disabled_tests bundled-libunwind system-libunwind";;
|
||||
*) local _disabled_tests="$_disabled_tests bundled-libunwind";;
|
||||
esac
|
||||
# test unit broken currently
|
||||
_disabled_tests="$_disabled_tests system-libunwind"
|
||||
# nativeaot is not supported on armv7
|
||||
case $CARCH in
|
||||
armv7) local _disabled_tests="$_disabled_tests nativeaot"
|
||||
esac
|
||||
# debugging-via-dotnet-dump hangs
|
||||
local _disabled_tests="$_disabled_tests debugging-via-dotnet-dump"
|
||||
|
||||
msg "Unpacking produced dotnet"
|
||||
export DOTNET_ROOT="$_checkdir/release"
|
||||
if [ ! -d "$DOTNET_ROOT" ]; then
|
||||
mkdir -p "$DOTNET_ROOT"
|
||||
tar --use-compress-program="pigz" \
|
||||
-xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \
|
||||
-C "$DOTNET_ROOT" \
|
||||
--no-same-owner
|
||||
fi
|
||||
export PATH="$DOTNET_ROOT:$PATH"
|
||||
# some files either should or should not have executable bits
|
||||
# (done again during packaging - this is for tests)
|
||||
_fix_executable "$DOTNET_ROOT"
|
||||
|
||||
msg "Building turkey test suite"
|
||||
if [ ! -d "$_logdir/check" ]; then
|
||||
mkdir -p "$_logdir"/check
|
||||
fi
|
||||
if [ ! -d "$_checkdir"/turkey ]; then
|
||||
cd "$_checkdir"/Turkey
|
||||
dotnet publish -bl:"$_logdir"/check/turkey.binlog -f netcoreapp3.1 -c Release -p:VersionPrefix=1 -p:VersionSuffix="$(git rev-parse --short HEAD)" -o "$_checkdir"/turkey
|
||||
fi
|
||||
|
||||
msg "Running test suite"
|
||||
cd "$_testdir"
|
||||
for i in $_disabled_tests; do
|
||||
if [ -d "$i" ]; then
|
||||
sed -i 's|"enabled": true|"enabled": false|' $i/test.json
|
||||
fi
|
||||
done
|
||||
dotnet "$_checkdir"/turkey/Turkey.dll -t $_tests_timeout -l "$_logdir"/check || local ERROR=true
|
||||
if [ $ERROR ]; then
|
||||
msg "Check error reported, please check logs"
|
||||
fi
|
||||
}
|
||||
|
||||
package() {
|
||||
install -dm 755 "$pkgdir"/$_libdir/dotnet/shared
|
||||
|
||||
cp -r $_libdir/dotnet/bootstrap/$_bldver_ver/shared/Microsoft.NETCore.App "$pkgdir"/$_libdir/dotnet/shared/.
|
||||
tar --use-compress-program="pigz" \
|
||||
-xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \
|
||||
-C "$pkgdir"/$_libdir/dotnet/ \
|
||||
--no-same-owner \
|
||||
./shared/Microsoft.NETCore.App
|
||||
|
||||
# some files either should or should not have executable bits
|
||||
_fix_executable "$pkgdir"
|
||||
|
||||
# Disable use of LTTng as tracing on lttng <=2,13,0 is broken
|
||||
# See https://github.com/dotnet/runtime/issues/57784.
|
||||
if [ -f "/usr/lib/liblttng-ust.so.1 " ]; then
|
||||
rm "$pkgdir"/$_libdir/dotnet/shared/Microsoft.NETCore.App/*/libcoreclrtraceptprovider.so
|
||||
fi
|
||||
}
|
||||
|
||||
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_sdk \
|
||||
"$subpkgdir"/usr/share/licenses
|
||||
|
||||
# extract arch-agnostic artifacts to artifacts dir for use by future dotnet builds
|
||||
tar --use-compress-program="pigz" \
|
||||
-xf "$builddir"/artifacts/$_dotnet_arch/Release/Private.SourceBuilt.Artifacts.*.tar.gz \
|
||||
-C "$subpkgdir"/$_libdir/dotnet/artifacts/$_pkgver_sdk/ \
|
||||
--no-same-owner \
|
||||
--exclude '*Intermediate*' \
|
||||
--exclude '*linux-musl*'
|
||||
}
|
||||
|
||||
bootstrap() {
|
||||
pkgdesc="The .NET $_pkgver_macro Core bootstrap"
|
||||
depends=""
|
||||
|
||||
# hack for dotnetx-runtime to be able to pull itself for bootstrapping
|
||||
provides="dotnet$_pkgver_name-bootstrap"
|
||||
provider_priority=$_pkgver_prior
|
||||
|
||||
# directory creation
|
||||
install -dm 755 \
|
||||
"$subpkgdir"/$_libdir/dotnet/bootstrap/$_pkgver_sdk/docs \
|
||||
"$subpkgdir"/$_libdir/dotnet/artifacts/$_pkgver_sdk
|
||||
|
||||
# unpack sdk to bootstrap
|
||||
tar --use-compress-program="pigz" \
|
||||
-xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \
|
||||
-C "$subpkgdir"/$_libdir/dotnet/bootstrap/$_pkgver_sdk/ \
|
||||
--no-same-owner
|
||||
|
||||
# extract arch-specific artifacts to artifacts dir for use by future dotnet builds
|
||||
tar --use-compress-program="pigz" \
|
||||
-xf "$builddir"/artifacts/$_dotnet_arch/Release/Private.SourceBuilt.Artifacts.*.tar.gz \
|
||||
-C "$subpkgdir"/$_libdir/dotnet/artifacts/$_pkgver_sdk/ \
|
||||
--no-same-owner \
|
||||
--wildcards \
|
||||
'*linux-musl*'
|
||||
|
||||
# assemble docs
|
||||
find "$builddir" -iname 'dotnet*.1' -type f -exec cp '{}' "$subpkgdir"/$_libdir/dotnet/bootstrap/$_pkgver_sdk/docs/. \;
|
||||
|
||||
# completions
|
||||
install -m 755 "$builddir"/src/sdk/scripts/register-completions.bash "$subpkgdir"/$_libdir/dotnet/bootstrap/$_pkgver_sdk/.
|
||||
install -m 755 "$builddir"/src/sdk/scripts/register-completions.zsh "$subpkgdir"/$_libdir/dotnet/bootstrap/$_pkgver_sdk/.
|
||||
|
||||
# some files either should or should not have executable bits
|
||||
_fix_executable "$subpkgdir"
|
||||
|
||||
# Disable use of LTTng as tracing on lttng <=2,13,0 is broken
|
||||
# See https://github.com/dotnet/runtime/issues/57784.
|
||||
if [ -f "/usr/lib/liblttng-ust.so.1 " ]; then
|
||||
rm "$subpkgdir"/$_libdir/dotnet/bootstrap/*/shared/Microsoft.NETCore.App/*/libcoreclrtraceptprovider.so
|
||||
fi
|
||||
}
|
||||
|
||||
host() {
|
||||
|
@ -64,11 +403,16 @@ host() {
|
|||
"$subpkgdir"/usr/bin \
|
||||
"$subpkgdir"/$_libdir/dotnet
|
||||
|
||||
cp -r $_libdir/dotnet/bootstrap/$_bldver_ver/dotnet "$subpkgdir"/$_libdir/dotnet/.
|
||||
tar --use-compress-program="pigz" \
|
||||
-xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \
|
||||
-C "$subpkgdir"/$_libdir/dotnet/ \
|
||||
--no-same-owner \
|
||||
./dotnet
|
||||
|
||||
ln -s $_libdir/dotnet/dotnet "$subpkgdir"/usr/bin/dotnet
|
||||
echo "$_libdir/dotnet" > "$subpkgdir"/etc/dotnet/install_location
|
||||
echo "$_libdir/dotnet" > "$subpkgdir"/etc/dotnet/install_location_$_dotnet_arch
|
||||
install -Dm 644 "$srcdir"/dotnet.sh -t "$subpkgdir"/etc/profile.d/
|
||||
sed "s|%LIBDIR%|$_libdir/dotnet|" "$srcdir"/dotnet.sh.in > "$subpkgdir"/etc/profile.d/dotnet.sh
|
||||
}
|
||||
|
||||
hostfxr() {
|
||||
|
@ -78,7 +422,14 @@ hostfxr() {
|
|||
|
||||
install -dm 755 "$subpkgdir"/$_libdir/dotnet
|
||||
|
||||
cp -r $_libdir/dotnet/bootstrap/$_bldver_ver/host "$subpkgdir"/$_libdir/dotnet/.
|
||||
tar --use-compress-program="pigz" \
|
||||
-xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \
|
||||
-C "$subpkgdir"/$_libdir/dotnet/ \
|
||||
--no-same-owner \
|
||||
./host
|
||||
|
||||
# some files either should or should not have executable bits
|
||||
_fix_executable "$subpkgdir"
|
||||
}
|
||||
|
||||
aspnetcore_runtime() {
|
||||
|
@ -86,38 +437,81 @@ aspnetcore_runtime() {
|
|||
depends="dotnet$_pkgver_name-runtime"
|
||||
provides="aspnetcore-runtime-$_pkgver_macro=$pkgver-r$pkgrel"
|
||||
|
||||
install -dm 755 "$subpkgdir"/$_libdir/dotnet/shared
|
||||
install -dm 755 "$subpkgdir"/$_libdir/dotnet
|
||||
|
||||
cp -r $_libdir/dotnet/bootstrap/$_bldver_ver/shared/Microsoft.AspNetCore.App "$subpkgdir"/$_libdir/dotnet/shared/.
|
||||
tar --use-compress-program="pigz" \
|
||||
-xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \
|
||||
-C "$subpkgdir"/$_libdir/dotnet/ \
|
||||
--no-same-owner \
|
||||
./shared/Microsoft.AspNetCore.App
|
||||
|
||||
# some files either should or should not have executable bits
|
||||
_fix_executable "$subpkgdir"
|
||||
}
|
||||
|
||||
apphost_pack() {
|
||||
pkgdesc="The .NET $_pkgver_macro Core apphost pack"
|
||||
provides="dotnet-apphost-pack-$_pkgver_macro=$pkgver-r$pkgrel"
|
||||
|
||||
install -dm 755 "$subpkgdir"/$_libdir/dotnet/packs
|
||||
install -dm 755 "$subpkgdir"/$_libdir/dotnet
|
||||
|
||||
cp -r $_libdir/dotnet/bootstrap/$_bldver_ver/packs/Microsoft.NETCore.App.Host.* "$subpkgdir"/$_libdir/dotnet/packs/.
|
||||
tar --use-compress-program="pigz" \
|
||||
-xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \
|
||||
-C "$subpkgdir"/$_libdir/dotnet/ \
|
||||
--no-same-owner \
|
||||
--wildcards \
|
||||
'./packs/Microsoft.NETCore.App.Host.*'
|
||||
|
||||
# some files either should or should not have executable bits
|
||||
_fix_executable "$subpkgdir"
|
||||
}
|
||||
|
||||
targeting_pack() {
|
||||
pkgdesc="The .NET $_pkgver_macro Core targeting pack"
|
||||
provides="dotnet-targeting-pack-$_pkgver_macro=$pkgver-r$pkgrel"
|
||||
|
||||
install -dm 755 "$subpkgdir"/$_libdir/dotnet/packs
|
||||
install -dm 755 "$subpkgdir"/$_libdir/dotnet
|
||||
|
||||
cp -r $_libdir/dotnet/bootstrap/$_bldver_ver/packs/Microsoft.NETCore.App.Ref "$subpkgdir"/$_libdir/dotnet/packs/.
|
||||
tar --use-compress-program="pigz" \
|
||||
-xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \
|
||||
-C "$subpkgdir"/$_libdir/dotnet/ \
|
||||
--no-same-owner \
|
||||
./packs/Microsoft.NETCore.App.Ref
|
||||
|
||||
# some files either should or should not have executable bits
|
||||
_fix_executable "$subpkgdir"
|
||||
}
|
||||
|
||||
aspnetcore_targeting_pack() {
|
||||
pkgdesc="The ASP.NET $_pkgver_macro Core targeting pack"
|
||||
provides="aspnetcore-targeting-pack-$_pkgver_macro=$pkgver-r$pkgrel"
|
||||
|
||||
install -dm 755 "$subpkgdir"/$_libdir/dotnet/packs
|
||||
install -dm 755 "$subpkgdir"/$_libdir/dotnet
|
||||
|
||||
cp -r $_libdir/dotnet/bootstrap/$_bldver_ver/packs/Microsoft.AspNetCore.App.Ref "$subpkgdir"/$_libdir/dotnet/packs/.
|
||||
tar --use-compress-program="pigz" \
|
||||
-xf "$builddir"/artifacts/$_dotnet_arch/Release/dotnet-sdk-$_pkgver_macro*.tar.gz \
|
||||
-C "$subpkgdir"/$_libdir/dotnet/ \
|
||||
--no-same-owner \
|
||||
./packs/Microsoft.AspNetCore.App.Ref
|
||||
|
||||
# some files either should or should not have executable bits
|
||||
_fix_executable "$subpkgdir"
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
06cb81a5667153a7d6ae190d169dcafea88954d1d42f9f1ae0fffe7cb4787599d7cad5428f66a6ce10af24898bd4ffbe1b9e95f1d3b698641437298055ebd10f dotnet-tarball-v8.0.0-preview.7.23375.6.tar.gz
|
||||
5598ae0b9044dd2d2b5eba10ce420cd14266bd25412b37e9766bbaf1b1ce79438a5c7db559431aa59c0b49f14187ca3f78a57065b7802df304910b00b6694bfa dotnet-release-v8.0.0-preview.7.23375.6.json
|
||||
e9f3df13d093fac214778c1137857e065f58d4e0d2a48d540d8ed7bb41e2fd73b2b3f62a0aa5b0e80fa80a5b58ba77ff19b9d10a492802f8539e3a6ed79d299d dotnet-testsuite-e1cc0f181ffd4d755756d30d985513897d592ba4.tar.gz
|
||||
0028d5d97b814b122d73137b4e0d64ca5d788aa0ae5fde500de722e23522827f2538f06e75acb17cc39b8917961ee78d1f0bbc84b2b624ae0e9bf88adca2ba6f dotnet-bunny-v12.tar.gz
|
||||
c3f31956976b77198e72a3fef3427338b6b2961f8c121416040c1105de0ce8073e46f4c2e9ef22a001aee69cbe39621c2ddac988522693110071dfae42f2e2b7 dotnet.sh.in
|
||||
ad7373a112acc07a6a7bbc522d417b26d90b3e3ae9c1e66a6cc70af16af7e7111d9764e7758062d0a5e67f026cc44f2b111051c3d484bd56917f2144db88588b aspnetcore_portable-build-workaround.patch
|
||||
eed7a7481a967f6938de956a6df485efa6dd61bf36ae4a768493cb1f7da0296dc91e0f2f89f7c302083ba9cf0c778e28228ec1b52e902077a00072d7d9957ef3 build_enable-timestamps.patch
|
||||
ab362bdbbea8d8116b6bf7bf58e330ce6d7d171b42613ac03514f76afa2574b75d6566148d1b72047fbfe61b40ac67b3f2d8af87a7074c790bf882a5b7e73960 installer_hard-dereference-tar-gz.patch
|
||||
097db705c787501782a1b203e8c453453075dfcadc4f5282849c6ffdda4d7832f75c56089bced4542cc83704fe33842cc725084dac2ba261cacdaf54ae468b3c roslyn-analyzer_disable-apphost.patch
|
||||
d732df247c721c9f677baabdd7f36dbf4b564814ff64164361065bb1c196b767494a1d39f634eadf01a23032c7b3e64102614b7213065c81096bbf3f8022e6a0 runtime_82269-mono-thread-coop-undefine-fortify-source.patch
|
||||
c1e8a51bca47f13e60cb28fa3c58c4bdc0fd8fa19177855b6cc9a767016fc239064aced57530e227c772e302671fc91e86c718a39aecb05eb7f601c8d931de81 runtime_90251-rename-mono-cmake-host-var.patch
|
||||
39e1b848d1ae81e4b81758522de7d3e36b11d2ab626565efb8e4cceae8da29018277709f0af8fcfa75be8da79f8d6432eb6aac49a5e82510c3aca34632df4d8e runtime_enable-system-libunwind.diff
|
||||
887112eb2b103eadd6887529ebae7f9a75df2c2cb168e84fd40cc09f9bcd20917d428bbba06968b07b0a463890da82b1b2b1d033a3dd016e6494067464ae6f74 runtime_more-clang-16-suppression.patch
|
||||
0c25319125ef5b0ad490b37a643c0c5257c796d5ed24f9ac404f698710b07de790bcbb0b6336d4a50025b94c3bff99b214951bd8f0a79a8d6f543ebaa300740f runtime_remove-usage-of-off64-t.patch
|
||||
5c74abbd7ea71ba6164f71b866c9da564db9ccd95f1a9a8b82f5b0b599fab6d59d64ba1157ec13d7ac36d23145f3d9de2189ed6c40f56e46555ab378c161948b vstest_intent-net8.0.patch
|
||||
"
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
From 451aa3e9544b0214d0e8e844c27af3847f5bf391 Mon Sep 17 00:00:00 2001
|
||||
Patch-Source: https://github.com/dotnet/installer/pull/13410
|
||||
From: Antoine Martin <dev@ayakael.net>
|
||||
Date: Fri, 18 Feb 2022 05:14:39 +0000
|
||||
Subject: [PATCH 1/1] musl build fix
|
||||
|
||||
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
|
||||
|
||||
This is now only necessary for portable
|
||||
builds, as https://github.com/dotnet/installer/pull/14549 has fixed
|
||||
issues relating to musl build on full source-build
|
||||
|
||||
---
|
||||
.../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.orig b/src/aspnetcore/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj
|
||||
index 77dce00..b31b36d 100644
|
||||
--- a/src/aspnetcore/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj.orig
|
||||
+++ b/src/aspnetcore/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.csproj
|
||||
@@ -103,8 +103,7 @@ 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.
|
||||
-->
|
||||
<BuildOsName>$(TargetOsName)</BuildOsName>
|
||||
- <BuildOsName Condition="'$(TargetOsName)' == 'linux-musl' and '$(TargetArchitecture)' != 'x64'">linux</BuildOsName>
|
||||
<BuildOsName Condition=" '$(PortableBuild)' == 'false' ">$(TargetRuntimeIdentifier.Substring(0,$(TargetRuntimeIdentifier.IndexOf('-'))))</BuildOsName>
|
||||
<Crossgen2BuildArchitecture Condition=" '$(BuildOsName)' == 'win' ">x64</Crossgen2BuildArchitecture>
|
||||
<Crossgen2BuildArchitecture Condition=" '$(Crossgen2BuildArchitecture)' == '' ">$(BuildArchitecture)</Crossgen2BuildArchitecture>
|
||||
<Crossgen2PackageRootVariableName>PkgMicrosoft_NETCore_App_Crossgen2_$(BuildOsName.Replace('.', '_'))-$(Crossgen2BuildArchitecture)</Crossgen2PackageRootVariableName>
|
||||
diff --git a/repo-projects/aspnetcore.proj.orig b/repo-projects/aspnetcore.proj
|
||||
index 289b506..fadcc0d 100644
|
||||
--- a/repo-projects/aspnetcore.proj.orig
|
||||
+++ b/repo-projects/aspnetcore.proj
|
||||
@@ -13,6 +13,7 @@
|
||||
<BuildCommandArgs>$(StandardSourceBuildArgs.Replace('--publish', ''))</BuildCommandArgs>
|
||||
<!-- The arch flag (defaults to x64) overrides any value of TargetArchitecture that we might set -->
|
||||
<BuildCommandArgs>$(BuildCommandArgs) --arch $(Platform)</BuildCommandArgs>
|
||||
+ <BuildCommandArgs>$(BuildCommandArgs) --os-name linux-musl</BuildCommandArgs>
|
||||
<BuildCommandArgs>$(BuildCommandArgs) --no-build-repo-tasks</BuildCommandArgs>
|
||||
<BuildCommandArgs>$(BuildCommandArgs) --no-build-nodejs</BuildCommandArgs>
|
||||
<BuildCommandArgs>$(BuildCommandArgs) /p:PublishCompressedFilesPathPrefix=$(SourceBuiltAspNetCoreRuntime)</BuildCommandArgs>
|
Loading…
Reference in a new issue