Community process for 32-bit compatibility

Maybe I am wrong but a 32-bit windows program requires 32-bit WINE and I remember years ago with an old game that used midi files. I needed the 32-bit timidity. As mixing 32-bit WINE and 64-bit timidity would not work. If you can show that it’s not needed then fair enough. But I’m 90% sure both have to be 32-bit.

2 Likes

Just out of curiosity regarding the advantages of this move:

this gives us a list of 199 source packages

How many packages are you filtering out? Which is the ratio?

Hi,
hterm is a quite useful tool when analyzing serial (UART) data streams.
Unfortunately it is proprietary and 32-bit only.

It would be nice if it kept working.

1 Like

Does this mean that multiarch will be maintained for i386 on amd64?

Wine also sometimes needs these:
gstreamer1.0-libav
gstreamer1.0-plugins-bad
gstreamer1.0-plugins-good
gstreamer1.0-plugins-ugly
I’ll be soon adding them as recommends or suggests in src:wine and src:wine-development, see LP #1817244

1 Like

Thanks, that’s useful information. Obviously the current source package count doesn’t include this; I’m not concerned about their addition, but I am concerned that they get included before we start making any changes to the archive, since it’s much easier to include these now than to rebootstrap them later. How can we make sure this gets done in Ubuntu 19.10?

The driver for my Brother DCP-1610W needs lib32stdc++

Scratch that; I’ve found that 19.10 has a functional printer driver.

libmpg123-0 is needed for MP3 support in Wine for several games, like: TES III: Morrowind, TES IV: Oblivion, F.E.A.R.

Thanks; there’s no need to enumerate here the individual libraries that are dependencies of wine, they are already included.

Hi Vorlon,

I just added the hpcups 3.19.1 driver using “add printer” I did not download it from some external source. So perhaps this is not “a package” but part of a package and is included in printer-driver-hpcups.

here is the list made with dpkg -l '*:i386':
~$ dpkg -l ‘*:i386’
Gewünscht=Unbekannt/Installieren/R=Entfernen/P=Vollständig Löschen/Halten
| Status=Nicht/Installiert/Config/U=Entpackt/halb konFiguriert/
Halb installiert/Trigger erWartet/Trigger anhängig
|/ Fehler?=(kein)/R=Neuinstallation notwendig (Status, Fehler: GROSS=schlecht)
||/ Name Version Architektur Beschreibung
++±==========================-============================-============-======================================================================
ii gcc-9-base:i386 9.1.0-2ubuntu2~19.04 i386 GCC, the GNU Compiler Collection (base package)
ii libatomic1:i386 9.1.0-2ubuntu2~19.04 i386 support library providing __atomic built-in functions
ii libbsd0:i386 0.9.1-2 i386 utility functions from BSD systems - shared library
ii libc6:i386 2.29-0ubuntu2 i386 GNU C Library: Shared libraries
ii libdrm-amdgpu1:i386 2.4.97-1ubuntu1 i386 Userspace interface to amdgpu-specific kernel DRM services – runtime
ii libdrm-intel1:i386 2.4.97-1ubuntu1 i386 Userspace interface to intel-specific kernel DRM services – runtime
ii libdrm-nouveau2:i386 2.4.97-1ubuntu1 i386 Userspace interface to nouveau-specific kernel DRM services – runtime
ii libdrm-radeon1:i386 2.4.97-1ubuntu1 i386 Userspace interface to radeon-specific kernel DRM services – runtime
ii libdrm2:i386 2.4.97-1ubuntu1 i386 Userspace interface to kernel DRM services – runtime
ii libedit2:i386 3.1-20181209-1 i386 BSD editline and history libraries
ii libelf1:i386 0.176-1 i386 library to read and write ELF files
ii libexpat1:i386 2.2.6-1ubuntu0.19.5 i386 XML parsing C library - runtime library
ii libffi6:i386 3.2.1-9 i386 Foreign Function Interface library runtime
ii libgcc1:i386 1:9.1.0-2ubuntu2~19.04 i386 GCC support library
ii libgl1:i386 1.1.1-0ubuntu1 i386 Vendor neutral GL dispatch library – legacy GL support
ii libgl1-mesa-dri:i386 19.0.8-0ubuntu0~19.04.1 i386 free implementation of the OpenGL API – DRI modules
ii libgl1-mesa-glx:i386 19.0.8-0ubuntu0~19.04.1 i386 transitional dummy package
ii libglapi-mesa:i386 19.0.8-0ubuntu0~19.04.1 i386 free implementation of the GL API – shared library
ii libglvnd0:i386 1.1.1-0ubuntu1 i386 Vendor neutral GL dispatch library
ii libglx-mesa0:i386 19.0.8-0ubuntu0~19.04.1 i386 free implementation of the OpenGL API – GLX vendor library
ii libglx0:i386 1.1.1-0ubuntu1 i386 Vendor neutral GL dispatch library – GLX support
ii libgpg-error0:i386 1.35-1 i386 GnuPG development runtime library
ii libidn2-0:i386 2.0.5-1 i386 Internationalized domain names (IDNA2008/TR46) library
ii libllvm8:i386 1:8-3 i386 Modular compiler and toolchain technologies, runtime library
ii libnvidia-compute-430:i386 430.50-0ubuntu0.19.04.1~gpu0 i386 NVIDIA libcompute package
ii libnvidia-decode-430:i386 430.50-0ubuntu0.19.04.1~gpu0 i386 NVIDIA Video Decoding runtime libraries
ii libnvidia-encode-430:i386 430.50-0ubuntu0.19.04.1~gpu0 i386 NVENC Video Encoding runtime library
ii libnvidia-fbc1-430:i386 430.50-0ubuntu0.19.04.1~gpu0 i386 NVIDIA OpenGL-based Framebuffer Capture runtime library
ii libnvidia-gl-430:i386 430.50-0ubuntu0.19.04.1~gpu0 i386 NVIDIA OpenGL/GLX/EGL/GLES GLVND libraries and Vulkan ICD
ii libnvidia-ifr1-430:i386 430.50-0ubuntu0.19.04.1~gpu0 i386 NVIDIA OpenGL-based Inband Frame Readback runtime library
ii libpciaccess0:i386 0.14-1 i386 Generic PCI access library for X
ii libsensors5:i386 1:3.5.0-3ubuntu1 i386 library to read temperature/voltage/fan sensors
ii libstdc++6:i386 9.1.0-2ubuntu2~19.04 i386 GNU Standard C++ Library v3
ii libtinfo6:i386 6.1+20181013-2ubuntu2 i386 shared low-level terminfo library for terminal handling
ii libudev1:i386 240-6ubuntu5.7 i386 libudev shared library
ii libunistring2:i386 0.9.10-1ubuntu2 i386 Unicode string library for C
ii libx11-6:i386 2:1.6.7-1 i386 X11 client-side library
ii libx11-xcb1:i386 2:1.6.7-1 i386 Xlib/XCB interface library
ii libxau6:i386 1:1.0.8-1 i386 X11 authorisation library
ii libxcb-dri2-0:i386 1.13.1-2 i386 X C Binding, dri2 extension
ii libxcb-dri3-0:i386 1.13.1-2 i386 X C Binding, dri3 extension
ii libxcb-glx0:i386 1.13.1-2 i386 X C Binding, glx extension
ii libxcb-present0:i386 1.13.1-2 i386 X C Binding, present extension
ii libxcb-sync1:i386 1.13.1-2 i386 X C Binding, sync extension
ii libxcb1:i386 1.13.1-2 i386 X C Binding
ii libxdamage1:i386 1:1.1.4-3 i386 X11 damaged region extension library
ii libxdmcp6:i386 1:1.1.2-3 i386 X11 Display Manager Control Protocol library
ii libxext6:i386 2:1.3.3-1 i386 X11 miscellaneous extension library
ii libxfixes3:i386 1:5.0.3-1 i386 X11 miscellaneous ‘fixes’ extension library
ii libxinerama1:i386 2:1.1.4-2 i386 X11 Xinerama extension library
ii libxshmfence1:i386 1.3-1 i386 X shared memory fences - shared library
ii libxss1:i386 1:1.2.3-1 i386 X11 Screen Saver extension library
ii libxxf86vm1:i386 1:1.1.4-1 i386 X11 XFree86 video mode extension library
ii steam:i386 1:1.0.0.54+repack-5ubuntu1 i386 Valve’s Steam digital software delivery system
ii zlib1g:i386 1:1.2.11.dfsg-1ubuntu2 i386 compression library - runtime

I’m pretty sure this means that they’ll be maintaining all of the necessary i386 NVIDIA libs (i.e. 430 & 435)

What about legacy drivers? There are laptop & desktop GPUs out there that isn’t compatible with newer drivers, like my laptop which is compatible up to version 390.

I just uploaded wine-development 4.14-1 to Debian unstable. libwine-development:i386 recommends or suggests those gstreamer plugins.
I take it you also consider “Suggests:”!?

Besides that I hope you take care of the whole alternative graphic stacks (NVIDIA), that Wine doesn’t depend on directly or just as an alternative dependency. I can’t tell/test which packages exactly are needed here.

Finally, you may consider to also parse the upstream provided packages, especially “winehq-staging”. This has a few additional dependencies. See https://wiki.winehq.org/Ubuntu for download instructions.

Greets
jre

Uhm , where is Vulkan loader? libvulkan1:i386 and mesa-vulkan-drivers:i386

That is needed since D9VK relies on it for 32 bit games ( d3d9 games on Vulkan ) and it is also needed by some rare d3d11 32 bit games too for dxvk.

1 Like

Thanks, I’ve uploaded wine-development to Ubuntu with the added recommends/suggests cherry-picked, since we are post-feature freeze and would not normally take a new upstream release from Debian at this point.

Regarding consideration of Suggests, no we don’t, and actually I uncovered that I was failing to consider Recommends either which I’ve never corrected - which now raises the number of known source packages from 199 to 227.

I don’t think that we should commit to maintaining all of the source packages that are linked via suggests, given that suggests are not installed by default; but I’m happy for us to include those by default in our initial list of source packages for i386 and continue providing them on a best-effort basis.

Yes, nvidia is mentioned in the list of top-level library requirements (in the form of libnvidia*-418; and yes, this is shorthand for continuing to maintain all earlier and later nvidia versions that are supported on amd64, but we specifically DON’T commit to supporting any particular version on i386 since we may drop support for a particular driver version on both amd64 and i386).

vulkan isn’t a top-level requirement but is part of the set of dependencies that we’ve captured, being pulled in via wine. It will remain in the list as long as wine pulls it in.

1 Like

I regularly use a lot of 32-bit software that will likely never be updated again (primarily games), so this is very relevant & quite an important issue to me. In addition, most of the software and games I use are installed separately from the repositories/package management system, from places such as GOG, so manually identifying and installing missing dependencies is something I’ve had to deal with for a while.

It eventually got to the point that I created a meta-package to quickly install most commonly required dependencies that I’ve encountered, with a view to largely eliminating issues arising due to missing dependencies & getting most externally installed software to “just work” (this package is intended for Linux Mint as that’s what I personally use, but it’s basically Ubuntu at its core - the package used to install just fine on Ubuntu too but the ia32-libs meta-package it ‘depends’ on was removed from Ubuntu’s repositories some time ago). The meta-package can be found here.

Anyway, according to dpkg -l ‘*:i386’ there are about 260 i386 packages installed on my system. Running:

$ dpkg -l ‘*:i386’ | tail -n+6 | awk ‘{print $2}’

gives me this list:

crossover:i386
gcc-8-base:i386
gtk2-engines:i386
gtk2-engines-murrine:i386
gtk2-engines-oxygen:i386
gtk2-engines-pixbuf:i386
gvfs:i386
gvfs-libs:i386
ibus-gtk:i386
libacl1:i386
libaio1:i386
libao4:i386
libasn1-8-heimdal:i386
libasound2:i386
libasound2-plugins:i386
libasyncns0:i386
libatk1.0-0:i386
libatomic1:i386
libattr1:i386
libaudio2:i386
libavahi-client3:i386
libavahi-common-data:i386
libavahi-common3:i386
libblkid1:i386
libbsd0:i386
libbz2-1.0:i386
libc6:i386
libcaca0:i386
libcairo2:i386
libcanberra-gtk-module:i386
libcanberra-gtk0:i386
libcanberra0:i386
libcap2:i386
libcapi20-3:i386
libcg:i386
libcggl:i386
libcom-err2:i386
libcroco3:i386
libcups2:i386
libcupsimage2:i386
libcurl3-gnutls:i386
libcurl4:i386
libdatrie1:i386
libdb5.3:i386
libdbus-1-3:i386
libdbus-glib-1-2:i386
libdrm-amdgpu1:i386
libdrm-intel1:i386
libdrm-nouveau2:i386
libdrm-radeon1:i386
libdrm2:i386
libedit2:i386
libelf1:i386
libexif12:i386
libexpat1:i386
libffi6:i386
libflac8:i386
libfluidsynth1:i386
libfontconfig1:i386
libfreetype6:i386
libgail-common:i386
libgail18:i386
libgcc1:i386
libgck-1-0:i386
libgconf-2-4:i386
libgcr-base-3-1:i386
libgcrypt20:i386
libgd3:i386
libgdk-pixbuf2.0-0:i386
libgettextpo0:i386
libgl1:i386
libgl1-mesa-dri:i386
libgl1-mesa-glx:i386
libglapi-mesa:i386
libglib2.0-0:i386
libglu1-mesa:i386
libglvnd0:i386
libglx-mesa0:i386
libglx0:i386
libgmp10:i386
libgnutls30:i386
libgpg-error0:i386
libgphoto2-6:i386
libgphoto2-port12:i386
libgraphite2-3:i386
libgsm1:i386
libgssapi-krb5-2:i386
libgssapi3-heimdal:i386
libgstreamer-plugins-base1.0-0:i386
libgstreamer1.0-0:i386
libgtk2.0-0:i386
libharfbuzz0b:i386
libhcrypto4-heimdal:i386
libheimbase1-heimdal:i386
libheimntlm0-heimdal:i386
libhogweed4:i386
libhx509-5-heimdal:i386
libibus-1.0-5:i386
libice6:i386
libicu60:i386
libidn2-0:i386
libieee1284-3:i386
libjack-jackd2-0:i386
libjbig0:i386
libjpeg-turbo8:i386
libjpeg62:i386
libjpeg8:i386
libjson-c3:i386
libk5crypto3:i386
libkeyutils1:i386
libkrb5-26-heimdal:i386
libkrb5-3:i386
libkrb5support0:i386
liblcms2-2:i386
libldap-2.4-2:i386
libllvm8:i386
libltdl7:i386
liblz4-1:i386
liblzma5:i386
libmad0:i386
libmikmod3:i386
libmng2:i386
libmodplug1:i386
libmount1:i386
libmpg123-0:i386
libncurses5:i386
libncursesw5:i386
libnettle6:i386
libnghttp2-14:i386
libnspr4:i386
libnss-mdns:i386
libnss3:i386
libodbc1:i386
libogg0:i386
libopenal1:i386
liborc-0.4-0:i386
libosmesa6:i386
libp11-kit0:i386
libpango-1.0-0:i386
libpangocairo-1.0-0:i386
libpangoft2-1.0-0:i386
libpcap0.8:i386
libpciaccess0:i386
libpcre3:i386
libpixman-1-0:i386
libpng16-16:i386
libpsl5:i386
libpulse-mainloop-glib0:i386
libpulse0:i386
libpulsedsp:i386
libqt4-dbus:i386
libqt4-declarative:i386
libqt4-designer:i386
libqt4-network:i386
libqt4-opengl:i386
libqt4-qt3support:i386
libqt4-script:i386
libqt4-scripttools:i386
libqt4-sql:i386
libqt4-svg:i386
libqt4-test:i386
libqt4-xml:i386
libqt4-xmlpatterns:i386
libqtcore4:i386
libqtdbus4:i386
libqtgui4:i386
libqtwebkit4:i386
libreadline7:i386
libroken18-heimdal:i386
librsvg2-2:i386
librsvg2-common:i386
librtmp1:i386
libsamplerate0:i386
libsane1:i386
libsasl2-2:i386
libsasl2-modules-db:i386
libsdl-image1.2:i386
libsdl-mixer1.2:i386
libsdl-net1.2:i386
libsdl-ttf2.0-0:i386
libsdl1.2debian:i386
libsdl2-2.0-0:i386
libsdl2-image-2.0-0:i386
libsdl2-mixer-2.0-0:i386
libsecret-1-0:i386
libselinux1:i386
libsensors4:i386
libslang2:i386
libsm6:i386
libsndfile1:i386
libsndio6.1:i386
libspeexdsp1:i386
libsqlite3-0:i386
libssl1.0.0:i386
libssl1.1:i386
libstdc++5:i386
libstdc++6:i386
libsystemd0:i386
libtasn1-6:i386
libtdb1:i386
libthai0:i386
libtheora0:i386
libtiff5:i386
libtinfo5:i386
libudev1:i386
libunistring2:i386
libusb-1.0-0:i386
libuuid1:i386
libv4l-0:i386
libv4lconvert0:i386
libvorbis0a:i386
libvorbisenc2:i386
libvorbisfile3:i386
libvulkan1:i386
libwayland-client0:i386
libwayland-cursor0:i386
libwayland-egl1:i386
libwebp6:i386
libwind0-heimdal:i386
libwrap0:i386
libx11-6:i386
libx11-xcb1:i386
libxau6:i386
libxaw7:i386
libxcb-dri2-0:i386
libxcb-dri3-0:i386
libxcb-glx0:i386
libxcb-present0:i386
libxcb-randr0:i386
libxcb-render0:i386
libxcb-shm0:i386
libxcb-sync1:i386
libxcb1:i386
libxcomposite1:i386
libxcursor1:i386
libxdamage1:i386
libxdmcp6:i386
libxext6:i386
libxfixes3:i386
libxft2:i386
libxi6:i386
libxinerama1:i386
libxkbcommon0:i386
libxml2:i386
libxmu6:i386
libxpm4:i386
libxrandr2:i386
libxrender1:i386
libxshmfence1:i386
libxslt1.1:i386
libxss1:i386
libxt6:i386
libxtst6:i386
libxxf86vm1:i386
mesa-vulkan-drivers:i386
ocl-icd-libopencl1:i386
odbcinst1debian2:i386
steam:i386
xaw3dg:i386
zlib1g:i386

1 Like

I have installed the script from https://bazaar.launchpad.net/~vorlon/+junk/get-i386/files on a 19.10 to be able to see the whole list of currently included 32 bit packages. And then started to go over my GOG libraries 32bit linux games.

I found that https://www.gog.com/game/shadowrun_hong_kong_extended_edition and https://www.gog.com/game/shadowrun_returns require apart from already added libraries

libqtgui4:i386 and its dependencies for the game editor. I verified that this in fact the case by trying to run the editor first without and then with libqtgui4:i386 and its dependencies installed. The games them self run without, but the editor is an important feature for some.

1 Like

I’m unable to install latest CrossOver version on Ubuntu 19.10:

$ sudo dpkg --add-architecture i386
$ sudo apt update
$ sudo apt install ./crossover_18.5.0-1.deb 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting 'crossover:i386' instead of './crossover_18.5.0-1.deb'
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 crossover:i386 : PreDepends: multiarch-support:i386 but it is not installable
E: Unable to correct problems, you have held broken packages.

$ sudo apt install multiarch-support:i386
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package multiarch-support:i386
$ gdebi ./crossover_18.5.0-1.deb 
Reading package lists... Done
Building dependency tree        
Reading state information... Done
Reading state information... Done
This package is uninstallable
Dependency is not satisfiable: multiarch-support


The multiarch-support package is missed on 19.10.

It is very, very bad!

FIxed by downloading package from Disco:

wget http://mirrors.kernel.org/ubuntu/pool/main/g/glibc/multiarch-support_2.29-0ubuntu2_i386.deb
sudo apt install ./multiarch-support_2.29-0ubuntu2_i386.deb
sudo apt install ./crossover_18.5.0-1.deb 
3 Likes

This is unrelated to the question of support for 32-bit packages. The multiarch-support package was a transitional package introduced for multiarch in 2011. The debhelper tool stopped emitting a dependency on multiarch-support in 2015, and the package has now been dropped from the glibc source package four years later. This is a change that has been made on all architectures. The issue here is that the “latest” crossover deb is generating obsolete package dependencies and should be updated. I suggest you contact the vendor for support.

I’d appreciate it if you could test with the 64-bit timidity and report back. timidity provides only a program as an interface, not a shared library, so I can’t see any reason that this would have to be 32-bit.

If there is software that really requires 32-bit timidity then we would include it on the list, but we would still want to confirm first that it’s actually necessary.