This commit is contained in:
parazyd 2017-05-16 15:11:43 +02:00
commit d9e9931830
No known key found for this signature in database
GPG Key ID: F0CB28FCF78637DE
8 changed files with 115 additions and 64 deletions

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "extra/devuan-keyring"]
path = extra/devuan-keyring
url = https://git.devuan.org/devuan-packages/devuan-keyring

2
config
View File

@ -28,7 +28,7 @@ arrs+=(core_packages base_packages purge_packages blend_packages)
os="devuan"
release="jessie"
version="1.0.0-RC"
version="1.0.0-RC2"
mirror="http://auto.mirror.devuan.org/merged"
section="main"

1
extra/devuan-keyring Submodule

@ -0,0 +1 @@
Subproject commit e82213e52259a497db285c59758b9f6a95308060

BIN
zlibs/.helpers.swp Normal file

Binary file not shown.

View File

@ -40,6 +40,7 @@ bootstrap_complete_base() {
export DEBIAN_FRONTEND=noninteractive
sudo -E debootstrap \
--keyring="$LIBPATH/extra/devuan-keyring/keyrings/devuan-archive-keyring.gpg" \
--foreign \
--arch $arch $release $strapdir $mirror || zerr
@ -116,7 +117,7 @@ bootstrap_tar_pack() {
local _dest=$(dirname $bootstrap_tgz)
if [[ -f $bootstrap_tgz ]]; then
act "tarball found already in $_dest"
notice "tarball found already in $_dest"
else
notice "Creating boostrap tarball in $bootstrap_tgz"
silly
@ -138,16 +139,17 @@ bootstrap_tar_unpack() {
ckreq || return 1
if [[ -f "${unpath}/.keep" ]]; then
act "skipping tarball unpack"
else
sudo rm -rf ${unpath}
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
exit 1
fi
conf_print_sourceslist | sudo tee $strapdir/etc/apt/sources.list >/dev/null
cat <<EOF | sudo tee ${strapdir}/postunpack >/dev/null
#!/bin/sh
apt-get update

View File

@ -19,6 +19,8 @@
## helper functions that make my life easier
vars+=(loopdevice)
build_image_dist() {
fn build_image_dist
req=(arch size parted_type)
@ -33,14 +35,14 @@ build_image_dist() {
notice "building complete dist image"
act "$image_name"
bootstrap_complete_base || zerr
blend_preinst || zerr
image_prepare_raw || zerr
image_partition_raw_${parted_type} || zerr
build_kernel_${arch} || zerr
blend_postinst || zerr
rsync_to_raw_image || zerr
image_pack_dist || zerr
bootstrap_complete_base || { zerr; wrapup }
blend_preinst || { zerr; wrapup }
image_prepare_raw || { zerr; wrapup }
image_partition_raw_${parted_type} || { zerr; wrapup }
build_kernel_${arch} || { zerr; wrapup }
blend_postinst || { zerr; wrapup }
rsync_to_raw_image || { zerr; wrapup }
image_pack_dist || { zerr; wrapup }
}
build_iso_dist() {
@ -50,16 +52,16 @@ build_iso_dist() {
notice "building complete iso image"
bootstrap_complete_base || zerr
blend_preinst || zerr
iso_prepare_strap || zerr
build_kernel_${arch} || zerr
iso_setup_isolinux || zerr
iso_write_isolinux_cfg || zerr
bootstrap_complete_base || { zerr; wrapup }
blend_preinst || { zerr; wrapup }
iso_prepare_strap || { zerr; wrapup }
build_kernel_${arch} || { zerr; wrapup }
iso_setup_isolinux || { zerr; wrapup }
iso_write_isolinux_cfg || { zerr; wrapup }
#[[ $INSTALLER = 1 ]] && iso_setup_installer || zerr
blend_postinst || zerr
iso_squash_strap || zerr
iso_xorriso_build || zerr
blend_postinst || { zerr; wrapup }
iso_squash_strap || { zerr; wrapup }
iso_xorriso_build || { zerr; wrapup }
}
build_vagrant_dist() {
@ -69,16 +71,16 @@ build_vagrant_dist() {
notice "building complete vagrant image"
image_${imageformat}_as_strapdir || zerr
bootstrap_complete_base || zerr
vm_inject_overrides || zerr
blend_preinst || zerr
vm_setup_grub || zerr
blend_postinst || zerr
vm_umount_${imageformat} || zerr
vm_vbox_setup || zerr
vm_vagrant_package || zerr
vm_pack_dist || zerr
image_${imageformat}_as_strapdir || { zerr; wrapup }
bootstrap_complete_base || { zerr; wrapup }
vm_inject_overrides || { zerr; wrapup }
blend_preinst || { zerr; wrapup }
vm_setup_grub || { zerr; wrapup }
blend_postinst || { zerr; wrapup }
vm_umount_${imageformat} || { zerr; wrapup }
vm_vbox_setup || { zerr; wrapup }
vm_vagrant_package || { zerr; wrapup }
vm_pack_dist || { zerr; wrapup }
}
getfield() {
@ -120,29 +122,40 @@ devprocsys() {
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 && \
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
wrapup() {
# a hopefully clean exit
fn wrapup
req=(strapdir)
ckreq || {
die "something is very wrong"
die "cleanup yourself, sorry"
exit 1
}
devprocsys umount $strapdir
exit 1
}
findloopdev() {
fn findloopdev
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)
sudo partx -av $loopdevice || zerr
func "loopdevice: $loopdevice"
func "mappdevice: $mappdevice"
silly sleep 2
}

View File

@ -45,12 +45,11 @@ image_partition_raw_dos() {
parted $workdir/${image_name}.img --script -- mkpart primary ${parted_boot}
parted $workdir/${image_name}.img --script -- mkpart primary ${parted_root}
## get loopdevice and mapper device (see ./helpers)
findloopmapp
## get loopdevice (see ./helpers)
findloopdev
mappdevice="/dev/mapper/${mappdevice}"
bootpart=${mappdevice}p1
rootpart=${mappdevice}p2
bootpart=${loopdevice}p1
rootpart=${loopdevice}p2
notice "formatting partitions..."
sudo mkfs.vfat ${bootpart}
@ -77,11 +76,10 @@ image_partition_raw_gpt() {
awk '/Sec GPT table/ {print $1}') - ${gpt_root[1]}) \
-l Root $workdir/${image_name}.img
findloopmapp
findloopdev
mappdevice="/dev/mapper/${mappdevice}"
bootpart=${mappdevice}p1
rootpart=${mappdevice}p2
bootpart="${loopdevice}p1"
rootpart="${loopdevice}p2"
notice "formatting partitions..."
sudo mkfs.ext4 -L rootfs ${rootpart}
@ -89,14 +87,14 @@ image_partition_raw_gpt() {
image_pack_dist() {
fn image_pack_dist
req=(mappdevice loopdevice image_name strapdir workdir)
req=(loopdevice image_name strapdir workdir)
ckreq || return 1
notice "packaging image for dist"
act "rechecking filesystem"
sudo e2fsck -f ${mappdevice}p2
sudo resize2fs ${mappdevice}p2
sudo e2fsck -f ${loopdevice}p2
sudo resize2fs ${loopdevice}p2
sleep 2
@ -105,8 +103,8 @@ image_pack_dist() {
sleep 1
}
sudo kpartx -dv $loopdevice || {
die "kpartx failed to remove $loopdevice"
sudo partx -dv $loopdevice || {
die "partx failed to remove $loopdevice"
zerr
}
sudo losetup -d $loopdevice || {
@ -114,12 +112,12 @@ image_pack_dist() {
zerr
}
_xz="xz -zv"
_xz=(xz -zv)
[[ $(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

View File

@ -52,10 +52,25 @@ iso_setup_isolinux() {
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 \
binary/isolinux || zerr
sudo cp /usr/share/live/build/bootloaders/isolinux/*.c32 \
binary/isolinux || zerr
eval $(cat /etc/os-release)
case "$ID" in
devuan)
sudo cp \
/usr/share/live/build/bootloaders/isolinux/isolinux.bin \
binary/isolinux || zerr
sudo cp /usr/share/live/build/bootloaders/isolinux/*.c32 \
binary/isolinux || zerr
;;
gentoo)
sudo cp \
/usr/share/syslinux/isolinux.bin binary/isolinux || zerr
sudo cp \
/usr/share/syslinux/*.c32 binary/isolinux || zerr
;;
*)
warn "no isolinux has been copied. take care of it yourself"
;;
esac
popd
}
@ -88,10 +103,13 @@ iso_squash_strap() {
notice "creating squashfs out of strapdir"
[[ -n "$mkefi" ]] && uefi_opt="-Xbcj x86"
pushd $workdir
sudo mksquashfs $strapdir binary/live/filesystem.squashfs \
${=uefi_opt} \
-noappend -comp xz || zerr
popd
unset uefi_opt
}
iso_xorriso_build() {
@ -102,10 +120,24 @@ iso_xorriso_build() {
notice "building iso..."
isoname="${image_name}-live.iso"
[[ -n "$mkefi" ]] && {
uefi_opt="-eltorito-alt-boot -e boot/grub/efiboot.img -isohybrid-gpt-basdat -no-emul-boot"
}
eval $(cat /etc/os-release)
case "$ID" in
devuan)
isohybrid=/usr/lib/ISOLINUX/isohdpfx.bin
;;
gentoo)
isohybrid=/usr/share/syslinux/isohdpfx.bin
;;
esac
mkdir -p $R/dist
pushd $workdir
sudo xorriso -as mkisofs -r -J -joliet-long -l \
-isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin \
-isohybrid-mbr $isohybrid \
-partition_offset 16 \
-A "${os} Live - ${arch}" \
-b isolinux/isolinux.bin \
@ -113,9 +145,11 @@ iso_xorriso_build() {
-no-emul-boot \
-boot-load-size 4 \
-boot-info-table \
${=uefi_opt} \
-o $R/dist/$isoname \
binary || zerr
popd
unset uefi_opt
}
iso_setup_installer() {