[SRU] Upstream microrelease, arm64 bootstrap and file layout changes for upcoming dotnet7 release
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
dotnet6 (Ubuntu) |
Fix Released
|
High
|
Miriam España Acebal | ||
Jammy |
Fix Released
|
High
|
Miriam España Acebal | ||
Kinetic |
Fix Released
|
High
|
Miriam España Acebal | ||
Lunar |
Fix Released
|
High
|
Miriam España Acebal |
Bug Description
[Impact]
This correspond to an upstream microrelease (Microsoft Patch Tuesday microrelease).
We want to do an initial bootstrapping of the dotnet6 packages for arm64 architectures in Jammy and Kinetic. It is beneficial for our users to have access to the latest .NET6 stack, so the .NET team is working with the security and SRU teams on getting latest versions backported to 22.04 and 22.10. The initial bootstrapping is always a bit complicated, so we want to start off by doing a backport of 6.0.110 using the bootstrapping PPA. Later uploads will not require such special setup.
We did the 6.0.110 bootstrap and it looked fine, so now we want to update to 6.0.111. So the initial upload to jammy-updates for arm64 will be 111.
The .NET, security and SRU teams are cooperating on creating a SRU exception for these packages, with special rules tailored towards the needs of this project - with an extensive test story and steps necessary for the SRU to proceed.
Also, the installation layout for amd64 will change due to the incoming release of the dotnet7 package (LP: 1995478) to allow the co-installation of both .NET versions. Althought .NET 7 version will not hit Jammy, we want to maintain the coherence in this matter
across the Unbuntu series and also across architectures (so arm64 will be released with this new layout). We implement that change also here.
[Test Case]
As this is the initial bootstrapping, we want the package to build successfully in jammy-proposed and kinetic-proposed (potentially using the bootstrap archive). The packages should be installable on Jammy and Kinetic some basic dogfooding testing should be performed:
#0.Install dotnet: apt install dotnet6
#0.1. Check installation : dpkg -l | grep 'NET\|asp’
#1. Basic check commands: donet —info, dotnet —version, dotnet sdk check
$ dotnet —info
#Expected output is:
# .NET SDK (reflecting any global.json):
# Version: 6.0.111
# Commit: b3bb659a9d
#
# Runtime Environment:
# OS Name: ubuntu
# OS Version: 22.10
# OS Platform: Linux
# RID: ubuntu.22.10-x64
# Base Path: /usr/lib/
#
# global.json file:
# Not found
#
# Host:
# Version: 6.0.11
# Architecture: x64
# Commit: 943474ca16
#
# .NET SDKs installed:
# 6.0.111 [/usr/lib/
#
# .NET runtimes installed:
# Microsoft.
# Microsoft.
#
# Download .NET:
# https:/
#
# Learn about .NET Runtimes and SDKs:
# https:/
$ dotnet --version
#Expected output is:
# 6.0.111
$ dotnet sdk check
# Expected output is:
# .NET SDKs:
# Version Status
# -------
# 6.0.111 Up to date.
#
# Try out the newest .NET SDK features with .NET 7.0.100.
#
# .NET Runtimes:
# Name Version Status
# -------
# Microsoft.
# Microsoft.
#
#
# The latest versions of .NET can be installed from https:/
#2. Checking console, solution and project commands
#2.1. Creating console: dotnet new console
$ dotnet new console --name Testing
#Expected output is :
# The template "Console App" was created successfully.
# Processing post-creation actions...
# Running 'dotnet restore' on /root/Testing/
# Determining projects to restore...
# Restored /root/Testing/
# Restore succeeded.
$ cd Testing/
#2.2. Creating solution: dotnet new sln
$ dotnet new sln
#Expected output is:
# The template "Solution File" was created successfully.
#2.3. Adding project to the solution: dotnet sln <sln_file> add <csproj_file>
$ dotnet sln Testing.sln add Testing.csproj
#Expected output is:
# Project `Testing.csproj` added to the solution.
#2.4. Building solution: dotnet build <sln_file>
$ dotnet build Testing.sln
#Expected output is:
# Microsoft (R) Build Engine version 17.0.1+b177f8fa7 for .NET
# Copyright (C) Microsoft Corporation. All rights reserved.
#
# Determining projects to restore...
# All projects are up-to-date for restore.
# Testing -> /root/Testing/
#
# Build succeeded.
# 0 Warning(s)
# 0 Error(s)
#2.5. Running solution: bin/Debug/
$ bin/Debug/
#Expected output is:
# Hello, World!
#2.6. Project that use a nuget package: dotnet add <csproj_file> package <nuget_package>
#Changing Program.Cs
$ cat <<EOF >Program.cs
using System;
using System.
using System.Linq;
using System.Text;
using System.
using Google.Apis;
namespace TestProject
{
class Program
{
static void Main(string[] args)
{
var th = new Thread(
}
private static void WaitAndPrint(
}
}
}
EOF
$ dotnet add Testing.csproj package Google.Apis
#Expected output is:
# Determining projects to restore...
# Writing /tmp/tmp6RP8i6.tmp
#info : Adding PackageReference for package 'Google.Apis' into project 'Testing.csproj'.
#info : GET https:/
#info : OK https:/
#info : Restoring packages for /root/Testing/
#info : Package 'Google.Apis' is compatible with all the specified frameworks in project 'Testing.csproj'.
#info : PackageReference for package 'Google.Apis' version '1.57.0' added to file '/root/
#info : Committing restore...
#info : Writing assets file to disk. Path: /root/Testing/
#log : Restored /root/Testing/
#2.7. Running project
$ dotnet run
#Expected output is:
# Me first!
# Finished tasks: 1
# Me second!
# Finished tasks: 2
#2.8. Removing nuget package
$ dotnet remove Testing.csproj package Google.Apis
#Expected output is:
# info : Removing PackageReference for package 'Google.Apis' from project 'Testing.csproj'.
#Checking removing is OK:
$ dotnet run
#Expected output is:
# /root/Testing/
# reference?) [/root/
#
# The build failed. Fix the build errors and run again.
[Regression Potential]
No regression potential as these packages do not exist for arm64 architectures and/or do not replace any existing packages in 22.04 or 22.10.
For amd64 architectures, if the solution would not be well implemented, the dotnet-host binary will be unable to recognize the SDKs installed and all the other shared files (templates, packs, etc...).
[Original Report]
-------
Now that dotnet7 is coming to Ubuntu (https:/
To use only a muxer (dotnet binary provided by dotnet-host package nowadays) that can see all the SDKs, shared, templates, etc... the new layout has to be like this: https:/
To finish, remove the use of update-
Changed in dotnet6 (Ubuntu): | |
importance: | Undecided → High |
status: | New → Confirmed |
Changed in dotnet6 (Ubuntu Jammy): | |
assignee: | nobody → Miriam España Acebal (mirespace) |
Changed in dotnet6 (Ubuntu Kinetic): | |
assignee: | nobody → Miriam España Acebal (mirespace) |
Changed in dotnet6 (Ubuntu Jammy): | |
importance: | Undecided → High |
Changed in dotnet6 (Ubuntu Kinetic): | |
importance: | Undecided → High |
Changed in dotnet6 (Ubuntu Jammy): | |
status: | New → Confirmed |
Changed in dotnet6 (Ubuntu Kinetic): | |
status: | New → Confirmed |
Changed in dotnet6 (Ubuntu Kinetic): | |
status: | Confirmed → In Progress |
Changed in dotnet6 (Ubuntu Jammy): | |
status: | Confirmed → In Progress |
description: | updated |
description: | updated |
summary: |
- Make the dotnet6 package conform to the official MS installation layout + [SRU] Upstream microrelease, arm64 bootstrap and file layout changes for + upcoming dotnet7 release |
tags: |
added: verification-needed-kinetic removed: verification-done-kinetic |
This bug was fixed in the package dotnet6 - 6.0.111-0ubuntu3
---------------
dotnet6 (6.0.111-0ubuntu3) lunar; urgency=medium
* Don't remove the --with-sdk option, this is supposed to be there.
-- Steve Langasek <email address hidden> Thu, 17 Nov 2022 20:57:19 +0000