[Bug 2030482] Re: [MIR] s390-tools Rust dependencies (vendored)
Frank Heimes
2030482 at bugs.launchpad.net
Fri Oct 6 09:50:54 UTC 2023
Also a big thanks from my side to all people involved - from Partner
Engineering !
** Also affects: ubuntu-z-systems
Importance: Undecided
Status: New
** Changed in: ubuntu-z-systems
Status: New => Fix Released
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to s390-tools in Ubuntu.
https://bugs.launchpad.net/bugs/2030482
Title:
[MIR] s390-tools Rust dependencies (vendored)
Status in Ubuntu on IBM z Systems:
Fix Released
Status in s390-tools package in Ubuntu:
Fix Released
Bug description:
[Availability]
The package s390-tools is already in Ubuntu main, and is re-reviewed due to signinficant changes in the package (new Rust code-base, including vendored dependencies).
The package s390-tools builds for the architectures it is designed to work on.
It currently builds and works for architectures: s390x, and to a much more limited extent, amd64, arm64 and ppc64el
Link to package https://launchpad.net/ubuntu/+source/s390-tools
[Rationale]
- The package s390-tools is required in Ubuntu main for hardware enablement on s390x machines
- The package s390-tools will not generally be useful for a large part of
our user base, but is important/helpful still because it's necessary for the proper operation
of IBM Z mainframe.
- There is no other/better way to solve this that is already in main or
should go universe->main instead of this.
- The package s390-tools is required in Ubuntu main no later than
Mantic Beta freeze
[Security]
- No CVEs/security issues in this software in the past (CVE-2021-25316 doesn't apply)
- no `suid` or `sgid` binaries
- There are a lot of binaries in /sbin, which is expected as they are used for machine administration.
- Package does install services, timers or recurring jobs
* cpacfstatsd -> system statistics
* cpi.service -> used to provide system data to the hypervisor
* cpuplugd.service -> CPU hotplug
* dumpconf.service -> Configures dumps on panics
* iucvtty-login at .service, ttyrun-getty at .service -> TTY handling
* mon_fsstatd.service, mon_procd.service -> monitoring
Vendored dependencies security history:
- https://github.com/rustsec/advisory-db/blob/main/crates/once_cell/RUSTSEC-2019-0017.md
- https://github.com/rustsec/advisory-db/tree/main/crates/openssl
-> Note that while the vendored crate is affected by RUSTSEC-2023-0044 the
relevant function is never called by the compiled binary, either directly or
indirectly.
- https://github.com/rustsec/advisory-db/blob/main/crates/serde_yaml/RUSTSEC-2018-0005.md
- https://github.com/rustsec/advisory-db/blob/main/crates/socket2/RUSTSEC-2020-0079.md
There doesn't seem to be any specific security features attached to
those services.
In addition, there are several udev rules shipped with the software,
to deal with s390-specific hardware.
- 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/s390-tools/+bug
-> mostly feature requests
- Upstream's bug tracker: https://github.com/ibm-s390-linux/s390-tools/issues
Note that we've completely diverged from Debian, so their package isn't relevant to this MIR.
Upstream is heavily involved with the Ubuntu packaging, often providing us with verifications for SRUs
and tests of potential packages.
- The package does deal with exotic hardware, the Canonical Partners Engineering team has access
to the relevant machines to be able to test, fix and verify bugs.
[Quality assurance - testing]
- The package does not run a test at build time because no test suite is
provided upstream. Things recently changed a bit with the new Rust code
having a few tests, but I'm reluctant to enable them as the vendored
dependency tree would more than double in size (compressed!)
- The package does not run an autopkgtest.
- The package can not be well tested at build or autopkgtest time
because the majority of tools inside of the package need either:
- a special hardware level (for example z14 for secure boot, z15 for secure execution aka confidential computing) and/or
- a native (LPAR) installation (for lowest level hardware access) and/or
- special configuration settings (in the LPAR activation profile, for exampel for counters) and/or
- specially assigned hardware cards (like crypto, RoCE, NVMe, or other hardware) and/or
- hardware cards setup in a special way (for example in case of crypto with a master key set) and/or
- run the hardware management console (hmc) in different modes (PR/SM vs DPM, but there is no simple way to switch between modes)To make up for that:
It's contractually agreed with our partner that the partner runs (and is in charge of) the testing on hardware that we do not have at Canonical (that is btw. also the case for SRUs) and that we (actually Solutions QA) do (does) a manual test around GA (that incl. s390-tools, but also manual and autoinstallations, which again make use of various s390-tools components) for every Ubuntu release, where the result is added to an overall test spreadsheet for that particular Ubuntu release for s390x.
The corresponding S-QA doc is: https://docs.google.com/document/d/1ixvRDgEHNjZwOujYJ9hmfbQte9A05ffOTrKi_PK82cs
- It is not possible to leave s390-tools in universe, since a lot of it's content (like bootloader, tools to activate hardware - just to name a few) are mandatory at install time and are required even for a base and minimal installation.
[Quality assurance - packaging]
- debian/watch is present and works
- debian/control defines a correct Maintainer field
- Recent build logs
https://launchpadlibrarian.net/682423862/buildlog_ubuntu-mantic-s390x.s390-tools_2.29.0-0ubuntu1_BUILDING.txt.gz
There is the usual issue of noisy Rust warnings in the dependencies.
- Lintian output is attached. It doesn't look very good, probably due to the
fact that since the package basically only fully build on s390x we rarely
produce binary packages on development machines, which is where Lintian runs
would usually scream at us.
- Lintian overrides are present, but ok because they're about Ubuntu-specific
source fields.
- This package does not rely on obsolete or about to be demoted packages.
- This package has no python2 or GTK2 dependencies
- The package will be installed by default on s390x, but does not ask debconf
questions higher than medium
- Packaging and build is fairly easy, link to debian/rules:
https://git.launchpad.net/ubuntu/+source/s390-tools/tree/debian/rules
There's a little bit of complexity due to the signing requirements, the fact
that is mostly builds on s390x, and also due to the Rust integration, but it's
still mostly straightforward.
[UI standards]
- Application is not end-user facing (does not need translation)
[Dependencies]
- No further depends or recommends dependencies that are not yet in main
[Standards compliance]
- This package correctly follows FHS and Debian Policy
[Maintenance/Owner]
- Foundations team is already subscribed to the package. Note that most of the
day-to-day work is done by Frank Heimes
- This does not use static builds using static archive from other
packages.
- The Foundations team is aware of the implications of vendored code and (as
alerted by the security team) commits to provide updates and backports
to the security team for any affected vendored code for the lifetime
of the release (including ESM).
- This package uses vendored rust code tracked in the Vendored-Sources-Rust field
in the package, refreshing that code is outlined in debian/README.source (not yet uploaded, see attached debdiff)
- This package is rust based and vendors all non language-runtime dependencies.
To be noted, upstream has defined a policy regarding which Rust dependencies
are acceptable, whic hseems fairly sensible and should reduce the inevitable growth
of that dep tree:
https://github.com/ibm-s390-linux/s390-tools/tree/master/rust#what-
third-party-crates-can-be-used-for-s390-tools
- The package has been built in the archive more recently than the last
test rebuild
Feature request: bug #2030316
Original s390-tools MIR: bug #1521984
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu-z-systems/+bug/2030482/+subscriptions
More information about the foundations-bugs
mailing list