[Debian GNUstep maintainers] Bug#1112161: gnustep-base: Problematic dependency/usage on dpkg-dev

Yavor Doganov yavor at gnu.org
Sun Sep 7 17:36:01 BST 2025


Control: tags -1 + confirmed pending

Hi!

On Wed, 27 Aug 2025 04:19:35 +0300,
Guillem Jover wrote:
> X-Debbugs-Cc: debian-cross at lists.debian.org

I kept that in CC.

> The libgnustep-base1.31 binary package has a run-time dependency on
> dpkg-dev, because its shared library has been patched to use
> dpkg-architecture to fetch the DEB_HOST_MULTIARCH variable.

Right.

> Given that this is shared library package, the run-time dependency on
> dpkg-dev ends up pulling the entire build-essential, and I think the
> current reason for the dependency is problematic in any case.

I agree this is a problem and I've always felt the solution that I've
chosen back then is not entirely correct.

> The patch with those changes is supposedly to support the multiarch
> layout and cross building, but it's not clear whether the cross
> building changes could be restricted to the cross.config file,

Yes, changes for cross bulding are in cross.config plus few tiny
changes in configure.ac (hard-coded pkg-config and an override for
sparc64 due to alignment requirement).

> and the changes to the Objective C file could be done by hardcoding
> the value computed at configure time?

Thanks, that's way better and I wonder why such an obvious thing
hasn't crossed my mind.  It simplifies the patch a lot and avoids the
performance penalty of spawning dpkg-architecture (plus the benefit of
avoiding the dpkg-dev dependency).

> Otherwise the shared library might potentially end up returning the
> wrong pathname not matching its own architecture (because
> dpkg-architecture will honor the already set environment variables).

That's already the case -- the current version of the patch checks if
the variable is set in the environment (so dpkg-architecture is not
involved here):

$ dpkg --print-architecture
amd64
$ dpkg --print-foreign-architectures
i386
x32
$ AClock
(program starts successfully)
$ DEB_HOST_MULTIARCH=armhf-linux-gnu AClock
2025-09-07 19:25:06.059 AClock[2583241:2583241] Did not find correct version of backend (libgnustep-back-032.bundle), falling back to std (libgnustep-back.bundle).
2025-09-07 19:25:06.059 AClock[2583241:2583241] NSApplication.m:306  Assertion failed in initialize_gnustep_backend.  Unable to find backend back
AClock: Uncaught exception NSInternalInconsistencyException, reason: NSApplication.m:306  Assertion failed in initialize_gnustep_backend.  Unable to find backend back

The new version of the patch (not yet pushed) will ignore it and use
only the hard-coded value determined at configure time.

> I just noticed this on a recently upgraded system (to Debian trixie),
> which has otherwise no use for development files, and where
> build-essential got pulled in.

Many thanks for the report, will upload after some testing.



More information about the pkg-GNUstep-maintainers mailing list