summaryrefslogtreecommitdiff
path: root/scripts/setup-abuild
diff options
context:
space:
mode:
authorZach van Rijn <me@zv.io>2021-10-09 21:04:03 -0500
committerZach van Rijn <me@zv.io>2022-12-05 01:54:29 -0600
commit8f39b6179b815008f6cbb96455e0462045322320 (patch)
tree4cebd614ded1ea3476a4e7cb3e21c8f56dd39167 /scripts/setup-abuild
parent198e0130d845f7466c09a61f3829905d95313c06 (diff)
downloadpackages-8f39b6179b815008f6cbb96455e0462045322320.tar.gz
packages-8f39b6179b815008f6cbb96455e0462045322320.tar.bz2
packages-8f39b6179b815008f6cbb96455e0462045322320.tar.xz
packages-8f39b6179b815008f6cbb96455e0462045322320.zip
Initial draft of new bootstrap tooling.
Diffstat (limited to 'scripts/setup-abuild')
-rwxr-xr-xscripts/setup-abuild188
1 files changed, 188 insertions, 0 deletions
diff --git a/scripts/setup-abuild b/scripts/setup-abuild
new file mode 100755
index 000000000..cc8e238be
--- /dev/null
+++ b/scripts/setup-abuild
@@ -0,0 +1,188 @@
+#!/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 <linux/capability.h>";
+ 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#*:};