Discussion:
Bug#1093620: transition: gnustep-multiarch
Add Reply
Yavor Doganov
2025-01-20 13:00:01 UTC
Reply
Permalink
Package: release.debian.org
Severity: normal
Tags: moreinfo
X-Debbugs-Cc: pkg-gnustep-***@lists.alioth.debian.org
User: ***@packages.debian.org
Usertags: transition

We at the GNUstep team would like to make the GNUstep libraries
multiarch-capable. It has not been done until now mostly because for
a long time I've been neglecting this due to my initially negative
attitude towards the MultiArch effort (I thought it was useful only
for proprietary software). Admitting my mistake, I should add that we
actually need this now in order to reproduce some arch-specific bugs
and to make the packages cross-buildable. Needless to say, MultiArch
is a nice feature to have both for developers and users.

To support GNUstep frameworks (shared libraries in disguise that are
installed in /usr/lib/GNUstep/Frameworks with symlinks in /usr/lib and
/usr/include) and also some proper libraries like gnustep-sqlclient
which install bundles (dynamically loadable modules) in
/usr/lib/GNUstep/Bundles, we need to move the whole GNUstep System
Library directory from /usr/lib/GNUstep to
/usr/lib/${DEB_HOST_MULTIARCH}/GNUstep.

Also, because at least gnustep-base and gnustep-corebase have
arch-specific headers, for consistency we'll install all headers in
/usr/include/${DEB_HOST_MULTIARCH}/GNUstep. (Not only for
consistency, GNUSTEP_SYSTEM_HEADERS must be defined to one directory
only so there's no other easy way.)

The new package gnustep-multiarch (M-A: same) from src:gnustep-make
will provide the symlinks from /usr/lib/${DEB_HOST_MULTIARCH}/GNUstep
to arch-indep directories in /usr/share.

The only packages which need non-trivial changes are gnustep-make and
gnustep-base (gnustep-make must pass through NEW for the new
gnustep-multiarch package, hence the moreinfo tag).

The following preparations and tests have been made so far:

1. I rebuilt the GNUstep world with multiarch-based gnustep-make and
gnustep-base, identifying packages which FTBFS (list below) and
fixing all of them in the process.

2. I installed the multiarch-based GNUstep core packages on an
unstable system and can confirm my initial suspicion: packages that
provide a single executable (these are most packages ending with
".app") will continue to work properly. Packages which have
bundles (gworkspace, gnumail, to name a few) will be broken until
they are rebuilt for the new layout.

3. I installed some more complex packages that I've rebuilt for the
new layout and can confirm they work.

4. I tried building GNUstep software as a mortal user and can confirm
that it works; the various GNUSTEP_ variables are properly expanded
and sourcing GNUstep.sh (required for building/using software in
the USER domain) also works.

5. I cross-built the GNUstep world on amd64 for armhf, discovering
11 FTCBFS bugs in the process (all fixed locally).

6. I tested the non-GNUstep packages that could be affected by this
change (openvpn-auth-ldap and meson) and they both build fine.

This is the list of packages which FTBFS with the new layout:

Level 1:
gnustep-base
Level 2:
dbuskit
gnustep-corebase
gnustep-gui
gnustep-netclasses
gnustep-performance
pantomime
rsskit
sbjson
sope
universal-detector
Level 3:
camera.app
cenon.app
charmap.app
gnustep-sqlclient
gomoku.app
gorm.app
grr.app
lynkeos.app
paje.app
sogo
systempreferences.app
unar
Level 4:
gnustep-dl2
gworkspace
Level 5:
addresses-for-gnustep
steptalk
Level 6:
adun.app
agenda.app
gnumail

Except for gnustep-base, fixes are trivial (like updating .install
files or replacing some hard-coded path in debian/rules).

I realize this is not the best moment for such a transition, but there
are a few reasons why we would like to carry it out during the trixie
development cycle:

* For some multi-binary packages, I made the grave mistake to put
the symlinks from /usr/lib/GNUstep to /usr/share/GNUstep in the
arch:all package. Lintian did not complain, and at that time I
thought it was a good thing for a symlink that is always going to
be the same across architectures to be put in the arch:all
package if the arch:any package depends on it. JFTR, other
maintainers did the same (e.g., sogo). With the new layout these
are lintian errors and of course it will make the packages
unusable on any other arch except amd64. Fixing these bugs
through this transition will allow us to do it without
Breaks+Replaces and it'll be guaranteed there will no problems
when upgrading.

* For forky we are planning a more complex transition that will
require sourceful uploads of every package and we don't want to
combine two major changes within one release. That could possibly
complicate issues when upgrading from forky to forky+1 and will be
more stressful for our users (and for us, but let's ignore that).

* Currently, we don't have a way to track universal-detector for
classic GNUstep library transitions and ensure it's always
binNMUed before unar. It'll be done now via a virtual package
that libgnustep-base-dev will provide. Sure, this can be done at
any time, but it would mean that we won't be able to track
universal-detector for this transition.

* Trixie will be a better release with this change. (That's not a
serious reason and looks like it's written by a PR agent. I just
thought that a bullet list with three items is too short so I made
it up.)

This is a non-blocking transition -- packages will be able to migrate
as soon as the core packages migrate. That's bad in our case because
neither you nor we want to disrupt testing. So I would suggest to put
an explicit block hint when the transition starts:

block gnustep-make

That'll be enough to keep the whole stack in unstable, I think. All
packages, when rebuilt, will gain a dependency on the virtual package
gnustep-layout-multiarch provided by gnustep-multiarch. There are
some packages which don't use dh_gnustep so won't have the dependency
(I exclude those which will require a sourceful upload and thus will
be fixed during the transition):

universal-detector
unar

These are fine to migrate as they have nothing to do with the GNUstep
layout.

batmon.app
fortunate.app
pikopixel.app
terminal.app

These will work if they migrate but for extra safety I think it's
better to upload them now with fixes to use dh_gnustep.

Here is a proposed plan of action:

1. You approve the transition for trixie.
2. We upload gnustep-make to experimental, and after it's ACCEPTed we
upload the core packages (-base, -gui, -back) to experimental so
that maintainers outside our team can reproduce the bugs and test
the proposed patches.
3. We file all FTBFS bugs with severity:important, tagged pending for
packages under our umbrella and patch for the others.
4. We remove the moreinfo tag.
5. We wait for your confirmed tag for the upload to unstable and then
we raise the severity of the FTBFS bugs.
6. We start with the sourceful uploads in the right order.
7. We coordinate with you which packages to binNMU and when, and when
to remove the block hint.

Here is a proposed ben file:

title = "gnustep-multiarch";
is_affected = .depends ~ /libgnustep-base1.30/ | .source ~ /universal-detector/;
is_good = .depends ~ /(gnustep-layout-multiarch|gnustep-base-abi-1.30)/ | .static-built-using ~ /universal-detector (= 1.1-6)/;
is_bad = !.depends ~ /(gnustep-layout-multiarch|gnustep-base-abi-1.30)/ | !.static-built-using ~ /universal-detector (= 1.1-6)/;

Thanks for reading so far.
Yavor Doganov
2025-01-23 01:00:01 UTC
Reply
Permalink
Post by Yavor Doganov
gnustep-base
dbuskit
gnustep-corebase
gnustep-gui
gnustep-netclasses
gnustep-performance
pantomime
rsskit
sbjson
sope
universal-detector
camera.app
cenon.app
charmap.app
gnustep-sqlclient
gomoku.app
gorm.app
grr.app
lynkeos.app
paje.app
sogo
systempreferences.app
unar
gnustep-dl2
gworkspace
addresses-for-gnustep
steptalk
adun.app
agenda.app
gnumail
Since we're close to the freeze, what's the fallback plan if things
don't go as planned?
I guess you ask what will happen if a problem arises *during* the
transition? We'll fix it, and this will reset the clock with 2 days
(a newly discovered bug will probably be in a core package and all of
them have autopkgtests). But what is likely to slow down the
transition is the large number of sourceful uploads.

There is no plan to revert to the current (old) layout. Although
that's technically possible without much hassle, we don't want it.
Also, of the many packages that FTBFS, how many can you upload
directly, e.g. due to team maintenance?
All of the packages are maintained by our team except:

- sbjson/sope/sogo: Their team is active and I believe they can
make timeful uploads.
- adun.app: I'm a member of debian-med and thus have commit/push
access but would need a sponsor (usually the current DPL sponsors it
without much delay, after a ping on their list).
- paje.app: It's a concern because its maintainer is somewhat
inactive. I can prepare a NMU and send a reqeuest to -mentors (our
DD doesn't sponsor NMUs); the change is a one-liner.
Debian Bug Tracking System
2025-01-23 08:50:01 UTC
Reply
Permalink
tags -1 confirmed
Bug #1093620 [release.debian.org] transition: gnustep-multiarch
Added tag(s) confirmed.
--
1093620: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1093620
Debian Bug Tracking System
Contact ***@bugs.debian.org with problems
Yavor Doganov
2025-01-27 16:10:01 UTC
Reply
Permalink
On Thu, 23 Jan 2025 10:43:52 +0200,
Let's go ahead.
Thanks. I guess we are ready with the uploads to unstable, although
gnustep-gui is stuck in BD-Uninstallable state due to libtool's #1094361.
I think it's a good idea to wait for popplerkit.framework to be
rebuilt on s390x in order not to entangle both transitions.

Note that the core packages have appropriate Breaks so that they're
upgraded together, otherwise all apps will abort on startup for not
being able to load the GUI backend.

Because of these Breaks, it is expected that some autopkgtests will
fail initially:

- gnustep-make's test attempts to build a dummy app and thus depends
on libgnustep-gui-dev which will uninstallable until the new
gnustep-gui version is built and installed.

- gnustep-gui's test depends on gnustep-back0.31-headless in order
to run the testsuite without skipping tests (which is impossible
to do at build time because gnustep-back is its reverse
dependency). It will be uninstallable, too.

We'll reschedule the autopkgtests when the packages are available.
Yavor Doganov
2025-02-02 04:20:01 UTC
Reply
Permalink
An update regarding this transition. There are 10 packages pending, I
hope Alex will upload them tomorrow. But gnustep-dl2 and gworkspace
cannot be uploaded before renaissance and popplerkit.framework are
binNMUed as they'll FTBFS. So perhaps now is a good time to schedule
the biNMUs for level 3. These need only a dep-wait on
libgnustep-gui-dev (>= 0.31.1-7):

aclock.app
affiche
batmon.app
chess.app
cynthiune.app
edenmath.app
etoile
fontmanager.app
fortunate.app
ftp.app
gmastermind.app
gnustep-examples
gridlock.app
gtamsanalyzer.app
helpviewer.app
pikopixel.app
plopfolio.app
poe.app
popplerkit.framework
preview.app
price.app
projectcenter.app
renaissance
terminal.app
textedit.app
timemon.app
volumecontrol.app
wrapperfactory.app
zipper.app

Extra dep-wait on libpantomime-dev (>= 1.4.0+dfsg-4):

lusernet.app

Extra dep-wait on libnetclasses-dev (>= 1.06.dfsg+really1.1.0-3):

talksoup.app

TIA.
Yavor Doganov
2025-02-10 10:10:01 UTC
Reply
Permalink
On Mon, 03 Feb 2025 10:53:55 +0200,
So perhaps now is a good time to schedule the biNMUs for level 3.
Scheduled.
Thanks; please schedule the last binNMUs, both with dep-wait on
libgnustep-gui-dev (>= 0.31.1-9):

mpdcon.app
viewpdf.app

mpdcon.app needs an additional dw on libsqlclient-dev (>= 1.9.0-4).

There's one bug remaining to be fixed (#1095275) but it's out of our
hands. I'll monitor the grep-excuses status and will let you know
when it is time to remove the block hint. Although it seems that some
additional assistance would be needed... I don't quite understand why
unar is blocked by gnustep-base which is blocked because unar in
testing has autopkgtest failures. Shouldn't the migration scripts
figure out that the packages will migrate together and that this
failure is irrelevant?
Yavor Doganov
2025-02-10 11:10:01 UTC
Reply
Permalink
Post by Yavor Doganov
Thanks; please schedule the last binNMUs, both with dep-wait on
mpdcon.app
viewpdf.app
Scheduled.
Thanks. Hopefully, this should be the last action from your side (the
very last would be the removal of the block hint).
Post by Yavor Doganov
Shouldn't the migration scripts figure out that the packages will
migrate together and that this failure is irrelevant?
britney schedules test with as few restrictions as possible.
I see, thanks for the detailed explanation.
So gnustep-base may need to gain a breaks against unar/testing, and
that will also help the autopkgtest.
I found other autopkgtest failures, all related to
OK, so we'll make additional uploads of gnustep-base, gnustep-gui,
gnustep-back, gorm.app and gnustep-dl2 with the appropriate breaks.
Yavor Doganov
2025-02-16 23:40:01 UTC
Reply
Permalink
On Mon, 10 Feb 2025 13:03:24 +0200,
Post by Yavor Doganov
mpdcon.app
viewpdf.app
Scheduled.
Hopefully, this should be the last action from your side (the very
last would be the removal of the block hint).
Things are looking good to me -- all packages that had a sourceful
upload for this transition are blocked by gnustep-make (except
universal-detector and unar but that's expected). The last package
that was uploaded (sogo) is 5 days old. If you agree that there are
no evident problems, please remove the block hint and let's see what
britney will do with it.
So gnustep-base may need to gain a breaks against unar/testing, and
that will also help the autopkgtest.
OK, so we'll make additional uploads of gnustep-base,
This was not sufficient, gnustep-base needed another upload to break 4
additional packages. All logical but I wonder why the failures didn't
show up in the tracker when -12 was trying to migrate. Anyway.
Yavor Doganov
2025-02-18 10:20:02 UTC
Reply
Permalink
If you agree that there are no evident problems, please remove
the block hint and let's see what britney will do with it.
Removal hint dropped.
I checked some core packages (gnustep-base, gui) and they
migrated. Can you check if there's anything else to do here?
All packages migrated so we're done. Thanks!
Debian Bug Tracking System
2025-02-18 10:30:01 UTC
Reply
Permalink
Your message dated Tue, 18 Feb 2025 11:18:31 +0100
with message-id <e1fb6511-59e2-4841-ba83-***@debian.org>
and subject line Re: Bug#1093620: transition: gnustep-multiarch
has caused the Debian Bug report #1093620,
regarding transition: gnustep-multiarch
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ***@bugs.debian.org
immediately.)
--
1093620: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1093620
Debian Bug Tracking System
Contact ***@bugs.debian.org with problems
Loading...