#!/bin/sh -e ## # This script is to be called from 'bootstrap.sh', not sourced. # PATH is fully contained. We install to 'MCMTOOLS/abuild/'. # HERE="$(dirname $(readlink -f ${0}))"; DEST="${MCMTOOLS}/abuild"; export PATH="${MCMTOOLS}/sys/bin:${MCMTOOLS}/host/bin:${DEST}/bin"; mkdir -p "${DEST}"; cd "${DEST}"; ## # OpenSSL # nssl=openssl; vssl=1.1.1m; 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=681ef9dfcf6e57bdda767efed7e50ce8e9de0563 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}" \ SCDOC=true \ ; 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.4; 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}; ## # pkgconf (pkg-config replacement) # npkg=pkgconf; vpkg=1044bb57ca8a6e6679de63105ffabf6b8e8acfd7; test ! -f ._${npkg}-${vpkg} && ( test ! -d ${npkg}-${vpkg} \ && git clone https://github.com/${npkg}/${npkg}.git ${npkg}-${vpkg} \ ; cd ${npkg}-${vpkg}; ./autogen.sh; ./configure \ --prefix="${DEST}" \ --enable-static \ --disable-shared \ --with-system-libdir=/lib:/usr/lib \ --with-system-includedir=/usr/include \ ; make -j$(nproc) install; ) touch ._${npkg}-${vpkg}; rm -fr ${npkg}-${vpkg}; ## # samurai (ninja replacement) # nsam=samurai; vsam=4cc8f4a3654b72c977e0e62367d1ab6d5b873def; test ! -f ._${nsam}-${vsam} && ( test ! -d ${nsam}-${vsam} \ && git clone https://github.com/michaelforney/${nsam}.git ${nsam}-${vsam} \ ; cd ${nsam}-${vsam}; CC=gcc \ make -j$(nproc) install \ PREFIX="" \ DESTDIR="${DEST}" \ ; ) touch ._${nsam}-${vsam}; rm -fr ${nsam}-${vsam}; ## # muon (meson replacement) # nmun=muon; vmun=df7ee57e6d48aa159015e639588f51ab0e35ed03; test ! -f ._${nmun}-${vmun} && ( test ! -d ${nmun}-${vmun} \ && git clone https://git.sr.ht/~lattis/${nmun} ${nmun}-${vmun} \ ; cd ${nmun}-${vmun}; sed -i bootstrap.sh \ -e 's/if.*then/if false; then/g' \ ; CC=gcc \ ./bootstrap.sh \ bootstrap \ ; bootstrap/muon setup \ -Dstatic=true \ build \ ; samu -C build; cp build/muon "${DEST}/bin"; ) touch ._${nmun}-${vmun}; rm -fr ${nmun}-${vmun}; ## # apk-tools # # Ariadne says use meson, and 'muon' doesn't work so... kludges! # natl=apk-tools; vatl=be4ce40797af9056c79be4dc74ff978f1f4957e4; 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' \ -e 's/ version.o/ version.o strlcpy.o/' \ ; # disable shared libs, hack the hack sed -i src/context.c \ -e "s@var/log@${DEST}/${1}/var/log@" \ ; # hardcoded ln -sf ../portability/strlcpy.c src/strlcpy.c; export LUA=no; # documentation requires lua make clean; make \ INSTALLDIR="${DEST}" \ CFLAGS="-I${DEST}/include -I${MCMTOOLS}/sys/include -DNEED_STRLCPY" \ 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=20220118T114129Z:1.27; # 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#*:};