aboutsummaryrefslogtreecommitdiff
path: root/muslbuild
diff options
context:
space:
mode:
authorMitchell Riedstra <mitch@riedstra.dev>2021-09-26 10:48:02 -0400
committerMitchell Riedstra <mitch@riedstra.dev>2021-09-26 10:48:02 -0400
commit06fd4a903b11d06c66c51207883b0b8f1d4f2fb7 (patch)
tree1d20efad6386edf655b4afaa3d98cdc2ef451092 /muslbuild
parent03976ecac8e5b062936f692f45768da512d89421 (diff)
downloaddotfiles-06fd4a903b11d06c66c51207883b0b8f1d4f2fb7.tar.gz
dotfiles-06fd4a903b11d06c66c51207883b0b8f1d4f2fb7.tar.xz
Add muslbuild, a small set of shell scripts to statically build a few things against musl libc
Diffstat (limited to 'muslbuild')
-rwxr-xr-xmuslbuild/all11
-rwxr-xr-xmuslbuild/jq36
-rwxr-xr-xmuslbuild/libevent33
-rwxr-xr-xmuslbuild/musl53
-rwxr-xr-xmuslbuild/ncurses47
-rwxr-xr-xmuslbuild/oksh33
-rwxr-xr-xmuslbuild/tmux36
-rwxr-xr-xmuslbuild/upx26
8 files changed, 275 insertions, 0 deletions
diff --git a/muslbuild/all b/muslbuild/all
new file mode 100755
index 0000000..fdcf41d
--- /dev/null
+++ b/muslbuild/all
@@ -0,0 +1,11 @@
+#!/bin/sh
+set -e
+pkgs="musl
+oksh
+ncurses
+libevent
+tmux
+upx"
+for pkg in $pkgs ; do
+ ./$pkg
+done
diff --git a/muslbuild/jq b/muslbuild/jq
new file mode 100755
index 0000000..b3873a2
--- /dev/null
+++ b/muslbuild/jq
@@ -0,0 +1,36 @@
+#!/bin/sh
+set -e
+set -x
+relver="1.6"
+build_dir="/v/muslbuild/jq"
+
+export CC="musl-gcc"
+PREFIX="$HOME/musl"
+
+if ! [ -d "$build_dir" ] ; then
+ mkdir -p "$build_dir"
+fi
+cd "$build_dir"
+
+arLoc="https://github.com/stedolan/jq/releases/download/jq-%s/jq-%s.tar.gz"
+arLoc="$(printf "$arLoc\n" "$relver" "$relver")"
+arFn="jq-${relver}.tar.gz"
+
+checksum=5de8c8e29aaa3fb9cc6b47bb27299f271354ebb72514e3accadc7d38b5bbaa72
+
+if ! [ -e "$arFn" ] ; then
+ curl -L -o "$arFn" "$arLoc"
+fi
+
+echo "${checksum} $arFn" | sha256sum -c
+
+tar xzvf "$arFn"
+cd "jq-${relver}"
+./configure --prefix="$PREFIX" --bindir="$HOME/bin" --host=x86_64 \
+ --build=x86_64-pc-linux-gnu \
+ --enable-all-static --enable-static=yes --enable-shared=no --disable-docs \
+ --with-oniguruma=builtin \
+ --disable-maintainer-mode
+make
+make install -j$(nproc)
+
diff --git a/muslbuild/libevent b/muslbuild/libevent
new file mode 100755
index 0000000..ccd24ec
--- /dev/null
+++ b/muslbuild/libevent
@@ -0,0 +1,33 @@
+#!/bin/sh
+set -e
+set -x
+relver="2.1.12"
+build_dir="/v/muslbuild/libevent"
+
+export CC="musl-gcc"
+PREFIX="$HOME/musl"
+
+if ! [ -d "$build_dir" ] ; then
+ mkdir -p "$build_dir"
+fi
+cd "$build_dir"
+
+arLoc="https://github.com/libevent/libevent/releases/download/release-%s-stable/libevent-%s-stable.tar.gz"
+arLoc="$(printf "$arLoc\n" "$relver" "$relver")"
+arFn="libevent-${relver}-stable.tar.gz"
+
+checksum=92e6de1be9ec176428fd2367677e61ceffc2ee1cb119035037a27d346b0403bb
+
+if ! [ -e "$arFn" ] ; then
+ curl -L -o "$arFn" "$arLoc"
+fi
+
+echo "${checksum} libevent-${relver}-stable.tar.gz" | sha256sum -c
+
+tar xzvf "$arFn"
+cd "libevent-${relver}-stable"
+./configure --prefix="$PREFIX" --host=x86_64 \
+ --disable-doxygen-doc --enable-static=yes --enable-shared=no \
+ --disable-openssl
+make
+make install -j1
diff --git a/muslbuild/musl b/muslbuild/musl
new file mode 100755
index 0000000..13487e5
--- /dev/null
+++ b/muslbuild/musl
@@ -0,0 +1,53 @@
+#!/bin/sh
+set -e
+set -x
+relver="1.2.2"
+build_dir="/v/pub/musl"
+
+PREFIX="$HOME/musl"
+
+if ! [ -d "$build_dir" ] ; then
+ mkdir -p "$build_dir"
+fi
+cd "$build_dir"
+
+sigLoc="https://musl.libc.org/releases/musl-${relver}.tar.gz.asc"
+sigFn="musl-${relver}.tar.gz.asc"
+arLoc="https://musl.libc.org/releases/musl-${relver}.tar.gz"
+arFn="musl-${relver}.tar.gz"
+
+curl https://musl.libc.org/musl.pub | gpg --import
+
+if ! [ -e "$arFn" ] ; then
+ curl -o "$arFn" "$arLoc"
+fi
+
+if ! [ -e "$sigFn" ] ; then
+ curl -o "$sigFn" "$sigLoc"
+fi
+
+_out="$(mktemp)";
+gpg --fingerprint --verify "$sigFn" >"$_out" 2>&1
+ret=$?
+
+if [ $ret -ne 0 ] ; then
+ cat "$_out"
+ rm "$_out"
+ echo "Bad signature"
+fi
+
+if ! grep -q '^Primary key fingerprint: 8364 8929 0BB6 B70F 99FF DA05 56BC DB59 3020 450F' \
+ < "$_out" ; then
+ cat "$_out"
+ rm "$_out"
+ echo "Bad signature"
+ exit 1
+fi
+rm "$_out" || printf ""
+
+tar xzvf "$arFn"
+cd "musl-${relver}"
+./configure --prefix="$PREFIX" --bindir="$HOME/bin" --disable-shared \
+ --enable-static
+make
+make install -j$(nproc)
diff --git a/muslbuild/ncurses b/muslbuild/ncurses
new file mode 100755
index 0000000..a9419d8
--- /dev/null
+++ b/muslbuild/ncurses
@@ -0,0 +1,47 @@
+#!/bin/sh
+set -e
+set -x
+relver="6.2-20210911"
+build_dir="/v/muslbuild/ncurses"
+
+PREFIX="$HOME/musl"
+export CC="musl-gcc -static"
+
+if ! [ -d "$build_dir" ] ; then
+ mkdir -p "$build_dir"
+fi
+cd "$build_dir"
+
+# arLoc="https://invisible-mirror.net/archives/ncurses/ncurses-%s.tar.gz"
+# arLoc="https://invisible-mirror.net/archives/ncurses/ncurses-%s.tar.gz"
+arLoc="https://invisible-mirror.net/archives/ncurses/current/ncurses-%s.tgz"
+arLoc="$(printf "$arLoc\n" "$relver")"
+arFn="ncurses-${relver}.tar.gz"
+
+checksum=13f221dda7a5839fe7ccee827c93fafb420c943d0f7e7de4d60299046b965867f5afba54c84c1dce2d8b58ff7a5a112bea87c89eca103a14c0fea2ccdf430eaf
+
+if ! [ -e "$arFn" ] ; then
+ # we're verifying the checksum anyway, it's freaking out the full
+ # chain not being there
+ curl -k -L -o "$arFn" "$arLoc"
+fi
+
+echo "${checksum} $arFn" | sha512sum -c
+
+tar xzvf "$arFn"
+cd "ncurses-${relver}"
+./configure --prefix="$PREFIX" --bindir="$HOME/bin" \
+ --enable-static \
+ --includedir="$PREFIX/include" \
+ --without-ada \
+ --without-tests \
+ --disable-termcap \
+ --with-termlib \
+ --disable-rpath-hack \
+ --without-cxx-binding \
+ --enable-pc-files \
+ --disable-shared \
+ --without-pkg-config
+make clean
+make -j$(nproc)
+make install -j$(nproc)
diff --git a/muslbuild/oksh b/muslbuild/oksh
new file mode 100755
index 0000000..23213cf
--- /dev/null
+++ b/muslbuild/oksh
@@ -0,0 +1,33 @@
+#!/bin/sh
+set -e
+set -x
+relver="6.9"
+build_dir="/v/muslbuild/oksh"
+
+export CC="musl-gcc -static"
+PREFIX="$HOME/musl"
+
+if ! [ -d "$build_dir" ] ; then
+ mkdir -p "$build_dir"
+fi
+cd "$build_dir"
+
+arLoc="https://github.com/ibara/oksh/releases/download/oksh-%s/oksh-%s.tar.gz"
+arLoc="$(printf "$arLoc\n" "$relver" "$relver")"
+arFn="oksh-${relver}.tar.gz"
+
+checksum=c08d97b2ac9ee5d88e9e508d27c75502b2d06c20d4c5ab87b496cb3b9951bd35
+
+if ! [ -e "$arFn" ] ; then
+ curl -L -o "$arFn" "$arLoc"
+fi
+
+echo "${checksum} $arFn" | sha256sum -c
+
+tar xzvf "$arFn"
+cd "oksh-${relver}"
+./configure --prefix="$PREFIX" --bindir="$HOME/bin" --enable-ksh \
+ --enable-static
+make
+make install -j$(nproc)
+
diff --git a/muslbuild/tmux b/muslbuild/tmux
new file mode 100755
index 0000000..f160062
--- /dev/null
+++ b/muslbuild/tmux
@@ -0,0 +1,36 @@
+#!/bin/sh
+set -e
+set -x
+relver="3.2a"
+build_dir="/v/muslbuild/tmux"
+
+PREFIX="$HOME/musl"
+export CC="musl-gcc -static -I. -I$PREFIX/include/ncursesw -DHAVE_FORKPTY=1 -DHAVE_FDFORKPTY=1"
+
+if ! [ -d "$build_dir" ] ; then
+ mkdir -p "$build_dir"
+fi
+cd "$build_dir"
+
+arLoc="https://github.com/tmux/tmux/releases/download/%s/tmux-%s.tar.gz"
+arLoc="$(printf "$arLoc\n" "$relver" "$relver")"
+arFn="tmux-${relver}.tar.gz"
+
+checksum=551553a4f82beaa8dadc9256800bcc284d7c000081e47aa6ecbb6ff36eacd05f
+
+if ! [ -e "$arFn" ] ; then
+ curl -L -o "$arFn" "$arLoc"
+fi
+
+echo "${checksum} $arFn" | sha256sum -c
+
+tar xzvf "$arFn"
+cd "tmux-${relver}"
+./configure --prefix="$PREFIX" --bindir="$HOME/bin" \
+ --enable-static \
+ --host=x86_64-alpine-linux-musl \
+ --build=x86_64-alpine-linux-musl
+make clean
+make -j$(nproc)
+make install -j$(nproc)
+
diff --git a/muslbuild/upx b/muslbuild/upx
new file mode 100755
index 0000000..6c4e98b
--- /dev/null
+++ b/muslbuild/upx
@@ -0,0 +1,26 @@
+#!/bin/sh
+set -e
+set -x
+relver="3.96"
+build_dir="/v/muslbuild/jq"
+
+if ! [ -d "$build_dir" ] ; then
+ mkdir -p "$build_dir"
+fi
+cd "$build_dir"
+
+arLoc="https://github.com/upx/upx/releases/download/v%s/upx-%s-amd64_linux.tar.xz"
+arLoc="$(printf "$arLoc\n" "$relver" "$relver")"
+arFn="upx-${relver}-amd64_linux.tar.xz"
+
+checksum=ac75f5172c1c530d1b5ce7215ca9e94586c07b675a26af3b97f8421b8b8d413d
+
+if ! [ -e "$arFn" ] ; then
+ curl -L -o "$arFn" "$arLoc"
+fi
+
+echo "${checksum} $arFn" | sha256sum -c
+
+tar xJvf "$arFn"
+cd "upx-${relver}-amd64_linux"
+cp upx "$HOME/bin/upx"