WelcomeWelcome | FAQFAQ | DownloadsDownloads | WikiWiki

Author Topic: MultiLib32.tcz ( TCL12 x86_64-bit ! :)  (Read 6002 times)

Offline xor

  • Hero Member
  • *****
  • Posts: 1268
MultiLib32.tcz ( TCL12 x86_64-bit ! :)
« on: September 18, 2020, 09:17:37 AM »
MultiLib32.tcz ( TCL12 x86_64-bit ! :)

In TCL12 x86_64-bit architecture, the 64-bit Lib folder structure should be named "Lib64" and optionally

MultiLib32.tcz (TCL12 x86_64-bit) I suggest creating the MultiLib32.dep file content.

In this way, no changes will occur in the existing TCL minimalist file size, and the optional MultiLib content will be added to the system in a minimalist way.

I strongly request that this be submitted to a committee commission vote in a democratic manner.


Offline andyj

  • Hero Member
  • *****
  • Posts: 1036
Re: MultiLib32.tcz ( TCL12 x86_64-bit ! :)
« Reply #1 on: September 18, 2020, 04:57:39 PM »
TCL isn't a democracy, and besides there is only one person complaining. Sorry, not sorry. If you want and/or need multilib, there are plenty of other distros that have it. You are also in no way restricted from forking TCL or just starting your own distro outright.

Offline xor

  • Hero Member
  • *****
  • Posts: 1268
Re: MultiLib32.tcz ( TCL12 x86_64-bit ! :)
« Reply #2 on: September 19, 2020, 04:18:03 AM »
if there is no democracy here;
take me to your leader! :)

TCL isn't a democracy, and besides there is only one person complaining. Sorry, not sorry. If you want and/or need multilib, there are plenty of other distros that have it. You are also in no way restricted from forking TCL or just starting your own distro outright.

Offline Sashank999

  • Sr. Member
  • ****
  • Posts: 405
Re: MultiLib32.tcz ( TCL12 x86_64-bit ! :)
« Reply #3 on: September 19, 2020, 06:03:52 AM »
Looks like the words are crossing their limits...

Leader isn't a good word in forums like here. We are volunteers who contribute. We don't have a leader but we have admins who actually evaluate the work or help we do.

And one thing, multilib ends near soon. So even Steam or WINE needs to migrate to full 64-bit Distros. They are the main users of multilib. If they are gone, most of multilib users are gone.

Offline lhaley42

  • Newbie
  • *
  • Posts: 39
Re: MultiLib32.tcz ( TCL12 x86_64-bit ! :)
« Reply #4 on: September 21, 2020, 11:22:04 AM »
This is a topic I've been interested in - and so I'm curious if you could share the background to your offering of:

Quote
And one thing, multilib ends near soon.

My asking is only intended to educate myself;  not challenge this statement.

Thanks,
Lexi
Lexi

Offline Sashank999

  • Sr. Member
  • ****
  • Posts: 405
Re: MultiLib32.tcz ( TCL12 x86_64-bit ! :)
« Reply #5 on: September 21, 2020, 11:14:14 PM »
Since you are interested in this, read this :
https://hackaday.com/2019/07/09/the-saga-of-32-bit-linux-why-going-64-bit-raises-concerns-over-multilib/

And some quotes that highlight my point are :
Quote
With (linux) developer’s eyes always on the horizon ahead of them, it should come as no surprise to find that support for older hardware or protocols occasionally falls to the wayside. When maintaining antiquated code monopolizes developer time, or even directly conflicts with new code, a difficult decision needs to be made.

Back in 2012 when Linus Torvalds officially ended kernel support for legacy 386 processors, he famously closed the commit message with “Good riddance.” Maintaining support for such old hardware had been complicating things...

... Arch Linux decided to drop support for 32-bit hardware entirely. Maintainers had noticed the drop-off in downloads for the 32-bit versions of their distributions and decided it didn’t make sense to keep producing them. In an era where even budget smartphones are shipping with 64-bit processors, many Linux distributions have at this point decided 32-bit CPUs weren’t worth their time.

... Ubuntu announcing last month(article was on July 9 2019) that they’d no longer be providing 32-bit versions of packages in their repository ...

... on the whole, Linux has no concept of “legacy” software.

... average Linux user in 2019 should rarely find themselves in a situation where they’re attempting to run a 32-bit binary on a 64-bit machine. This is in stark contrast with Windows users, who tend to get their software as pre-compiled binaries from the developer. If the developer hasn’t kept their software updated, then there’s a very real chance it will remain a 32-bit application forever.

For this reason, Windows will allow seamless integration of 32-bit software for many years to come. But for Linux, this capability is not nearly as important. Most distributions do provide the ability to run 32-bit binaries on a 64-bit installation through a concept known as multlib, but it’s not uncommon to find this capability disabled by default to reduce installation size(this is also disabled in TCL).

When WINE and Steam developers heard there was a possibility that Ubuntu would drop the 32-bit libraries their respective projects relied upon, both camps released statements saying that they would have to reevaluate their position on the distribution going forward.
See this : https://hackaday.com/wp-content/uploads/2019/06/linux32_steam.png

With the looming threat that WINE and Steam would no longer support their distribution, it only took a day or two for the Ubuntu developers to adjust their course. In a post to the https://ubuntu.com/blog/statement-on-32-bit-i386-packages-for-ubuntu-19-10-and-20-04-lts official Ubuntu Blog, the developers make it clear that they never intended to completely disable the ability to run 32-bit “legacy” programs on future versions of Ubuntu. But more to the point, they promised to work closely with the teams behind WINE and Steam to make sure that any and all 32-bit libraries their software needs will remain part of the Ubuntu package repositories for the foreseeable future. For now, a crisis seems to have been averted.

But for how long?
.

Offline andyj

  • Hero Member
  • *****
  • Posts: 1036
Re: MultiLib32.tcz ( TCL12 x86_64-bit ! :)
« Reply #6 on: September 22, 2020, 08:31:25 AM »
FWIW, Google has not supplied pre-compiled chrome for 32-bit Linux for a while now. Microsoft SQL Server for Linux has always been 64-bit only, and Windows 10 is now 64-bit only for OEM's. The first AMD64's were sold in 2003. Any 32-bit x86 CPU in existence today was designed more than two decades ago. Time to move on.

Offline Juanito

  • Administrator
  • Hero Member
  • *****
  • Posts: 14849
Re: MultiLib32.tcz ( TCL12 x86_64-bit ! :)
« Reply #7 on: September 22, 2020, 09:16:32 AM »
Windows 10 is now 64-bit only for OEM's.

Unless something changed recently, "windows 10 64-bit" is actually multi-lib and therein lies the problem.

Offline andyj

  • Hero Member
  • *****
  • Posts: 1036
Re: MultiLib32.tcz ( TCL12 x86_64-bit ! :)
« Reply #8 on: September 22, 2020, 11:37:39 AM »
True, except that drivers have to be 64-bit which is how legacy hardware support gets dropped. MS is just not selling 32-bit Windows 10 to OEM's anymore. But what this whole multilib discussion boils down to is that Linux isn't like Windows for legacy software support, and that upsets some people. Too bad. If someone wants to run old Windows software, run Windows. Use the tool meant for the job you want to do.

Offline Juanito

  • Administrator
  • Hero Member
  • *****
  • Posts: 14849
Re: MultiLib32.tcz ( TCL12 x86_64-bit ! :)
« Reply #9 on: December 05, 2020, 05:00:18 AM »
Whilst there are no plans to make a multi-lib tinycore, here is how to do it based on CorePure64-11.x

Since the method overwrites existing extension symlinks with actual files, you will need 16gb ram. Once built, everything (binutils multi-lib, gcc multi-lib, glibc32 multi-arch) except the 64-bit glibc multi-arch could be made into an extension and thus use a lot less ram.

With reference to http://www.linuxfromscratch.org/~dj/lfs-systemd-multilib/chapter10/chapter10.html

Code: [Select]
tce-load -i compiletc texinfo python3.6 gettext coreutils

mkdir /opt/temptools
export PATH_HOLD="${PATH}"
export PATH="/opt/temptools/bin:${PATH}"

cd binutils-2.33.1

mkdir build
cd build

../configure --prefix=/opt/temptools --disable-nls --disable-static --disable-werror --enable-64-bit-bfd --enable-gold --with-ld=default --enable-multilib --target=x86_64-unknown-linux-gnu --with-sysroot=/opt/temptools --with-lib-path=/opt/temptools/lib:/opt/temptools/lib32:/opt/temptools/libx32

make -j3 [5m 0.67s]
make install


cd gcc-9.2.0

sed -e '/m64=/s/lib64/lib/' -e '/m32=/s/m32=.*/m32=..\/lib32$(call if_multiarch,:i386-linux-gnu)/' -i.orig gcc/config/i386/t-linux64

tar -xf ../mpfr-4.0.2.tar.xz
mv -v mpfr-4.0.2 mpfr
tar -xf ../gmp-6.1.2.tar.xz
mv -v gmp-6.1.2 gmp
tar -xf ../mpc-1.1.0.tar.gz
mv -v mpc-1.1.0 mpc

mkdir build
cd build

../configure --target=x86_64-unknown-linux-gnu --prefix=/opt/temptools --disable-nls --disable-shared --disable-decimal-float --disable-threads --disable-libatomic --disable-libgomp --disable-libmpx --disable-libquadmath --disable-libssp --disable-libvtv --disable-libstdcxx --enable-languages=c,c++ --with-glibc-version=2.11 --with-slibdir=/opt/temptools/lib --with-sysroot=/opt/temptools --with-newlib --without-headers --with-local-prefix=/opt/temptools --with-multilib-list=m32,m64,mx32 --with-native-system-header-dir=/opt/temptools/include

make -j3 [13m 57.25s]
make install


cd glibc-2.30

edit manual/libc.texinfo
remove @documentencoding UTF-8

patch -Np1 -i ../glibc-2.30-fhs-1.patch

mkdir build
cd build

BUILD_CC="gcc" BUILD_CXX=g++ CC="x86_64-unknown-linux-gnu-gcc -m32" CXX="x86_64-unknown-linux-gnu-g++ -m32" AR="x86_64-unknown-linux-gnu-ar" RANLIB="x86_64-unknown-linux-gnu-ranlib" ../configure --prefix=/usr --build=x86_64-unknown-linux-gnu --host=i686-pc-linux-gnu --enable-kernel=3.2 --enable-multi-arch --libdir=/usr/lib32 --with-headers=/usr/include --with-binutils=/opt/temptools/bin libc_cv_slibdir=/usr/lib32

make -j3 [4m 52.61s]

make install_root="${PWD}/DESTDIR" install
sudo install -vdm755 /usr/lib32
sudo cp -Rv DESTDIR/usr/lib32/* /usr/lib32
sudo install -vm644 DESTDIR/usr/include/gnu/lib-names-32.h /usr/include/gnu/
sudo install -vm644 DESTDIR/usr/include/gnu/stubs-32.h /usr/include/gnu/
sudo ln -svf ../usr/lib32/ld-linux.so.2 /lib/ld-linux.so.2
sudo ln -svf ../lib/locale /usr/lib32/locale
sudo echo "/usr/lib32" >> /etc/ld.so.conf
sudo ldconfig

export PATH="${PATH_HOLD}"
unset PATH_HOLD
sudo rm -r /opt/temptools


cd binutils-2.33.1 (multi-lib)

mkdir build
cd build

../configure --prefix=/usr/local --enable-gold --enable-ld=default --enable-multilib --enable-plugins --enable-shared --disable-werror --with-system-zlib --with-lib-path=/usr/lib:/lib:/usr/lib32:/usr/libx32:/usr/local/lib:/usr/local/lib32

make -j3 tooldir=/usr/local [5m 20.43s]
sudo make tooldir=/usr/local install


tce-load -i mpc-dev

cd gcc-9.2.0 (multi-lib)

sed -e '/m64=/s/lib64/lib/' -e '/m32=/s/m32=.*/m32=..\/lib32$(call if_multiarch,:i386-linux-gnu)/' -i.orig gcc/config/i386/t-linux64

edit gcc/config/i386/linux64.h
#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-linux-x86-64.so.2"

mkdir build
cd build

../configure --prefix=/usr/local --enable-languages=c,c++ --enable-multilib --disable-bootstrap --with-system-zlib --libexecdir=/usr/local/lib --with-mpfr=/usr/local --with-gmp=/usr/local --with-mpc=/usr/local

make -j3 [20m 21.93s]
sudo make install

sudo install -vdm755 /usr/local/share/gdb/auto-load/usr/lib
sudo mv -v /usr/local/lib/*gdb.py /usr/local/share/gdb/auto-load/usr/lib
sudo install -vdm755 /usr/local/share/gdb/auto-load/usr/lib32
sudo mv -v /usr/local/lib32/*gdb.py /usr/local/share/gdb/auto-load/usr/lib32/

sudo echo "/usr/local/lib32" >> /etc/ld.so.conf
sudo ldconfig


cd glibc-2.30 multi-lib

edit manual/libc.texinfo
remove @documentencoding UTF-8

patch -Np1 -i ../glibc-2.30-fhs-1.patch

mkdir build64
cd build64

../configure --prefix=/usr --disable-werror --enable-multi-arch  --enable-stack-protector=strong libc_cv_slibdir=/lib --libexecdir=/usr/lib/glibc --enable-kernel=4.19.10 --enable-obsolete-rpc

make -j3 [5m 9.07s]

sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile

sudo make install
sudo ldconfig

mkdir -v ../build32
cd ../build32

CC="gcc -m32" CXX="g++ -m32" ../configure --prefix=/usr --disable-werror --enable-multi-arch --enable-stack-protector=strong --libdir=/usr/lib32 libc_cv_slibdir=/usr/lib32 --libexecdir=/usr/lib32/glibc --enable-kernel=4.19.10 --enable-obsolete-rpc i686-pc-linux-gnu

make -j3 [5m 3.89s]

sudo make install_root=$PWD/DESTDIR install
sudo mv -v DESTDIR/usr/lib32/* /usr/lib32/
sudo install -vm644 DESTDIR/usr/include/gnu/lib-names-32.h /usr/include/gnu/
sudo install -vm644 DESTDIR/usr/include/gnu/stubs-32.h /usr/include/gnu/
ln -svf ../usr/lib32/ld-linux.so.2 /lib/ld-linux.so.2
ln -svf ../lib/locale /usr/lib32/locale

[supplementary 32-bit libs to test the toolchain]

cd zlib-1.2.11

CC="gcc -m32 -march=i486 -mtune=i686 -Os -pipe" ./configure --prefix=/usr --libdir=/usr/lib32

find . -name Makefile -type f -exec sed -i 's/-O3//g' {} \;

make [0m 3.89s]
make DESTDIR=$PWD/DESTDIR install
sudo cp -Rv DESTDIR/usr/lib32/* /usr/lib32


cd file-5.37

CC="gcc -m32 -march=i486 -mtune=i686 -Os -pipe" ./configure --prefix=/usr --libdir=/usr/lib32

find . -name Makefile -type f -exec sed -i 's/-g -O2//g' {} \;

make [0m 3.60s]
make DESTDIR=$PWD/DESTDIR install
sudo cp -Rv DESTDIR/usr/lib32/* /usr/lib32


cd bzip2-1.0.8

sed -i 's@\(ln -s -f \)$(PREFIX)/bin/@\1@' Makefile

find . -name Makefile-libbz2_so -type f -exec sed -i 's/-O2 -g//g' {} \;
make CC="gcc -m32 -march=i486 -mtune=i686 -Os -pipe" BIGFILES="" -f Makefile-libbz2_so
make clean

find . -name Makefile -type f -exec sed -i 's/-O2 -g//g' {} \;
make CC="gcc -m32 -march=i486 -mtune=i686 -Os -pipe" BIGFILES=""


make PREFIX=$PWD/DESTDIR/usr install
sudo cp -Rv DESTDIR/usr/lib/* /usr/lib32
sudo cp -av libbz2.so* /usr/lib32


cd ncurses-6.1

sed -i '/LIBTOOL_INSTALL/d' c++/Makefile.in

CC="gcc -m32 -march=i486 -mtune=i686 -Os -pipe" CXX="g++ -m32 -march=i486 -mtune=i686 -Os -pipe -fno-exceptions -fno-rtti" ./configure --prefix=/usr --libdir=/usr/lib32 --mandir=/usr/share/man --with-shared --without-debug --without-normal --enable-pc-files --enable-widec

find . -name Makefile -type f -exec sed -i 's/-O2//g' {} \;

make [0m 34.48s]
make DESTDIR=$PWD/DESTDIR install
sudo cp -Rv DESTDIR/usr/lib32/* /usr/lib32


cd attr-2.4.48

CC="gcc -m32 -march=i486 -mtune=i686 -Os -pipe" ./configure --prefix=/usr --disable-static --sysconfdir=/etc --libdir=/usr/lib32

find . -name Makefile -type f -exec sed -i 's/-g -O2//g' {} \;

make [0m 1.55s]
make DESTDIR=$PWD/DESTDIR install
sudo cp -Rv DESTDIR/usr/lib32/* /usr/lib32


tce-load -i attr-dev

cd acl-2.2.53

CC="gcc -m32 -march=i486 -mtune=i686 -Os -pipe" ./configure --prefix=/usr --libdir=/usr/lib32 --disable-static --libexecdir=/usr/lib32

find . -name Makefile -type f -exec sed -i 's/-g -O2//g' {} \;

make [0m 4.46s]
make DESTDIR=$PWD/DESTDIR install
sudo cp -Rv DESTDIR/usr/lib32/* /usr/lib32


cd libcap-2.25

sed -i '/install.*STALIBNAME/d' libcap/Makefile

find . -name Make.Rules -type f -exec sed -i 's/-O2//g' {} \;

make CC="gcc -m32 -march=i486 -mtune=i686 -Os -pipe" [0m 0.89s]
make lib=lib32 prefix=$PWD/DESTDIR/usr -C libcap install
sudo cp -Rv DESTDIR/usr/lib32/* /usr/lib32


cd xz-5.2.4

CC="gcc -m32 -march=i486 -mtune=i686 -Os -pipe" ./configure --prefix=/usr --disable-static --libdir=/usr/lib32

find . -name Makefile -type f -exec sed -i 's/-g -O2//g' {} \;

make [0m 10.18s]
make DESTDIR=$PWD/DESTDIR install
sudo cp -Rv DESTDIR/usr/lib32/* /usr/lib32


cd util-linux-2.34

add tty:x:4: to /etc/group

CC="gcc -m32 -march=i486 -mtune=i686 -Os -pipe" ./configure ADJTIME_PATH=/var/lib/hwclock/adjtime --docdir=/usr/share/doc/util-linux-2.32.1 --disable-chfn-chsh --disable-login --disable-nologin --disable-su --disable-setpriv --disable-runuser --disable-pylibmount --disable-static --without-python --without-systemd --libdir=/usr/lib32 --enable-libmount-force-mountinfo

find . -name Makefile -type f -exec sed -i 's/-g -O2//g' {} \;

make [1m 6.40s]
make DESTDIR=$PWD/DESTDIR install
sudo cp -Rv DESTDIR/usr/lib32/* /usr/lib32
« Last Edit: December 05, 2020, 08:55:27 AM by Juanito »

Offline xor

  • Hero Member
  • *****
  • Posts: 1268
Re: MultiLib32.tcz ( TCL12 x86_64-bit ! :)
« Reply #10 on: December 06, 2020, 07:45:57 AM »
thank you for feedback. :)

but I am using 4gb of ram. :(


Offline Juanito

  • Administrator
  • Hero Member
  • *****
  • Posts: 14849
Re: MultiLib32.tcz ( TCL12 x86_64-bit ! :)
« Reply #11 on: December 06, 2020, 08:00:25 AM »
If you compile on permanent storage, like an external usb drive, you might just manage - especially if you strip the binaries after installation.

Offline xor

  • Hero Member
  • *****
  • Posts: 1268
Re: MultiLib32.tcz ( TCL12 x86_64-bit ! :)
« Reply #12 on: December 06, 2020, 08:16:03 AM »
Could you give some more technical information!?

If you compile on permanent storage, like an external usb drive, you might just manage - especially if you strip the binaries after installation.

Offline Juanito

  • Administrator
  • Hero Member
  • *****
  • Posts: 14849
Re: MultiLib32.tcz ( TCL12 x86_64-bit ! :)
« Reply #13 on: December 06, 2020, 08:40:28 AM »
Assuming you have an external usb hard drive with a partition formatted with a linux filesystem named sdb1.

Then:
Code: [Select]
$ sudo mount /dev/sdb1
$ sudo mkdir -p /mnt/sdb1/usr/src
$ sudo chown tc:staff /mnt/sdb1/usr/src
$ cd /mnt/sdb1/usr/src
$ wget http://tinycorelinux.net/11.x/x86_64/release/src/toolchain/binutils-2.33.1.tar.xz
$ tar xf binutils-2.33.1.tar.xz

Then start at the beginning of the instructions given previously.

Offline xor

  • Hero Member
  • *****
  • Posts: 1268
Re: MultiLib32.tcz ( TCL12 x86_64-bit ! :)
« Reply #14 on: December 13, 2020, 07:58:53 AM »
http://forum.tinycorelinux.net/index.php/topic,24562.msg155903.html#msg155903
I downloaded the multilib content with the dcore file prompt (haven't tried it yet) is there a solution like this!?