Bug#1057089: bullseye-pu: package usrmerge/37~deb12u1

2023-12-21 Thread Jonathan Wiltshire
Control: tag -1 confirmed

On Wed, Nov 29, 2023 at 03:46:30PM +0100, Andreas Beckmann wrote:
> [ Reason ]
> Improve the usrmerge experience in bookworm.
> A few more ancient packages were found that need to be removed first for
> usrmerge to succeed, add versioned Breaks against them.
> Depending on the time a system was bootstrapped or converted, there may
> be biarch directories/links not owned by any package
> (e.g. /usr/libx32 and /libx32 -> /usr/libx32)
> Since these are now handled by the respective packages from src:glibc,
> bootstrapping and conversion no longer create them and we can clean them
> up if they are empty and not owned by a package.
> Clarify errors in case something goes wrong during usrmerge conversion.

Please go ahead.

Thanks,

-- 
Jonathan Wiltshire  j...@debian.org
Debian Developer http://people.debian.org/~jmw

4096R: 0xD3524C51 / 0A55 B7C5 1223 3942 86EC  74C3 5394 479D D352 4C51
ed25519/0x196418AAEB74C8A1: CA619D65A72A7BADFC96D280196418AAEB74C8A1



Bug#1057089: bullseye-pu: package usrmerge/37~deb12u1

2023-11-30 Thread Marco d'Itri
On Nov 29, Andreas Beckmann  wrote:

> Improve the usrmerge experience in bookworm.
Great idea, thank you for working on this!

-- 
ciao,
Marco


signature.asc
Description: PGP signature


Bug#1057089: bullseye-pu: package usrmerge/37~deb12u1

2023-11-29 Thread Luca Boccassi
On Wed, 29 Nov 2023 15:46:30 +0100 Andreas Beckmann 
wrote:
> Package: release.debian.org
> Severity: normal
> Tags: bullseye
> User: release.debian@packages.debian.org
> Usertags: pu
> X-Debbugs-Cc: usrme...@packages.debian.org
> Control: affects -1 + src:usrmerge
> 
> [ Reason ]
> Improve the usrmerge experience in bookworm.

Hi Andreas,

This looks like a good idea to me, and the diff looks good - but
assuming you did mean bookworm, as the changelog implies, the
tags/title are referencing bullseye.

-- 
Kind regards,
Luca Boccassi


signature.asc
Description: This is a digitally signed message part


Bug#1057089: bullseye-pu: package usrmerge/37~deb12u1

2023-11-29 Thread Andreas Beckmann
Package: release.debian.org
Severity: normal
Tags: bullseye
User: release.debian@packages.debian.org
Usertags: pu
X-Debbugs-Cc: usrme...@packages.debian.org
Control: affects -1 + src:usrmerge

[ Reason ]
Improve the usrmerge experience in bookworm.
A few more ancient packages were found that need to be removed first for
usrmerge to succeed, add versioned Breaks against them.
Depending on the time a system was bootstrapped or converted, there may
be biarch directories/links not owned by any package
(e.g. /usr/libx32 and /libx32 -> /usr/libx32)
Since these are now handled by the respective packages from src:glibc,
bootstrapping and conversion no longer create them and we can clean them
up if they are empty and not owned by a package.
Clarify errors in case something goes wrong during usrmerge conversion.

[ Impact ]
Unclear errors if something fails.
Failing usrmerge conversion if certain ancient packages are installed.
Leftover unowned files that may disappear on certain upgrade paths and
confuse CI tools.
Inconsistent handling of /etc/shells and shells.state.

[ Tests ]
Local piuparts tests of bookworm (w/ updated package) and various
distupgrade tests from bullseye (or earlier) to bookworm (w/ updated
package).

[ Risks ]
Low.

[ Checklist ]
  [*] *all* changes are documented in the d/changelog
  [*] I reviewed all changes and I approve them
  [*] attach debdiff against the package in (old)stable
  [*] the issue is verified as fixed in unstable

[ Changes ]

+usrmerge (37~deb12u1) bookworm; urgency=medium
+
+  * Rebuild for bookworm.
+
+ -- Andreas Beckmann   Mon, 27 Nov 2023 11:35:49 +0100
+
+usrmerge (37) unstable; urgency=medium
+
+  [ Johannes Schauer Marin Rodrigues ]
+  * Use $DPKG_ROOT in usr-is-merged.postinst. (Closes: #1050755)
+
+ -- Marco d'Itri   Tue, 29 Aug 2023 02:14:10 +0200
+
+usrmerge (36) unstable; urgency=medium
+
+  * Added code by Andreas Beckmann to clean up the biarch libraries
+directories when they are not needed. (Closes: #1038853)
+  * Changed postinst to not run convert-etc-shells again on already
+converted systems and to run update-shells to make sure that the
+new shells.state file introduced in bookworm is up to date.
+(Closes: #1033167)
+  * Improved the instructions to deal with a mounted /lib/modules/,
+which can also happen on some Xen-based systems. (Closes: 1034346)
+  * Greatly improved the error messages when commands execution fails
+(see #1037362).
+  * Added a versioned conflict with libc-bin, only relevant for the
+conversion script. (Closes: #1037362)
+  * Added a versioned conflict with dhcpcd. (Closes: #1038832)
+  * Added a versioned conflict with libparted1.8-10. (Closes: #1038832)
+  * Added a versioned conflict with lustre-utils. (Closes: #1038832)
+
+ -- Marco d'Itri   Sun, 27 Aug 2023 13:56:49 +0200

 convert-usrmerge  | 34 +++---
 debian/README.Debian  |  6 ++
 debian/changelog  | 33 +
 debian/control|  9 -
 debian/usr-is-merged.postinst | 28 
 debian/usrmerge.postinst  | 28 ++--
 6 files changed, 116 insertions(+), 22 deletions(-)

[ Other info ]
This is a rebuild of a package that was previously in sid and testing.
(The current version (38) in sid made usrmerge mandatory in all cases
and is not applicable to bookworm (which supports the usrmerge opt-out.)

Andreas
diff --git a/convert-usrmerge b/convert-usrmerge
index e9398f5..00200f3 100755
--- a/convert-usrmerge
+++ b/convert-usrmerge
@@ -28,6 +28,8 @@ my %Ignore_In_Root = map { $_ => 1 } qw(
/lib/udev/hwdb.bin
 );
 
+$ENV{LC_ALL} = 'C';
+
 check_free_space();
 
 check_overlayfs();
@@ -217,9 +219,11 @@ sub convert_file {
 # To prevent a failure later, the regular files of the libraries used by
 # cp and mv must be converted before of the symlinks that point to them.
 sub early_conversion_files {
+   no autodie qw(close);
+
open(my $fh, '-|', 'ldd /bin/cp');
my @ldd = <$fh>;
-   close $fh;
+   close $fh or fatal("Failed to execute 'ldd /bin/cp'");
 
# the libraries
my @list = grep { $_ } map { /^\s+\S+ => (\/\S+) / and $1 } @ldd;
@@ -340,9 +344,9 @@ END
 
 ##
 sub check_free_space {
-   local $ENV{LC_ALL} = 'C';
-   my $fh;
+   no autodie qw(close);
 
+   my $fh;
open($fh, '-|', 'stat --dereference --file-system --format="%i" /');
my $root_id = <$fh>;
die "stat / failed" if not defined $root_id;
@@ -361,14 +365,14 @@ sub check_free_space {
my $free = $free_blocks * ($bs / 1024);
my @dirs = grep { -e $_ } directories_to_merge();
 
-   open($fh, '-|',
-   "du --summarize --no-dereference --total --block-size=1K 
@dirs");
+   my $cmd = "du --summarize --no-dereference --total --block-size=1K