summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2018-02-18 09:56:55 +0100
committerAndreas Baumann <mail@andreasbaumann.cc>2018-02-18 09:56:55 +0100
commit224768b40915233bf11a863946ffdcb2dda6a63f (patch)
tree3dc667797ff2eaa13874c07d5649f8cb846996cc
parenta2216f4f15f92f6e4f6dc387b5b5ffaf48e0470b (diff)
downloadbootstrap32-224768b40915233bf11a863946ffdcb2dda6a63f.tar.xz
cleaned up some documentation and moved old things into .Attic
-rw-r--r--.Attic/README.iputils36
-rw-r--r--.Attic/README.old_stage2919
-rw-r--r--README991
3 files changed, 973 insertions, 973 deletions
diff --git a/.Attic/README.iputils b/.Attic/README.iputils
new file mode 100644
index 0000000..b507a9e
--- /dev/null
+++ b/.Attic/README.iputils
@@ -0,0 +1,36 @@
+# for ping only, takes to many packages and ping is broken after
+# cross-compilation anyway (at least for me)
+
+# build packages for the i486-chroot
+####################################
+
+# basic packages
+PACKAGES=" \
+# TODO: iputils is for ping only, a little bit too many packages for
+# that.
+sysfsutils libidn nettle iputils"
+
+# sysfsutils and libidn, nettle for iputils
+SYSROOT_PACKAGES=" \
+sysfsutils libidn"
+
+# special patches for some packages
+###################################
+
+
+# libidn
+sed -i 's@./configure@./configure --host=i486-unknown-linux-gnu --build=x86_64-pc-linux-gnu@g' libidn/PKGBUILD
+
+# sysfsutils
+sed -i 's@./configure@./configure --host=i486-unknown-linux-gnu --build=x86_64-pc-linux-gnu@g' sysfsutils/PKGBUILD
+
+# nettle
+sed -i 's@./configure@./configure --host=i486-unknown-linux-gnu --build=x86_64-pc-linux-gnu@g' PKGBUILD
+
+# iputils
+# no documentation and use git from host
+sed -i 's@\(make doc man\)@#\1@' iputils/PKGBUILD
+sed -i 's@^makedepends\(.*\)@#makedepends\1@g' iputils/PKGBUILD
+sed -i 's@make @make CC=i486-unknown-linux-gnu-cc LD=i486-unknown-linux-gnu-ld@g' iputils/PKGBUILD
+sed -i 's@\(install -m644 doc\)@#\1@' iputils/PKGBUILD
+sed -i 's@\("${pkgdir}"/usr/share\)@#\1@' iputils/PKGBUILD
diff --git a/.Attic/README.old_stage2 b/.Attic/README.old_stage2
new file mode 100644
index 0000000..dd997af
--- /dev/null
+++ b/.Attic/README.old_stage2
@@ -0,0 +1,919 @@
+# old stage 2 based on a broken stage 1, so carefull what to pick
+# into the next version..
+
+#######################################
+##### TODO FROM HERE
+#######################################
+
+# TODO: m4. autoconf, automake, libtool are not really bootstrappable in x-tools
+# basic packages, non-virtual one from above: kernel, shell, pacman, editor, coreutils, development
+# tools (some of them can be bootstrapped inside like the autotools, perl; and they also should!)
+
+# linux-headers is important so we can build kmod inside the chroot
+# linux itself is tricky. For now we will boot with direct kernel parameters and binary in libvirt/qemu
+
+PACKAGES= \
+ \
+ \
+libffi glib2 libunistring gettext"
+
+# some binaries in the cross tools (also known as perl) have really
+# weird library pathes (and no rpath it seems)
+export LD_LIBRARY_PATH=/home/cross/x-tools/i486-unknown-linux-gnu/i486-unknown-linux-gnu/sysroot/usr/lib/:/home/cross/x-tools/i486-unknown-linux-gnu/i486-unknown-linux-gnu/sysroot/usr/lib/perl5/5.26/core_perl/CORE
+export PATH=/home/cross/x-tools/i486-unknown-linux-gnu/i486-unknown-linux-gnu/sysroot/bin:/home/cross/x-tools/i486-unknown-linux-gnu/i486-unknown-linux-gnu/sysroot/usr/bin:${PATH}
+
+###
+TODO FROM HERE
+
+ # TODO:
+ # autoreconf needs autotools/m4 and dependencies (crosstool-ng autotools are broken for me)\
+ # libunistring for gettext
+ # libffi for glib2
+ pushd $HOME/x-tools/i486-unknown-linux-gnu/i486-unknown-linux-gnu/sysroot
+ bsdtar xf $STAGE1_CHROOT/packages/i486/m4-1.4.18-1-i486.pkg.tar.gz
+ bsdtar xf $STAGE1_CHROOT/packages/i486/autoconf-2.69-4-any.pkg.tar.gz
+ bsdtar xf $STAGE1_CHROOT/packages/i486/automake-1.15.1-1-any.pkg.tar.gz
+ bsdtar xf $STAGE1_CHROOT/packages/i486/libffi-3.2.1-2-i486.pkg.tar.gz
+ bsdtar xf $STAGE1_CHROOT/packages/i486/libunistring-0.9.7-1-i486.pkg.tar.gz
+ popd
+
+ cd ..
+done
+
+
+# special patches for some packages
+###################################
+
+# autoconf needs help2man, checks need fortan (wow. that package is old!)
+# depends contains base-devel stuff?! diffutils
+sed -i 's@makedepends\(.*\)@#makedepends\1@g' autoconf/PKGBUILD
+sed -i 's@checkdepends\(.*\)@#checkdepends\1@g' autoconf/PKGBUILD
+sed -i 's@depends\(.*\)@#depends=\1@g' autoconf/PKGBUILD
+
+# automake needs dejagnu for testing, not now, disabling checks
+sed -i 's@checkdepends\(.*\)@#checkdepends\1@g' automake/PKGBUILD
+
+# libool: trusting the toolchain here, no silly checks :-)
+sed -i 's@makedepends\(.*\)@#makedepends\1@g' libtool/PKGBUILD
+
+# afterpatching; autreconf has a hard-coded #! /bin/perl -w bang,
+# seriously!
+chmod u+w /home/cross/x-tools/i486-unknown-linux-gnu/i486-unknown-linux-gnu/sysroot/usr/bin/autoreconf
+sed -i 's@^#/bin/perl@/home/cross/x-tools/i486-unknown-linux-gnu/i486-unknown-linux-gnu/sysroot/usr/bin/perl@g' \
+ /home/cross/x-tools/i486-unknown-linux-gnu/i486-unknown-linux-gnu/sysroot/usr/bin/autoreconf
+
+
+# glib2
+#######
+# take gettext from host
+sed -i 's@makedepends\(.*\)@#makedepends\1@g' glib2/PKGBUILD
+# get arch-meson wrapper, doens't build without it!
+# ok, forget meson, completly broken, resorting to autotools.
+# autoreconf: running: /home/cross/x-tools/i486-unknown-linux-gnu/bin/autoconf --force
+# configure.ac:88: error: possibly undefined macro: AC_DEFINE
+# huh?
+# retooling seems to be near impossible! ok, autoconf broken, meson unusable.. sweet
+Found pkg-config: /bin/pkg-config (0.27.1)
+Dependency libpcre found: NO
+Library m found: YES
+Not looking for a fallback subproject for the dependency libffi because:
+Automatic wrap-based fallback dependency downloading is disabled.
+
+Meson encountered an error in file meson.build, line 1439, column 0:
+Native dependency 'libffi' not found
+==> ERROR: A failure occurred in build().
+ Aborting...
+=> this is all very wrong!
+
+# gettext
+#########
+# remove glib2 from depends, not needed (why the hell is there anyway then?!?! just for fun?)
+
+# libarchive calls autoreconf, this is quite annoying as perl in crosstool-nt or
+###
+# stil in phase two, no proper autotools, let's apply the out-of-chroot trick once more..
+# do the autoreconf -fi outside, create a package libarchive-3.3.2-retooled.tgz
+# libarchive has trouble with wchar_t (and has quite some other trouble around autoconf it seems)
+# remove the wchar_t and wchar_t sizeof test in configure.ac manutally before retooling
+# and of course tests fail!
+# no checks again
+sed -i "s@^source=.*@source=('libarchive-3.3.2-retooled.tgz')@g" libarchive/PKGBUILD
+sed -i "s@^sha256sums=.*@sha256sums=('1f856e6f5cc0e1479f381e381a031ba19d09f80b51ac88e74b2c140fc78606e8')@g" libarchive/PKGBUILD
+sed -i 's@autoreconf@#autoreconf@g' libarchive/PKGBUILD
+
+# generic build
+###############
+
+for p in $PACKAGES
+
+ # for some packages we cannot execute tests (because the dependencies to install in
+ # the toolchain environment would be too much)
+ # autoconf: --nocheck
+ # automake: --nockeck
+ # pacman: --nocheck
+ # mpfr: --nocheck
+
+ # for ncurses, readline for bash
+ # autoreconf needs autotools/m4 and dependencies (crosstool-ng autotools are broken for me)
+ # libunistring for gettext
+ # libffi for glib2
+ bsdtar xf $STAGE1_CHROOT/packages/i486/m4-1.4.18-1-i486.pkg.tar.gz
+ bsdtar xf $STAGE1_CHROOT/packages/i486/mpfr-3.1.6.p1-1-i486.pkg.tar.gz
+ bsdtar xf $STAGE1_CHROOT/packages/i486/libmpc-1.0.3-2-i486.pkg.tar.gz
+ bsdtar xf $STAGE1_CHROOT/packages/i486/gawk-4.1.4-2-i486.pkg.tar.gz
+ bsdtar xf $STAGE1_CHROOT/packages/i486/libffi-3.2.1-2-i486.pkg.tar.gz
+ bsdtar xf $STAGE1_CHROOT/packages/i486/libunistring-0.9.7-1-i486.pkg.tar.gz
+ popd
+
+ cd ..
+done
+
+testing:
+
+# common issues
+###############
+
+
+TODOS: in linux package makepkg
+https://github.com/libarchive/libarchive/issues/411
+
+https://rubenerd.com/sata-on-qemu/
+
+/usr/libexec/qemu-kvm --enable-kvm -cpu 486 -m 32 -vnc 0.0.0.0:2 \
+ -kernel linux/pkg/linux/boot/vmlinuz-linux \
+ -append 'root=/dev/hda1 nomodeset init=/etc/rc console=ttyS0 console=tty0' \
+ -cdrom /data/isos/arch486.iso -hda /data/libvirt/arch486.qcow2 -nographic
+
+qemu-system-i386 --enable-kvm -cpu 486 -m 32 -cdrom /data/isos/arch486.iso \
+ -hda /data/libvirt/arch486.qcow2 -curses -boot d \
+ -netdev user,id=net0,net=10.0.0.0/24,host=10.0.0.2,dhcpstart=10.0.0.16,hostfwd=tcp::2222-:22 \
+ -device rtl8139,netdev=net0
+
+qemu-system-i386 --enable-kvm -cpu 486 -m 32 \
+ -hda /home/cross/arch486.img -curses -boot d \
+ -netdev user,id=net0,net=10.0.0.0/24,host=10.0.0.2,dhcpstart=10.0.0.16,hostfwd=tcp::2222-:22 \
+ -device rtl8139,netdev=net0
+
+# very funny: uvesafb: failed to execute /sbin/v86d
+# Intel and ARM DRM modules:
+# BUG: unable to handle kernel NULL pointer dereference at (null)
+
+PHASE 2
+#######
+
+Test what we can build inside the chroot.
+When we get all dependencies right, we go into the real environment (which is
+i486 and thus not SMP and slow- ok, we could use distcc, but anyway)
+
+Main problem: we have trouble to run fakeroot in a chroot
+fakeroot: nested operation not yet supported
+makepkf -F takes care of that (thanks for providing minial fakeroot support)
+but pacman also takes an -F parameter
+-> INFAKEROOT=1 in /usr/bin/makepkg
+
+As pacman seems to have some trouble, we overwrite the temp packages inside
+the chroot and replace the files on the filesystem forcefully:
+error: could not register 'temp' database (wrong or NULL argument passed)
+
+In this round don't skip dependencies and tests if possible.
+
+cp pkg/arch-install-scripts/usr/bin/arch-chroot /usr/local/bin/.
+
+arch-chroot /home/cross/i486-root/
+
+# package specific things
+
+# iana-etc:
+download error https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml
+=> we miss /etc/ssl/certs/ca-certificates.crt from ca-certificates-utils, we
+ can copy it from an existing archlinux
+
+# hack /usr/bin/makepkg, run_pacman again, this time set
+# --config /etc/pacman-i486.conf -r /
+
+# tzdata
+/build/tzdata/PKGBUILD: line 25: zic: command not found
+==> ERROR: A failure occurred in package().
+ Aborting...
+=> forgot zig in the shim
+
+# ncurses
+# dlsym errors and we don't have a C++ compiler (yet)
+sed -i 's@./configure@./configure --without-dlsym@g' ncurses/PKGBUILD
+sed -i 's@--with-cxx-binding --with-cxx-shared@--without-cxx --without-cxx-binding --without-cxx-shared@g' ncurses/PKGBUILD
+
+# perl
+######
+perl: warning: Please check that your locale settings:
+ LANGUAGE = (unset),
+ LC_ALL = (unset),
+ LANG = "en_US.UTF-8"
+ are supported and installed on your system.
+
+# openssl
+sed -i 's@i686@i486@g' openssl/PKGBUILD
+sed -i 's@no-ssl3-method@no-sse2 no-ssl3-method@g' openssl/PKGBUILD
+
+# xz
+# with gcc 7.2 we get new errors
+sed -i 's@--enable-werror@--disable-werror@g' xz/PKGBUILD
+
+# help2man
+# needs perl-locale-gettext, which needs gettext, which needs glib2
+# which needs meson (so a big nogo currently!)
+# obviously it builds also without gettext..
+sed -i 's@^depends\(.*\)@#depends\1@g' help2man/PKGBUILD
+
+# bc
+# requires texinfo, is this part of base-devel?
+# bootstrap --force
+# no /usr/lib32
+# ./fbc -c ./libmath.b </dev/null >libmath.h
+
+
+# libelf
+########
+In file included from /usr/include/error.h:52:0,
+ from xmalloc.c:33:
+/usr/include/bits/error.h: In function 'error':
+/usr/include/bits/error.h:40:5: error: format not a string literal, argument types not checked [-Werror=format-nonliteral]
+ __error_noreturn (__status, __errnum, __format, __va_arg_pack ());
+ ^~~~~~~~~~~~~~~~
+=> -isystem in gcc specfile needed, not -I
+
+
+#
+# libxml2
+# go without icu for now, icu needs C++
+# also, python bindings and git are not really needed
+sed -i 's@^depends\(.*\)@#depends\1@g' libxml2/PKGBUILD
+sed -i 's@^makedepends\(.*\)@#makedepends\1@g' libxml2/PKGBUILD
+build()
+{
+ sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0 /g' libtool
+ make
+}
+sed -i 's@--with-icu@@' libxml2/PKGBUILD
+# dito package
+# really, what is it with people!
+# take: ftp://xmlsoft.org/libxml2/libxml2-2.9.7.tar.gz
+#source=(git+https://git.gnome.org/browse/libxml2#commit=$_commit
+# no tests, c++ tests would fail
+./configure: line 13042: syntax error near unexpected token `Z,zlib,'
+./configure: line 13042: ` PKG_CHECK_MODULES(Z,zlib,'
+==> ERROR: A failure occurred in build().
+ Aborting...
+-> zlib probing needs pkg-config, which is it's own disaster, so disable
+zlib for now.
+=> hack out the broken PKG_CHECK_MODULES out of configure!
+-> same trick for LZMA (equally broken) and ICU
+-> disable testing for now, either it takes long or it hangs
+
+# libgcrypt
+# download location broken, download by hand, adapt PKGBUILD
+
+# libxslt: same disaster as libxml2
+# no python, no check
+
+# kmod: circular dependency on linux-headers, let's build
+# linux/linux-headers correctly outside the chroot and install
+# them here (at least linux-headers)
+# gtk-doc draws in Gnome bullshit again
+sed -i 's@^makedepends\(.*\)@#makedepends\1@g' kmod/PKGBUILD
+
+# libtirpc: break the cyrcle with systemd (via krb5)
+sed -i 's@^makedepends\(.*\)@#makedepends\1@g' libtirpc/PKGBUILD
+sed -i 's@^depends\(.*\)@#depends\1@g' libtirpc/PKGBUILD
+# configure: error: gssapi.h not found. Use --disable-gssapi, or install GSS-API.
+# --disable-gssapi
+
+# pam:
+# dependency w3m is for documentation, let's remove it
+rm: cannot remove '/build/pam/pkg/pam/usr/share/doc/Linux-PAM/sag-pam_userdb.html': No such file or directory
+also remove section in PKGBUILD
+
+# inetutils:
+# disable checks
+
+# iroute2
+# trying with iptables, as iptables draws in tons of things
+sed -i 's@^makedepends\(.*\)@#makedepends\1@g' iproute2/PKGBUILD
+sed -i 's@^depends\(.*\)@#depends\1@g' iproute2/PKGBUILD
+
+# bison
+# --nocheck: fails miserably to compile tests (C++ missing?)
+
+# linux-headers: fails hapilly and has tons of weird stuff in it
+install: failed to access ‘/home/cross/build/linux/pkg/linux-headers/usr/lib/modules/4.13.13-1/build’: No such file or directory
+_package-headers()
+=> mkdir -p "${_builddir}" everywhere, the problem is install -D on Centos, obviously broken!
+
+# kmod
+configure: error: The pkg-config script could not be found or is too old. Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+Alternatively, you may set the environment variables liblzma_CFLAGS
+and liblzma_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+See `config.log' for more details
+==> ERROR: A failure occurred in build().
+ Aborting...
+=> let's try to set lzma ourselves or disable it, get around pkg-config probing
+# no pkg-config, no docu, try to work around
+sed -i 's@--enable-gtk-doc@--disable-gtk-doc@g' kmod/PKGBUILD
+sed -i 's@./configure@liblzma_CFLAGS=-I/usr/include liblzma_LIBS=-llzma ./configure@g' kmod/PKGBUILD
+sed -i 's@./configure@zlib_CFLAGS=-I/usr/include zlib_LIBS=-lz ./configure@g' kmod/PKGBUILD
+=> ok heck: linking errors
+sed -i 's@--with-xz@--without-xz@g' kmod/PKGBUILD
+sed -i 's@--with-zlib@--without-zlib@g' kmod/PKGBUILD
+
+# libidn
+# --nocheck, testing hangs
+
+# iputils
+# remove git again
+# no docu, hack out manually
+sed -i 's@^makedepends\(.*\)@#makedepends\1@g' iptuils/PKGBUILD
+
+# perl-error
+# no checks, needs perl test-pod
+sed -i 's@^checkdepends\(.*\)@#checkdepends\1@g' perl-error/PKGBUILD
+
+
+# shadow
+# git treatment again.
+# no docu
+# --disable-man
+
+# git
+sed -i 's@^makedepends\(.*\)@#makedepends\1@g' git/PKGBUILD
+# no make doc
+# disable most things in build
+# disable doc in install-doc
+# NO_GETTEXT=1
+# --nocheck
+=> no luck
+
+# lz4:
+# git tweaking again, use 1.8.0 tarball
+
+# tar:
+# checking whether mknod can create fifo without root privileges... configure: error: in `/build/tar/src/tar-1.29':
+# configure: error: you should not run configure as root (set FORCE_UNSAFE_CONFIGURE=1 in environment to bypass this check)
+# See `config.log' for more details
+=> oh, please, bugger off!
+sed -i 's@./configure@FORCE_UNSAFE_CONFIGURE=1 ./configure@g' tar/PKGBUILD
+
+#TODO:
+# lz4
+# git package again
+sed -i 's@^makedepends\(.*\)@#makedepends\1@g' lz4/PKGBUILD
+
+#TODO: cracklib util-linux e2fsprogs libldap keyutils krb5 they end in circlejerk with systemd!
+# we will solve that later by building a non-systemd version and then bootstrapping first systemd
+# git: out of reach for now, far too many dependencies
+perl-error git
+
+# for now we don't rebuild ca-certificates, we had to copy them funilly anyway, and it's
+# just a bunch of certs. So, in phase 3 or 4 then..
+
+# curl
+######
+# curl needs asciidoc and p11-kit, don't build them, use them from the host
+sed -i 's@makedepends\(.*\)@#makedepends\1@g' curl/PKGBUILD
+# build with minimal features, enough to make pacman download packages
+sed -i 's@depends\(.*\)@depends=('ca-certificates' 'openssl' 'zlib')@g' curl/PKGBUILD
+# zsh, perl is used to create a completion file for curl and zsh?
+sed -i 's@--with-gssapi@--with-gssapi --without-zsh-functions-dir@g' curl/PKGBUILD
+
+# pacman
+########
+# pacman's tests mostly fail on non-Archlinux, so skip them
+# asciidoc is a makedepend, we can use the one on the host
+sed -i 's@makedepends\(.*\)@#makedepends\1@g' pacman/PKGBUILD
+sed -i 's@checkdepends\(.*\)@#checkdepends\1@g' pacman/PKGBUILD
+# minimal dependencies, we don't sign anything yet
+sed -i "s/'gpgme'//g" pacman/PKGBUILD
+sed -i "s/'pacman-mirrorlist'//g" pacman/PKGBUILD
+sed -i "s/'archlinux-keyring'//g" pacman/PKGBUILD
+# we need pkg-config, otherwise pacman find libarchive in the wrong
+# place, but pkg-config needs glib2 and glib2 is built using meson (urgh!)
+# when we take the host version, lets patch the host pkgconfig file to
+# use the sysroot of the toolchain
+# we simply set LIBARCHIVE_CFLAGS and LIBARCHIVE_LIBS to get rid of pkg-config probing
+sed -i 's@./configure@LIBARCHIVE_CFLAGS=-I/usr/include LIBARCHIVE_LIBS=-larchive ./configure@g' pacman/PKGBUILD
+# --nocheck still, as we don't have python yet
+# and of course :-)
+sed -i 's/exit 1 # \$E_USER_ABORT/# exit 1 # $E_USER_ABORT/g' /home/cross/i486-root/usr/bin/makepkg
+# TODO
+install: cannot stat '/build/pacman/src/pacman.conf.i486': No such file or directory
+==> ERROR: A failure occurred in package().
+ Aborting...
+=> use the /etc/pacman-i486.conf from the chroot as pacman.conf.i486 (we still have the temp
+ repo and we force the Architecture)
+sed -i "s/686)/486)/g" pacman/PKGBUILD
+sed -i 's/mycarch="i686"/mycarch="i486")/g' pacman/PKGBUILD
+sed -i 's/mychost="i686-pc-linux-gnu"/mychost="i486-pc-linux-gnu"/g' pacman/PKGBUILD
+sed -i 's/myflags="-march=i686"/myflags=-march=i486/g' pacman/PKGBUILD
+
+# coreutils
+###########
+sed -i 's@./configure@FORCE_UNSAFE_CONFIGURE=1 ./configure@g' coreutils/PKGBUILD
+
+# TODO: needed in stage 2?
+# apply man generation patch (one has to wonder, is it maintained at all?)
+# help2man errors: help2man: can't get `--help' info from man/chmod.td/chmod
+# http://ftp.lfs-matrix.net/pub/clfs/conglomeration/coreutils/coreutils-8.28-noman.patch
+# based on a patch by William Harrington (kb0iic at cross-lfs dot org) 2014-10-30 for coreutils 8.23
+#sed -i 's@source=(@source=(coreutils-8.28-noman.patch @' PKGBUILD
+#sed -i "s@md5sums=(@md5sums=('SKIP' @" PKGBUILD
+#sed -i '/build()/ i \ prepare() { \n\ cd ${pkgname}-${pkgver}\n\ patch -Np1 < ${srcdir}/coreutils-8.28-noman.patch \n }' PKGBUILD
+
+# zlib
+######
+strip: /lib/libz.so.1: no version information available (required by /lib/libbfd-2.29.1.so)
+=> this is because some tools are built with other versions (toolchain vs. chroot)
+=> so we must not install zlib before we rebuild binutils
+
+# util-linux
+############
+# disable some dependencies on systemd, python, PAM (chfn_chsh)
+# and other stuff we don't need
+# libtool seems broken
+sed -i 's@makedepends\(.*\)@#makedepends\1@g' PKGBUILD
+sed -i 's@ \+depends\(.*\)@#depends\1@g' PKGBUILD
+sed -i 's@--with-python=3@--without-python \\@g' PKGBUILD
+sed -i '/--without-python/ a \ --without-systemd --without-systemdsystemunitdir' PKGBUILD
+sed -i 's@./configure@./configure --host=i486-unknown-linux-gnu@g' PKGBUILD
+sed -i '/--without-python \\/ a \ --disable-chfn-chsh \\' PKGBUILD
+sed -i '/--without-python \\/ a \ --disable-shared --enable-static \\' PKGBUILD
+sed -i 's@\(chmod 4755 "$pkgdir"/usr/bin/{newgrp,ch{sh,fn}}\)@#\1@g' PKGBUILD
+sed -i "s@\(sed -i '/ListenStream.*\)@#\1@g" PKGBUILD
+sed -i 's@\(rm "$pkgdir.*\)@#\1@g' PKGBUILD
+# chgrp: chgrp: invalid group: 'tty'invalid group: 'tty'
+# /etc/group belongs to filesystem, but has only a root entry when installed
+=> filesystem package: post.install hook has not been executed (filesystem.install)
+=> for now do it manually
+groupadd -g 5 tty
+# IMPORTANT DNAGER: the test suite is crazzy and destroys the host!! use --nocheck
+# packaging generates tons of errors, lets hope, they are not critical.
+# cp: omitting directory ‘/’
+# => at least util-linux needs !strip OPTIONS (makepkg-i486.conf)
+#rm "$pkgdir"/usr/lib/lib*.{a,so}*
+
+# pcre
+######
+# no C++
+sed -i 's@./configure@./configure --disable-cpp@g' pcre/PKGBUILD
+# --nocheck as we have trouble to find shared libraries
+
+# gmp
+#####
+# no C++
+sed -i 's@--enable-cxx@--disable-cxx@g' gmp/PKGBUILD
+
+# gawk
+######
+# we don't have a valid locale yet, disable NLS
+# and disable testing
+sed -i 's@./configure@./configure --disable-nls@g' PKGBUILD
+
+# openssh
+#########
+# package suffers from featuritis
+# remove ldns and kerberos5 support, keep libedit (as it's easy to build)
+# ssh => not good, openssl <> unbound <> openssl cycle and mess
+sed -i 's@^makedepends\(.*\)@#makedepends\1@g' PKGBUILD
+sed -i 's@^depends\(.*\)@#depends\1@g' PKGBUILD
+sed -i 's@--with-ldns@--without-ldns@g' PKGBUILD
+sed -i 's@--with-kerberos5=/usr@--without-kerberos5@g' PKGBUILD
+#ln: failed to create symbolic link '/build/openssh/pkg/openssh/usr/share/man/man1/slogin.1.gz': No such file or directory
+sed -i 's@\(ln -sf ssh.1.gz.*\)@#\1@g' PKGBUILD
+
+# git
+#####
+# manual PKGBUILD fix
+# install: cannot stat 'contrib/credential/libsecret/git-credential-libsecret': No such file or directory
+# => PKGBUILD is a mess, sorry!
+# no asciidoc, as this needs python2
+#asciidoc -b docbook -d manpage -f ../../Documentation/asciidoc.conf \
+# -agit_version=2.15.0 git-subtree.txt
+# disable make install-doc
+#make: pkg-config: Command not found
+#make: pkg-config: Command not found
+#make: Leaving directory '/build/git/src/git-2.15.0/contrib/subtree'
+#mv: cannot stat '/build/git/pkg/git/usr/share/perl5/site_perl/Git/*': No such file or directory
+=> hack away python, perl, systemd, contrib, docu and other things we don't need right now
+
+git clone...
+Cloning into 'strusBase'...
+fatal: cannot run ssh: No such file or directory
+fatal: unable to fork
+fatal: Unable to find remote helper for 'https'
+fatal: Unable to find remote helper for 'http'
+=> we need ssh
+
+# tcl
+#####
+# disable tests: cynical, disable unit tests of a software needed for testing
+
+# autoconf
+##########
+# checks need fortan (wow. that package is old!)
+# depends contains base-devel stuff?! diffutils
+sed -i 's@makedepends\(.*\)@#makedepends\1@g' autoconf/PKGBUILD
+sed -i 's@checkdepends\(.*\)@#checkdepends\1@g' autoconf/PKGBUILD
+# not bad, but lets disable testing for now:
+# ERROR: 455 tests were run,
+# 5 failed (4 expected failures).
+# 48 tests were skipped.
+
+# automake
+##########
+# automake needs dejagnu for testing, not now, disabling checks
+sed -i 's@checkdepends\(.*\)@#checkdepends\1@g' automake/PKGBUILD
+# TOTAL: 2901
+# PASS: 2673
+# SKIP: 164
+# XFAIL: 41
+# FAIL: 21
+# XPASS: 0
+# ERROR: 2
+=> ok, but let's disable testing
+
+# dejagnu
+#########
+# has hard-wired AC_PROG_CXX in configure, remove internal C++ tests
+sed -i '/.\/configure/ i \ sed -i "s@AC_PROG_CXX@#AC_PROG_CXX@" configure.ac' dejagnu/PKGBUILD
+sed -i '/configure.ac/ a \ sed -i "s@\\(unit_SOURCES.*\\)@#\\1@g" Makefile.am' dejagnu/PKGBUILD
+sed -i '/configure.ac/ a \ sed -i "s@\\(check_PROGRAMS*\\)@#\\1@g" Makefile.am' dejagnu/PKGBUILD
+sed -i '/Makefile.am/ a \ autoreconf' dejagnu/PKGBUILD
+
+# wget
+######
+# no gnutls, no libpsl
+sed -i 's@^depends\(.*\)@#depends\1@g' PKGBUILD
+sed -i 's@--enable-nls@--disable-nls@g' PKGBUILD
+sed -i 's@--with-ssl=gnutls@--with-ssl=openssl@g' PKGBUILD
+sed -i '/.\/configure/ a \ --without-libpsl \\' PKGBUILD
+# work around pkg-config
+sed -i 's@./configure@OPENSSL_CFLAGS=-I/usr/include OPENSSL_LIBS="-lssl lcrypto" ./configure@g' PKGBUILD
+# needs myriads of perl modules for testing => --nocheck
+sed -i 's@^checkdepends\(.*\)@#checkdepends\1@g' PKGBUILD
+
+# binutils
+##########
+# risky, risky
+sed -i 's/glibc>=2.26/glib/g' binutils/PKGBUILD
+# this is in gold, so let's disable gold! We don't have C++ (yet), so this should not matter..
+sed -i 's@--enable-gold@--disable-gold@g' binutils/PKGBUILD
+
+# libunwind
+###########
+# no TeX, no docu
+sed -i 's@^makedepends\(.*\)@#makedepends\1@g' libunwind/PKGBUILD
+
+
+# TODO: gcc
+#####
+TODO:
+sed -i 's@^makedepends\(.*\)@#makedepends\1@g' binutils/PKGBUILD
+sed -i 's@^checkdepends\(.*\)@#checkdepends\1@g' binutils/PKGBUILD
+sed -i 's@^depends\(.*\)@#depends\1@g' binutils/PKGBUILD
+
+# gcc
+#####
+# no gcc-ada and doxygen
+sed -i '/makedepend/ s/gcc-ada //g' gcc/PKGBUILD
+sed -i '/makedepend/ s/doxygen //g' gcc/PKGBUILD
+# avoid huge git checkouts
+sed -i 's@git+https://gcc.gnu.org/git/gcc.git.*@ftp://ftp.mpi-sb.mpg.de/pub/gnu/mirror/gcc.gnu.org/pub/gcc/releases/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.gz@' gcc/PKGBUILD
+sed -i 's@cd gcc$@cd ${pkgname}-${pkgver}@g' gcc/PKGBUILD
+sed -i 's@$srcdir/gcc/configure@$srcdir/${pkgname}-${pkgver}/configure@g' gcc/PKGBUILD
+# we don't have a working C++ compiler right now, be must bootstrap
+# doesn't work, we need c++ sind 4.8!
+#sed -i '/--enable-shared/ a \ --enable-bootstrap \\' gcc/PKGBUILD
+# remove ADA, we don't have (and will most likely never have a GNAT binary to
+# bootstrap ADA itself), on the other hand, there is nothing using ADA anyway.
+# at least not in packages/community
+sed -i '/pkgname/ s/gcc-ada//g' gcc/PKGBUILD
+sed -i '/enable-languages/ s/ada//g' gcc/PKGBUILD
+# send bugs to the right place
+sed -i 's@https://bugs.archlinux.org/@https://bugs.archlinux32.org/@g' gcc/PKGBUILD
+# so, I don't know what GNU people call bootstrapping, but this definitely isn't for C!
+/usr/include/c++/7.2.0/cstdlib:75:15: fatal error: stdlib.h: No such file or directory
+=> let's try to fix the C++ compiler then..
+# this is really really dangerous, let's hope, it works
+=> find /usr/include/c++/7.2.0 -type f -exec sed -i 's/#include_next/#include/g' {} \;
+# /build/gcc/src/gcc-7.2.0/libgo/testsuite/gotest: line 624: 28445 Killed ./a.out -test.short -test.timeout=${timeout}s "$@"
+=> ok, enough, go without testing
+==> Starting package_gcc-go()...
+make: *** i486-pc-linux-gnu/libgo: No such file or directory. Stop.
+==> ERROR: A failure occurred in package_gcc-go().
+ Aborting...
+=> fails, oh well, nobody needs go :-)
+
+
+
+only c language
+no checkdepdns, makedepnds
+
+why the hell, I switched off c++, so wy are still cpp probes being done!?
+/lib/cpp hardcoded, seriosly!!
+# in prepare()
+ln -s ../bin/cpp /home/cross/x-tools/i486-unknown-linux-gnu/lib/cpp
+find . -name configure -exec sed -i 's@/lib/cpp@/home/cross/x-tools/i486-unknown-linux-gnu/bin/cpp@g' {} \;
+
+since 4.8 gcc is written in C++, fine. so we have to have a crosstool-ng C++ or
+=> we add C++ to the crosstool-ng toolchain, easier and more secure
+
+ included from /home/cross/build/gcc/src/gcc-7.2.0/gcc/genmddeps.c:19:0:
+/home/cross/build/gcc/src/gcc-7.2.0/gcc/system.h:540:34: error: declaration of C function ‘const cha
+r* strsignal(int)’ conflicts with
+ extern const char *strsignal (int);
+ ^
+In file included from /usr/include/c++/4.8.2/cstring:42:0,
+ from /home/cross/build/gcc/src/gcc-7.2.0/gcc/system.h:235,
+ from /home/cross/build/gcc/src/gcc-7.2.0/gcc/genmddeps.c:19:
+/usr/include/string.h:562:14: error: previous declaration ‘char* strsignal(int)’ here
+ extern char *strsignal (int __sig) __THROW; ^
+In file included from ./bconfig.h:5:0,
+=> so, we get to an end here, c++ is taken from the host while cross-compiling?!
+-> remove glibc-devel on the host!
+-> draw the g++ link, autoconf fails in gcc in funny ways (not finding uint64_t)
+-> carefull, we build a gcc over a crossng-gcc, not sure, this is supported..
+-> aha. if mpfr, mpc and gmp are not installed and taken from sysroot but from i486-root
+ some pathes get messed up.
+
+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82590
+https://www.mail-archive.com/gcc-bugs@gcc.gnu.org/msg550065.html
+https://gcc.gnu.org/bugzilla/show_bug.cgi?format=multiple&id=54692
+
+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65863
+-> huh?
+https://gcc.gnu.org/ml/gcc-help/2016-06/msg00016.html
+- > yes, this is the inicatition I needed, mpfr, gmp and mpc point to a weird location
+
+The stage one compiler doesn't find the shared library, o well:
+/home/cross/build/gcc/src/gcc-build/./gcc/cc1: error while loading shared libraries: libmpc.so.3: cannot open shared object file: No such file or directory
+-> export LD_LIBRARY_PATH=/home/cross/x-tools/i486-unknown-linux-gnu/i486-unknown-linux-gnu/sysroot/usr/lib
+
+And it never ends:
+In file included from /home/cross/build/gcc/src/gcc-7.2.0/libgcc/libgcc2.c:27:0:
+/home/cross/build/gcc/src/gcc-7.2.0/libgcc/../gcc/tsystem.h:87:10: fatal error: stdio.h: No such file or directory
+ #include <stdio.h>
+ ^~~~~~~~~
+compilation terminated.
+make[2]: *** [Makefile:491: _muldi3.o] Error 1
+-> https://gcc.gnu.org/ml/gcc-help/2012-04/msg00088.html
+-> so, let's try giving it a --with-sysroot to the crosstool-ng dirs
+-> and this means also it got past stage 1 compilers :-)
+
+/home/cross/x-tools/i486-unknown-linux-gnu/lib/gcc/i486-unknown-linux-gnu/4.9.4/../../../../i486-unknown-linux-gnu/bin/ld: /home/cross/build/gcc/src/gcc-build/./gcc/liblto_plugin.so: error loading plugin: /home/cross/build/gcc/src/gcc-build/./gcc/liblto_plugin.so: wrong ELF class: ELFCLASS32
+collect2: error: ld returned 1 exit status
+make[2]: *** [Makefile:982: libgcc_s.so] Error 1
+=> for now, remove LTO stuff in PKGBUILD
+
+make: *** i486-unknown-linux-gnu/libstdc++-v3/doc: No such file or directory. Stop.
+==> ERROR: A failure occurred in build().
+ Aborting...
+=> remove the PKGBUILD line # make -C $CHOST/libstdc++-v3/doc DESTDIR="$pkgdir" doc-install-man
+libstdc++-v3/
+=> # make documentation
+ #make -C $CHOST/libstdc++-v3/doc doc-man-doxygen
+
+install: failed to access ‘/home/cross/build/gcc/pkg/gcc/usr/lib/gcc/i486-unknown-linux-gnu/7.2.0/’: No such file or directory
+=> gcc auto-probed itself into i486-pc-linux-gnu, so the installed files are there
+CHOST="i486-pc-linux-gnu"
+make: Leaving directory '/home/cross/build/gcc/src/gcc-build/gcc'
+install: failed to access ‘/home/cross/build/gcc/pkg/gcc/usr/lib/gcc/i486-unknown-linux-gnu/7.2.0/’: No such file or directory
+=> sweet, let's try a symlink
+
+_libdir=usr/lib/gcc/$CHOST/$pkgver
+=> hard-code: to _libdir=usr/lib/gcc/i486-pc-linux-gnu/$pkgver
+=> nope, now others break
+this is hardly the ArchLinux way: vanilla and upstream
+
+again CHOST set to i486-pc-linux-gnu
+=> this package is a disaster!
+=> we have a mess with two CHOSTS, one for crosstool-ng (unknown) and
+ one for our chroot
+
+# remove traces of ADA
+ rm "$pkgdir"/usr/share/info/{gccgo,gfortran.info}
+
+# rm: cannot remove ‘/home/cross/build/gcc/pkg/gcc/usr/share/info/gccgo’: No such file or directory
+# rm "$pkgdir"/usr/share/info/{gccgo,gfortran.info}
+
+/home/cross/x-tools/i486-unknown-linux-gnu/lib/gcc/i486-unknown-linux-gnu/4.9.4/../../../../i486-unknown-linux-gnu/bin/ld: cannot find -lquadmath
+collect2: error: ld returned 1 exit status
+libtool: install: error: relink `libgfortran.la' with the above command before installing it
+make: *** [Makefile:1331: install-toolexeclibLTLIBRARIES] Error 1
+make: Leaving directory '/home/cross/build/gcc/src/gcc-build/i486-unknown-linux-gnu/libgfortran'
+==> ERROR: A failure occurred in package_gcc-libs().
+ Aborting...
+=> libquadmath must be retooled before libfortran
+=> nope libfortran simply fails to relink => remove it
+
+install: cannot stat ‘/home/cross/build/gcc/src/gcc/COPYING.RUNTIME’: No such file or directory
+=> sweet, remove it
+
+error: failed to commit transaction (conflicting files)
+gcc: /home/cross/i486-root/usr/lib/libstdc++.a exists in filesystem (owned by gcc-libs)
+gcc: /home/cross/i486-root/usr/lib/libstdc++.la exists in filesystem (owned by gcc-libs)
+Errors occurred, no packages were upgraded.
+=> well, force the package
+
+test.c:1:10: fatal error: stdio.h: No such file or directory
+
+
+# END TODO: gcc
+
+# libtool
+#########
+# patched heavily again, git version cannot be bootstrapped use official tarball
+
+# glibc
+#######
+# use 2.25 version, not 2.26. Keep the ABI intact!
+# endless loop? gawk -f ../scripts/gen-as-const.awk pthread-pi-defines.sym \
+# two reasons: clock and artifacts walk backwards or forward in time
+# chroot on server with chroot, hard to have an asynchronous clock?
+# or glibc is already installed on the system (where not?), so how the
+# hell can it be possibly built!
+# => oh, this would be cruel.
+# or 3rd reason, we have a glibc shim, maybe this one causes some trouble
+# => why?
+# or libtool fixing, whatever fixing means (https://forums.gentoo.org/viewtopic-t-496052-start-0.html)
+# => nope.
+# -isystem /usr/includ ein gcc spec? quite likely!
+# ah: old friend:
+build/glibc/src/glibc-build/libc.a(dl-sysdep.o): In function `.L18':
+dl-sysdep.c:(.text+0x8c): undefined reference to `__memcmp_ia32'
+/build/glibc/src/glibc-build/libc.a(dl-sysdep.o): In function `.L87':
+dl-sysdep.c:(.text+0x11f): undefined reference to `__memcmp_ia32'
+/build/glibc/src/glibc-build/libc.a(dl-sysdep.o): In function `.L19':
+dl-sysdep.c:(.text+0x152): undefined reference to `__memcmp_ia32'
+/build/glibc/src/glibc-build/libc.a(dl-sysdep.o): In function `.L85':
+dl-sysdep.c:(.text+0x19c): undefined reference to `__memcmp_ia32'
+dl-sysdep.c:(.text+0x1b7): undefined reference to `__memcmp_ia32'
+/build/glibc/src/glibc-build/libc.a(dl-sysdep.o):dl-sysdep.c:(.text+0x202): more undefined references to `__memcmp_ia32' follow
+elf/sln
+=> USE_MULTIARCH
+=> --disable-multi-arch
+=> let's test this time, too dangerous to loose the chroot otherwise!
+# older 2.25 misses a binutils 2.29 patch:
+https://git.busybox.net/buildroot/diff/package/glibc/0005-fix-binutils-2-29-build.patch?id=cf821efbd0b24690b52f379d4a9934a16073762e
+{standard input}: Assembler messages:
+{standard input}: Error: `loc1@GLIBC_2.0' can't be versioned to common symbol 'loc1'
+{standard input}: Error: `loc2@GLIBC_2.0' can't be versioned to common symbol 'loc2'
+{standard input}: Error: `locs@GLIBC_2.0' can't be versioned to common symbol 'locs'
+make[2]: *** [../o-iterator.mk:9: /build/glibc/src/glibc-build/misc/regexp.os] Error 1
+
+PACKAGES="iana-etc filesystem linux-api-headers tzdata ncurses readline bash \
+gdbm perl openssl bzip2 xz m4 help2man flex bc elfutils \
+libtool libxml2 libgpg-error libgcrypt libxslt \
+docbook-xml docbook-xsl xmlto libcap libtirpc pambase pam inetutils bison iproute2 kmod \
+sysfsutils libidn iputils \
+expat acl attr lz4 tar libarchive curl pacman \
+joe coreutils util-linux pcre grep findutils file diffutils ed patch \
+autoconf automake libedit openssh pcre2 git libunwind strace wget \
+gmp mpfr gawk libmpc zlib tcl expect dejagnu binutils gcc libtool glibc"
+for p in $PACKAGES; do
+ asp export $p
+done
+
+for p in $PACKAGES
+ cd $p
+
+ sed -i "s/^arch=.*/arch=('i486')/" PKGBUILD
+
+ # for some packages we cannot execute tests (because the dependencies to install in
+ # the toolchain environment would be too much)
+ # perl: --nocheck
+ # openssl: --nocheck
+ # libelf: --nocheck
+ # libtool: --nocheck
+ # libxml2: --nocheck
+ # libxslt: --nocheck
+ # inetutils: --nocheck
+ # bison: --nocheck
+ # libarchive: --nocheck
+ # pacman: --nocheck
+ # util-linux: --nocheck
+ # pcre: --nocheck
+ # gawk: --nocheck
+ # tcl: --nocheck
+
+ makepkg -C --config /etc/makepkg.conf --skipchecksums --skippgpcheck > $p.log 2>&1
+
+ # TODO:
+ # some package break in parallel builds or produce really funky
+ # error messages or/and results
+ # binutils: use makepkg-noparallel.conf
+ # gcc: use makepkg-noparallel.conf for debuging, the real build works fine in parallel
+
+ cp -v *.pkg.tar.gz /packages/i486/.
+
+ pacman --noconfirm --config /etc/pacman-i486.conf -U *.pkg.tar.gz
+
+ # replace all pacman articats and clean caches
+ rm -rf /packages/i486/temp* /var/cache/pacman/pkg/*
+ repo-add /packages/i486/temp.db.tar.gz /packages/i486/*pkg.tar.gz
+
+ #repo-add -n /packages/i486/temp.db.tar.gz /packages/i486/*pkg.tar.gz
+
+ pacman --noconfirm --config /etc/pacman-i486.conf -r / -S $p
+
+ pacman --config /etc/pacman-i486.conf -r / -Q | grep $p
+done
+
+# aftermatch for gcc/binutils
+
+#collect2: unable to find ld: this sounds bad, like an archicture mismatch somewhere
+#in binutils/gcc
+=> this is the cross compiled gcc for i486 inside the chroot, it expects
+ its platform dependend stuff in /usr/lib/gcc/i486-unknown-linux-gnu/7.2.0
+=> we can temporarily fix this:
+ln -s /usr/bin/ld /usr/lib/gcc/i486-unknown-linux-gnu/7.2.0/ld
+etc.
+
+# libz.so missing?
+ln -s libz.so.1 /usr/lib/libz.so
+
+# aftermatch for glibc
+
+# bacause pacman cannot set file permissions
+chmod u+x /usr/bin/* /lib/*.so*
+
+# kernel headers:
+#/usr/include/linux/errno.h missing
+#/usr/include/adm/errno.h missing
+=> a libarchive compression issue, files missing, because they are in pkg of
+ linux-api-headers?!
+
+remove debug packages
+
+error: failed to commit transaction (conflicting files)
+/usr/lib/libstdc++.a exists in both 'gcc-libs' and 'gcc'
+/usr/lib/libstdc++.la exists in both 'gcc-libs' and 'gcc'
+/usr/lib/libblkid.a exists in both 'util-linux' and 'libutil-linux'
+/usr/lib/libblkid.la exists in both 'util-linux' and 'libutil-linux'
+/usr/lib/libfdisk.a exists in both 'util-linux' and 'libutil-linux'
+/usr/lib/libfdisk.la exists in both 'util-linux' and 'libutil-linux'
+/usr/lib/libmount.a exists in both 'util-linux' and 'libutil-linux'
+/usr/lib/libmount.la exists in both 'util-linux' and 'libutil-linux'
+/usr/lib/libsmartcols.a exists in both 'util-linux' and 'libutil-linux'
+/usr/lib/libsmartcols.la exists in both 'util-linux' and 'libutil-linux'
+/usr/lib/libuuid.a exists in both 'util-linux' and 'libutil-linux'
+/usr/lib/libuuid.la exists in both 'util-linux' and 'libutil-linux'
+Errors occurred, no packages were upgraded.
+
+=> ok, we loose files and permissions
+
+# in 'real' 486
+###############
+
+next round: do those problems persist
+
+error: could not register 'temp' database (wrong or NULL argument passed)
+
+installed binaries have wrong permissions (no execute permission), a pacman issue?
+shilly flags? libarchive problem?
+
+git: https helpers
+chmod 0777 /usr/lib/git-core/git-remote-*
+
+later: for inside the chroot
+
+# uname module hack
+###################
+
+# as root
+# we need i486, so setarch doesn't work for us, because it emulates only,
+# a i686, use the hacked uname kernel module:
+wget http://clfs.org/files/extras/uname_hack-20080713.tar.bz2
+tar xf uname_hack-20080713.tar.bz2
+cd uname_hack
+# swap memset arguments:
+# /root/uname_hack/uname_hack.c:50:2: warning: 'memset' used with constant zero length parameter; this could be due to transposed parameters [-Wmemset-transposed-args]
+# memset(uname_hack_uts_machine, uname_hack_uts_machine_len, '\0');
+# ^~~~~~
+# Building modules, stage 2.
+make uname_hack_fake_machine=i486
+insmod uname_hack.ko
+#lib/config.guess in automake returns i486-pc-linux-gnu
+# uname -m returns i486
+cd ..
+
+# patch our hosts pacman.conf, so it doesn't get fooled by the architecture hack
+sed -i 's@^Architecture.*@Architecture = x86_64@g' /etc/pacman.conf
+
+# optional packages for stage 1
+# TODO: do we need this for old machines?
+# linux-firmware
+# use git from the host for now
+#sed -i 's@makedepends\(.*\)@#makedepends\1@g' linux-firmware/PKGBUILD
diff --git a/README b/README
index 2adc0da..f17ece6 100644
--- a/README
+++ b/README
@@ -71,9 +71,9 @@ http://www.ibb.net/~anne/keyboard.html
Recipe
------
-#########
-# PHASE 0
-#########
+##############
+# PREPARATIONS
+##############
# Prepare the host. We use Archlinux 64-bit as we don't fully trust the
# 32-bit toolchain in Archlinux32 (yet). And a 64-bit based toolchain is
@@ -120,21 +120,27 @@ cp .config ct-ng.config
su cross ./prepare_stage1_repo.sh
#########
-# PHASE 1
+# STAGE 1
#########
# Build stage1 in $STAGE1_BUILD with the cross-compiler and modified
# PKGBUILDs and patches into $STAGE1_CHROOT.
-# we cannot build the glibc or the compilers, we create phantom packages
-# by hand without makepkg with files from the toolchain's sysroot
+# If necessary to fullfill the dependencies of makepkg, we create phantom
+# packages by hand without makepkg with files from the toolchain's sysroot.
-# so we build gcc-libs for compiler libraries (C and C++) and the glibc
+# So, we build gcc-libs for compiler libraries (C and C++) and the glibc
# we will NOT build them using the cross-compiler as packages but later
# at the end of phase 1. This ensures glibc and gcc-libs are around as
# dependency for makepkg all the time, if not the original one, so close
# ones fitting to the crosstoolchain.
+# In this stage we are not allowed to have loops when building, the build
+# tree must be a real tree.
+
+# The goal is to get a booting system of the target architecture (for instance
+# to be installed on real hardware for a build cluster).
+
su cross ./create_gcc-lib_shim.sh
su cross ./create_glibc_shim.sh
@@ -144,977 +150,16 @@ su cross ./create_glibc_shim.sh
su cross ./create_ca-certificates-utils_shim.sh
-# Install stage 1
+# Build stage 1 and install it into a chroot and into sysroot
./build_stage1.sh
-# Build stage 1 ISO
+# Build stage 1 ISO (mainly for testing, installing from this CD is
+# difficult and more manually as with pacstrap)
su cross ./create_cdrom.sh
-# or easier for direct testing, build stage 1 hard disk image
+# build stage 1 hard disk image (to be installed directly as the
+# stage 2 build system on the target architecture)
su cross ./create_hdd.sh
-
-# TODO FROM HERE:
-
-
-# build packages for the i486-chroot
-####################################
-
-
-# the package list
-##################
-
-
-# basic packages
-PACKAGES=" \
-# TODO: iputils is for ping only, a little bit too many packages for
-# that.
-sysfsutils libidn nettle iputils"
-# systrace for debugging
-
-# sysfsutils and libidn, nettle for iputils
-SYSROOT_PACKAGES=" \
-sysfsutils libidn"
-
-
-
-# special patches for some packages
-###################################
-
-
-# libidn
-sed -i 's@./configure@./configure --host=i486-unknown-linux-gnu --build=x86_64-pc-linux-gnu@g' libidn/PKGBUILD
-
-# sysfsutils
-sed -i 's@./configure@./configure --host=i486-unknown-linux-gnu --build=x86_64-pc-linux-gnu@g' sysfsutils/PKGBUILD
-
-# nettle
-sed -i 's@./configure@./configure --host=i486-unknown-linux-gnu --build=x86_64-pc-linux-gnu@g' PKGBUILD
-
-# iputils
-# no documentation and use git from host
-sed -i 's@\(make doc man\)@#\1@' iputils/PKGBUILD
-sed -i 's@^makedepends\(.*\)@#makedepends\1@g' iputils/PKGBUILD
-sed -i 's@make @make CC=i486-unknown-linux-gnu-cc LD=i486-unknown-linux-gnu-ld@g' iputils/PKGBUILD
-sed -i 's@\(install -m644 doc\)@#\1@' iputils/PKGBUILD
-sed -i 's@\("${pkgdir}"/usr/share\)@#\1@' iputils/PKGBUILD
-
-
-#######################################
-##### TODO FROM HERE
-#######################################
-
-# TODO: m4. autoconf, automake, libtool are not really bootstrappable in x-tools
-# basic packages, non-virtual one from above: kernel, shell, pacman, editor, coreutils, development
-# tools (some of them can be bootstrapped inside like the autotools, perl; and they also should!)
-
-# linux-headers is important so we can build kmod inside the chroot
-# linux itself is tricky. For now we will boot with direct kernel parameters and binary in libvirt/qemu
-
-PACKAGES= \
- \
- \
-libffi glib2 libunistring gettext"
-
-# some binaries in the cross tools (also known as perl) have really
-# weird library pathes (and no rpath it seems)
-export LD_LIBRARY_PATH=/home/cross/x-tools/i486-unknown-linux-gnu/i486-unknown-linux-gnu/sysroot/usr/lib/:/home/cross/x-tools/i486-unknown-linux-gnu/i486-unknown-linux-gnu/sysroot/usr/lib/perl5/5.26/core_perl/CORE
-export PATH=/home/cross/x-tools/i486-unknown-linux-gnu/i486-unknown-linux-gnu/sysroot/bin:/home/cross/x-tools/i486-unknown-linux-gnu/i486-unknown-linux-gnu/sysroot/usr/bin:${PATH}
-
-###
-TODO FROM HERE
-
- # TODO:
- # autoreconf needs autotools/m4 and dependencies (crosstool-ng autotools are broken for me)\
- # libunistring for gettext
- # libffi for glib2
- pushd $HOME/x-tools/i486-unknown-linux-gnu/i486-unknown-linux-gnu/sysroot
- bsdtar xf $STAGE1_CHROOT/packages/i486/m4-1.4.18-1-i486.pkg.tar.gz
- bsdtar xf $STAGE1_CHROOT/packages/i486/autoconf-2.69-4-any.pkg.tar.gz
- bsdtar xf $STAGE1_CHROOT/packages/i486/automake-1.15.1-1-any.pkg.tar.gz
- bsdtar xf $STAGE1_CHROOT/packages/i486/libffi-3.2.1-2-i486.pkg.tar.gz
- bsdtar xf $STAGE1_CHROOT/packages/i486/libunistring-0.9.7-1-i486.pkg.tar.gz
- popd
-
- cd ..
-done
-
-
-# special patches for some packages
-###################################
-
-# autoconf needs help2man, checks need fortan (wow. that package is old!)
-# depends contains base-devel stuff?! diffutils
-sed -i 's@makedepends\(.*\)@#makedepends\1@g' autoconf/PKGBUILD
-sed -i 's@checkdepends\(.*\)@#checkdepends\1@g' autoconf/PKGBUILD
-sed -i 's@depends\(.*\)@#depends=\1@g' autoconf/PKGBUILD
-
-# automake needs dejagnu for testing, not now, disabling checks
-sed -i 's@checkdepends\(.*\)@#checkdepends\1@g' automake/PKGBUILD
-
-# libool: trusting the toolchain here, no silly checks :-)
-sed -i 's@makedepends\(.*\)@#makedepends\1@g' libtool/PKGBUILD
-
-# afterpatching; autreconf has a hard-coded #! /bin/perl -w bang,
-# seriously!
-chmod u+w /home/cross/x-tools/i486-unknown-linux-gnu/i486-unknown-linux-gnu/sysroot/usr/bin/autoreconf
-sed -i 's@^#/bin/perl@/home/cross/x-tools/i486-unknown-linux-gnu/i486-unknown-linux-gnu/sysroot/usr/bin/perl@g' \
- /home/cross/x-tools/i486-unknown-linux-gnu/i486-unknown-linux-gnu/sysroot/usr/bin/autoreconf
-
-
-# glib2
-#######
-# take gettext from host
-sed -i 's@makedepends\(.*\)@#makedepends\1@g' glib2/PKGBUILD
-# get arch-meson wrapper, doens't build without it!
-# ok, forget meson, completly broken, resorting to autotools.
-# autoreconf: running: /home/cross/x-tools/i486-unknown-linux-gnu/bin/autoconf --force
-# configure.ac:88: error: possibly undefined macro: AC_DEFINE
-# huh?
-# retooling seems to be near impossible! ok, autoconf broken, meson unusable.. sweet
-Found pkg-config: /bin/pkg-config (0.27.1)
-Dependency libpcre found: NO
-Library m found: YES
-Not looking for a fallback subproject for the dependency libffi because:
-Automatic wrap-based fallback dependency downloading is disabled.
-
-Meson encountered an error in file meson.build, line 1439, column 0:
-Native dependency 'libffi' not found
-==> ERROR: A failure occurred in build().
- Aborting...
-=> this is all very wrong!
-
-# gettext
-#########
-# remove glib2 from depends, not needed (why the hell is there anyway then?!?! just for fun?)
-
-# libarchive calls autoreconf, this is quite annoying as perl in crosstool-nt or
-###
-# stil in phase two, no proper autotools, let's apply the out-of-chroot trick once more..
-# do the autoreconf -fi outside, create a package libarchive-3.3.2-retooled.tgz
-# libarchive has trouble with wchar_t (and has quite some other trouble around autoconf it seems)
-# remove the wchar_t and wchar_t sizeof test in configure.ac manutally before retooling
-# and of course tests fail!
-# no checks again
-sed -i "s@^source=.*@source=('libarchive-3.3.2-retooled.tgz')@g" libarchive/PKGBUILD
-sed -i "s@^sha256sums=.*@sha256sums=('1f856e6f5cc0e1479f381e381a031ba19d09f80b51ac88e74b2c140fc78606e8')@g" libarchive/PKGBUILD
-sed -i 's@autoreconf@#autoreconf@g' libarchive/PKGBUILD
-
-# generic build
-###############
-
-for p in $PACKAGES
-
- # for some packages we cannot execute tests (because the dependencies to install in
- # the toolchain environment would be too much)
- # autoconf: --nocheck
- # automake: --nockeck
- # pacman: --nocheck
- # mpfr: --nocheck
-
- # for ncurses, readline for bash
- # autoreconf needs autotools/m4 and dependencies (crosstool-ng autotools are broken for me)
- # libunistring for gettext
- # libffi for glib2
- bsdtar xf $STAGE1_CHROOT/packages/i486/m4-1.4.18-1-i486.pkg.tar.gz
- bsdtar xf $STAGE1_CHROOT/packages/i486/mpfr-3.1.6.p1-1-i486.pkg.tar.gz
- bsdtar xf $STAGE1_CHROOT/packages/i486/libmpc-1.0.3-2-i486.pkg.tar.gz
- bsdtar xf $STAGE1_CHROOT/packages/i486/gawk-4.1.4-2-i486.pkg.tar.gz
- bsdtar xf $STAGE1_CHROOT/packages/i486/libffi-3.2.1-2-i486.pkg.tar.gz
- bsdtar xf $STAGE1_CHROOT/packages/i486/libunistring-0.9.7-1-i486.pkg.tar.gz
- popd
-
- cd ..
-done
-
-testing:
-
-# common issues
-###############
-
-
-TODOS: in linux package makepkg
-https://github.com/libarchive/libarchive/issues/411
-
-https://rubenerd.com/sata-on-qemu/
-
-/usr/libexec/qemu-kvm --enable-kvm -cpu 486 -m 32 -vnc 0.0.0.0:2 \
- -kernel linux/pkg/linux/boot/vmlinuz-linux \
- -append 'root=/dev/hda1 nomodeset init=/etc/rc console=ttyS0 console=tty0' \
- -cdrom /data/isos/arch486.iso -hda /data/libvirt/arch486.qcow2 -nographic
-
-qemu-system-i386 --enable-kvm -cpu 486 -m 32 -cdrom /data/isos/arch486.iso \
- -hda /data/libvirt/arch486.qcow2 -curses -boot d \
- -netdev user,id=net0,net=10.0.0.0/24,host=10.0.0.2,dhcpstart=10.0.0.16,hostfwd=tcp::2222-:22 \
- -device rtl8139,netdev=net0
-
-qemu-system-i386 --enable-kvm -cpu 486 -m 32 \
- -hda /home/cross/arch486.img -curses -boot d \
- -netdev user,id=net0,net=10.0.0.0/24,host=10.0.0.2,dhcpstart=10.0.0.16,hostfwd=tcp::2222-:22 \
- -device rtl8139,netdev=net0
-
-# very funny: uvesafb: failed to execute /sbin/v86d
-# Intel and ARM DRM modules:
-# BUG: unable to handle kernel NULL pointer dereference at (null)
-
-PHASE 2
-#######
-
-Test what we can build inside the chroot.
-When we get all dependencies right, we go into the real environment (which is
-i486 and thus not SMP and slow- ok, we could use distcc, but anyway)
-
-Main problem: we have trouble to run fakeroot in a chroot
-fakeroot: nested operation not yet supported
-makepkf -F takes care of that (thanks for providing minial fakeroot support)
-but pacman also takes an -F parameter
--> INFAKEROOT=1 in /usr/bin/makepkg
-
-As pacman seems to have some trouble, we overwrite the temp packages inside
-the chroot and replace the files on the filesystem forcefully:
-error: could not register 'temp' database (wrong or NULL argument passed)
-
-In this round don't skip dependencies and tests if possible.
-
-cp pkg/arch-install-scripts/usr/bin/arch-chroot /usr/local/bin/.
-
-arch-chroot /home/cross/i486-root/
-
-# package specific things
-
-# iana-etc:
-download error https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml
-=> we miss /etc/ssl/certs/ca-certificates.crt from ca-certificates-utils, we
- can copy it from an existing archlinux
-
-# hack /usr/bin/makepkg, run_pacman again, this time set
-# --config /etc/pacman-i486.conf -r /
-
-# tzdata
-/build/tzdata/PKGBUILD: line 25: zic: command not found
-==> ERROR: A failure occurred in package().
- Aborting...
-=> forgot zig in the shim
-
-# ncurses
-# dlsym errors and we don't have a C++ compiler (yet)
-sed -i 's@./configure@./configure --without-dlsym@g' ncurses/PKGBUILD
-sed -i 's@--with-cxx-binding --with-cxx-shared@--without-cxx --without-cxx-binding --without-cxx-shared@g' ncurses/PKGBUILD
-
-# perl
-######
-perl: warning: Please check that your locale settings:
- LANGUAGE = (unset),
- LC_ALL = (unset),
- LANG = "en_US.UTF-8"
- are supported and installed on your system.
-
-# openssl
-sed -i 's@i686@i486@g' openssl/PKGBUILD
-sed -i 's@no-ssl3-method@no-sse2 no-ssl3-method@g' openssl/PKGBUILD
-
-# xz
-# with gcc 7.2 we get new errors
-sed -i 's@--enable-werror@--disable-werror@g' xz/PKGBUILD
-
-# help2man
-# needs perl-locale-gettext, which needs gettext, which needs glib2
-# which needs meson (so a big nogo currently!)
-# obviously it builds also without gettext..
-sed -i 's@^depends\(.*\)@#depends\1@g' help2man/PKGBUILD
-
-# bc
-# requires texinfo, is this part of base-devel?
-# bootstrap --force
-# no /usr/lib32
-# ./fbc -c ./libmath.b </dev/null >libmath.h
-
-
-# libelf
-########
-In file included from /usr/include/error.h:52:0,
- from xmalloc.c:33:
-/usr/include/bits/error.h: In function 'error':
-/usr/include/bits/error.h:40:5: error: format not a string literal, argument types not checked [-Werror=format-nonliteral]
- __error_noreturn (__status, __errnum, __format, __va_arg_pack ());
- ^~~~~~~~~~~~~~~~
-=> -isystem in gcc specfile needed, not -I
-
-
-#
-# libxml2
-# go without icu for now, icu needs C++
-# also, python bindings and git are not really needed
-sed -i 's@^depends\(.*\)@#depends\1@g' libxml2/PKGBUILD
-sed -i 's@^makedepends\(.*\)@#makedepends\1@g' libxml2/PKGBUILD
-build()
-{
- sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0 /g' libtool
- make
-}
-sed -i 's@--with-icu@@' libxml2/PKGBUILD
-# dito package
-# really, what is it with people!
-# take: ftp://xmlsoft.org/libxml2/libxml2-2.9.7.tar.gz
-#source=(git+https://git.gnome.org/browse/libxml2#commit=$_commit
-# no tests, c++ tests would fail
-./configure: line 13042: syntax error near unexpected token `Z,zlib,'
-./configure: line 13042: ` PKG_CHECK_MODULES(Z,zlib,'
-==> ERROR: A failure occurred in build().
- Aborting...
--> zlib probing needs pkg-config, which is it's own disaster, so disable
-zlib for now.
-=> hack out the broken PKG_CHECK_MODULES out of configure!
--> same trick for LZMA (equally broken) and ICU
--> disable testing for now, either it takes long or it hangs
-
-# libgcrypt
-# download location broken, download by hand, adapt PKGBUILD
-
-# libxslt: same disaster as libxml2
-# no python, no check
-
-# kmod: circular dependency on linux-headers, let's build
-# linux/linux-headers correctly outside the chroot and install
-# them here (at least linux-headers)
-# gtk-doc draws in Gnome bullshit again
-sed -i 's@^makedepends\(.*\)@#makedepends\1@g' kmod/PKGBUILD
-
-# libtirpc: break the cyrcle with systemd (via krb5)
-sed -i 's@^makedepends\(.*\)@#makedepends\1@g' libtirpc/PKGBUILD
-sed -i 's@^depends\(.*\)@#depends\1@g' libtirpc/PKGBUILD
-# configure: error: gssapi.h not found. Use --disable-gssapi, or install GSS-API.
-# --disable-gssapi
-
-# pam:
-# dependency w3m is for documentation, let's remove it
-rm: cannot remove '/build/pam/pkg/pam/usr/share/doc/Linux-PAM/sag-pam_userdb.html': No such file or directory
-also remove section in PKGBUILD
-
-# inetutils:
-# disable checks
-
-# iroute2
-# trying with iptables, as iptables draws in tons of things
-sed -i 's@^makedepends\(.*\)@#makedepends\1@g' iproute2/PKGBUILD
-sed -i 's@^depends\(.*\)@#depends\1@g' iproute2/PKGBUILD
-
-# bison
-# --nocheck: fails miserably to compile tests (C++ missing?)
-
-# linux-headers: fails hapilly and has tons of weird stuff in it
-install: failed to access ‘/home/cross/build/linux/pkg/linux-headers/usr/lib/modules/4.13.13-1/build’: No such file or directory
-_package-headers()
-=> mkdir -p "${_builddir}" everywhere, the problem is install -D on Centos, obviously broken!
-
-# kmod
-configure: error: The pkg-config script could not be found or is too old. Make sure it
-is in your PATH or set the PKG_CONFIG environment variable to the full
-path to pkg-config.
-
-Alternatively, you may set the environment variables liblzma_CFLAGS
-and liblzma_LIBS to avoid the need to call pkg-config.
-See the pkg-config man page for more details.
-
-To get pkg-config, see <http://pkg-config.freedesktop.org/>.
-See `config.log' for more details
-==> ERROR: A failure occurred in build().
- Aborting...
-=> let's try to set lzma ourselves or disable it, get around pkg-config probing
-# no pkg-config, no docu, try to work around
-sed -i 's@--enable-gtk-doc@--disable-gtk-doc@g' kmod/PKGBUILD
-sed -i 's@./configure@liblzma_CFLAGS=-I/usr/include liblzma_LIBS=-llzma ./configure@g' kmod/PKGBUILD
-sed -i 's@./configure@zlib_CFLAGS=-I/usr/include zlib_LIBS=-lz ./configure@g' kmod/PKGBUILD
-=> ok heck: linking errors
-sed -i 's@--with-xz@--without-xz@g' kmod/PKGBUILD
-sed -i 's@--with-zlib@--without-zlib@g' kmod/PKGBUILD
-
-# libidn
-# --nocheck, testing hangs
-
-# iputils
-# remove git again
-# no docu, hack out manually
-sed -i 's@^makedepends\(.*\)@#makedepends\1@g' iptuils/PKGBUILD
-
-# perl-error
-# no checks, needs perl test-pod
-sed -i 's@^checkdepends\(.*\)@#checkdepends\1@g' perl-error/PKGBUILD
-
-
-# shadow
-# git treatment again.
-# no docu
-# --disable-man
-
-# git
-sed -i 's@^makedepends\(.*\)@#makedepends\1@g' git/PKGBUILD
-# no make doc
-# disable most things in build
-# disable doc in install-doc
-# NO_GETTEXT=1
-# --nocheck
-=> no luck
-
-# lz4:
-# git tweaking again, use 1.8.0 tarball
-
-# tar:
-# checking whether mknod can create fifo without root privileges... configure: error: in `/build/tar/src/tar-1.29':
-# configure: error: you should not run configure as root (set FORCE_UNSAFE_CONFIGURE=1 in environment to bypass this check)
-# See `config.log' for more details
-=> oh, please, bugger off!
-sed -i 's@./configure@FORCE_UNSAFE_CONFIGURE=1 ./configure@g' tar/PKGBUILD
-
-#TODO:
-# lz4
-# git package again
-sed -i 's@^makedepends\(.*\)@#makedepends\1@g' lz4/PKGBUILD
-
-#TODO: cracklib util-linux e2fsprogs libldap keyutils krb5 they end in circlejerk with systemd!
-# we will solve that later by building a non-systemd version and then bootstrapping first systemd
-# git: out of reach for now, far too many dependencies
-perl-error git
-
-# for now we don't rebuild ca-certificates, we had to copy them funilly anyway, and it's
-# just a bunch of certs. So, in phase 3 or 4 then..
-
-# curl
-######
-# curl needs asciidoc and p11-kit, don't build them, use them from the host
-sed -i 's@makedepends\(.*\)@#makedepends\1@g' curl/PKGBUILD
-# build with minimal features, enough to make pacman download packages
-sed -i 's@depends\(.*\)@depends=('ca-certificates' 'openssl' 'zlib')@g' curl/PKGBUILD
-# zsh, perl is used to create a completion file for curl and zsh?
-sed -i 's@--with-gssapi@--with-gssapi --without-zsh-functions-dir@g' curl/PKGBUILD
-
-# pacman
-########
-# pacman's tests mostly fail on non-Archlinux, so skip them
-# asciidoc is a makedepend, we can use the one on the host
-sed -i 's@makedepends\(.*\)@#makedepends\1@g' pacman/PKGBUILD
-sed -i 's@checkdepends\(.*\)@#checkdepends\1@g' pacman/PKGBUILD
-# minimal dependencies, we don't sign anything yet
-sed -i "s/'gpgme'//g" pacman/PKGBUILD
-sed -i "s/'pacman-mirrorlist'//g" pacman/PKGBUILD
-sed -i "s/'archlinux-keyring'//g" pacman/PKGBUILD
-# we need pkg-config, otherwise pacman find libarchive in the wrong
-# place, but pkg-config needs glib2 and glib2 is built using meson (urgh!)
-# when we take the host version, lets patch the host pkgconfig file to
-# use the sysroot of the toolchain
-# we simply set LIBARCHIVE_CFLAGS and LIBARCHIVE_LIBS to get rid of pkg-config probing
-sed -i 's@./configure@LIBARCHIVE_CFLAGS=-I/usr/include LIBARCHIVE_LIBS=-larchive ./configure@g' pacman/PKGBUILD
-# --nocheck still, as we don't have python yet
-# and of course :-)
-sed -i 's/exit 1 # \$E_USER_ABORT/# exit 1 # $E_USER_ABORT/g' /home/cross/i486-root/usr/bin/makepkg
-# TODO
-install: cannot stat '/build/pacman/src/pacman.conf.i486': No such file or directory
-==> ERROR: A failure occurred in package().
- Aborting...
-=> use the /etc/pacman-i486.conf from the chroot as pacman.conf.i486 (we still have the temp
- repo and we force the Architecture)
-sed -i "s/686)/486)/g" pacman/PKGBUILD
-sed -i 's/mycarch="i686"/mycarch="i486")/g' pacman/PKGBUILD
-sed -i 's/mychost="i686-pc-linux-gnu"/mychost="i486-pc-linux-gnu"/g' pacman/PKGBUILD
-sed -i 's/myflags="-march=i686"/myflags=-march=i486/g' pacman/PKGBUILD
-
-# coreutils
-###########
-sed -i 's@./configure@FORCE_UNSAFE_CONFIGURE=1 ./configure@g' coreutils/PKGBUILD
-
-# TODO: needed in stage 2?
-# apply man generation patch (one has to wonder, is it maintained at all?)
-# help2man errors: help2man: can't get `--help' info from man/chmod.td/chmod
-# http://ftp.lfs-matrix.net/pub/clfs/conglomeration/coreutils/coreutils-8.28-noman.patch
-# based on a patch by William Harrington (kb0iic at cross-lfs dot org) 2014-10-30 for coreutils 8.23
-#sed -i 's@source=(@source=(coreutils-8.28-noman.patch @' PKGBUILD
-#sed -i "s@md5sums=(@md5sums=('SKIP' @" PKGBUILD
-#sed -i '/build()/ i \ prepare() { \n\ cd ${pkgname}-${pkgver}\n\ patch -Np1 < ${srcdir}/coreutils-8.28-noman.patch \n }' PKGBUILD
-
-# zlib
-######
-strip: /lib/libz.so.1: no version information available (required by /lib/libbfd-2.29.1.so)
-=> this is because some tools are built with other versions (toolchain vs. chroot)
-=> so we must not install zlib before we rebuild binutils
-
-# util-linux
-############
-# disable some dependencies on systemd, python, PAM (chfn_chsh)
-# and other stuff we don't need
-# libtool seems broken
-sed -i 's@makedepends\(.*\)@#makedepends\1@g' PKGBUILD
-sed -i 's@ \+depends\(.*\)@#depends\1@g' PKGBUILD
-sed -i 's@--with-python=3@--without-python \\@g' PKGBUILD
-sed -i '/--without-python/ a \ --without-systemd --without-systemdsystemunitdir' PKGBUILD
-sed -i 's@./configure@./configure --host=i486-unknown-linux-gnu@g' PKGBUILD
-sed -i '/--without-python \\/ a \ --disable-chfn-chsh \\' PKGBUILD
-sed -i '/--without-python \\/ a \ --disable-shared --enable-static \\' PKGBUILD
-sed -i 's@\(chmod 4755 "$pkgdir"/usr/bin/{newgrp,ch{sh,fn}}\)@#\1@g' PKGBUILD
-sed -i "s@\(sed -i '/ListenStream.*\)@#\1@g" PKGBUILD
-sed -i 's@\(rm "$pkgdir.*\)@#\1@g' PKGBUILD
-# chgrp: chgrp: invalid group: 'tty'invalid group: 'tty'
-# /etc/group belongs to filesystem, but has only a root entry when installed
-=> filesystem package: post.install hook has not been executed (filesystem.install)
-=> for now do it manually
-groupadd -g 5 tty
-# IMPORTANT DNAGER: the test suite is crazzy and destroys the host!! use --nocheck
-# packaging generates tons of errors, lets hope, they are not critical.
-# cp: omitting directory ‘/’
-# => at least util-linux needs !strip OPTIONS (makepkg-i486.conf)
-#rm "$pkgdir"/usr/lib/lib*.{a,so}*
-
-# pcre
-######
-# no C++
-sed -i 's@./configure@./configure --disable-cpp@g' pcre/PKGBUILD
-# --nocheck as we have trouble to find shared libraries
-
-# gmp
-#####
-# no C++
-sed -i 's@--enable-cxx@--disable-cxx@g' gmp/PKGBUILD
-
-# gawk
-######
-# we don't have a valid locale yet, disable NLS
-# and disable testing
-sed -i 's@./configure@./configure --disable-nls@g' PKGBUILD
-
-# openssh
-#########
-# package suffers from featuritis
-# remove ldns and kerberos5 support, keep libedit (as it's easy to build)
-# ssh => not good, openssl <> unbound <> openssl cycle and mess
-sed -i 's@^makedepends\(.*\)@#makedepends\1@g' PKGBUILD
-sed -i 's@^depends\(.*\)@#depends\1@g' PKGBUILD
-sed -i 's@--with-ldns@--without-ldns@g' PKGBUILD
-sed -i 's@--with-kerberos5=/usr@--without-kerberos5@g' PKGBUILD
-#ln: failed to create symbolic link '/build/openssh/pkg/openssh/usr/share/man/man1/slogin.1.gz': No such file or directory
-sed -i 's@\(ln -sf ssh.1.gz.*\)@#\1@g' PKGBUILD
-
-# git
-#####
-# manual PKGBUILD fix
-# install: cannot stat 'contrib/credential/libsecret/git-credential-libsecret': No such file or directory
-# => PKGBUILD is a mess, sorry!
-# no asciidoc, as this needs python2
-#asciidoc -b docbook -d manpage -f ../../Documentation/asciidoc.conf \
-# -agit_version=2.15.0 git-subtree.txt
-# disable make install-doc
-#make: pkg-config: Command not found
-#make: pkg-config: Command not found
-#make: Leaving directory '/build/git/src/git-2.15.0/contrib/subtree'
-#mv: cannot stat '/build/git/pkg/git/usr/share/perl5/site_perl/Git/*': No such file or directory
-=> hack away python, perl, systemd, contrib, docu and other things we don't need right now
-
-git clone...
-Cloning into 'strusBase'...
-fatal: cannot run ssh: No such file or directory
-fatal: unable to fork
-fatal: Unable to find remote helper for 'https'
-fatal: Unable to find remote helper for 'http'
-=> we need ssh
-
-# tcl
-#####
-# disable tests: cynical, disable unit tests of a software needed for testing
-
-# autoconf
-##########
-# checks need fortan (wow. that package is old!)
-# depends contains base-devel stuff?! diffutils
-sed -i 's@makedepends\(.*\)@#makedepends\1@g' autoconf/PKGBUILD
-sed -i 's@checkdepends\(.*\)@#checkdepends\1@g' autoconf/PKGBUILD
-# not bad, but lets disable testing for now:
-# ERROR: 455 tests were run,
-# 5 failed (4 expected failures).
-# 48 tests were skipped.
-
-# automake
-##########
-# automake needs dejagnu for testing, not now, disabling checks
-sed -i 's@checkdepends\(.*\)@#checkdepends\1@g' automake/PKGBUILD
-# TOTAL: 2901
-# PASS: 2673
-# SKIP: 164
-# XFAIL: 41
-# FAIL: 21
-# XPASS: 0
-# ERROR: 2
-=> ok, but let's disable testing
-
-# dejagnu
-#########
-# has hard-wired AC_PROG_CXX in configure, remove internal C++ tests
-sed -i '/.\/configure/ i \ sed -i "s@AC_PROG_CXX@#AC_PROG_CXX@" configure.ac' dejagnu/PKGBUILD
-sed -i '/configure.ac/ a \ sed -i "s@\\(unit_SOURCES.*\\)@#\\1@g" Makefile.am' dejagnu/PKGBUILD
-sed -i '/configure.ac/ a \ sed -i "s@\\(check_PROGRAMS*\\)@#\\1@g" Makefile.am' dejagnu/PKGBUILD
-sed -i '/Makefile.am/ a \ autoreconf' dejagnu/PKGBUILD
-
-# wget
-######
-# no gnutls, no libpsl
-sed -i 's@^depends\(.*\)@#depends\1@g' PKGBUILD
-sed -i 's@--enable-nls@--disable-nls@g' PKGBUILD
-sed -i 's@--with-ssl=gnutls@--with-ssl=openssl@g' PKGBUILD
-sed -i '/.\/configure/ a \ --without-libpsl \\' PKGBUILD
-# work around pkg-config
-sed -i 's@./configure@OPENSSL_CFLAGS=-I/usr/include OPENSSL_LIBS="-lssl lcrypto" ./configure@g' PKGBUILD
-# needs myriads of perl modules for testing => --nocheck
-sed -i 's@^checkdepends\(.*\)@#checkdepends\1@g' PKGBUILD
-
-# binutils
-##########
-# risky, risky
-sed -i 's/glibc>=2.26/glib/g' binutils/PKGBUILD
-# this is in gold, so let's disable gold! We don't have C++ (yet), so this should not matter..
-sed -i 's@--enable-gold@--disable-gold@g' binutils/PKGBUILD
-
-# libunwind
-###########
-# no TeX, no docu
-sed -i 's@^makedepends\(.*\)@#makedepends\1@g' libunwind/PKGBUILD
-
-
-# TODO: gcc
-#####
-TODO:
-sed -i 's@^makedepends\(.*\)@#makedepends\1@g' binutils/PKGBUILD
-sed -i 's@^checkdepends\(.*\)@#checkdepends\1@g' binutils/PKGBUILD
-sed -i 's@^depends\(.*\)@#depends\1@g' binutils/PKGBUILD
-
-# gcc
-#####
-# no gcc-ada and doxygen
-sed -i '/makedepend/ s/gcc-ada //g' gcc/PKGBUILD
-sed -i '/makedepend/ s/doxygen //g' gcc/PKGBUILD
-# avoid huge git checkouts
-sed -i 's@git+https://gcc.gnu.org/git/gcc.git.*@ftp://ftp.mpi-sb.mpg.de/pub/gnu/mirror/gcc.gnu.org/pub/gcc/releases/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.gz@' gcc/PKGBUILD
-sed -i 's@cd gcc$@cd ${pkgname}-${pkgver}@g' gcc/PKGBUILD
-sed -i 's@$srcdir/gcc/configure@$srcdir/${pkgname}-${pkgver}/configure@g' gcc/PKGBUILD
-# we don't have a working C++ compiler right now, be must bootstrap
-# doesn't work, we need c++ sind 4.8!
-#sed -i '/--enable-shared/ a \ --enable-bootstrap \\' gcc/PKGBUILD
-# remove ADA, we don't have (and will most likely never have a GNAT binary to
-# bootstrap ADA itself), on the other hand, there is nothing using ADA anyway.
-# at least not in packages/community
-sed -i '/pkgname/ s/gcc-ada//g' gcc/PKGBUILD
-sed -i '/enable-languages/ s/ada//g' gcc/PKGBUILD
-# send bugs to the right place
-sed -i 's@https://bugs.archlinux.org/@https://bugs.archlinux32.org/@g' gcc/PKGBUILD
-# so, I don't know what GNU people call bootstrapping, but this definitely isn't for C!
-/usr/include/c++/7.2.0/cstdlib:75:15: fatal error: stdlib.h: No such file or directory
-=> let's try to fix the C++ compiler then..
-# this is really really dangerous, let's hope, it works
-=> find /usr/include/c++/7.2.0 -type f -exec sed -i 's/#include_next/#include/g' {} \;
-# /build/gcc/src/gcc-7.2.0/libgo/testsuite/gotest: line 624: 28445 Killed ./a.out -test.short -test.timeout=${timeout}s "$@"
-=> ok, enough, go without testing
-==> Starting package_gcc-go()...
-make: *** i486-pc-linux-gnu/libgo: No such file or directory. Stop.
-==> ERROR: A failure occurred in package_gcc-go().
- Aborting...
-=> fails, oh well, nobody needs go :-)
-
-
-
-only c language
-no checkdepdns, makedepnds
-
-why the hell, I switched off c++, so wy are still cpp probes being done!?
-/lib/cpp hardcoded, seriosly!!
-# in prepare()
-ln -s ../bin/cpp /home/cross/x-tools/i486-unknown-linux-gnu/lib/cpp
-find . -name configure -exec sed -i 's@/lib/cpp@/home/cross/x-tools/i486-unknown-linux-gnu/bin/cpp@g' {} \;
-
-since 4.8 gcc is written in C++, fine. so we have to have a crosstool-ng C++ or
-=> we add C++ to the crosstool-ng toolchain, easier and more secure
-
- included from /home/cross/build/gcc/src/gcc-7.2.0/gcc/genmddeps.c:19:0:
-/home/cross/build/gcc/src/gcc-7.2.0/gcc/system.h:540:34: error: declaration of C function ‘const cha
-r* strsignal(int)’ conflicts with
- extern const char *strsignal (int);
- ^
-In file included from /usr/include/c++/4.8.2/cstring:42:0,
- from /home/cross/build/gcc/src/gcc-7.2.0/gcc/system.h:235,
- from /home/cross/build/gcc/src/gcc-7.2.0/gcc/genmddeps.c:19:
-/usr/include/string.h:562:14: error: previous declaration ‘char* strsignal(int)’ here
- extern char *strsignal (int __sig) __THROW; ^
-In file included from ./bconfig.h:5:0,
-=> so, we get to an end here, c++ is taken from the host while cross-compiling?!
--> remove glibc-devel on the host!
--> draw the g++ link, autoconf fails in gcc in funny ways (not finding uint64_t)
--> carefull, we build a gcc over a crossng-gcc, not sure, this is supported..
--> aha. if mpfr, mpc and gmp are not installed and taken from sysroot but from i486-root
- some pathes get messed up.
-
-https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82590
-https://www.mail-archive.com/gcc-bugs@gcc.gnu.org/msg550065.html
-https://gcc.gnu.org/bugzilla/show_bug.cgi?format=multiple&id=54692
-
-https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65863
--> huh?
-https://gcc.gnu.org/ml/gcc-help/2016-06/msg00016.html
-- > yes, this is the inicatition I needed, mpfr, gmp and mpc point to a weird location
-
-The stage one compiler doesn't find the shared library, o well:
-/home/cross/build/gcc/src/gcc-build/./gcc/cc1: error while loading shared libraries: libmpc.so.3: cannot open shared object file: No such file or directory
--> export LD_LIBRARY_PATH=/home/cross/x-tools/i486-unknown-linux-gnu/i486-unknown-linux-gnu/sysroot/usr/lib
-
-And it never ends:
-In file included from /home/cross/build/gcc/src/gcc-7.2.0/libgcc/libgcc2.c:27:0:
-/home/cross/build/gcc/src/gcc-7.2.0/libgcc/../gcc/tsystem.h:87:10: fatal error: stdio.h: No such file or directory
- #include <stdio.h>
- ^~~~~~~~~
-compilation terminated.
-make[2]: *** [Makefile:491: _muldi3.o] Error 1
--> https://gcc.gnu.org/ml/gcc-help/2012-04/msg00088.html
--> so, let's try giving it a --with-sysroot to the crosstool-ng dirs
--> and this means also it got past stage 1 compilers :-)
-
-/home/cross/x-tools/i486-unknown-linux-gnu/lib/gcc/i486-unknown-linux-gnu/4.9.4/../../../../i486-unknown-linux-gnu/bin/ld: /home/cross/build/gcc/src/gcc-build/./gcc/liblto_plugin.so: error loading plugin: /home/cross/build/gcc/src/gcc-build/./gcc/liblto_plugin.so: wrong ELF class: ELFCLASS32
-collect2: error: ld returned 1 exit status
-make[2]: *** [Makefile:982: libgcc_s.so] Error 1
-=> for now, remove LTO stuff in PKGBUILD
-
-make: *** i486-unknown-linux-gnu/libstdc++-v3/doc: No such file or directory. Stop.
-==> ERROR: A failure occurred in build().
- Aborting...
-=> remove the PKGBUILD line # make -C $CHOST/libstdc++-v3/doc DESTDIR="$pkgdir" doc-install-man
-libstdc++-v3/
-=> # make documentation
- #make -C $CHOST/libstdc++-v3/doc doc-man-doxygen
-
-install: failed to access ‘/home/cross/build/gcc/pkg/gcc/usr/lib/gcc/i486-unknown-linux-gnu/7.2.0/’: No such file or directory
-=> gcc auto-probed itself into i486-pc-linux-gnu, so the installed files are there
-CHOST="i486-pc-linux-gnu"
-make: Leaving directory '/home/cross/build/gcc/src/gcc-build/gcc'
-install: failed to access ‘/home/cross/build/gcc/pkg/gcc/usr/lib/gcc/i486-unknown-linux-gnu/7.2.0/’: No such file or directory
-=> sweet, let's try a symlink
-
-_libdir=usr/lib/gcc/$CHOST/$pkgver
-=> hard-code: to _libdir=usr/lib/gcc/i486-pc-linux-gnu/$pkgver
-=> nope, now others break
-this is hardly the ArchLinux way: vanilla and upstream
-
-again CHOST set to i486-pc-linux-gnu
-=> this package is a disaster!
-=> we have a mess with two CHOSTS, one for crosstool-ng (unknown) and
- one for our chroot
-
-# remove traces of ADA
- rm "$pkgdir"/usr/share/info/{gccgo,gfortran.info}
-
-# rm: cannot remove ‘/home/cross/build/gcc/pkg/gcc/usr/share/info/gccgo’: No such file or directory
-# rm "$pkgdir"/usr/share/info/{gccgo,gfortran.info}
-
-/home/cross/x-tools/i486-unknown-linux-gnu/lib/gcc/i486-unknown-linux-gnu/4.9.4/../../../../i486-unknown-linux-gnu/bin/ld: cannot find -lquadmath
-collect2: error: ld returned 1 exit status
-libtool: install: error: relink `libgfortran.la' with the above command before installing it
-make: *** [Makefile:1331: install-toolexeclibLTLIBRARIES] Error 1
-make: Leaving directory '/home/cross/build/gcc/src/gcc-build/i486-unknown-linux-gnu/libgfortran'
-==> ERROR: A failure occurred in package_gcc-libs().
- Aborting...
-=> libquadmath must be retooled before libfortran
-=> nope libfortran simply fails to relink => remove it
-
-install: cannot stat ‘/home/cross/build/gcc/src/gcc/COPYING.RUNTIME’: No such file or directory
-=> sweet, remove it
-
-error: failed to commit transaction (conflicting files)
-gcc: /home/cross/i486-root/usr/lib/libstdc++.a exists in filesystem (owned by gcc-libs)
-gcc: /home/cross/i486-root/usr/lib/libstdc++.la exists in filesystem (owned by gcc-libs)
-Errors occurred, no packages were upgraded.
-=> well, force the package
-
-test.c:1:10: fatal error: stdio.h: No such file or directory
-
-
-# END TODO: gcc
-
-# libtool
-#########
-# patched heavily again, git version cannot be bootstrapped use official tarball
-
-# glibc
-#######
-# use 2.25 version, not 2.26. Keep the ABI intact!
-# endless loop? gawk -f ../scripts/gen-as-const.awk pthread-pi-defines.sym \
-# two reasons: clock and artifacts walk backwards or forward in time
-# chroot on server with chroot, hard to have an asynchronous clock?
-# or glibc is already installed on the system (where not?), so how the
-# hell can it be possibly built!
-# => oh, this would be cruel.
-# or 3rd reason, we have a glibc shim, maybe this one causes some trouble
-# => why?
-# or libtool fixing, whatever fixing means (https://forums.gentoo.org/viewtopic-t-496052-start-0.html)
-# => nope.
-# -isystem /usr/includ ein gcc spec? quite likely!
-# ah: old friend:
-build/glibc/src/glibc-build/libc.a(dl-sysdep.o): In function `.L18':
-dl-sysdep.c:(.text+0x8c): undefined reference to `__memcmp_ia32'
-/build/glibc/src/glibc-build/libc.a(dl-sysdep.o): In function `.L87':
-dl-sysdep.c:(.text+0x11f): undefined reference to `__memcmp_ia32'
-/build/glibc/src/glibc-build/libc.a(dl-sysdep.o): In function `.L19':
-dl-sysdep.c:(.text+0x152): undefined reference to `__memcmp_ia32'
-/build/glibc/src/glibc-build/libc.a(dl-sysdep.o): In function `.L85':
-dl-sysdep.c:(.text+0x19c): undefined reference to `__memcmp_ia32'
-dl-sysdep.c:(.text+0x1b7): undefined reference to `__memcmp_ia32'
-/build/glibc/src/glibc-build/libc.a(dl-sysdep.o):dl-sysdep.c:(.text+0x202): more undefined references to `__memcmp_ia32' follow
-elf/sln
-=> USE_MULTIARCH
-=> --disable-multi-arch
-=> let's test this time, too dangerous to loose the chroot otherwise!
-# older 2.25 misses a binutils 2.29 patch:
-https://git.busybox.net/buildroot/diff/package/glibc/0005-fix-binutils-2-29-build.patch?id=cf821efbd0b24690b52f379d4a9934a16073762e
-{standard input}: Assembler messages:
-{standard input}: Error: `loc1@GLIBC_2.0' can't be versioned to common symbol 'loc1'
-{standard input}: Error: `loc2@GLIBC_2.0' can't be versioned to common symbol 'loc2'
-{standard input}: Error: `locs@GLIBC_2.0' can't be versioned to common symbol 'locs'
-make[2]: *** [../o-iterator.mk:9: /build/glibc/src/glibc-build/misc/regexp.os] Error 1
-
-PACKAGES="iana-etc filesystem linux-api-headers tzdata ncurses readline bash \
-gdbm perl openssl bzip2 xz m4 help2man flex bc elfutils \
-libtool libxml2 libgpg-error libgcrypt libxslt \
-docbook-xml docbook-xsl xmlto libcap libtirpc pambase pam inetutils bison iproute2 kmod \
-sysfsutils libidn iputils \
-expat acl attr lz4 tar libarchive curl pacman \
-joe coreutils util-linux pcre grep findutils file diffutils ed patch \
-autoconf automake libedit openssh pcre2 git libunwind strace wget \
-gmp mpfr gawk libmpc zlib tcl expect dejagnu binutils gcc libtool glibc"
-for p in $PACKAGES; do
- asp export $p
-done
-
-for p in $PACKAGES
- cd $p
-
- sed -i "s/^arch=.*/arch=('i486')/" PKGBUILD
-
- # for some packages we cannot execute tests (because the dependencies to install in
- # the toolchain environment would be too much)
- # perl: --nocheck
- # openssl: --nocheck
- # libelf: --nocheck
- # libtool: --nocheck
- # libxml2: --nocheck
- # libxslt: --nocheck
- # inetutils: --nocheck
- # bison: --nocheck
- # libarchive: --nocheck
- # pacman: --nocheck
- # util-linux: --nocheck
- # pcre: --nocheck
- # gawk: --nocheck
- # tcl: --nocheck
-
- makepkg -C --config /etc/makepkg.conf --skipchecksums --skippgpcheck > $p.log 2>&1
-
- # TODO:
- # some package break in parallel builds or produce really funky
- # error messages or/and results
- # binutils: use makepkg-noparallel.conf
- # gcc: use makepkg-noparallel.conf for debuging, the real build works fine in parallel
-
- cp -v *.pkg.tar.gz /packages/i486/.
-
- pacman --noconfirm --config /etc/pacman-i486.conf -U *.pkg.tar.gz
-
- # replace all pacman articats and clean caches
- rm -rf /packages/i486/temp* /var/cache/pacman/pkg/*
- repo-add /packages/i486/temp.db.tar.gz /packages/i486/*pkg.tar.gz
-
- #repo-add -n /packages/i486/temp.db.tar.gz /packages/i486/*pkg.tar.gz
-
- pacman --noconfirm --config /etc/pacman-i486.conf -r / -S $p
-
- pacman --config /etc/pacman-i486.conf -r / -Q | grep $p
-done
-
-# aftermatch for gcc/binutils
-
-#collect2: unable to find ld: this sounds bad, like an archicture mismatch somewhere
-#in binutils/gcc
-=> this is the cross compiled gcc for i486 inside the chroot, it expects
- its platform dependend stuff in /usr/lib/gcc/i486-unknown-linux-gnu/7.2.0
-=> we can temporarily fix this:
-ln -s /usr/bin/ld /usr/lib/gcc/i486-unknown-linux-gnu/7.2.0/ld
-etc.
-
-# libz.so missing?
-ln -s libz.so.1 /usr/lib/libz.so
-
-# aftermatch for glibc
-
-# bacause pacman cannot set file permissions
-chmod u+x /usr/bin/* /lib/*.so*
-
-# kernel headers:
-#/usr/include/linux/errno.h missing
-#/usr/include/adm/errno.h missing
-=> a libarchive compression issue, files missing, because they are in pkg of
- linux-api-headers?!
-
-remove debug packages
-
-error: failed to commit transaction (conflicting files)
-/usr/lib/libstdc++.a exists in both 'gcc-libs' and 'gcc'
-/usr/lib/libstdc++.la exists in both 'gcc-libs' and 'gcc'
-/usr/lib/libblkid.a exists in both 'util-linux' and 'libutil-linux'
-/usr/lib/libblkid.la exists in both 'util-linux' and 'libutil-linux'
-/usr/lib/libfdisk.a exists in both 'util-linux' and 'libutil-linux'
-/usr/lib/libfdisk.la exists in both 'util-linux' and 'libutil-linux'
-/usr/lib/libmount.a exists in both 'util-linux' and 'libutil-linux'
-/usr/lib/libmount.la exists in both 'util-linux' and 'libutil-linux'
-/usr/lib/libsmartcols.a exists in both 'util-linux' and 'libutil-linux'
-/usr/lib/libsmartcols.la exists in both 'util-linux' and 'libutil-linux'
-/usr/lib/libuuid.a exists in both 'util-linux' and 'libutil-linux'
-/usr/lib/libuuid.la exists in both 'util-linux' and 'libutil-linux'
-Errors occurred, no packages were upgraded.
-
-=> ok, we loose files and permissions
-
-# in 'real' 486
-###############
-
-next round: do those problems persist
-
-error: could not register 'temp' database (wrong or NULL argument passed)
-
-installed binaries have wrong permissions (no execute permission), a pacman issue?
-shilly flags? libarchive problem?
-
-git: https helpers
-chmod 0777 /usr/lib/git-core/git-remote-*
-
-later: for inside the chroot
-
-# uname module hack
-###################
-
-# as root
-# we need i486, so setarch doesn't work for us, because it emulates only,
-# a i686, use the hacked uname kernel module:
-wget http://clfs.org/files/extras/uname_hack-20080713.tar.bz2
-tar xf uname_hack-20080713.tar.bz2
-cd uname_hack
-# swap memset arguments:
-# /root/uname_hack/uname_hack.c:50:2: warning: 'memset' used with constant zero length parameter; this could be due to transposed parameters [-Wmemset-transposed-args]
-# memset(uname_hack_uts_machine, uname_hack_uts_machine_len, '\0');
-# ^~~~~~
-# Building modules, stage 2.
-make uname_hack_fake_machine=i486
-insmod uname_hack.ko
-#lib/config.guess in automake returns i486-pc-linux-gnu
-# uname -m returns i486
-cd ..
-
-# patch our hosts pacman.conf, so it doesn't get fooled by the architecture hack
-sed -i 's@^Architecture.*@Architecture = x86_64@g' /etc/pacman.conf
-
-# optional packages for stage 1
-# TODO: do we need this for old machines?
-# linux-firmware
-# use git from the host for now
-#sed -i 's@makedepends\(.*\)@#makedepends\1@g' linux-firmware/PKGBUILD