Sharing a script between two "Multi-Arch: foreign" packages
Hi all,
is there a way for two different, arch-specific packages (from the same
source package) to share an identical file (script)?
This works for "Multi-Arch: same" packages:
$ dpkg -S /usr/share/doc/libwine/changelog.Debian.gz
libwine:i386, libwine:amd64: /usr/share/doc/libwine/changelog.Debian.gz
But if I try [1] the same for two different packages I end up with only
one package being the owner:
$ dpkg -S /usr/lib/wine/wineserver
wine32:i386: /usr/lib/wine/wineserver
Instead of [fictious output following]:
$ dpkg -S /usr/lib/wine/wineserver
wine32:i386, wine64:amd64: /usr/lib/wine/wineserver
Background:
See #932201.
In src:wine we have two M-A: foreign packages:
pkg:wine64 (built on some 64-bit architectures)
pkg:wine32 (built on some 32-bit architectures)
Both build and install a "wineserver" binary, which we install as
/usr/lib/wine/wineserver32 or wineserver64. We call that binary from a
script [2] /usr/lib/wine/wineserver which currently is in pkg:wine
(arch:all), which is only "recommended" [3] by pkg:wine32 or pkg:wine64.
Since the wineserver{32|64} file is not found by the Wine code, these
filenames are broken without our wineserver script. So I'd like to move
that script to pkg:wine32 and pkg:wine64.
Thanks and greets
jre
[1] I get both wine32 and wine64 to install with these breaks/replaces:
Package: wine32
Architecture: any-i386 any-powerpc armel armhf
Multi-Arch: foreign
Breaks:
wine64VERSION (<< ${binary:Version})
Replaces:
wine64VERSION
Package: wine64
Architecture: amd64 arm64
Multi-Arch: foreign
Breaks:
wine32VERSION (<< ${binary:Version})
Replaces:
wine32VERSION
... but then the "shared" wineserver script is only owned by one
package. Without this unversioned "replaces" dpkg refuses to overwrite
the (identical) script
[2] There are also unrelated reasons for having this script. Otherwise
I'd dpkg-divert the 32-bit wineserver in favor of the 64-bit one, which
would perfectly match the way Wine works (Wine uses the 32-bit
wineserver only for pure 32-bit installations, but the 64-bit server for
mixed and 64-bit installations).
I could dpkg-divert the script, but that looks like a workaround, not a
solution, to me.
[3] pkg:wine already "depends" on pkg:wine32|wine64, so to avoid a
circular dependency I can't also "depend" the other way round.
The only solution here would be to make a separate arch:all
pkg:wineserver which only has the wineserver script, and let pkg:wine32
and pkg:wine64 "depend" on that. While this would be a clean solution,
it seems to be excessive to ship only one small wrapper script in a
separate package.
Thanks and greets
jre
Reply to: