summaryrefslogtreecommitdiff
path: root/.Attic
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 /.Attic
parenta2216f4f15f92f6e4f6dc387b5b5ffaf48e0470b (diff)
downloadbootstrap32-224768b40915233bf11a863946ffdcb2dda6a63f.tar.xz
cleaned up some documentation and moved old things into .Attic
Diffstat (limited to '.Attic')
-rw-r--r--.Attic/README.iputils36
-rw-r--r--.Attic/README.old_stage2919
2 files changed, 955 insertions, 0 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