Compare commits

..

5 Commits

Author SHA1 Message Date
Omair Majid
48119e3831 Update to .NET SDK 8.0.119 and Runtime 8.0.19
Resolves: RHEL-106723
2025-08-11 13:38:24 -04:00
Omair Majid
fdff592129 Update to .NET SDK 8.0.118 and Runtime 8.0.18
Resolves: RHEL-100592
2025-07-08 18:55:47 -04:00
Omair Majid
4bc86ebd22 Update to .NET SDK 8.0.117 and Runtime 8.0.17
Resolves: RHEL-94417
2025-06-13 09:35:40 -04:00
Omair Majid
ff58b24e1b Update to .NET SDK 8.0.116 and Runtime 8.0.16
Resolves: RHEL-89445
2025-05-14 13:25:08 -04:00
Omair Majid
3d870afc98 Update to .NET SDK 8.0.115 and Runtime 8.0.15
Resolves: RHEL-85276
2025-04-09 15:47:49 -04:00
15 changed files with 879 additions and 82 deletions

1
.fmf/version Normal file
View File

@ -0,0 +1 @@
1

71
.gitignore vendored
View File

@ -1 +1,70 @@
dotnet-8.0.13.tar.gz
/dotnet-v3.1.101-SDK.tar.gz
/dotnet-v3.1.102-SDK.tar.gz
/dotnet-v3.1.103.2-SDK.tar.gz
/dotnet-v5.0.102-SDK-arm64-bootstrap.tar.gz
/dotnet-v5.0.102-SDK-x64-bootstrap.tar.gz
/dotnet-v5.0.102-SDK.tar.gz
/dotnet-v5.0.103-SDK.tar.gz
/dotnet-v5.0.104-SDK.tar.gz
/dotnet-v5.0.202-SDK.tar.gz
/dotnet-v5.0.203-SDK.tar.gz
/dotnet-v5.0.204-SDK.tar.gz
/dotnet-9e8b04bbff820c93c142f99a507a46b976f5c14c-x64-bootstrap.tar.xz
/dotnet-arm64-prebuilts-2021-10-29.tar.gz
/dotnet-s390x-prebuilts-2021-10-29.tar.gz
/dotnet-9e8b04bbff820c93c142f99a507a46b976f5c14c.tar.gz
/dotnet-v6.0.101.tar.gz
/dotnet-v6.0.102.tar.gz
/dotnet-v6.0.103.tar.gz
/dotnet-v6.0.104.tar.gz
/dotnet-v6.0.105.tar.gz
/dotnet-v7.0.100-rc.2.22477.23-x64-bootstrap.tar.xz
/dotnet-arm64-prebuilts-2022-10-12.tar.gz
/dotnet-ppc64le-prebuilts-2022-10-21.tar.gz
/dotnet-s390x-prebuilts-2022-10-12.tar.gz
/dotnet-v7.0.100.tar.gz
/dotnet-v7.0.101.tar.gz
/dotnet-v7.0.102.tar.gz
/dotnet-v8.0.0-preview.7.23375.6-x64-bootstrap.tar.xz
/dotnet-prebuilts-8.0.100-preview.6.23330.14-arm64.tar.gz
/dotnet-prebuilts-8.0.100-preview.6.23330.14-ppc64le.tar.gz
/dotnet-prebuilts-8.0.100-preview.6.23330.14-s390x.tar.gz
/dotnet-v8.0.0-rc.1.23419.4-x64-bootstrap.tar.xz
/dotnet-prebuilts-8.0.100-rc.1.23410.12-arm64.tar.gz
/dotnet-prebuilts-8.0.100-rc.1.23410.12-ppc64le.tar.gz
/dotnet-prebuilts-8.0.100-rc.1.23410.12-s390x.tar.gz
/dotnet-v8.0.0-rc.1.23419.4.tar.gz
/dotnet-v8.0.0-rc.2.23479.6.tar.gz
/dotnet-v8.0.0.tar.gz
/dotnet-v8.0.1.tar.gz
/dotnet-v8.0.2.tar.gz
/dotnet-8.0.3.tar.gz
/dotnet-8.0.3.tar.gz.sig
/dotnet-8.0.4.tar.gz
/dotnet-8.0.4.tar.gz.sig
/dotnet-8.0.5.tar.gz
/dotnet-8.0.5.tar.gz.sig
/dotnet-8.0.7.tar.gz
/dotnet-8.0.7.tar.gz.sig
/dotnet-8.0.8.tar.gz
/dotnet-8.0.8.tar.gz.sig
/dotnet-8.0.10.tar.gz
/dotnet-8.0.10.tar.gz.sig
/dotnet-8.0.11.tar.gz
/dotnet-8.0.11.tar.gz.sig
/dotnet-8.0.12.tar.gz
/dotnet-8.0.12.tar.gz.sig
/dotnet-8.0.13.tar.gz
/dotnet-8.0.13.tar.gz.sig
/dotnet-8.0.14.tar.gz
/dotnet-8.0.14.tar.gz.sig
/dotnet-8.0.15.tar.gz
/dotnet-8.0.15.tar.gz.sig
/dotnet-8.0.16.tar.gz
/dotnet-8.0.16.tar.gz.sig
/dotnet-8.0.17.tar.gz
/dotnet-8.0.17.tar.gz.sig
/dotnet-8.0.18.tar.gz
/dotnet-8.0.18.tar.gz.sig
/dotnet-8.0.119.tar.gz
/dotnet-8.0.119.tar.gz.sig

140
README.md Normal file
View File

@ -0,0 +1,140 @@
# dotnet8.0
This is the work in progress .NET 8.0 package for Fedora.
Builds for Fedora, CentOS Stream and RHEL are available from
https://copr.fedorainfracloud.org/coprs/g/dotnet-sig/dotnet-preview/
This package is maintained by the Fedora DotNet SIG (Special Interest
Group). You can find out more about the DotNet SIG at:
- https://fedoraproject.org/wiki/SIGs/DotNet
- https://fedoraproject.org/wiki/DotNet
- https://lists.fedoraproject.org/archives/list/dotnet-sig@lists.fedoraproject.org/
Please report any issues [using
bugzilla](https://bugzilla.redhat.com/enter_bug.cgi?product=Fedora&component=dotnet7.0).
# 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
The steps below are for the final package. Please only contribute to this
pre-release version this if you know what you are doing. Original instructions
follow.
## General Changes
1. Fork the repo.
2. Checkout the forked repository.
- `git clone ssh://$USER@pkgs.fedoraproject.org/forks/$USER/rpms/dotnet7.0.git`
- `cd dotnet7.0`
3. Make your changes. Don't forget to add a changelog.
4. Do local builds.
- `fedpkg local`
5. Fix any errors that come up and rebuild until it works locally.
6. Do builds in koji.
- `fedpkg scratch-build --srpm`
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, do a real
build.
- `fedpkg build`
11. For non-rawhide releases, file updates using bodhi to ship the just-built
package out to users.
- https://bodhi.fedoraproject.org/updates/new
OR
- `fedpkg update`
## Updating to an new upstream release
1. Fork the repo.
2. Checkout the forked repository.
- `git clone ssh://$USER@pkgs.fedoraproject.org/forks/$USER/rpms/dotnet7.0.git`
- `cd dotnet7.0`
3. Build the new upstream source tarball. 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.
- `fedpkg 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.
- `fedpkg scratch-build --srpm`
7. Upload the source archive to the Fedora look-aside cache.
- `fedpkg new-sources path-to-generated-dotnet-source-tarball.tar.gz`
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, do a real
build.
- `fedpkg build`
11. For non-rawhide releases, file updates using bodhi to ship the just-built
package out to users.
- https://bodhi.fedoraproject.org/updates/new
OR
- `fedpkg update`
# Testing
This package uses CI tests as defined in `tests/test.yml`. Creating a
pull-request or running a 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/

56
build-arm64-bootstrap-tarball Executable file
View File

@ -0,0 +1,56 @@
#!/bin/bash
# Usage:
# ./build-arm64-bootstrap-tarball <bootstrap-dir> [SDK-version]
set -euo pipefail
set -x
function parse-nuget-name-version-from-file() {
package=$1
filename=${package##*/}
version_suffix=$(echo "$filename" | grep -Eo '\.[[:digit:]]+.*\.nupkg')
version=$(echo "$version_suffix" | sed -Ee 's/^\.//' -e 's/\.nupkg$//')
name=${filename:0:(${#filename}-${#version_suffix})}
echo "$name" "$version"
}
bootstrap_dir=$(readlink -f "$1")
sdk_version=${2:-$(jq -r '.tools.dotnet' "$bootstrap_dir"/global.json)}
mkdir -p "dotnet-prebuilts-${sdk_version}-arm64"
pushd "dotnet-prebuilts-${sdk_version}-arm64"
# Binaries can be at one of several different URLs:
# GA releases:
if ! wget "https://dotnetcli.azureedge.net/dotnet/Sdk/${sdk_version}/dotnet-sdk-${sdk_version}-linux-arm64.tar.gz" ; then
# Preview releases:
wget "https://dotnetbuilds.azureedge.net/public/Sdk/${sdk_version}/dotnet-sdk-${sdk_version}-linux-arm64.tar.gz"
fi
for archive in "$bootstrap_dir"/prereqs/packages/archive/*.tar.gz; do
mapfile -t linux_x64_packages < <(tar tf "$archive" | grep linux-x64)
for package in "${linux_x64_packages[@]}"; do
if [[ "$package" = *'.Intermediate.'* ]]; then
continue;
fi
read -r name version < <(parse-nuget-name-version-from-file "$package")
arm_name=${name/linux-x64/linux-arm64}
# https://gist.github.com/omajid/c04b6025de49d0b7b18ab4a7e789484e
nappo download --verbose "$arm_name" "$version"
done
done
popd
tar czf "dotnet-prebuilts-${sdk_version}-arm64.tar.gz" "dotnet-prebuilts-${sdk_version}-arm64"

186
build-dotnet-tarball Executable file
View File

@ -0,0 +1,186 @@
#!/bin/bash
# Usage:
# build-dotnet-tarball [--bootstrap] <tag-from-dotnet>
#
# Creates a source archive 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 [--bootstrap] <tag-from-dotnet>"
echo
echo "Creates a source archive from a tag at https://github.com/dotnet/dotnet"
echo ""
echo " --bootstrap build a source tarball usable for bootstrapping .NET"
}
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
--bootstrap)
check_bootstrap_environment
build_bootstrap=true
shift
;;
-h|--help)
print_usage
exit 0
;;
*)
positional_args+=("$1")
shift
;;
esac
done
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}"
tarball_suffix=.tar.gz
if [[ ${build_bootstrap} == true ]]; then
unmodified_tarball_name="${unmodified_tarball_name}-${arch}-bootstrap"
tarball_name="${tarball_name}-${arch}-bootstrap"
tarball_suffix=.tar.xz
fi
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
wget https://github.com/dotnet/dotnet/archive/refs/tags/${tag}.tar.gz
mv "${tag}.tar.gz" "${unmodified_tarball_name}.tar.gz"
#temp_dir=$(mktemp -d -p "$(pwd)" -t temp-build-dotnet-tarball-XXXXXXXXXX)
#pushd "${temp_dir}"
#mkdir dotnet
#pushd dotnet
#git init
#git remote add origin https://github.com/dotnet/dotnet
#git fetch --depth 1 origin "${tag}"
#git checkout FETCH_HEAD
#git submodule update --init --recursive
#clean_dotnet_cache
#./eng/pack-sources.sh -o "$(readlink -f ../../"${unmodified_tarball_name}.tar.gz")"
#popd
#popd
#rm -rf "${temp_dir}"
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}"
if [[ ${build_bootstrap} == true ]]; then
./prep.sh --bootstrap
else
find . -type f -iname '*.tar.gz' -delete
rm -rf .dotnet
fi
# 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.
popd
# if [[ ${build_bootstrap} == true ]]; then
# tar -I 'xz -9 -T 0' -cf "${tarball_name}${tarball_suffix}" "${tarball_name}"
# else
# tar -czf "${tarball_name}${tarball_suffix}" "${tarball_name}"
# fi
tar -czf "${tarball_name}${tarball_suffix}" "${tarball_name}"

13
copr-build Executable file
View File

@ -0,0 +1,13 @@
#!/bin/bash
set -euo pipefail
set -x
fedpkg --release f37 srpm 2>&1 | tee fedpkg.output
srpm_name=$(grep 'Wrote: ' fedpkg.output | cut -d' ' -f 2)
ls -alh "${srpm_name}"
copr-cli --debug build @dotnet-sig/dotnet-preview "${srpm_name}" --timeout 36000

View File

@ -1,17 +0,0 @@
-----BEGIN PGP SIGNATURE-----
Version: BSN Pgp v1.0.0.0
iQIcBAABCAAGBQJnmXzUAAoJEP2/U8JNtIcurM0QAK53yZwzwjwqZzH6wzy7CaYI
9rwd8r76ApWttkRv6nntYP/ZWyXVbNntAbyjNfEYRhV+3+9pPFx7iMkE3UdbNIo5
D+g21V5TBuj9nKGFW7AIJEGb2hMaZFPOZY1K5bnpx3Kfce95eiAGWFECubkEITZU
+mrIa2HknJOTS1h2PdyuJEoxqKUvWSha6fref2op2WXz+OcvVHiV+rkYtDxEq0zM
iGPFU2XfJBSkMSietPCT6Ea+H3mp1fqIPzhkkYeXi5rk6VvRnzFKosR9qdMkjAYx
/+hSFQAaPzb25A96VJf6/fcrBF4DTbpOFcysFY55vysS+AyHsQsJ+RJzqQJ76O39
1yZ+Lld/nkDzzlhQVQsA64rsufOFwaWvTqU39J3zigj259ShY2IQGSRdVfye0slj
KnjX5WJyvebKWPxsFNKEeUFaQRbCf5XSshM01guZRbtMRqKRhAoB2FTI7FuUI11N
u1YbTmoFqxb0ek4Npoifn/IOkihB3Z4gFzGQ0SGwkSxLvMmnSe0JIfBQRi8uxecV
qabxuPTA4gjymgIgiQkAlFv5pWz1lu/D2C/uJQaQ4n6yDn2UdPl7PWz2+2c5LYe3
qvTVTaZBWBdjw6EKw+a1GNAIgShhtA4JSQhye1CqLG36CJI/3UzXdXOWVdUySjLa
dTvEx337QFHRjcdRZfZ7
=gQzV
-----END PGP SIGNATURE-----

35
dotnet7.0.rpmlintrc Normal file
View File

@ -0,0 +1,35 @@
# Tarball is generated, no upstream URL
addFilter("W:.*invalid-url Source0: dotnet-.*tar.gz")
# macOS is the correct name
addFilter("W: spelling-error %description -l en_US macOS ->.*")
# The name of the nuget package includes NETCore
addFilter("W: spelling-error .* NETCore -> Net Core.*")
# Upstream really has no README or documentation files. They suggest using online resources.
addFilter("W: no-documentation")
# This is a script that we run; it's expected to have execute permissions
addFilter("W: strange-permission check-debug-symbols.py")
# libicu is a required dependency, but it's used via a dlopen()
addFilter("E: explicit-lib-dependency libicu")
# There's no devel package for us to place .h files
addFilter("W: devel-file-in-non-devel-package /usr/lib64/dotnet/.*\.h")
addFilter("W: devel-file-in-non-devel-package /usr/lib64/dotnet/.*\.a")
# These paths are non-standard, so we need $ORIGIN to find these libraries
addFilter("E: binary-or-shlib-defines-rpath /usr/lib64/dotnet/.*\['\$ORIGIN/netcoredeps'\]")
addFilter("E: binary-or-shlib-defines-rpath /usr/lib64/dotnet/.*\['\$ORIGIN'\]")
# We put dll files in /usr/lib/dotnet, but rpmlint somehow doesn't see it as a binary?
addFilter("W: only-non-binary-in-usr-lib")
# We use a number of zero-length files, including _._
addFilter("E: zero-length /usr/lib64/dotnet/.*/_\._")
# Upstream uses hidden files, even though we ask them not to, as much as possible
addFilter("W: hidden-file-or-dir /usr/lib64/dotnet/.*/\.version")
addFilter("W: hidden-file-or-dir /usr/lib64/dotnet/.*/\.toolsetversion")

View File

@ -12,16 +12,15 @@
# dotnet-host and netstandard-targeting-pack-2.1
%global is_latest_dotnet 0
%global host_version 8.0.13
%global runtime_version 8.0.13
%global host_version 8.0.19
%global runtime_version 8.0.19
%global aspnetcore_runtime_version %{runtime_version}
%global sdk_version 8.0.113
%global sdk_version 8.0.119
%global sdk_feature_band_version %(echo %{sdk_version} | cut -d '-' -f 1 | sed -e 's|[[:digit:]][[:digit:]]$|00|')
%global templates_version %{runtime_version}
#%%global templates_version %%(echo %%{runtime_version} | awk 'BEGIN { FS="."; OFS="." } {print $1, $2, $3+1 }')
# upstream can produce releases with a different tag than the SDK or Runtime version
%global upstream_tag v%{runtime_version}
%global upstream_tag v%{sdk_version}
%global upstream_tag_without_v %(echo %{upstream_tag} | sed -e 's|^v||')
%global host_rpm_version %{host_version}
@ -78,7 +77,7 @@ Source2: dotnet-prebuilts-%{bootstrap_sdk_version}-ppc64le.tar.gz
Source3: dotnet-prebuilts-%{bootstrap_sdk_version}-s390x.tar.gz
%else
Source0: https://github.com/dotnet/dotnet/archive/refs/tags/%{upstream_tag}.tar.gz#/dotnet-%{upstream_tag_without_v}.tar.gz
Source1: https://github.com/dotnet/dotnet/releases/download/%{upstream_tag}/dotnet-%{upstream_tag_without_v}.tar.gz.sig
Source1: https://github.com/dotnet/dotnet/archive/refs/tags/%{upstream_tag}.tar.gz#/dotnet-%{upstream_tag_without_v}.tar.gz.sig
Source2: https://dotnet.microsoft.com/download/dotnet/release-key-2023.asc
%endif
Source5: https://github.com/dotnet/dotnet/releases/download/%{upstream_tag}/release.json
@ -113,7 +112,9 @@ BuildRequires: dotnet-sdk-%{dotnetver}-source-built-artifacts
%endif
BuildRequires: findutils
BuildRequires: git
%if 0%{?fedora} || 0%{?rhel} > 7
BuildRequires: glibc-langpack-en
%endif
BuildRequires: gnupg2
BuildRequires: hostname
BuildRequires: krb5-devel
@ -409,10 +410,7 @@ These are not meant for general use.
%prep
%if %{without bootstrap}
# check gpg signatures only for non-bootstrap builds; bootstrap "sources" are hand-crafted
%{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}'
%endif
release_json_tag=$(grep tag %{SOURCE5} | cut -d: -f2 | sed -E 's/[," ]*//g')
if [[ ${release_json_tag} != %{upstream_tag} ]]; then
@ -478,8 +476,14 @@ popd
%endif
# tar -x --strip-components=1 -f %%{SOURCE10}
# tar -x --strip-components=1 -f %%{SOURCE11}
%autopatch -p1 -M 999
# Fix bad hardcoded path in build
sed -i 's|/usr/share/dotnet|%{_libdir}/dotnet|' src/runtime/src/native/corehost/hostmisc/pal.unix.cpp
%if ! %{use_bundled_libunwind}
sed -i -E 's|( /p:BuildDebPackage=false)|\1 --cmakeargs -DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE|' src/runtime/eng/SourceBuild.props
%endif
@ -526,15 +530,6 @@ CXXFLAGS=$(echo $CXXFLAGS | sed -e 's/ -march=z13//')
CXXFLAGS=$(echo $CXXFLAGS | sed -e 's/ -mtune=z14//')
%endif
%if 0%{?rhel} >= 10
# Workaround for https://github.com/dotnet/runtime/issues/109611
# FIXME: Remove this, and replace with upstream fix
CFLAGS=$(echo $CFLAGS | sed -e 's/-march=x86-64-v3 //')
CXXFLAGS=$(echo $CXXFLAGS | sed -e 's/-march=x86-64-v3 //')
LDFLAGS=$(echo $LDFLAGS | sed -e 's/-march=x86-64-v3 //')
%endif
export EXTRA_CFLAGS="$CFLAGS"
export EXTRA_CXXFLAGS="$CXXFLAGS"
export EXTRA_LDFLAGS="$LDFLAGS"
@ -544,7 +539,36 @@ export EXTRA_LDFLAGS="$LDFLAGS"
# suggested compile-time change doesn't work, unfortunately.
export COMPlus_LTTng=0
VERBOSE=1 ./build.sh \
%ifarch ppc64le s390x
max_attempts=3
%else
max_attempts=1
%endif
function retry_until_success {
local exit_code=1
local tries=$1
shift
set +e
while [[ $exit_code != 0 ]] && [[ $tries != 0 ]]; do
(( tries = tries - 1 ))
"$@"
exit_code=$?
done
set -e
return $exit_code
}
cat >dotnet-rpm-build.sh <<EOF
#!/bin/bash
set -euo pipefail
set -x
find -depth -name 'artifacts' -type d -print -exec rm -rf {} \;
./build.sh \
%if %{without bootstrap}
--with-sdk previously-built-dotnet \
%endif
@ -556,7 +580,14 @@ VERBOSE=1 ./build.sh \
/p:MinimalConsoleLogOutput=false \
/p:ContinueOnPrebuiltBaselineError=true \
/v:n \
/p:LogVerbosity=n \
/p:LogVerbosity=n
EOF
chmod +x dotnet-rpm-build.sh
VERBOSE=1 retry_until_success $max_attempts \
timeout 5h \
./dotnet-rpm-build.sh
sed -e 's|[@]LIBDIR[@]|%{_libdir}|g' %{SOURCE21} > dotnet.sh
@ -569,7 +600,7 @@ mkdir -p built-sdk
tar xf artifacts/%{runtime_arch}/Release/dotnet-sdk-%{sdk_version}-%{runtime_id}.tar.gz -C built-sdk/
# Convert hardlinks to actual copies. This takes up quite a bit of
# extra disk space, but works around issues in post-rpmbuild tools
# extra disk space, but works around RHEL issues in post-rpmbuild tools
# when they encounter hardlinks.
cp -r --preserve=mode,ownership,timestamps built-sdk/* %{buildroot}%{_libdir}/dotnet/
ls %{buildroot}%{_libdir}/dotnet
@ -668,7 +699,6 @@ rm %{buildroot}%{_libdir}/dotnet/dotnet
rm -rf %{buildroot}%{_libdir}/dotnet/packs/NETStandard.Library.Ref/2.1.0
%endif
%check
%if 0%{?fedora} > 35
# lttng in Fedora > 35 is incompatible with .NET
@ -745,69 +775,125 @@ export COMPlus_LTTng=0
%changelog
* Mon Aug 11 2025 Omair Majid <omajid@redhat.com> - 8.0.119-2
- Update to .NET SDK 8.0.119 and Runtime 8.0.19
- Resolves: RHEL-106723
* Tue Jul 08 2025 Omair Majid <omajid@redhat.com> - 8.0.118-2
- Update to .NET SDK 8.0.118 and Runtime 8.0.18
- Resolves: RHEL-100592
* Wed Jun 11 2025 Omair Majid <omajid@redhat.com> - 8.0.117-2
- Update to .NET SDK 8.0.117 and Runtime 8.0.17
- Resolves: RHEL-94417
* Tue May 13 2025 Omair Majid <omajid@redhat.com> - 8.0.116-2
- Update to .NET SDK 8.0.116 and Runtime 8.0.16
- Resolves: RHEL-89445
* Wed Apr 09 2025 Omair Majid <omajid@redhat.com> - 8.0.115-2
- Update to .NET SDK 8.0.115 and Runtime 8.0.15
- Resolves: RHEL-85276
* Tue Mar 11 2025 Omair Majid <omajid@redhat.com> - 8.0.114-2
- Update to .NET SDK 8.0.114 and Runtime 8.0.14
- Resolves: RHEL-81641
* Mon Feb 17 2025 Omair Majid <omajid@redhat.com> - 8.0.113-2
- Update to .NET SDK 8.0.113 and Runtime 8.0.13
- Resolves: RHEL-76900
- Resolves: RHEL-76899
* Thu Jan 16 2025 Omair Majid <omajid@redhat.com> - 8.0.112-2
- Update to .NET SDK 8.0.112 and Runtime 8.0.12
- Resolves: RHEL-71553
- Resolves: RHEL-71555
* Tue Oct 29 2024 Troy Dawson <tdawson@redhat.com> - 8.0.110-4
- Bump release for October 2024 mass rebuild:
Resolves: RHEL-64018
* Thu Nov 14 2024 Omair Majid <omajid@redhat.com> - 8.0.111-2
- Update to .NET SDK 8.0.111 and Runtime 8.0.11
- Resolves: RHEL-65367
* Mon Oct 21 2024 Omair Majid <omajid@redhat.com> - 8.0.110-3
* Fri Oct 18 2024 Omair Majid <omajid@redhat.com> - 8.0.110-3
- Disable packages provided by another .NET version
- Related: RHEL-60795
- Related: RHEL-60801
* Wed Oct 16 2024 Omair Majid <omajid@redhat.com> - 8.0.110-2
* Tue Oct 15 2024 Omair Majid <omajid@redhat.com> - 8.0.110-2
- Update to .NET SDK 8.0.110 and Runtime 8.0.10
- Resolves: RHEL-60795
- Resolves: RHEL-60801
* Mon Aug 19 2024 Omair Majid <omajid@redhat.com> - 8.0.108-2
* Wed Aug 14 2024 Omair Majid <omajid@redhat.com> - 8.0.108-2
- Update to .NET SDK 8.0.108 and Runtime 8.0.8
- Resolves: RHEL-52434
- Resolves: RHEL-52387
* Wed Aug 07 2024 Omair Majid <omajid@redhat.com> - 8.0.107-5
* Wed Jul 10 2024 Omair Majid <omajid@redhat.com> - 8.0.107-3
- Fix ownership of some missed directories
- Resolves: RHEL-47079
* Tue Jul 09 2024 Omair Majid <omajid@redhat.com> - 8.0.107-2
- Update to .NET SDK 8.0.107 and Runtime 8.0.7
- Related: RHEL-25950
- Related: RHEL-45214
- Resolves: RHEL-45323
* Wed Jul 31 2024 Omair Majid <omajid@redhat.com> - 8.0.101-5
- Fix build
- Resolves: RHEL-25950
- Resolves: RHEL-45214
* Wed May 15 2024 Omair Majid <omajid@redhat.com> - 8.0.105-2
- Update to .NET SDK 8.0.105 and Runtime 8.0.5
- Resolves: RHEL-35315
* Mon Jun 24 2024 Troy Dawson <tdawson@redhat.com> - 8.0.101-5
- Bump release for June 2024 mass rebuild
* Tue Apr 09 2024 Omair Majid <omajid@redhat.com> - 8.0.104-2
- Update to .NET SDK 8.0.104 and Runtime 8.0.4
- Resolves: RHEL-31208
* Fri Jan 26 2024 Omair Majid <omajid@redhat.com> - 8.0.101-4
- Rebuild to add new -dbg subpackages
* Sun Mar 31 2024 Tom Deseyn <tom.deseyn@gmail.com> - 8.0.103-3
- We disable checking the signature of the last certificate in a chain if the certificate is supposedly self-signed.
A side effect of not checking the self-signature of such a certificate is that disabled or unsupported message
digests used for the signature are not treated as fatal errors.
- Resolves: RHEL-28344
* Wed Jan 24 2024 Fedora Release Engineering <releng@fedoraproject.org> - 8.0.101-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Tue Mar 19 2024 Omair Majid <omajid@redhat.com> - 8.0.103-2
- Update to .NET SDK 8.0.103 and Runtime 8.0.3
- Resolves: RHEL-27553
* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 8.0.101-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Tue Feb 20 2024 Tom Deseyn <tom.deseyn@gmail.com> - 8.0.102-3
- Backport MSBuild locale fix
- Resolves: RHEL-23936
* Tue Jan 09 2024 Omair Majid <omajid@redhat.com> - 8.0.101-1
* Wed Feb 14 2024 Omair Majid <omajid@redhat.com> - 8.0.102-2
- Update to .NET SDK 8.0.102 and Runtime 8.0.2
- Resolves: RHEL-23804
* Mon Jan 29 2024 Omair Majid <omajid@redhat.com> - 8.0.101-3
- Add -dbg subpackages for symbol files
- Resolves: RHEL-23070
* Mon Jan 15 2024 Omair Majid <omajid@redhat.com> - 8.0.101-2
- Update to .NET SDK 8.0.101 and Runtime 8.0.1
- Resolves: RHEL-19803
* Tue Dec 12 2023 Omair Majid <omajid@redhat.com> - 8.0.100-2
- Enable gpg signature verification
* Sat Dec 09 2023 Omair Majid <omajid@redhat.com> - 8.0.100-1
* Wed Nov 15 2023 Omair Majid <omajid@redhat.com> - 8.0.100-3
- Update to .NET SDK 8.0.100 and Runtime 8.0.0
- Resolves: RHEL-15352
* Fri Dec 08 2023 Omair Majid <omajid@redhat.com> - 8.0.100~rc.2-0.1
- Update to .NET SDK 8.0.100 RC 2 and Runtime 8.0.0 RC 2
* Mon Oct 16 2023 Omair Majid <omajid@redhat.com> - 8.0.100~rc.2-0.1
- Update to .NET 8 RC 2
- Resolves: RHEL-13790
* Fri Dec 08 2023 Omair Majid <omajid@redhat.com> - 8.0.100~rc.1-0.2
- Add various fixes from CentOS Stream 9
* Thu Sep 28 2023 Omair Majid <omajid@redhat.com> - 8.0.100~rc.1-0.4
- Disable bootstrap
- Related: RHEL-4074
* Wed Sep 27 2023 Omair Majid <omajid@redhat.com> - 8.0.100~rc.1-0.3
- Add backported patches for additional s390x issues
- Related: RHEL-4074
* Mon Sep 18 2023 Omair Majid <omajid@redhat.com> - 8.0.100~rc.1-0.2
- Add patches to fix mono and arm64 issues
- Include libmono-*.a files in the SDK
- Fix CI configuration
- Related: RHEL-4074
* Fri Sep 15 2023 Omair Majid <omajid@redhat.com> - 8.0.100~rc.1-0.1
- Update to .NET SDK 8.0.100 RC 1 and Runtime 8.0.0 RC 1
- Resolves: RHEL-4074
* Tue Aug 22 2023 Omair Majid <omajid@redhat.com> - 8.0.100~preview.7-0.2
- Add patch to work around TypeLoadException in Mono
- Related: RHBZ#2224124
* Fri Aug 11 2023 Omair Majid <omajid@redhat.com> - 8.0.100~preview.7-0.1
- Update to .NET SDK 8.0.100 Preview 7 and Runtime 8.0.0 Preview 7

23
gating.yaml Normal file
View File

@ -0,0 +1,23 @@
--- !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}

View File

@ -1,10 +1,10 @@
{
"release": "8.0.13",
"release": "8.0.19",
"channel": "8.0",
"tag": "v8.0.13",
"sdkVersion": "8.0.113",
"runtimeVersion": "8.0.13",
"aspNetCoreVersion": "8.0.13",
"tag": "v8.0.119",
"sdkVersion": "8.0.119",
"runtimeVersion": "8.0.19",
"aspNetCoreVersion": "8.0.19",
"sourceRepository": "https://github.com/dotnet/dotnet",
"sourceVersion": "a970a1cfdd960e99b4b8b9bdc3099b943f70adde"
"sourceVersion": "8495bde0fe309967f88de93e358d6b6166ed47f8"
}

20
rpminspect.yaml Normal file
View File

@ -0,0 +1,20 @@
---
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

View File

@ -1 +1,2 @@
SHA512 (dotnet-8.0.13.tar.gz) = 2b6a94dc20003803c53da6589bf633f0cea776dcaee8e616c41e2047deff9b820339d9fba37087ff69e7eee0ba41a2231321d8f518885ec46429b69f5fe65e9f
SHA512 (dotnet-8.0.119.tar.gz) = 1082cbdb27ec20432146e98601cf4eea6915f9a97c08c546354407f9090992d16523e5040c108e435c6d2d1540d0a8528cf9e6eed5f342fe8eeb606993476d34
SHA512 (dotnet-8.0.119.tar.gz.sig) = a0ac129d595618336fb28bcf873e8ca91c0d1b0c999f36b6f0ebfb18c22358fbb7ec7b3f23930aaa482ba0dd430294e2837d2787e925cbaae96d47eb037ee635

45
tests/ci.fmf Normal file
View File

@ -0,0 +1,45 @@
summary: Basic smoke test
provision:
disk: 20
memory: 5120
prepare:
how: install
package:
- aspnetcore-runtime-8.0
- babeltrace
- bash-completion
- bc
- binutils
- dotnet-runtime-8.0
- dotnet-sdk-8.0
- expect
- file
- findutils
- gcc-c++
- git
- jq
- libstdc++-devel
- lldb
- lttng-ust
- 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

139
update-release Executable file
View File

@ -0,0 +1,139 @@
#!/bin/bash
# Usage:
# ./update-release sdk-version runtime-version [--bug bug-id] [--tarball tarball-name] [--larger-rpm-release]
set -euo pipefail
IFS=$'\n\t'
print_usage() {
echo " Usage:"
echo " ./update-release sdk-version 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]}"
sdk_version=${positional_args[0]:-}
if [[ -z ${sdk_version} ]]; then
echo "error: missing sdk version"
exit 1
fi
runtime_version=${positional_args[1]:-}
if [[ -z ${runtime_version} ]]; then
echo "error: missing runtime version"
exit 1
fi
host_version="$runtime_version"
tag=v${sdk_version}
set -x
sed -i -E "s|^%global host_version [[:digit:]]\.[[:digit:]]\.[[:digit:]]+|%global host_version ${host_version}|" "$spec_file"
sed -i -E "s|^%global runtime_version [[:digit:]]\.[[:digit:]]\.[[:digit:]]+|%global runtime_version ${runtime_version}|" "$spec_file"
sed -i -E "s|^%global sdk_version [[:digit:]]\.[[:digit:]]\.[[:digit:]][[:digit:]][[:digit:]]|%global sdk_version ${sdk_version}|" "$spec_file"
if [[ "$runtime_version" == "6.0"* ]] || [[ "$runtime_version" == "7.0"* ]] ; then
if [[ -f "dotnet-${tag}.tar.gz" ]]; then
echo "dotnet-${tag}.tar.gz already exists, not rebuilding tarball"
else
if [[ -f "dotnet-${tag}-original.tar.gz" ]]; then
echo "dotnet-${tag}-original.tar.gz alredy exists, not rebuilding tarball"
else
if [[ -n "${user_provided_tarball_name}" ]]; then
cp -a "$user_provided_tarball_name" "dotnet-${tag}-original.tar.gz"
elif [[ -f "dotnet-${sdk_version}-SDK.tar.gz" ]]; then
cp -a "dotnet-${sdk_version}-SDK.tar.gz" "dotnet-${tag}-original.tar.gz"
elif [[ -f "dotnet-${sdk_version}.tar.gz" ]]; then
cp -a "dotnet-${sdk_version}.tar.gz" "dotnet-${tag}-original.tar.gz"
elif [[ -f "dotnet-${runtime_version}.tar.gz" ]]; then
cp -a "dotnet-${runtime_version}.tar.gz" "dotnet-${tag}-original.tar.gz"
fi
fi
./build-dotnet-tarball "${tag}"
fi
else
if [[ -f "dotnet-${tag}.tar.gz" ]]; then
echo "dotnet-${tag}.tar.gz already exists, not rebuilding tarball"
elif [[ -n ${user_provided_tarball_name} ]]; then
tag_without_v=${tag#v}
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
cp -a "${release_json}" release.json
else
rm -f release.json
spectool -g "$spec_file"
fi
fi
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"
echo "Done updating sources. Commit message in ./git-commit-message"