Compare commits

..

9 Commits

Author SHA1 Message Date
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
26 changed files with 809 additions and 137 deletions

View File

@ -1 +0,0 @@
7eaca2a4b3b574a0bff498411bf8ef256da66875 SOURCES/dotnet-8.0.4.tar.gz

1
.fmf/version Normal file
View File

@ -0,0 +1 @@
1

47
.gitignore vendored
View File

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

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
iQIcBAABCAAGBQJmBFuCAAoJEP2/U8JNtIcu+McP/RkPiiLwEr0k4xGd6mIsgvco
hHL6I3f/1f4/dSYkyr1edqeCynrwU6hYfMyLm71XrwkYHxQCbDvXpo4FekW/kfTR
LrAhJuhDRMzGfjZU81h4PCHAcktJWPuY2IC5EPw9R4h/UToobYBPqsxayyXpu1hK
iCm+g+iKxXKPO2ujG4Kj9NSiWg8NMZeDVgAvh4q5Xi+GMiiwQ67VwO/WzZss0HNt
pAMePhuKp5V5zJXMIf0FwIa3TJZuC4xnCSz2EfKz8Y1tS+ez0p8gAiWzwmR7W705
p7UouNEEzBiVoTq17DrCOx7+51hyP2gygDy0DbD/2kMJVICCPnECIyU8V42a0KPJ
w2cPxh/2w1KgUp3gvdVaKAJunHsqvXlNU+8/PvWeVN3yzd40VCiqmuS2HVqpkAZ8
Lq5hPdxAJmHDdnL4ptLmI3R2PMba/5GYWP0Cr/kQut96drfaDFhHZD8M2wFjsRG2
Pwkfds+8xcdkYYJpfECz15BZAo7lCF2TjjMkREREfmdBn46UgS9MmAQJWm1D5PBV
IhXSfX4p6KuxmiMBjovuagoebSiePEh5EnvYLv3Czx073WcZI7Hk4BnqdSc0DjqF
A2TVS8noAaVlHVIqncLyDS61oVCBoMNyxSPDqcDQNI+6NNeZpbwdj9RJ9d83AepZ
5VajM4GlJzjwooXCsSNc
=dp1h
-----END PGP SIGNATURE-----

View File

@ -1,20 +0,0 @@
Allow builders to override failing on pdb mismatch
--- a/build.proj
+++ b/build.proj
@@ -114,6 +114,7 @@
<SdkSymbolsTarball>$(OutputPath)dotnet-symbols-sdk-$(MicrosoftSourceBuildIntermediateInstallerVersion)-$(TargetRid).tar.gz</SdkSymbolsTarball>
<SdkLayout>$(ArtifactsTmpDir)Sdk</SdkLayout>
<SdkTarball>%(SdkTarballItem.Identity)</SdkTarball>
+ <FailOnMissingPDBs Condition="'$(FailOnMissingPDBs)' == ''">true</FailOnMissingPDBs>
</PropertyGroup>
<MakeDir Directories="$(SdkLayout)" />
@@ -123,7 +124,7 @@
<CreateSdkSymbolsLayout SdkLayoutPath="$(SdkLayout)"
AllSymbolsPath="$(UnifiedSymbolsLayout)"
SdkSymbolsLayoutPath="$(SdkSymbolsLayout)"
- FailOnMissingPDBs="true" />
+ FailOnMissingPDBs="$(FailOnMissingPDBs)" />
<Exec Command="tar --numeric-owner -czf $(SdkSymbolsTarball) *"
WorkingDirectory="$(SdkSymbolsLayout)" />

View File

@ -1,10 +0,0 @@
{
"release": "8.0.4",
"channel": "8.0",
"tag": "v8.0.4",
"sdkVersion": "8.0.104",
"runtimeVersion": "8.0.4",
"aspNetCoreVersion": "8.0.4",
"sourceRepository": "https://github.com/dotnet/dotnet",
"sourceVersion": "83659133a1aa2b2d94f9c4ecebfa10d960e27706"
}

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

@ -1,4 +1,4 @@
%bcond_with bootstrap_dotnet
%bcond_with bootstrap
# LTO triggers a compilation error for a source level issue. Given that LTO should not
# change the validity of any given source and the nature of the error (undefined enum), I
@ -8,15 +8,14 @@
%global dotnetver 8.0
%global host_version 8.0.4
%global runtime_version 8.0.4
%global host_version 8.0.5
%global runtime_version 8.0.5
%global aspnetcore_runtime_version %{runtime_version}
%global sdk_version 8.0.104
%global sdk_version 8.0.105
%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 version
%global upstream_tag v%{runtime_version}
%global upstream_tag_without_v %(echo %{upstream_tag} | sed -e 's|^v||')
@ -48,19 +47,19 @@
%global runtime_arch x64
%endif
%global mono_archs s390x ppc64le
%global mono_archs ppc64le s390x
%{!?runtime_id:%global runtime_id %(. /etc/os-release ; echo "${ID}.${VERSION_ID%%.*}")-%{runtime_arch}}
Name: dotnet%{dotnetver}
Version: %{sdk_rpm_version}
Release: 1%{?dist}
Release: 2%{?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
URL: https://github.com/dotnet/
%if %{with bootstrap_dotnet}
%if %{with bootstrap}
%global bootstrap_sdk_version 8.0.100-rc.1.23410.12
%global tarball_name dotnet-%{upstream_tag}-x64-bootstrap
# The source is generated on a Fedora box via:
@ -73,18 +72,12 @@ Source2: dotnet-prebuilts-%{bootstrap_sdk_version}-ppc64le.tar.gz
# Generated manually, same pattern as the arm64 tarball
Source3: dotnet-prebuilts-%{bootstrap_sdk_version}-s390x.tar.gz
%else
# For non-releases, the source is generated on a Fedora box via:
# ./build-dotnet-tarball %%{upstream_tag} or commit
%global tarball_name dotnet-sdk-source-%{upstream_tag}
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/archive/refs/tags/%{upstream_tag}.tar.gz.sig#/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
#Source10: %%{tarball_name}-nm-dev.tgz
#Source11: %%{tarball_name}-nm-prod.tgz
Source20: check-debug-symbols.py
Source21: dotnet.sh.in
@ -92,12 +85,15 @@ Source21: dotnet.sh.in
Patch1: roslyn-analyzers-ppc64le-apphost.patch
# https://github.com/dotnet/source-build/discussions/3481
Patch2: vstest-intent-net8.0.patch
# We are failing to build 8.0.101 on s390x due to pdb errors that are under investigation
Patch3: dotnet-missing-pdbs-okay.patch
# https://github.com/dotnet/runtime/pull/95216#issuecomment-1842799314
Patch4: runtime-re-enable-implicit-rejection.patch
Patch3: runtime-re-enable-implicit-rejection.patch
# https://github.com/dotnet/msbuild/pull/9449
Patch5: msbuild-9449-exec-stop-setting-a-locale.patch
Patch4: msbuild-9449-exec-stop-setting-a-locale.patch
# 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.
# https://issues.redhat.com/browse/RHEL-25254
Patch5: runtime-openssl-sha1.patch
ExclusiveArch: aarch64 ppc64le s390x x86_64
@ -106,7 +102,7 @@ ExclusiveArch: aarch64 ppc64le s390x x86_64
BuildRequires: clang
BuildRequires: cmake
BuildRequires: coreutils
%if %{without bootstrap_dotnet}
%if %{without bootstrap}
BuildRequires: dotnet-sdk-%{dotnetver}
BuildRequires: dotnet-sdk-%{dotnetver}-source-built-artifacts
%endif
@ -416,7 +412,7 @@ if [[ ${release_json_tag} != %{upstream_tag} ]]; then
exit 1
fi
%if %{without bootstrap_dotnet}
%if %{without bootstrap}
%setup -q -n dotnet-%{upstream_tag_without_v}
# Remove all prebuilts
@ -479,6 +475,9 @@ popd
%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
@ -487,7 +486,7 @@ sed -i -E 's|( /p:BuildDebPackage=false)|\1 --cmakeargs -DCLR_CMAKE_USE_SYSTEM_L
%build
cat /etc/os-release
%if %{without bootstrap_dotnet}
%if %{without bootstrap}
# We need to create a copy because we will mutate this
cp -a %{_libdir}/dotnet previously-built-dotnet
find previously-built-dotnet
@ -535,7 +534,7 @@ export EXTRA_LDFLAGS="$LDFLAGS"
export COMPlus_LTTng=0
VERBOSE=1 ./build.sh \
%if %{without bootstrap_dotnet}
%if %{without bootstrap}
--with-sdk previously-built-dotnet \
%endif
%ifarch %{mono_archs}
@ -543,9 +542,6 @@ VERBOSE=1 ./build.sh \
%endif
--release-manifest %{SOURCE5} \
-- \
%ifarch s390x
/p:FailOnMissingPDBs=false \
%endif
/p:MinimalConsoleLogOutput=false \
/p:ContinueOnPrebuiltBaselineError=true \
/v:n \
@ -716,67 +712,69 @@ export COMPlus_LTTng=0
%changelog
* Tue Apr 02 2024 Omair Majid <omajid@redhat.com> - 8.0.104-1
* 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
* 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-31206
- Resolves: RHEL-31208
* Thu Feb 29 2024 Omair Majid <omajid@redhat.com> - 8.0.103-1
* 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
* 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-27550
- Resolves: RHEL-27553
* Sat Feb 03 2024 Omair Majid <omajid@redhat.com> - 8.0.102-2
- Don't set a locale when running msbuild Exec on Unix
- Resolves: RHEL-23939
* Tue Feb 20 2024 Tom Deseyn <tom.deseyn@gmail.com> - 8.0.102-3
- Backport MSBuild locale fix
- Resolves: RHEL-23936
* Thu Feb 01 2024 Omair Majid <omajid@redhat.com> - 8.0.102-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-23803
- Resolves: RHEL-23804
* Tue Jan 30 2024 Omair Majid <omajid@redhat.com> - 8.0.101-2
* Mon Jan 29 2024 Omair Majid <omajid@redhat.com> - 8.0.101-3
- Add -dbg subpackages for symbol files
- Resolves: RHEL-23073
- Resolves: RHEL-23070
* Wed Dec 20 2023 Omair Majid <omajid@redhat.com> - 8.0.101-1
* 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-19806
- Resolves: RHEL-19803
* Mon Nov 06 2023 Omair Majid <omajid@redhat.com> - 8.0.100-2
- Add more symbol files
- Related: RHEL-15863
* Mon Nov 06 2023 Omair Majid <omajid@redhat.com> - 8.0.100-1
- Update to .NET 8
- Resolves: RHEL-15863
* Wed Oct 25 2023 Omair Majid <omajid@redhat.com> - 8.0.100~rc.2-0.2
- Fix runtime package version
- Related: RHEL-13838
* 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
* Mon Oct 16 2023 Omair Majid <omajid@redhat.com> - 8.0.100~rc.2-0.1
- Update to .NET 8 RC 2
- Resolves: RHEL-13838
* Fri Sep 29 2023 Omair Majid <omajid@redhat.com> - 8.0.100~rc.1-0.5
- Disable bootstrap
- Related: RHEL-2958
- Resolves: RHEL-13790
* Thu Sep 28 2023 Omair Majid <omajid@redhat.com> - 8.0.100~rc.1-0.4
- Backport additional patches to fix s390x issues
- Related: RHEL-2958
- Disable bootstrap
- Related: RHEL-4074
* Tue Sep 19 2023 Omair Majid <omajid@redhat.com> - 8.0.100~rc.1-0.3
* 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-2958
- 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
- Related: RHEL-2958
- 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#2228550
- 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}

10
release.json Normal file
View File

@ -0,0 +1,10 @@
{
"release": "8.0.5",
"channel": "8.0",
"tag": "v8.0.5",
"sdkVersion": "8.0.105",
"runtimeVersion": "8.0.5",
"aspNetCoreVersion": "8.0.5",
"sourceRepository": "https://github.com/dotnet/dotnet",
"sourceVersion": "181780576f29353fd077b649e7624cf806e882e7"
}

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

@ -0,0 +1,34 @@
From d7805229ffe6906cd0832c0482b963caf4b4fd82 Mon Sep 17 00:00:00 2001
From: Tom Deseyn <tom.deseyn@gmail.com>
Date: Wed, 28 Feb 2024 14:08:15 +0100
Subject: [PATCH] Allow certificate validation with SHA-1 signatures.
RHEL OpenSSL builds disable SHA-1 signatures. This causes certificate
validation to fail when using the X509_V_FLAG_CHECK_SS_SIGNATURE flag
with a chain where the last certificate uses a SHA-1 signature.
This removes X509_V_FLAG_CHECK_SS_SIGNATURE flag to have the default
OpenSSL behavior for certificate validation.
---
.../libs/System.Security.Cryptography.Native/pal_x509.c | 5 -----
1 file changed, 5 deletions(-)
diff --git a/src/runtime/src/native/libs/System.Security.Cryptography.Native/pal_x509.c b/src/runtime/src/native/libs/System.Security.Cryptography.Native/pal_x509.c
index 04c6ba06cd..2cd3413dae 100644
--- a/src/runtime/src/native/libs/System.Security.Cryptography.Native/pal_x509.c
+++ b/src/runtime/src/native/libs/System.Security.Cryptography.Native/pal_x509.c
@@ -272,11 +272,6 @@ int32_t CryptoNative_X509StoreCtxInit(X509_STORE_CTX* ctx, X509_STORE* store, X5
int32_t val = X509_STORE_CTX_init(ctx, store, x509, extraStore);
- if (val != 0)
- {
- X509_STORE_CTX_set_flags(ctx, X509_V_FLAG_CHECK_SS_SIGNATURE);
- }
-
return val;
}
--
2.43.2

View File

@ -47,33 +47,6 @@ index 39f3ebc82ec..5b97f468a42 100644
using (RSA rsa = RSAFactory.Create(TestData.RSA2048Params))
{
void RoundtripEmpty(RSAEncryptionPadding paddingMode)
@@ -716,26 +725,6 @@ public void NotSupportedValueMethods()
}
}
- [ConditionalTheory]
- [InlineData(new byte[] { 1, 2, 3, 4 })]
- [InlineData(new byte[0])]
- public void Decrypt_Pkcs1_ErrorsForInvalidPadding(byte[] data)
- {
- if (data.Length == 0 && !PlatformSupportsEmptyRSAEncryption)
- {
- throw new SkipTestException("Platform does not support RSA encryption of empty data.");
- }
-
- using (RSA rsa = RSAFactory.Create(TestData.RSA2048Params))
- {
- byte[] encrypted = Encrypt(rsa, data, RSAEncryptionPadding.Pkcs1);
- encrypted[1] ^= 0xFF;
-
- // PKCS#1, the data, and the key are all deterministic so this should always throw an exception.
- Assert.ThrowsAny<CryptographicException>(() => Decrypt(rsa, encrypted, RSAEncryptionPadding.Pkcs1));
- }
- }
-
[Fact]
public void Decrypt_Pkcs1_BadPadding()
{
@@ -757,23 +746,5 @@ public static IEnumerable<object[]> OaepPaddingModes
}
}

2
sources Normal file
View File

@ -0,0 +1,2 @@
SHA512 (dotnet-8.0.5.tar.gz) = 73b2045d99c76fc44a31de992119beaaa66ab460153364adcaccda01e5040c3e2d7a865c9c1b005ba445506295a6d064581a6c258236057b87d8bab5daf9c220
SHA512 (dotnet-8.0.5.tar.gz.sig) = a7c054fe06f7a857b128908c8df49f720163e7069e4dea1f3cd26431e74ee7283142b8bb47de0710eab6ed47fe68cfd6c9a6d0d4c985480bbeb75811fdd6245c

41
tests/ci.fmf Normal file
View File

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

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"