[MIR] dotnet6

Bug #2023531 reported by Dominik Viererbe
10
This bug affects 1 person
Affects Status Importance Assigned to Milestone
dotnet6 (Ubuntu)
Invalid
Undecided
Unassigned
Jammy
Fix Released
Undecided
Unassigned
Mantic
Fix Released
Undecided
Unassigned
Noble
Invalid
Undecided
Unassigned

Bug Description

[Availability]
 The package dotnet6 is already in Ubuntu universe.
 The package dotnet6 build for the architectures it is designed to work on.
 - See: https://github.com/dotnet/core/blob/main/release-notes/6.0/supported-os.md
 It currently builds and works for architetcures: amd64, arm64
 Link to package https://launchpad.net/ubuntu/+source/dotnet6

[Rationale]
 - The package dotnet6 is required in Ubuntu main as part of
   Canonicals partnership with Microsoft to shorten the supply
   chain between Canonical and Microsoft and improve the .NET
   developer experience on Ubuntu. Read more here:
   - https://canonical.com/blog/install-dotnet-on-ubuntu
   - https://devblogs.microsoft.com/dotnet/dotnet-6-is-now-in-ubuntu-2204/
 - The package dotnet6 will generally be useful for a large part of
   our user base
 - It would be great and useful to community/processes to have the
   package dotnet6 in Ubuntu main, but there is no definitive deadline.

[Security]
 - dotnet6 had security issues in the past that have been
   fixed, see trackers:
   - https://ubuntu.com/security/cves?package=dotnet6
   - https://github.com/dotnet/core/blob/main/release-notes/6.0/cve.md
   - NOTE: When searching for .NET CVEs in other trackers,
     keep in mind that .NET Framework and .NET (Core) is not
     the same and that many CVEs do not affect Linux distributions.
 - The Security Team and Foundations Toolchain Squad already
   work together with Microsoft to release security updates
   to Ubuntu.
 - Microsoft has weekly meetings with .NET Security Partners
   (including Canonical) where they get and keep informed
   about Security Issues.
 - .NET Security Partners (including Canonical) have early
   access to .NET releases containing CVE patches.
 - Microsoft and .NET Security Partners (including Canonical)
   coordinate releases to disclose and provide patches for
   security issues on all plattforms at the same time.
 - Microsoft informs Users about (security) issues in the
   monthly release notes where they aslo recommend actions
   to mitigate these issues.
   See example Release Note containing CVE warning:
   https://devblogs.microsoft.com/dotnet/february-2023-updates/
 - no `suid` or `sgid` binaries
 - no executables in `/sbin` and `/usr/sbin`
 - Packages does not open privileged ports (ports < 1024)
 - Packages does not contain extensions to security-sensitive software
   (filters, scanners, plugins, UI skins, ...)

[Quality assurance - function/usage]
 - The package works well right after install

[Quality assurance - maintenance]
 - The package is maintained well in Ubuntu/Upstream and does
   not have too many, long-term & critical, open bugs
   - Ubuntu https://bugs.launchpad.net/ubuntu/+source/dotnet6/+bug
   - There are multiple bug trackers upstream for the individual
     components of the package https://github.com/dotnet
 - The package has no important open bugs
 - The package does not deal with exotic hardware we cannot support

[Quality assurance - testing]
 - The package runs a test suite on build time, if it fails
   it makes the build fail, link to build logs:
   - mantic amd64: https://launchpad.net/ubuntu/+source/dotnet6/6.0.116-0ubuntu3/+build/26165948
   - mantic arm64: https://launchpad.net/ubuntu/+source/dotnet6/6.0.116-0ubuntu3/+build/26165949
   - lunar amd64: https://launchpad.net/~ubuntu-security/+archive/ubuntu/ppa/+build/25976292
   - lunar arm64: https://launchpad.net/~ubuntu-security/+archive/ubuntu/ppa/+build/25976293
   - kinetic amd64: https://launchpad.net/~ubuntu-security/+archive/ubuntu/ppa/+build/25964381
   - kinetic arm64: https://launchpad.net/~ubuntu-security/+archive/ubuntu/ppa/+build/25964382
   - jammy amd64: https://launchpad.net/~ubuntu-security/+archive/ubuntu/ubuntu-security-staging-private/+build/25974197
   - jammy arm64: https://launchpad.net/~ubuntu-security/+archive/ubuntu/ubuntu-security-staging-private/+build/25974198
 - The package runs an autopkgtest, and is currently passing
   on mantic/lunar/kinetic/jammy amd64/arm64 https://autopkgtest.ubuntu.com/packages/dotnet6
 - The package does NOT have failing autopkgtests tests right now.

[Quality assurance - packaging]
 - debian/watch is present and works*
   (*Canonical has to work around the debian/watch file to
   consume embargoed releases before the official release)
 - debian/control defines a correct Maintainer field
 - This package does yield massive lintian Warnings/Errors,
   but they are either false-postives or acceptable.
 - Lintian overrides are present, but ok because of false-positive
   lintian warnings. The concrete reasons are explained as a
   comment in the overwrite files.
 - The package will not be installed by default
 - Packaging is complex, but that is ok because the software
   we are packaging is complex and we are working with
   Microsoft to reduce the complexity.

[UI standards]
 - Application is end-user facing, Translation is NOT present,
   this is ok, as the application just provides a Command Line
   Interface for developers. The CLI output should not be
   translated to maintain online searchable error messages.
 - The exception messages of the .NET Runtime are localized.
 - End-user applications without desktop file, not needed,
   because it just provides libraries and command line tools

[Dependencies]
 - There are further dependencies that are not yet in main, the MIR
   process for them is handled as part of this bug here.
   - lld binary and source package is in universe
   - llvm binary and source package is in universe
   - locales-all is in universe, but its source glibc is already in main

[Standards compliance]
 - This package correctly follows FHS and Debian Policy (AFAICT: this package is huge and I have only limited experience)

[Maintenance/Owner]
 - Team is already subscribed to the package
 - This package has embedded/vendorized dependencies.
   We are aware of this problem and working on getting rid of them.
 - This package is not rust based
 - The package has been built in the archive more recently than the last
   test rebuild

[Background information]
 - The Package description explains the package well
 - Upstream Name is ".NET 6"
 - Upstream project: https://github.com/dotnet/source-build
 - This MIR exists in parralel to the MIR for dotnet7

Tags: sec-2331
Revision history for this message
Dominik Viererbe (dviererbe) wrote :

$ lintian --pedantic dotnet6_6.0.116-0ubuntu3.dsc
E: dotnet6 source: source-contains-prebuilt-ms-help-file [src/source-build/src/newtonsoft-json901/Tools/7-zip/7-zip.chm]
E: dotnet6 source: source-ships-excluded-file src/source-build/src/humanizer/samples/Humanizer.MvcSample/Content/Site.css [debian/copyright:4]
E: dotnet6 source: source-ships-excluded-file src/source-build/src/humanizer/samples/Humanizer.MvcSample/Content/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png [debian/copyright:4]
E: dotnet6 source: source-ships-excluded-file src/source-build/src/humanizer/samples/Humanizer.MvcSample/Content/themes/base/images/ui-bg_flat_75_ffffff_40x100.png [debian/copyright:4]
E: dotnet6 source: source-ships-excluded-file ... use "--tag-display-limit 0" to see all (or pipe to a file/program)
W: dotnet6 source: superfluous-file-pattern src/runtime/src/libraries/Common/tests/System/Net/Prerequisites/Servers/CoreFxNetCloudService/WebServer/Properties/* [debian/copyright:205]
P: dotnet6 source: redundant-globbing-patterns (*eng/common/* src/symreader/eng/*.props src/symreader/eng/common/internal/*) for src/symreader/eng/common/internal/Directory.Build.props [debian/copyright:205]
P: dotnet6 source: redundant-globbing-patterns (*eng/common/* src/symreader/eng/common/internal/*) for src/symreader/eng/common/internal/Tools.csproj [debian/copyright:205]
P: dotnet6 source: redundant-globbing-patterns (*eng/common/* src/test-templates/eng/common/internal/*) for src/test-templates/eng/common/internal/Directory.Build.props [debian/copyright:205]
P: dotnet6 source: redundant-globbing-patterns ... use "--tag-display-limit 0" to see all (or pipe to a file/program)
P: dotnet6 source: source-contains-autogenerated-visual-c++-file [src/aspnetcore/src/Servers/IIS/AspNetCoreModuleV2/AspNetCore/aspnetcoremodule.rc]
P: dotnet6 source: source-contains-autogenerated-visual-c++-file [src/aspnetcore/src/Servers/IIS/AspNetCoreModuleV2/AspNetCore/resource.h]
P: dotnet6 source: source-contains-autogenerated-visual-c++-file [src/aspnetcore/src/Servers/IIS/AspNetCoreModuleV2/InProcessRequestHandler/HtmlResponses.rc]
P: dotnet6 source: source-contains-autogenerated-visual-c++-file ... use "--tag-display-limit 0" to see all (or pipe to a file/program)
P: dotnet6 source: source-contains-prebuilt-javascript-object [src/aspnetcore/src/Components/Web.JS/dist/Release/blazor.server.js]
P: dotnet6 source: source-contains-prebuilt-javascript-object [src/aspnetcore/src/Components/Web.JS/dist/Release/blazor.webview.js]
P: dotnet6 source: source-contains-prebuilt-javascript-object [src/aspnetcore/src/Components/benchmarkapps/Wasm.Performance/TestApp/wwwroot/benchmarks/jsonHandlingData.js]
P: dotnet6 source: source-contains-prebuilt-javascript-object ... use "--tag-display-limit 0" to see all (or pipe to a file/program)
P: dotnet6 source: source-contains-prebuilt-wasm-binary [src/runtime/src/tests/BuildWasmApps/testassets/native-libs/native-lib.o]
P: dotnet6 source: source-contains-prebuilt-wasm-binary [src/runtime/src/tests/BuildWasmApps/testassets/native-libs/variadic.o]
P: dotnet6 source: trailing-whitespace [debian/changelog:39]

description: updated
Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

Clarifications from the MIR meeting:
- There is dotnet7, but only even numbered releases like dotnet6 are an LTS release and only that is meant to get promoted to main.
- there is a more complex support strategy, but not all even numbered dotnets will be supported all the time; dviererbe will write a comment about this
- The plan after upstream support (3 years) is also complex, and they mentioned a transitional package that deinstalls dotnet when it reaches EOL

We are waiting for those details to be added - thanks in advance.

Changed in dotnet6 (Ubuntu):
assignee: nobody → Christian Ehrhardt  (paelzer)
Revision history for this message
Dominik Viererbe (dviererbe) wrote :

Terminology:
- .NET LTS = free support and patches for 3 years
- .NET STS = free support and patches for 18 months
See more here: https://dotnet.microsoft.com/en-us/platform/support/policy/dotnet-core

- even numbered .NET release are LTS versions
  (e.g. dotnet6 & dotnet8)

- uneven numbered .NET release are STS versions
  (e.g. dotnet7)

- Every .NET LTS release (even numbered release) will be
  generally available in an odd numbered year (e.g. dotnet8
  in Nov 2023). Therefore a .NET LTS release needs to be
  supported on Ubuntu LTS from one year ago (22.04), from the
  next year (24.04) and the one after that (26.04), with a
  clear indication of the MS end of support date in the
  package itself.

- At the EoL of the .Net release, both STS and LTS, we will
  remove the package from the archive (by providing a
  transitional package that uninstalls all binaries).

- We will not MIR .NET STS versions (e.g. dotnet7);
  see also https://bugs.launchpad.net/ubuntu/+source/dotnet7/+bug/2023530/comments/2.

TL;DR: dotnet6 and dotnet8 needed for >= 22.04

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :
Download full text (10.8 KiB)

Review for Source Package: dotnet6

[Summary]
Given the size and complexity of this package and the implication of supporting
the language environment this is in a better state than I expected. Sure I found
some rough edges, but not too bad IMHO.
=> MIR team ACK under the constraint to resolve the below listed TODOs

This does need a security review, so I'll assign ubuntu-security

List of specific binary packages to be promoted to main: dotnet6 dotnet-host dotnet-hostfxr-6.0 dotnet-runtime-6.0 aspnetcore-runtime-6.0 dotnet-templates-6.0 dotnet-sdk-6.0 dotnet-targeting-pack-6.0 netstandard-targeting-pack-2.1 aspnetcore-targeting-pack-6.0 dotnet-apphost-pack-6.0

Specific binary packages built, but NOT to be promoted to main: dotnet-sdk-6.0-source-built-artifacts
This is only needed for future builds and an aspect of the bootstrapping process.

Notes:
TODO: - add todos, issues or special cases to discuss
Required TODOs:
#1a
- Please further clarify the future handling of updates
  Thanks Dviererbe for sharing more details on what happens after EOL.
  Is there a prior example of "providing a transitional package that uninstalls
  all binaries". While I totally understand the motivation it is also
  rather rude.
  People might say "I didn't care for detail X" but now I can't use it
  anymore - or similar.
  Is that approach an established pattern that I missed so far?
  If not we should probably run this by the SRU team (and they decide if also by the TB).
#1b
- And just to be double sure, you do not intent to e.g. move them
  dotnet6 -> dotnet8, but uninstall it right?
#1c
- Finally, generally and given the impact of the above, is there a draft
  of that "with a clear indication of the MS end of support date in the
  package itself" content? Because with the plan of removal it isn't just
  "the MS end of support" it is "the MS and Ubuntu end of support
  and existence".
#3a
- You mentioned to need lld and llvm. Please be aware that I've only seen
  build time dependencies to those which since a long time you no more
  strictly need in main. Even then runtime dependencies of things embedding
  llvm features are usually just needing libllvm13/14/15... and those are
  in main already. So do you need to correct your template or have I missed
  how you depend on them?
#3b
- If I somehow missed them, even then the MIRs for lld and llvm should not
  be in this bug (it is complex enough) but a new one each and refer to here.
  Just like with the versions here (dotnet6, dotnet7, ...) please ensure you
  keep the list of fully supported releases at a well selected minimum. For
  example rustc pulls llvm-13 into jammy. You use the default which is v14
  on jammy - which would imply two versions in main. I do not even mind on
  which side this is sorted out, but it would help to use the same
  where possible.
#4
- Please point me to the build time tests (More details below in the
  [Common blockers] section.

Recommended TODOs:
#2
- I understand that this oddity of needing .git structures is unavoidable
  right now. But it would be great if you would find a way to patch this
  out in a nice way or at least chime in and adopt upstream issue 3359
  once reso...

Changed in dotnet6 (Ubuntu):
assignee: Christian Ehrhardt  (paelzer) → Ubuntu Security Team (ubuntu-security)
Steve Beattie (sbeattie)
tags: added: sec-2331
Revision history for this message
Nishit Majithia (0xnishit) wrote :
Download full text (5.8 KiB)

I reviewed dotnet6 6.0.120 as checked into Mantic. This shouldn't be
considered a full audit but rather a quick gauge of maintainability.

dotnet6 is an open-source platform for building desktop, web, and mobile
applications that can run natively on any operating system. The dotnet
system includes tools, libraries, and languages that support modern,
scalable, and high-performance software development.

- CVE History:
  - CVE-2022-38013: Fixed in 6.0.109
  - CVE-2022-41032: Fixed in 6.0.110
  - CVE-2023-21538: Fixed in 6.0.113
  - CVE-2023-24936: Fixed in 6.0.118
  - CVE-2023-28260: Fixed in 6.0.116
  - CVE-2023-29331: Fixed in 6.0.118
  - CVE-2023-29337: Fixed in 6.0.118
  - CVE-2023-32032: Fixed in 6.0.118
  - CVE-2023-33128: Fixed in 6.0.118
  - CVE-2023-33170: Fixed in 6.0.120
- Build-Depends?
  - clang
  - cmake
  - bash-completion
  - debhelper-compat (= 13)
  - dotnet-sdk-6.0
  - dotnet-sdk-6.0-source-built-artifacts
  - git
  - libicu-dev
  - libkrb5-dev
  - liblttng-ust-dev
  - libssl-dev
  - libunwind-dev
  - lld
  - llvm
  - locales-all
  - python3
  - zlib1g-dev
- pre/post inst/rm scripts?
  - None
- init scripts?
  - None
- systemd units?
  - None
- dbus services?
  - None
- setuid binaries?
  - no `suid` or `sgid` binaries
- binaries in PATH?
  - dotnet6, dotnet-host, dotnet-hostfxr-6.0, dotnet-runtime-6.0,
    aspnetcore-runtime-6.0, dotnet-templates-6.0, dotnet-sdk-6.0,
    dotnet-targeting-pack-6.0, netstandard-targeting-pack-2.1,
    aspnetcore-targeting-pack-6.0, dotnet-apphost-pack-6.0
- sudo fragments?
  - None
- polkit files?
  - None
- udev rules?
  - None
- unit tests / autopkgtests?
  - Yes, autopkgtests runs fine locally passing all the tests
- cron jobs?
  - None
- Build logs:
  - same lintian errors described in https://bugs.launchpad.net/ubuntu/+source/dotnet6/+bug/2023531/comments/1

- Processes spawned?
  - Yes, it is mainly in the `src/runtime` directory which is responsible
    for dotnet runtime infrastructure. Most of the process spawn
    instructions are found in `coreclr` which is the execution engine for
    dotnet applications. It includes the JIT compiler, garbage collector,
    and other low-level components that manage the execution of dotnet code.
  - It also exists in many test files in `fsharp` directory, which is
    expected
- Memory management?
  - Heavy usage of memory-related functions in `runtime` directory, is
    expected from a framework
- File IO?
  - File IO operations are heavily used in `src/aspnetcore` and
    `src/runtime` dirs
  - Specifically, it is being used in the `src/runtime/src/libraries` directory
    which provides fundamental functionality for .NET applications, such
    as data types, collections, input/output, and more.
  - This looks okay
- Logging?
  - Error format looks fine
  - It majorly uses `Trace.TraceError()`, `std::system_error()` and
    `std::runtime_error()` in various situations, which is expected
- Environment variable usage?
  - Env variables use in `src/runtime/src/mono/mono/eventpipe` dir look
    fine. EventPipe is a feature that collects diagnostic and
    telemetry information from dotnet applications at runtime. It's used
    for profiling, debuggin...

Read more...

Changed in dotnet6 (Ubuntu):
assignee: Ubuntu Security Team (ubuntu-security) → nobody
Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

Thanks,
this looks good, but since there are a few requirements left to fulfil I'm marking it incomplete for now.
Please set back to new and unassign you once you think it is ready for re-review.

Changed in dotnet6 (Ubuntu):
status: New → Incomplete
assignee: nobody → Dominik Viererbe (dviererbe)
Revision history for this message
Dominik Viererbe (dviererbe) wrote (last edit ):
Download full text (6.4 KiB)

Response to the review for Source Package: dotnet6

First of all, thanks Christian (~paelzer) & Nishit (~0xnishit) for the extensive review!

Required TODOs:
> #1a
> - Please further clarify the future handling of updates
> Thanks Dviererbe for sharing more details on what happens after EOL.
> Is there a prior example of "providing a transitional package that uninstalls
> all binaries". While I totally understand the motivation it is also
> rather rude.
> People might say "I didn't care for detail X" but now I can't use it
> anymore - or similar.
> Is that approach an established pattern that I missed so far?
> If not we should probably run this by the SRU team (and they decide if also by the TB).
I discussed the EoL Strategy again with Security, Foundations & Microsoft. I documented the outcome in the README.source [1]. TL;DR: We keep the package as is in the archive and demote it to universe. We asked Microsoft to warn the User about EoL. Note that this is also the RedHat EoL strategy for .NET.
You can also find more context about the discussion in the JIRA ticket FR-4855 [2]

> #1b
> - And just to be double sure, you do not intent to e.g. move them
> dotnet6 -> dotnet8, but uninstall it right?
We (Foundations – Toolchains) discussed this approch and rejected it, because this may break some users' use-case or may change the behavior of .NET applications. Especially for users that install multiple runtimes/sdks in parallel.

> #1c
> - Finally, generally and given the impact of the above, is there a draft
> of that "with a clear indication of the MS end of support date in the
> package itself" content? Because with the plan of removal it isn't just
> "the MS end of support" it is "the MS and Ubuntu end of support
> and existence".
As mentioned in the answer for #1a above; this is now documented in the README.source [1].

> #3a
> - You mentioned to need lld and llvm. Please be aware that I've only seen
> build time dependencies to those which since a long time you no more
> strictly need in main. Even then runtime dependencies of things embedding
> llvm features are usually just needing libllvm13/14/15... and those are
> in main already. So do you need to correct your template or have I missed
> how you depend on them?
> #3b
> - If I somehow missed them, even then the MIRs for lld and llvm should not
> be in this bug (it is complex enough) but a new one each and refer to here.
> Just like with the versions here (dotnet6, dotnet7, ...) please ensure you
> keep the list of fully supported releases at a well selected minimum. For
> example rustc pulls llvm-13 into jammy. You use the default which is v14
> on jammy - which would imply two versions in main. I do not even mind on
> which side this is sorted out, but it would help to use the same
> where possible.
This was an error on my side. lld and llvm are not needed. I just thought that they are needed, because the check-mir tool pointed out that they aren't in main.

#4
> - Please point me to the build time tests (More details below in the
> [Common blockers] section.
This was also a confusion on my side. There are no build time tests and I d...

Read more...

Revision history for this message
Christian Ehrhardt  (paelzer) wrote (last edit ):

#1a
> TL;DR: We keep the package as is in the archive and demote it to universe.
> We asked Microsoft to warn the User about EoL.
> You can also find more context about the discussion in the JIRA ticket FR-4855 [2]

Thanks for clarifying, that is at least a bit more comfortable to the users (compared to removing).
I like this new approach more.
But as I already hinted before, I think you really want/need also an SRU exception for this as well as it doesn't seem purely a MIR team decision.
Link the approved exception here please once done.
=> https://wiki.ubuntu.com/StableReleaseUpdates#Documentation_for_Special_Cases

#1b - thanks, ok with it, thanks for spelling it out
=> Ack on this aspect

#1c - thanks, ok with it, thanks for documenting
=> Ack on this aspect

#3* llvm lld
Thanks for the clarification
=> Ack on this aspect

#4 only testing in autopkgtests

I'd prefer to have something not as gigantic in build time tests (read = "I agree to not add the huge thing, but something small maybe", just a reasonable sanity check).
But that isn't a hard requirement if there are good autopkgtests and there are.
You have lots of good "make the autopkgtest even better" and that might be where the time is indeed spend better now.
=> Ack on this aspect

#2 .git dir
Thanks for not giving up, I'm ok if this is solved in the mid-term
=> Ack on this aspect

#5 d/watch
Thanks for explaining, fixing and documenting.
I'm pleased to learn this will improve in the future
=> Ack on this aspect

The optional #6 / #7 will be covered by your longer list of known things you work on.
"""
1. Integrate (upstream) smoke tests into autopkgtest suite.
2. Investigate embedded third party dependencies that should/can be patched out of dotnet packages.
3. Patch out need for .git folder.
4. Investigate symbols tracking for .so and .dll files.
5. Investigate enabling LTO.
6a. Investigate state of JIT Tests.
6b. Investigate feasibility of integration into autopkgtest suite
"""

Thanks for stating this so clearly here.

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

TL;DR the above - ATM left open to be clarified, answered or resolved:

#1a - Please get and link an SRU exception approval for this new behavior of treating active releases.

Revision history for this message
Dominik Viererbe (dviererbe) wrote :

#1a

The SRU Page [1] now has an entry for the .NET EOL behaviour:
> Not strictly a standard SRU exception, but due to the way dotnet is handled
> upstream and the lifespan of its LTS status, the dotnet packages in the
> Ubuntu archives require special EOL rules. The EOL of various dotnetX packages
> will be handled in accordance with the rules outlined in dotnetEOLException.
> This stable release exception has been approved by LukaszZemczak for the SRU
> team as of 2023-09-01.

You can see the wiki page that describes the .NET EOL behaviour here [2]

[1] https://wiki.ubuntu.com/StableReleaseUpdates#Documentation_for_Special_Cases
[2] https://wiki.ubuntu.com/dotnetEOLException

#4

We like the idea and added it to our Roadmap. We intend to compile and run a
hello world application after a successfull build.

Revision history for this message
Dominik Viererbe (dviererbe) wrote (last edit ):

I have to backtrack on #1a. Łukasz pulled it off the wiki (for now), because Robie Basak had issues with it.

TL;DR: SRU exception still not approved

Revision history for this message
Seth Arnold (seth-arnold) wrote :

Time is running short -- can we reach a consensus on how this will reach a graceful end of life before all the other packages?

Thanks

Revision history for this message
Dominik Viererbe (dviererbe) wrote (last edit ):

Hi, since the last time we had multiple discussions with Microsoft, the SRU Team, the Security Team, Oliver Smith and Lech Sandecki.

We will backport security patches after the upstream support ends as part of the Ubuntu LTS and Ubuntu Pro story, but we still recommend users to switch versions after the upstream support ends. Therefore we no longer need an exception.

Additionally our support/distribution strategy has changed (see #3 [1] for details about the old strategy):
- We will ship the latest .NET LTS (e.g. .NET 6, 8, 10) to the latest Ubuntu LTS and backport to the -1 Ubuntu LTS and Interim releases.
- We will ship .NET STS releases (.NET 7, 9, 11) only to Ubuntu Interim releases.

e.g.
- .NET 8 LTS will be on 22.04 LTS, 23.10 and 24.04 LTS
- .NET 9 STS will be on 24.10, 25.04, 25.10
- .NET 10 LTS will be on 24.04 LTS, 25.04, 25.10 and 26.04 LTS

With this change we would like to have all .NET packages in main. The only exception is .NET 7 in jammy that we want to keep in universe.

I will open seperate MIR requests for the dotnet7 and dotnet8 package.

FYI:
- I am currently backporting .NET 8 to jammy
- We will not backport .NET 8 to lunar, because of the limited lifespan left.
- .NET 6 and 7 is currently in noble, but we will remove it over the next weeks.

[1] https://bugs.launchpad.net/ubuntu/+source/dotnet6/+bug/2023531/comments/3

Revision history for this message
Łukasz Zemczak (sil2100) wrote :

I have not been part of the SRU discussions per-se, but I know Robie has been and that the current plan does not require an SRU exception anymore. So if the MIR is blocked on that, I think it can proceed.

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

Thank you all for the ongoing discussions and clarifications.
As discussed in the MIR meeting, I'm checking if all past requirements are fulfilled.

- Of the required TODOs we've had major updates to #1* due to making this more similar to other toolchain packages. Therefore this former need is satisfied and acknowledged
  - Thanks also to Łukasz for stating the SRU POV while Robie is out.

- The other required TODOs, #3 has already been resolved before.

- Multiple recommended TODOs have been addressed or are still in the making - thanks.

- Finally the one required TODO that is open is #4 - at least some testing
  - that was split out to bug 2032945
  - put onto the teams roadmap
  - already started
  - and stated to be available soon

=> Once that (#4) is completed there are no more required steps left for the needs of the MIR review and this can pass

Revision history for this message
Dominik Viererbe (dviererbe) wrote :

> 17:46:03 - cpaelzer: just tests to be added, then it is good
> 17:46:08 - cpaelzer: long things are finally good
(See https://irclogs.ubuntu.com/2023/11/28/%23ubuntu-meeting.html#t15:46)

The latest updates (LP: #2057982, #2057699) added minimal build time tests and extended the autopkgtest coverage by integrating the RedHat test suite.

Therefore, the final requirement for the .NET MIR should be fulfilled.

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

Thank you Dominik, yes - by that it seems complete now.
Ready for you to change seeds to pull it into main.

Changed in dotnet6 (Ubuntu):
status: Incomplete → In Progress
Revision history for this message
Dominik Viererbe (dviererbe) wrote :

As discussed in the MIR meeting I created a dotnet8 MIR bug; see LP: #2060056

Revision history for this message
Dominik Viererbe (dviererbe) wrote :

Just FYI: Comment #13 states "[...] we would like to have all .NET packages in main. The only exception is .NET 7 in jammy that we want to keep in universe."

.NET 7 will go EoL on May 14, 2024 and mantic will go EoL in July 2024. Therefore it does not make a lot of sense to MIR the dotnet7 package for mantic.

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

v6 exists in Jammy, Mantic - promoting it there would be ok, although for mantic there isn't much time left

For Noble forward we only want v8 IIUC, that seems fine as you need to let go of the old at some point - or will that change again later?

Changed in dotnet6 (Ubuntu Noble):
status: In Progress → Invalid
Changed in dotnet6 (Ubuntu Mantic):
status: New → In Progress
Changed in dotnet6 (Ubuntu Jammy):
status: New → In Progress
Lukas Märdian (slyon)
Changed in dotnet6 (Ubuntu Mantic):
status: In Progress → Fix Committed
Changed in dotnet6 (Ubuntu Jammy):
status: In Progress → Fix Committed
Revision history for this message
Dominik Viererbe (dviererbe) wrote (last edit ):

> For Noble forward we only want v8 IIUC, that seems fine as you need to let go of the old at some point - or will that change again later?

Correct and this* should™ not change in the near/medium distant future. FYI: dotnet6 and dotnet7 was removed from noble for that reason (see LP: #2044511, #2044513).

Should not be relevant for the MIR, but just FYI: We will provide dotnet6 and dotnet7 for noble in a PPA, with best effort support limited to the upstream lifespan. Microsoft even wants to stops providing builds in there own PPA starting with noble.

EDIT:
* the strategy described in comment 13

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

For Mantic I see it is pulled in via the seeds as expected now [1].
For jammy that is not there, but that is because it was not updated for two months which is a different problem - the change is the very same and is ok.

The case is approved, it was meant to also go back to Jammy and where the reports run it confirms that the seed changes worked.
Promoting ...

[1]: https://ubuntu-archive-team.ubuntu.com/germinate-output/ubuntu.mantic/all

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :
Download full text (11.3 KiB)

Sorry for the delay, I didn't want to mess this up doing it in between meetings.

Currently in those releases:
 dotnet6 | 6.0.127-0ubuntu1~22.04.1 | jammy-security/universe | source, amd64, arm64
 dotnet6 | 6.0.128-0ubuntu1~22.04.2 | jammy-updates/universe | source, amd64, arm64

 dotnet6 | 6.0.121-0ubuntu1 | mantic/universe | source, amd64, arm64
 dotnet6 | 6.0.127-0ubuntu1~23.10.1 | mantic-security/universe | source, amd64, arm64
 dotnet6 | 6.0.128-0ubuntu1~23.10.2 | mantic-updates/universe | source, amd64, arm64

The one in mantic-release is a bit older and misses quite some of the good work done over the last half year.
On Jammy (and in general the latest push to -security) is not too old only 2 months ago. For the change that someone only uses -security I think it is fine to promote those two (but not mantic-release).

That will also ensure both pockets that will be further changed are on the right component.
And from here on any further upload and change will be on top of that latest version anyway.

Comparing to the new releases we had no s390x support yet - ok.
These older releases did not create -dbg (not -dbgsym, those are there).
I found a meant to be new "Added new binary packages for debug symbols." - so that makes sense

With all that confirmed it matches the dry-run preview ...
Going on:

Override component to main
dotnet6 6.0.128-0ubuntu1~22.04.2 in jammy: universe/devel -> main
aspnetcore-runtime-6.0 6.0.128-0ubuntu1~22.04.2 in jammy amd64: universe/devel/optional/100% -> main
aspnetcore-runtime-6.0 6.0.128-0ubuntu1~22.04.2 in jammy arm64: universe/devel/optional/100% -> main
aspnetcore-targeting-pack-6.0 6.0.128-0ubuntu1~22.04.2 in jammy amd64: universe/devel/optional/100% -> main
aspnetcore-targeting-pack-6.0 6.0.128-0ubuntu1~22.04.2 in jammy arm64: universe/devel/optional/100% -> main
dotnet-apphost-pack-6.0 6.0.128-0ubuntu1~22.04.2 in jammy amd64: universe/devel/optional/100% -> main
dotnet-apphost-pack-6.0 6.0.128-0ubuntu1~22.04.2 in jammy arm64: universe/devel/optional/100% -> main
dotnet-host 6.0.128-0ubuntu1~22.04.2 in jammy amd64: universe/devel/optional/100% -> main
dotnet-host 6.0.128-0ubuntu1~22.04.2 in jammy arm64: universe/devel/optional/100% -> main
dotnet-hostfxr-6.0 6.0.128-0ubuntu1~22.04.2 in jammy amd64: universe/devel/optional/100% -> main
dotnet-hostfxr-6.0 6.0.128-0ubuntu1~22.04.2 in jammy arm64: universe/devel/optional/100% -> main
dotnet-runtime-6.0 6.0.128-0ubuntu1~22.04.2 in jammy amd64: universe/devel/optional/100% -> main
dotnet-runtime-6.0 6.0.128-0ubuntu1~22.04.2 in jammy arm64: universe/devel/optional/100% -> main
dotnet-sdk-6.0 6.0.128-0ubuntu1~22.04.2 in jammy amd64: universe/devel/optional/100% -> main
dotnet-sdk-6.0 6.0.128-0ubuntu1~22.04.2 in jammy arm64: universe/devel/optional/100% -> main
dotnet-sdk-6.0-source-built-artifacts 6.0.128-0ubuntu1~22.04.2 in jammy amd64: universe/devel/optional/100% -> main
dotnet-sdk-6.0-source-built-artifacts 6.0.128-0ubuntu1~22.04.2 in jammy arm64: universe/devel/optional/100% -> main
dotnet-targeting-pack-6.0 6.0.128-0ubuntu1~22.04.2 in jammy amd64: universe/devel/optional/100% -> main
dotnet-targeting-pack-6.0 6.0.128-0ubuntu1~22.04....

Changed in dotnet6 (Ubuntu Jammy):
status: Fix Committed → Fix Released
Changed in dotnet6 (Ubuntu Mantic):
status: Fix Committed → Fix Released
Changed in dotnet6 (Ubuntu Noble):
assignee: Dominik Viererbe (dviererbe) → nobody
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.