Discussion:
[MBF]: Proposing `Rules-Requires-Root: no` being the new default
Add Reply
Niels Thykier
2024-11-29 10:10:01 UTC
Reply
Permalink
Hi

We would like to propose a change in default for `dpkg`, which will
enable `rootless` by default (changing it from "opt-in" to "opt-out").
This would be a considerable milestone bringing us to into 90-99%
territory of removing the need for root (`fakeroot` or otherwise)
in the Debian packaging stack.

While my long term goal is the complete removal of `fakeroot` as a
mandatory piece in our packaging stack, it is *not* the goal of this
MBF. For this MBF, the focus is on removing blockers to
switching the default rather than removing use of `fakeroot` in
general. This is also why one the solutions we propose to the "busy
maintainer" is an "opt-out" rather than "fix the root cause".

# The quick summary

* About 10000 packages build successfully with this change.
* About 225 bugs (~2%) would be filed at severity important due to
problems detected with these changes.
* About 650 packages (~6.5%) had an unrelated FTBFS in sid when the
test where done that could hide other failures.
* Four packages could not build on the test infrastructure.
* Two packages were identified to misbuild. These already have bugs
filed (one misbuild without the change due to a bug in packaging;
the other will misbuild with the change).

# The bug template used

Severity: important
User: ***@thykier.net
Usertags: rrr-no-as-default-issue

Dear maintainer,

During a test rebuild for building packages "Rules-Requires-Root: no" as
the default in `dpkg`, {{ src.name }} failed to rebuild.

Log Summary:
-------------------------------------------------------------------------------
[...]
{{ log_snippet }}
-------------------------------------------------------------------------------

The above is just how the build ends and not necessarily the most
relevant part. If required, the full build log is available here (for
the next 30
days):

https://people.debian.org/~nthykier/rrr-no-as-default/logs/{{
build.log_artifact_id }}.gz

You can find common solutions at
https://people.debian.org/~nthykier/rrr-no-as-default/docs/solutions.md

If this is really a bug in one of the build-depends, please use
reassign and affects, so that this is still visible in the BTS web
page for this package.

If this package is listed in
https://people.debian.org/~nthykier/rrr-no-as-default/docs/static-ownership.list,
then please just set `Rules-Requires-Root: binary-targets` to the source
stanza of `debian/control` as a fix to this bug.

If this package is listed in
https://people.debian.org/~nthykier/rrr-no-as-default/docs/maybe-misbuilds.list,
then the package was deemed at risk for misbuilding (having wrong
ownership) but had a FTBFS problem we tested it. Please test whether the
package works with `Rules-Requires-Root: no` validating that the
resulting deb has the correct ownership for all paths in the deb.

Thanks,


# Affected packages

We have sorted the affected packages into the following groups:

1) Packages with static non-`root:root` ownership. These will
generally need a `Rules-Requires-Root: binary-targets` for now, and
then they are done.

2) Packages that do not have any non-`root:root` ownership. These can
often be converted to `Rules-Requires-Root: no` with a bit of
tweaking (see attached solutions.md). However, in a pinch, you can
just set `Rules-Requires-Root: binary-targets` to get off the list
of blockers and come back to it later.

3) Packages that were deemed at risk of misbuilding in a manual review,
but FTBFS for an unrelated reason when we did the test rebuild.

The "all-affected.dd-list" and "all-affected.list" contains packages
from all groups and defines the list of packages that we will file
bugs against. The "static-ownership.dd-list" (and
"static-ownership.list") only contains the packages with static
non-`root:root` ownership.

The packages in "static-ownership.list" should just be uploaded with
`Rules-Requires-Root: binary-targets` added to the source stanza of
`debian/control`. For all other packages, it should be possible to
convert it to use `Rules-Requires-Root: no` if the maintainer has
the capacity to do so. See solutions.md for common issues and how
to solve them.

Finally, the packages in the "maybe-builds.dd-list" and
"maybe-misbuilds.list" are the packages in group 3. We are filing a bug
against these packages as a precaution rather than a confirmed problem.
See "Findings of manual review" below for details.

# Background, context, and other details

This section is for people that want more details on what we are doing,
why I am pushing for it, the testing method using, etc. You can skip
this if you are already convinced.

## Motivation for the change

Changing the default is a major undertaking and the change should have
long term benefits that should outweigh the short term costs. To that
effect, my motivation for removing `fakeroot` is that the tool is a
fragile liability that costs us unnecessary complexity and resources.

* Assembling debian packages should not require `root` in the first
place. What we need is to assemble some archives with correct
metadata; nothing more. This is possible to do with userspace tools
as a normal user and for over 99% of the archive, `dpkg-deb` can
now this without needing `fakeroot`.

- Reminder: While my argument is for the 100% case, this MBF is
aimed at optimizing for the common case rather than the 1% case.

* Like many other `LD_PRELOAD` hacks, `fakeroot` plays a game of
whack-a-mole to intercept all the library calls relevant for its
task. When it loses the whack-a-mole game, we end up with silent
misbuilds, where installing the deb package potentially becomes
a security issue since "random" paths on the system is now owned
by a non-root user. The wrong file/dir with incorrect ownership
is a freebie "local-user to root" security bug.

A recent example being #1023286 which caused -dbgsym packages to
have a directory owned by a non-root user. The `fakeroot` fix
was then blocked for months due to FTBFS on mipsel (#1024544).
The primary reason why this was such a small issue where:

1) Wide-spread use of `Rules-Requires-Root: no` to limit which
packages could be affected (about 50% of the archive had
migrated away from `fakeroot`).

2) A quick fix to `debhelper` to remove the reliance on
`fakeroot` when assembling `-dbgsym` packages.

* The use of the `fakeroot` tool is not transparent even when
it fails to intercept critical library calls:

- #534879 (chmod race with tcp engine from 2009; unfixed)
- #606064 (segfault in i386 chroot on amd64 host)
- #948522 (`file` with sandbox enabled broke under `fakeroot`)
- #239057 (setgid directories are not correctly emulated)
- #799858 (SELinux labels are not initialized properly)
- #802612 (fakeroot fails in user namespaces)

This a small curated list of some of the open issues we have had
with fakeroot in the Debian bug tracker. These are basically
technical debt plus upkeep to have `fakeroot` match the changing
Linux landscape.


These are my primary arguments for us moving away from `fakeroot` in
general. With this MBF, we would change the default to "no fakeroot"
rather than "with fakeroot".


Note, despite my arguments against `fakeroot`, its maintainers
have my respect and sympathy. The tool has been instrumental
to Debian being where it is today (this is our version of the
Python's GIL problem), and `fakeroot` cannot have been easy
to maintain.

## Cost of the change / Key results

217 packages will FTBFS with the change. 2 will misbuild (bugs already
filed for these) and 10078 will "just work(tm)".

645 packages failed during the build testing for unrelated reasons
(including OOM on the build host).

Note that `debftbfs` (devscripts) identified existing FTBFS bugs for
422 packages in the "to be tested set".


## What happens after the bugs are fixed and the default is changed?

The endgame (from the Motivation part) is migrating all packages away
from `Rules-Requires-Root: binary-targets`. There will be two fronts
to work on:

* Packages with all `root/root` ownerships in their debs that would
need its root cause fixed, so they can build without `fakeroot`
(this is usually removing unnecessary chown'ing).

* Packages with static non-`root/root` ownerships in their debs.
There is no rootless workflow for these with `dpkg-deb` supported
features.

Note: Packages will still be able to Build-Depends on `fakeroot`,
which might be relevant for running some testsuites (etc.). This
targeted use of `fakeroot` is a lot more palatable, since it
reduces the scope for problems and makes us immune to wrong
ownership problems.

## Method and failure modes

This section is only relevant if you are curious about how we found
these packages, or you are concerned we missed something. If you agree
with the premise and just want to fix your packages, feel free to skip
this section.

While planning this default change, Guillem and I considered different
possible failure scenarios for how changing the default could
break. Based on our thoughts on this topic, we devised a testing plan
to identify these potential problems and how to resolve them.

### Failure modes

We identified the following likely outcomes of building a package
without root despite it not opting into `Rules-Requires-Root: no`:

1) Successful build. This is the most common case due to widespread
use of `dh` and its ability to enable rootless builds
automatically when available.

2) FTBFS. Any manual `chown`'ing (or `install -o/-g`) will generally
cause the build to fail, since both requires root user privileges.

Any legacy `checkroot` targets will also fall into this, since
they check the current user is root and abort otherwise. Though,
it is important to note here that `dh_testroot` does not fail here
(since it expects the `debhelper` stack to react accordingly).

3) Silent misbuild. Basically, anything in group 2) where the error
code of the command/systemcall is ignored leading to a
"successful" build as far as exit code goes, but incorrect content
in the package.

This comes in two subgroups:
a) Non-root owned paths in the package.
b) All `root:root` owned paths in the package, when at least
one path should have been non-`root:root` (like `root:bin`)

The primary concern here was the "Silent misbuild", since they would
go unnoticed in a mass-rebuild and likely hide among successful
builds.

### Risky packages

Secondly, we looked at which kind of packages were most likely to have
this kind of failure. These are grouped:

pg1) Packages with no standardized build system (The `other` on
trends.d.n). We considered this group to be very likely to have
problems with misbuilds if that would occur at all.

pg2) Packages with non-`root:root` static ownership.
We considered this group to be possible to have problems, since
one way of implementing static ownership is letting upstream's
build system do the `chown`'ing and then doing `dh_fixperms -X` to
keep the special ownership/mode. If the upstream build system
ignores errors, this style could cause a problem.

pg3) Packages using `classic debhelper`. These were originally
classified as unlikely. However, a codesearch.d.n on `dpkg(-deb)`
in `debian/rules` usage was done in the end just to be safe.

pg4) Packages using `cdbs` or `dh`. These have been assumed to be fine.
In theory, they can be made unsafe, but the maintainer would have
to go out of their way to replace the `dh_builddeb` with
`dpkg-deb --build`. Though, obvious uses of that command would
have been caught be the codesearch done as part of `pg3)`.


All the packages in `pg1)` plus `pg2)` plus the packages matched by the
codesearch listed in `pg3)` were manually reviewed for failure modes.

Note that the codesearch is not flawless, since packages can include
their packaging from other files in the `debian` directory. When the
included file does not start with `debian/rules` (such as
`include debian/implicit`), then the codesearch will have missed its
contents.

### Findings of manual review

Two cases of "successful misbuilds" have been identified:

* libjama (#1086841). This is from the `other` build system list.

* binutils-mipsen (#1082298). This was mentioned by (I think) Helmut
during our analysis discussions in #dpkg-devel and not found
directly. Note this one is technically a "false-positive", since
the package already has `Rules-Requires-Root: no` (that is, this
is bug is not about the default changing, but an uploader applying
`Rules-Requires-Root: no` without confirming it worked correctly)


Additionally, the following packages were found to be suspected of
silent misbuilds, but failed for unrelated reasons in our build
testing:

* cross-toolchain-base{,-mipsen,-ports}
* gcc-*-cross{,-mipsen,-ports}

Their packaging is non-trivial and was not fully analyzed, so they may
be safe. One of these groups chains into a `dpkg-buildpackage` (as in
`debian/rules` calls `dpkg-buildpackage` and the other group seems to
manually pack or repack debs via `dpkg-deb`. This was deemed too unusual
to spend the non-trivial effort to analyze fully given they could not be
build in the test infrastructure for unrelated reasons.

### What was rebuild on debusine.d.n

When we did the rebuild, the following packages were rebuild:

1) All packages from pg1

2) All packages from pg2

3) All packages tagged by `lintian` with
`silent-on-rules-requiring-root`


The first two groups were rebuilt mostly confirm the manual review and
to validate the rebuild setup. This also weeded out a few
false-positives in the manual review.

All the builds was done on arm64 (it had more capacity available).

### The modified dpkg

The rebuild was done with `dpkg` from this branch
https://git.hadrons.org/cgit/debian/dpkg/dpkg.git/commit/?h=next/rrr-default-no

(HEAD being 82cafddd936946b88f67b1e76601b04ca8a81586 with a `gbp dch -S`
on top)


### Full build results

A total of 10940 source packages were rebuild.

* 10078 build successful.
- Of these, 2 misbuild successfully (both noted above)
* 862 failures
- Of these 217 failed with an error related to this change
- The remaining failed for other reasons (including running
out of memory on the host, etc.)

The `check-logs` script (attached) has the regexes used for classifying
the logs for the curious.

# Thanks

Thanks to the Debusine team for providing the test infrastructure.

Thanks to Stefano for his rebuild tooling stack, which easily saved me a
week of work.

Thanks to Helmut for making us aware of Debusine being able to help with
this purpose and helping with discussions in #dpkg-devel.

Best regards,
Guillem and Niels
Santiago Vila
2024-11-29 11:50:01 UTC
Reply
Permalink
This is awesome work! I hope you can start the MBF soon.
Post by Niels Thykier
* 862 failures
- Of these 217 failed with an error related to this change
- The remaining failed for other reasons (including running
out of memory on the host, etc.)
I'd like to look at those "remaining". Can you put the list somewere?

When I test for packages which fail if "some special condition is met"
(for example, make --shuffle) I usually try to do two groups: Packages which
fail with the condition and packages which would fail anyway, and I try to be
sure in which group each package is, so maybe I could try to fill the missing
gaps here.

Thanks.
Niels Thykier
2024-11-29 12:30:02 UTC
Reply
Permalink
Post by Santiago Vila
This is awesome work! I hope you can start the MBF soon.
  * 862 failures
    - Of these 217 failed with an error related to this change
    - The remaining failed for other reasons (including running
      out of memory on the host, etc.)
I'd like to look at those "remaining". Can you put the list somewere?
When I test for packages which fail if "some special condition is met"
(for example, make --shuffle) I usually try to do two groups: Packages which
fail with the condition and packages which would fail anyway, and I try to be
sure in which group each package is, so maybe I could try to fill the missing
gaps here.
Thanks.
I do not have a curated/pruned list of those packages at hand, since
they were not my priority.

I did a quick naive query in [ignored-problems.list] as a quick
approximation, which will have failures that I retried and
infrastructure issues (like OOM) plus it misses a few failures that I
did not fully "classify". Manually review of the log concluded they were
ignorable, but I did not have a good regex for them, so the tool thinks
they are unclassified.

I have also uploaded the underlying sqlite database I used at
[db.sqlite3]. The database was created with
https://salsa.debian.org/stefanor/debusine-rebuilds/. I do not think the
tooling there will help you for the data analysis you need.

If you look into the database, I think you would need all source
paackages from `srcpkg` where the latest build per source package
(subquery on `build`) and then LEFT JOIN with `problem` to find packages
without a problem OR with a problem that was ignored (plus also
filtering `build.architecture != 'amd64'` because I scheduled a bunch of
packages on the wrong architecture by mistake at some point). Though, I
am not in the mental space for writing and debugging that query, so I
will leave that to the readers. :)

I think I got most of the logs from debusine into the logs folder.
Though, if you should need a log I was missing, they should still be
available for another 14-21 days (depending on the build). Find the
`build.work_request_id` for the build and insert into the URL
https://debusine.debian.net/debusine/work-request/{ID}/

That will give you a page with the log (under "Output artifacts"), build
status (etc.). Example:
https://debusine.debian.net/debusine/work-request/57852/

(If you need logs of logs, have a look at the debsuine-rebuild's
"log-download" command to see how it finds the URL).


That is the best I can offer here, so I hope it was useful.

Best regards,
Niels

[ignored-problems.list]:
https://people.debian.org/~nthykier/rrr-no-as-default/docs/ignored-problems.list

[db.sqlite3]:
https://people.debian.org/~nthykier/rrr-no-as-default/docs/db.sqlite3
Antonio Terceiro
2024-11-29 16:20:01 UTC
Reply
Permalink
Thanks for working on this!
ruby-soap4r
This has been fixed as of today, so you don't need to report a bug.
Wookey
2024-11-29 16:50:01 UTC
Reply
Permalink
On 2024-11-29 11:08 +0100, Niels Thykier wrote:

Lots of good stuff...
Should be:

The primary reasons why this was such a small issue were:

(or maybe
The primary reason why this was such a small issue was:
?, but there are two reasons given so this seems unlikely to be what was meant
)
Post by Niels Thykier
1) Wide-spread use of `Rules-Requires-Root: no` to limit which
packages could be affected (about 50% of the archive had
migrated away from `fakeroot`).
2) A quick fix to `debhelper` to remove the reliance on
`fakeroot` when assembling `-dbgsym` packages.
A detail, I know, but we take detail-correction seriously round here. :-)

Wookey
--
Principal hats: Debian, Wookware
http://wookware.org/
Richard Lewis
2024-11-29 23:20:01 UTC
Reply
Permalink
Post by Niels Thykier
# The bug template used
Severity: important
Usertags: rrr-no-as-default-issue
Dear maintainer,
During a test rebuild for building packages "Rules-Requires-Root: no" as
^
minor point, but adding "with" here would make it easier to follow
Niels Thykier
2024-12-02 10:40:01 UTC
Reply
Permalink
Hi Niels, hi Guillem,
thanks for the initiative and +1 from my side.
Thanks.
Post by Niels Thykier
# The bug template used
What's your proposed timeframe for making the switch? Trixie, Forky, no
targetted release but when bug count is reasonably low?
Since the freeze timeline for Trixie is not announced, it is not
possible to determine whether it is realistic for Trixie at this
time[1]. For now, we are playing it by ear on whether it is will be
Trixie or Forky.

If this change does not make it in Trixie, then my plan is to push for
it early in the development cycle of Forky. In that sense, you can see
it as "In Trixie if possible, definitely in or before Forky".
Using severity important indicates some kind of urgency, so maybe it
would be good to mention in the bug report template when you plan to
implement those changes.
I personally prefer if such MBFs mention what release they target.
Regards,
Michael
I had "Severity: important" down as a convention for the initial filing
for transitions rather than a sign of urgency.
https://www.debian.org/Bugs/Developer#severities does not recognize this
convention, but it is used by the RT in
https://wiki.debian.org/Teams/ReleaseTeam/Transitions (and yes, I see
this change as a kind of transition)

I have added the following remark to the bug template:

"""
The goal is to have the default changed in `dpkg` either in `Trixie` or
`Forky`, depending on progress and feasibility with the release schedule
for Trixie.
"""

Best regards,
Niels

[1]: All the "Key release dates" says "[TBA]" and the latest general
announcement from the release team is about a year ago.
Niels Thykier
2024-12-02 10:50:02 UTC
Reply
Permalink
Hi Niels, hi Guillem,
thanks for the initiative and +1 from my side.
Thanks.
Post by Niels Thykier
# The bug template used
What's your proposed timeframe for making the switch? Trixie, Forky, no
targetted release but when bug count is reasonably low?
Since the freeze timeline for Trixie is not announced, it is not
possible to determine whether it is realistic for Trixie at this
time[1]. For now, we are playing it by ear on whether it is will be
Trixie or Forky.

If this change does not make it in Trixie, then my plan is to push for
it early in the development cycle of Forky. In that sense, you can see
it as "In Trixie if possible, definitely in or before Forky".
Using severity important indicates some kind of urgency, so maybe it
would be good to mention in the bug report template when you plan to
implement those changes.
I personally prefer if such MBFs mention what release they target.
Regards,
Michael
I had "Severity: important" down as a convention for the initial filing
for transitions rather than a sign of urgency.
https://www.debian.org/Bugs/Developer#severities does not recognize this
convention, but it is used by the RT in
https://wiki.debian.org/Teams/ReleaseTeam/Transitions (and yes, I see
this change as a kind of transition)

I have added the following remark to the bug template:

"""
The goal is to have the default changed in `dpkg` either in `Trixie` or
`Forky`, depending on progress and feasibility with the release schedule
for Trixie.
"""

Best regards,
Niels

[1]: All the "Key release dates" says "[TBA]" and the latest general
announcement from the release team is about a year ago.
Niels Thykier
2024-12-17 07:20:01 UTC
Reply
Permalink
Hi,

This is an update on the MBF for `Rules-Requires-Root: no` as the new
default.


# Qualitative updates:

* The bugs have all been filed. Most where filed on Dec 7, but I had
to file 15 special cases manually, which happened Dec 14.

* A number of permission denied issues have been identified. Usually
around `dh_strip`. Three common solutions have been:

a) Calling `dh_fixperms` before `dh_strip`. That is what `dh` does
in compat 13. Note this changes in compat 14, but compat 14
will introduce a change to `dh_auto_install` to counter this
problem.

b) Calling `chmod -R u+rwX debian/tmp` (etc.) right after doing the
upstream install. This is what `dh_auto_install` will do in
compat 14+.

c) Migrating from `cdbs` to `dh`. This is basically a variant of a)
because `cdbs` and `dh` had different command orders, which the
Perl team has favored.

* I have scheduled a 15-delayed NMU for libjama, which is the only
confirmed case of misbuilding, meaning the fix should be in unstable
before the end of the year.

The "possible misbuild" cases are still unknown. These were filed on
Dec 14, so the maintainers may not have had time to look at them
yet.

* I had a minor mistake in the number of bugs in my original, which was
largely offset by the fixes done by people before I filed the bugs.
Nevertheless, if you were wondering about the numbers being off, then
that is why.


# How you can help with progress


* You can tag the bug with `help` if you get stuck trying to get a
better solution. There are several people working on this who are
very happy to do patches and the upload, if you are out of Debian
time, capacity, or just want to focus on something else in Debian.

* Remember that `Rules-Requires-Root: binary-targets` is a perfectly
serviceable solution if you do not have time to look into a full
fix. Slab that line in, upload, and your package is off the TODO
list.

* reviewable-patch.{list,dd-list}: Bugs that have a patch or a MR,
for the maintainer to review.

Note: A lot of the patches are from the last 48 hours, so there
is no expectation from me that the maintainer had time to review
them.

* pending-upload.{list,dd-list}: Bugs where the maintainer either
committed a patch to the repo or acknowledged the patch in the BTS.

Please consider uploading soon. :)


Note: The list have been manually curated and are therefore **not** 1:1
with the BTS tags above. I am not sure I can commit to manually curating
with every update.


# Quantitative updates:
In total, 221 bugs where filed under the usertag:

https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=rrr-no-as-default-issue;users=***@thykier.net

Numbers as of this email:
* 52 are resolved (24%).
* 8 are tagged pending (3.5%)
* 13 are tagged patch excluding pending (6%)

If all patches were applied and uploaded in this instant, we would have
been 34% done with the bugs. I think there are also some pending RMs,
but I have not included them (I am trying to keep the manual crossing
checking to a minimum).

# Thanks

Thanks to all the people who have fixed their packages so far, provided
patches or done NMUs! We would not have been this far without you.

Best regards,
Niels
Niels Thykier
2024-12-30 23:10:01 UTC
Reply
Permalink
Post by Niels Thykier
Hi,
This is an update on the MBF for `Rules-Requires-Root: no` as the new
default.
Two weeks further down the line with another update. :)

# Qualitative updates:

* I have asked the release team to look into whether we should go ahead
with this for Trixie or wait until after the release. At this time,
there are still no announced freeze date for tool-chain changes and
transition.

* As a part of my write up to the release team, I went through the
key packages affected by this proposal. Doing so identified two
packages without bugs (the total was 28 with these 2):

- For some reason, I had overlooked the debian-installer in the
original rebuilds. I have filed a bug for it with a patch.

- The other key package (forgot the name already) had been test
built. However, I had originally misclassified is failure as
unrelated. I ended up doing a manual rebuild and confirmed that the
failure could be attributed to the removal of `fakeroot`. After
doing so, I filed a bug for that one with a patch as well.

Note one key package, uw-imap, also does not have a bug for this
transition. This is because it has a known FTBFS bug (#1075612).
It is unclear if the package will be affected by this transition
until the FTBFS bug is resolved (although a quick
`Rules-Requires-Root: binary-targets` is a trivial way to avoid
the question entirely if someone is looking into the RC bug).

* I created a prototype wrapper for `chown`, `chgrp`, and `install`
that can filter out the problematic ownership changes with the idea
that package helpers like `debhelper` could deploy it automatically.
It would also have other advantages like being able to stop
incorrect ELF binary `strip` (via `install -s`). The concept is at:

https://salsa.debian.org/debian/debhelper/-/merge_requests/132

Note: This would solve/work around 1-2 classes of the problems with
had in this MBF, but it would not have prevented the MBF. Still,
deploying this kind of change would make it easier to maintain Debian
packages going forward in some cases, so I am considering it.

* The libjama package has now been fixed. The maintainer uploaded a
patched version prior to the NMU that I uploaded, which was much
appreciated!

* I have uploaded a NMU for binutils-mipsen to fix #1082298. Note that
bug is not on the list since binutils-mipsen was broken without the
default change.


# How can you help with progress

 * You can tag the bug with `help` if you get stuck trying to get a
   better solution. There are several people working on this who are
   very happy to do patches and the upload, if you are out of Debian
   time, capacity, or just want to focus on something else in Debian.

#1089337 is an example of maintainers using `help` to get a patch.
We are also happy to do NMUs. Just mention if we should if that is
what you want. :)

 * Remember that `Rules-Requires-Root: binary-targets` is a perfectly
   serviceable solution if you do not have time to look into a full
   fix. Slab that line in, upload, and your package is off the TODO
   list.

I have used it myself several times when I hit non-trivial cases
such as requiring patching upstream build system code.

 * reviewable-patch.{list,dd-list}: The bug is tagged patch and is
waiting for the maintainer to review the patch. I also use it when
I provide a salsa MR or commit a patch to salsa (debian group).

Please review the patch and upload if possible. You are also more
than welcome to say "LGTM, feel free to NMU" and in most cases I
will take it from there with a no-delay NMU (example: #1089462).

   Note: A lot of the patches are from the last 48 hours, so there
   is no expectation from me that the maintainer had time to review
   them at the time of writing this email.

 * pending-upload.{list,dd-list}: The bug is tagged pending.

These come in two groups:
a. Maintainer reviewed the patch and committed it, but have not
uploaded. Please consider uploading soon if you have packages
in this category. :) b. There is a NMU in delayed and the
bug will soon be closed.


Unlike last time, I have **not** manually curated the lists. This time
the lists are 1:1 with the BTS tags.

# Quantitative updates

In total, 223 bugs where filed under the usertag:

https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=rrr-no-as-default-issue;users=***@thykier.net

Numbers as of this email:
* 71 are resolved (32%)
* 23 are tagged pending (10%)
* 19 are tagged patch excluding pending (9%)

If all patches were applied and uploaded in this instant, we would have
been 51% done with the bugs. I think there are also some pending RMs,
but I have not included them (I am trying to keep the manual crossing
checking to a minimum).


# Thanks

Thanks to all the people who have fixed their packages so far, provided
patches, reviewed patches + approved NMUs, or done NMUs! We would not
have been this far without you.

Best regards,
Niels
Niels Thykier
2025-01-02 12:50:01 UTC
Reply
Permalink
Hi,

Starting with announcement:

The next dpkg upload will change the default!

The Release Team has accepted the default change as long as we follow it
to the door, which I have every intention to do. :)

With this, we are now entering the endgame for this transition!

# How can you help?

* Apply patches and upload if there is already a patch or NMU for your
package. Alternatively, approving the NMU, so we can upload without
delay is also very helpful!

* If your package has an open bug without a patch at this time, please
just add `Rules-Requires-Root: binary-targets` to `debian/control`
and then upload. This has no risk of regressions and a proper fix
can always be done later.

* Help us ensure all the packages uploaded migrates to testing!

* If you run into any kind of issues due to this transition, please
feel free to CC me for advice/patches/NMUs.

# Qualitative updates

* Trixie will be "rootless by default!"

* All the bugs will become RC for sid + trixie as of the next dpkg
upload.

# Quantitative updates

In total, 223 bugs where filed under the usertag:

https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=rrr-no-as-default-issue;users=***@thykier.net

Numbers as of this email:
* 102 are resolved (46%)
* 38 are tagged pending (17%)
* 49 are tagged patch excluding pending (22%)

If all patches were applied and uploaded in this instant, we would have
been 85% done with the bugs. I think there are also some pending RMs,
but I have not included them (I am trying to keep the manual crossing
checking to a minimum).

# Thanks

Thanks to all of you who:

* Provided patches or did NMUs
* Reviewed the patches and either uploaded or approved the NMUs,
so we could quickly upload.
* Process packages for removals!


Best regards,
Niels

Loading...