From f002c12258492bf20d5aef25c68de59b3fdb4500 Mon Sep 17 00:00:00 2001 From: parazyd Date: Tue, 14 Feb 2017 20:03:12 +0100 Subject: [PATCH] refresh libdevuansdk code --- README.md | 2 +- config | 16 ++++++------- libdevuansdk | 15 +++--------- zlibs/bootstrap | 64 ++++++++++++++++--------------------------------- zlibs/helpers | 18 +++++++------- zlibs/imaging | 18 ++++++-------- zlibs/iso | 13 +++++----- zlibs/kernel | 6 ++--- zlibs/rsync | 2 +- zlibs/sysconf | 2 +- zlibs/vm | 27 +++++++++------------ 11 files changed, 68 insertions(+), 115 deletions(-) diff --git a/README.md b/README.md index 3f0dcd7..3e7c53e 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ Devuan's SDK was originally conceived during a period of residency at the Schumacher college in Dartington, UK. Greatly inspired by the laborious and mindful atmosphere of its wonderful premises. -The Devuan SDK is Copyright (c) 2015-2016 by the Dyne.org Foundation +The Devuan SDK is Copyright (c) 2015-2017 by the Dyne.org Foundation Devuan SDK components are designed, written and maintained by: diff --git a/config b/config index eeec0ba..c57d377 100644 --- a/config +++ b/config @@ -1,5 +1,5 @@ #!/usr/bin/env zsh -# Copyright (c) 2016 Dyne.org Foundation +# Copyright (c) 2016-2017 Dyne.org Foundation # libdevuansdk is maintained by Ivan J. # # This file is part of libdevuansdk @@ -19,7 +19,7 @@ ## libdevuansdk configuration -vars+=(release version mirror section blend_name) +vars+=(release version mirror section blend_name image_name vm_name) arrs+=(core_packages base_packages purge_packages blend_packages) os="devuan" @@ -28,12 +28,15 @@ version="1.0.0-beta2" mirror="http://auto.mirror.devuan.org/merged" section="main" -isomirror="http://files.devuan.org/devuan_jessie_beta" - image_name="${os}_${release}_${version}_${arch}" [[ -n $blend_name ]] && image_name="${image_name}_${blend_name}" [[ -n $device_name ]] && image_name="${image_name}_${device_name}" +vm_name="${os}_${release}_${version}_${arch}_vagrant" +[[ -n $blend_name ]] && vm_name="${image_name}_${blend_name}" + +rootcredentials="root:toor" + core_packages=( devuan-keyring debian-keyring @@ -73,9 +76,4 @@ base_packages=( purge_packages+=( dbus - nano - exim4 - exim4-base - exim4-config - reportbug ) diff --git a/libdevuansdk b/libdevuansdk index 73d9a10..1851096 100644 --- a/libdevuansdk +++ b/libdevuansdk @@ -1,5 +1,5 @@ #!/usr/bin/env zsh -# Copyright (c) 2016 Dyne.org Foundation +# Copyright (c) 2016-2017 Dyne.org Foundation # libdevuansdk maintained by Ivan J. # # This file is part of libdevuansdk @@ -17,7 +17,7 @@ # You should have received a copy of the GNU General Public License # along with this source code. If not, see . -libdevuansdk_version="0.3" +libdevuansdk_version="0.4" LIBPATH=${LIBPATH:-$(dirname $0)} source $LIBPATH/config @@ -33,15 +33,6 @@ source $LIBPATH/zlibs/vm vars+=(libdevuansdk_version) vars+=(LIBPATH) -if [[ $DEBUG -gt 0 ]]; then - cp="/bin/cp -v" - mkdir="/bin/mkdir -v" -else - cp="/bin/cp" - mkdir="/bin/mkdir" - setopt pushdsilent -fi - -sudo="sudo -E" +setopt pushdsilent act "libdevuansdk v$libdevuansdk_version loaded" diff --git a/zlibs/bootstrap b/zlibs/bootstrap index f1a70d2..b772888 100644 --- a/zlibs/bootstrap +++ b/zlibs/bootstrap @@ -1,5 +1,5 @@ #!/usr/bin/env zsh -# Copyright (c) 2016 Dyne.org Foundation +# Copyright (c) 2016-2017 Dyne.org Foundation # libdevuansdk maintained by Ivan J. # # This file is part of libdevuansdk @@ -52,18 +52,17 @@ bootstrap_complete_base() { ## write all system configuration notice "writing system configuration" - conf_print_debconf | sudo tee $strapdir/debconf.set >/dev/null - conf_print_fstab | sudo tee $strapdir/etc/fstab >/dev/null - conf_print_hostname | sudo tee $strapdir/etc/hostname >/dev/null - conf_print_hosts | sudo tee $strapdir/etc/hosts >/dev/null - conf_print_networkifaces | sudo tee $strapdir/etc/network/interfaces >/dev/null - conf_print_resolvconf | sudo tee $strapdir/etc/resolv.conf >/dev/null - conf_print_sourceslist | sudo tee $strapdir/etc/apt/sources.list >/dev/null - conf_print_locales | sudo tee $strapdir/etc/profile.d/locales.sh >/dev/null + conf_print_debconf | sudo tee $strapdir/debconf.set >/dev/null + conf_print_fstab | sudo tee $strapdir/etc/fstab >/dev/null + conf_print_hostname | sudo tee $strapdir/etc/hostname >/dev/null + conf_print_hosts | sudo tee $strapdir/etc/hosts >/dev/null + conf_print_netifaces | sudo tee $strapdir/etc/network/interfaces >/dev/null + conf_print_resolvconf | sudo tee $strapdir/etc/resolv.conf >/dev/null + conf_print_sourceslist | sudo tee $strapdir/etc/apt/sources.list >/dev/null + conf_print_locales | sudo tee $strapdir/etc/profile.d/locales.sh >/dev/null ## write third-stage for chroot bootstrap_config_thirdstage | sudo tee $strapdir/thirdstage >/dev/null - bootstrap_config_cleanup | sudo tee $strapdir/cleanup >/dev/null ## chroot into it and configure further ## debootstrap stage 3 @@ -72,7 +71,6 @@ bootstrap_complete_base() { devprocsys mount $strapdir || zerr chroot-script -d thirdstage || zerr - chroot-script -d cleanup || zerr sleep 1 devprocsys umount $strapdir || zerr @@ -81,22 +79,6 @@ bootstrap_complete_base() { bootstrap_tar_unpack $strapdir || zerr } -bootstrap_config_cleanup() { - fn config_cleanup - - cat << EOF -#!/bin/sh -rm -f /debconf.set -rm -f /thirdstage -rm -f /etc/ssh/ssh_host_* -rm -f /root/.bash_history -#rm -f /usr/bin/qemu-arm-static -## our file for which we check the bootstrap is complete -echo "1" > .done -rm -f /cleanup -EOF -} - bootstrap_config_thirdstage() { fn bootstrap_config_thirdstage req=(core_packages base_packages) @@ -107,7 +89,7 @@ bootstrap_config_thirdstage() { apt-get update debconf-set-selections /debconf.set -echo "root:toor" | chpasswd +echo "${rootcredentials}" | chpasswd sed -i -e 's/KERNEL\!=\"eth\*|/KERNEL\!=\"/' \ /lib/udev/rules.d/75-persistent-net-generator.rules rm -f /etc/udev/rules.d/70-persistent-net.rules @@ -118,6 +100,11 @@ apt-get --yes --force-yes install ${base_packages} apt-get --yes --force-yes purge ${purge_packages} apt-get --yes --force-yes autoremove apt-get clean + +rm -f /debconf.set +rm -f /etc/ssh/ssh_host_* +rm -f /root/.bash_history +echo "1" > .keep EOF } @@ -126,19 +113,6 @@ bootstrap_tar_pack() { req=(bootstrap_tgz) ckreq || return 1 - #for i in $custmodules;do sudo sed -i -e '/'$i'/d' $strapdir/etc/modules;done - #[[ -n $inittab ]] && sudo sed -i -e '/'$inittab'/d' $strapdir/etc/inittab - - cat </dev/null -#!/bin/sh -#apt-get --yes --force-yes purge ${extra_packages} -apt-get --yes --force-yes autoremove -apt-get clean -rm -f /prepack -EOF - - chroot-script prepack || zerr - local _dest=$(dirname $bootstrap_tgz) if [[ -f $bootstrap_tgz ]]; then @@ -163,12 +137,15 @@ bootstrap_tar_unpack() { req=(unpath bootstrap_tgz) ckreq || return 1 - [[ -f ${unpath}/.done ]] || { + if [[ -f ${unpath}/.keep ]]; then mkdir -p ${unpath} silly sudo tar xfp $bootstrap_tgz -C ${unpath} sudo mkdir -p ${unpath}/{boot,dev,sys,proc} - } + else + error "no .keep file found. exiting..." + zerr + fi cat </dev/null #!/bin/sh @@ -177,7 +154,6 @@ apt-get --yes --force-yes upgrade apt-get --yes --force-yes install ${extra_packages} apt-get --yes --force-yes autoremove apt-get clean -rm -f /postunpack EOF devprocsys mount $strapdir diff --git a/zlibs/helpers b/zlibs/helpers index 8dbf885..857b559 100644 --- a/zlibs/helpers +++ b/zlibs/helpers @@ -51,6 +51,7 @@ build_iso_dist() { ckreq || return 1 notice "building complete iso image" + ## XXX: TODO: upstream existing heads code bootstrap_complete_base || zerr [[ $BLEND = 1 ]] && blend_preinst || zerr @@ -85,10 +86,7 @@ build_vagrant_dist() { getfield() { fn getfield $* - - echo "$1" | grep "^$2=" | \ - sed -e 's:.*=\(.*\)$:\1:g' | \ - sed -e 's:^"\(.*\)"$:\1:g' + print "$1" | grep "^$2=" | sed -e 's:.*=\(.*\)$:\1:g' | sed -e 's:^"\(.*\)"$:\1:g' } devprocsys() { @@ -154,7 +152,6 @@ dpkg-divert --add --local \ cp /bin/true /usr/sbin/invoke-rc.d echo -e "#!/bin/sh\nexit 101" > /usr/sbin/policy-rc.d chmod +x /usr/sbin/policy-rc.d -rm -f /dpkgdivert EOF elif [[ $watdo = off ]]; then cat </dev/null @@ -162,7 +159,6 @@ EOF rm -f /usr/sbin/policy-rc.d rm -f /usr/sbin/invoke-rc.d dpkg-divert --remove --rename /usr/sbin/invoke-rc.d -rm -f /dpkgdivert EOF fi @@ -205,7 +201,7 @@ install-custdebs() { ckreq || return 1 sudo mkdir -p $strapdir/debs - sudo ${=cp} $R/extra/custom-packages/*.deb $strapdir/debs/ + sudo cp $R/extra/custom-packages/*.deb $strapdir/debs/ cat </dev/null #!/bin/sh @@ -215,7 +211,7 @@ for deb in /debs/*.deb; do done apt-get autoremove apt-get clean -rm -rf /debs install-debs +rm -rf /debs EOF chroot-script install-debs } @@ -228,17 +224,19 @@ chroot-script() { local script="$2" dpkgdivert on "$strapdir" notice "chrooting to execute $script..." - sudo -E chmod +x "$strapdir/$script" || zerr + sudo chmod +x "$strapdir/$script" || zerr sudo -E chroot "$strapdir" "/$script" || zerr dpkgdivert off "$strapdir" ;; *) local script="$1" notice "chrooting to execute $script..." - sudo -E chmod +x "$strapdir/$script" || zerr + sudochmod +x "$strapdir/$script" || zerr sudo -E chroot "$strapdir" "/$script" || zerr ;; esac + + sudo rm -f $strapdir/$script } silly() { diff --git a/zlibs/imaging b/zlibs/imaging index 6e1bc2a..6b05777 100644 --- a/zlibs/imaging +++ b/zlibs/imaging @@ -1,5 +1,5 @@ #!/usr/bin/env zsh -# Copyright (c) 2016 Dyne.org Foundation +# Copyright (c) 2016-2017 Dyne.org Foundation # libdevuansdk is maintained by Ivan J. # # This file is part of libdevuansdk @@ -132,10 +132,6 @@ image_raw_mount() { req=(workdir bootpart rootpart) ckreq || return 1 - #mkdir -p $workdir/boot $workdir/root - #sudo mount $bootpart $workdir/boot && act "mounted boot partition" || zerr - #sudo mount $rootpart $workdir/root && act "mounted root partition" || zerr - mkdir -p $workdir/mnt sudo mount $rootpart $workdir/mnt && act "mounted root partition" || zerr sudo mkdir $workdir/mnt/boot @@ -160,14 +156,14 @@ image_raw_as_strapdir() { pushd "$workdir" notice "creating raw image of $size MB" - sudo -E rm -f base.raw - sudo -E qemu-img create -f raw base.raw ${size}M + sudo rm -f base.raw + sudo qemu-img create -f raw base.raw ${size}M || zerr notice "partitioning" - sudo -E parted base.raw mktable msdos - sudo -E parted base.raw mkpart primary '0%' '100%' + sudo parted base.raw mktable msdos || zerr + sudo parted base.raw mkpart primary '0%' '100%' || zerr loopdevice=$(losetup --find) - sudo -E losetup -P $loopdevice base.raw - sudo -E mkfs.ext4 ${loopdevice}p1 + sudo losetup -P $loopdevice base.raw || zerr + sudo mkfs.ext4 ${loopdevice}p1 || zerr notice "mounting raw image to strapdir" sudo mount ${loopdevice}p1 $strapdir diff --git a/zlibs/iso b/zlibs/iso index c6db28c..097ee45 100644 --- a/zlibs/iso +++ b/zlibs/iso @@ -1,5 +1,5 @@ #!/usr/bin/env zsh -# Copyright (c) 2016 Dyne.org Foundation +# Copyright (c) 2016-2017 Dyne.org Foundation # libdevuansdk is maintained by Ivan J. # # This file is part of libdevuansdk @@ -34,7 +34,6 @@ apt-get update apt-get --yes --force-yes install dialog live-boot apt-get --yes --force-yes autoremove apt-get clean -rm -f /isoprep EOF chroot-script -d isoprep || zerr @@ -50,12 +49,12 @@ iso_setup_isolinux() { pushd $workdir sudo mkdir -p binary/{live,isolinux} act "copying kernel and initrd" - sudo ${=cp} $strapdir/boot/vmlinuz* binary/live/vmlinuz - sudo ${=cp} $strapdir/boot/initrd* binary/live/initrd + sudo cp $strapdir/boot/vmlinuz* binary/live/vmlinuz + sudo cp $strapdir/boot/initrd* binary/live/initrd - sudo ${=cp} /usr/share/live/build/bootloaders/isolinux/isolinux.bin \ + sudo cp /usr/share/live/build/bootloaders/isolinux/isolinux.bin \ binary/isolinux - sudo ${=cp} /usr/share/live/build/bootloaders/isolinux/*.c32 \ + sudo cp /usr/share/live/build/bootloaders/isolinux/*.c32 \ binary/isolinux popd } @@ -121,7 +120,7 @@ iso_setup_installer() { fn iso_setup_installer notice "setting up devuan-installer" - sudo ${=cp} $R/extra/installer/* $strapdir/ + sudo cp $R/extra/installer/* $strapdir/ ## TODO: init to script } diff --git a/zlibs/kernel b/zlibs/kernel index fc77f26..a053aab 100644 --- a/zlibs/kernel +++ b/zlibs/kernel @@ -1,5 +1,5 @@ #!/usr/bin/env zsh -# Copyright (c) 2016 Dyne.org Foundation +# Copyright (c) 2016-2017 Dyne.org Foundation # libdevuansdk is maintained by Ivan J. # # This file is part of libdevuansdk @@ -22,7 +22,7 @@ build_kernel_amd64() { fn build_kernel_amd64 req=(strapdir arch) - #freq=($strapdir/.done) + #freq=($strapdir/.keep) ckreq || return 1 local kernel_base="linux-image" @@ -43,7 +43,7 @@ build_kernel_amd64() { build_kernel_i386() { fn build_kernel_i386 req=(strapdir arch) - #freq=($strapdir/.done) + #freq=($strapdir/.keep) ckreq || return 1 local kernel_base="linux-image" diff --git a/zlibs/rsync b/zlibs/rsync index 6d8f90b..12f4c5e 100644 --- a/zlibs/rsync +++ b/zlibs/rsync @@ -1,5 +1,5 @@ #!/usr/bin/env zsh -# Copyright (c) 2016 Dyne.org Foundation +# Copyright (c) 2016-2017 Dyne.org Foundation # libdevuansdk is maintained by Ivan J. # # This file is part of libdevuansdk diff --git a/zlibs/sysconf b/zlibs/sysconf index a49c216..0e242d8 100644 --- a/zlibs/sysconf +++ b/zlibs/sysconf @@ -1,5 +1,5 @@ #!/usr/bin/env zsh -# Copyright (c) 2016 Dyne.org Foundation +# Copyright (c) 2016-2017 Dyne.org Foundation # libdevuansdk is maintained by Ivan J. # # This file is part of libdevuansdk diff --git a/zlibs/vm b/zlibs/vm index 97218d3..4a12171 100644 --- a/zlibs/vm +++ b/zlibs/vm @@ -18,10 +18,6 @@ # along with this source code. If not, see . ## ma baker -# -# deps: -# virtualbox -# qemu-kvm vars+=(vmname) @@ -39,9 +35,9 @@ vm_inject_overrides() { exit 0 EOF - sudo -E chmod +x $strapdir/etc/rc.local + sudo chmod +x $strapdir/etc/rc.local - print "rootfs / rootfs rw 0 0" | sudo -E tee ${strapdir}/etc/fstab >/dev/null + print "rootfs / rootfs rw 0 0" | sudo tee ${strapdir}/etc/fstab >/dev/null sudo sed -i -e 's/without-password/yes/' ${strapdir}/etc/ssh/sshd_config || zerr } @@ -52,7 +48,7 @@ vm_setup_grub() { ckreq || return 1 notice "setting up grub" - cat </dev/null + cat </dev/null #!/bin/sh export DEBIAN_FRONTEND=noninteractive apt-get --yes --force-yes install linux-image-amd64 grub-pc @@ -60,9 +56,7 @@ sed -e 's:GRUB_TIMEOUT=5:GRUB_TIMEOUT=1:' -i /etc/default/grub update-grub grub-install --no-floppy --recheck --modules="biosdisk part_msdos" ${loopdevice} sed -e 's:${loopdevice}p1:/dev/sda1:g' -i /boot/grub/grub.cfg -sync -sync -sync +sync; sync; sync EOF devprocsys mount $strapdir || zerr chroot-script -d setupgrub || zerr @@ -75,7 +69,7 @@ vm_umount_raw() { ckreq || return 1 notice "remounting raw image" - sudo -E mount -o remount,ro $strapdir || zerr + sudo mount -o remount,ro $strapdir || zerr sync notice "flushing bytes and buffers" sudo blockdev --flushbufs $loopdevice || zerr @@ -99,8 +93,8 @@ vm_vbox_setup() { notice "converting raw image to vdi" pushd $workdir - sudo -E qemu-img convert -f raw -O vdi base.raw base.vdi || zerr - sudo -E chown $USER base.vdi || zerr + sudo qemu-img convert -f raw -O vdi base.raw base.vdi || zerr + sudo chown $USER base.vdi || zerr VBoxManage modifyhd base.vdi --type immutable --compact || zerr act "removing old raw image" rm -f base.raw @@ -151,7 +145,7 @@ EOF } EOF notice "actually packaging..." - vagrant package --base "$vmname" --output devuanbox.box --include metadata.json --vagrantfile Vagrantfile || zerr + vagrant package --base "$vmname" --output ${vm_name}.box --include metadata.json --vagrantfile Vagrantfile || zerr popd } @@ -162,10 +156,11 @@ vm_pack_dist() { notice "packing up dist" mkdir -p $R/dist - mv $workdir/devuanbox.box $R/dist/ + mv $workdir/${vm_name}.box $R/dist act "calculating sha256sum..." silly - sha256sum $R/dist/devuanbox.box > $R/dist/devuanbox.box.sha + sha256sum $R/dist/${vm_name}.box > $R/dist/${vm_name}.box.sha + # TODO: XXX: cleanup vagrant/virtualbox leftovers notice "done!" ls -1 $R/dist }