Bug 2244633 - Review Request: dotnet8.0 - .NET 8 SDK and Runtime
Summary: Review Request: dotnet8.0 - .NET 8 SDK and Runtime
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Neal Gompa
QA Contact: Fedora Extras Quality Assurance
URL: https://github.com/dotnet/
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2023-10-17 12:57 UTC by Omair Majid
Modified: 2023-12-12 14:07 UTC (History)
5 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2023-12-12 14:07:53 UTC
Type: ---
Embargoed:
ngompa13: fedora-review+


Attachments (Terms of Use)

Description Omair Majid 2023-10-17 12:57:48 UTC
Spec URL: https://pagure.io/dotnet-sig/dotnet8.0/raw/main/f/dotnet8.0.spec
SRPM URL: https://download.copr.fedorainfracloud.org/results/@dotnet-sig/dotnet-preview/fedora-rawhide-x86_64/06469054-dotnet8.0/dotnet8.0-debugsource-8.0.100~rc.1-0.2.fc40.x86_64.rpm
Description: .NET is a fast, lightweight and modular platform for creating
cross platform applications that work on Linux, macOS and Windows.

It particularly focuses on creating console applications, web
applications and micro-services.

.NET contains a runtime conforming to .NET Standards, a set of
framework libraries, an SDK containing compilers and a 'dotnet'
application to drive everything.

Fedora Account System Username: omajid

Comment 1 Omair Majid 2023-10-17 13:02:58 UTC
This is not an upgrade or replacement of the existing 6.0 or dotnet7.0 packages, but an entirely new package. The packages can all be installed side-by-side.

Here's a diff of the dotnet7.0 and this new dotnet8.0 spec file: https://gist.github.com/omajid/c8124bd9d1b25696803253b0516c5098

This package needs to be bootstrapped. Which can be done by changing the %bcond_without. We have a blanket bootstrap exception from the fedora packaging committee: https://pagure.io/packaging-committee/issue/989.

Comment 2 Neal Gompa 2023-10-17 21:05:23 UTC
Taking this review.

Comment 3 Neal Gompa 2023-10-17 21:11:17 UTC
Initial spec review:

> Release:        0.1%{?dist}

This should be "0%{?dist}.1"

> %if 0%{?fedora} || 0%{?rhel} >= 8
> ExclusiveArch:  aarch64 ppc64le s390x x86_64
> %else
> ExclusiveArch:  x86_64
> %endif

Can we flip this like so?

%if 0%{?rhel} && 0%{?rhel} < 8
ExclusiveArch: x86_64
%else
ExclusiveArch:  aarch64 ppc64le s390x x86_64
%endif

Or if RHEL 7 doesn't matter anymore, can we just simplify to:

ExclusiveArch: aarch64 ppc64le s390x x86_64

> %if 0%{?fedora} || 0%{?rhel} > 7
> BuildRequires:  glibc-langpack-en
> %endif

Another question about RHEL 7 here. If we don't care anymore, can we drop the conditionals?

> %if 0%{?fedora} || 0%{?rhel} >= 9
> # Setting this macro ensures that only clang supported options will be
> # added to ldflags and cflags.
> %global toolchain clang
> %set_build_flags
> %else
> # Filter flags not supported by clang
> %global dotnet_cflags %(echo %optflags | sed -re 's/-specs=[^ ]*//g')
> %global dotnet_ldflags %(echo %{__global_ldflags} | sed -re 's/-specs=[^ ]*//g')
> export CFLAGS="%{dotnet_cflags}"
> export CXXFLAGS="%{dotnet_cflags}"
> export LDFLAGS="%{dotnet_ldflags}"
> %endif

Can you please flip this conditional too?

> %if 0%{?fedora} > 35
> # lttng in Fedora > 35 is incompatible with .NET
> export COMPlus_LTTng=0
> %endif

Doesn't this also affect RHEL 9+ (or at least RHEL 10+)?

Comment 4 Omair Majid 2023-10-17 22:01:35 UTC
Thanks for taking up the review!


(In reply to Neal Gompa from comment #3)
> Initial spec review:
> 
> > Release:        0.1%{?dist}
> 
> This should be "0%{?dist}.1"

Done, but I am not sure I understand the change. I looked at https://fedoraproject.org/wiki/Package_Versioning_Examples and that still seems to suggest putting 0.1 before %{?dist}.

> ExclusiveArch: aarch64 ppc64le s390x x86_64
> 
...
> 
> Another question about RHEL 7 here. If we don't care anymore, can we drop
> the conditionals?

Done.

> > %if 0%{?fedora} || 0%{?rhel} >= 9
> > # Setting this macro ensures that only clang supported options will be
> > # added to ldflags and cflags.
> > %global toolchain clang
> > %set_build_flags
> > %else
> > # Filter flags not supported by clang
> > %global dotnet_cflags %(echo %optflags | sed -re 's/-specs=[^ ]*//g')
> > %global dotnet_ldflags %(echo %{__global_ldflags} | sed -re 's/-specs=[^ ]*//g')
> > export CFLAGS="%{dotnet_cflags}"
> > export CXXFLAGS="%{dotnet_cflags}"
> > export LDFLAGS="%{dotnet_ldflags}"
> > %endif
> 
> Can you please flip this conditional too?

I would be happy to. Can you help me understand why, though? The previous conditional suggestions were about putting the future/happy path first, and dealing with legacy/fall-back in the "else" clause. This is already set up that way. In the future, we can simplify to just the  the "then" clause:

    # Setting this macro ensures that only clang supported options will be
    # added to ldflags and cflags.
    %global toolchain clang
    %set_build_flags

> > %if 0%{?fedora} > 35
> > # lttng in Fedora > 35 is incompatible with .NET
> > export COMPlus_LTTng=0
> > %endif
> 
> Doesn't this also affect RHEL 9+ (or at least RHEL 10+)?

It doesn't affect RHEL 9 (which has lttng-ust 2.12, just like Fedora 35). I don't know what happens in a RHEL 10 context, which might inherit lttng-ust 2.13.x from Fedora.

Comment 5 Omair Majid 2023-11-13 16:28:42 UTC
Hey Neal, what are the next steps here? Any thoughts on my previous comments?

Comment 6 acj 2023-11-27 14:35:38 UTC
Just chiming in to note that there's a small amount of pressure building from the community (myself included) to see this resolved: https://github.com/dotnet/docs/issues/38366

Comment 7 Neal Gompa 2023-12-05 07:34:39 UTC
(In reply to Omair Majid from comment #5)
> Hey Neal, what are the next steps here? Any thoughts on my previous comments?

Okay, I agree with your comments here. But, I can also say that we can pretty much be guaranteed that RHEL 10 is going to inherit Fedora's lttng-ust.

Comment 9 Fedora Review Service 2023-12-07 14:48:33 UTC
Copr build:
https://copr.fedorainfracloud.org/coprs/build/6731562
(succeeded)

Review template:
https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2244633-dotnet8.0/fedora-rawhide-x86_64/06731562-dotnet8.0/fedora-review/review.txt

Found issues:

- dotnet-apphost-pack-8.0 : /usr/lib64/dotnet/packs/Microsoft.NETCore.App.Host.fedora.40-x64/8.0.0-rc.1.23419.4/runtimes/fedora.40-x64/native/coreclr_delegates.h dotnet-apphost-pack-8.0 : /usr/lib64/dotnet/packs/Microsoft.NETCore.App.Host.fedora.40-x64/8.0.0-rc.1.23419.4/runtimes/fedora.40-x64/native/hostfxr.h dotnet-apphost-pack-8.0 : /usr/lib64/dotnet/packs/Microsoft.NETCore.App.Host.fedora.40-x64/8.0.0-rc.1.23419.4/runtimes/fedora.40-x64/native/nethost.h 
  Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/#_devel_packages
- Not a valid SPDX expression '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'.
  Read more: https://fedoraproject.org/wiki/Changes/SPDX_Licenses_Phase_1
- Package has .a files: dotnet-apphost-pack-8.0. Illegal package name: dotnet-apphost-pack-8.0. Does not provide -static: dotnet-apphost-pack-8.0.
  Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/#packaging-static-libraries

Please know that there can be false-positives.

---
This comment was created by the fedora-review-service
https://github.com/FrostyX/fedora-review-service

If you want to trigger a new Copr build, add a comment containing new
Spec and SRPM URLs or [fedora-review-service-build] string.

Comment 10 Neal Gompa 2023-12-07 15:05:04 UTC
Review notes:

* Package follows Fedora Packaging Guidelines
* Package builds and installs
* Package licensing is correctly handled
* No serious issues from rpmlint

At this point, this is pretty good (all things considered), so...

PACKAGE APPROVED.

Comment 11 Fedora Admin user for bugzilla script actions 2023-12-07 15:51:36 UTC
The Pagure repository was created at https://src.fedoraproject.org/rpms/dotnet8.0

Comment 12 Omair Majid 2023-12-12 14:07:53 UTC
Thanks for the review, Neal!

I have built .NET 8 for all current versions of Fedora:

Rawhide: https://bodhi.fedoraproject.org/updates/FEDORA-2023-0b799a957f
Fedora 39: https://bodhi.fedoraproject.org/updates/FEDORA-2023-ada4de53b1
Fedora 38: https://bodhi.fedoraproject.org/updates/FEDORA-2023-eefadf07e8


Note You need to log in before you can comment on or make changes to this bug.