#!/usr/bin/env zsh # Copyright (c) 2016 Dyne.org Foundation # libdevuansdk is maintained by Ivan J. # # This file is part of libdevuansdk # # This source code is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this source code. If not, see . ## helper functions that make your life easier build_image_dist() { fn build_image_dist req=(arch size parted_type) if [[ $parted_type = gpt ]]; then req+=(gpt_boot gpt_root) elif [[ $parted_type = dos ]]; then req+=(parted_root parted_boot) fi req+=(workdir strapdir image_name) ckreq || return 1 notice "building complete dist image" act "$image_name" ## TODO: add blend_prebuild; blend_midbuild; blend_postbuild bootstrap_complete_base || zerr image_prepare_raw || zerr image_partition_raw_${parted_type} || zerr build_kernel_${arch} || zerr rsync_to_raw_image || zerr image_pack_dist || zerr } build_iso_dist() { fn build_iso_dist req=(workdir strapdir os arch) ckreq || return 1 notice "building complete iso image" bootstrap_complete_base || zerr iso_prepare_strap || zerr build_kernel_${arch} || zerr iso_setup_isolinux || zerr iso_write_isolinux_cfg || zerr iso_squash_strap || zerr iso_xorriso_build || zerr } devprocsys() { fn devprocsys "$@" local watdo="$1" local werdo="$2" req=(watdo werdo) ckreq || return 1 if [[ $watdo = mount ]]; then sudo mount -o bind /sys $werdo/sys && act "mounted sys" && \ sudo mount -t proc proc $werdo/proc && act "mounted proc" && \ sudo mount -o bind /dev $werdo/dev && act "mounted dev" && \ sudo mount -o bind /dev/pts $werdo/dev/pts && act "mounted devpts" && \ return 0 elif [[ $watdo = umount ]]; then sudo umount $werdo/dev/pts && act "umounted devpts" && sleep 1 && \ sudo umount $werdo/dev && act "umounted dev" && sleep 1 && \ sudo umount $werdo/proc && act "umounted proc" && sleep 1 && \ sudo umount $werdo/sys && act "umounted sys" && sleep 1 && \ return 0 fi return 1 } findloopmapp() { fn findloopmapp req=(workdir image_name) ckreq || return 1 notice "finding a free loopdevice" loopdevice=$(sudo losetup -f --show $workdir/${image_name}.img) mappdevice=$(sudo kpartx -va $loopdevice | sed -E 's/.*(loop[0-9])p.*/\1/g' | sed 1q) func "loopdevice: $loopdevice" func "mappdevice: $mappdevice" silly sleep 4 } qemu_install_user() { fn qemu_install_user req=(qemu_bin strapdir) ckreq || return 1 notice "installing qemu-user-static" sudo cp $qemu_bin $strapdir/usr/bin } dpkgdivert() { fn dpkgdivert $@ req=(watdo werdo) local watdo="$1" local werdo="$2" ckreq || return 1 if [[ $watdo = on ]]; then cat < /usr/sbin/policy-rc.d chmod +x /usr/sbin/policy-rc.d rm -f /dpkgdivert EOF elif [[ $watdo = off ]]; then cat <