Skip to content

Instantly share code, notes, and snippets.

@jaos
Last active March 20, 2021 22:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jaos/a7951ad00f619e8f3368c8fb3af28069 to your computer and use it in GitHub Desktop.
Save jaos/a7951ad00f619e8f3368c8fb3af28069 to your computer and use it in GitHub Desktop.
slack minimal root filesystem tarballs for docker import
#!/bin/bash -ex
ROOT=/tmp/rfs
OUT=/tmp
S142_MIN_PKGS="aaa_base aaa_elflibs aaa_terminfo bash grep bzip2 coreutils cpio devs etc bin file procps-ng findutils glibc-solibs gzip less openssl patch pkgtools sed tar util-linux xz which pcre wget gnupg ncurses slapt-get curl dialog gawk libunistring libgcrypt utempter diffutils sqlite icu4c e2fsprogs ca-certificates perl"
S142_SMALL_PKGS="readline time mpfr libcgroup net-tools iproute2 tree ntp openssh vim"
S142_DEV_PKGS="gcc gcc-g++ gc guile make autoconf git glibc kernel-headers autoconf automake libtool m4 gettext gettext-tools pkg-config intltool atk glib2 gtk+2 pango zlib mesa libdrm libXxf86vm libunistring expat libxshmfence fribidi libpthread-stubs shared-mime-info fribidi libmpc flex bison libcroco libxml2 python font-misc-misc binutils texinfo adwaita-icon-theme hicolor-icon-theme libXtst at-spi2-atk at-spi2-core dbus gtk+3 libepoxy libSM libICE bigreqsproto compositeproto damageproto dmxproto dri2proto dri3proto fixesproto fontcacheproto fontsproto glproto inputproto kbproto presentproto printproto randrproto recordproto renderproto resourceproto scrnsaverproto videoproto xcb-proto xcmiscproto xextproto xf86bigfontproto xf86dgaproto xf86driproto xf86miscproto xf86vidmodeproto xineramaproto xproto cairo fontconfig freetype gdk-pixbuf2 libX11 libXau libXcomposite libXcursor libXdamage libXdmcp libXext libXfixes libXi libXinerama libXrandr libXrender libpng libxcb pixman harfbuzz polkit slapt-src libffi"
S150_MIN_PKGS="aaa_base aaa_glibc-solibs aaa_libraries aaa_terminfo bash findutils grep coreutils etc bin gzip openssl-solibs pkgtools sed tar util-linux xz pcre2 curl gawk libcap libpsl nghttp2 libunistring libgcrypt sqlite icu4c e2fsprogs brotli perl ca-certificates zstd libnsl libtirpc krb5 keyutils openssl slapt-get"
S150_SMALL_PKGS="bzip2 lbzip2 cpio devs vim lzlib wget ncurses readline mpfr net-tools iproute2 iputils ntp openssh pcre time libcgroup tree less slapt-src procps-ng which file dialog hostname"
S150_DEV_PKGS="gcc gcc-g++ gc guile make autoconf git glibc kernel-headers autoconf automake libtool m4 gettext-tools pkg-config intltool atk glib2 gtk+2 pango zlib mesa libdrm libXxf86vm expat libxshmfence fribidi graphite2 libpthread-stubs xorgproto shared-mime-info graphite2 fribidi libmpc flex bison libxml2 python3 libglvnd font-misc-misc binutils texinfo adwaita-icon-theme hicolor-icon-theme libXtst at-spi2-atk at-spi2-core dbus gtk+3 libepoxy wayland wayland-protocols libxkbcommon check zstd libpng libXft liberation-fonts-ttf libcanberra gamin libvorbis libogg elogind openssl patch diffutils utempter gettext gslapt glibc-i18n meson ninja libffi dbus-glib"
# NOTE: slapt-get/gslapt deps omitted... might include: cyrus-sasl gpgme libgpg-error libassuan gnupg2
SLAPT_DEPS="atk at-spi2-atk at-spi2-core brotli bzip2 cairo curl cyrus-sasl dbus e2fsprogs elogind fontconfig freetype fribidi gdk-pixbuf2 glib2 gnupg2 gpgme graphite2 gtk+3 harfbuzz keyutils krb5 libassuan libcap libepoxy libffi libglvnd libgpg-error libidn2 libnotify libnsl libpng libpsl libssh2 libtirpc libunistring libX11 libXau libxcb libXcomposite libXcursor libXdamage libXdmcp libXext libXfixes libXi libXinerama libxkbcommon libxml2 libXrandr libXrender nghttp2 openldap openssl openssl-solibs pango pcre pixman pkgtools polkit util-linux wayland xz zlib zstd"
function dobuild() {
set -ex
slackrel=${1:-slackware-15.0}
imgtype=${2:-minimal}
rm -rf $ROOT
mkdir -p ${ROOT}/etc/slapt-get
mkdir -p ${ROOT}/var/lib/pkgtools/packages
echo "WORKINGDIR=${ROOT}/var/cache/slapt-get" >> ${ROOT}/etc/slapt-get/slapt-getrc
case "$slackrel" in
slackware64-15.0)
echo "SOURCE=https://storage.googleapis.com/slackpacks.jaos.org/slackware64-15.0/:OFFICIAL" >> ${ROOT}/etc/slapt-get/slapt-getrc
echo "SOURCE=http://slackware.uk/slackware/slackware64-current/:OFFICIAL" >> ${ROOT}/etc/slapt-get/slapt-getrc
;;
slackware-15.0)
echo "SOURCE=https://storage.googleapis.com/slackpacks.jaos.org/slackware-15.0/:OFFICIAL" >> ${ROOT}/etc/slapt-get/slapt-getrc
echo "SOURCE=http://slackware.uk/slackware/slackware-current/:OFFICIAL" >> ${ROOT}/etc/slapt-get/slapt-getrc
;;
slackwarearm-15.0)
echo "SOURCE=https://storage.googleapis.com/slackpacks.jaos.org/slackwarearm-15.0/:OFFICIAL" >> ${ROOT}/etc/slapt-get/slapt-getrc
echo "SOURCE=http://slackware.uk/slackwarearm/slackwarearm-current/:OFFICIAL" >> ${ROOT}/etc/slapt-get/slapt-getrc
;;
slarm64-15.0)
echo "#SOURCE=http://dl.fail.pp.ua/slackware/slarm64-current/:OFFICIAL" >> ${ROOT}/etc/slapt-get/slapt-getrc
echo "SOURCE=https://slackware.uk/slarm64/slarm64-current/:OFFICIAL" >> ${ROOT}/etc/slapt-get/slapt-getrc
echo "SOURCE=https://storage.googleapis.com/slackpacks.jaos.org/slarm64-15.0/:OFFICIAL" >> ${ROOT}/etc/slapt-get/slapt-getrc
;;
slackware64-14.2)
echo "SOURCE=https://storage.googleapis.com/slackpacks.jaos.org/slackware64-14.2/:OFFICIAL" >> ${ROOT}/etc/slapt-get/slapt-getrc
echo "SOURCE=http://slackware.uk/slackware/slackware64-14.2/:OFFICIAL" >> ${ROOT}/etc/slapt-get/slapt-getrc
;;
slackware-14.2)
echo "SOURCE=https://storage.googleapis.com/slackpacks.jaos.org/slackware-14.2/:OFFICIAL" >> ${ROOT}/etc/slapt-get/slapt-getrc
echo "SOURCE=http://slackware.uk/slackware/slackware-14.2/:OFFICIAL" >> ${ROOT}/etc/slapt-get/slapt-getrc
;;
*)
echo "Invalid slackware release ${slackrel}"
exit 1
;;
esac
CLEANUP=
case "${slackrel}" in
*-15.0)
MIN_PKGS=${S150_MIN_PKGS}
SMALL_PKGS=${S150_SMALL_PKGS}
DEV_PKGS=${S150_DEV_PKGS}
;;
*-14.2)
MIN_PKGS=${S142_MIN_PKGS}
SMALL_PKGS=${S142_SMALL_PKGS}
DEV_PKGS=${S142_DEV_PKGS}
;;
esac
case "$imgtype" in
min*)
ROOT=${ROOT} slapt-get -c ${ROOT}/etc/slapt-get/slapt-getrc --update
ROOT=${ROOT} slapt-get -c ${ROOT}/etc/slapt-get/slapt-getrc --install ${MIN_PKGS}
CLEANUP="binutils perl openssl"
;;
small)
ROOT=${ROOT} slapt-get -c ${ROOT}/etc/slapt-get/slapt-getrc --update
ROOT=${ROOT} slapt-get -c ${ROOT}/etc/slapt-get/slapt-getrc --install ${MIN_PKGS} ${SMALL_PKGS}
CLEANUP="binutils openssl"
;;
dev)
ROOT=${ROOT} slapt-get -c ${ROOT}/etc/slapt-get/slapt-getrc --update
ROOT=${ROOT} slapt-get -c ${ROOT}/etc/slapt-get/slapt-getrc --install ${MIN_PKGS} ${SMALL_PKGS} ${DEV_PKGS}
pushd $ROOT/srv && for r in slapt-get slapt-src gslapt cpan2tgz slapt-update-service;do git clone "https://software.jaos.org/git/${r}" || true;done; popd
;;
*)
echo "Invalid slackware image type ${imgtype}"
exit 1
;;
esac
if [ -d $ROOT/lib64 ]; then
if [ ! -e $ROOT/lib64/libdl.so.2 ]; then pushd $ROOT/lib64; ln -s libdl-*.so libdl.so.2 ;popd;fi
if [ ! -e $ROOT/lib64/libc.so.6 ]; then pushd $ROOT/lib64; ln -s libc-*.so libc.so.6; popd;fi
else
if [ ! -e $ROOT/lib/libdl.so.2 ]; then pushd $ROOT/lib; ln -s libdl-*.so libdl.so.2 ;popd;fi
if [ ! -e $ROOT/lib/libc.so.6 ]; then pushd $ROOT/lib; ln -s libc-*.so libc.so.6; popd;fi
fi
chroot $ROOT ldconfig
chroot $ROOT /bin/bash -c "LANG=C /usr/sbin/update-ca-certificates" || true
chroot $ROOT /bin/bash -c "cd /etc/ssl/certs; LANG=C /usr/bin/perl /usr/bin/c_rehash . " || true
chroot $ROOT /bin/bash -c "/usr/bin/update-mime-database /usr/share/mime" || true
#chroot $ROOT /bin/bash -c "/usr/bin/gdk-pixbuf-query-loaders \$(dirname \$(find /usr/lib/gdk-pixbuf* /usr/lib64/gdk-pixbuf* -type d -name loaders 2>/dev/null))/loaders.cache" || true
chroot $ROOT /bin/bash -c "/usr/bin/gdk-pixbuf-query-loaders \$(pkg-config --variable=gdk_pixbuf_moduledir gdk-pixbuf-2.0).cache" || true
#echo "update-mime-database /usr/share/mime 2>/dev/null || true" >> ${ROOT}/etc/profile.d/jaos.sh
#echo "gdk-pixbuf-query-loaders 2>/dev/null > \$(dirname \$(find /usr/lib/gdk-pixbuf* /usr/lib64/gdk-pixbuf* -type d -name loaders 2>/dev/null))/loaders.cache || true" >> ${ROOT}/etc/profile.d/jaos.sh
#chmod +x ${ROOT}/etc/profile.d/jaos.sh
if [[ ${CLEANUP} ]]; then
ROOT=${ROOT} slapt-get -c ${ROOT}/etc/slapt-get/slapt-getrc --remove --no-dep -y ${CLEANUP} &>/dev/null
fi
sed -i -re "s|$ROOT||" ${ROOT}/etc/slapt-get/slapt-getrc
rm -rf ${ROOT}/var/cache/slapt-get
pushd ${ROOT}/root && ln -s ../etc/profile .bashrc; popd
echo 'echo "To get started, run: slapt-get --add-keys && slapt-get --update"' > ${ROOT}/etc/profile.d/getstarted.sh
chmod +x ${ROOT}/etc/profile.d/getstarted.sh
pushd ${ROOT} && tar cf $OUT/${slackrel}-${imgtype}.tar *; popd
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment