tMerge branch 'next' - 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 cb7edb49bf935aa76fccb4c8021cf1e927f05ba8
 (DIR) parent 5b23dfda98750b7fd69f739a2d160568ab373ba3
 (HTM) Author: parazyd <parazyd@dyne.org>
       Date:   Mon, 25 Sep 2017 12:17:36 +0200
       
       Merge branch 'next'
       
       Diffstat:
         M config                              |       3 ++-
         M zlibs/bootstrap                     |      61 ++++++++++++++++++++-----------
         M zlibs/imaging                       |      22 ++++++++++++++++------
         M zlibs/iso                           |       7 +++----
         M zlibs/sysconf                       |       7 +++++++
         M zlibs/vm                            |       5 ++++-
       
       6 files changed, 72 insertions(+), 33 deletions(-)
       ---
 (DIR) diff --git a/config b/config
       t@@ -73,7 +73,8 @@ base_packages=(
                mawk
                tmux
                screen
       -        openntpd
       +        #openntpd
       +        ntp
                wpasupplicant
                wireless-tools
                elinks
 (DIR) diff --git a/zlibs/bootstrap b/zlibs/bootstrap
       t@@ -17,7 +17,7 @@
        # You should have received a copy of the GNU General Public License
        # along with this source code. If not, see <http://www.gnu.org/licenses/>.
        
       -vars+=(bootstrap_tgz)
       +vars+=(bootstrap_tgz_stage3 bootstrap_tgz_stage4 TAR_STAGE4)
        
        bootstrap_complete_base() {
                fn bootstrap_complete_base "$@"
       t@@ -26,19 +26,31 @@ bootstrap_complete_base() {
        
                notice "bootstrapping $os $arch base"
        
       -        bootstrap_tgz="$R/tmp/bootstrap-${os}-${arch}.tgz"
       -
       -        [[ -f $bootstrap_tgz ]] && {
       -                notice "using the existing bootstrap tarball found in $R/tmp"
       -                bootstrap_tar_unpack $strapdir || { die "failed to extract"; zerr }
       -                return 0
       -        }
       -        notice "running debootstrap stage 1"
       -        ## deboostrap stage 1
                export LANG=C
                export LC_ALL=C
                export DEBIAN_FRONTEND=noninteractive
        
       +        bootstrap_tgz_stage3="$R/tmp/bootstrap-${os}-${arch}-stage3.tgz"
       +        bootstrap_tgz_stage4="$R/tmp/bootstrap-${os}-${arch}-stage4.tgz"
       +
       +        if [[ -n "$TAR_STAGE4" && -f "$bootstrap_tgz_stage4" ]]; then
       +                notice "using the existing stage4 bootstrap tarball found in $R/tmp"
       +                bootstrap_tar_unpack "$bootstrap_tgz_stage4" "$strapdir" || {
       +                        die "failed to extract tarball"
       +                        zerr
       +                }
       +                return
       +        elif [[ -f "$bootstrap_tgz_stage3" ]]; then
       +                notice "using the existing stage3 bootstrap tarball found in $R/tmp"
       +                bootstrap_tar_unpack "$bootstrap_tgz_stage3" "$strapdir" || {
       +                        die "failed to extract tarball"
       +                        zerr
       +                }
       +                return
       +        fi
       +
       +        notice "running debootstrap stage 1"
       +
                sudo -E "$LIBPATH/extra/debootstrap/debootstrap" \
                        --keyring="$LIBPATH/extra/devuan-keyring/keyrings/devuan-archive-keyring.gpg" \
                        --foreign \
       t@@ -85,10 +97,12 @@ EOF
                        chroot-script addcachepubkey || zerr
                }
        
       -        sleep 1
       -
       -        bootstrap_tar_pack             || zerr
       -        bootstrap_tar_unpack $strapdir || zerr
       +        if [[ -n "$TAR_STAGE4" ]]; then
       +                bootstrap_tar_unpack "$bootstrap_tgz_stage4" "$strapdir" || zerr
       +        else
       +                bootstrap_tar_pack   "$bootstrap_tgz_stage3"             || zerr
       +                bootstrap_tar_unpack "$bootstrap_tgz_stage3" "$strapdir" || zerr
       +        fi
        }
        
        bootstrap_config_thirdstage() {
       t@@ -122,6 +136,7 @@ EOF
        bootstrap_tar_pack() {
                fn bootstrap_tar_pack
                req=(bootstrap_tgz)
       +        bootstrap_tgz="$1"
                ckreq || return 1
        
                local _dest=$(dirname $bootstrap_tgz)
       t@@ -144,7 +159,8 @@ bootstrap_tar_pack() {
        
        bootstrap_tar_unpack() {
                fn bootstrap_tar_unpack $@
       -        local unpath="$1"
       +        local bootstrap_tgz="$1"
       +        local unpath="$2"
                req=(unpath bootstrap_tgz)
                ckreq || return 1
        
       t@@ -188,12 +204,15 @@ EOF
        
                chroot-script -d postunpack || zerr
        
       -        ## below typically used in arm-sdk
       -        [[ -n "$inittab" ]] && {
       -                print $inittab | sudo tee -a $strapdir/etc/inittab >/dev/null
       -        }
       +        for i in $inittab; do
       +                grep -q "^$i" $strapdir/etc/inittab && continue
       +                print "$i" | sudo tee -a $strapdir/etc/inittab >/dev/null
       +        done
        
                for i in $custmodules; do
       -                print $i | sudo tee -a $strapdir/etc/modules >/dev/null
       -        done || return 0
       +                grep -q "^$i" $strapdir/etc/modules && continue
       +                print "$i" | sudo tee -a $strapdir/etc/modules >/dev/null
       +        done
       +
       +        [[ -n "$TAR_STAGE4" ]] && bootstrap_tar_pack "$bootstrap_tgz_stage4"
        }
 (DIR) diff --git a/zlibs/imaging b/zlibs/imaging
       t@@ -19,7 +19,8 @@
        
        ## imagine images
        
       -vars+=(image_name bootpart rootpart loopdevice)
       +vars+=(image_name bootpart rootpart loopdevice filesystem)
       +arrs+=(fsargs)
        
        image_prepare_raw() {
                fn image_prepare_raw
       t@@ -115,11 +116,11 @@ image_pack_dist() {
                }
        
                _xz=(xz -zv)
       -        [[ $(command -v pixz) ]] && _xz=pixz
       +        [[ $(command -v pixz) ]] && _xz=(pixz)
                notice "compressing image with $_xz"
                silly
                pushd $workdir
       -        ${xz} "${image_name}.img"
       +        ${=_xz} "${image_name}.img"
        
                notice "generating sha256 for ${image_name}.img.xz"
                sha256sum ${image_name}.img.xz > ${image_name}.img.xz.sha
       t@@ -129,7 +130,7 @@ image_pack_dist() {
                mv -v ${image_name}.img.xz.sha $R/dist/
                popd
        
       -        [[ $DEBUG = 1 ]] || { sudo rm -r $workdir }
       +        [[ $DEBUG = 1 ]] || sudo rm -r $workdir
        
                notice "finished packing $image_name"
                act "find it in $R/dist/"
       t@@ -194,7 +195,10 @@ image_qcow2_as_strapdir() {
        
                pushd "$workdir"
        
       -        notice "creating qcow2 image of $size MB"
       +        # default filesystem fallback to ext4
       +        filesystem=${filesystem:-ext4}
       +
       +        notice "creating qcow2 image of $size MB formatted with $filesystem"
                rm -f base.qcow2
                qemu-img create -f qcow2 base.qcow2 ${size}M     || zerr
                sudo modprobe nbd max_part=8                     || zerr
       t@@ -202,10 +206,16 @@ image_qcow2_as_strapdir() {
                [ -n "$loopdevice" ]                             || zerr
                act "$loopdevice"
                sudo qemu-nbd --connect=${loopdevice} base.qcow2 || zerr
       +
                notice "partitioning"
                sudo parted ${loopdevice} mktable msdos              || zerr
                sudo parted ${loopdevice} mkpart primary '0%' '100%' || zerr
       -        sudo mkfs.ext4 ${loopdevice}p1 || zerr
       +
       +        notice "formatting with $filesystem"
       +        command -v mkfs.${filesystem} >/dev/null || {
       +                error "filesystem tools not found in path: mkfs.${filesystem}"
       +                zerr }
       +        sudo mkfs.${filesystem} ${=fsargs} ${loopdevice}p1 || zerr
        
                notice "mounting qcow2 image to strapdir"
                sudo mount ${loopdevice}p1 $strapdir || zerr
 (DIR) diff --git a/zlibs/iso b/zlibs/iso
       t@@ -103,13 +103,12 @@ iso_squash_strap() {
        
                notice "creating squashfs out of strapdir"
        
       -        [[ -n "$mkefi" ]] && uefi_opt="-Xbcj x86"
       +        [[ -n "$mkefi" ]] && _uefi_opt="-Xbcj x86"
                pushd $workdir
                sudo mksquashfs $strapdir binary/live/filesystem.squashfs \
       -                ${=uefi_opt} \
       -                -noappend -comp xz || zerr
       +                ${=_uefi_opt} -noappend -comp xz || zerr
       +
                popd
       -        unset uefi_opt
        }
        
        iso_xorriso_build() {
 (DIR) diff --git a/zlibs/sysconf b/zlibs/sysconf
       t@@ -117,6 +117,13 @@ conf_print_sourceslist() {
                req=(mirror release section)
                ckreq || return 1
        
       +        [[ $APT_CACHE = 1 ]] && {
       +                cat <<EOF
       +deb file:/mnt ./
       +
       +EOF
       +        }
       +
                cat <<EOF
        deb file:/mnt ./
        
 (DIR) diff --git a/zlibs/vm b/zlibs/vm
       t@@ -40,7 +40,8 @@ EOF
                print "rootfs / rootfs rw 0 0" | sudo tee ${strapdir}/etc/fstab >/dev/null
        
                sudo sed -i ${strapdir}/etc/ssh/sshd_config \
       -                -e 's/without-password/yes/' || zerr
       +                -e 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' \
       +                -e 's/PermitRootLogin without-password/PermitRootLogin yes/'|| zerr
        }
        
        vm_setup_grub() {
       t@@ -54,6 +55,8 @@ vm_setup_grub() {
        export DEBIAN_FRONTEND=noninteractive
        apt-get --yes --force-yes install linux-image-amd64 grub-pc
        sed -e 's:GRUB_TIMEOUT=5:GRUB_TIMEOUT=1:' -i /etc/default/grub
       +sed -e 's:GRUB_CMDLINE_LINUX_DEFAULT=".*":GRUB_CMDLINE_LINUX_DEFAULT="quiet net.ifnames=0":' \
       +        -i /etc/default/grub
        update-grub
        grub-install --no-floppy --recheck --modules="biosdisk part_msdos" \
                ${loopdevice}