#!/bin/sh -e # Create/destroy temporary chroots log() { printf '\033[31;1m->\033[m %s.\n' "$@" } die() { rm -f kiss-chroot.tar.xz kiss-chroot.tar.xz.sha256 log "$@" log "Re-run 'kiss-chbuild' to try again." exit 1 } sh256() { # There's no standard utility to generate sha256 checksums. # This is a simple wrapper around sha256sum, sha256, shasum # and openssl which will use whatever is available. # # All utilities must match 'sha256sum' output. # # Example: ' ' [ -e "$1" ] || return 0 hash=$(sha256sum "$1" || sha256 -r "$1" || openssl dgst -sha256 -r "$1" || shasum -a 256 "$1") printf '%s %s\n' "${hash%% *}" "$1" } 2>/dev/null cd "${cac_dir:=$KISS_ROOT${XDG_CACHE_HOME:-$HOME/.cache}/kiss}" url=https://github.com/kisslinux/repo/releases/download/1.10.0/ [ -f kiss-chroot.tar.xz ] || { log "Downloading chroot tarball" curl -OL "$url/kiss-chroot.tar.xz" || die "Failed to download kiss-chroot.tar.xz" } [ -f kiss-chroot.tar.xz.sha256 ] || { log "Downloading checksums" curl -OL "$url/kiss-chroot.tar.xz.sha256" || die "Failed to download kiss-chroot.tar.xz.sha256" } log "Verifying checksums" sh256 kiss-chroot.tar.xz | diff - kiss-chroot.tar.xz.sha256 || die "Checksum verification failed." [ -d kiss-chroot ] || { log "Extracting chroot" tar xf kiss-chroot.tar.xz || die "Failed to extract tarball" } log "Creating temporary chroot" cp -a kiss-chroot "chroot-$$" log "Installing any arguments" [ ! "$1" ] || KISS_ROOT=$PWD/chroot-$$ kiss i "$@" log "Entering chroot" su -c "kiss-chroot chroot-$$; rm -rf chroot-$$"