Compare commits

..

17 Commits
c9-beta ... c9s

Author SHA1 Message Date
Omair Majid
b563a624a0 Disable packages provided by another .NET version
Disable dotnet-host and netstandard-targeting-pack-2.1 subpackages which
duplicate the packages provided by the dotnet9.0 SRPM. Providing these
duplicates packages causes issues in composing and dependency-testing.

Related: RHEL-60801
2024-10-18 21:42:50 -04:00
Omair Majid
9f8b171ce5 Update to .NET SDK 8.0.110 and Runtime 8.0.10
Resolves: RHEL-60801
2024-10-16 00:53:08 -04:00
Omair Majid
1e0234e937 Update to .NET SDK 8.0.108 and Runtime 8.0.8
Resolves: RHEL-52387
2024-08-16 10:18:13 -04:00
Omair Majid
34f1500f81 Fix ownership of some missed directories
Resolves: RHEL-47079
2024-07-10 18:23:52 -04:00
Omair Majid
950e7bee1a Update to .NET SDK 8.0.107 and Runtime 8.0.7
Resolves: RHEL-45323
2024-07-09 19:02:39 -04:00
Omair Majid
a00d1130f7 Update to .NET SDK 8.0.105 and Runtime 8.0.5
Resolves: RHEL-35315
2024-05-16 13:31:26 -04:00
Omair Majid
d4aec77a53 Update to .NET SDK 8.0.104 and Runtime 8.0.4
Resolves: RHEL-31208
2024-04-11 12:38:34 -04:00
Tom Deseyn
33fbcb0f34 Allow certificate validation with SHA-1 signatures.
Resolves: RHEL-28344
2024-03-31 18:21:05 -04:00
Omair Majid
2c5539f849 Update to .NET SDK 8.0.103 and Runtime 8.0.3
Resolves: RHEL-27553
2024-03-20 14:08:27 -04:00
Tom Deseyn
16aeabc199 Backport MSBuild locale fix
Resolves: RHEL-23936
2024-02-20 12:23:20 -05:00
Omair Majid
65654781ed Update to .NET SDK 8.0.102 and Runtime 8.0.2
Resolves: RHEL-23804
2024-02-15 17:03:59 -05:00
Omair Majid
cf0d0b5ff1 Add -dbg subpackages for symbol files
Resolves: RHEL-23070
2024-01-29 12:32:17 -05:00
Omair Majid
48aaf87c4e Update to .NET SDK 8.0.101 and Runtime 8.0.1
Resolves: RHEL-19803
2024-01-15 13:57:48 -05:00
Omair Majid
d272f4a0a5 Update to .NET SDK 8.0.100 and Runtime 8.0.0
Resolves: RHEL-15352
2023-12-06 17:57:23 -05:00
Omair Majid
e1588ed8b5 Update to .NET 8 RC 2
Resolves: RHEL-13790
2023-10-25 22:47:26 -04:00
Omair Majid
922ed5aba1 Disable bootstrap
Related: RHEL-4074
2023-09-28 11:22:56 -04:00
Omair Majid
9db4f80a3f Add backported patches for additional s390x issues
Related: RHEL-4074
2023-09-27 11:09:44 -04:00
25 changed files with 763 additions and 33 deletions

View File

@ -1 +0,0 @@
dcef67b90dd60f9968efb9b68507427f257b815d SOURCES/dotnet-8.0.8.tar.gz

1
.fmf/version Normal file
View File

@ -0,0 +1 @@
1

53
.gitignore vendored
View File

@ -1 +1,52 @@
SOURCES/dotnet-8.0.8.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

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/

View File

@ -1,17 +0,0 @@
-----BEGIN PGP SIGNATURE-----
Version: BSN Pgp v1.0.0.0
iQIcBAABCAAGBQJmqPvcAAoJEP2/U8JNtIcuCjUP/1JCyxHFjLoVH296sDflBrJ/
NA/Y4x0YR/NVLchBk//G7/RzHab7x0EU4fRKkEecKQxPyqm4SH+zfEf9sg5txbES
F1Fx5j0e89BzivSIJWgr8nzuQv0tQGrraIAsqPC1wrIUvDSuLXW9URCwitOasRS4
/9FKOjISE1L2pj0+QWXzcl+QJN8A0MvtnEZfh0BbvzwldWgyi72A02t2gp6ooXMf
FOfgdd20ufPENaB+TUc2C8eU9IaSYxwIPNy8kRN/iVRc8eYqgKvSDxUgb9aJG+Do
Bc/HoqRVG3bvi3LZt7nwyvVeQfWYo1HB9/aEqyyqmsqsg9z83UsdAuQcidV45ae+
hen0hxR3BpJyOpT/s/PVH7fdxqVWvszxBTW/ICm5HKMO7/w7CxTLVdPjyj9mXzew
Sbo0xvVvSML72m33X5vFxMD3/zlYYUHTtad6D2rE6vvk5hexG3orbv5ybkUmUWiM
EtMta++yXJwRq2Ac8ucjiLr+EARAfDbdXT6C6aPJpbF4IGQe1p/dwpXeKrDLGSNS
G7d780b44hKt8ciaFLlbhe9qCc6DlsQtV3AryqH/vlm81+oM6y8vJMAHknyZ6WL/
9AdSsVVa4BrNOsGeVLzNSTtqQiRW9KkK2XPI1dslxfy6KrKIrVYCFuIYsuJ8Ibmp
QuIzm0BW8IGU3ZZSUAyZ
=A/0i
-----END PGP SIGNATURE-----

View File

@ -1,10 +0,0 @@
{
"release": "8.0.8",
"channel": "8.0",
"tag": "v8.0.8",
"sdkVersion": "8.0.108",
"runtimeVersion": "8.0.8",
"aspNetCoreVersion": "8.0.8",
"sourceRepository": "https://github.com/dotnet/dotnet",
"sourceVersion": "e78e8a64f20e61e1fea4f24afca66ad1dc56285f"
}

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

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

@ -8,10 +8,14 @@
%global dotnetver 8.0
%global host_version 8.0.8
%global runtime_version 8.0.8
# Only the package for the latest dotnet version should provide RPMs like
# dotnet-host and netstandard-targeting-pack-2.1
%global is_latest_dotnet 0
%global host_version 8.0.10
%global runtime_version 8.0.10
%global aspnetcore_runtime_version %{runtime_version}
%global sdk_version 8.0.108
%global sdk_version 8.0.110
%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 }')
@ -53,7 +57,7 @@
Name: dotnet%{dotnetver}
Version: %{sdk_rpm_version}
Release: 2%{?dist}
Release: 3%{?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
@ -388,7 +392,9 @@ applications using the .NET SDK.
%dotnet_targeting_pack dotnet-apphost-pack-%{dotnetver} %{runtime_rpm_version} Microsoft.NETCore.App %{dotnetver} Microsoft.NETCore.App.Host.%{runtime_id}
%dotnet_targeting_pack dotnet-targeting-pack-%{dotnetver} %{runtime_rpm_version} Microsoft.NETCore.App %{dotnetver} Microsoft.NETCore.App.Ref
%dotnet_targeting_pack aspnetcore-targeting-pack-%{dotnetver} %{aspnetcore_runtime_rpm_version} Microsoft.AspNetCore.App %{dotnetver} Microsoft.AspNetCore.App.Ref
%if %{is_latest_dotnet}
%dotnet_targeting_pack netstandard-targeting-pack-2.1 %{sdk_rpm_version} NETStandard.Library 2.1 NETStandard.Library.Ref
%endif
%package -n dotnet-sdk-%{dotnetver}-source-built-artifacts
@ -594,6 +600,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/
@ -618,6 +625,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/%{runtime_arch}/Release/Private.SourceBuilt.Artifacts.*.tar.gz %{buildroot}/%{_libdir}/dotnet/source-built-artifacts/
@ -641,6 +649,19 @@ 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
# Provided by netstandard-targeting-pack-2.1 from another SRPM
rm -rf %{buildroot}%{_libdir}/dotnet/packs/NETStandard.Library.Ref/2.1.0
%endif
%check
%if 0%{?fedora} > 35
@ -648,8 +669,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
%if ( 0%{?fedora} && 0%{?fedora} < 38 ) || ( 0%{?rhel} && 0%{?rhel} < 9 )
@ -657,6 +680,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
@ -672,6 +696,7 @@ export COMPlus_LTTng=0
%dir %{_datadir}/bash-completion
%dir %{_datadir}/bash-completion/completions
%{_datadir}/bash-completion/completions/dotnet
%endif
%files -n dotnet-hostfxr-%{dotnetver}
%dir %{_libdir}/dotnet/host/fxr
@ -714,6 +739,14 @@ export COMPlus_LTTng=0
%changelog
* Fri Oct 18 2024 Omair Majid <omajid@redhat.com> - 8.0.110-3
- Disable packages provided by another .NET version
- Related: RHEL-60801
* 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-60801
* 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-52387

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}

10
release.json Normal file
View File

@ -0,0 +1,10 @@
{
"release": "8.0.10",
"channel": "8.0",
"tag": "v8.0.10",
"sdkVersion": "8.0.110",
"runtimeVersion": "8.0.10",
"aspNetCoreVersion": "8.0.10",
"sourceRepository": "https://github.com/dotnet/dotnet",
"sourceVersion": "8922fe64a1903ed4e35e24568efb056b3e0fad43"
}

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

2
sources Normal file
View File

@ -0,0 +1,2 @@
SHA512 (dotnet-8.0.10.tar.gz) = 5bb660d4bf750392d4022ceb02a7f76a04a8f789c9fbbde329019bc3e097fd7296984b52d29dfc027d31b7b4defdf3807f10e37a9696f8f0026c77cea6ad0d18
SHA512 (dotnet-8.0.10.tar.gz.sig) = 3c4ea982659f00d84528ac26493712d9f786d588797649bb4f551d8e5f7a0aca51a6e27dbe71b1979eeb3307acbac7306da83c14782bb944dd4510ea7761f8d8

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

143
update-release Executable file
View File

@ -0,0 +1,143 @@
#!/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"
if [[ "$runtime_version" == "6.0"* ]] || [[ "$runtime_version" == "7.0"* ]] ; then
tag=v${sdk_version}
else
tag=v${runtime_version}
fi
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"