tvarious fixes for smooth operation - libdevuansdk - common library for devuan's simple distro kits (HTM) git clone https://git.parazyd.org/libdevuansdk (DIR) Log (DIR) Files (DIR) Refs (DIR) Submodules (DIR) README (DIR) LICENSE --- (DIR) commit 044eb279e137c9e1f5d34d97c4671140d9cd0c38 (DIR) parent 651c477dbf580393556a8dd8d55b45795b56aa68 (HTM) Author: Jaromil <jaromil@dyne.org> Date: Wed, 8 Jun 2016 16:48:46 +0200 various fixes for smooth operation also translatable string formatting Diffstat: M config | 8 +++++++- M libdevuansdk | 13 ++++++++++--- M zlibs/debootstrap | 35 ++++++++++++++++++++++--------- M zlibs/helpers | 6 +++--- 4 files changed, 45 insertions(+), 17 deletions(-) --- (DIR) diff --git a/config b/config t@@ -38,6 +38,7 @@ mirror="http://packages.devuan.org/merged" # mirror repo section section="main" + # core packages for the system core_packages=(devuan-keyring debian-keyring) core_packages+=(git-core binutils ca-certificates curl) t@@ -50,5 +51,10 @@ base_packages=(bzip2 dialog apt-utils fakeroot e2fsprogs parted) system_packages=(sysvinit ssh) ## libdevuansdk-specific settings -workdir="$R/workdir" +workdir="$H/workdir" strapdir="${workdir}/strapdir" + + +# declare zuper globals +vars+=(os release version mirror section) +vars+=(workdir strapdir) (DIR) diff --git a/libdevuansdk b/libdevuansdk t@@ -23,12 +23,16 @@ devuan_sdk_version=0.1 +setopt pushdsilent + +SDK_PREFIX=`pwd` +SDK_HOME=`pwd` +SDK_CONF=`pwd` + R=${SDK_PREFIX:-/usr/local/devuan-sdk} H=${SDK_HOME:-$HOME/.devuan-sdk} E=${SDK_CONF:-/etc/devuan-sdk} -R=`pwd` # NOTE: for development - [[ -r $R ]] || { print "Devuan SDK is not installed in: $R" print "export SDK_PREFIX if installed on a different path" t@@ -50,7 +54,7 @@ LOG=${LOG:-""} vars+=(R H E) # source $R/zlibs/library -source $R/config +source $E/config source $R/zlibs/debootstrap source $R/zlibs/helpers source $R/zlibs/sysconf t@@ -68,6 +72,9 @@ rehash # For gettext TEXTDOMAIN=devuan +# create mandatory workdirs +mkdir -p ${strapdir} + notice "Loading Devuan SDK library v$devuan_sdk_version" # ... (DIR) diff --git a/zlibs/debootstrap b/zlibs/debootstrap t@@ -23,17 +23,21 @@ ## Debootstrap things +vars+=(bootstrap_tgz) + bootstrap() { fn bootstrap $@ arch="$1" req=(os strapdir workdir arch release mirror) ckreq || return 1 - notice "Bootstrapping ${os} base" + notice "Bootstrapping ::1 OS:: base" ${os} - mkdir -p ${strapdir} + bootstrap_tgz=$H/tmp/${os}-${arch}.tgz - if [[ -f $R/tmp/${os}-${arch}.tgz ]]; then + if [[ -f $bootstrap_tgz ]]; then + notice "Using the existing bootstrap tarball found in ::1 tmpdir::" $H/tmp + ls -lh $bootstrap_tgz tar_unpack ${strapdir} else # Debootstrap stage 1 t@@ -123,23 +127,34 @@ EOF tar_bootstrap() { fn tar_bootstrap + req=(bootstrap_tgz) + ckreq || return 1 - if [[ -f $R/tmp/${os}-${arch}.tgz ]]; then - return 0 + local _dest=`dirname $bootstrap_tgz` + + if [[ -f $bootstrap_tgz ]]; then + act "tarball found already in ::1 dir::" $_dest else + notice "Creating boostrap tarball in ::1 tgz::" $bootstrap_tgz pushd ${strapdir} - tar czf ${os}-${arch}.tgz ./* - mkdir -p $R/tmp - mv ${os}-${arch}.tgz $R/tmp/ + mkdir -p ${_dest} + escalate root "tar czf $bootstrap_tgz . --exclude=dev,sys,proc" popd fi + ls -lh $bootstrap_tgz + } tar_unpack() { fn tar_unpack $@ local unpath="$1" - req=(unpath) + req=(unpath bootstrap_tgz) ckreq || return 1 - tar xf $R/tmp/${os}-${arch}.tgz -C ${unpath} + [[ -r ${unpath}/bin/bash ]] && { + warning "bootstrap already unpacked in ::1 dir::" $unpath + return 1 } + + mkdir -p ${unpath} + tar xf $bootstrap_tgz -C ${unpath} } (DIR) diff --git a/zlibs/helpers b/zlibs/helpers t@@ -30,10 +30,10 @@ escalate() { req=(user cmnd) ckreq || return 1 - if [[ `command -v sudo` ]]; then - sudo -E -u ${user} ${cmnd} + if isfound sudo; then + sudo -E -u ${user} ${=cmnd} else - su -c ${cmnd} ${user} + su -c "${=cmnd}" ${user} fi }