Source: ncurses
Version: 6.4+20231016-1
Severity: normal
Tags: patch
User: helm...@debian.org
Usertags: dep17m2
X-Debbugs-Cc: vor...@debian.org

We want to finalize the /usr-merge transition via DEP17. For ncurses,
this means moving libraries to /usr. Until recently, doing so was
prohibited by the file move moratorium. This has now been delegated to
https://wiki.debian.org/UsrMerge. We still must be careful about such
moves e.g. in essential packages.

https://subdivi.de/~helmut/dep17.html gives us a template of what might
go wrong. Most importantly, ncurses is not listed as not-affected by the
2038 transition https://wiki.debian.org/ReleaseGoals/64bit-time.
Therefore, it may become necessary to rename some of the library
packages adding a "t64" suffix to the package name. In a bookworm to
trixie upgrade, this constitutes a file move between packages and
concurrent move from / to /usr leading to the precise file loss that the
moratorium was meant to prevent (DEP17 P1). This needs to be mitigated
and since we're dealing with essential packages, we cannot employ
Conflicts (DEP17 M7). Instead, we'll have to use protective diversions
(DEP17 M8) installed in preinst and removed in postinst. Since 2038
hasn't happened yet, we can defer this, but do upload that time64 change
to experimental first and let it wait there for at least three days.

Other problems are less of an issue. The change does not affect the
debian-installer (P10), because the libraries are already moved there.
It also does not cause the multiarch file loss (P7), because all
affected filenames are architecture-dependent. I verified that it does
not break filesystem bootstrap locally (P8).

So given this I think we're good to go. I don't expect ncurses to be
backported to bookworm-backports. Therefore, the attached patch just
moves all the files. Do not upload this patch to bookworm-backports. If
you plan to do that, consider using dh_movetousr instead. Also keep that
2038 matter in mind.

Helmut
diff --minimal -Nru ncurses-6.4+20231016/debian/changelog 
ncurses-6.4+20231016/debian/changelog
--- ncurses-6.4+20231016/debian/changelog       2023-10-17 17:34:56.000000000 
+0200
+++ ncurses-6.4+20231016/debian/changelog       2023-11-14 12:00:46.000000000 
+0100
@@ -1,3 +1,10 @@
+ncurses (6.4+20231016-1.1) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * Move all libraries to /usr. (Closes: #-1)
+
+ -- Helmut Grohne <hel...@subdivi.de>  Tue, 14 Nov 2023 12:00:46 +0100
+
 ncurses (6.4+20231016-1) unstable; urgency=medium
 
   * New upstream patchlevel.
diff --minimal -Nru ncurses-6.4+20231016/debian/lib32ncurses-dev.links 
ncurses-6.4+20231016/debian/lib32ncurses-dev.links
--- ncurses-6.4+20231016/debian/lib32ncurses-dev.links  2023-10-17 
08:31:07.000000000 +0200
+++ ncurses-6.4+20231016/debian/lib32ncurses-dev.links  2023-11-14 
12:00:46.000000000 +0100
@@ -1,4 +1,4 @@
-lib32/libtinfo.so.6     usr/lib32/libtinfo.so
+usr/lib32/libtinfo.so.6     usr/lib32/libtinfo.so
 usr/lib32/libncurses.so usr/lib32/libcurses.so
 usr/lib32/libncurses.a  usr/lib32/libcurses.a
 usr/lib32/libtinfo.a    usr/lib32/libtermcap.a
diff --minimal -Nru ncurses-6.4+20231016/debian/lib32ncurses6.install 
ncurses-6.4+20231016/debian/lib32ncurses6.install
--- ncurses-6.4+20231016/debian/lib32ncurses6.install   2023-10-17 
08:31:07.000000000 +0200
+++ ncurses-6.4+20231016/debian/lib32ncurses6.install   2023-11-14 
11:59:24.000000000 +0100
@@ -1,4 +1,4 @@
-obj-32/lib/libncurses.so.* lib32
+obj-32/lib/libncurses.so.* usr/lib32
 obj-32/lib/libpanel.so.* usr/lib32
 obj-32/lib/libform.so.* usr/lib32
 obj-32/lib/libmenu.so.* usr/lib32
diff --minimal -Nru ncurses-6.4+20231016/debian/lib32ncursesw6.install 
ncurses-6.4+20231016/debian/lib32ncursesw6.install
--- ncurses-6.4+20231016/debian/lib32ncursesw6.install  2023-10-17 
08:31:07.000000000 +0200
+++ ncurses-6.4+20231016/debian/lib32ncursesw6.install  2023-11-14 
11:59:29.000000000 +0100
@@ -1,4 +1,4 @@
-obj-wide-32/lib/libncursesw.so.* lib32
+obj-wide-32/lib/libncursesw.so.* usr/lib32
 obj-wide-32/lib/libpanelw.so.* usr/lib32
 obj-wide-32/lib/libformw.so.* usr/lib32
 obj-wide-32/lib/libmenuw.so.* usr/lib32
diff --minimal -Nru ncurses-6.4+20231016/debian/lib32tinfo6.install 
ncurses-6.4+20231016/debian/lib32tinfo6.install
--- ncurses-6.4+20231016/debian/lib32tinfo6.install     2023-10-17 
08:31:07.000000000 +0200
+++ ncurses-6.4+20231016/debian/lib32tinfo6.install     2023-11-14 
11:59:33.000000000 +0100
@@ -1,2 +1,2 @@
-obj-wide-32/lib/libtinfo.so.* lib32
+obj-wide-32/lib/libtinfo.so.* usr/lib32
 obj-wide-32/lib/libtic.so.* usr/lib32
diff --minimal -Nru ncurses-6.4+20231016/debian/lib64ncurses-dev.links 
ncurses-6.4+20231016/debian/lib64ncurses-dev.links
--- ncurses-6.4+20231016/debian/lib64ncurses-dev.links  2023-10-17 
08:31:07.000000000 +0200
+++ ncurses-6.4+20231016/debian/lib64ncurses-dev.links  2023-11-14 
12:00:46.000000000 +0100
@@ -1,4 +1,4 @@
-lib64/libtinfo.so.6     usr/lib64/libtinfo.so
+usr/lib64/libtinfo.so.6     usr/lib64/libtinfo.so
 usr/lib64/libncurses.so usr/lib64/libcurses.so
 usr/lib64/libncurses.a  usr/lib64/libcurses.a
 usr/lib64/libtinfo.a    usr/lib64/libtermcap.a
diff --minimal -Nru ncurses-6.4+20231016/debian/lib64ncurses6.install 
ncurses-6.4+20231016/debian/lib64ncurses6.install
--- ncurses-6.4+20231016/debian/lib64ncurses6.install   2023-10-17 
08:31:07.000000000 +0200
+++ ncurses-6.4+20231016/debian/lib64ncurses6.install   2023-11-14 
11:59:43.000000000 +0100
@@ -1,4 +1,4 @@
-obj-64/lib/libncurses.so.* lib64
+obj-64/lib/libncurses.so.* usr/lib64
 obj-64/lib/libpanel.so.* usr/lib64
 obj-64/lib/libform.so.* usr/lib64
 obj-64/lib/libmenu.so.* usr/lib64
diff --minimal -Nru ncurses-6.4+20231016/debian/lib64ncursesw6.install 
ncurses-6.4+20231016/debian/lib64ncursesw6.install
--- ncurses-6.4+20231016/debian/lib64ncursesw6.install  2023-10-17 
08:31:07.000000000 +0200
+++ ncurses-6.4+20231016/debian/lib64ncursesw6.install  2023-11-14 
11:59:47.000000000 +0100
@@ -1,4 +1,4 @@
-obj-wide-64/lib/libncursesw.so.* lib64
+obj-wide-64/lib/libncursesw.so.* usr/lib64
 obj-wide-64/lib/libpanelw.so.* usr/lib64
 obj-wide-64/lib/libformw.so.* usr/lib64
 obj-wide-64/lib/libmenuw.so.* usr/lib64
diff --minimal -Nru ncurses-6.4+20231016/debian/lib64tinfo6.install 
ncurses-6.4+20231016/debian/lib64tinfo6.install
--- ncurses-6.4+20231016/debian/lib64tinfo6.install     2023-10-17 
08:31:07.000000000 +0200
+++ ncurses-6.4+20231016/debian/lib64tinfo6.install     2023-11-14 
11:59:50.000000000 +0100
@@ -1,2 +1,2 @@
-obj-wide-64/lib/libtinfo.so.* lib64
+obj-wide-64/lib/libtinfo.so.* usr/lib64
 obj-wide-64/lib/libtic.so.* usr/lib64
diff --minimal -Nru ncurses-6.4+20231016/debian/libncurses-dev.links 
ncurses-6.4+20231016/debian/libncurses-dev.links
--- ncurses-6.4+20231016/debian/libncurses-dev.links    2023-10-17 
08:31:07.000000000 +0200
+++ ncurses-6.4+20231016/debian/libncurses-dev.links    2023-11-14 
12:00:46.000000000 +0100
@@ -1,4 +1,4 @@
-lib/${DEB_HOST_MULTIARCH}/libtinfo.so.6 
usr/lib/${DEB_HOST_MULTIARCH}/libtinfo.so
+usr/lib/${DEB_HOST_MULTIARCH}/libtinfo.so.6 
usr/lib/${DEB_HOST_MULTIARCH}/libtinfo.so
 usr/lib/${DEB_HOST_MULTIARCH}/libncurses.so 
usr/lib/${DEB_HOST_MULTIARCH}/libcurses.so
 usr/lib/${DEB_HOST_MULTIARCH}/libncurses.a 
usr/lib/${DEB_HOST_MULTIARCH}/libcurses.a
 usr/lib/${DEB_HOST_MULTIARCH}/libtinfo.a 
usr/lib/${DEB_HOST_MULTIARCH}/libtermcap.a
diff --minimal -Nru ncurses-6.4+20231016/debian/libncurses6.install 
ncurses-6.4+20231016/debian/libncurses6.install
--- ncurses-6.4+20231016/debian/libncurses6.install     2023-10-17 
08:31:07.000000000 +0200
+++ ncurses-6.4+20231016/debian/libncurses6.install     2023-11-14 
12:00:12.000000000 +0100
@@ -1,4 +1,4 @@
-usr/lib/${DEB_HOST_MULTIARCH}/libncurses.so.* lib/${DEB_HOST_MULTIARCH}/
+usr/lib/${DEB_HOST_MULTIARCH}/libncurses.so.*
 usr/lib/${DEB_HOST_MULTIARCH}/libpanel.so.*
 usr/lib/${DEB_HOST_MULTIARCH}/libform.so.*
 usr/lib/${DEB_HOST_MULTIARCH}/libmenu.so.*
diff --minimal -Nru ncurses-6.4+20231016/debian/libncursesw6.install 
ncurses-6.4+20231016/debian/libncursesw6.install
--- ncurses-6.4+20231016/debian/libncursesw6.install    2023-10-17 
08:31:07.000000000 +0200
+++ ncurses-6.4+20231016/debian/libncursesw6.install    2023-11-14 
12:00:21.000000000 +0100
@@ -1,4 +1,4 @@
-usr/lib/${DEB_HOST_MULTIARCH}/libncursesw.so.*  lib/${DEB_HOST_MULTIARCH}/
+usr/lib/${DEB_HOST_MULTIARCH}/libncursesw.so.*
 usr/lib/${DEB_HOST_MULTIARCH}/libpanelw.so.*
 usr/lib/${DEB_HOST_MULTIARCH}/libformw.so.*
 usr/lib/${DEB_HOST_MULTIARCH}/libmenuw.so.*
diff --minimal -Nru ncurses-6.4+20231016/debian/libtinfo6.install 
ncurses-6.4+20231016/debian/libtinfo6.install
--- ncurses-6.4+20231016/debian/libtinfo6.install       2023-10-17 
08:31:07.000000000 +0200
+++ ncurses-6.4+20231016/debian/libtinfo6.install       2023-11-14 
12:00:31.000000000 +0100
@@ -1,2 +1,2 @@
-usr/lib/${DEB_HOST_MULTIARCH}/libtinfo.so.*  lib/${DEB_HOST_MULTIARCH}
+usr/lib/${DEB_HOST_MULTIARCH}/libtinfo.so.*
 usr/lib/${DEB_HOST_MULTIARCH}/libtic.so.*

Reply via email to