From 7d87b85861934776759054f81b609b6f5470a177 Mon Sep 17 00:00:00 2001 From: cyteen Date: Sun, 28 Apr 2024 08:21:04 +0100 Subject: [PATCH] Initial commit. Recovered, with untested docker-compose.yml Need to confirm it works as is, before trying more recent releases. --- .env | 23 + .gitattributes | 1 + .gitignore | 31 + .gitmodules | 3 + Dockerfile-e17 | 815 ++++++++++++++ Dockerfile-plain | 38 + Dockerfile-submodule-e17 | 904 +++++++++++++++ Dockerfile-submodule-e17.README | 19 + Dockerfile-test | 330 ++++++ Dockerfile.david | 593 ++++++++++ Dockerfile.markm | 315 ++++++ bin/build-iso.zsh | 65 ++ bin/edit-config-lists.sh | 65 ++ bin/edit-config.sh | 65 ++ bin/edit-config.sh.markm | 18 + bin/fetch-blends.sh | 13 + build-plain.sh | 1 + build.sh | 1 + build_with_submodules.sh | 45 + docker-compose.yml | 24 + extra/syslinux/hdt.c32 | Bin 0 -> 164096 bytes extra/syslinux/isohdpfx.bin | Bin 0 -> 432 bytes extra/syslinux/isolinux.bin | Bin 0 -> 40960 bytes extra/syslinux/ldlinux.c32 | Bin 0 -> 116624 bytes extra/syslinux/libcom32.c32 | Bin 0 -> 182552 bytes extra/syslinux/libutil.c32 | Bin 0 -> 23480 bytes extra/syslinux/vesamenu.c32 | Bin 0 -> 26188 bytes live-sdk | 1 + packages.list | 1416 ++++++++++++++++++++++++ packages.list-ascii | 1817 +++++++++++++++++++++++++++++++ pkgs_auto.list | 1155 ++++++++++++++++++++ pkgs_auto.list-ascii | 279 +++++ pkgs_manual.list | 259 +++++ pkgs_manual.list-ascii | 259 +++++ zshenv | 2 + 35 files changed, 8557 insertions(+) create mode 100644 .env create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 Dockerfile-e17 create mode 100644 Dockerfile-plain create mode 100644 Dockerfile-submodule-e17 create mode 100644 Dockerfile-submodule-e17.README create mode 100644 Dockerfile-test create mode 100644 Dockerfile.david create mode 100644 Dockerfile.markm create mode 100755 bin/build-iso.zsh create mode 100644 bin/edit-config-lists.sh create mode 100755 bin/edit-config.sh create mode 100755 bin/edit-config.sh.markm create mode 100644 bin/fetch-blends.sh create mode 100644 build-plain.sh create mode 100644 build.sh create mode 100644 build_with_submodules.sh create mode 100644 docker-compose.yml create mode 100644 extra/syslinux/hdt.c32 create mode 100644 extra/syslinux/isohdpfx.bin create mode 100644 extra/syslinux/isolinux.bin create mode 100644 extra/syslinux/ldlinux.c32 create mode 100644 extra/syslinux/libcom32.c32 create mode 100644 extra/syslinux/libutil.c32 create mode 100644 extra/syslinux/vesamenu.c32 create mode 160000 live-sdk create mode 100644 packages.list create mode 100644 packages.list-ascii create mode 100644 pkgs_auto.list create mode 100644 pkgs_auto.list-ascii create mode 100644 pkgs_manual.list create mode 100644 pkgs_manual.list-ascii create mode 100644 zshenv diff --git a/.env b/.env new file mode 100644 index 0000000..195f1e3 --- /dev/null +++ b/.env @@ -0,0 +1,23 @@ +# GitLab Credentials +GITLAB_USER=cyteen +GITLAB_URL=git.ring-zero.co.uk +GITLAB_PORT=10022 + +# APT Mirror +APT_MIRROR=https://deb.devuan.org/merged + +# Template and Blend Names +TEMPLATE_NAME=live-zfs-e23 +BLEND_NAME=live-zfs-e24 + +# Release and Blend Version +RELEASE=daedalus +BLEND_VERS=4.0-test-$(date +%Y-%m-%d) + +# Local Git Credentials +GIT_EMAIL_NAME=cyteen +GIT_EMAIL_URL=ring-zero.co.uk +GIT_NAME=Cyteen May + +# SSH Agent Socket (Optional, for passwordless Git operations) +# SSH_AUTH_SOCK=/tmp/ssh-8l3EayCMOhTH/agent.15125 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..a07b157 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +dist/**/*.iso filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..14d3b68 --- /dev/null +++ b/.gitignore @@ -0,0 +1,31 @@ +# Exceptions +!.gitignore +!.gitattributes + +# ignore directories +blends/ +log/ +packages/ +tmp/ + +# ignore binary debian packages +*.deb + +# swap +[._]*.s[a-w][a-z] +[._]s[a-w][a-z] +# session +Session.vim +# temporary +.netrwhist +*~ +# auto-generated tag files +tags + +# Compressed files +*.zip +*.tar +*.gz +*.bz2 +*.rar +*.7z diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..fef696c --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "live-sdk"] + path = live-sdk + url = https://git.ring-zero.co.uk/sdk/live-sdk diff --git a/Dockerfile-e17 b/Dockerfile-e17 new file mode 100644 index 0000000..323b307 --- /dev/null +++ b/Dockerfile-e17 @@ -0,0 +1,815 @@ +# https://dev1galaxy.org/viewtopic.php?id=551 +#FROM devuan:jessie-slim +#FROM devuan:ascii-slim +FROM dyne/devuan:beowulf +ENV DEBIAN_FRONTEND noninteractive + +RUN echo 'Acquire::http { Proxy "http://192.168.1.49:3142"; };' > /etc/apt/apt.conf.d/02proxy +RUN apt-get update && apt-get -y upgrade + +RUN apt-get install -y xorriso squashfs-tools live-boot syslinux-common git zsh debootstrap sudo kpartx xz-utils sudo cgpt parted vim curl sed gawk bsdmainutils rsync slim +RUN apt-get install -y live-build live-config live-config-sysvinit isolinux grub-efi-amd64-bin grub-common dosfstools gnutls-bin +#RUN apt-get install -y kpartx cgpt +#RUN git clone https://git.devuan.org/cyteen/live-sdk +RUN git clone https://git.devuan.org/sdk/live-sdk.git /live-sdk +WORKDIR /live-sdk +#RUN git submodule update --init --recursive --checkout +RUN git pull && git submodule update --init --recursive --checkout + +# sub modules might be behind current libdevuansdk git, if you require a more current version of libdevuansdk clone directly: +#WORKDIR /live-sdk/lib +#RUN rm -rf libdevuansdk +#RUN git clone https://git.devuan.org/sdk/libdevuansdk + +#WORKDIR /live-sdk +# NB now included in the live-sdk if extra does not have a syslinux directory with isolinux.bin +#mkdir -p /live-sdk/extra/syslinux + +# from package live-build +#cp /usr/share/live/build/bootloaders/isolinux/*.c32 /live-sdk/extra/syslinux +#cp /usr/share/live/build/bootloaders/isolinux/isolinux.bin /live-sdk/extra/syslinux + +# from package ISOLINUX +#cp /usr/lib/ISOLINUX/isohdpfx.bin /live-sdk/extra/syslinux + + +ENV USER_NAME "default" +ENV USER_PASS "default" + +ENV ROOT_CRED "root:toor" +ENV USER_CRED "${USER_NAME}:${USER_PASS}" + +ENV DEFAULT_SHELL "/bin/zsh" + +ENV OS "devuan" +ENV ARCH "amd64" +ENV RELEASE "beowulf" +ENV VERSION 2.0.0 +ENV TEMPLATE_NAME "devuan-beowulf-live-e17" +#ENV TEMPLATE_NAME "live-zfs" +ENV BLEND_NAME "live-zfs-e17" +ENV BLEND_VERS "3.0-test-$(date +%Y-%m-%d)" + +#ENV APT_MIRROR "http://192.168.44.47:3142/pkgmaster.devuan.org/merged" +ENV APT_MIRROR "https://deb.devuan.org/merged" +#ENV APT_MIRROR "https://pkgmaster.devuan.org/merged" + +ENV USE_HOOKS "yes" +ENV SECTION "main contrib non-free" +ENV RELEASE_CONF "$BLENDPATH/${release}/config" +ENV IMAGE_NAME "${OS}_${RELEASE}_${VERSION}_${ARCH}_desktop" +ENV BASE_PACKAGES_OPTION "--no-install-recommends" +ENV EXTRA_PACKAGES_OPTION "--no-install-recommends" + +ENV SOURCES_LIST "${BLENDPATH}/sources.list" +ENV MANUAL_LIST "${BLENDPATH}/manual.list" +ENV AUTO_LIST "${BLENDPATH}/auto.list" + +COPY ./live-sdk/blends/${TEMPLATE_NAME} /live-sdk/blends/${BLEND_NAME} +RUN mv /live-sdk/blends/${BLEND_NAME}/${TEMPLATE_NAME}.blend /live-sdk/blends/${BLEND_NAME}/${BLEND_NAME}.blend + +# Set locale - in bootstrap: sed -e 's/# en_US.UTF-8/en_US.UTF-8/' -i /etc/locale.gen +# Put the second line under the first or add an extra var and change the bootstrap to use that +# rather than hardcoded. +#sed -e 's/# en_US.UTF-8/en_US.UTF-8/' -i /etc/locale.gen -i live-sdk/lib/libdevuansdk/zlibs/bootstrap +#sed -e 's/# en_GB.UTF-8/en_GB.UTF-8/' -i /etc/locale.gen -i live-sdk/lib/libdevuansdk/zlibs/bootstrap + +# Enable/disable UEFI - Currently code checks to see if the $mkefi is set not if it is yes or no and turning it off breaks the xorriso build options. +ENV MKEFI "no" +ENV GRUB_VER "grub-pc" +ENV EFI_WORK "" +#RUN sed -i "s,^\(mkefi=\).*,\1\"${MKEFI}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i "s,^\(efi_work=\).*,\1\"${EFI_WORK}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i '/^mkefi=/s/^/# /' /live-sdk/blends/${BLEND_NAME}/config + +#ENV MKEFI "yes" +#ENV GRUB_VER "grub-efi-amd64" +#ENV EFI_WORK "${BLENDPATH}/efi-files" +#RUN sed -i '/# mkefi=/s/# /^/' /live-sdk/blends/${BLEND_NAME}/config + +#WORKDIR /live-sdk/blends/ +#RUN git clone https://git.devuan.org/cyteen/blends/live-zfs +#RUN git checkout -b ${BLEND_NAME} + +## Once working and building push to git +#RUN git push origin ${BLEND_NAME} + + +WORKDIR /live-sdk +# Add the new blend to the sdk blend_map so we can build it. +RUN sed -i "/blend_map=.*/ s/.*/&\n\t\t\"${BLEND_NAME}\" \"\$R\/blends\/${BLEND_NAME}\/${BLEND_NAME}.blend\"/" sdk + +# Add call for sourceslist +#RUN sed -i "/install-custdebs.*/ s/.*/&\n\tinstall-packageslist || zerr/" sdk + +COPY bin/edit-config.sh /live-sdk/edit-config.sh + +# #!/bin/bash +# /live-sdk/edit-config.sh +# +# CONFIG_FILE="${2}" +# declare -A arr +# arr+=( "${1}" ) +# for TARGET_KEY in "${!arr[@]}"; do +# echo "x " ${TARGET_KEY} ${arr[${TARGET_KEY}]} ${CONFIG_FILE} +# if grep -q "^${TARGET_KEY}=" ${CONFIG_FILE}; then +# sed -i "s|^${TARGET_KEY}.*|${TARGET_KEY}=\"${arr[${TARGET_KEY}]}\"|" ${CONFIG_FILE} +# else +# sed -i "/^blend_name=.*/ s|.*|&\n${TARGET_KEY}=\"${arr[${TARGET_KEY}]}\"|" ${CONFIG_FILE} +# fi +# done + +# FIXME: Some settings in the blend config fail to override libdevuansdk/conf we should test setting in blend first to identify which ones are not imported. + +# Construct array for edit-config +# Taken from /live-sdk/lib/libdevuansdk/config +ENV CORE_PACKAGES \ +devuan-keyring \ +debian-keyring \ +ca-certificates \ +initramfs-tools \ +e2fsprogs \ +curl \ +less \ +vim \ +nano \ +sysvinit \ +"" + +ENV EXTRA_PACKAGES \ +librsvg2-common \ +fonts-quicksand \ +fonts-liberation \ +fonts-symbola \ +xserver-xorg-input-all \ +xserver-xorg-video-all \ +anacron \ +bluetooth \ +iw \ +powertop \ +vim-gtk3 \ +wireless-tools \ +wpasupplicant \ +tasksel \ +xfce4 \ +xfce4-goodies \ +xfce4-power-manager \ +xfce4-terminal \ +atril \ +dbus-x11 \ +hunspell-en-gb \ +hyphen-en-gb \ +mythes-en-us \ +synaptic \ +system-config-printer \ +tango-icon-theme \ +xsane \ +enlightenment \ +terminology \ +libeet-bin \ +libeina-bin \ +rox-filer \ +neovim \ +firmware-atheros \ +firmware-bnx2 \ +firmware-bnx2x \ +firmware-brcm80211 \ +firmware-intelwimax \ +firmware-iwlwifi \ +firmware-libertas \ +firmware-linux-nonfree \ +firmware-misc-nonfree \ +firmware-myricom \ +firmware-netxen \ +firmware-qlogic \ +firmware-ralink \ +firmware-realtek \ +firmware-ti-connectivity \ +firmware-zd1211 \ +sudo \ +yad \ +refractainstaller-gui \ +refractasnapshot-gui \ +linux-headers-amd64 \ +#libreoffice \ +#libreoffice-gtk3 \ +#libreoffice-help-en-gb \ +#mousepad \ +#network-manager-gnome \ +#avahi-daemon \ +#lightdm \ +#quodlibet \ +#lig_t-locker \ +#orca \ +"" + +RUN mkdir -p /live-sdk/blends/${BLEND_NAME}/${RELEASE}/rootfs-overlay/etc && \ + echo spl >> /live-sdk/blends/${BLEND_NAME}/${RELEASE}/rootfs-overlay/etc/modules && \ + echo zfs >> /live-sdk/blends/${BLEND_NAME}/${RELEASE}/rootfs-overlay/etc/modules + +ENV BASE_PACKAGES \ +apt-utils \ +openrc \ +dselect \ +parted \ +openssh-server \ +openssh-client \ +sudo \ +alsa-utils \ +mawk \ +tmux \ +screen \ +ntp \ +wpasupplicant \ +wireless-tools \ +elinks \ +firmware-linux-free \ +btrfs-progs \ +zsh \ +rsync \ +git \ +mlocate \ +libbullet2.87 \ +libgif7 \ +libgles2 \ +libibus-1.0-5 \ +libpoppler-cpp0v5 \ +libscim8v5 \ +libxcb-xkb1 \ +libxkbcommon-x11-0 \ +libbluetooth3 \ +#virtualbox-guest-additions-iso \ +#qemu-guest-agent \ +#cloud-guest-utils \ +#openntpd \ +"" + +ENV PURGE_PACKAGES \ +apparmor \ +apparmor-utils \ +auditd \ +apparmor-profiles \ +apparmor-profiles-extra \ +avahi-daemon \ +avahi-autoipd \ +libavahi-common-data \ +libavahi-common3 \ +libavahi-glib1 \ +libavahi-client3 \ +cups-browsed \ +gvfs-daemon \ +libpam-gnome-keyring \ +pulseaudio \ +pulseaudio-utils \ +libpulsedsp \ +xscreensaver \ +xscreensaver-data \ +"" + + + +## instalation order is important +ENV CUSTOM_DEB_PACKAGES \ +bluealsa_2.1.0-1_amd64.deb \ +checkinstall_1.6.2+git20170426.d24a630-2_amd64.deb \ +dissenter-browser_0.70.122_amd64.deb \ +libupnp6_1.6.19+git20160116-1.2_amd64.deb \ +djmount_0.71-7.1_amd64.deb \ +shellcheck_0.7.0-2~bpo10+1_amd64.deb \ +torbrowser-launcher_0.3.2-7_amd64.deb \ +#efl-doc_1.23.3-5_all.deb \ +#libecore1_1.23.3-5_amd64.deb \ +#libecore-bin_1.23.3-5_amd64.deb \ +#libecore-file1_1.23.3-5_amd64.deb \ +#libeeze1_1.23.3-5_amd64.deb \ +#libeeze-bin_1.23.3-5_amd64.deb \ +#libecore-audio1_1.23.3-5_amd64.deb \ +#libecore-con1_1.23.3-5_amd64.deb \ +#libeina1a_1.23.3-5_amd64.deb \ +#libemile1_1.23.3-5_amd64.deb \ +#libeet1_1.23.3-5_amd64.deb \ +#libector1_1.23.3-5_amd64.deb \ +#libeina-bin_1.23.3-5_amd64.deb \ +#libecore-ipc1_1.23.3-5_amd64.deb \ +#libeio1_1.23.3-5_amd64.deb \ +#libefreet-bin_1.23.3-5_amd64.deb \ +#libembryo-bin_1.23.3-5_amd64.deb \ +#libembryo1_1.23.3-5_amd64.deb \ +#libelua1_1.23.3-5_amd64.deb \ +#libelua-bin_1.23.3-5_amd64.deb \ +#libeolian1_1.23.3-5_amd64.deb \ +#libelocation1_1.23.3-5_amd64.deb \ +#\ +#libecore-fb1_1.23.3-5_amd64.deb \ +#libecore-x1_1.23.3-5_amd64.deb \ +#libevas1-engines-x_1.23.3-5_amd64.deb \ +#libevas1_1.23.3-5_amd64.deb \ +#libecore-evas1_1.23.3-5_amd64.deb \ +#libecore-input1_1.23.3-5_amd64.deb \ +#libelput1_1.23.3-5_amd64.deb \ +#libecore-wl2-1_1.23.3-5_amd64.deb \ +#libecore-drm2-1_1.23.3-5_amd64.deb \ +#\ +#libeet-bin_1.23.3-5_amd64.deb \ +#libelementary-bin_1.23.3-5_amd64.deb \ +#libevas-loaders_1.23.3-5_amd64.deb \ +#libevas1-engines-drm_1.23.3-5_amd64.deb \ +#libevas1-engines-fb_1.23.3-5_amd64.deb \ +#libevas1-engines-wayland_1.23.3-5_amd64.deb \ +#libecore-imf1_1.23.3-5_amd64.deb \ +#libedje-bin_1.23.3-5_amd64.deb \ +#libedje1_1.23.3-5_amd64.deb \ +#\ +#libelementary-data_1.23.3-5_all.deb \ +#libelementary1_1.23.3-5_amd64.deb \ +#libemotion1_1.23.3-5_amd64.deb \ +#libemotion-players_1.23.3-5_amd64.deb \ +#libephysics1_1.23.3-5_amd64.deb \ +#libethumb-client-bin_1.23.3-5_amd64.deb \ +#libethumb-client1_1.23.3-5_amd64.deb \ +#libethumb1_1.23.3-5_amd64.deb \ +#enlightenment-data_0.23.1-1_all.deb \ +#enlightenment_0.23.1-1_amd64.deb \ +#terminology-data_1.6.0-1_all.deb \ +#terminology_1.6.0-1_amd64.deb \ +#\ +#enlightenment-dev_0.23.1-1_amd64.deb \ +#libefl-all-dev_1.23.3-5_amd64.deb \ +\ +#enlightenment-dbgsym_0.23.1-1_amd64.deb \ +#libecore-audio1-dbgsym_1.23.3-5_amd64.deb \ +#libecore-bin-dbgsym_1.23.3-5_amd64.deb \ +#libecore-con1-dbgsym_1.23.3-5_amd64.deb \ +#libecore-drm2-1-dbgsym_1.23.3-5_amd64.deb \ +#libecore-evas1-dbgsym_1.23.3-5_amd64.deb \ +#libecore-fb1-dbgsym_1.23.3-5_amd64.deb \ +#libecore-file1-dbgsym_1.23.3-5_amd64.deb \ +#libecore-imf1-dbgsym_1.23.3-5_amd64.deb \ +#libecore-input1-dbgsym_1.23.3-5_amd64.deb \ +#libecore-ipc1-dbgsym_1.23.3-5_amd64.deb \ +#libecore-wl2-1-dbgsym_1.23.3-5_amd64.deb \ +#libecore-x1-dbgsym_1.23.3-5_amd64.deb \ +#libecore1-dbgsym_1.23.3-5_amd64.deb \ +#libector1-dbgsym_1.23.3-5_amd64.deb \ +#libedje-bin-dbgsym_1.23.3-5_amd64.deb \ +#libedje1-dbgsym_1.23.3-5_amd64.deb \ +#libeet-bin-dbgsym_1.23.3-5_amd64.deb \ +#libeet1-dbgsym_1.23.3-5_amd64.deb \ +#libeeze-bin-dbgsym_1.23.3-5_amd64.deb \ +#libeeze1-dbgsym_1.23.3-5_amd64.deb \ +#libefl-all-dev-dbgsym_1.23.3-5_amd64.deb \ +#libefreet-bin-dbgsym_1.23.3-5_amd64.deb \ +#libefreet1a-dbgsym_1.23.3-5_amd64.deb \ +#libeina-bin-dbgsym_1.23.3-5_amd64.deb \ +#libeina1a-dbgsym_1.23.3-5_amd64.deb \ +#libeio1-dbgsym_1.23.3-5_amd64.deb \ +#libelementary-bin-dbgsym_1.23.3-5_amd64.deb \ +#libelementary1-dbgsym_1.23.3-5_amd64.deb \ +#libelocation1-dbgsym_1.23.3-5_amd64.deb \ +#libelput1-dbgsym_1.23.3-5_amd64.deb \ +#libelua-bin-dbgsym_1.23.3-5_amd64.deb \ +#libelua1-dbgsym_1.23.3-5_amd64.deb \ +#libembryo-bin-dbgsym_1.23.3-5_amd64.deb \ +#libembryo1-dbgsym_1.23.3-5_amd64.deb \ +#libemile1-dbgsym_1.23.3-5_amd64.deb \ +#libemotion-players-dbgsym_1.23.3-5_amd64.deb \ +#libemotion1-dbgsym_1.23.3-5_amd64.deb \ +#libeolian1-dbgsym_1.23.3-5_amd64.deb \ +#libephysics1-dbgsym_1.23.3-5_amd64.deb \ +#libethumb-client-bin-dbgsym_1.23.3-5_amd64.deb \ +#libethumb-client1-dbgsym_1.23.3-5_amd64.deb \ +#libethumb1-dbgsym_1.23.3-5_amd64.deb \ +#libevas-loaders-dbgsym_1.23.3-5_amd64.deb \ +#libevas1-dbgsym_1.23.3-5_amd64.deb \ +#libevas1-engines-drm-dbgsym_1.23.3-5_amd64.deb \ +#libevas1-engines-fb-dbgsym_1.23.3-5_amd64.deb \ +#libevas1-engines-wayland-dbgsym_1.23.3-5_amd64.deb \ +#libevas1-engines-x-dbgsym_1.23.3-5_amd64.deb \ +#terminology-dbgsym_1.6.0-1_amd64.deb \ +"" + +ENV CUSTOM_SCRIPTS \ +001_apt_suggests-recommends.sh \ +001_locales.sh \ +001_resolvconf.sh \ +010_sysctl.sh \ +010_generate-ssh.sh \ +010_apt-get.sh \ +001_system_bell.sh \ +010_saltstack.sh \ +020_console.sh \ +020_zsh_quickstart.sh \ +020_zsh_aliases.d.sh \ +020_lsd.sh \ +020_grc.sh \ +010_alsa.sh \ +020_conky.sh \ +020_djmount.sh \ +020_vim.sh \ +020_meld.sh \ +020_themes.sh \ +020_audacity.sh \ +020_powerline-bash.sh \ +020_fonts.sh \ +020_nanorc.sh \ +020_neovim.sh \ +020_mutt-wizard.sh \ +020_mutt-notmuch.sh \ +020_mutt-khard.sh \ +020_shellcheck.sh \ +020_neofetch_motd.sh \ +020_tmux.sh \ +020_rox-filer.sh \ +020_hexchat.sh \ +020_pidgin.sh \ +020_brave_browser.sh \ +020_slim.sh \ +020_docker.sh \ +020_docker-compose.sh \ +050_wicd.sh \ +050_remove_xscreensaver.sh \ +"" + +ENV FINALIZE_PURGE_PACKAGES \ +"" + +### ## ENV CORE_VALUES " \ +### ## ["core_packages="]=${CORE_PACKAGES[@]} \ +### ## " +### ## +### ## ENV BASE_VALUES " \ +### ## ["base_packages="]=${BASE_PACKAGES[@]} \ +### ## " +### ## +### ## ENV PURGE_VALUES " \ +### ## ["purge_packages="]=${PURGE_PACKAGES[@]} \ +### ## " +### ## +### ## ENV FINALIZE_PURGE_VALUES " \ +### ## ["finalize_purge_packages="]=${FINALIZE_PURGE_PACKAGES[@]} \ +### ## " + +ENV SDK_CONFIG /live-sdk/lib/libdevuansdk/config +ENV BLEND_CONFIG /live-sdk/blends/${BLEND_NAME}/config +ENV BLEND_PACKAGE_CONFIG /live-sdk/blends/${BLEND_NAME}/${RELEASE}/config + +#### # Bash-isms follow, so: +#### SHELL ["/bin/bash", "-c"] +#### +#### # Use sed to insert ..._package sections if missing. The Q42 is a forced exit status. +#### # Assumes the base_package stanza is present. +#### RUN ( \ +#### if $(sed -n -e "/^core_package/ Q42" ${BLEND_CONFIG} ); then sed -i "/^base_packages/ i\core_packages+=(\n)\n" ${BLEND_CONFIG}; fi; \ +#### # if $(sed -n -e "/^extra_package/ Q42" ${BLEND_CONFIG} ); then sed -i "/^base_packages/ i\EXTRA_packages+=(\n)\n" ${BLEND_CONFIG}; fi; \ +#### if $(sed -n -e "/^purge_package/ Q42" ${BLEND_CONFIG} ); then sed -i "/^base_packages/ i\purge_packages+=(\n)\n" ${BLEND_CONFIG}; fi; \ +#### # if $(sed -n -e "/^custom_deb_package/ Q42" ${BLEND_CONFIG} ); then sed -i "/^base_packages/ i\custom_deb_packages+=(\n)\n" ${BLEND_CONFIG}; fi; \ +#### # if $(sed -n -e "/^finalize_purge_package/ Q42" ${BLEND_CONFIG} ); then sed -i "/^base_packages/ i\finalize_purge_packages+=(\n)\n" ${BLEND_CONFIG}; fi; \ +#### # if $(sed -n -e "/^blend_package/ Q42" ${BLEND_CONFIG} ); then sed -i "/^base_packages/ i\blend_packages+=(\n)\n" ${BLEND_CONFIG}; fi; \ +#### # \ +#### # Use sed to replace block of values. \ +#### # This works and is copy/pasteable to a bash shell, but the '[@]' elements are not strictly needed in a Dockerfile. \ +#### # RUN ( \ +#### sed -i \ +#### -e "/^core_packages/,/^)$/ c\core_packages=(\n${CORE_PACKAGES[@]}\n)" \ +#### # -e "/^base_packages/,/^)$/ c\base_packages=(\n${BASE_PACKAGES[@]}\n)" \ +#### # -e "/^extra_packages/,/^)$/ i\extra_packages+=(\n${EXTRA_PACKAGES[@]}\n);Q" \ +#### -e "/^purge_packages/,/^)$/ c\purge_packages+=(\n${PURGE_PACKAGES[@]}\n)" \ +#### # -e "/^custom_deb_packages/,/^)$/ c\custom_deb_packages+=(\n${CUSTOM_DEB_PACKAGES[@]}\n)" \ +#### # -e "/^finalize_purge_packages/,/^)$/ c\finalize_purge_packages+=(\n${FINALIZE_PURGE_PACKAGES[@]}\n)" \ +#### ${BLEND_CONFIG}; \ +#### ## \ +#### ## Use sed to format the lists one per line, tabbed. \ +#### ## Works for not- and tab-indented lists. \ +#### ##RUN ( \ +#### sed -i \ +#### ## -e "/^core_packages/, /^)$/ { n; s/^/\t/; s/ \t/\n\t/g; s/ \([^\t]\)/\n\t\1/g; }" \ +#### ## -e "/^base_packages/, /^)$/ { n; s/^/\t/; s/ \t/\n\t/g; s/ \([^\t]\)/\n\t\1/g; }" \ +#### ### -e "/^extra_packages/,/^)$/ { n; s/^/\t/; s/ \t/\n\t/g; s/ \([^\t]\)/\n\t\1/g; }" \ +#### ## -e "/^purge_packages/,/^)$/ { n; s/^/\t/; s/ \t/\n\t/g; s/ \([^\t]\)/\n\t\1/g; }" \ +#### -e "/^custom_deb_packages/,/^)$/ { n; s/^/\t/; s/ \t/\n\t/g; s/ \([^\t]\)/\n\t\1/g; }" \ +#### ## -e "/^finalize_purge_packages/,/^)$/ { n; s/^/\t/; s/ \t/\n\t/g; s/ \([^\t]\)/\n\t\1/g; }" \ +#### ${BLEND_CONFIG}; \ +#### cat ${BLEND_CONFIG}; \ +#### ) + +### ## RUN edit-config-list.sh ${CORE_VALUES} ${BLEND_CONFIG} +### ## RUN edit-config-list.sh ${BASE_VALUES} ${BLEND_CONFIG} +### ## RUN edit-config-list.sh ${PURGE_VALUES} ${BLEND_CONFIG} +### ## +### ## # FIXME: Does edit-config.sh cope with multi-line variables in CONFIG_VALUES below. + + +### #ENV CONFIG_VALUES " \ +### # ["core_packages"]=${CORE_PACKAGES} \ +### # ["base_packages"]=${BASE_PACKAGES} \ +### # ["purge_packages"]=${PURGE_PACKAGES} \ +### # " + +# These values are over-ridden by the blend conf files so should probably only be changed when releasing sdk updates. +ENV SDK_CONFIG_VALUES "\ + ["os"]='${OS}' \ + ["release"]='${RELEASE}' \ + ["version"]='${VERSION}' \ + ["mirror"]='${APT_MIRROR}' \ + ["section"]='${SECTION}' \ + ["image_name"]='${IMAGE_NAME}' \ + ["rootcredentials"]='${ROOT_CRED}' \ + ["usercredentials"]='${USER_CRED}' \ + ["corepackages_option"]='' \ + ["core_packages"]='${CORE_PACKAGES}' \ + ["base_packages_option"]='' \ + ["base_packages"]='${BASE_PACKAGES}' \ + ["purge_packages_option"]='' \ + ["purge_packages"]='${PURGE_PACKAGES}' \ + " +#RUN /live-sdk/edit-config.sh "${CONFIG_VALUES}" ${SDK_CONFIG} + +ENV CONFIG_VALUES " \ + ["core_packages"]='${CORE_PACKAGES}' \ + ["base_packages"]='${BASE_PACKAGES}' \ + ["purge_packages"]='${PURGE_PACKAGES}' \ + ["extra_packages"]='${EXTRA_PACKAGES}' \ + ["custom_deb_packages"]='${CUSTOM_DEB_PACKAGES}' \ + ["custom_scripts"]='${CUSTOM_SCRIPTS}' \ + ["finalize_purge_packages"]='${FINALIZE_PURGE_PACKAGES}' \ + " +RUN /live-sdk/edit-config.sh "${CONFIG_VALUES}" ${BLEND_PACKAGE_CONFIG} + + +#ENV CONFIG_VALUES " \ +# ["os"]='${OS}' \ +# ["release"]='${RELEASE}' \ +# ["version"]='${VERSION}' \ +# ["mirror"]='${APT_MIRROR}' \ +# ["section"]='${SECTION}' \ +# ["image_name"]='${IMAGE_NAME}' \ +# " +#RUN /live-sdk/edit-config.sh "${CONFIG_VALUES}" ${BLEND_CONFIG} + +ENV BLEND_CONFIG_VALUES " \ + ["blend_name"]='${BLEND_NAME}' \ + ["release"]='${RELEASE}' \ + ["version"]='${BLEND_VERS}' \ + ["username"]='${USER_NAME}' \ + ["userpass"]='${USER_PASS}' \ + ["default_shell"]='${DEFAULT_SHELL}' \ + ["manual_list"]='${MANUAL_LIST}' \ + ["auto_list"]='${AUTO_LIST}' \ + ["grubversion"]='${GRUB_VER}' \ + ["mirror"]='${APT_MIRROR}' \ + ["section"]='${SECTION}' \ + ["release_conf"]='${RELEASE_CONF}' \ + ["image_name"]='${IMAGE_NAME}' \ +# ["mkefi"]='${MKEFI}' \ +# ["efi_work"]='${EFI_WORK}' \ +# ["base_packages_option"]='${BASE_PACKAGES_OPTION}' +# ["extra_packages_option"]='${EXTRA_PACKAGES_OPTION}' +# ["hookscripts"]='${USE_HOOKS}' \ +# ["arch"]='${ARCH}' \ +# ["sources_list"]='${SOURCES_LIST}' \ + " +RUN /live-sdk/edit-config.sh "${BLEND_CONFIG_VALUES}" ${BLEND_CONFIG} + +# Add zfs var and arrs filesystems you would like to snapshot separately or +# apply and indiviual quota +#vars+=(zfs_poolname) +ENV ZFS_POOLNAME "rpool" + +#arrs+=(zfs_datasets) +ENV ZFS_DATASETS " \ + "/home" \ + "/home/${username}" \ + "/space" \ + "/opt" \ + "/tmp" \ + "/usr" \ + "/usr/share" \ + "/usr/local" \ + "/var" \ + "/var/cache" \ + "/var/cache/apt" \ + "/var/lib" \ + "/var/tmp" \ + "/var/lib/virt" \ + "/var/lib/lxc" \ + "/var/lib/docker" \ + "/var/log" \ + "/var/spool" \ + "/var/tmp" \ + " + +# Given on the load commandline +#RUN sed -i "s,^\(os=\).*,\1\"${OS}\"," /live-sdk/blends/${BLEND_NAME}/config + +#RUN sed -i "s,^\(blend_name=\).*,\1\"${BLEND_NAME}\"," /live-sdk/blends/${BLEND_NAME}/config +# +#RUN sed -i "s,^\(username=\).*,\1\"${USER_NAME}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i "s,^\(userpass=\).*,\1\"${USER_PASS}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i "s,^\(default_shell=\).*,\1\"${DEFAULT_SHELL}\"," /live-sdk/blends/${BLEND_NAME}/config +# +#RUN sed -i "s,^\(hookscripts=\).*,\1\"${USE_HOOKS}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i "s,^\(hookscripts=\).*,\1\"${USE_HOOKS}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i "s,^\(section=\).*,\1\"${SECTION}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i "s,^\(image_name=\).*,\1\"${IMAGE_NAME}\"," /live-sdk/blends/${BLEND_NAME}/config +# +#RUN sed -i "s,^\(grubversion=\).*,\1\"${GRUB_VER}\"," /live-sdk/blends/${BLEND_NAME}/config +# +##RUN sed -i "s,^\(blend_vers=\).*,\1\"${BLEND_VERS}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN grep -q '^blend_vers=' /live-sdk/blends/${BLEND_VERS}/config && \ +# sed -i "s/^blend_vers.*/mirror=${BLEND_VERS}/" /live-sdk/blends/${BLEND_NAME}/config || \ +# sed -i "/blend_name=.*/ s/.*/&\n^release=${BLEND_VERS}\"/" /live-sdk/blends/${BLEND_NAME/config} +# +##RUN sed -i "s,^\(release=\).*,\1\"${RELEASE}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN grep -q '^release=' /live-sdk/blends/${BLEND_NAME}/config && \ +# sed -i "s/^release.*/mirror=${RELEASE}/" /live-sdk/blends/${BLEND_NAME}/config || \ +# sed -i "/blend_name=.*/ s/.*/&\n^release=${RELEASE}\"/" /live-sdk/blends/${BLEND_NAME/config} +# +#RUN grep -q '^mirror=' /live-sdk/blends/${BLEND_NAME}/config && \ +# sed -i "s/^mirror.*/mirror=${APT_MIRROR}/" /live-sdk/blends/${BLEND_NAME}/config || \ +# sed -i "/blend_name=.*/ s/.*/&\n^mirror=${BLEND_NAME}\"/" /live-sdk/blends/${BLEND_NAME/config} +# +#RUN sed -i "s,^\(mirror=\).*,\1\"${APT_MIRROR}\"," /live-sdk/blends/${BLEND_NAME}/config + + +# Add/remove packages not already in the blend +#RUN echo ""extra_packages+=( smartmontools gsmartcontrol ) >> /live-sdk/blends/${BLEND_NAME}/config +#RUN purge_packages+=( policykit-1) >> /live-sdk/blends/${BLEND_NAME}/config + +# Add hook scripts not all ready in the blend +#RUN echo "" > /live-sdk/blends/${BLEND_NAME}/hooks/hook.sh +#COPY common/hooks/hook.sh /live-sdk/blends/${BLEND_NAME}/hooks/hook.sh + +# Add custom debs not already in the blend +#RUN echo "custom_deb_packages+=( sanoid_1.4.14-1_amd64.deb )" >> /live-sdk/blends/${BLEND_NAME}/config +#COPY common/custom-packages/sanoid_1.4.14-1_amd64.deb /live-sdk/blends/${BLEND_NAME}/sanoid_1.4.14-1_amd64.deb + +## copy a get-selections from the livecd (install your prefered programs beforehand) +#dpkg --get-selections > /var/tmp/packages.list +#/usr/bin/apt-mark showauto > /var/tmp/pkgs_auto.lst +#/usr/bin/apt-mark showmanual > /var/tmp/pkgs_manual.lst +COPY packages.list blends/${BLEND_NAME}/packages.list +#COPY pkgs_auto.list blends/${BLEND_NAME}/pkgs_auto.list +#COPY pkgs_manual.list blends/${BLEND_NAME}/pkgs_manual.list + +COPY pkgs_auto.list-ascii blends/${BLEND_NAME}/pkgs_auto.list +COPY pkgs_manual.list-ascii blends/${BLEND_NAME}/pkgs_manual.list + +SHELL ["/bin/zsh", "-c"] + +## Build sequence: +# source sdk +# load ${OS} ${ARCH} ${BLEND_NAME} +# AUTOMATE_HOME=${strapdir}/var/tmp/automate +# devprocsys umount ${strapdir} +## build_iso_dist() { +# bootstrap_complete_base +# (*) bootstrapping devuan amd64 base +# (*) running debootstrap stage 1 - retrieve and validate +# (*) running debootstrap stage 2 - unpack and configure +# (*) writing system configuration +# (*) running debootstrap stage 3 - mount and chroot +# (*) chrooting to execute thirdstage... +# writes file 'thirdstage' to the chroot +# bootstrap_config_thirdstage | sudo tee $strapdir/thirdstage >/dev/null +# +# and runs it with +# chroot-script -d thirdstage || zerr +# +# +# debconf-set-selections /debconf.set +# apt-get --yes --force-yes install ${core_packages_option} ${core_packages} +# apt-get --yes --force-yes install ${base_packages_option} ${base_packages} +# apt-get --yes --force-yes purge ${purge_packages_option} ${purge_packages} +# apt-get --yes --force-yes autoremove +# sed -e 's/# en_US.UTF-8/en_US.UTF-8/' -i /etc/locale.gen +# (*) Creating boostrap tarball in /live-sdk/tmp/bootstrap-devuan-amd64-stage3.tgz +# (*) chrooting to execute postunpack... - install blend debs +# +# cp -a ${live_sdk-$PWD/}automate ${strapdir}/var/tmp +# cp -a automate ${strapdir}/var/tmp +# +# blend_preinst from the blend file: +# (*) executing devuan-desktop-live_ preinst +# (*) adding user devuan:devuan +# (*) chrooting to execute adduser... add-user $username $userpass +# (*) copying blend-specific debs... cp -fv "$blend_release_path"/*.deb "$R/extra/custom-packages" +# +# devprocsys mount $strapdir +# chroot-script /var/tmp/automate/001_locales.sh +# chroot-script /var/tmp/automate/010_apt-get.sh +# chroot-script /var/tmp/automate/010_saltstack.sh +# chroot-script /var/tmp/automate/020_console.sh +# chroot-script /var/tmp/automate/020_zsh_quickstart.sh +# chroot-script /var/tmp/automate/020_zsh_aliases.d.sh +# chroot-script /var/tmp/automate/020_lsd.sh +# chroot-script /var/tmp/automate/020_grc.sh +# chroot-script /var/tmp/automate/010_alsa.sh +# chroot-script /var/tmp/automate/020_vim.sh +# chroot-script /var/tmp/automate/020_meld.sh +# chroot-script /var/tmp/automate/020_themes.sh +# chroot-script /var/tmp/automate/020_powerline-bash.sh +# chroot-script /var/tmp/automate/020_nanorc.sh +# chroot-script /var/tmp/automate/020_neovim.sh +# chroot-script /var/tmp/automate/020_neofetch_motd.sh +# chroot-script /var/tmp/automate/020_tmux.sh +# chroot-script /var/tmp/automate/020_rox-filer.sh +# chroot-script /var/tmp/automate/020_hexchat.sh +# chroot-script /var/tmp/automate/020_pidgin.sh +# chroot-script /var/tmp/automate/020_torbrowser.sh +# chroot-script /var/tmp/automate/050_wicd.sh +# chroot-script /var/tmp/automate/050_remove_xscreensaver.sh +# devprocsys umount $strapdir +# iso_prepare_strap +# (*) preparing strapdir for livecd +# (*) chrooting to execute isoprep... +# build_kernel_${arch} +# (*) installing stock kernel for amd64 +# (*) chrooting to execute install-linux... +# iso_setup_isolinux +# (*) setting up isolinux +# iso_write_isolinux_cfg +# (*) writing isolinux configuration +# (*) copying isolinux overlay +# blend_postinst from the blend file: +# install-custdebs +# chroot-script -d install-debs +# rsync the rootfs-overlay +# (*) executing devuan-desktop-live_ postinst +# (*) chrooting to execute install-debs... +# (*) chrooting to execute finalize... +# add user to groups: cdrom floppy audio dip video plugdev netdev lpadmin scanner +# set default shell +# copy the /root dotfiles to /home/${username} +# chown the home directory +# update-initramfs -u -k -all +# change sources.list to deb.debuan.org +# fill_apt_cache +# iso_squash_strap +# (*) creating squashfs out of strapdir +# iso_xorriso_build +# (*) building iso... +#} +#------------------------------------------------------------------------------------- +# Log creation order +# bootstrap_complete_base +# dpkgdivert.log +# postunpack.log +# thirdstage.log +# blend_preinst +# blend_postinst +# install-debs +# install-scripts.log +# adduser.log +# finalize.log +# +#------------------------------------------------------------------------------------- +# # Inject default background in e17 configuration (for all known profiles) +## eet -l e.cfg # list all keys, usually just "config" +## eet -d e.cfg config e.src # writes human readable values to file e.src +## $EDITOR e.src # change whatever you like +## eet -e e.cfg config e.src 1 # recompress to binary cfg file +# +# e.cfg +# enlightenment-standard.png +# module.conf.cfg +# module.fileman.cfg +# module.ibox.cfg +# module.temperature.cfg +# e_bindings.cfg +# module.battery.cfg +# module.cpufreq.cfg +# module.ibar.cfg +# module.pager.cfg +# profile.desktop +# +# E_CFG_HOME /usr/share/enlightenment/data/config +# +# for profile in mobile standard tiling default computer; do +# dpkg-divert --local --add ${E_CFG_HOME}/$profile/e.cfg +# eet -d ${E_CFG_HOME}/$profile/e.cfg config /var/tmp/e.src +# awk '/value "desktop_default_name"/ {print " value \"desktop_default_background\" string: \"/usr/share/enlightenment/data/backgrounds/kali-wallpaper_1920x1200.edj\";"}; {print}' /var/tmp/e.src >/var/tmp/e2.src +# eet -e ${E_CFG_HOME}/$profile/e.cfg config /var/tmp/e2.src 1 +# rm -f /tmp/e.src /tmp/e2.src +# done +#--------------------------------------------------------------------------------------- + +## RUN echo "#!/usr/bin/env zsh" > build-iso.zsh && \ +## echo "source sdk" >> build-iso.zsh && \ +## echo "load ${OS} ${ARCH} ${BLEND_NAME}" >> build-iso.zsh && \ +## echo "build_iso_dist" >> build-iso.zsh && \ +## chmod +x build-iso.zsh +#RUN ( \ +# ( echo "#!/usr/bin/env zsh"; \ +# echo "source sdk"; \ +# echo "load ${OS} ${ARCH} ${BLEND_NAME}"; \ +# echo "build_iso_dist" \ +# ) >> build-iso.zsh \ +# && chmod +x build-iso.zsh && ls -l build-iso.zsh && cat build-iso.zsh \ +# ) + +COPY bin/build-iso.zsh build-iso.zsh +#RUN ( ls -l build-iso.zsh; ./build-iso.zsh ) + +RUN cat ${SDK_CONFIG}; cat ${BLEND_CONFIG} +### #ENTRYPOINT ["/bin/zsh", "-f", "-c", "source sdk"] +CMD ["./build-iso.zsh"] diff --git a/Dockerfile-plain b/Dockerfile-plain new file mode 100644 index 0000000..fc50c8e --- /dev/null +++ b/Dockerfile-plain @@ -0,0 +1,38 @@ +# https://dev1galaxy.org/viewtopic.php?id=551 +#FROM devuan:ascii-slim +FROM dyne/devuan:beowulf +ENV DEBIAN_FRONTEND noninteractive + +RUN echo 'Acquire::http { Proxy "http://192.168.1.49:3142"; };' > /etc/apt/apt.conf.d/02proxy +RUN apt-get update && apt-get -y upgrade +RUN apt-get install -y apt-utils +RUN apt-get install -y xorriso squashfs-tools live-boot syslinux-common git zsh debootstrap sudo kpartx xz-utils sudo cgpt parted vim curl sed gawk bsdmainutils +RUN apt-get install -y live-build live-config live-config-sysvinit isolinux grub-efi-amd64-bin grub-common dosfstools + +RUN git clone https://git.devuan.org/sdk/live-sdk + +WORKDIR /live-sdk + +RUN git submodule update --init --recursive --checkout + +# sub modules might be behind current libdevuansdk git, if you require a more current version of libdevuansdk clone directly: +#WORKDIR /live-sdk/lib +#RUN rm -rf libdevuansdk +#RUN git clone https://git.devuan.org/sdk/libdevuansdk + +WORKDIR /live-sdk + +SHELL ["/bin/zsh", "-c"] + +ENV OS devuan +ENV ARCH amd64 +ENV BLEND_NAME devuan-live + +RUN echo "#!/usr/bin/env zsh" > build-iso.zsh && \ + echo "source sdk" >> build-iso.zsh && \ + echo "load ${OS} ${ARCH} ${BLEND_NAME}" >> build-iso.zsh && \ + echo "build_iso_dist" >> build-iso.zsh && \ + chmod +x build-iso.zsh + +#ENTRYPOINT ["/bin/zsh", "-f", "-c", "source sdk"] +CMD ["build-iso.zsh"] diff --git a/Dockerfile-submodule-e17 b/Dockerfile-submodule-e17 new file mode 100644 index 0000000..030a086 --- /dev/null +++ b/Dockerfile-submodule-e17 @@ -0,0 +1,904 @@ +# syntax = docker/dockerfile:experimental +FROM dyne/devuan:beowulf +ENV DEBIAN_FRONTEND noninteractive + +RUN echo 'Acquire::http { Proxy "http://192.168.1.49:3142"; };' > /etc/apt/apt.conf.d/02proxy + +RUN rm -f /etc/apt/apt.conf.d/docker-clean; \ + echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache + +RUN --mount=type=cache,target=/var/cache/apt \ + --mount=type=cache,target=/var/lib/apt \ + apt-get update && apt-get -y upgrade + +RUN --mount=type=cache,target=/var/cache/apt \ + --mount=type=cache,target=/var/lib/apt \ + apt-get install -y xorriso squashfs-tools live-boot live-build live-config live-config-sysvinit \ + syslinux-common git zsh debootstrap sudo kpartx xz-utils sudo cgpt parted vim curl sed gawk bsdmainutils \ + rsync slim openssh-client isolinux grub-efi-amd64-bin grub-common dosfstools gnutls-bin + +#RUN apt-get install -y kpartx cgpt + +ARG GITLAB_URL="git.ring-zero.co.uk/" +ARG GITLAB_PORT="10022" +ARG GITLAB_USER=cyteen + +ENV USER_NAME "default" +ENV USER_PASS "default" + +ENV ROOT_CRED "root:toor" +ENV USER_CRED "${USER_NAME}:${USER_PASS}" + +ENV DEFAULT_SHELL "/bin/zsh" + +ENV OS "devuan" +ENV ARCH "amd64" +ARG RELEASE="beowulf" +ENV VERSION 2.0.0 + +ARG TEMPLATE_NAME="devuan-beowulf-live-e17" +ARG BLEND_NAME="live-zfs-e17" +ARG BLEND_VERS="3.0-test-$(date +%Y-%m-%d)" + +ARG APT_MIRROR="https://deb.devuan.org/merged" + +ENV USE_HOOKS "yes" +ENV SECTION "main contrib non-free" +ENV RELEASE_CONF "$BLENDPATH/${release}/config" +ENV IMAGE_NAME "${OS}_${RELEASE}_${VERSION}_${ARCH}_desktop" +ENV BASE_PACKAGES_OPTION "--no-install-recommends" +ENV EXTRA_PACKAGES_OPTION "--no-install-recommends" + +ENV SOURCES_LIST "${BLENDPATH}/sources.list" +ENV MANUAL_LIST "${BLENDPATH}/manual.list" +ENV AUTO_LIST "${BLENDPATH}/auto.list" + +ARG GIT_EMAIL_URL="ring-zero.co.uk" +ARG GIT_EMAIL_NAME="cyteen" +ARG GIT_NAME="Cyteen May" +RUN git config --global user.email "${GIT_EMAIL_NAME}@${GIT_EMAIL_URL}" +RUN git config --global user.name "${GIT_NAME}" + +# Add any domains needed to the known hosts file. +RUN mkdir -p -m 0600 /root/.ssh && ssh-keyscan git.devuan.org >> /root/.ssh/known_hosts + +# ssh-keyscan -p 10020 git.ring-zero.co.uk >> ${HOME}/.ssh/know_hosts +RUN mkdir -p -m 0600 /root/.ssh && ssh-keyscan -p ${GITLAB_PORT} ${GITLAB_URL} >> /root/.ssh/known_hosts + +WORKDIR /var/tmp + +## Create an empty project for the new blend. +RUN mkdir ${BLEND_NAME} +WORKDIR /tmp/${BLEND_NAME} +RUN git init && \ + mkdir ${RELEASE} + +# Add the blend scripts submodule to the new blend. +# ssh://git@git.ring-zero.co.uk:10022/scripts/automate.git beowulf/scripts +RUN --mount=type=ssh git submodule add ssh://git@${GITLAB_URL}:${GITLAB_PORT}/scripts/automate.git ${RELEASE}/scripts + +RUN git add . +RUN git commit -m "Dockerfile: commit after adding submodule." + + +# Directly push it to GitLab to create the new project, see: +# https://docs.gitlab.com/ee/gitlab-basics/create-project.html#push-to-create-a-new-project +# ssh://git@git.ring-zero.co.uk:10022/sdk/blends/live-zfs-e17.git master +RUN --mount=type=ssh git push --set-upstream ssh://git@${GITLAB_URL}:${GITLAB_PORT}/sdk/blends/${BLEND_NAME}.git master + + +## Clone the live-sdk upstream to the root directory. +#RUN --mount=type=ssh git clone https://${GITLAB_URL}/${GITLAB_USER}/live-sdk +#RUN --mount=type=ssh git clone https://git.devuan.org/sdk/live-sdk.git /live-sdk +#RUN --mount=type=ssh git clone git@git.devuan.org:sdk/live-sdk.git /live-sdk +RUN --mount=type=ssh git clone ssh://git@${GITLAB_URL}:${GITLAB_PORT}/sdk/live-sdk.git /live-sdk + +#RUN git remote remove origin && git remote add origin ${GITLAB_URL}:sdk/live-sdk.git + +WORKDIR /live-sdk + +## Create local branch of the live-sdk to add only local git submodules UNIQUE: +RUN git checkout -b ${BLEND_NAME} + +## Change the submodules to local for zuper and libdevuansdk +# git config --file=.gitmodules submodule.lib/zuper.url ssh://git@git.ring-zero.co.uk:10022/sdk/zuper.git +RUN git config --file=.gitmodules submodule.lib/zuper.url ssh://git@${GITLAB_URL}:${GITLAB_PORT}/sdk/zuper.git +#git config --file=.gitmodules submodule.lib/libdevuansdk.url ssh://git@git.ring-zero.co.uk:10022/sdk/libdevuansdk.git +RUN git config --file=.gitmodules submodule.lib/libdevuansdk.url ssh://git@${GITLAB_URL}:${GITLAB_PORT}/sdk/libdevuansdk.git +RUN git config --file=.gitmodules submodule.lib/libdevuansdk.branch ring-zero + +RUN git add . +RUN git commit -am "Set library submodules to ring-zero gitlab repo." + +RUN git submodule sync + +RUN cat .git/config +RUN cat .gitmodules + +## Add submodules to the branch +# the new blend submodule +# git submodule add ssh://git@git.ring-zero.co.uk:10022/sdk/blends/live-zfs-e17.git \ +# blends/${BLEND_NAME} --recursive +RUN --mount=type=ssh git submodule add ssh://git@${GITLAB_URL}:${GITLAB_PORT}/sdk/blends/${BLEND_NAME} \ + blends/${BLEND_NAME} --recursive + +# the template blend submodule +# git submodule add -b ring-zero ssh://git@git.ring-zero.co.uk:10022/sdk/blends/devuan-beowulf-live-e17.git blends/devuan-beowulf-live-e17 --recursive +RUN --mount=type=ssh git submodule add -b ring-zero ssh://git@${GITLAB_URL}:${GITLAB_PORT}/sdk/blends/${TEMPLATE_NAME} \ + blends/${TEMPLATE_NAME} --recursive + +RUN git add . +RUN git commit -m "Add blends as submodules from ring-zero gitlab repo." + +# re-synchronize the information in .git/config with the information in .gitmodules +RUN git submodule sync + +#RUN --mount=type=ssh git push --set-upstream git@${GITLAB_URL}:${GITLAB_USER}/live-sdk.git master + +## Update submodules recursively, +# /live-sdk/lib/libdevuansdk +# /live-sdk/lib/zuper +# /live-sdk/blends/${BLEND_NAME} +# /live-sdk//blends/${BLEND_NAME}/scripts +# /live-sdk//blends/${TEMPLATE_NAME}/scripts +#RUN git submodule update --init --recursive --checkout +#RUN --mount=type=ssh git pull && git submodule update --init --recursive --checkout +RUN --mount=type=ssh git submodule update --init --recursive --remote +RUN git add -A + +## Starting with an empty BLEND_NAME. Copy the template blend into the new blend +RUN cp -R /live-sdk/blends/${TEMPLATE_NAME}/* /live-sdk/blends/${BLEND_NAME}/ + +# Rename the blend file of the transfered blend to the new blend name. +RUN mv /live-sdk/blends/${BLEND_NAME}/${TEMPLATE_NAME}.blend /live-sdk/blends/${BLEND_NAME}/${BLEND_NAME}.blend + +# Enable/disable UEFI - Currently code checks to see if the $mkefi is set not if it is yes or no and turning it off breaks the xorriso build options. +ENV MKEFI "no" +ENV GRUB_VER "grub-pc" +ENV EFI_WORK "" +#RUN sed -i "s,^\(mkefi=\).*,\1\"${MKEFI}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i "s,^\(efi_work=\).*,\1\"${EFI_WORK}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i '/^mkefi=/s/^/# /' /live-sdk/blends/${BLEND_NAME}/config + +#ENV MKEFI "yes" +#ENV GRUB_VER "grub-efi-amd64" +#ENV EFI_WORK "${BLENDPATH}/efi-files" +#RUN sed -i '/# mkefi=/s/# /^/' /live-sdk/blends/${BLEND_NAME}/config + +#WORKDIR /live-sdk/blends/ +#RUN git clone https://git.devuan.org/${GITLAB_USER}/blends/live-zfs +#RUN git checkout -b ${BLEND_NAME} + +## Once working and building push to git +#RUN git push origin ${BLEND_NAME} + + +WORKDIR /live-sdk +# Add the new blend to the sdk blend_map so we can build it. +RUN sed -i "/blend_map=.*/ s/.*/&\n\t\t\"${BLEND_NAME}\" \"\$R\/blends\/${BLEND_NAME}\/${BLEND_NAME}.blend\"/" sdk + +# Add call for sourceslist +#RUN sed -i "/install-custdebs.*/ s/.*/&\n\tinstall-packageslist || zerr/" sdk + +COPY bin/edit-config.sh /live-sdk/edit-config.sh + +# #!/bin/bash +# /live-sdk/edit-config.sh +# +# CONFIG_FILE="${2}" +# declare -A arr +# arr+=( "${1}" ) +# for TARGET_KEY in "${!arr[@]}"; do +# echo "x " ${TARGET_KEY} ${arr[${TARGET_KEY}]} ${CONFIG_FILE} +# if grep -q "^${TARGET_KEY}=" ${CONFIG_FILE}; then +# sed -i "s|^${TARGET_KEY}.*|${TARGET_KEY}=\"${arr[${TARGET_KEY}]}\"|" ${CONFIG_FILE} +# else +# sed -i "/^blend_name=.*/ s|.*|&\n${TARGET_KEY}=\"${arr[${TARGET_KEY}]}\"|" ${CONFIG_FILE} +# fi +# done + +# Construct array for edit-config +# Taken from /live-sdk/lib/libdevuansdk/config +ENV CORE_PACKAGES \ +devuan-keyring \ +debian-keyring \ +ca-certificates \ +initramfs-tools \ +e2fsprogs \ +curl \ +less \ +vim \ +nano \ +sysvinit \ +"" + +ENV EXTRA_PACKAGES \ +librsvg2-common \ +fonts-quicksand \ +fonts-liberation \ +fonts-symbola \ +xserver-xorg-input-all \ +xserver-xorg-video-all \ +anacron \ +bluetooth \ +iw \ +powertop \ +vim-gtk3 \ +wireless-tools \ +wpasupplicant \ +tasksel \ +xfce4 \ +xfce4-goodies \ +xfce4-power-manager \ +xfce4-terminal \ +atril \ +dbus-x11 \ +hunspell-en-gb \ +hyphen-en-gb \ +mythes-en-us \ +synaptic \ +system-config-printer \ +tango-icon-theme \ +xsane \ +enlightenment \ +terminology \ +libeet-bin \ +libeina-bin \ +rox-filer \ +neovim \ +firmware-atheros \ +firmware-bnx2 \ +firmware-bnx2x \ +firmware-brcm80211 \ +firmware-intelwimax \ +firmware-iwlwifi \ +firmware-libertas \ +firmware-linux-nonfree \ +firmware-misc-nonfree \ +firmware-myricom \ +firmware-netxen \ +firmware-qlogic \ +firmware-ralink \ +firmware-realtek \ +firmware-ti-connectivity \ +firmware-zd1211 \ +sudo \ +yad \ +refractainstaller-gui \ +refractasnapshot-gui \ +linux-headers-amd64 \ +#libreoffice \ +#libreoffice-gtk3 \ +#libreoffice-help-en-gb \ +#mousepad \ +#network-manager-gnome \ +#avahi-daemon \ +#lightdm \ +#quodlibet \ +#lig_t-locker \ +#orca \ +"" + +RUN mkdir -p /live-sdk/blends/${BLEND_NAME}/${RELEASE}/rootfs-overlay/etc && \ + echo spl >> /live-sdk/blends/${BLEND_NAME}/${RELEASE}/rootfs-overlay/etc/modules && \ + echo zfs >> /live-sdk/blends/${BLEND_NAME}/${RELEASE}/rootfs-overlay/etc/modules + +ENV BASE_PACKAGES \ +apt-utils \ +openrc \ +dselect \ +parted \ +openssh-server \ +openssh-client \ +sudo \ +alsa-utils \ +mawk \ +tmux \ +screen \ +ntp \ +wpasupplicant \ +wireless-tools \ +elinks \ +firmware-linux-free \ +btrfs-progs \ +zsh \ +rsync \ +git \ +mlocate \ +libbullet2.87 \ +libgif7 \ +libgles2 \ +libibus-1.0-5 \ +libpoppler-cpp0v5 \ +libscim8v5 \ +libxcb-xkb1 \ +libxkbcommon-x11-0 \ +libbluetooth3 \ +#virtualbox-guest-additions-iso \ +#qemu-guest-agent \ +#cloud-guest-utils \ +#openntpd \ +"" + +ENV PURGE_PACKAGES \ +apparmor \ +apparmor-utils \ +auditd \ +apparmor-profiles \ +apparmor-profiles-extra \ +avahi-daemon \ +avahi-autoipd \ +libavahi-common-data \ +libavahi-common3 \ +libavahi-glib1 \ +libavahi-client3 \ +cups-browsed \ +gvfs-daemon \ +libpam-gnome-keyring \ +pulseaudio \ +pulseaudio-utils \ +libpulsedsp \ +xscreensaver \ +xscreensaver-data \ +"" + +## instalation order is important +ENV CUSTOM_DEB_PACKAGES \ +bluealsa_2.1.0-1_amd64.deb \ +checkinstall_1.6.2+git20170426.d24a630-2_amd64.deb \ +dissenter-browser_0.70.122_amd64.deb \ +libupnp6_1.6.19+git20160116-1.2_amd64.deb \ +djmount_0.71-7.1_amd64.deb \ +shellcheck_0.7.0-2~bpo10+1_amd64.deb \ +torbrowser-launcher_0.3.2-7_amd64.deb \ +#efl-doc_1.23.3-5_all.deb \ +#libecore1_1.23.3-5_amd64.deb \ +#libecore-bin_1.23.3-5_amd64.deb \ +#libecore-file1_1.23.3-5_amd64.deb \ +#libeeze1_1.23.3-5_amd64.deb \ +#libeeze-bin_1.23.3-5_amd64.deb \ +#libecore-audio1_1.23.3-5_amd64.deb \ +#libecore-con1_1.23.3-5_amd64.deb \ +#libeina1a_1.23.3-5_amd64.deb \ +#libemile1_1.23.3-5_amd64.deb \ +#libeet1_1.23.3-5_amd64.deb \ +#libector1_1.23.3-5_amd64.deb \ +#libeina-bin_1.23.3-5_amd64.deb \ +#libecore-ipc1_1.23.3-5_amd64.deb \ +#libeio1_1.23.3-5_amd64.deb \ +#libefreet-bin_1.23.3-5_amd64.deb \ +#libembryo-bin_1.23.3-5_amd64.deb \ +#libembryo1_1.23.3-5_amd64.deb \ +#libelua1_1.23.3-5_amd64.deb \ +#libelua-bin_1.23.3-5_amd64.deb \ +#libeolian1_1.23.3-5_amd64.deb \ +#libelocation1_1.23.3-5_amd64.deb \ +#\ +#libecore-fb1_1.23.3-5_amd64.deb \ +#libecore-x1_1.23.3-5_amd64.deb \ +#libevas1-engines-x_1.23.3-5_amd64.deb \ +#libevas1_1.23.3-5_amd64.deb \ +#libecore-evas1_1.23.3-5_amd64.deb \ +#libecore-input1_1.23.3-5_amd64.deb \ +#libelput1_1.23.3-5_amd64.deb \ +#libecore-wl2-1_1.23.3-5_amd64.deb \ +#libecore-drm2-1_1.23.3-5_amd64.deb \ +#\ +#libeet-bin_1.23.3-5_amd64.deb \ +#libelementary-bin_1.23.3-5_amd64.deb \ +#libevas-loaders_1.23.3-5_amd64.deb \ +#libevas1-engines-drm_1.23.3-5_amd64.deb \ +#libevas1-engines-fb_1.23.3-5_amd64.deb \ +#libevas1-engines-wayland_1.23.3-5_amd64.deb \ +#libecore-imf1_1.23.3-5_amd64.deb \ +#libedje-bin_1.23.3-5_amd64.deb \ +#libedje1_1.23.3-5_amd64.deb \ +#\ +#libelementary-data_1.23.3-5_all.deb \ +#libelementary1_1.23.3-5_amd64.deb \ +#libemotion1_1.23.3-5_amd64.deb \ +#libemotion-players_1.23.3-5_amd64.deb \ +#libephysics1_1.23.3-5_amd64.deb \ +#libethumb-client-bin_1.23.3-5_amd64.deb \ +#libethumb-client1_1.23.3-5_amd64.deb \ +#libethumb1_1.23.3-5_amd64.deb \ +#enlightenment-data_0.23.1-1_all.deb \ +#enlightenment_0.23.1-1_amd64.deb \ +#terminology-data_1.6.0-1_all.deb \ +#terminology_1.6.0-1_amd64.deb \ +#\ +#enlightenment-dev_0.23.1-1_amd64.deb \ +#libefl-all-dev_1.23.3-5_amd64.deb \ +\ +#enlightenment-dbgsym_0.23.1-1_amd64.deb \ +#libecore-audio1-dbgsym_1.23.3-5_amd64.deb \ +#libecore-bin-dbgsym_1.23.3-5_amd64.deb \ +#libecore-con1-dbgsym_1.23.3-5_amd64.deb \ +#libecore-drm2-1-dbgsym_1.23.3-5_amd64.deb \ +#libecore-evas1-dbgsym_1.23.3-5_amd64.deb \ +#libecore-fb1-dbgsym_1.23.3-5_amd64.deb \ +#libecore-file1-dbgsym_1.23.3-5_amd64.deb \ +#libecore-imf1-dbgsym_1.23.3-5_amd64.deb \ +#libecore-input1-dbgsym_1.23.3-5_amd64.deb \ +#libecore-ipc1-dbgsym_1.23.3-5_amd64.deb \ +#libecore-wl2-1-dbgsym_1.23.3-5_amd64.deb \ +#libecore-x1-dbgsym_1.23.3-5_amd64.deb \ +#libecore1-dbgsym_1.23.3-5_amd64.deb \ +#libector1-dbgsym_1.23.3-5_amd64.deb \ +#libedje-bin-dbgsym_1.23.3-5_amd64.deb \ +#libedje1-dbgsym_1.23.3-5_amd64.deb \ +#libeet-bin-dbgsym_1.23.3-5_amd64.deb \ +#libeet1-dbgsym_1.23.3-5_amd64.deb \ +#libeeze-bin-dbgsym_1.23.3-5_amd64.deb \ +#libeeze1-dbgsym_1.23.3-5_amd64.deb \ +#libefl-all-dev-dbgsym_1.23.3-5_amd64.deb \ +#libefreet-bin-dbgsym_1.23.3-5_amd64.deb \ +#libefreet1a-dbgsym_1.23.3-5_amd64.deb \ +#libeina-bin-dbgsym_1.23.3-5_amd64.deb \ +#libeina1a-dbgsym_1.23.3-5_amd64.deb \ +#libeio1-dbgsym_1.23.3-5_amd64.deb \ +#libelementary-bin-dbgsym_1.23.3-5_amd64.deb \ +#libelementary1-dbgsym_1.23.3-5_amd64.deb \ +#libelocation1-dbgsym_1.23.3-5_amd64.deb \ +#libelput1-dbgsym_1.23.3-5_amd64.deb \ +#libelua-bin-dbgsym_1.23.3-5_amd64.deb \ +#libelua1-dbgsym_1.23.3-5_amd64.deb \ +#libembryo-bin-dbgsym_1.23.3-5_amd64.deb \ +#libembryo1-dbgsym_1.23.3-5_amd64.deb \ +#libemile1-dbgsym_1.23.3-5_amd64.deb \ +#libemotion-players-dbgsym_1.23.3-5_amd64.deb \ +#libemotion1-dbgsym_1.23.3-5_amd64.deb \ +#libeolian1-dbgsym_1.23.3-5_amd64.deb \ +#libephysics1-dbgsym_1.23.3-5_amd64.deb \ +#libethumb-client-bin-dbgsym_1.23.3-5_amd64.deb \ +#libethumb-client1-dbgsym_1.23.3-5_amd64.deb \ +#libethumb1-dbgsym_1.23.3-5_amd64.deb \ +#libevas-loaders-dbgsym_1.23.3-5_amd64.deb \ +#libevas1-dbgsym_1.23.3-5_amd64.deb \ +#libevas1-engines-drm-dbgsym_1.23.3-5_amd64.deb \ +#libevas1-engines-fb-dbgsym_1.23.3-5_amd64.deb \ +#libevas1-engines-wayland-dbgsym_1.23.3-5_amd64.deb \ +#libevas1-engines-x-dbgsym_1.23.3-5_amd64.deb \ +#terminology-dbgsym_1.6.0-1_amd64.deb \ +"" + +ENV CUSTOM_SCRIPTS \ +001_apt_suggests-recommends.sh \ +001_locales.sh \ +001_resolvconf.sh \ +010_sysctl.sh \ +010_generate-ssh.sh \ +010_apt-get.sh \ +001_system_bell.sh \ +010_saltstack.sh \ +020_console.sh \ +020_zsh_quickstart.sh \ +020_zsh_aliases.d.sh \ +020_lsd.sh \ +020_grc.sh \ +010_alsa.sh \ +020_conky.sh \ +020_djmount.sh \ +020_vim.sh \ +020_meld.sh \ +020_themes.sh \ +020_audacity.sh \ +020_powerline-bash.sh \ +020_fonts.sh \ +020_nanorc.sh \ +020_neovim.sh \ +020_mutt-wizard.sh \ +020_mutt-notmuch.sh \ +020_mutt-khard.sh \ +020_shellcheck.sh \ +020_neofetch_motd.sh \ +020_tmux.sh \ +020_rox-filer.sh \ +020_hexchat.sh \ +020_pidgin.sh \ +020_brave_browser.sh \ +020_slim.sh \ +020_docker.sh \ +020_docker-compose.sh \ +050_wicd.sh \ +050_remove_xscreensaver.sh \ +"" + +ENV FINALIZE_PURGE_PACKAGES \ +"" + +### ## ENV CORE_VALUES " \ +### ## ["core_packages="]=${CORE_PACKAGES[@]} \ +### ## " +### ## +### ## ENV BASE_VALUES " \ +### ## ["base_packages="]=${BASE_PACKAGES[@]} \ +### ## " +### ## +### ## ENV PURGE_VALUES " \ +### ## ["purge_packages="]=${PURGE_PACKAGES[@]} \ +### ## " +### ## +### ## ENV FINALIZE_PURGE_VALUES " \ +### ## ["finalize_purge_packages="]=${FINALIZE_PURGE_PACKAGES[@]} \ +### ## " + +ENV SDK_CONFIG /live-sdk/lib/libdevuansdk/config +ENV BLEND_CONFIG /live-sdk/blends/${BLEND_NAME}/config +ENV BLEND_PACKAGE_CONFIG /live-sdk/blends/${BLEND_NAME}/${RELEASE}/config + +#### # Bash-isms follow, so: +#### SHELL ["/bin/bash", "-c"] +#### +#### # Use sed to insert ..._package sections if missing. The Q42 is a forced exit status. +#### # Assumes the base_package stanza is present. +#### RUN ( \ +#### if $(sed -n -e "/^core_package/ Q42" ${BLEND_CONFIG} ); then sed -i "/^base_packages/ i\core_packages+=(\n)\n" ${BLEND_CONFIG}; fi; \ +#### # if $(sed -n -e "/^extra_package/ Q42" ${BLEND_CONFIG} ); then sed -i "/^base_packages/ i\EXTRA_packages+=(\n)\n" ${BLEND_CONFIG}; fi; \ +#### if $(sed -n -e "/^purge_package/ Q42" ${BLEND_CONFIG} ); then sed -i "/^base_packages/ i\purge_packages+=(\n)\n" ${BLEND_CONFIG}; fi; \ +#### # if $(sed -n -e "/^custom_deb_package/ Q42" ${BLEND_CONFIG} ); then sed -i "/^base_packages/ i\custom_deb_packages+=(\n)\n" ${BLEND_CONFIG}; fi; \ +#### # if $(sed -n -e "/^finalize_purge_package/ Q42" ${BLEND_CONFIG} ); then sed -i "/^base_packages/ i\finalize_purge_packages+=(\n)\n" ${BLEND_CONFIG}; fi; \ +#### # if $(sed -n -e "/^blend_package/ Q42" ${BLEND_CONFIG} ); then sed -i "/^base_packages/ i\blend_packages+=(\n)\n" ${BLEND_CONFIG}; fi; \ +#### # \ +#### # Use sed to replace block of values. \ +#### # This works and is copy/pasteable to a bash shell, but the '[@]' elements are not strictly needed in a Dockerfile. \ +#### # RUN ( \ +#### sed -i \ +#### -e "/^core_packages/,/^)$/ c\core_packages=(\n${CORE_PACKAGES[@]}\n)" \ +#### # -e "/^base_packages/,/^)$/ c\base_packages=(\n${BASE_PACKAGES[@]}\n)" \ +#### # -e "/^extra_packages/,/^)$/ i\extra_packages+=(\n${EXTRA_PACKAGES[@]}\n);Q" \ +#### -e "/^purge_packages/,/^)$/ c\purge_packages+=(\n${PURGE_PACKAGES[@]}\n)" \ +#### # -e "/^custom_deb_packages/,/^)$/ c\custom_deb_packages+=(\n${CUSTOM_DEB_PACKAGES[@]}\n)" \ +#### # -e "/^finalize_purge_packages/,/^)$/ c\finalize_purge_packages+=(\n${FINALIZE_PURGE_PACKAGES[@]}\n)" \ +#### ${BLEND_CONFIG}; \ +#### ## \ +#### ## Use sed to format the lists one per line, tabbed. \ +#### ## Works for not- and tab-indented lists. \ +#### ##RUN ( \ +#### sed -i \ +#### ## -e "/^core_packages/, /^)$/ { n; s/^/\t/; s/ \t/\n\t/g; s/ \([^\t]\)/\n\t\1/g; }" \ +#### ## -e "/^base_packages/, /^)$/ { n; s/^/\t/; s/ \t/\n\t/g; s/ \([^\t]\)/\n\t\1/g; }" \ +#### ### -e "/^extra_packages/,/^)$/ { n; s/^/\t/; s/ \t/\n\t/g; s/ \([^\t]\)/\n\t\1/g; }" \ +#### ## -e "/^purge_packages/,/^)$/ { n; s/^/\t/; s/ \t/\n\t/g; s/ \([^\t]\)/\n\t\1/g; }" \ +#### -e "/^custom_deb_packages/,/^)$/ { n; s/^/\t/; s/ \t/\n\t/g; s/ \([^\t]\)/\n\t\1/g; }" \ +#### ## -e "/^finalize_purge_packages/,/^)$/ { n; s/^/\t/; s/ \t/\n\t/g; s/ \([^\t]\)/\n\t\1/g; }" \ +#### ${BLEND_CONFIG}; \ +#### cat ${BLEND_CONFIG}; \ +#### ) + +### ## RUN edit-config-list.sh ${CORE_VALUES} ${BLEND_CONFIG} +### ## RUN edit-config-list.sh ${BASE_VALUES} ${BLEND_CONFIG} +### ## RUN edit-config-list.sh ${PURGE_VALUES} ${BLEND_CONFIG} +### ## +### ## # FIXME: Does edit-config.sh cope with multi-line variables in CONFIG_VALUES below. + + +### #ENV CONFIG_VALUES " \ +### # ["core_packages"]=${CORE_PACKAGES} \ +### # ["base_packages"]=${BASE_PACKAGES} \ +### # ["purge_packages"]=${PURGE_PACKAGES} \ +### # " + +# These values are over-ridden by the blend conf files so should probably only be changed when releasing sdk updates. +ENV SDK_CONFIG_VALUES "\ + ["os"]='${OS}' \ + ["release"]='${RELEASE}' \ + ["version"]='${VERSION}' \ + ["mirror"]='${APT_MIRROR}' \ + ["section"]='${SECTION}' \ + ["image_name"]='${IMAGE_NAME}' \ + ["rootcredentials"]='${ROOT_CRED}' \ + ["usercredentials"]='${USER_CRED}' \ + ["corepackages_option"]='' \ + ["core_packages"]='${CORE_PACKAGES}' \ + ["base_packages_option"]='' \ + ["base_packages"]='${BASE_PACKAGES}' \ + ["purge_packages_option"]='' \ + ["purge_packages"]='${PURGE_PACKAGES}' \ + " +#RUN /live-sdk/edit-config.sh "${CONFIG_VALUES}" ${SDK_CONFIG} + +ENV CONFIG_VALUES " \ + ["core_packages"]='${CORE_PACKAGES}' \ + ["base_packages"]='${BASE_PACKAGES}' \ + ["purge_packages"]='${PURGE_PACKAGES}' \ + ["extra_packages"]='${EXTRA_PACKAGES}' \ + ["custom_deb_packages"]='${CUSTOM_DEB_PACKAGES}' \ + ["custom_scripts"]='${CUSTOM_SCRIPTS}' \ + ["finalize_purge_packages"]='${FINALIZE_PURGE_PACKAGES}' \ + " +RUN /live-sdk/edit-config.sh "${CONFIG_VALUES}" ${BLEND_PACKAGE_CONFIG} + +ENV BLEND_CONFIG_VALUES " \ + ["blend_name"]='${BLEND_NAME}' \ + ["release"]='${RELEASE}' \ + ["version"]='${BLEND_VERS}' \ + ["username"]='${USER_NAME}' \ + ["userpass"]='${USER_PASS}' \ + ["default_shell"]='${DEFAULT_SHELL}' \ + ["manual_list"]='${MANUAL_LIST}' \ + ["auto_list"]='${AUTO_LIST}' \ + ["grubversion"]='${GRUB_VER}' \ + ["mirror"]='${APT_MIRROR}' \ + ["section"]='${SECTION}' \ + ["release_conf"]='${RELEASE_CONF}' \ + ["image_name"]='${IMAGE_NAME}' \ +# ["mkefi"]='${MKEFI}' \ +# ["efi_work"]='${EFI_WORK}' \ +# ["base_packages_option"]='${BASE_PACKAGES_OPTION}' +# ["extra_packages_option"]='${EXTRA_PACKAGES_OPTION}' +# ["hookscripts"]='${USE_HOOKS}' \ +# ["arch"]='${ARCH}' \ +# ["sources_list"]='${SOURCES_LIST}' \ + " +RUN /live-sdk/edit-config.sh "${BLEND_CONFIG_VALUES}" ${BLEND_CONFIG} + +# Add zfs var and arrs filesystems you would like to snapshot separately or +# apply and indiviual quota +#vars+=(zfs_poolname) +ENV ZFS_POOLNAME "rpool" + +#arrs+=(zfs_datasets) +ENV ZFS_DATASETS " \ + "/home" \ + "/home/${username}" \ + "/space" \ + "/opt" \ + "/tmp" \ + "/usr" \ + "/usr/share" \ + "/usr/local" \ + "/var" \ + "/var/cache" \ + "/var/cache/apt" \ + "/var/lib" \ + "/var/tmp" \ + "/var/lib/virt" \ + "/var/lib/lxc" \ + "/var/lib/docker" \ + "/var/log" \ + "/var/spool" \ + "/var/tmp" \ + " + +# Given on the load commandline +#RUN sed -i "s,^\(os=\).*,\1\"${OS}\"," /live-sdk/blends/${BLEND_NAME}/config + +#RUN sed -i "s,^\(blend_name=\).*,\1\"${BLEND_NAME}\"," /live-sdk/blends/${BLEND_NAME}/config +# +#RUN sed -i "s,^\(username=\).*,\1\"${USER_NAME}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i "s,^\(userpass=\).*,\1\"${USER_PASS}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i "s,^\(default_shell=\).*,\1\"${DEFAULT_SHELL}\"," /live-sdk/blends/${BLEND_NAME}/config +# +#RUN sed -i "s,^\(hookscripts=\).*,\1\"${USE_HOOKS}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i "s,^\(hookscripts=\).*,\1\"${USE_HOOKS}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i "s,^\(section=\).*,\1\"${SECTION}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i "s,^\(image_name=\).*,\1\"${IMAGE_NAME}\"," /live-sdk/blends/${BLEND_NAME}/config +# +#RUN sed -i "s,^\(grubversion=\).*,\1\"${GRUB_VER}\"," /live-sdk/blends/${BLEND_NAME}/config +# +##RUN sed -i "s,^\(blend_vers=\).*,\1\"${BLEND_VERS}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN grep -q '^blend_vers=' /live-sdk/blends/${BLEND_VERS}/config && \ +# sed -i "s/^blend_vers.*/mirror=${BLEND_VERS}/" /live-sdk/blends/${BLEND_NAME}/config || \ +# sed -i "/blend_name=.*/ s/.*/&\n^release=${BLEND_VERS}\"/" /live-sdk/blends/${BLEND_NAME/config} +# +##RUN sed -i "s,^\(release=\).*,\1\"${RELEASE}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN grep -q '^release=' /live-sdk/blends/${BLEND_NAME}/config && \ +# sed -i "s/^release.*/mirror=${RELEASE}/" /live-sdk/blends/${BLEND_NAME}/config || \ +# sed -i "/blend_name=.*/ s/.*/&\n^release=${RELEASE}\"/" /live-sdk/blends/${BLEND_NAME/config} +# +#RUN grep -q '^mirror=' /live-sdk/blends/${BLEND_NAME}/config && \ +# sed -i "s/^mirror.*/mirror=${APT_MIRROR}/" /live-sdk/blends/${BLEND_NAME}/config || \ +# sed -i "/blend_name=.*/ s/.*/&\n^mirror=${BLEND_NAME}\"/" /live-sdk/blends/${BLEND_NAME/config} +# +#RUN sed -i "s,^\(mirror=\).*,\1\"${APT_MIRROR}\"," /live-sdk/blends/${BLEND_NAME}/config + + +# Add/remove packages not already in the blend +#RUN echo ""extra_packages+=( smartmontools gsmartcontrol ) >> /live-sdk/blends/${BLEND_NAME}/config +#RUN purge_packages+=( policykit-1) >> /live-sdk/blends/${BLEND_NAME}/config + +# Add hook scripts not all ready in the blend +#RUN echo "" > /live-sdk/blends/${BLEND_NAME}/hooks/hook.sh +#COPY common/hooks/hook.sh /live-sdk/blends/${BLEND_NAME}/hooks/hook.sh + +# Add custom debs not already in the blend +#RUN echo "custom_deb_packages+=( sanoid_1.4.14-1_amd64.deb )" >> /live-sdk/blends/${BLEND_NAME}/config +#COPY common/custom-packages/sanoid_1.4.14-1_amd64.deb /live-sdk/blends/${BLEND_NAME}/sanoid_1.4.14-1_amd64.deb + +## copy a get-selections from the livecd (install your prefered programs beforehand) +#dpkg --get-selections > /var/tmp/packages.list +#/usr/bin/apt-mark showauto > /var/tmp/pkgs_auto.lst +#/usr/bin/apt-mark showmanual > /var/tmp/pkgs_manual.lst +COPY packages.list blends/${BLEND_NAME}/packages.list +#COPY pkgs_auto.list blends/${BLEND_NAME}/pkgs_auto.list +#COPY pkgs_manual.list blends/${BLEND_NAME}/pkgs_manual.list + +COPY pkgs_auto.list-ascii blends/${BLEND_NAME}/pkgs_auto.list +COPY pkgs_manual.list-ascii blends/${BLEND_NAME}/pkgs_manual.list + +## Commit changes to the new blend repo +WORKDIR /live-sdk/blends/${BLEND_NAME} +RUN git add . +RUN git commit -m "Docker build: commit before push." +# ssh://git@git.ring-zero.co.uk:10022/sdk/blends/live-zfs-e17.git --all +RUN --mount=type=ssh git push ssh://git@${GITLAB_URL}:${GITLAB_PORT}/sdk/blends/${BLEND_NAME}.git --all + +SHELL ["/bin/zsh", "-c"] + +## Build sequence: +# source sdk +# load ${OS} ${ARCH} ${BLEND_NAME} +# AUTOMATE_HOME=${strapdir}/var/tmp/automate +# devprocsys umount ${strapdir} +## build_iso_dist() { +# bootstrap_complete_base +# (*) bootstrapping devuan amd64 base +# (*) running debootstrap stage 1 - retrieve and validate +# (*) running debootstrap stage 2 - unpack and configure +# (*) writing system configuration +# (*) running debootstrap stage 3 - mount and chroot +# (*) chrooting to execute thirdstage... +# writes file 'thirdstage' to the chroot +# bootstrap_config_thirdstage | sudo tee $strapdir/thirdstage >/dev/null +# +# and runs it with +# chroot-script -d thirdstage || zerr +# +# +# debconf-set-selections /debconf.set +# apt-get --yes --force-yes install ${core_packages_option} ${core_packages} +# apt-get --yes --force-yes install ${base_packages_option} ${base_packages} +# apt-get --yes --force-yes purge ${purge_packages_option} ${purge_packages} +# apt-get --yes --force-yes autoremove +# sed -e 's/# en_US.UTF-8/en_US.UTF-8/' -i /etc/locale.gen +# (*) Creating boostrap tarball in /live-sdk/tmp/bootstrap-devuan-amd64-stage3.tgz +# (*) chrooting to execute postunpack... - install blend debs +# +# cp -a ${live_sdk-$PWD/}automate ${strapdir}/var/tmp +# cp -a automate ${strapdir}/var/tmp +# +# blend_preinst from the blend file: +# (*) executing devuan-desktop-live_ preinst +# (*) adding user devuan:devuan +# (*) chrooting to execute adduser... add-user $username $userpass +# (*) copying blend-specific debs... cp -fv "$blend_release_path"/*.deb "$R/extra/custom-packages" +# +# devprocsys mount $strapdir +# chroot-script /var/tmp/automate/001_locales.sh +# chroot-script /var/tmp/automate/010_apt-get.sh +# chroot-script /var/tmp/automate/010_saltstack.sh +# chroot-script /var/tmp/automate/020_console.sh +# chroot-script /var/tmp/automate/020_zsh_quickstart.sh +# chroot-script /var/tmp/automate/020_zsh_aliases.d.sh +# chroot-script /var/tmp/automate/020_lsd.sh +# chroot-script /var/tmp/automate/020_grc.sh +# chroot-script /var/tmp/automate/010_alsa.sh +# chroot-script /var/tmp/automate/020_vim.sh +# chroot-script /var/tmp/automate/020_meld.sh +# chroot-script /var/tmp/automate/020_themes.sh +# chroot-script /var/tmp/automate/020_powerline-bash.sh +# chroot-script /var/tmp/automate/020_nanorc.sh +# chroot-script /var/tmp/automate/020_neovim.sh +# chroot-script /var/tmp/automate/020_neofetch_motd.sh +# chroot-script /var/tmp/automate/020_tmux.sh +# chroot-script /var/tmp/automate/020_rox-filer.sh +# chroot-script /var/tmp/automate/020_hexchat.sh +# chroot-script /var/tmp/automate/020_pidgin.sh +# chroot-script /var/tmp/automate/020_torbrowser.sh +# chroot-script /var/tmp/automate/050_wicd.sh +# chroot-script /var/tmp/automate/050_remove_xscreensaver.sh +# devprocsys umount $strapdir +# iso_prepare_strap +# (*) preparing strapdir for livecd +# (*) chrooting to execute isoprep... +# build_kernel_${arch} +# (*) installing stock kernel for amd64 +# (*) chrooting to execute install-linux... +# iso_setup_isolinux +# (*) setting up isolinux +# iso_write_isolinux_cfg +# (*) writing isolinux configuration +# (*) copying isolinux overlay +# blend_postinst from the blend file: +# install-custdebs +# chroot-script -d install-debs +# rsync the rootfs-overlay +# (*) executing devuan-desktop-live_ postinst +# (*) chrooting to execute install-debs... +# (*) chrooting to execute finalize... +# add user to groups: cdrom floppy audio dip video plugdev netdev lpadmin scanner +# set default shell +# copy the /root dotfiles to /home/${username} +# chown the home directory +# update-initramfs -u -k -all +# change sources.list to deb.debuan.org +# fill_apt_cache +# iso_squash_strap +# (*) creating squashfs out of strapdir +# iso_xorriso_build +# (*) building iso... +#} +#------------------------------------------------------------------------------------- +# Log creation order +# bootstrap_complete_base +# dpkgdivert.log +# postunpack.log +# thirdstage.log +# blend_preinst +# blend_postinst +# install-debs +# install-scripts.log +# adduser.log +# finalize.log +# +#------------------------------------------------------------------------------------- +# # Inject default background in e17 configuration (for all known profiles) +## eet -l e.cfg # list all keys, usually just "config" +## eet -d e.cfg config e.src # writes human readable values to file e.src +## $EDITOR e.src # change whatever you like +## eet -e e.cfg config e.src 1 # recompress to binary cfg file +# +# e.cfg +# enlightenment-standard.png +# module.conf.cfg +# module.fileman.cfg +# module.ibox.cfg +# module.temperature.cfg +# e_bindings.cfg +# module.battery.cfg +# module.cpufreq.cfg +# module.ibar.cfg +# module.pager.cfg +# profile.desktop +# +# E_CFG_HOME /usr/share/enlightenment/data/config +# +# for profile in mobile standard tiling default computer; do +# dpkg-divert --local --add ${E_CFG_HOME}/$profile/e.cfg +# eet -d ${E_CFG_HOME}/$profile/e.cfg config /var/tmp/e.src +# awk '/value "desktop_default_name"/ {print " value \"desktop_default_background\" string: \"/usr/share/enlightenment/data/backgrounds/kali-wallpaper_1920x1200.edj\";"}; {print}' /var/tmp/e.src >/var/tmp/e2.src +# eet -e ${E_CFG_HOME}/$profile/e.cfg config /var/tmp/e2.src 1 +# rm -f /tmp/e.src /tmp/e2.src +# done +#--------------------------------------------------------------------------------------- + +## RUN echo "#!/usr/bin/env zsh" > build-iso.zsh && \ +## echo "source sdk" >> build-iso.zsh && \ +## echo "load ${OS} ${ARCH} ${BLEND_NAME}" >> build-iso.zsh && \ +## echo "build_iso_dist" >> build-iso.zsh && \ +## chmod +x build-iso.zsh +#RUN ( \ +# ( echo "#!/usr/bin/env zsh"; \ +# echo "source sdk"; \ +# echo "load ${OS} ${ARCH} ${BLEND_NAME}"; \ +# echo "build_iso_dist" \ +# ) >> build-iso.zsh \ +# && chmod +x build-iso.zsh && ls -l build-iso.zsh && cat build-iso.zsh \ +# ) + +## COPY bin/build-iso.zsh build-iso.zsh +RUN source ${live_sdk-$PWD/}sdk && \ + load ${OS} ${ARCH} ${BLEND_NAME} && \ + bootstrap_complete_base || { zerr; wrapup } + +RUN blend_preinst || { zerr; wrapup } + +RUN iso_prepare_strap || { zerr; wrapup } && \ + build_kernel_${arch} || { zerr; wrapup } && \ + iso_setup_isolinux || { zerr; wrapup } && \ + iso_write_isolinux_cfg || { zerr; wrapup } + +#RUN blend_postinst || { zerr; wrapup } +# +#RUN fill_apt_cache || { zerr; wrapup } && \ +# iso_squash_strap || { zerr; wrapup } && \ + +# Final step to build the iso place in CMD +# iso_xorriso_build || { zerr; wrapup } + +#RUN ( ls -l build-iso.zsh; ./build-iso.zsh ) +#RUN cat ${SDK_CONFIG}; cat ${BLEND_CONFIG} + +### #ENTRYPOINT ["/bin/zsh", "-f", "-c", "source sdk"] +CMD ["iso_xorriso_build"] diff --git a/Dockerfile-submodule-e17.README b/Dockerfile-submodule-e17.README new file mode 100644 index 0000000..fe8fb0a --- /dev/null +++ b/Dockerfile-submodule-e17.README @@ -0,0 +1,19 @@ +Put your TEMPLATE_NAME blend under version control or choose someone else's. + +GITLAB_URL TEMPLATE_NAME BLEND_NAME are ARGS that can be passed to 'docker build', the passwords should be managed via ssh-agent + +NB. You might need docker 19.03 or above with + i. { "features": { "buildkit": true } } in /etc/docker/daemon.json + ii. # syntax = docker/dockerfile:1.1-experimental at the top of your Dockerfile + iii. RUN --mount=type=ssh before any command needing a password + +See https://docs.docker.com/develop/develop-images/build_enhancements/ + +Installing with 020_docker.sh will install from docker sources.list and configure these features. + + $ docker build --build-arg GITLAB_URL=git.devuan.org TEMPLATE_NAME=devuan-beowulf-live-e17 BLEND_NAME=live-zfs-e17 + +Change the URL for the submodules: +i. TEMPLATE_NAME the blend to base the new blend on. DEFAULT devuan-beowulf-live-e17 +ii. BLEND_NAME the new unique blend to create. DEFAULT live-zfs-e17 +iii. GITLAB_URL the repo address for the template and the new blend DEFAULT git.devuan.org diff --git a/Dockerfile-test b/Dockerfile-test new file mode 100644 index 0000000..e94c858 --- /dev/null +++ b/Dockerfile-test @@ -0,0 +1,330 @@ +# https://dev1galaxy.org/viewtopic.php?id=551 +#FROM devuan:jessie-slim +#FROM devuan:ascii-slim +FROM dyne/devuan:beowulf +ENV DEBIAN_FRONTEND noninteractive + +RUN echo 'Acquire::http { Proxy "http://192.168.1.49:3142"; };' > /etc/apt/apt.conf.d/02proxy +RUN apt-get update && apt-get -y upgrade + +RUN apt-get install -y xorriso squashfs-tools live-boot syslinux-common git zsh debootstrap sudo kpartx xz-utils sudo cgpt parted vim curl sed gawk bsdmainutils +RUN apt-get install -y live-build live-config live-config-sysvinit isolinux grub-efi-amd64-bin grub-common dosfstools gnutls-bin +#RUN apt-get install -y kpartx cgpt +#RUN git clone https://git.devuan.org/cyteen/live-sdk +RUN git clone https://git.devuan.org/sdk/live-sdk.git /live-sdk +WORKDIR /live-sdk +#RUN git submodule update --init --recursive --checkout +RUN pwd +RUN ls -lh +RUN git pull && git submodule update --init --recursive --checkout + +# sub modules might be behind current libdevuansdk git, if you require a more current version of libdevuansdk clone directly: +#WORKDIR /live-sdk/lib +#RUN rm -rf libdevuansdk +#RUN git clone https://git.devuan.org/sdk/libdevuansdk + +#WORKDIR /live-sdk +# NB now included in the live-sdk if extra does not have a syslinux directory with isolinux.bin +#mkdir -p /live-sdk/extra/syslinux + +# from package live-build +#cp /usr/share/live/build/bootloaders/isolinux/*.c32 /live-sdk/extra/syslinux +#cp /usr/share/live/build/bootloaders/isolinux/isolinux.bin /live-sdk/extra/syslinux + +# from package ISOLINUX +#cp /usr/lib/ISOLINUX/isohdpfx.bin /live-sdk/extra/syslinux + + +ENV USER_NAME "default" +ENV USER_PASS "default" +ENV DEFAULT_SHELL "/bin/zsh" + +ENV OS "devuan" +ENV ARCH "amd64" +ENV RELEASE "beowulf" +ENV VERSION 2.0.0 +ENV TEMPLATE_NAME "devuan-beowulf-live" +#ENV TEMPLATE_NAME "live-zfs" +ENV BLEND_NAME "live-zfs" +ENV BLEND_VERS "1.0" + +#ENV APT_MIRROR "http://192.168.44.47:3142/pkgmaster.devuan.org/merged" +ENV APT_MIRROR "http://pkgmaster.devuan.org/merged" + +ENV USE_HOOKS "yes" +ENV SECTION "main contrib non-free" +ENV IMAGE_NAME "${os}_${release}_${version}_${arch}_desktop" + +ENV SOURCES_LIST "${BLENDPATH}/sources.list" +ENV MANUAL_LIST "${BLENDPATH}/manual.list" +ENV AUTO_LIST "${BLENDPATH}/auto.list" + +COPY ./live-sdk/blends/${TEMPLATE_NAME} /live-sdk/blends/${BLEND_NAME} +RUN mv /live-sdk/blends/${BLEND_NAME}/${TEMPLATE_NAME}.blend /live-sdk/blends/${BLEND_NAME}/${BLEND_NAME}.blend + + +# Enable/disable UEFI - Currently code checks to see if the $mkefi is set not if it is yes or no and turning it off breaks the xorriso build options. +#ENV MKEFI "no" +#ENV GRUB_VER "grub-pc" +#ENV EFI_WORK "" +#RUN sed -i "s,^\(mkefi=\).*,\1\"${MKEFI}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i "s,^\(efi_work=\).*,\1\"${EFI_WORK}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i '/^mkefi=/s/^/# /' /live-sdk/blends/${BLEND_NAME}/config + +ENV MKEFI "yes" +ENV GRUB_VER "grub-efi-amd64" +ENV EFI_WORK "${BLENDPATH}/efi-files" +RUN sed -i '/# mkefi=/s/# /^/' /live-sdk/blends/${BLEND_NAME}/config + +#WORKDIR /live-sdk/blends/ +#RUN git clone https://git.devuan.org/cyteen/blends/live-zfs +#RUN git checkout -b ${BLEND_NAME} + +## Once working and building push to git +#RUN git push origin ${BLEND_NAME} + + +WORKDIR /live-sdk +# Add the new blend to the sdk blend_map so we can build it. +RUN pwd +RUN ls +RUN sed -i "/blend_map=.*/ s/.*/&\n\t\t\"${BLEND_NAME}\" \"\$R\/blends\/${BLEND_NAME}\/${BLEND_NAME}.blend\"/" sdk + +# Add call for sourceslist +#RUN sed -i "/install-custdebs.*/ s/.*/&\n\tinstall-packageslist || zerr/" sdk + +COPY bin/edit-config.sh /live-sdk/edit-config.sh + +# #!/bin/bash +# /live-sdk/edit-config.sh +# +# CONFIG_FILE="${2}" +# declare -A arr +# arr+=( "${1}" ) +# for TARGET_KEY in "${!arr[@]}"; do +# echo "x " ${TARGET_KEY} ${arr[${TARGET_KEY}]} ${CONFIG_FILE} +# if grep -q "^${TARGET_KEY}=" ${CONFIG_FILE}; then +# sed -i "s|^${TARGET_KEY}.*|${TARGET_KEY}=\"${arr[${TARGET_KEY}]}\"|" ${CONFIG_FILE} +# else +# sed -i "/^blend_name=.*/ s|.*|&\n${TARGET_KEY}=\"${arr[${TARGET_KEY}]}\"|" ${CONFIG_FILE} +# fi +# done + +# FIXME: Some settings in the blend config fail to override libdevuansdk/conf we should test setting in blend first to identify which ones are not imported. + +# Construct array for edit-config +# Taken from /live-sdk/lib/libdevuansdk/config +ENV CORE_PACKAGES \ + devuan-keyring \ + debian-keyring \ + ca-certificates \ + initramfs-tools \ + e2fsprogs \ + curl \ + less \ + vim \ + nano \ + sysvinit \ + "" + +ENV BASE_PACKAGES \ + apt-utils \ + dselect \ + parted \ + openssh-server \ + openssh-client \ + sudo \ + alsa-base \ + alsa-utils \ + mawk \ + tmux \ + screen \ + #openntpd \ + ntp \ + wpasupplicant \ + wireless-tools \ + elinks \ + firmware-linux-free \ + btrfs-tools \ + zsh \ + rsync \ + git-core \ + mlocate \ + "" + +#ENV PURGE_PACKAGES \ +# dbus \ +# "" + +ENV FINALIZE_PURGE_PACKAGES \ + avahi-daemon \ + avahi-autoipd \ + libavahi-common-data \ + libavahi-common3 \ + libavahi-glib1 \ + libavahi-client3 \ + cups-browsed \ + gvfs-daemon \ + libpam-gnome-keyring \ + pulseaudio \ + policykit-1 \ + xscreensaver \ + xscreensaver-data \ + "" + +ENV CORE_VALUES " \ + ["core_packages="]=${CORE_PACKAGES[@]} \ + " + +ENV BASE_VALUES " \ + ["base_packages="]=${BASE_PACKAGES[@]} \ + " + +ENV PURGE_VALUES " \ + ["purge_packages="]=${PURGE_PACKAGES[@]} \ + " + +ENV FINALIZE_PURGE_VALUES " \ + ["finalize_purge_packages="]=${FINALIZE_PURGE_PACKAGES[@]} \ + " + +ENV BLEND_CONFIG /live-sdk/blends/${BLEND_NAME}/config + +RUN edit-config-list.sh ${CORE_VALUES} ${BLEND_CONFIG} +RUN edit-config-list.sh ${BASE_VALUES} ${BLEND_CONFIG} +RUN edit-config-list.sh ${PURGE_VALUES} ${BLEND_CONFIG} + +# FIXME: Does edit-config.sh cope with multi-line variables in CONFIG_VALUES below. + +ENV SDK_CONFIG /live-sdk/lib/libdevuansdk/config + +#ENV CONFIG_VALUES " \ +# ["core_packages"]=${CORE_PACKAGES} \ +# ["base_packages"]=${BASE_PACKAGES} \ +# ["purge_packages"]=${PURGE_PACKAGES} \ +# " + +ENV CONFIG_VALUES " \ + ["os"]=${OS} \ + ["release"]=${RELEASE} \ + ["version"]=${VERSION} \ + ["mirror"]=${APT_MIRROR} \ + ["section"]=${SECTION} \ + ["image_name"]=${IMAGE_NAME} \ + " + +#RUN edit-config.sh ${CONFIG_VALUES} ${SDK_CONFIG} +RUN edit-config.sh ${CONFIG_VALUES} ${BLEND_CONFIG} + +ENV BLEND_CONFIG_VALUES " \ + ["user_name"]=${USER_NAME} \ + ["user_pass"]=${USER_PASS} \ + ["default-shell"]=${DEFAULT_SHELL} \ + ["blend_name"]=${BLEND_NAME} \ + ["blend_vers"]=${BLEND_VERS} \ + ["hookfile"]=${USE_HOOKS} \ + ["arch"]=${ARCH} \ + ["mkefi"]=${MKEFI} \ + ["efi-work"]=${EFI_WORK} \ + ["grubversion"]=${GRUB_VER} \ + ["sources_list"]=${SOURCES_LIST} \ + ["manual_list"]=${MANUAL_LIST} \ + ["auto_list"]=${AUTO_LIST} \ + " + +RUN edit-config.sh ${BLEND_CONFIG_VALUES} ${BLEND_CONFIG} + +# Add zfs var and arrs filesystems you would like to snapshot separately or +# apply and indiviual quota +#vars+=(zfs_poolname) +ENV ZFS_POOLNAME "rpool" + +#arrs+=(zfs_datasets) +ENV ZFS_DATASETS " \ + "/home" \ + "/home/${username}" \ + "/space" \ + "/opt" \ + "/tmp" \ + "/usr" \ + "/usr/share" \ + "/usr/local" \ + "/var" \ + "/var/cache" \ + "/var/cache/apt" \ + "/var/lib" \ + "/var/tmp" \ + "/var/lib/virt" \ + "/var/lib/lxc" \ + "/var/lib/docker" \ + "/var/log" \ + "/var/spool" \ + "/var/tmp" \ + " + +# Given on the load commandline +#RUN sed -i "s,^\(os=\).*,\1\"${OS}\"," /live-sdk/blends/${BLEND_NAME}/config + +#RUN sed -i "s,^\(blend_name=\).*,\1\"${BLEND_NAME}\"," /live-sdk/blends/${BLEND_NAME}/config +# +#RUN sed -i "s,^\(username=\).*,\1\"${USER_NAME}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i "s,^\(userpass=\).*,\1\"${USER_PASS}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i "s,^\(default_shell=\).*,\1\"${DEFAULT_SHELL}\"," /live-sdk/blends/${BLEND_NAME}/config +# +#RUN sed -i "s,^\(hookscripts=\).*,\1\"${USE_HOOKS}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i "s,^\(hookscripts=\).*,\1\"${USE_HOOKS}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i "s,^\(section=\).*,\1\"${SECTION}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i "s,^\(image_name=\).*,\1\"${IMAGE_NAME}\"," /live-sdk/blends/${BLEND_NAME}/config +# +#RUN sed -i "s,^\(grubversion=\).*,\1\"${GRUB_VER}\"," /live-sdk/blends/${BLEND_NAME}/config +# +##RUN sed -i "s,^\(blend_vers=\).*,\1\"${BLEND_VERS}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN grep -q '^blend_vers=' /live-sdk/blends/${BLEND_VERS}/config && \ +# sed -i "s/^blend_vers.*/mirror=${BLEND_VERS}/" /live-sdk/blends/${BLEND_NAME}/config || \ +# sed -i "/blend_name=.*/ s/.*/&\n^release=${BLEND_VERS}\"/" /live-sdk/blends/${BLEND_NAME/config} +# +##RUN sed -i "s,^\(release=\).*,\1\"${RELEASE}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN grep -q '^release=' /live-sdk/blends/${BLEND_NAME}/config && \ +# sed -i "s/^release.*/mirror=${RELEASE}/" /live-sdk/blends/${BLEND_NAME}/config || \ +# sed -i "/blend_name=.*/ s/.*/&\n^release=${RELEASE}\"/" /live-sdk/blends/${BLEND_NAME/config} +# +#RUN grep -q '^mirror=' /live-sdk/blends/${BLEND_NAME}/config && \ +# sed -i "s/^mirror.*/mirror=${APT_MIRROR}/" /live-sdk/blends/${BLEND_NAME}/config || \ +# sed -i "/blend_name=.*/ s/.*/&\n^mirror=${BLEND_NAME}\"/" /live-sdk/blends/${BLEND_NAME/config} +# +#RUN sed -i "s,^\(mirror=\).*,\1\"${APT_MIRROR}\"," /live-sdk/blends/${BLEND_NAME}/config + + +# Add/remove packages not already in the blend +#RUN echo ""extra_packages+=( smartmontools gsmartcontrol ) >> /live-sdk/blends/${BLEND_NAME}/config +#RUN purge_packages+=( policykit-1) >> /live-sdk/blends/${BLEND_NAME}/config + +# Add hook scripts not all ready in the blend +#RUN echo "" > /live-sdk/blends/${BLEND_NAME}/hooks/hook.sh +#COPY common/hooks/hook.sh /live-sdk/blends/${BLEND_NAME}/hooks/hook.sh + +# Add custom debs not already in the blend +#RUN echo "custom_deb_packages+=( sanoid_1.4.14-1_amd64.deb )" >> /live-sdk/blends/${BLEND_NAME}/config +#COPY common/custom-packages/sanoid_1.4.14-1_amd64.deb /live-sdk/blends/${BLEND_NAME}/sanoid_1.4.14-1_amd64.deb + +## copy a get-selections from the livecd (install your prefered programs beforehand) +#dpkg --get-selections > /var/tmp/packages.list +#/usr/bin/apt-mark showauto > /var/tmp/pkgs_auto.lst +#/usr/bin/apt-mark showmanual > /var/tmp/pkgs_manual.lst +COPY packages.list blend/${BLEND_NAME}/packages.list +#COPY pkgs_auto.list blend/${BLEND_NAME}/pkgs_auto.list +#COPY pkgs_manual.list blend/${BLEND_NAME}/pkgs_manual.list + +COPY pkgs_auto.list-ascii blend/${BLEND_NAME}/pkgs_auto.list +COPY pkgs_manual.list-ascii blend/${BLEND_NAME}/pkgs_manual.list + +SHELL ["/bin/zsh", "-c"] + +RUN echo "#!/usr/bin/env zsh" > build-iso.zsh && \ + echo "source sdk" >> build-iso.zsh && \ + echo "load ${OS} ${ARCH} ${BLEND_NAME}" >> build-iso.zsh && \ + echo "build_iso_dist" >> build-iso.zsh && \ + chmod +x build-iso.zsh + +#ENTRYPOINT ["/bin/zsh", "-f", "-c", "source sdk"] +CMD ["build-iso.zsh"] diff --git a/Dockerfile.david b/Dockerfile.david new file mode 100644 index 0000000..1db7972 --- /dev/null +++ b/Dockerfile.david @@ -0,0 +1,593 @@ +# https://dev1galaxy.org/viewtopic.php?id=551 +#FROM devuan:jessie-slim +#FROM devuan:ascii-slim +FROM dyne/devuan:beowulf +ENV DEBIAN_FRONTEND noninteractive + +RUN echo 'Acquire::http { Proxy "http://192.168.1.49:3142"; };' > /etc/apt/apt.conf.d/02proxy +RUN apt-get update && apt-get -y upgrade + +RUN apt-get install -y xorriso squashfs-tools live-boot syslinux-common git zsh debootstrap sudo kpartx xz-utils sudo cgpt parted vim curl sed gawk bsdmainutils rsync slim +RUN apt-get install -y live-build live-config live-config-sysvinit isolinux grub-efi-amd64-bin grub-common dosfstools gnutls-bin +#RUN apt-get install -y kpartx cgpt +#RUN git clone https://git.devuan.org/cyteen/live-sdk +RUN git clone https://git.devuan.org/sdk/live-sdk.git /live-sdk +WORKDIR /live-sdk +#RUN git submodule update --init --recursive --checkout +RUN pwd +RUN ls -lh +RUN git pull && git submodule update --init --recursive --checkout + +# sub modules might be behind current libdevuansdk git, if you require a more current version of libdevuansdk clone directly: +#WORKDIR /live-sdk/lib +#RUN rm -rf libdevuansdk +#RUN git clone https://git.devuan.org/sdk/libdevuansdk + +#WORKDIR /live-sdk +# NB now included in the live-sdk if extra does not have a syslinux directory with isolinux.bin +#mkdir -p /live-sdk/extra/syslinux + +# from package live-build +#cp /usr/share/live/build/bootloaders/isolinux/*.c32 /live-sdk/extra/syslinux +#cp /usr/share/live/build/bootloaders/isolinux/isolinux.bin /live-sdk/extra/syslinux + +# from package ISOLINUX +#cp /usr/lib/ISOLINUX/isohdpfx.bin /live-sdk/extra/syslinux + + +ENV USER_NAME "default" +ENV USER_PASS "default" + +ENV ROOT_CRED "root:toor" +ENV USER_CRED "${USER_NAME}:${USER_PASS}" + +ENV DEFAULT_SHELL "/bin/zsh" + +ENV OS "devuan" +ENV ARCH "amd64" +ENV RELEASE "beowulf" +ENV VERSION 2.0.0 +ENV TEMPLATE_NAME "devuan-beowulf-live_refracta" +#ENV TEMPLATE_NAME "live-zfs" +ENV BLEND_NAME "live-zfs" +ENV BLEND_VERS "3.0-test-$(date +%Y-%m-%d)" + +#ENV APT_MIRROR "http://192.168.44.47:3142/pkgmaster.devuan.org/merged" +ENV APT_MIRROR "https://deb.devuan.org/merged" +#ENV APT_MIRROR "https://pkgmaster.devuan.org/merged" + +ENV USE_HOOKS "yes" +ENV SECTION "main contrib non-free" +ENV RELEASE_CONF "$BLENDPATH/${release}/config" +ENV IMAGE_NAME "${OS}_${RELEASE}_${VERSION}_${ARCH}_desktop" +ENV BASE_PACKAGES_OPTION "--no-install-recommends" +ENV EXTRA_PACKAGES_OPTION "--no-install-recommends" + +ENV SOURCES_LIST "${BLENDPATH}/sources.list" +ENV MANUAL_LIST "${BLENDPATH}/manual.list" +ENV AUTO_LIST "${BLENDPATH}/auto.list" + +COPY ./live-sdk/blends/${TEMPLATE_NAME} /live-sdk/blends/${BLEND_NAME} +RUN mv /live-sdk/blends/${BLEND_NAME}/${TEMPLATE_NAME}.blend /live-sdk/blends/${BLEND_NAME}/${BLEND_NAME}.blend + + +# Enable/disable UEFI - Currently code checks to see if the $mkefi is set not if it is yes or no and turning it off breaks the xorriso build options. +ENV MKEFI "no" +ENV GRUB_VER "grub-pc" +ENV EFI_WORK "" +#RUN sed -i "s,^\(mkefi=\).*,\1\"${MKEFI}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i "s,^\(efi_work=\).*,\1\"${EFI_WORK}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i '/^mkefi=/s/^/# /' /live-sdk/blends/${BLEND_NAME}/config + +#ENV MKEFI "yes" +#ENV GRUB_VER "grub-efi-amd64" +#ENV EFI_WORK "${BLENDPATH}/efi-files" +#RUN sed -i '/# mkefi=/s/# /^/' /live-sdk/blends/${BLEND_NAME}/config + +#WORKDIR /live-sdk/blends/ +#RUN git clone https://git.devuan.org/cyteen/blends/live-zfs +#RUN git checkout -b ${BLEND_NAME} + +## Once working and building push to git +#RUN git push origin ${BLEND_NAME} + + +WORKDIR /live-sdk +# Add the new blend to the sdk blend_map so we can build it. +RUN pwd +RUN ls +RUN sed -i "/blend_map=.*/ s/.*/&\n\t\t\"${BLEND_NAME}\" \"\$R\/blends\/${BLEND_NAME}\/${BLEND_NAME}.blend\"/" sdk + +# Add call for sourceslist +#RUN sed -i "/install-custdebs.*/ s/.*/&\n\tinstall-packageslist || zerr/" sdk + +COPY bin/edit-config.sh /live-sdk/edit-config.sh + +# #!/bin/bash +# /live-sdk/edit-config.sh +# +# CONFIG_FILE="${2}" +# declare -A arr +# arr+=( "${1}" ) +# for TARGET_KEY in "${!arr[@]}"; do +# echo "x " ${TARGET_KEY} ${arr[${TARGET_KEY}]} ${CONFIG_FILE} +# if grep -q "^${TARGET_KEY}=" ${CONFIG_FILE}; then +# sed -i "s|^${TARGET_KEY}.*|${TARGET_KEY}=\"${arr[${TARGET_KEY}]}\"|" ${CONFIG_FILE} +# else +# sed -i "/^blend_name=.*/ s|.*|&\n${TARGET_KEY}=\"${arr[${TARGET_KEY}]}\"|" ${CONFIG_FILE} +# fi +# done + +# FIXME: Some settings in the blend config fail to override libdevuansdk/conf we should test setting in blend first to identify which ones are not imported. + +# Construct array for edit-config +# Taken from /live-sdk/lib/libdevuansdk/config +ENV CORE_PACKAGES \ + devuan-keyring \ + debian-keyring \ + ca-certificates \ + initramfs-tools \ + e2fsprogs \ + curl \ + less \ + vim \ + nano \ + sysvinit \ + "" + +ENV EXTRA_PACKAGES \ + librsvg2-common \ + fonts-quicksand \ + fonts-symbola \ + xserver-xorg-input-all \ + xserver-xorg-video-all \ + anacron \ + bluetooth \ + iw \ + powertop \ + vim-gtk \ + wireless-tools \ + wpasupplicant \ + tasksel \ + xfce4 \ + xfce4-goodies \ + xfce4-power-manager \ + xfce4-terminal \ + atril \ + dbus-x11 \ + hunspell-en-gb \ + hyphen-en-gb \ + mythes-en-us \ + synaptic \ + system-config-printer \ + tango-icon-theme \ + xsane \ + enlightenment \ + terminology \ + rox-filer \ + slim \ + libeina-bin \ + neovim \ + firmware-atheros \ + firmware-bnx2 \ + firmware-bnx2x \ + firmware-brcm80211 \ + firmware-intelwimax \ + firmware-iwlwifi \ + firmware-libertas \ + firmware-linux-nonfree \ + firmware-misc-nonfree \ + firmware-myricom \ + firmware-netxen \ + firmware-qlogic \ + firmware-ralink \ + firmware-realtek \ + firmware-ti-connectivity \ + firmware-zd1211 \ + sudo \ + yad \ + refractainstaller-gui \ + refractasnapshot-gui \ + linux-headers-amd64 \ + dkms \ + spl-dkms \ + zfs-dkms \ + #libreoffice \ + #libreoffice-gtk3 \ + #libreoffice-help-en-gb \ + #mousepad \ + #network-manager-gnome \ + #avahi-daemon \ + #lightdm \ + #quodlibet \ + #light-locker \ + #orca \ + "" + +RUN mkdir -p /live-sdk/blends/${BLEND_NAME}/${RELEASE}/rootfs-overlay/etc && \ + echo spl >> /live-sdk/blends/${BLEND_NAME}/${RELEASE}/rootfs-overlay/etc/modules && \ + echo zfs >> /live-sdk/blends/${BLEND_NAME}/${RELEASE}/rootfs-overlay/etc/modules + +## /etc/slim.conf +# login_cmd exec /bin/bash -login /etc/X11/Xsession %session +# sessiondir /usr/share/xsessions/ # contains enlightenment.desktop:Exec=/usr/bin/enlightenment and xfce.desktop:Exec=startxfce4 +# default_user devuan +# auto_login yes + +#RUN cp /etc/slim.conf /live-sdk/blends/${BLEND_NAME}/${RELEASE}/rootfs-overlay/etc/slim.conf +#RUN \ +# echo "# HELLO THERE!" >> /live-sdk/blends/${BLEND_NAME}/${RELEASE}/rootfs-overlay/etc/slim.conf && \ +# sed -i "s|^login_cmd.*|login_cmd exec /bin/sh - ~/.xinitrc \%session|" /live-sdk/blends/${BLEND_NAME}/${RELEASE}/rootfs-overlay/etc/slim.conf && \ +# sed -i "/^#.*auto_login/ s/^#//" /live-sdk/blends/${BLEND_NAME}/${RELEASE}/rootfs-overlay/etc/slim.conf && \ +# sed -i "s/^default_user.*/default_user\ ${USER_NAME}/" /live-sdk/blends/${BLEND_NAME}/${RELEASE}/rootfs-overlay/etc/slim.conf && \ +# sed -i "/^# default_user/ s/^#//" /live-sdk/blends/${BLEND_NAME}/${RELEASE}/rootfs-overlay/etc/slim.conf +# +#RUN cat /live-sdk/blends/${BLEND_NAME}/${RELEASE}/rootfs-overlay/etc/slim.conf >> /var/tmp/slim.conf + +RUN mkdir -p /live-sdk/blends/${BLEND_NAME}/${RELEASE}/rootfs-overlay/home/${USER_NAME} + +#RUN echo $'DEFAULT_SESSION=enlightenment_start\n\ +#\n\ +#case $session in\n\ +# enlightenment ) exec enlightenment_start ;;\n\ +# xfce|xfce4 ) exec startxfce4 ;;\n\ +# # No known session, try to run it as command\n\ +# *) exec $DEFAULT_SESSION ;;\n\ +#esac '\ +#>> /live-sdk/blends/${BLEND_NAME}/${RELEASE}/rootfs-overlay/home/${USER_NAME}/.xinitrc +# +#RUN cat /live-sdk/blends/${BLEND_NAME}/${RELEASE}/rootfs-overlay/home/${USER_NAME}/.xinitrc >> /var/tmp/xinitrc + + +ENV BASE_PACKAGES \ + apt-utils \ + dselect \ + parted \ + openssh-server \ + openssh-client \ + sudo \ + alsa-base \ + alsa-utils \ + mawk \ + tmux \ + screen \ + #openntpd \ + ntp \ + wpasupplicant \ + wireless-tools \ + elinks \ + firmware-linux-free \ + btrfs-tools \ + zsh \ + rsync \ + git-core \ + mlocate \ + "" + +ENV PURGE_PACKAGES \ + apparmor \ + apparmor-utils \ + auditd \ + apparmor-profiles \ + apparmor-profiles-extra \ + avahi-daemon \ + avahi-autoipd \ + libavahi-common-data \ + libavahi-common3 \ + libavahi-glib1 \ + libavahi-client3 \ + cups-browsed \ + gvfs-daemon \ + libpam-gnome-keyring \ + policykit-1 \ + pulseaudio \ + pulseaudio-utils \ + xscreensaver \ + xscreensaver-data \ + "" + +ENV CUSTOM_DEB_PACKAGES \ + dissenter-browser_0.70.122_amd64.deb \ + "" + +ENV FINALIZE_PURGE_PACKAGES \ + "" + +### ## ENV CORE_VALUES " \ +### ## ["core_packages="]=${CORE_PACKAGES[@]} \ +### ## " +### ## +### ## ENV BASE_VALUES " \ +### ## ["base_packages="]=${BASE_PACKAGES[@]} \ +### ## " +### ## +### ## ENV PURGE_VALUES " \ +### ## ["purge_packages="]=${PURGE_PACKAGES[@]} \ +### ## " +### ## +### ## ENV FINALIZE_PURGE_VALUES " \ +### ## ["finalize_purge_packages="]=${FINALIZE_PURGE_PACKAGES[@]} \ +### ## " + +ENV SDK_CONFIG /live-sdk/lib/libdevuansdk/config +ENV BLEND_CONFIG /live-sdk/blends/${BLEND_NAME}/config +ENV BLEND_PACKAGE_CONFIG /live-sdk/blends/${BLEND_NAME}/${RELEASE}/config + +#### # Bash-isms follow, so: +#### SHELL ["/bin/bash", "-c"] +#### +#### # Use sed to insert ..._package sections if missing. The Q42 is a forced exit status. +#### # Assumes the base_package stanza is present. +#### RUN ( \ +#### if $(sed -n -e "/^core_package/ Q42" ${BLEND_CONFIG} ); then sed -i "/^base_packages/ i\core_packages+=(\n)\n" ${BLEND_CONFIG}; fi; \ +#### # if $(sed -n -e "/^extra_package/ Q42" ${BLEND_CONFIG} ); then sed -i "/^base_packages/ i\EXTRA_packages+=(\n)\n" ${BLEND_CONFIG}; fi; \ +#### if $(sed -n -e "/^purge_package/ Q42" ${BLEND_CONFIG} ); then sed -i "/^base_packages/ i\purge_packages+=(\n)\n" ${BLEND_CONFIG}; fi; \ +#### # if $(sed -n -e "/^custom_deb_package/ Q42" ${BLEND_CONFIG} ); then sed -i "/^base_packages/ i\custom_deb_packages+=(\n)\n" ${BLEND_CONFIG}; fi; \ +#### # if $(sed -n -e "/^finalize_purge_package/ Q42" ${BLEND_CONFIG} ); then sed -i "/^base_packages/ i\finalize_purge_packages+=(\n)\n" ${BLEND_CONFIG}; fi; \ +#### # if $(sed -n -e "/^blend_package/ Q42" ${BLEND_CONFIG} ); then sed -i "/^base_packages/ i\blend_packages+=(\n)\n" ${BLEND_CONFIG}; fi; \ +#### # \ +#### # Use sed to replace block of values. \ +#### # This works and is copy/pasteable to a bash shell, but the '[@]' elements are not strictly needed in a Dockerfile. \ +#### # RUN ( \ +#### sed -i \ +#### -e "/^core_packages/,/^)$/ c\core_packages=(\n${CORE_PACKAGES[@]}\n)" \ +#### # -e "/^base_packages/,/^)$/ c\base_packages=(\n${BASE_PACKAGES[@]}\n)" \ +#### # -e "/^extra_packages/,/^)$/ i\extra_packages+=(\n${EXTRA_PACKAGES[@]}\n);Q" \ +#### -e "/^purge_packages/,/^)$/ c\purge_packages+=(\n${PURGE_PACKAGES[@]}\n)" \ +#### # -e "/^custom_deb_packages/,/^)$/ c\custom_deb_packages+=(\n${CUSTOM_DEB_PACKAGES[@]}\n)" \ +#### # -e "/^finalize_purge_packages/,/^)$/ c\finalize_purge_packages+=(\n${FINALIZE_PURGE_PACKAGES[@]}\n)" \ +#### ${BLEND_CONFIG}; \ +#### ## \ +#### ## Use sed to format the lists one per line, tabbed. \ +#### ## Works for not- and tab-indented lists. \ +#### ##RUN ( \ +#### sed -i \ +#### ## -e "/^core_packages/, /^)$/ { n; s/^/\t/; s/ \t/\n\t/g; s/ \([^\t]\)/\n\t\1/g; }" \ +#### ## -e "/^base_packages/, /^)$/ { n; s/^/\t/; s/ \t/\n\t/g; s/ \([^\t]\)/\n\t\1/g; }" \ +#### ### -e "/^extra_packages/,/^)$/ { n; s/^/\t/; s/ \t/\n\t/g; s/ \([^\t]\)/\n\t\1/g; }" \ +#### ## -e "/^purge_packages/,/^)$/ { n; s/^/\t/; s/ \t/\n\t/g; s/ \([^\t]\)/\n\t\1/g; }" \ +#### -e "/^custom_deb_packages/,/^)$/ { n; s/^/\t/; s/ \t/\n\t/g; s/ \([^\t]\)/\n\t\1/g; }" \ +#### ## -e "/^finalize_purge_packages/,/^)$/ { n; s/^/\t/; s/ \t/\n\t/g; s/ \([^\t]\)/\n\t\1/g; }" \ +#### ${BLEND_CONFIG}; \ +#### cat ${BLEND_CONFIG}; \ +#### ) + +### ## RUN edit-config-list.sh ${CORE_VALUES} ${BLEND_CONFIG} +### ## RUN edit-config-list.sh ${BASE_VALUES} ${BLEND_CONFIG} +### ## RUN edit-config-list.sh ${PURGE_VALUES} ${BLEND_CONFIG} +### ## +### ## # FIXME: Does edit-config.sh cope with multi-line variables in CONFIG_VALUES below. + + +### #ENV CONFIG_VALUES " \ +### # ["core_packages"]=${CORE_PACKAGES} \ +### # ["base_packages"]=${BASE_PACKAGES} \ +### # ["purge_packages"]=${PURGE_PACKAGES} \ +### # " + +# These values are over-ridden by the blend conf files so should probably only be changed when releasing sdk updates. +ENV SDK_CONFIG_VALUES "\ + ["os"]='${OS}' \ + ["release"]='${RELEASE}' \ + ["version"]='${VERSION}' \ + ["mirror"]='${APT_MIRROR}' \ + ["section"]='${SECTION}' \ + ["image_name"]='${IMAGE_NAME}' \ + ["rootcredentials"]='${ROOT_CRED}' \ + ["usercredentials"]='${USER_CRED}' \ + ["corepackages_option"]='' \ + ["core_packages"]='${CORE_PACKAGES}' \ + ["base_packages_option"]='' \ + ["base_packages"]='${BASE_PACKAGES}' \ + ["purge_packages_option"]='' \ + ["purge_packages"]='${PURGE_PACKAGES}' \ + " +#RUN /live-sdk/edit-config.sh "${CONFIG_VALUES}" ${SDK_CONFIG} + +ENV CONFIG_VALUES " \ + ["core_packages"]='${CORE_PACKAGES}' \ + ["base_packages"]='${BASE_PACKAGES}' \ + ["purge_packages"]='${PURGE_PACKAGES}' \ + ["extra_packages"]='${EXTRA_PACKAGES}' \ + ["custom_deb_packages"]='${CUSTOM_DEB_PACKAGES}' \ + ["finalize_purge_packages"]='${FINALIZE_PURGE_PACKAGES}' \ + " +RUN /live-sdk/edit-config.sh "${CONFIG_VALUES}" ${BLEND_PACKAGE_CONFIG} + + +#ENV CONFIG_VALUES " \ +# ["os"]='${OS}' \ +# ["release"]='${RELEASE}' \ +# ["version"]='${VERSION}' \ +# ["mirror"]='${APT_MIRROR}' \ +# ["section"]='${SECTION}' \ +# ["image_name"]='${IMAGE_NAME}' \ +# " +#RUN /live-sdk/edit-config.sh "${CONFIG_VALUES}" ${BLEND_CONFIG} + +ENV BLEND_CONFIG_VALUES " \ + ["blend_name"]='${BLEND_NAME}' \ + ["release"]='${RELEASE}' \ + ["version"]='${BLEND_VERS}' \ + ["user_name"]='${USER_NAME}' \ + ["user_pass"]='${USER_PASS}' \ + ["default-shell"]='${DEFAULT_SHELL}' \ + ["manual_list"]='${MANUAL_LIST}' \ + ["auto_list"]='${AUTO_LIST}' \ + ["grubversion"]='${GRUB_VER}' \ + ["mirror"]='${APT_MIRROR}' \ + ["section"]='${SECTION}' \ + ["release_conf"]='${RELEASE_CONF}' \ + ["image_name"]='${IMAGE_NAME}' \ + # ["mkefi"]='${MKEFI}' \ + # ["efi_work"]='${EFI_WORK}' \ + # ["base_packages_option"]='${BASE_PACKAGES_OPTION}' + # ["extra_packages_option"]='${EXTRA_PACKAGES_OPTION}' + # ["hookscripts"]='${USE_HOOKS}' \ + # ["arch"]='${ARCH}' \ + # ["sources_list"]='${SOURCES_LIST}' \ + " +RUN /live-sdk/edit-config.sh "${BLEND_CONFIG_VALUES}" ${BLEND_CONFIG} + +# Add zfs var and arrs filesystems you would like to snapshot separately or +# apply and indiviual quota +#vars+=(zfs_poolname) +ENV ZFS_POOLNAME "rpool" + +#arrs+=(zfs_datasets) +ENV ZFS_DATASETS " \ + "/home" \ + "/home/${username}" \ + "/space" \ + "/opt" \ + "/tmp" \ + "/usr" \ + "/usr/share" \ + "/usr/local" \ + "/var" \ + "/var/cache" \ + "/var/cache/apt" \ + "/var/lib" \ + "/var/tmp" \ + "/var/lib/virt" \ + "/var/lib/lxc" \ + "/var/lib/docker" \ + "/var/log" \ + "/var/spool" \ + "/var/tmp" \ + " + +# Given on the load commandline +#RUN sed -i "s,^\(os=\).*,\1\"${OS}\"," /live-sdk/blends/${BLEND_NAME}/config + +#RUN sed -i "s,^\(blend_name=\).*,\1\"${BLEND_NAME}\"," /live-sdk/blends/${BLEND_NAME}/config +# +#RUN sed -i "s,^\(username=\).*,\1\"${USER_NAME}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i "s,^\(userpass=\).*,\1\"${USER_PASS}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i "s,^\(default_shell=\).*,\1\"${DEFAULT_SHELL}\"," /live-sdk/blends/${BLEND_NAME}/config +# +#RUN sed -i "s,^\(hookscripts=\).*,\1\"${USE_HOOKS}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i "s,^\(hookscripts=\).*,\1\"${USE_HOOKS}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i "s,^\(section=\).*,\1\"${SECTION}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i "s,^\(image_name=\).*,\1\"${IMAGE_NAME}\"," /live-sdk/blends/${BLEND_NAME}/config +# +#RUN sed -i "s,^\(grubversion=\).*,\1\"${GRUB_VER}\"," /live-sdk/blends/${BLEND_NAME}/config +# +##RUN sed -i "s,^\(blend_vers=\).*,\1\"${BLEND_VERS}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN grep -q '^blend_vers=' /live-sdk/blends/${BLEND_VERS}/config && \ +# sed -i "s/^blend_vers.*/mirror=${BLEND_VERS}/" /live-sdk/blends/${BLEND_NAME}/config || \ +# sed -i "/blend_name=.*/ s/.*/&\n^release=${BLEND_VERS}\"/" /live-sdk/blends/${BLEND_NAME/config} +# +##RUN sed -i "s,^\(release=\).*,\1\"${RELEASE}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN grep -q '^release=' /live-sdk/blends/${BLEND_NAME}/config && \ +# sed -i "s/^release.*/mirror=${RELEASE}/" /live-sdk/blends/${BLEND_NAME}/config || \ +# sed -i "/blend_name=.*/ s/.*/&\n^release=${RELEASE}\"/" /live-sdk/blends/${BLEND_NAME/config} +# +#RUN grep -q '^mirror=' /live-sdk/blends/${BLEND_NAME}/config && \ +# sed -i "s/^mirror.*/mirror=${APT_MIRROR}/" /live-sdk/blends/${BLEND_NAME}/config || \ +# sed -i "/blend_name=.*/ s/.*/&\n^mirror=${BLEND_NAME}\"/" /live-sdk/blends/${BLEND_NAME/config} +# +#RUN sed -i "s,^\(mirror=\).*,\1\"${APT_MIRROR}\"," /live-sdk/blends/${BLEND_NAME}/config + + +# Add/remove packages not already in the blend +#RUN echo ""extra_packages+=( smartmontools gsmartcontrol ) >> /live-sdk/blends/${BLEND_NAME}/config +#RUN purge_packages+=( policykit-1) >> /live-sdk/blends/${BLEND_NAME}/config + +# Add hook scripts not all ready in the blend +#RUN echo "" > /live-sdk/blends/${BLEND_NAME}/hooks/hook.sh +#COPY common/hooks/hook.sh /live-sdk/blends/${BLEND_NAME}/hooks/hook.sh + +# Add custom debs not already in the blend +#RUN echo "custom_deb_packages+=( sanoid_1.4.14-1_amd64.deb )" >> /live-sdk/blends/${BLEND_NAME}/config +#COPY common/custom-packages/sanoid_1.4.14-1_amd64.deb /live-sdk/blends/${BLEND_NAME}/sanoid_1.4.14-1_amd64.deb + +## copy a get-selections from the livecd (install your prefered programs beforehand) +#dpkg --get-selections > /var/tmp/packages.list +#/usr/bin/apt-mark showauto > /var/tmp/pkgs_auto.lst +#/usr/bin/apt-mark showmanual > /var/tmp/pkgs_manual.lst +COPY packages.list blends/${BLEND_NAME}/packages.list +#COPY pkgs_auto.list blends/${BLEND_NAME}/pkgs_auto.list +#COPY pkgs_manual.list blends/${BLEND_NAME}/pkgs_manual.list + +COPY pkgs_auto.list-ascii blends/${BLEND_NAME}/pkgs_auto.list +COPY pkgs_manual.list-ascii blends/${BLEND_NAME}/pkgs_manual.list + +ENV AUTOMATE_HOME /live-sdk/blends/${BLEND_NAME}/${RELEASE}/rootfs-overlay/var/tmp/ +COPY automate ${AUTOMATE_HOME} +COPY automate /live-sdk/automate + +SHELL ["/bin/zsh", "-c"] + +## Build sequence: +# source sdk +# load ${OS} ${ARCH} ${BLEND_NAME} +# build_iso_dist() { +# bootstrap_complete_base +# (*) bootstrapping devuan amd64 base +# (*) running debootstrap stage 1 - retrieve and validate +# (*) running debootstrap stage 2 - unpack and configure +# (*) writing system configuration +# (*) running debootstrap stage 3 - mount and chroot +# (*) chrooting to execute thirdstage... +# (*) Creating boostrap tarball in /live-sdk/tmp/bootstrap-devuan-amd64-stage3.tgz +# (*) chrooting to execute postunpack... - install blend debs +# devprocsys mount $strapdir +# chroot-script /var/tmp/automate/001_locales.sh +# chroot-script /var/tmp/automate/010_alsa.sh +# chroot-script /var/tmp/automate/020_waterfox.sh +# chroot-script /var/tmp/automate/020_vim.sh +# chroot-script /var/tmp/automate/020_nanorc.sh +# chroot-script /var/tmp/automate/020_neovim.sh +# chroot-script /var/tmp/automate/020_neofetch_motd.sh +# chroot-script /var/tmp/automate/020_tmux.sh +# chroot-script /var/tmp/automate/020_rox-filer.sh +# chroot-script /var/tmp/automate/020_wicd.sh +# chroot-script /var/tmp/automate/050_xscreensaver.sh +# devprocsys umount $strapdir +# blend_preinst +# (*) executing devuan-desktop-live_ preinst +# (*) adding user devuan:devuan +# (*) chrooting to execute adduser... +# iso_prepare_strap +# (*) preparing strapdir for livecd +# (*) chrooting to execute isoprep... +# build_kernel_${arch} +# (*) installing stock kernel for amd64 +# (*) chrooting to execute install-linux... +# iso_setup_isolinux +# (*) setting up isolinux +# iso_write_isolinux_cfg +# (*) writing isolinux configuration +# (*) copying isolinux overlay +# blend_postinst +# (*) executing devuan-desktop-live_ postinst +# (*) chrooting to execute install-debs... +# (*) chrooting to execute finalize... +# fill_apt_cache +# iso_squash_strap +# (*) creating squashfs out of strapdir +# iso_xorriso_build +# (*) building iso... +#} + +## RUN echo "#!/usr/bin/env zsh" > build-iso.zsh && \ +## echo "source sdk" >> build-iso.zsh && \ +## echo "load ${OS} ${ARCH} ${BLEND_NAME}" >> build-iso.zsh && \ +## echo "build_iso_dist" >> build-iso.zsh && \ +## chmod +x build-iso.zsh +#RUN ( \ +# ( echo "#!/usr/bin/env zsh"; \ +# echo "source sdk"; \ +# echo "load ${OS} ${ARCH} ${BLEND_NAME}"; \ +# echo "build_iso_dist" \ +# ) >> build-iso.zsh \ +# && chmod +x build-iso.zsh && ls -l build-iso.zsh && cat build-iso.zsh \ +# ) + +COPY bin/build-iso.zsh build-iso.zsh +#RUN ( ls -l build-iso.zsh; ./build-iso.zsh ) + +RUN cat ${SDK_CONFIG}; cat ${BLEND_CONFIG} +### #ENTRYPOINT ["/bin/zsh", "-f", "-c", "source sdk"] +CMD ["./build-iso.zsh"] diff --git a/Dockerfile.markm b/Dockerfile.markm new file mode 100644 index 0000000..94ebc6c --- /dev/null +++ b/Dockerfile.markm @@ -0,0 +1,315 @@ +# https://dev1galaxy.org/viewtopic.php?id=551 +#FROM devuan:jessie-slim +#FROM devuan:ascii-slim +FROM dyne/devuan:beowulf +ENV DEBIAN_FRONTEND noninteractive + +RUN echo 'Acquire::http { Proxy "http://192.168.1.49:3142"; };' > /etc/apt/apt.conf.d/02proxy +RUN apt-get update && apt-get -y upgrade + +RUN apt-get install -y xorriso squashfs-tools live-boot syslinux-common git zsh debootstrap sudo kpartx xz-utils sudo cgpt parted vim curl sed gawk bsdmainutils +RUN apt-get install -y live-build live-config live-config-sysvinit isolinux grub-efi-amd64-bin grub-common dosfstools gnutls-bin +#RUN apt-get install -y kpartx cgpt +#RUN git clone https://git.devuan.org/cyteen/live-sdk +RUN git clone https://git.devuan.org/sdk/live-sdk.git /live-sdk +WORKDIR /live-sdk +#RUN git submodule update --init --recursive --checkout +RUN pwd +RUN ls -lh +RUN git pull && git submodule update --init --recursive --checkout + +# sub modules might be behind current libdevuansdk git, if you require a more current version of libdevuansdk clone directly: +#WORKDIR /live-sdk/lib +#RUN rm -rf libdevuansdk +#RUN git clone https://git.devuan.org/sdk/libdevuansdk + +#WORKDIR /live-sdk +# NB now included in the live-sdk if extra does not have a syslinux directory with isolinux.bin +#mkdir -p /live-sdk/extra/syslinux + +# from package live-build +#cp /usr/share/live/build/bootloaders/isolinux/*.c32 /live-sdk/extra/syslinux +#cp /usr/share/live/build/bootloaders/isolinux/isolinux.bin /live-sdk/extra/syslinux + +# from package ISOLINUX +#cp /usr/lib/ISOLINUX/isohdpfx.bin /live-sdk/extra/syslinux + + +ENV USER_NAME "default" +ENV USER_PASS "default" +ENV DEFAULT_SHELL "/bin/zsh" + +ENV OS "devuan" +ENV ARCH "amd64" +ENV RELEASE "beowulf" +ENV VERSION 2.0.0 +ENV TEMPLATE_NAME "devuan-beowulf-live" +#ENV TEMPLATE_NAME "live-zfs" +ENV BLEND_NAME "live-zfs" +ENV BLEND_VERS "1.0" + +#ENV APT_MIRROR "http://192.168.44.47:3142/pkgmaster.devuan.org/merged" +ENV APT_MIRROR "http://pkgmaster.devuan.org/merged" + +ENV USE_HOOKS "yes" +ENV SECTION "main contrib non-free" +ENV IMAGE_NAME "${os}_${release}_${version}_${arch}_desktop" + +ENV SOURCES_LIST "${BLENDPATH}/sources.list" +ENV MANUAL_LIST "${BLENDPATH}/manual.list" +ENV AUTO_LIST "${BLENDPATH}/auto.list" + +COPY ./live-sdk/blends/${TEMPLATE_NAME} /live-sdk/blends/${BLEND_NAME} +RUN mv /live-sdk/blends/${BLEND_NAME}/${TEMPLATE_NAME}.blend /live-sdk/blends/${BLEND_NAME}/${BLEND_NAME}.blend + + +# Enable/disable UEFI - Currently code checks to see if the $mkefi is set not if it is yes or no and turning it off breaks the xorriso build options. +#ENV MKEFI "no" +#ENV GRUB_VER "grub-pc" +#ENV EFI_WORK "" +#RUN sed -i "s,^\(mkefi=\).*,\1\"${MKEFI}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i "s,^\(efi_work=\).*,\1\"${EFI_WORK}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i '/^mkefi=/s/^/# /' /live-sdk/blends/${BLEND_NAME}/config + +ENV MKEFI "yes" +ENV GRUB_VER "grub-efi-amd64" +ENV EFI_WORK "${BLENDPATH}/efi-files" +RUN sed -i '/# mkefi=/s/# /^/' /live-sdk/blends/${BLEND_NAME}/config + +#WORKDIR /live-sdk/blends/ +#RUN git clone https://git.devuan.org/cyteen/blends/live-zfs +#RUN git checkout -b ${BLEND_NAME} + +## Once working and building push to git +#RUN git push origin ${BLEND_NAME} + + +WORKDIR /live-sdk +# Add the new blend to the sdk blend_map so we can build it. +RUN pwd +RUN ls +RUN sed -i "/blend_map=.*/ s/.*/&\n\t\t\"${BLEND_NAME}\" \"\$R\/blends\/${BLEND_NAME}\/${BLEND_NAME}.blend\"/" sdk + +# Add call for sourceslist +#RUN sed -i "/install-custdebs.*/ s/.*/&\n\tinstall-packageslist || zerr/" sdk + +COPY bin/edit-config.sh /live-sdk/edit-config.sh + +# FIXME: Some settings in the blend config fail to override libdevuansdk/conf we should test setting in blend first to identify which ones are not imported. + +# Construct array for edit-config +# Taken from /live-sdk/lib/libdevuansdk/config +ENV CORE_PACKAGES \ + devuan-keyring \ + debian-keyring \ + ca-certificates \ + initramfs-tools \ + e2fsprogs \ + curl \ + less \ + vim \ + nano \ + sysvinit \ + "" + +ENV BASE_PACKAGES \ + apt-utils \ + dselect \ + parted \ + openssh-server \ + openssh-client \ + sudo \ + alsa-base \ + alsa-utils \ + mawk \ + tmux \ + screen \ + #openntpd \ + ntp \ + wpasupplicant \ + wireless-tools \ + elinks \ + firmware-linux-free \ + btrfs-tools \ + zsh \ + rsync \ + git-core \ + mlocate \ + "" + +#ENV PURGE_PACKAGES \ +# dbus \ +# "" + +ENV FINALIZE_PURGE_PACKAGES \ + avahi-daemon \ + avahi-autoipd \ + libavahi-common-data \ + libavahi-common3 \ + libavahi-glib1 \ + libavahi-client3 \ + cups-browsed \ + gvfs-daemon \ + libpam-gnome-keyring \ + pulseaudio \ + policykit-1 \ + xscreensaver \ + xscreensaver-data \ + "" + +ENV CORE_VALUES \ + ["core_packages="]=${CORE_PACKAGES[@]} \ + "" + +ENV BASE_VALUES \ + ["base_packages="]=${BASE_PACKAGES[@]} \ + "" + +ENV PURGE_VALUES \ + ["purge_packages="]=${PURGE_PACKAGES[@]} \ + "" + +ENV FINALIZE_PURGE_VALUES \ + ["finalize_purge_packages="]=${FINALIZE_PURGE_PACKAGES[@]} \ + "" + +ENV BLEND_CONFIG /live-sdk/blends/${BLEND_NAME}/${RELEASE}/config + +RUN edit-config-list.sh ${CORE_VALUES} ${BLEND_CONFIG} +RUN edit-config-list.sh ${BASE_VALUES} ${BLEND_CONFIG} +RUN edit-config-list.sh ${PURGE_VALUES} ${BLEND_CONFIG} + +# FIXME: Does edit-config.sh cope with multi-line variables in CONFIG_VALUES below. + +ENV SDK_CONFIG /live-sdk/lib/libdevuansdk/config + +#ENV CONFIG_VALUES \ +# ["core_packages"]=${CORE_PACKAGES} \ +# ["base_packages"]=${BASE_PACKAGES} \ +# ["purge_packages"]=${PURGE_PACKAGES} \ +# "" + +ENV CONFIG_VALUES \ + ["os"]=${OS} \ + ["release"]=${RELEASE} \ + ["version"]=${VERSION} \ + ["mirror"]=${APT_MIRROR} \ + ["section"]=${SECTION} \ + ["image_name"]=${IMAGE_NAME} \ + "" + +#RUN edit-config.sh ${CONFIG_VALUES} ${SDK_CONFIG} +RUN edit-config.sh ${CONFIG_VALUES} ${BLEND_CONFIG} + +ENV BLEND_CONFIG_VALUES \ + ["user_name"]=${USER_NAME} \ + ["user_pass"]=${USER_PASS} \ + ["default-shell"]=${DEFAULT_SHELL} \ + ["blend_name"]=${BLEND_NAME} \ + ["blend_vers"]=${BLEND_VERS} \ + ["hookfile"]=${USE_HOOKS} \ + ["arch"]=${ARCH} \ + ["mkefi"]=${MKEFI} \ + ["efi-work"]=${EFI_WORK} \ + ["grubversion"]=${GRUB_VER} \ + ["sources_list"]=${SOURCES_LIST} \ + ["manual_list"]=${MANUAL_LIST} \ + ["auto_list"]=${AUTO_LIST} \ + "" + +RUN edit-config.sh ${BLEND_CONFIG_VALUES} ${BLEND_CONFIG} + +# Add zfs var and arrs filesystems you would like to snapshot separately or +# apply and indiviual quota +#vars+=(zfs_poolname) +ENV ZFS_POOLNAME "rpool" + +#arrs+=(zfs_datasets) +ENV ZFS_DATASETS \ + "/home" \ + "/home/${username}" \ + "/space" \ + "/opt" \ + "/tmp" \ + "/usr" \ + "/usr/share" \ + "/usr/local" \ + "/var" \ + "/var/cache" \ + "/var/cache/apt" \ + "/var/lib" \ + "/var/tmp" \ + "/var/lib/virt" \ + "/var/lib/lxc" \ + "/var/lib/docker" \ + "/var/log" \ + "/var/spool" \ + "/var/tmp" \ + "" + +# Given on the load commandline +#RUN sed -i "s,^\(os=\).*,\1\"${OS}\"," /live-sdk/blends/${BLEND_NAME}/config + +#RUN sed -i "s,^\(blend_name=\).*,\1\"${BLEND_NAME}\"," /live-sdk/blends/${BLEND_NAME}/config +# +#RUN sed -i "s,^\(username=\).*,\1\"${USER_NAME}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i "s,^\(userpass=\).*,\1\"${USER_PASS}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i "s,^\(default_shell=\).*,\1\"${DEFAULT_SHELL}\"," /live-sdk/blends/${BLEND_NAME}/config +# +#RUN sed -i "s,^\(hookscripts=\).*,\1\"${USE_HOOKS}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i "s,^\(hookscripts=\).*,\1\"${USE_HOOKS}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i "s,^\(section=\).*,\1\"${SECTION}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN sed -i "s,^\(image_name=\).*,\1\"${IMAGE_NAME}\"," /live-sdk/blends/${BLEND_NAME}/config +# +#RUN sed -i "s,^\(grubversion=\).*,\1\"${GRUB_VER}\"," /live-sdk/blends/${BLEND_NAME}/config +# +##RUN sed -i "s,^\(blend_vers=\).*,\1\"${BLEND_VERS}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN grep -q '^blend_vers=' /live-sdk/blends/${BLEND_VERS}/config && \ +# sed -i "s/^blend_vers.*/mirror=${BLEND_VERS}/" /live-sdk/blends/${BLEND_NAME}/config || \ +# sed -i "/blend_name=.*/ s/.*/&\n^release=${BLEND_VERS}\"/" /live-sdk/blends/${BLEND_NAME/config} +# +##RUN sed -i "s,^\(release=\).*,\1\"${RELEASE}\"," /live-sdk/blends/${BLEND_NAME}/config +#RUN grep -q '^release=' /live-sdk/blends/${BLEND_NAME}/config && \ +# sed -i "s/^release.*/mirror=${RELEASE}/" /live-sdk/blends/${BLEND_NAME}/config || \ +# sed -i "/blend_name=.*/ s/.*/&\n^release=${RELEASE}\"/" /live-sdk/blends/${BLEND_NAME/config} +# +#RUN grep -q '^mirror=' /live-sdk/blends/${BLEND_NAME}/config && \ +# sed -i "s/^mirror.*/mirror=${APT_MIRROR}/" /live-sdk/blends/${BLEND_NAME}/config || \ +# sed -i "/blend_name=.*/ s/.*/&\n^mirror=${BLEND_NAME}\"/" /live-sdk/blends/${BLEND_NAME/config} +# +#RUN sed -i "s,^\(mirror=\).*,\1\"${APT_MIRROR}\"," /live-sdk/blends/${BLEND_NAME}/config + + +# Add/remove packages not already in the blend +#RUN echo "extra_packages+=( smartmontools gsmartcontrol )" >> /live-sdk/blends/${BLEND_NAME}/config +#RUN echo "purge_packages+=( policykit-1)" >> /live-sdk/blends/${BLEND_NAME}/config + +# Add hook scripts not all ready in the blend +#RUN echo "" > /live-sdk/blends/${BLEND_NAME}/hooks/hook.sh +#COPY common/hooks/hook.sh /live-sdk/blends/${BLEND_NAME}/hooks/hook.sh + +# Add custom debs not already in the blend +#RUN echo "custom_deb_packages+=( sanoid_1.4.14-1_amd64.deb )" >> /live-sdk/blends/${BLEND_NAME}/config +#COPY common/custom-packages/sanoid_1.4.14-1_amd64.deb /live-sdk/blends/${BLEND_NAME}/sanoid_1.4.14-1_amd64.deb + +## copy a get-selections from the livecd (install your prefered programs beforehand) +#dpkg --get-selections > /var/tmp/packages.list +#/usr/bin/apt-mark showauto > /var/tmp/pkgs_auto.lst +#/usr/bin/apt-mark showmanual > /var/tmp/pkgs_manual.lst +COPY packages.list blend/${BLEND_NAME}/packages.list +#COPY pkgs_auto.list blend/${BLEND_NAME}/pkgs_auto.list +#COPY pkgs_manual.list blend/${BLEND_NAME}/pkgs_manual.list + +COPY pkgs_auto.list-ascii blend/${BLEND_NAME}/pkgs_auto.list +COPY pkgs_manual.list-ascii blend/${BLEND_NAME}/pkgs_manual.list + +SHELL ["/bin/zsh", "-c"] + +RUN echo "#!/usr/bin/env zsh" > build-iso.zsh && \ + echo "source sdk" >> build-iso.zsh && \ + echo "load ${OS} ${ARCH} ${BLEND_NAME}" >> build-iso.zsh && \ + echo "build_iso_dist" >> build-iso.zsh && \ + chmod +x build-iso.zsh + +#ENTRYPOINT ["/bin/zsh", "-f", "-c", "source sdk"] +CMD ["build-iso.zsh"] diff --git a/bin/build-iso.zsh b/bin/build-iso.zsh new file mode 100755 index 0000000..6b346a5 --- /dev/null +++ b/bin/build-iso.zsh @@ -0,0 +1,65 @@ +#!/usr/bin/env zsh + +source ${live_sdk-$PWD/}sdk +load ${OS} ${ARCH} ${BLEND_NAME} + +AUTOMATE_HOME=${strapdir}/var/tmp/automate + +devprocsys umount ${strapdir} +bootstrap_complete_base + +cp -a ${live_sdk-$PWD/}automate ${strapdir}/var/tmp + +# add log file for each script to silence warning. +for filename in ${AUTOMATE_HOME}/*.sh; +do + echo ${filename} + chmod +x ${filename} + touch ${filename}.log +done + +blend_preinst +iso_prepare_strap +build_kernel_${arch} +iso_setup_isolinux +iso_write_isolinux_cfg +blend_postinst +devprocsys mount ${strapdir} +chroot $strapdir /usr/bin/apt-get install -y grub-efi-amd64-bin grub-pc-bin grub2-common wget +chroot-script /var/tmp/automate/001_locales.sh +chroot-script /var/tmp/automate/001_resolvconf.sh +chroot-script /var/tmp/automate/001_sysctl.sh +chroot-script /var/tmp/automate/010_apt-get.sh +chroot-script /var/tmp/automate/010_zram.sh +chroot-script /var/tmp/automate/010_zfs.sh +chroot-script /var/tmp/automate/010_saltstack.sh +chroot-script /var/tmp/automate/020_console.sh +chroot-script /var/tmp/automate/020_zsh_quickstart.sh +chroot-script /var/tmp/automate/020_zsh_aliases.d.sh +chroot-script /var/tmp/automate/020_lsd.sh +chroot-script /var/tmp/automate/020_grc.sh +chroot-script /var/tmp/automate/010_alsa.sh +chroot-script /var/tmp/automate/020_vim.sh +chroot-script /var/tmp/automate/020_meld.sh +chroot-script /var/tmp/automate/020_themes.sh +chroot-script /var/tmp/automate/020_powerline-bash.sh +chroot-script /var/tmp/automate/020_fonts.sh +chroot-script /var/tmp/automate/020_nanorc.sh +chroot-script /var/tmp/automate/020_neovim.sh +chroot-script /var/tmp/automate/020_shellcheck.sh +chroot-script /var/tmp/automate/020_neofetch_motd.sh +chroot-script /var/tmp/automate/020_tmux.sh +chroot-script /var/tmp/automate/020_rox-filer.sh +chroot-script /var/tmp/automate/020_hexchat.sh +chroot-script /var/tmp/automate/020_pidgin.sh +chroot-script /var/tmp/automate/020_torbrowser.sh +chroot-script /var/tmp/automate/020_slim.sh +chroot-script /var/tmp/automate/020_docker.sh +chroot-script /var/tmp/automate/020_docker-compose.sh +chroot-script /var/tmp/automate/050_wicd.sh +chroot-script /var/tmp/automate/050_remove_xscreensaver.sh +devprocsys umount ${strapdir} +fill_apt_cache +iso_squash_strap +iso_xorriso_build + diff --git a/bin/edit-config-lists.sh b/bin/edit-config-lists.sh new file mode 100644 index 0000000..579b104 --- /dev/null +++ b/bin/edit-config-lists.sh @@ -0,0 +1,65 @@ +#!/bin/bash +#set -x +BASE_PACKAGES=( \ + apt-utils + dselect \ + parted \ + openssh-server \ + openssh-client \ + sudo \ + alsa-base \ + alsa-utils \ + mawk \ + tmux \ + screen \ + #openntpd \ + ntp \ + wpasupplicant \ + wireless-tools \ + elinks \ + firmware-linux-free \ + btrfs-tools \ + zsh \ + rsync \ + git-core \ + mlocate \ + ) +BASE_VALUES="["base_packages"]=${BASE_PACKAGES}" +CONFIG_FILE=$2 +#arr+=( ["blend_name"]="devuan-live" \ +# ["blend_vers"]="2.0" \ +# ["mirror"]="http://192.168.44.47:3142/pkgmaster.devuan.org/merged" \ +# ["release"]="ascii" ) + +echo "${BASE_PACKAGES[@]}" +#for VALUE in ${BASE_PACKAGES[@]}; do +# printf "V: " ${VALUE} +#done + +declare -A arr +#arr+=( $1 ) +arr+=( ["base_packages"]="${BASE_PACKAGES[@]}" ) + +for TARGET_KEY in "${!arr[@]}"; do + echo "B00 " "${TARGET_KEY}" "${arr["${TARGET_KEY}"]}" "${CONFIG_FILE}" + echo "B01 " "${TARGET_KEY}" "${arr["${TARGET_KEY[@]}"]}" "${CONFIG_FILE}" + echo "BO2 " '${!arr[@]}' "${!arr[@]}" + + for VALUE in ${arr["${TARGET_KEY[@]}"]}; do + echo "B04 " "${VALUE["${TARGET_KEY}"]}" + done + # if the key exists + if grep -q "^${TARGET_KEY}=" "${CONFIG_FILE}"; then + # For each of the values in the list + for VALUE in ${arr["${TARGET_KEY[@]}]"}; do + # Add the value under the target + sed -i "s|^${TARGET_KEY}.*|${TARGET_KEY}=\"${arr[${TARGET_KEY}]}\"|" "${CONFIG_FILE}" + done + else + # Under blend_name add the new key and add the value to it. + sed -i "/^blend_name=.*/ s|.*|&\n${TARGET_KEY}=\(\n\)|" "${CONFIG_FILE}" + for VALUE in ${arr["${TARGET_KEY[@]}]"}; do + sed -i "/^blend_name=.*/ s|.*|&\n${TARGET_KEY}=\"${arr[${TARGET_KEY}]}\"|" "${CONFIG_FILE}" + done + fi +done diff --git a/bin/edit-config.sh b/bin/edit-config.sh new file mode 100755 index 0000000..d25d3fd --- /dev/null +++ b/bin/edit-config.sh @@ -0,0 +1,65 @@ +#!/bin/bash +set -e +set -x +CONFIG_FILE="${2}" +#arr+=( ["blend_name"]="devuan-live" \ +# ["blend_vers"]="2.0" \ +# ["mirror"]="http://192.168.44.47:3142/pkgmaster.devuan.org/merged" \ +# ["release"]="ascii" ) + +declare -A arr +#arr+=( "${1}" ) +echo "edit-config.sh file: <"${2}">" +echo "edit-config.sh arr: <"${1}">" +eval "arr=(${1})" + +for TARGET_KEY in "${!arr[@]}"; do + echo ${TARGET_KEY} ${arr[${TARGET_KEY}]} ${CONFIG_FILE} + if grep -q "^${TARGET_KEY}[+]*=" ${CONFIG_FILE}; then + # sed -i "s|^${TARGET_KEY}[+]*.*|${TARGET_KEY}=\"${arr[${TARGET_KEY}]}\"|" ${CONFIG_FILE} + + # Replace multiline "${TARGET_KEY}=(...)" with "TARGET_KEY=(TARGET_VALUES)". + # Replace multiline "${TARGET_KEY}+=(...)" with "TARGET_KEY+=(TARGET_VALUES)". + sed -i -e "/${TARGET_KEY}\([+]*\)=(/{" \ + -e " :loop;s/^${TARGET_KEY}\([+]\)*=(.*)/TARGET_KEY\1=(TARGET_VALUES)/;t;N;b loop" \ + -e "}" \ + ${CONFIG_FILE} + # Replace "TARGET_KEY=(TARGET_VALUES)" with values from ${arr[]}. + # Works with "TARGET_KEY=(TARGET_VALUES)" and "TARGET_KEY+=(TARGET_VALUES)". + sed -i -e "s|^TARGET_KEY\([+]*\)=|${TARGET_KEY}\1=|;" \ + -e "s|TARGET_VALUES|${arr[${TARGET_KEY}]}|" \ + ${CONFIG_FILE} + else + # $TARGET_KEY is new to ${CONFIG_FILE} + # Assume $TARGET_KEY is not used elsewhere, so use "=" not "+=". + sed -i "/^blend_name=.*/ s|.*|&\n${TARGET_KEY}=\"${arr[${TARGET_KEY}]}\"|" ${CONFIG_FILE} + fi +done + +## sed -i "s|^${TARGET_KEY}.*|${TARGET_KEY}=\"${arr[${TARGET_KEY}]}\"|" ${CONFIG_FILE} +## +## sed -e "/${TARGET_KEY}[+]=(/{" -e ":loop;s/^${TARGET_KEY}=(.*)/(xTARGETx)/;t;N;b loop" -e "}" -e "s/^(xTARGETx)/${TARGET_KEY}=${arr[${TARGET_KEY}]}/" +## ${CONFIG_FILE} +## +## sed -e "/${TARGET_KEY}[+]=(/{" \ +## -e ":loop;s/^${TARGET_KEY}=(.*)/(xTARGETx)/;t;N;b loop" \ +## -e "}" \ +## -e "s/^(xTARGETx)/${TARGET_KEY}=${arr[${TARGET_KEY}]}/" +## +## Works: += +## +## cat config| sed -e "/${TARGET_KEY}\([+]*\)=(/{" -e " :loop;s/^${TARGET_KEY}+=(.*)/(xTARGETx)/;t;N;b loop" -e "}" -e "s/^(xTARGETx)/${TARGET_KEY}+=${arr[${TARGET_KEY}]}/" +## +## works: = +## +## cat config| sed -e "/${TARGET_KEY}\([+]*\)=(/{" -e " :loop;s/^${TARGET_KEY}=(.*)/(xTARGETx)/;t;N;b loop" -e "}" -e "s/^(xTARGETx)/${TARGET_KEY}+=${arr[${TARGET_KEY}]}/" +## +## works: both +## +## cat config| sed -e "/${TARGET_KEY}\([+]*\)=(/{" -e " :loop;s/^${TARGET_KEY}\([+]\)*=(.*)/TARGET_KEY\1=(TARGET_VALUES)/;t;N;b loop" -e "}" | sed -e "s/^TARGET_KEY\([+]*\)=/${TARGET_KEY}\1=/; s/TARGET_VALUES/${arr[${TARGET_KEY}]}/" +## +## formatted: +## +## cat config| sed -e "/${TARGET_KEY}\([+]*\)=(/{" +## -e " :loop;s/^${TARGET_KEY}\([+]\)*=(.*)/TARGET_KEY\1=(TARGET_VALUES)/;t;N;b loop" +## -e "}" | sed -e "s/^TARGET_KEY\([+]*\)=/${TARGET_KEY}\1=/; s/TARGET_VALUES/${arr[${TARGET_KEY}]}/" diff --git a/bin/edit-config.sh.markm b/bin/edit-config.sh.markm new file mode 100755 index 0000000..01a494c --- /dev/null +++ b/bin/edit-config.sh.markm @@ -0,0 +1,18 @@ +#!/bin/bash +CONFIG_FILE="${2}" +#arr+=( ["blend_name"]="devuan-live" \ +# ["blend_vers"]="2.0" \ +# ["mirror"]="http://192.168.44.47:3142/pkgmaster.devuan.org/merged" \ +# ["release"]="ascii" ) + +declare -A arr +arr+=( "${1}" ) + +for TARGET_KEY in "${!arr[@]}"; do + echo ${TARGET_KEY} ${arr[${TARGET_KEY}]} ${CONFIG_FILE} + if grep -q "^${TARGET_KEY}=" ${CONFIG_FILE}; then + sed -i "s|^${TARGET_KEY}.*|${TARGET_KEY}=\"${arr[${TARGET_KEY}]}\"|" ${CONFIG_FILE} + else + sed -i "/^blend_name=.*/ s|.*|&\n${TARGET_KEY}=\"${arr[${TARGET_KEY}]}\"|" ${CONFIG_FILE} + fi +done diff --git a/bin/fetch-blends.sh b/bin/fetch-blends.sh new file mode 100644 index 0000000..a2c8a77 --- /dev/null +++ b/bin/fetch-blends.sh @@ -0,0 +1,13 @@ +BLEND_URL[0]=http://distro.ibiblio.org/refracta/files/blends/jessie-oblx-blend.tar.gz +BLEND_URL[1]=http://distro.ibiblio.org/refracta/files/blends/simple-ice-blend.tar.gz +BLEND_URL[2]=http://distro.ibiblio.org/refracta/files/blends/devuan_2.0_desktop-live.blend.tar.gz + +# For some reason there is no containing directory +#BLEND_URL[3]=http://distro.ibiblio.org/refracta/files/blends/beowulf-blend.tar.gz + +for URL in ${BLEND_URL[@]} +do + wget -c -O - ${URL} | tar -C ${PWD}/blends -xzf - +done + +git clone https://github.com/headslive/build-system.git blends/heads-live diff --git a/build-plain.sh b/build-plain.sh new file mode 100644 index 0000000..023d8be --- /dev/null +++ b/build-plain.sh @@ -0,0 +1 @@ +docker build --no-cache -t markm/devuan-live-sdk-plain - < ./Dockerfile-plain diff --git a/build.sh b/build.sh new file mode 100644 index 0000000..c75d1da --- /dev/null +++ b/build.sh @@ -0,0 +1 @@ +docker build -t markm/devuan-live-sdk:latest -t markm/devuan-live-sdk -f ./Dockerfile-e17 . diff --git a/build_with_submodules.sh b/build_with_submodules.sh new file mode 100644 index 0000000..a2cacab --- /dev/null +++ b/build_with_submodules.sh @@ -0,0 +1,45 @@ +#\docker build -t markm/devuan-live-sdk:latest -t markm/devuan-live-sdk -f ./Dockerfile-e17 . + +# Gitlab credentials: +# GITLAB_USER +# GITLAB_URL + +# Gitlab personal repo +# TEMPLATE_NAME +# BLEND_NAME + +# Local git credentials +# GIT_EMAIL_NAME +# GIT_EMAIL_URL +# GIT_NAME + +# experimental: --squash \ + + #--ssh default=${SSH_AUTH_SOCK} \ + #--ssh default=/tmp/ssh-8l3EayCMOhTH/agent.15125 \ + #--network host \ + #--no-cache \ + #--progress=plain \ + +echo "ssh auth sock: ${SSH_AUTH_SOCK}" + +docker build \ + --squash \ + --progress=plain \ + --no-cache \ + --ssh default \ + --build-arg GITLAB_USER="cyteen" \ + --build-arg GITLAB_URL="git.ring-zero.co.uk" \ + --build-arg GITLAB_PORT="10022" \ + --build-arg APT_MIRROR="https://pkgmaster.devuan.org/merged" \ + --build-arg TEMPLATE_NAME="devuan-beowulf-live-e17" \ + --build-arg RELEASE="beowulf" \ + --build-arg BLEND_NAME="live-zfs-e17" \ + --build-arg BLEND_VERS="3.0-test-$(date +%Y-%m-%d)" \ + --build-arg GIT_EMAIL_NAME="cyteen" \ + --build-arg GIT_EMAIL_URL="ring-zero.co.uk" \ + --build-arg GIT_NAME="Cyteen May" \ + -t markm/devuan-live-sdk_sm:latest \ + -t markm/devuan-live-sdk_sm \ + -f ./Dockerfile-submodule-e17 \ + . diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..863d84c --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,24 @@ +version: "3.8" +services: + devuan-live-sdk: + image: markm/devuan-live-sdk_sm:latest + build: + context: . + dockerfile: Dockerfile-submodule-e17 + args: + GITLAB_USER: ${GITLAB_USER} + GITLAB_URL: ${GITLAB_URL} + GITLAB_PORT: ${GITLAB_PORT} + APT_MIRROR: ${APT_MIRROR} + TEMPLATE_NAME: ${TEMPLATE_NAME} + RELEASE: ${RELEASE} + BLEND_NAME: ${BLEND_NAME} + BLEND_VERS: ${BLEND_VERS} + GIT_EMAIL_NAME: ${GIT_EMAIL_NAME} + GIT_EMAIL_URL: ${GIT_EMAIL_URL} + GIT_NAME: ${GIT_NAME} + volumes: + - ./dist:/live-sdk/dist + - ./log:/live-sdk/log + privileged: true + command: -- diff --git a/extra/syslinux/hdt.c32 b/extra/syslinux/hdt.c32 new file mode 100644 index 0000000000000000000000000000000000000000..4c3772a1614d08b77e686a460cd5b2b25931b7cf GIT binary patch literal 164096 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%0D1? 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 Q1HT#g&A@L4{+|r|2mbEU1ONa4 literal 0 HcmV?d00001 diff --git a/extra/syslinux/ldlinux.c32 b/extra/syslinux/ldlinux.c32 new file mode 100644 index 0000000000000000000000000000000000000000..b9a08497b998855275f667b85450bc71b82b87e0 GIT binary patch literal 116624 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 p;?HPrh@v#@|@r=D*u+Izj zd&2=Q_{0kidc&vQaL5}Dd&3d0IO+|@yy7#jDDsNWz2dlceBl)*yyHvnIO!c2Li}1Geyb3_SBO6<#@UK- zu0ouz7#AwR#fovM5|mVo%a!0tCAeA{{;UMoD#P{4@Ku`;3R@~Xd8?Vy^fI-zRrZ}C6w&j;iNd>;^2 zZF#lZ)kap|SDml1pvLVQ&(}Ozv(GczpJ`QVO|6=>7u5ExGZU{D&8q8HZ(+S!_1D!8 zZ17QosD|G))HQn4Xl3J0O^!FwHB~m-(rj?^+s)Uth;4bR<(qs`E5FuzTbtW-XnU#c z#=s0%9mN=WXE>PM*0j`of0EAn zgKc2Wp~*dScTEkOzH>(Rmp+*pKl{|2@$+ux&0WxR(XPcwOK-fqY+1Jzzpl(%9k%BD z+Ewck*DE&ce(`q8J>=%> z+xuXx>-xaR;^4%TF?@1VY}~M+9Qmba)3c0t^&?Y{g*Yq(azj%S zV-utBQB{i>7G9gyAROW=7x;dh@GboAw8!2ujEpaqY?+lCBp>8H60fj)-6kL3~)jQ z;ZI;jEc+Wn9^JC(FZ~IluuvgF0@qZ_H4W^~H4P5onzoNtw1K0A2V_BHXEq?!KuRT? zuydc$Kxj)`?2@!03AkLlM{}49B~RdrX##3=O-M)=BnUo(eblpAI<=doA1L-hC3U41zZPi2ls;% zcKI&;6%TTH?FPqv3KG_zRd7AQ;y)BzU+~6x1vddabxy%m2hE@Oa0|dU!9C!&;1%$6 zS0C;h@H*H5{~5@7LBSooq~J^!72J%=bQSzVf~yMd3TVHs;P`6_F8pu7zxPcAH~Wr) z+jko`0P5)f5dll!f8wsd#c+v)-f)}$qu`d@Q*hl&6Y(f7W|V56TbZM z6#qjBgdB9%RRN6HgbUpfUsX0|tQ+U_6)#>cAW@56lM(z(TMHECx%!Qc$Ty zdN2r#0OP?_PzUCKd0;+R02YEpU@=$%mV!zh(t|-@1Q-vdg0Q}GIba@`4;FxhU=dgh zmVl+8G85^+ATR=q2U9^Em;>g4`CtK92o{0GUzfjM9vm=6|! zgbUpi+ z;4|=NE9r3An*!t}4vB-qvBi0~^sWiX^o|2_>9rt$Hmft4c2bipx@>zoWP07{ONrw=F+QUB-1O=0Nv+I+~Qd}kl|Q~4>$cYAFfAp zAFcs-9shLeA$Xkr`4->@N{=Eesc%9|OfSBDtTqj=X7l0dp6am9p&`M-5yz>mS=c^f z)1-0gOru?meXUuXIwRMJkBJJd&BCcIS_AnB2WEqfQ?oZF)fN+5^H-;1_ktDCX?rZi z#e1$4Uz4p*$7xN7k3VXbP)LwwMRe>B$fj3%o*2~-vlMeX-RUZkTWfGkKcJJ)y%Xz$ z6qn+WUO_zDTF@t`Oejt*usP@pQasW_h@^i=kcvJK9{wQ3BYlHN`Uc4aI-d$ugA^|s zB>jX)dJDxOLN9MieUZyDxQqPY$P5tKKIOG>X44Ud zb-vX?e+1X#({mCiZv<*^C<=DZh6B)NK`D&F>6!#;;B*x#8yn&f4>&LDh=;Gkv3sC+ zq(2bXis|4u?l%p`()o@f4$;r;d~|J0v5t78_YpTqnG(-OB8E~&Jo7R1doaT7e2Bt| zjP8%}cL;r^0Bp~C9ffin&;D}wj<#^V5K*Rh)HWp0sU_06BpgM&xsm`^%EJEv=fW{y literal 0 HcmV?d00001 diff --git a/extra/syslinux/libutil.c32 b/extra/syslinux/libutil.c32 new file mode 100644 index 0000000000000000000000000000000000000000..161039117191eff50f80a3cd09bab583d14a87c6 GIT binary patch literal 23480 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 K6+ptF&wm3nuB<@- literal 0 HcmV?d00001 diff --git a/extra/syslinux/vesamenu.c32 b/extra/syslinux/vesamenu.c32 new file mode 100644 index 0000000000000000000000000000000000000000..31cf3ba13b84793aaf71b1d9e0fecb20fa8808d3 GIT binary patch literal 26188 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 Wp&#=?fwDrs;h