Compare commits
19 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
57a05b040b | ||
|
|
6e381264a5 | ||
|
|
44200736a0 | ||
|
|
de08c3fc4a | ||
|
|
acacdee325 | ||
|
|
1c3bc4250d | ||
| e14c68ed11 | |||
| add856dbe9 | |||
| 3eadbe1c6a | |||
| b2e2bac5e4 | |||
| f8d24d3f95 | |||
| bc7b82b70a | |||
| a5e19f74de | |||
| 49a978e134 | |||
| d2c909f7ae | |||
| c1fd6fbf8f | |||
| d8be368e59 | |||
| dea5c44d83 | |||
| 48be3f5d83 |
@ -1 +0,0 @@
|
||||
1
|
||||
27
.gitignore
vendored
27
.gitignore
vendored
@ -1,26 +1 @@
|
||||
/dotnet-prebuilts-9.0.100-preview.7.24380.1-ppc64le.tar.gz
|
||||
/dotnet-prebuilts-9.0.100-preview.7.24380.1-s390x.tar.gz
|
||||
/dotnet-sdk-9.0.100-preview.7.24380.2-linux-arm64.tar.gz
|
||||
/dotnet-v9.0.0-preview.7.24405.7-x64-bootstrap.tar.gz
|
||||
/dotnet-9.0.0-preview.7.24405.7.tar.gz
|
||||
/dotnet-9.0.0-preview.7.24405.7.tar.gz.sig
|
||||
/dotnet-9.0.0-rc.1.24431.7.tar.gz
|
||||
/dotnet-9.0.0-rc.1.24431.7.tar.gz.sig
|
||||
/dotnet-9.0.0-rc.2.24473.5.tar.gz
|
||||
/dotnet-9.0.0-rc.2.24473.5.tar.gz.sig
|
||||
/dotnet-v9.0.0-rc.2.24473.5-x64-bootstrap.tar.gz
|
||||
/dotnet-sdk-9.0.100-rc.1.24452.12-linux-arm64.tar.gz
|
||||
/dotnet-prebuilts-9.0.100-rc.1.24452.1-ppc64le.tar.gz
|
||||
/dotnet-prebuilts-9.0.100-rc.1.24452.1-s390x.tar.gz
|
||||
/dotnet-9.0.1.tar.gz
|
||||
/dotnet-9.0.1.tar.gz.sig
|
||||
/dotnet-v9.0.1-x64-bootstrap.tar.gz
|
||||
/dotnet-sdk-9.0.101-linux-arm64.tar.gz
|
||||
/dotnet-prebuilts-9.0.101-ppc64le.tar.gz
|
||||
/dotnet-prebuilts-9.0.101-s390x.tar.gz
|
||||
/dotnet-9.0.2.tar.gz
|
||||
/dotnet-9.0.2.tar.gz.sig
|
||||
/dotnet-9.0.3.tar.gz
|
||||
/dotnet-9.0.3.tar.gz.sig
|
||||
/dotnet-9.0.4.tar.gz
|
||||
/dotnet-9.0.4.tar.gz.sig
|
||||
dotnet-9.0.119.tar.gz
|
||||
|
||||
74
README.md
74
README.md
@ -1,74 +0,0 @@
|
||||
# dotnet9.0
|
||||
|
||||
This is the .NET 9.0 package for RHEL.
|
||||
|
||||
Please report any issues [using Jira](https://issues.redhat.com/).
|
||||
|
||||
# Specification
|
||||
|
||||
This package follows [package naming and contents suggested by
|
||||
upstream](https://docs.microsoft.com/en-us/dotnet/core/build/distribution-packaging),
|
||||
with one exception. It installs dotnet to `/usr/lib64/dotnet` (aka
|
||||
`%{_libdir}`).
|
||||
|
||||
# Contributing
|
||||
|
||||
1. Fork the repo.
|
||||
|
||||
2. Checkout the forked repository.
|
||||
|
||||
- `git clone git@gitlab.com:$USER/centos_rpms_dotnet9.0.git dotnet9.0`
|
||||
- `cd dotnet9.0`
|
||||
|
||||
3. Make your changes. Don't forget to add a changelog.
|
||||
|
||||
If you are updating to a new upstream release: Get the new upstream source
|
||||
tarball and the detached signature. Update the versions in the spec file.
|
||||
Add a changelog. This is generally automated by the following.
|
||||
|
||||
- `./update-release <sdk-version> <runtime-version>`
|
||||
|
||||
If this fails because of compiler errors, you might have to figure
|
||||
out a fix, then add the patch in `build-dotnet-tarball` script
|
||||
rather than the spec file.
|
||||
|
||||
4. Do local builds.
|
||||
|
||||
- `centpkg local`
|
||||
|
||||
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 spec file.
|
||||
|
||||
6. Do builds in koji.
|
||||
|
||||
- `centpkg scratch-build --srpm`
|
||||
|
||||
7. If this is a new release, upload the source archive and detached signature to
|
||||
the look-aside cache.
|
||||
|
||||
- `centpkg new-sources dotnet-source-tarball.tar.gz dotnet-source-tarball.tar.gz.sig`
|
||||
|
||||
8. Commit the changes to the git repo.
|
||||
|
||||
- `git add` any new patches
|
||||
- `git remove` any now-unnecessary patches
|
||||
- `git commit -a`
|
||||
- `git push`
|
||||
|
||||
9. Create a pull request with your changes.
|
||||
|
||||
10. Once the tests in the pull-request pass, and reviewers are happy, merge the
|
||||
pull request and do a real build.
|
||||
|
||||
- `centpkg build`
|
||||
|
||||
# Testing
|
||||
|
||||
This package uses CI tests as defined in `tests/ci.yml`. You can run them using
|
||||
[tmt](https://tmt.readthedocs.io/en/stable/overview.html). Creating a
|
||||
pull-request or running an official build will fire off tests and flag any
|
||||
issues. We have enabled gating (via `gating.yaml`) on the tests. That prevents
|
||||
a build that fails any test from being released until the failures are waived.
|
||||
|
||||
The tests themselves are contained in this external repository:
|
||||
https://github.com/redhat-developer/dotnet-regular-tests/
|
||||
@ -1,171 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Usage:
|
||||
# build-dotnet-bootstrap-tarball <tag-or-commit-from-dotnet>
|
||||
#
|
||||
# Creates a source archive suitable for bootstrapping from a tag (or commit) at
|
||||
# https://github.com/dotnet/dotnet
|
||||
#
|
||||
# Clone dotnet/dotnet, check out the tag, and build a source-tarball.
|
||||
# Can also use a full git commit identifier instead of tag (not an
|
||||
# abbreviated 8 character commit identifier though).
|
||||
|
||||
set -euo pipefail
|
||||
IFS=$'\n\t'
|
||||
|
||||
function print_usage {
|
||||
echo "Usage:"
|
||||
echo "$0 <tag-from-dotnet>"
|
||||
echo
|
||||
echo "Creates a $arch bootstrap source archive from a tag at https://github.com/dotnet/dotnet"
|
||||
}
|
||||
|
||||
function clean_dotnet_cache {
|
||||
rm -rf ~/.aspnet ~/.dotnet/ ~/.nuget/ ~/.local/share/NuGet ~/.templateengine
|
||||
rm -rf /tmp/NuGet /tmp/NuGetScratch /tmp/.NETCore* /tmp/.NETStandard* /tmp/.dotnet /tmp/dotnet.* /tmp/clr-debug-pipe* /tmp/Razor-Server /tmp/CoreFxPipe* /tmp/VBCSCompiler /tmp/.NETFramework*
|
||||
rm -rf ~/.npm/
|
||||
}
|
||||
|
||||
function check_bootstrap_environment {
|
||||
if rpm -qa | grep dotnet ; then
|
||||
echo "error: dotnet is installed. Not a good idea for bootstrapping."
|
||||
exit 1
|
||||
fi
|
||||
if [ -d /usr/lib/dotnet ] || [ -d /usr/lib64/dotnet ] || [ -d /usr/share/dotnet ] ; then
|
||||
echo "error: one of /usr/lib/dotnet /usr/lib64/dotnet or /usr/share/dotnet/ exists. Not a good idea for bootstrapping."
|
||||
exit 1
|
||||
fi
|
||||
if command -v dotnet ; then
|
||||
echo "error: dotnet is in $PATH. Not a good idea for bootstrapping."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
function runtime_id {
|
||||
|
||||
source /etc/os-release
|
||||
case "${ID}" in
|
||||
# Remove the RHEL minor version
|
||||
rhel) rid_version=${VERSION_ID%.*} ;;
|
||||
|
||||
*) rid_version=${VERSION_ID} ;;
|
||||
esac
|
||||
|
||||
echo "${ID}.${rid_version}-${arch}"
|
||||
}
|
||||
|
||||
build_bootstrap=false
|
||||
|
||||
declare -A archmap
|
||||
archmap=(
|
||||
["aarch64"]="arm64"
|
||||
["amd64"]="x64"
|
||||
["armv8l"]="arm"
|
||||
["i386"]="x86"
|
||||
["i686"]="x86"
|
||||
["ppc64le"]="ppc64le"
|
||||
["s390x"]="s390x"
|
||||
["x86_64"]="x64"
|
||||
)
|
||||
|
||||
arch=${archmap["$(uname -m)"]}
|
||||
|
||||
|
||||
positional_args=()
|
||||
while [[ "$#" -gt 0 ]]; do
|
||||
arg="${1}"
|
||||
case "${arg}" in
|
||||
-h|--help)
|
||||
print_usage
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
positional_args+=("$1")
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
check_bootstrap_environment
|
||||
|
||||
tag=${positional_args[0]:-}
|
||||
if [[ -z ${tag} ]]; then
|
||||
echo "error: missing tag to build"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
set -x
|
||||
|
||||
dir_name="dotnet-${tag}"
|
||||
unmodified_tarball_name="${dir_name}-original"
|
||||
tarball_name="${dir_name}"
|
||||
|
||||
unmodified_tarball_name="${unmodified_tarball_name}-${arch}-bootstrap"
|
||||
tarball_name="${tarball_name}-${arch}-bootstrap"
|
||||
|
||||
tarball_suffix=.tar.gz
|
||||
|
||||
if [ -f "${tarball_name}${tarball_suffix}" ]; then
|
||||
echo "error: ${tarball_name}${tarball_suffix} already exists"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
if [ ! -f "${unmodified_tarball_name}.tar.gz" ]; then
|
||||
if [[ $tag =~ ^[0-9a-fA-F]+$ ]]; then
|
||||
if [ ! -f $tag.zip ]; then
|
||||
wget https://github.com/dotnet/dotnet/archive/$tag.zip
|
||||
fi
|
||||
dir=$(mktemp -d -p $(pwd))
|
||||
pushd $dir
|
||||
unzip -q ../$tag.zip
|
||||
if [[ $(ls -1q | wc -l) -gt 3 ]]; then
|
||||
echo "error: tarball doesn't have a single main directory"
|
||||
exit 1
|
||||
fi
|
||||
tar czf ../${unmodified_tarball_name}.tar.gz dotnet-$tag
|
||||
popd
|
||||
else
|
||||
wget https://github.com/dotnet/dotnet/archive/refs/tags/${tag}.tar.gz
|
||||
mv "${tag}.tar.gz" "${unmodified_tarball_name}.tar.gz"
|
||||
fi
|
||||
fi
|
||||
|
||||
tar tf "${unmodified_tarball_name}".tar.gz > .tarball_file_list
|
||||
extracted_tarball_root=$(head -1 .tarball_file_list | cut -d/ -f 1)
|
||||
if [[ "$extracted_tarball_root" == "."* ]]; then
|
||||
echo "error: can't find main directory in the dotnet tarball"
|
||||
exit 1
|
||||
fi
|
||||
if [[ $(grep -cv "^${extracted_tarball_root}/" .tarball_file_list) -gt 0 ]]; then
|
||||
echo "error: tarball doesn't have a single main directory"
|
||||
exit 1
|
||||
fi
|
||||
rm .tarball_file_list
|
||||
|
||||
rm -rf "${tarball_name}"
|
||||
rm -rf "${extracted_tarball_root}"
|
||||
tar xf "${unmodified_tarball_name}.tar.gz"
|
||||
mv "${extracted_tarball_root}" "${tarball_name}"
|
||||
|
||||
pushd "${tarball_name}"
|
||||
|
||||
./prep-source-build.sh --bootstrap
|
||||
|
||||
# Remove files with funny licenses and crypto implementations and
|
||||
# other not-very-useful artifacts. We MUST NOT ship any files that
|
||||
# have unapproved licenses and unexpected cryptographic
|
||||
# implementations.
|
||||
#
|
||||
# We use rm -r (no -f) to make sure the operation fails if the files
|
||||
# are not at the expected locations. If the files are not at the
|
||||
# expected location, we need to find the new location of the files and
|
||||
# delete them, or verify that upstream has already removed the files.
|
||||
|
||||
# rm -r $FILE_TO_REMOVE
|
||||
|
||||
popd
|
||||
|
||||
echo "Bootstrap .NET SDK: $(jq .tools.dotnet "${tarball_name}"/global.json)"
|
||||
|
||||
time tar -czf "${tarball_name}${tarball_suffix}" "${tarball_name}"
|
||||
@ -1,63 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Usage:
|
||||
# build-prebuilt-archive architecture vmr-directory
|
||||
#
|
||||
# Creates an archive containing necessary bootstrapping binaries for ppc64le or
|
||||
# s390x architectures from a VMR build.
|
||||
#
|
||||
# You need to have cloned the VMR (https://github.com/dotnet/dotnet) and
|
||||
# cross-compiled it for the target architecture already.
|
||||
|
||||
set -euo pipefail
|
||||
IFS=$'\n\t'
|
||||
set -x
|
||||
|
||||
function print_usage {
|
||||
echo "Usage:"
|
||||
echo "$0 <architecture> <vmr directory>"
|
||||
echo
|
||||
echo "Creates a ppc64le or s390x bootstrap archive from a VMR build."
|
||||
echo
|
||||
echo "You need to have cloned the VMR (https://github.com/dotnet/dotnet) and"
|
||||
echo "cross-compiled it for the target architecture already."
|
||||
|
||||
}
|
||||
|
||||
positional_args=()
|
||||
while [[ "$#" -gt 0 ]]; do
|
||||
arg="${1}"
|
||||
case "${arg}" in
|
||||
-h|--help)
|
||||
print_usage
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
positional_args+=("$1")
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
arch=${positional_args[0]} # Name of the architecture. Eg, s390x or ppc64le
|
||||
dir=${positional_args[1]} # Checkout of the VMR with the cross-build for the target architecture
|
||||
dir=$(readlink -f "$dir")
|
||||
|
||||
sdk_tarball=$(readlink -f $(find "$dir" -iname 'dotnet-sdk*'"$arch"'*tar.gz' | head -1))
|
||||
|
||||
# SDK is at VMR/artifacts/assets/Release/dotnet-sdk-9.0.100-preview.3.24165.1-linux-$arch.tar.gz. Extract the SDK version from the name.
|
||||
sdk_version=$(echo "$(basename "${sdk_tarball}")" | sed -E -e 's/dotnet-sdk-//' -e "s/-linux-$arch.tar.gz//")
|
||||
echo $sdk_version
|
||||
|
||||
archive_name=dotnet-prebuilts-${sdk_version}-${arch}
|
||||
|
||||
mkdir -p $archive_name
|
||||
pushd $archive_name
|
||||
|
||||
cp -av $sdk_tarball .
|
||||
# Get all architecture-specific nuget packages
|
||||
find $dir/artifacts/packages/Release/Shipping/ -iname "*linux-$arch*nupkg" -exec cp -avL {} . \;
|
||||
|
||||
popd
|
||||
|
||||
tar cvzf $archive_name.tar.gz $archive_name
|
||||
17
dotnet-9.0.119.tar.gz.sig
Normal file
17
dotnet-9.0.119.tar.gz.sig
Normal file
@ -0,0 +1,17 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
Version: BSN Pgp v1.0.0.0
|
||||
|
||||
iQIcBAABCAAGBQJqRTDYAAoJEP2/U8JNtIcu3oQQANIjxpAwRmp4pSSP5e/yawxh
|
||||
cpwdU6X/Lgy62Cn0+bfY1HhV2oiKkg+46ST+6742E7W1ioktcrYG88d8vkzDm9W9
|
||||
g/Z0JKcuqLFfDGQO7+QgIQAx64hTEeebw3wDGR+JjoR9BZlPAzilArZLXuBTqF5d
|
||||
+/NWUy2TuFnUy/MVWiqByQo1gETtCtM3c2BEp61fU0R1LhS0t00JNsfQ4jOtqBfv
|
||||
GnRLyz0npOeluvS0i/HrcmEixiXxhxVT+XkKkqWzcaTb9IYNYy91s87/GMnZbfNx
|
||||
Sb3L2a5OfM0/2jsQ+rbdNnMr/dBCv/D0l9rve9ZwYI9zVdjhwW2HMXFmaYc+Tp1K
|
||||
CICpureajPqCnrnH+ykPpiCRhQJMdLkPv/IudcHLc1AAoJCxRfV9s38G4FKtsIZc
|
||||
kpcpNUyO8cym7rXbTDm6lJvwfy09Tf7/GYKFDyeki1YPYma46fzGVPH+W9SOrd2e
|
||||
XXGDW3iHulrWJt0vOGGuxRMxkObrEy4gmIXvS6jwO5VcvZrvMSXvs1oLpObmEKXh
|
||||
myt71egvHiiQ3tgRPmSf0s4Q5Za1V0WSLCaxUuShzm+YIRcG69qXkL/8dA002IJY
|
||||
amgpFWweV4prwLl/4EIy+4thjQMylJkruYfam1g4pKiGndzuMqZAhAoDYFhnUDFJ
|
||||
ti5TzAbAzZ/JvCmBAzXP
|
||||
=mxJL
|
||||
-----END PGP SIGNATURE-----
|
||||
156
dotnet9.0.spec
156
dotnet9.0.spec
@ -8,15 +8,19 @@
|
||||
|
||||
%global dotnetver 9.0
|
||||
|
||||
# Only the package for the latest dotnet version should provide RPMs like
|
||||
# dotnet-host
|
||||
%global is_latest_dotnet 0
|
||||
|
||||
# upstream can produce releases with a different tag than the SDK version
|
||||
#%%global upstream_tag v%%{runtime_version}
|
||||
%global upstream_tag v9.0.4
|
||||
%global upstream_tag v9.0.119
|
||||
%global upstream_tag_without_v %(echo %{upstream_tag} | sed -e 's|^v||')
|
||||
|
||||
%global hostfxr_version %{runtime_version}
|
||||
%global runtime_version 9.0.4
|
||||
%global aspnetcore_runtime_version 9.0.4
|
||||
%global sdk_version 9.0.105
|
||||
%global runtime_version 9.0.18
|
||||
%global aspnetcore_runtime_version 9.0.18
|
||||
%global sdk_version 9.0.119
|
||||
%global sdk_feature_band_version %(echo %{sdk_version} | cut -d '-' -f 1 | sed -e 's|[[:digit:]][[:digit:]]$|00|')
|
||||
%global templates_version %{aspnetcore_runtime_version}
|
||||
#%%global templates_version %%(echo %%{runtime_version} | awk 'BEGIN { FS="."; OFS="." } {print $1, $2, $3+1 }')
|
||||
@ -70,7 +74,7 @@
|
||||
|
||||
Name: dotnet%{dotnetver}
|
||||
Version: %{sdk_rpm_version}
|
||||
Release: 2%{?dist}
|
||||
Release: 1%{?dist}
|
||||
Summary: .NET Runtime and SDK
|
||||
License: 0BSD AND Apache-2.0 AND (Apache-2.0 WITH LLVM-exception) AND APSL-2.0 AND BSD-2-Clause AND BSD-3-Clause AND BSD-4-Clause AND BSL-1.0 AND bzip2-1.0.6 AND CC0-1.0 AND CC-BY-3.0 AND CC-BY-4.0 AND CC-PDDC AND CNRI-Python AND EPL-1.0 AND GPL-2.0-only AND (GPL-2.0-only WITH GCC-exception-2.0) AND GPL-2.0-or-later AND GPL-3.0-only AND ICU AND ISC AND LGPL-2.1-only AND LGPL-2.1-or-later AND LicenseRef-Fedora-Public-Domain AND LicenseRef-ISO-8879 AND MIT AND MIT-Wu AND MS-PL AND MS-RL AND NCSA AND OFL-1.1 AND OpenSSL AND Unicode-DFS-2015 AND Unicode-DFS-2016 AND W3C-19980720 AND X11 AND Zlib
|
||||
|
||||
@ -665,6 +669,8 @@ function retry_until_success {
|
||||
set +e
|
||||
while [[ $exit_code != 0 ]] && [[ $tries != 0 ]]; do
|
||||
(( tries = tries - 1 ))
|
||||
# Clean stale build state so retries start fresh.
|
||||
rm -rf .packages $(find . -name artifacts -type d)
|
||||
"$@"
|
||||
exit_code=$?
|
||||
done
|
||||
@ -672,6 +678,66 @@ function retry_until_success {
|
||||
return $exit_code
|
||||
}
|
||||
|
||||
# Runs a command and kills it if it produces no output.
|
||||
# Use a longer timeout on machines with fewer cores since builds are slower.
|
||||
function output_timeout {
|
||||
# 30m on machines with more than 4 cores, 60m on smaller machines where builds are slower.
|
||||
# The aarch64 Neoverse N1 CI machines have 4 cores and need the longer timeout.
|
||||
local nprocs=$(nproc)
|
||||
local idle_timeout=1800
|
||||
if (( nprocs <= 4 )); then
|
||||
idle_timeout=3600
|
||||
fi
|
||||
|
||||
# Create a pipe we'll read the output from for timeout detection.
|
||||
local fifo=$(mktemp -u)
|
||||
mkfifo "$fifo"
|
||||
|
||||
# Create a process group so we can kill every process including children.
|
||||
# And use a long timeout (5h) in (the unlikely) case output timeout detection continues to be triggered.
|
||||
setsid timeout --foreground 5h "$@" &> "$fifo" &
|
||||
local cmd_pid=$!
|
||||
|
||||
# Read lines from the output with a timeout.
|
||||
# Disable tracing to avoid 'set -x' noise from the read loop appearing in the output.
|
||||
local timed_out=false
|
||||
local traceflags=$-
|
||||
set +x
|
||||
while true; do
|
||||
local rc=0
|
||||
IFS= read -t $idle_timeout -r line || rc=$?
|
||||
if (( rc == 0 )); then
|
||||
printf '%s\n' "$line"
|
||||
elif (( rc > 128 )); then
|
||||
echo "output_timeout: no output for ${idle_timeout}s" >&2
|
||||
timed_out=true
|
||||
break
|
||||
else
|
||||
[[ -z $line ]] || printf '%s\n' "$line"
|
||||
break
|
||||
fi
|
||||
done < "$fifo"
|
||||
[[ $traceflags != *x* ]] || set -x
|
||||
|
||||
if $timed_out; then
|
||||
# Hang detected: kill the process group, then collect the exit code.
|
||||
kill -9 -- -$cmd_pid 2>/dev/null || true
|
||||
wait $cmd_pid 2>/dev/null
|
||||
local exit_code=$?
|
||||
else
|
||||
# Normal exit: collect the real exit code, then clean up any orphaned processes.
|
||||
wait $cmd_pid 2>/dev/null
|
||||
local exit_code=$?
|
||||
kill -9 -- -$cmd_pid 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# Cleanup.
|
||||
rm -f "$fifo"
|
||||
|
||||
return $exit_code
|
||||
}
|
||||
|
||||
|
||||
cat >dotnet-rpm-build.sh <<EOF
|
||||
#!/bin/bash
|
||||
|
||||
@ -702,7 +768,7 @@ EOF
|
||||
chmod +x dotnet-rpm-build.sh
|
||||
|
||||
VERBOSE=1 retry_until_success $max_attempts \
|
||||
timeout 5h \
|
||||
output_timeout \
|
||||
./dotnet-rpm-build.sh
|
||||
|
||||
|
||||
@ -750,6 +816,7 @@ find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.targets' -exec chmod -x {}
|
||||
find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.txt' -exec chmod -x {} \;
|
||||
find %{buildroot}%{_libdir}/dotnet/ -type f -name '*.xml' -exec chmod -x {} \;
|
||||
|
||||
%if %{is_latest_dotnet}
|
||||
install -dm 0755 %{buildroot}%{_sysconfdir}/profile.d/
|
||||
install dotnet.sh %{buildroot}%{_sysconfdir}/profile.d/
|
||||
|
||||
@ -773,6 +840,7 @@ echo "%{_libdir}/dotnet" >> install_location
|
||||
install install_location %{buildroot}%{_sysconfdir}/dotnet/
|
||||
echo "%{_libdir}/dotnet" >> install_location_%{runtime_arch}
|
||||
install install_location_%{runtime_arch} %{buildroot}%{_sysconfdir}/dotnet/
|
||||
%endif
|
||||
|
||||
install -dm 0755 %{buildroot}%{_libdir}/dotnet/source-built-artifacts
|
||||
install -m 0644 artifacts/assets/Release/Private.SourceBuilt.Artifacts.*.tar.gz %{buildroot}/%{_libdir}/dotnet/source-built-artifacts/
|
||||
@ -796,6 +864,18 @@ find %{buildroot}%{_libdir}/dotnet/sdk -type d | tail -n +2 | sed -E 's|%{buildr
|
||||
find %{buildroot}%{_libdir}/dotnet/sdk -type f -and -not -name '*.pdb' | sed -E 's|%{buildroot}||' >> dotnet-sdk-non-dbg-files
|
||||
find %{buildroot}%{_libdir}/dotnet/sdk -type f -name '*.pdb' | sed -E 's|%{buildroot}||' > dotnet-sdk-dbg-files
|
||||
|
||||
%if %{is_latest_dotnet} == 0
|
||||
# If this is an older version, self-test now, before we delete files. After we
|
||||
# delete files, we will not have everything we need to self-test in %%check.
|
||||
%{buildroot}%{_libdir}/dotnet/dotnet --info
|
||||
%{buildroot}%{_libdir}/dotnet/dotnet --version
|
||||
|
||||
# Provided by dotnet-host from another SRPM
|
||||
rm %{buildroot}%{_libdir}/dotnet/LICENSE.txt
|
||||
rm %{buildroot}%{_libdir}/dotnet/ThirdPartyNotices.txt
|
||||
rm %{buildroot}%{_libdir}/dotnet/dotnet
|
||||
%endif
|
||||
|
||||
|
||||
|
||||
%check
|
||||
@ -804,8 +884,10 @@ find %{buildroot}%{_libdir}/dotnet/sdk -type f -name '*.pdb' | sed -E 's|%{buil
|
||||
export COMPlus_LTTng=0
|
||||
%endif
|
||||
|
||||
%if %{is_latest_dotnet}
|
||||
%{buildroot}%{_libdir}/dotnet/dotnet --info
|
||||
%{buildroot}%{_libdir}/dotnet/dotnet --version
|
||||
%endif
|
||||
|
||||
|
||||
|
||||
@ -814,6 +896,7 @@ export COMPlus_LTTng=0
|
||||
# empty package useful for dependencies
|
||||
%endif
|
||||
|
||||
%if %{is_latest_dotnet}
|
||||
%files -n dotnet-host
|
||||
%dir %{_libdir}/dotnet
|
||||
%{_libdir}/dotnet/dotnet
|
||||
@ -832,6 +915,7 @@ export COMPlus_LTTng=0
|
||||
%dir %{_datadir}/zsh
|
||||
%dir %{zsh_completions_dir}
|
||||
%{_datadir}/zsh/site-functions/_dotnet
|
||||
%endif
|
||||
|
||||
%files -n dotnet-hostfxr-%{dotnetver}
|
||||
%dir %{_libdir}/dotnet/host/fxr
|
||||
@ -886,6 +970,66 @@ export COMPlus_LTTng=0
|
||||
|
||||
|
||||
%changelog
|
||||
* Wed Jul 08 2026 Satish Mane <satmane@redhat.com> - 9.0.119-1
|
||||
- Update to .NET SDK 9.0.119 and Runtime 9.0.18
|
||||
- Resolves: RHEL-192473
|
||||
|
||||
* Thu Jul 02 2026 Tom Deseyn <tdeseyn@redhat.com> - 9.0.118-2
|
||||
- Reduce time to detect hanging builds
|
||||
- Resolves: RHEL-191644
|
||||
|
||||
* Wed Jun 03 2026 Tom Deseyn <tdeseyn@redhat.com> - 9.0.118-1
|
||||
- Update to .NET SDK 9.0.118 and Runtime 9.0.17
|
||||
- Resolves: RHEL-181554
|
||||
|
||||
* Wed May 06 2026 Omair Majid <omajid@redhat.com> - 9.0.117-1
|
||||
- Update to .NET SDK 9.0.117 and Runtime 9.0.16
|
||||
- Resolves: RHEL-173919
|
||||
|
||||
* Fri Apr 17 2026 Omair Majid <omajid@redhat.com> - 9.0.116-2
|
||||
- Update to .NET SDK 9.0.116 and Runtime 9.0.15
|
||||
- Resolves: RHEL-163400
|
||||
|
||||
* Thu Mar 26 2026 Dominik Rehák <drehak@redhat.com> - 9.0.115-2
|
||||
- Update to .NET SDK 9.0.115 and Runtime 9.0.14
|
||||
- Resolves: RHEL-152947
|
||||
|
||||
* Wed Feb 11 2026 Omair Majid <omajid@redhat.com> - 9.0.114-2
|
||||
- Update to .NET SDK 9.0.114 and Runtime 9.0.13
|
||||
- Resolves: RHEL-144971
|
||||
|
||||
* Wed Jan 14 2026 Omair Majid <omajid@redhat.com> - 9.0.113-2
|
||||
- Update to .NET SDK 9.0.113 and Runtime 9.0.12
|
||||
- Resolves: RHEL-138646
|
||||
|
||||
* Wed Nov 12 2025 Omair Majid <omajid@redhat.com> - 9.0.112-2
|
||||
- Update to .NET SDK 9.0.112 and Runtime 9.0.11
|
||||
- Resolves: RHEL-125744
|
||||
|
||||
* Tue Oct 14 2025 Omair Majid <omajid@redhat.com> - 9.0.111-2
|
||||
- Update to .NET SDK 9.0.111 and Runtime 9.0.10
|
||||
- Resolves: RHEL-116861
|
||||
|
||||
* Wed Sep 10 2025 Omair Majid <omajid@redhat.com> - 9.0.110-2
|
||||
- Update to .NET SDK 9.0.110 and Runtime 9.0.9
|
||||
- Resolves: RHEL-112268
|
||||
|
||||
* Mon Aug 11 2025 Omair Majid <omajid@redhat.com> - 9.0.109-2
|
||||
- Update to .NET SDK 9.0.109 and Runtime 9.0.8
|
||||
- Resolves: RHEL-106727
|
||||
|
||||
* Tue Jul 08 2025 Omair Majid <omajid@redhat.com> - 9.0.108-2
|
||||
- Update to .NET SDK 9.0.108 and Runtime 9.0.7
|
||||
- Resolves: RHEL-100597
|
||||
|
||||
* Wed Jun 11 2025 Omair Majid <omajid@redhat.com> - 9.0.107-2
|
||||
- Update to .NET SDK 9.0.107 and Runtime 9.0.6
|
||||
- Resolves: RHEL-94423
|
||||
|
||||
* Tue May 13 2025 Omair Majid <omajid@redhat.com> - 9.0.106-2
|
||||
- Update to .NET SDK 9.0.106 and Runtime 9.0.5
|
||||
- Resolves: RHEL-89452
|
||||
|
||||
* Wed Apr 09 2025 Omair Majid <omajid@redhat.com> - 9.0.105-2
|
||||
- Update to .NET SDK 9.0.105 and Runtime 9.0.4
|
||||
- Resolves: RHEL-85281
|
||||
|
||||
23
gating.yaml
23
gating.yaml
@ -1,23 +0,0 @@
|
||||
--- !Policy
|
||||
product_versions:
|
||||
- fedora-*
|
||||
decision_context: bodhi_update_push_testing
|
||||
subject_type: koji_build
|
||||
rules:
|
||||
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
|
||||
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.rpminspect.static-analysis}
|
||||
--- !Policy
|
||||
product_versions:
|
||||
- fedora-*
|
||||
decision_context: bodhi_update_push_stable
|
||||
subject_type: koji_build
|
||||
rules:
|
||||
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
|
||||
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.rpminspect.static-analysis}
|
||||
--- !Policy
|
||||
product_versions:
|
||||
- rhel-*
|
||||
decision_context: osci_compose_gate
|
||||
rules:
|
||||
- !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional}
|
||||
- !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.other-archs.functional}
|
||||
12
release.json
12
release.json
@ -1,10 +1,10 @@
|
||||
{
|
||||
"release": "9.0.4",
|
||||
"release": "9.0.18",
|
||||
"channel": "9.0",
|
||||
"tag": "v9.0.4",
|
||||
"sdkVersion": "9.0.105",
|
||||
"runtimeVersion": "9.0.4",
|
||||
"aspNetCoreVersion": "9.0.4",
|
||||
"tag": "v9.0.119",
|
||||
"sdkVersion": "9.0.119",
|
||||
"runtimeVersion": "9.0.18",
|
||||
"aspNetCoreVersion": "9.0.18",
|
||||
"sourceRepository": "https://github.com/dotnet/dotnet",
|
||||
"sourceVersion": "b7deac6d4239cd0d3375d55c2618054bb2f9df64"
|
||||
"sourceVersion": "d088fc83496a99a5785ecdf74c012f61a335c338"
|
||||
}
|
||||
|
||||
@ -3,9 +3,9 @@ index 044a2aba4..b3f8f2611 100644
|
||||
--- a/src/roslyn-analyzers/src/PerformanceTests/Tests/PerformanceTests.csproj
|
||||
+++ b/src/roslyn-analyzers/src/PerformanceTests/Tests/PerformanceTests.csproj
|
||||
@@ -4,6 +4,7 @@
|
||||
<LangVersion>preview</LangVersion>
|
||||
<Nullable>disable</Nullable>
|
||||
<OutputType>Exe</OutputType>
|
||||
<NoWarn>$(NoWarn);NETSDK1138</NoWarn>
|
||||
+ <UseAppHost>false</UseAppHost>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
|
||||
@ -1,20 +0,0 @@
|
||||
---
|
||||
inspections:
|
||||
# We patch upstream a lot, no need to reject patches
|
||||
patches: off
|
||||
badfuncs:
|
||||
allowed:
|
||||
# The Mono runtime (used on s390x, for example), uses inet_addr for
|
||||
# debugging (such as sending the control flow graph to a remote process).
|
||||
# See runtime/src/mono/mono/mini/cfgdump.c. This isn't part of any
|
||||
# standard networking facility; networking APIs are implemented/used in
|
||||
# libSystem*so.
|
||||
/usr/lib64/dotnet/shared/Microsoft.NETCore.App/*/libcoreclr.so:
|
||||
- inet_addr
|
||||
/usr/lib64/dotnet/packs/Microsoft.NETCore.App.Runtime.*/*/runtimes/*/native/libcoreclr.so:
|
||||
- inet_addr
|
||||
runpath:
|
||||
# Upstream explicitly sets $ORIGIN/netcoredeps as an RPATH
|
||||
# See https://github.com/dotnet/core/blob/main/Documentation/self-contained-linux-apps.md
|
||||
allowed_origin_paths:
|
||||
- /netcoredeps
|
||||
3
sources
3
sources
@ -1,2 +1 @@
|
||||
SHA512 (dotnet-9.0.4.tar.gz) = 5061b1fa37c04c84ceddd544af8f4d917aaaa56b8c6b97a68282654055f7cce8f109d9c36f4c4bbca1c1a8f6251659f906e2915ebb9644bc508ea831e5eeca77
|
||||
SHA512 (dotnet-9.0.4.tar.gz.sig) = 106acd8793def24dc462472b92e76babc2d92d1e2d3c6e9340f8248faa900cbbc7800f76d3ed73cd0f6058c30b07f0675a4d0a50b4e747834da57a0dbf5111c2
|
||||
SHA512 (dotnet-9.0.119.tar.gz) = bdb5e0bd73b7edf0cc7bf72d9ef07a31691c442bf436e1e25c7d3ac5ee02768bf405a28c004df62db1bb3f0553cb47d6dbd894106667186c7187a13138e23a09
|
||||
|
||||
44
tests/ci.fmf
44
tests/ci.fmf
@ -1,44 +0,0 @@
|
||||
summary: Basic smoke test
|
||||
provision:
|
||||
disk: 20
|
||||
memory: 5120
|
||||
prepare:
|
||||
how: install
|
||||
package:
|
||||
- aspnetcore-runtime-9.0
|
||||
- babeltrace
|
||||
- bash-completion
|
||||
- bc
|
||||
- binutils
|
||||
- dotnet-runtime-9.0
|
||||
- dotnet-sdk-9.0
|
||||
- expect
|
||||
- file
|
||||
- findutils
|
||||
- gcc-c++
|
||||
- git
|
||||
- jq
|
||||
- libstdc++-devel
|
||||
- lldb
|
||||
- npm
|
||||
- postgresql-odbc
|
||||
- postgresql-server
|
||||
- procps-ng
|
||||
- python3
|
||||
- strace
|
||||
- util-linux
|
||||
- wget
|
||||
- which
|
||||
- zlib-devel
|
||||
execute:
|
||||
script:
|
||||
- dotnet --info
|
||||
- wget --no-verbose https://github.com/redhat-developer/dotnet-bunny/releases/latest/download/turkey.tar.gz
|
||||
- tar xf turkey.tar.gz
|
||||
- dotnet turkey/Turkey.dll --version
|
||||
- git clone "https://github.com/redhat-developer/dotnet-regular-tests.git"
|
||||
- dotnet turkey/Turkey.dll -l="$TMT_TEST_DATA" dotnet-regular-tests --timeout=1200
|
||||
- dnf remove -yq 'dotnet*'
|
||||
- set -x; if command -v dotnet ; then exit 1; fi
|
||||
- set -x; if [ -d /usr/lib64/dotnet ]; then exit 1; fi
|
||||
- set -x; if man dotnet; then exit 1; fi
|
||||
161
update-release
161
update-release
@ -1,161 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Usage:
|
||||
# ./update-release [--bug bug-id] [--tarball tarball-name] [--release-json release-json] [--larger-rpm-release]
|
||||
|
||||
set -euo pipefail
|
||||
IFS=$'\n\t'
|
||||
|
||||
print_usage() {
|
||||
echo " Usage:"
|
||||
echo " ./update-release [runtime-version] [--bug bug-id] [--tarball tarball-name] [--release-json release-json] [--larger-rpm-release]"
|
||||
}
|
||||
|
||||
user_provided_tarball_name=""
|
||||
|
||||
rpm_release=1
|
||||
positional_args=()
|
||||
bug_ids=()
|
||||
while [[ "$#" -gt 0 ]]; do
|
||||
arg="$1"
|
||||
case "${arg}" in
|
||||
--bug)
|
||||
bug_ids+=("$2")
|
||||
shift;
|
||||
shift;
|
||||
;;
|
||||
-h|--help)
|
||||
print_usage
|
||||
exit 0
|
||||
;;
|
||||
--release-json)
|
||||
release_json="$2"
|
||||
shift;
|
||||
shift;
|
||||
;;
|
||||
--tarball)
|
||||
user_provided_tarball_name="$2"
|
||||
shift;
|
||||
shift;
|
||||
;;
|
||||
--larger-rpm-release)
|
||||
rpm_release="2"
|
||||
shift;
|
||||
;;
|
||||
*)
|
||||
positional_args+=("$1")
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
spec_files=( ./*.spec )
|
||||
spec_file="${spec_files[0]}"
|
||||
|
||||
dotnet_major_minor_version=$spec_file
|
||||
dotnet_major_minor_version=${dotnet_major_minor_version#./dotnet}
|
||||
dotnet_major_minor_version=${dotnet_major_minor_version%.spec}
|
||||
|
||||
echo "Updating .NET $dotnet_major_minor_version"
|
||||
|
||||
runtime_version=${positional_args[1]:-}
|
||||
sdk_version=""
|
||||
tag=v${runtime_version}
|
||||
if [[ -z ${runtime_version} ]]; then
|
||||
if [[ -n "${release_json:-}" ]]; then
|
||||
cp -a "${release_json}" release.json
|
||||
else
|
||||
cat > query <<EOF
|
||||
[ .[] | select(.name | contains(".NET 9.0")) ]
|
||||
| first
|
||||
| { tag_name: .tag_name,
|
||||
tarball: .tarball_url,
|
||||
signature: .assets[].browser_download_url | select(. | endswith("tar.gz.sig")),
|
||||
release_manifest: .assets[] | select(.name == "release.json") | .browser_download_url }
|
||||
EOF
|
||||
curl https://api.github.com/repos/dotnet/dotnet/releases \
|
||||
| jq --from-file query > release.metadata.github
|
||||
tag=$(jq -r .tag_name release.metadata.github)
|
||||
curl -L "$(jq -r .release_manifest release.metadata.github)" -o release.json
|
||||
fi
|
||||
fi
|
||||
|
||||
aspnetcore_runtime_version=$(jq -r .aspNetCoreVersion release.json)
|
||||
runtime_version=$(jq -r .runtimeVersion release.json)
|
||||
sdk_version=$(jq -r .sdkVersion release.json)
|
||||
tag=$(jq -r .tag release.json)
|
||||
tag_without_v=$(echo ${tag} | sed -e 's|^v||')
|
||||
|
||||
echo "Updating .NET $dotnet_major_minor_version to SDK ${sdk_version} and Runtime ${runtime_version}"
|
||||
|
||||
sed -i -E "s|^%global upstream_tag .*$|%global upstream_tag ${tag}|" "$spec_file"
|
||||
|
||||
sed -i -E "s|^%global runtime_version .*$|%global runtime_version ${runtime_version}|" "$spec_file"
|
||||
sed -i -E "s|^%global aspnetcore_runtime_version .*$|%global aspnetcore_runtime_version ${aspnetcore_runtime_version}|" "$spec_file"
|
||||
sed -i -E "s|^%global sdk_version .*$|%global sdk_version ${sdk_version}|" "$spec_file"
|
||||
|
||||
if [[ $runtime_version = *preview* ]] || [[ $runtime_version = *rc* ]]; then
|
||||
# For Preview/RC releases, convert x.y.z-preview.a.b to x.y.z~preview.a.b (replace - with ~)
|
||||
# https://docs.fedoraproject.org/en-US/packaging-guidelines/Versioning/#_handling_non_sorting_versions_with_tilde_dot_and_caret
|
||||
runtime_rpm_version=${runtime_version/-/\~}
|
||||
aspnetcore_runtime_rpm_version=${aspnetcore_runtime_version/-/\~}
|
||||
sdk_rpm_version=${sdk_version/-/\~}
|
||||
sed -i -E "s|^(%global runtime_rpm_version) .*$|\1 ${runtime_rpm_version}|" "$spec_file"
|
||||
sed -i -E "s|^(%global aspnetcore_runtime_rpm_version) .*$|\1 ${aspnetcore_runtime_rpm_version}|" "$spec_file"
|
||||
sed -i -E "s|^(%global sdk_rpm_version) .*$|\1 ${sdk_rpm_version}|" "$spec_file"
|
||||
else
|
||||
# For GA releases replace rpm versions with rpm macros for the actual version
|
||||
sed -i -E "s|^(%global runtime_rpm_version) .*$|\1 %{runtime_version}|" "$spec_file"
|
||||
sed -i -E "s|^(%global aspnetcore_runtime_rpm_version) .*$|\1 %{aspnetcore_runtime_version}|" "$spec_file"
|
||||
sed -i -E "s|^(%global sdk_rpm_version) .*$|\1 %{sdk_version}|" "$spec_file"
|
||||
fi
|
||||
|
||||
if [[ -f "dotnet-${tag_without_v}.tar.gz" ]]; then
|
||||
echo "dotnet-${tag_without_v}.tar.gz already exists, not rebuilding tarball"
|
||||
elif [[ -n ${user_provided_tarball_name} ]]; then
|
||||
cp -a "${user_provided_tarball_name}" "dotnet-${tag_without_v}.tar.gz"
|
||||
cp -a "${user_provided_tarball_name}.sig" "dotnet-${tag_without_v}.tar.gz.sig"
|
||||
else
|
||||
rm -f release.json
|
||||
spectool -g "$spec_file"
|
||||
if spectool -l "$spec_file" | grep 'bootstrap.tar.gz' ; then
|
||||
./build-dotnet-bootstrap-tarball "$tag"
|
||||
tar xf dotnet-"$tag"-x64-bootstrap.tar.gz "dotnet-$tag-x64-bootstrap/global.json"
|
||||
bootstrap_sdk_version=$(jq -r .tools.dotnet "dotnet-$tag-x64-bootstrap/global.json")
|
||||
sed -i -E "s|^(%global bootstrap_sdk_version) .*$|\1 ${bootstrap_sdk_version}|" "$spec_file"
|
||||
spectool -g "$spec_file"
|
||||
|
||||
if [ -f re-build-all-bootstrap ]; then
|
||||
./re-build-all-bootstrap "${tag}"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
set -x
|
||||
|
||||
comment="Update to .NET SDK ${sdk_version} and Runtime ${runtime_version}"
|
||||
commit_message="$comment
|
||||
"
|
||||
for bug_id in "${bug_ids[@]}"; do
|
||||
if [[ "$bug_id" =~ ^[[:digit:]]+$ ]]; then
|
||||
comment="$comment
|
||||
- Resolves: RHBZ#$bug_id"
|
||||
commit_message="$commit_message
|
||||
Resolves: RHBZ#$bug_id"
|
||||
else
|
||||
comment="$comment
|
||||
- Resolves: $bug_id"
|
||||
commit_message="$commit_message
|
||||
Resolves: $bug_id"
|
||||
fi
|
||||
done
|
||||
|
||||
echo "$commit_message" > git-commit-message
|
||||
|
||||
rpmdev-bumpspec --comment="$comment" "$spec_file"
|
||||
|
||||
# Reset release in 'Release' tag
|
||||
sed -i -E 's|^Release: [[:digit:]]+%|Release: '"$rpm_release"'%|' "$spec_file"
|
||||
# Reset Release in changelog comment
|
||||
# See https://stackoverflow.com/questions/18620153/find-matching-text-and-replace-next-line
|
||||
sed -i -E '/^%changelog$/!b;n;s/-[[:digit:]]+$/-'"$rpm_release"'/' "$spec_file"
|
||||
Loading…
Reference in New Issue
Block a user