diff --git a/ChangeLog.txt b/ChangeLog.txt index fcac048f..3d0b6965 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -3,6 +3,8 @@ Fixed: - Upgrade packages with build numbers greater to >= 10 Updated: - Indicate colour for upgradable packages +Added: +- Packages list for multilib installation 4.7.5 - 04/04/2023 BugFixed: diff --git a/packages_list/multilib/README b/packages_list/multilib/README new file mode 100644 index 00000000..ea29645e --- /dev/null +++ b/packages_list/multilib/README @@ -0,0 +1,19 @@ +Slackware for x86_64 - multilib packages & install instructions +--------------------------------------------------------------- + +Before proceeding with the installation, it is better to read Eric's instructions. +You will find the file README.ERIC for this purpose, or refer directly to: +http://www.slackware.com/~alien/multilib/ + +In this folder, there are two lists, as Eric says, you should install first the glibc packages +and then the 32-bit compatibility packages: + +$ slpkg -ir glibc_packages.pkgs -B multilib + +and then: + +$ slpkg -i compat32.pkgs -B multilib + +Please read README.ERIC for more or visit the site as I say above. + +Enjoy! diff --git a/packages_list/multilib/README.ERIC b/packages_list/multilib/README.ERIC new file mode 100644 index 00000000..db0faad8 --- /dev/null +++ b/packages_list/multilib/README.ERIC @@ -0,0 +1,349 @@ +Slackware for x86_64 - multilib packages & build instructions +============================================================= + +Slackware for the x86_64 architecture (or Slackware64 for short) is a pure +64-bit Operating System, but by design it is "multilib-ready". This means, +that is it is possible to add a layer of software that will allow you to run +32bit software without changes to either Slackware64 or these 32bit packages. +Furthermore, the multilib-enabled Slackware64 can compile 32bit binaries, +if you add the right software to it. + +This README contains instructions on how to use the packages in this +directory to create a multilib Slackware64. + +A more extensive documentation is available on the Slackware Documentation +Wiki, https://docs.slackware.com/slackware:multilib where you will also find +the main mirror locations for downloading these packages. + +The exciting thing about Slackware64, is that you do not have to compile +all these basic 32-bit packages from scratch. You simply take them from the +32-bit Slackware package tree! Further down, I will explain how you can take +a 32-bit Slackware package (say, the "mesa" package) and strip/re-package its +content into a "mesa-compat32" package that you can install onto your 64-bit +Slackware computer straight away. + + +Enabling multilib +================= + +Fast-track (examples assume slackware64-15.0 ... change to your needs). +All of the following commands should be executed as the 'root' user: + +* In the location where you found this README, download the subdirectory with + the name that corresponds to the Slackware version you are running. For + Slackware64 15.0 for instance, you would run the following command: + # lftp -c 'open http://slackware.com/~alien/multilib/ ; mirror -c -e 15.0' + and then change into the new "15.0" directory which has been created on + your computer: + # cd 15.0 +* First, you will upgrade your 64bit Slackware gcc and glibc packages to their + multilib versions by running the command: + # upgradepkg --reinstall --install-new *.t?z + in the directory you just changed to (the "15.0" directory in our case). + This will upgrade gcc and glibc packages, and also install a new package + called "compat32-tools". +* You are now going to install 32-bit compatibility packages to support all + the 32-bit programs you may want to run (roughly 60 MB of packages, not all + that much really!). These packages are located in the subdirectory called + "slackware64-compat32" which you also downloaded with the "lftp" command + shown above. Run this command: + # upgradepkg --install-new slackware64-compat32/*-compat32/*.t?z +* This procedure will also work if you already had a multilib setup and have + upgraded your Slackware to a newer release (new compat32 packages will be + installed and existing ones will be upgraded). +* Done! You need to reboot because of the glibc upgrade. + +In more detail: + +The following packages are replacements for - not additions to - standard +Slackware packages. You use the "upgradepkg" program to upgrade to my +multilib versions of gcc and glibc. You will need these in order to run, +and build, 32-bit software on your 64-bit Slackware computer: + +==Slackware64 13.0== + +* The gcc compiler suite: + - gcc-4.3.3_multilib-x86_64-4alien.txz + - gcc-g++-4.3.3_multilib-x86_64-4alien.txz + - gcc-gfortran-4.3.3_multilib-x86_64-4alien.txz + - gcc-gnat-4.3.3_multilib-x86_64-4alien.txz + - gcc-java-4.3.3_multilib-x86_64-4alien.txz + - gcc-objc-4.3.3_multilib-x86_64-4alien.txz + +* The GNU libc libraries: + - glibc-2.9_multilib-x86_64-5alien_slack13.0.txz + - glibc-i18n-2.9_multilib-x86_64-5alien_slack13.0.txz + - glibc-profile-2.9_multilib-x86_64-5alien_slack13.0.txz + - glibc-solibs-2.9_multilib-x86_64-5alien_slack13.0.txz + - glibc-zoneinfo-2.9_multilib-noarch-5alien_slack13.0.txz + +==Slackware64 13.1== + +* The gcc compiler suite: + - gcc-4.4.4_multilib-x86_64-1alien.txz + - gcc-g++-4.4.4_multilib-x86_64-1alien.txz + - gcc-gfortran-4.4.4_multilib-x86_64-1alien.txz + - gcc-gnat-4.4.4_multilib-x86_64-1alien.txz + - gcc-java-4.4.4_multilib-x86_64-1alien.txz + - gcc-objc-4.4.4_multilib-x86_64-1alien.txz + +* The GNU libc libraries: + - glibc-2.11.1_multilib-x86_64-5alien_slack13.1.txz + - glibc-i18n-2.11.1_multilib-x86_64-5alien_slack13.1.txz + - glibc-profile-2.11.1_multilib-x86_64-5alien_slack13.1.txz + - glibc-solibs-2.11.1_multilib-x86_64-5alien_slack13.1.txz + - glibc-zoneinfo-2.11.1_multilib-noarch-5alien_slack13.1.txz + +==Slackware64 13.37== + +* The gcc compiler suite: + - gcc-4.5.2_multilib-x86_64-2alien.txz + - gcc-g++-4.5.2_multilib-x86_64-2alien.txz + - gcc-gfortran-4.5.2_multilib-x86_64-2alien.txz + - gcc-gnat-4.5.2_multilib-x86_64-2alien.txz + - gcc-java-4.5.2_multilib-x86_64-2alien.txz + - gcc-objc-4.5.2_multilib-x86_64-2alien.txz + +* The GNU libc libraries: + - glibc-2.13_multilib-x86_64-7alien.txz + - glibc-i18n-2.13_multilib-x86_64-7alien.txz + - glibc-profile-2.13_multilib-x86_64-7alien.txz + - glibc-solibs-2.13_multilib-x86_64-7alien.txz + - glibc-zoneinfo-2013d_multilib-noarch-7alien.txz + +==Slackware64 14.0== + +* The gcc compiler suite: + - gcc-g++-4.7.1_multilib-x86_64-1alien.txz + - gcc-gfortran-4.7.1_multilib-x86_64-1alien.txz + - gcc-gnat-4.7.1_multilib-x86_64-1alien.txz + - gcc-go-4.7.1_multilib-x86_64-1alien.txz + - gcc-java-4.7.1_multilib-x86_64-1alien.txz + - gcc-objc-4.7.1_multilib-x86_64-1alien.txz + +* The GNU libc libraries: + - glibc-2.15_multilib-x86_64-8alien.txz + - glibc-i18n-2.15_multilib-x86_64-8alien.txz + - glibc-profile-2.15_multilib-x86_64-8alien.txz + - glibc-solibs-2.15_multilib-x86_64-8alien.txz + - glibc-zoneinfo-2013d_2013d_multilib-noarch-8alien.txz + +==Slackware64 14.1== + +* The gcc compiler suite: + - gcc-4.8.2_multilib-x86_64-1alien.txz + - gcc-g++-4.8.2_multilib-x86_64-1alien.txz + - gcc-gfortran-4.8.2_multilib-x86_64-1alien.txz + - gcc-gnat-4.8.2_multilib-x86_64-1alien.txz + - gcc-go-4.8.2_multilib-x86_64-1alien.txz + - gcc-java-4.8.2_multilib-x86_64-1alien.txz + - gcc-objc-4.8.2_multilib-x86_64-1alien.txz + +* The GNU libc libraries: + - glibc-2.17_multilib-x86_64-7alien.txz + - glibc-i18n-2.17_multilib-x86_64-7alien.txz + - glibc-profile-2.17_multilib-x86_64-7alien.txz + - glibc-solibs-2.17_multilib-x86_64-7alien.txz + - glibc-zoneinfo-2013d_multilib-noarch-7alien.txz + +==Slackware64 14.2== + +* The gcc compiler suite: + - gcc-5.5.0_multilib-x86_64-1alien.txz + - gcc-g++-5.5.0_multilib-x86_64-1alien.txz + - gcc-gfortran-5.5.0_multilib-x86_64-1alien.txz + - gcc-gnat-5.5.0_multilib-x86_64-1alien.txz + - gcc-go-5.5.0_multilib-x86_64-1alien.txz + - gcc-java-5.5.0_multilib-x86_64-1alien.txz + - gcc-objc-5.5.0_multilib-x86_64-1alien.txz + +* The GNU libc libraries: + - glibc-2.23_multilib-x86_64-4alien.txz + - glibc-i18n-2.23_multilib-x86_64-4alien.txz + - glibc-profile-2.23_multilib-x86_64-4alien.txz + - glibc-solibs-2.23_multilib-x86_64-4alien.txz + +==Slackware64 15.0 == + +* The gcc compiler suite: + - gcc-11.2.0_multilib-x86_64-2alien.txz + - gcc-brig-11.2.0_multilib-x86_64-2alien.txz + - gcc-g++-11.2.0_multilib-x86_64-2alien.txz + - gcc-gdc-11.2.0_multilib-x86_64-2alien.txz + - gcc-gfortran-11.2.0_multilib-x86_64-2alien.txz + - gcc-gnat-11.2.0_multilib-x86_64-2alien.txz + - gcc-go-11.2.0_multilib-x86_64-2alien.txz + - gcc-objc-11.2.0_multilib-x86_64-2alien.txz + +* The GNU libc libraries: + - aaa_glibc-solibs-2.33_multilib-x86_64-5alien.txz + - glibc-2.33_multilib-x86_64-5alien.txz + - glibc-i18n-2.33_multilib-x86_64-5alien.txz + - glibc-profile-2.33_multilib-x86_64-5alien.txz + +==Slackware64 current== + +* The gcc compiler suite: + - gcc-11.2.0_multilib-x86_64-2alien.txz + - gcc-brig-11.2.0_multilib-x86_64-2alien.txz + - gcc-g++-11.2.0_multilib-x86_64-2alien.txz + - gcc-gdc-11.2.0_multilib-x86_64-2alien.txz + - gcc-gfortran-11.2.0_multilib-x86_64-2alien.txz + - gcc-gnat-11.2.0_multilib-x86_64-2alien.txz + - gcc-go-11.2.0_multilib-x86_64-2alien.txz + - gcc-objc-11.2.0_multilib-x86_64-2alien.txz + +* The GNU libc libraries: + - aaa_glibc-solibs-2.33_multilib-x86_64-5alien.txz + - glibc-2.33_multilib-x86_64-5alien.txz + - glibc-i18n-2.33_multilib-x86_64-5alien.txz + - glibc-profile-2.33_multilib-x86_64-5alien.txz + +======================================================================= + +There is one more package (compat32-tools); you install it using the +"installpkg" program: + +* The compat32-tools package is a "32-bit toolkit" (containing scripts that + facilitate the creation of 32bit packages): + - compat32-tools-3.9-noarch-28alien.tgz + +* The above packages cover the essentials for getting ready to run and compile + 32-bit software on Slackware64. But in order to be able to actually run + software, you need a "layer" of additional 32-bit support libraries as well. + These libraries are taken from standard Slackware 32-bit packages using the + scripts that are part of my "compat32-tools" package. +* You use the "massconvert32.sh" script for this conversion; + Suppose you have downloaded a local copy of 32-bit Slackware, and it is + available in the directory: /home/ftp/pub/slackware/slackware-15.0 + then you would run the command: + # massconvert32.sh -i /home/ftp/pub/slackware/slackware-15.0/slackware + and the result is a number of subdirectories in your current directory, + containing "compat32" packages which you can install directly (they will not + conflict with your 64-bit packages). +* You can also instruct the "massconvert32.sh" script to download everything + you need from an external Slackware mirror, if you do not have (or do not + want to download) a complete local copy of Slackware: + # massconvert32.sh -u http://slackware.mirrors.tds.net/pub/slackware/slackware-15.0/slackware" +* Or if you are lazy you can just download the "slackware64-compat32" directory + in which I provide all these converted packages for you. It is a subdirectory + of the directory that contains the multilib gcc and glibc packages. + + +Adding 32-bit programs +====================== + +The scripts in the "compat32-tools" package need some explanation. +The package installs a detailed 'README' in the /usr/doc/compat32-tools-*/ +directory that will help you on your way. Basically, you get three scripts +to run: + - /etc/profile.d/32dev.sh + This is the same script that also comes with Slamd64 and which configures + an environment that you need for compiling 32-bit software (by preferring + the 32-bit compilers and libraries over their 64-bit versions) + - /usr/sbin/convertpkg-compat32 + This script takes a 32-bit Slackware package and converts it to a + '-compat32' package that you can install (using "installpkg") on + Slackware64, alongside a 64-bit version of the same software. + - /usr/sbin/massconvert32.sh + This script contains an internal list of essential 32-bit Slackware + packages. It uses the previously mentioned "convertpkg-compat32" script + to grab every package on its internal package list, and converts them + into '-compat32' packages. You will end up with about 60 MB of packages + that you must install next, using the command "upgradepkg --install-new". + These 'compat32' packages create a 32-bit compatibility layer on top of + Slackware64. + The "massconvert32.sh" script can either download these 32-bit packages + from an external Slackware mirror, or else it can use a local Slackware + mirror if you have one in your LAN. + Optionally you can specify an output directory for the newly created + packages; by default they will be created in your current directory. + + +Running 32-bit programs +======================= + +Running a 32-bit program is easy after the above system preparation - just +download, install and start it. You may find that you still miss a 32-bit +Slackware library; in that case, use the "convertpkg-compat32" script to +convert the original 32-bit Slackware package and install the resulting +32bit compatibility package on Slackware64. + + +Compiling 32-bit programs +========================= + +In case you need to compile a 32-bit program (wine and grub are two examples +of open source programs that are 32-bit only) you first configure your +shell environment by running the command: + + . /etc/profile.d/32dev.sh + +Note the 'dot' in front of the filename - that is actually part of the +commandline! It will change or create several environment variables so +that 32-bit versions of binaries are preferred. Once you are done compiling +32-bit software, you should logout of your root shell in order to get rid of +the modified build environment. + +In this changed environment, you will be able to use standard SlackBuilds to +build 32-bit packages for Slackware64. +There's a couple of things to keep in mind: + +(1) You have to define the ARCH variable as 'i586' because even on your + 'x86_64' computer you are compiling a 32-bit program! + This is related to the triplet of '$ARCH-slackware-linux' which + is normally used in the 'configure' command. + (a) As an exception, you will have to compile the 'wine' package with + 'ARCH=x86_64' because you will install this package directly on + your multilib computer without converting to a 'compat32' package. + +(2) If you want to install this 32-bit package on Slackware64-multilib, + you will have to convert it to a 'compat32' package: + + # convertpkg-compat32 -i /path/to/your/fresh/foo-VERSION-i586-BUILD.tgz + # upgradepkg --install-new /tmp/foo-compat32-VERSION-x86_64-BUILDcompat32.txz + + +Keeping your multilib up-to-date +================================ + +If you use slackpkg to keep your Slackware uptodate, then you may benefit from +adding slackpkg+ (http://slakfinder.org/slackpkg+.html), an extension to +slackpkg which allows you to manage package updates, not just for Slackware, +but also for 3rd party repositories which adhere to the Slackware repository +format. +The Multilib repository is compatible with slackpkg+, and its configuration +file has instructions on how to enable multilib repository support. +If you do not use slackpkg, then your best option is to keep a local mirror +of the multilib repository for your Slackware version, and regularly run: + # cd /path/to/multilib/slackware_version_dir/ + # upgradepkg --install-new *.t?z + # upgradepkg --install-new slackware64-compat32/*-compat32/*.t?z +If you do use slackpkg but do not want to add slackpkg+ then you need to do +the above but also take precautions so that slackpkg does not remove or +replace the multilib packages. Add these lines to /etc/slackpkg/blacklist to +prevent this behaviour: + [0-9]+alien + [0-9]+compat32 + + +Acknowledgements +================ + +A lot of thanks should go to Fred Emmott, who created Slamd64, the original +unofficial 64-bit fork of Slackware. Although Slackware64 was not based +on Fred's work, I still learnt most of what I know about setting up the +32-bit part of a multilib Linux from his writings that are found in Slamd64. + +Cross Linux From Scratch. The CLFS Wiki +(http://trac.cross-lfs.org/wiki/read#ReadtheCrossLinuxFromScratchBookOnline) +is a 'must-read' if you want to understand how to port Linux to a new +architecture. I took several ideas, concepts and patches from them when +creating Slackware64 from scratch, and again when I created my multilib +gcc/glibc packages from scratch (my README on this multilib-from-scratch +is available in the ./source directory). + + +Have fun! + +Eric diff --git a/packages_list/multilib/compat32.pkgs b/packages_list/multilib/compat32.pkgs new file mode 100644 index 00000000..eed467b2 --- /dev/null +++ b/packages_list/multilib/compat32.pkgs @@ -0,0 +1,246 @@ +aaa_libraries-compat32 +attr-compat32 +bzip2-compat32 +cracklib-compat32 +dbus-compat32 +e2fsprogs-compat32 +elogind-compat32 +eudev-compat32 +libgudev-compat32 +libpwquality-compat32 +lzlib-compat32 +openssl-solibs-compat32 +openssl10-solibs-compat32 +pam-compat32 +plzip-compat32 +util-linux-compat32 +xz-compat32 +cdparanoia-compat32 +cups-compat32 +cups-filters-compat32 +flac-compat32 +lm_sensors-compat32 +mariadb-compat32 +mpg123-compat32 +sqlite-compat32 +libtool-compat32 +llvm-compat32 +opencl-headers-compat32 +Mako-compat32 +SDL2-compat32 +SDL2_gfx-compat32 +SDL2_image-compat32 +SDL2_mixer-compat32 +SDL2_net-compat32 +SDL2_ttf-compat32 +aalib-compat32 +alsa-lib-compat32 +alsa-oss-compat32 +alsa-plugins-compat32 +at-spi2-atk-compat32 +at-spi2-core-compat32 +atk-compat32 +audiofile-compat32 +brotli-compat32 +cairo-compat32 +dbus-glib-compat32 +elfutils-compat32 +esound-compat32 +expat-compat32 +ffmpeg-compat32 +fftw-compat32 +fluidsynth-compat32 +freetype-compat32 +fribidi-compat32 +gamin-compat32 +gc-compat32 +gdk-pixbuf2-compat32 +gdk-pixbuf2-xlib-compat32 +giflib-compat32 +glib2-compat32 +gmp-compat32 +gnome-keyring-compat32 +gobject-introspection-compat32 +graphene-compat32 +graphite2-compat32 +gst-plugins-bad-free-compat32 +gst-plugins-base-compat32 +gst-plugins-good-compat32 +gst-plugins-libav-compat32 +gstreamer-compat32 +gtk+2-compat32 +gtk+3-compat32 +harfbuzz-compat32 +icu4c-compat32 +isl-compat32 +jansson-compat32 +jasper-compat32 +json-c-compat32 +json-glib-compat32 +keyutils-compat32 +lame-compat32 +lcms-compat32 +lcms2-compat32 +libaio-compat32 +libarchive-compat32 +libasyncns-compat32 +libbluray-compat32 +libcaca-compat32 +libcap-compat32 +libcdio-compat32 +libcdio-paranoia-compat32 +libclc-compat32 +libdbusmenu-compat32 +libdvdnav-compat32 +libedit-compat32 +libexif-compat32 +libffi-compat32 +libglade-compat32 +libgnt-compat32 +libgphoto2-compat32 +libidn-compat32 +libidn2-compat32 +libieee1284-compat32 +libjpeg-turbo-compat32 +libmad-compat32 +libmng-compat32 +libmpc-compat32 +libnice-compat32 +libnl3-compat32 +libnotify-compat32 +libnsl-compat32 +libnss_nis-compat32 +libogg-compat32 +libpcap-compat32 +libpng-compat32 +librsvg-compat32 +libsamplerate-compat32 +libsigc++3-compat32 +libsndfile-compat32 +libssh-compat32 +libtasn1-compat32 +libtheora-compat32 +libtiff-compat32 +libunistring-compat32 +libunwind-compat32 +liburing-compat32 +libusb-compat32 +libvorbis-compat32 +libvpx-compat32 +libwebp-compat32 +libxkbcommon-compat32 +libxml2-compat32 +libxslt-compat32 +lmdb-compat32 +lz4-compat32 +lzo-compat32 +mozilla-nss-compat32 +ncurses-compat32 +ocl-icd-compat32 +openal-soft-compat32 +openexr-compat32 +openjpeg-compat32 +opus-compat32 +orc-compat32 +pango-compat32 +pcre-compat32 +pcre2-compat32 +pipewire-compat32 +polkit-compat32 +popt-compat32 +pulseaudio-compat32 +python-six-compat32 +qt-compat32 +qt5-compat32 +readline-compat32 +rpcsvc-proto-compat32 +sbc-compat32 +sdl-compat32 +slang-compat32 +speex-compat32 +speexdsp-compat32 +startup-notification-compat32 +svgalib-compat32 +taglib-compat32 +talloc-compat32 +tdb-compat32 +tevent-compat32 +v4l-utils-compat32 +vid.stab-compat32 +wavpack-compat32 +woff2-compat32 +xxHash-compat32 +zlib-compat32 +zstd-compat32 +c-ares-compat32 +curl-compat32 +cyrus-sasl-compat32 +gnutls-compat32 +krb5-compat32 +libgcrypt-compat32 +libgpg-error-compat32 +libtirpc-compat32 +nettle-compat32 +openldap-compat32 +openssl-compat32 +p11-kit-compat32 +samba-compat32 +egl-wayland-compat32 +eglexternalplatform-compat32 +fontconfig-compat32 +freeglut-compat32 +glew-compat32 +glu-compat32 +intel-vaapi-driver-compat32 +libFS-compat32 +libICE-compat32 +libSM-compat32 +libX11-compat32 +libXScrnSaver-compat32 +libXau-compat32 +libXaw-compat32 +libXcomposite-compat32 +libXcursor-compat32 +libXdamage-compat32 +libXdmcp-compat32 +libXevie-compat32 +libXext-compat32 +libXfixes-compat32 +libXfont2-compat32 +libXfontcache-compat32 +libXft-compat32 +libXi-compat32 +libXinerama-compat32 +libXmu-compat32 +libXp-compat32 +libXpm-compat32 +libXrandr-compat32 +libXrender-compat32 +libXres-compat32 +libXt-compat32 +libXtst-compat32 +libXv-compat32 +libXvMC-compat32 +libXxf86dga-compat32 +libXxf86misc-compat32 +libXxf86vm-compat32 +libdmx-compat32 +libdrm-compat32 +libepoxy-compat32 +libfontenc-compat32 +libglvnd-compat32 +libinput-compat32 +libpciaccess-compat32 +libpthread-stubs-compat32 +libva-compat32 +libvdpau-compat32 +libwacom-compat32 +libxcb-compat32 +libxshmfence-compat32 +mesa-compat32 +pixman-compat32 +vulkan-sdk-compat32 +wayland-compat32 +xcb-util-compat32 +xorgproto-compat32 +sane-compat32 diff --git a/packages_list/multilib/glibc_packages.pkgs b/packages_list/multilib/glibc_packages.pkgs new file mode 100644 index 00000000..486466bc --- /dev/null +++ b/packages_list/multilib/glibc_packages.pkgs @@ -0,0 +1,13 @@ +aaa_glibc-solibs +compat32-tools +gcc +gcc-brig +gcc-g++ +gcc-gdc +gcc-gfortran +gcc-gnat +gcc-go +gcc-objc +glibc +glibc-i18n +glibc-profile \ No newline at end of file