#!/bin/sh -e ## # This script is to be called from 'bootstrap.sh', not sourced. # PATH is fully contained. We install to 'MCMTOOLS/abuild/'. # export PATH="${MCMTOOLS}/sys/bin:${MCMTOOLS}/host/bin"; HERE="$(dirname $(readlink -f ${0}))"; DEST="${MCMTOOLS}/abuild"; mkdir -p "${DEST}"; cd "${DEST}"; ## # OpenSSL # nssl=openssl; vssl=1.1.1l; test ! -f ._${nssl}-${vssl} && \ ( test ! -d ${nssl}-${vssl} \ && curl -s https://www.openssl.org/source/${nssl}-${vssl}.tar.gz \ | tar -xzf - \ ; cd ${nssl}-${vssl}; rm -fr x; mkdir x; cd x; ../Configure cc \ --prefix="${DEST}" \ --openssldir="${DEST}" \ no-shared \ ; make -j$(nproc); make install_sw install_ssldirs; ) touch ._${nssl}-${vssl}; rm -fr ${nssl}-${vssl}; ## # abuild # nbld=abuild; vbld=ff913b49072352604ce081378f015af1714e1bd2; test ! -f ._${nbld}-${vbld} && \ ( test ! -d ${nbld}-${vbld} \ && git clone https://git.alpinelinux.org/${nbld} ${nbld}-${vbld} \ ; cd abuild-${vbld}; patch -p1 --forward < "${HERE}/patches/0001-allow-untrusted.diff" || true; # FIXME patch -p1 --forward < "${HERE}/patches/0001-etc-apk-keys.diff" || true; # FIXME patch -p1 --forward < "${HERE}/patches/0001-extra-lib-paths.diff" || true; # FIXME rm -fr x; mkdir x; cd x; export SSL_CFLAGS="-I${DEST}/include -I${MCMTOOLS}/sys/include"; export SSL_LDFLAGS="-L${DEST}/lib -L${MCMTOOLS}/sys/lib"; export SSL_LIBS="-lssl -lcrypto"; # not in mcmtools export ZLIB_LIBS="-lz"; # from mcmtools export CFLAGS="-DABUILD_GROUP=\\\"$(id -gn)\\\""; # default 'abuild' if undefined sed -i "${DEST}/abuild-${vbld}/abuild-sudo.c" \ -e "s@/sbin/apk@${DEST}/bin/apk@" \ ; # hardcoded make -j$(nproc) -C .. install \ prefix="${DEST}" \ sysconfdir="${DEST}" \ ; sed -i "${DEST}/bin/abuild" \ -e 's@/bin/ash -e@/usr/bin/env bash@' \ ; # hardcoded ) touch ._${nbld}-${vbld}; #rm -fr ${nbld}-${vbld}; ## # util-linux (for 'getopt' used by 'abuild-keygen') # nutl=util-linux; vutl=2.37.2; test ! -f ._${nutl}-${vutl} && \ ( test ! -d ${nutl}-${vutl} \ && mkdir ${nutl}-${vutl} \ && curl -sL https://github.com/karelzak/${nutl}/archive/refs/tags/v${vutl}.tar.gz \ | tar -C ${nutl}-${vutl} --strip-components=1 -xzf - \ ; cd ${nutl}-${vutl}; test -f configure || ./autogen.sh; rm -fr x; mkdir x; cd x; ../configure \ --prefix="${DEST}" \ --enable-static \ --disable-shared \ ; sed -i Makefile \ -e 's/chgrp/-chgrp/g' \ -e 's/chmod/-chmod/g' \ -e 's/chown/-chown/g' \ ; # allow non-root installation make -j$(nproc) install; ) touch ._${nutl}-${vutl}; rm -fr ${nutl}-${vutl}; ## # apk-tools # natl=apk-tools; vatl=9f07a3447ea1e8fb67cdbd5c30b2ea144e826490; test ! -f ._${natl}-${vatl} && \ ( test ! -d ${natl}-${vatl} \ && git clone https://git.alpinelinux.org/${natl} ${natl}-${vatl} \ ; cd ${natl}-${vatl}; sed -i Make.rules \ -e '/targets += $(__shlibs) $(shobjs)/d' \ ; # disable shared libs sed -i src/Makefile \ -e 's/$(install-libapk_so)//g' -e 's/$(libapk_so)//g' \ ; # disable shared libs sed -i src/context.c \ -e "s@var/log@${DEST}/${1}/var/log@" \ ; # hardcoded export LUA=no; # documentation requires lua make clean; make \ INSTALLDIR="${DEST}" \ CFLAGS="-I${DEST}/include -I${MCMTOOLS}/sys/include" \ LDFLAGS="-L${DEST}/lib -L${MCMTOOLS}/sys/lib -L${DEST}/${natl}-${vatl}/libfetch" \ LIBS="-lapk -lfetch -lssl -lcrypto -lz" \ ; cp src/apk "${DEST}/bin"; ) touch ._${natl}-${vatl}; rm -fr ${natl}-${vatl}; ## # pax-utils # npax=pax-utils; vpax=1.3.3; test ! -f ._${npax}-${vpax} && \ ( test ! -d ${npax}-${vpax} \ && curl -s https://gitweb.gentoo.org/proj/${npax}.git/snapshot/${npax}-${vpax}.tar.gz \ | tar -xzf - \ ; cd ${npax}-${vpax}; sed -i Makefile \ -e '/$(MPAGES)/d' \ ; rm -fr x; mkdir x; cd x; make -j$(nproc) -C .. install \ PREFIX="${DEST}" \ MANDIR="${DEST}/man" \ USE_PYTHON=no \ ; ) touch ._${npax}-${vpax}; rm -fr ${npax}-${vpax}; ## # fakeroot # nfrt=fakeroot; vfrt=20210907T092512Z:1.26; # look on snapshot.d.o for this test ! -f ._${nfrt}-${vfrt#*:} && \ ( test ! -d ${nfrt}-${vfrt#*:} \ && curl -s https://snapshot.debian.org/archive/debian/${vfrt%:*}/pool/main/f/${nfrt}/${nfrt}_${vfrt#*:}.orig.tar.gz \ | tar -xzf - \ ; cd ${nfrt}-${vfrt#*:}; f=$(mktemp); echo > ${f} "#include "; cat libfakeroot.c >> ${f}; mv ${f} libfakeroot.c; rm -fr x; mkdir x; cd x; ../configure --prefix="${DEST}"; make -j$(nproc) install; ) touch ._${nfrt}-${vfrt#*:}; rm -fr ${nfrt}-${vfrt#*:};