diff --git a/README.md b/README.md index 44b3f6d..4200150 100644 --- a/README.md +++ b/README.md @@ -136,6 +136,7 @@ OPTIONS -s Compression type for the squashfs image (default: xz) -o Output file name for the ISO image (default: automatic) -p " ..." Install additional packages in the ISO image + -g " ..." Ignore packages when building the ISO image -I Include directory structure under given path in the ROOTFS -S " ..." Enable services in the ISO image -C " ..." Add additional kernel command line arguments diff --git a/mklive.sh b/mklive.sh index a1d4a5c..2ea3d09 100755 --- a/mklive.sh +++ b/mklive.sh @@ -83,6 +83,7 @@ usage() { -s Compression type for the squashfs image (default: xz) -o Output file name for the ISO image (default: automatic) -p " ..." Install additional packages in the ISO image + -g " ..." Ignore packages when building the ISO image -I Include directory structure under given path in the ROOTFS -S " ..." Enable services in the ISO image -C " ..." Add additional kernel command line arguments @@ -139,6 +140,13 @@ install_packages() { rm -rf "$ROOTFS"/var/cache/* "$ROOTFS"/run/* "$ROOTFS"/var/run/* } +ignore_packages() { + mkdir -p "$ROOTFS"/etc/xbps.d + for pkg in $IGNORE_PKGS; do + echo "ignorepkg=$pkg" >> "$ROOTFS"/etc/xbps.d/mklive-ignore.conf + done +} + enable_services() { SERVICE_LIST="$*" for service in $SERVICE_LIST; do @@ -302,28 +310,29 @@ generate_iso_image() { # # main() # -while getopts "a:b:r:c:C:T:Kk:l:i:I:S:s:o:p:v:Vh" opt; do - case $opt in - a) BASE_ARCH="$OPTARG";; - b) BASE_SYSTEM_PKG="$OPTARG";; - r) XBPS_REPOSITORY="--repository=$OPTARG $XBPS_REPOSITORY";; - c) XBPS_CACHEDIR="$OPTARG";; - K) readonly KEEP_BUILDDIR=1;; - k) KEYMAP="$OPTARG";; - l) LOCALE="$OPTARG";; - i) INITRAMFS_COMPRESSION="$OPTARG";; - I) INCLUDE_DIRS+=("$OPTARG");; - S) SERVICE_LIST="$SERVICE_LIST $OPTARG";; - s) SQUASHFS_COMPRESSION="$OPTARG";; - o) OUTPUT_FILE="$OPTARG";; - p) PACKAGE_LIST="$PACKAGE_LIST $OPTARG";; - C) BOOT_CMDLINE="$OPTARG";; - T) BOOT_TITLE="$OPTARG";; - v) LINUX_VERSION="$OPTARG";; - V) version; exit 0;; - h) usage; exit 0;; - *) usage >&2; exit 1;; - esac +while getopts "a:b:r:c:C:T:Kk:l:i:I:S:s:o:p:g:v:Vh" opt; do + case $opt in + a) BASE_ARCH="$OPTARG";; + b) BASE_SYSTEM_PKG="$OPTARG";; + r) XBPS_REPOSITORY="--repository=$OPTARG $XBPS_REPOSITORY";; + c) XBPS_CACHEDIR="$OPTARG";; + g) IGNORE_PKGS="$IGNORE_PKGS $OPTARG" ;; + K) readonly KEEP_BUILDDIR=1;; + k) KEYMAP="$OPTARG";; + l) LOCALE="$OPTARG";; + i) INITRAMFS_COMPRESSION="$OPTARG";; + I) INCLUDE_DIRS+=("$OPTARG");; + S) SERVICE_LIST="$SERVICE_LIST $OPTARG";; + s) SQUASHFS_COMPRESSION="$OPTARG";; + o) OUTPUT_FILE="$OPTARG";; + p) PACKAGE_LIST="$PACKAGE_LIST $OPTARG";; + C) BOOT_CMDLINE="$OPTARG";; + T) BOOT_TITLE="$OPTARG";; + v) LINUX_VERSION="$OPTARG";; + V) version; exit 0;; + h) usage; exit 0;; + *) usage >&2; exit 1;; + esac done shift $((OPTIND - 1)) XBPS_REPOSITORY="$XBPS_REPOSITORY --repository=https://repo-default.voidlinux.org/current --repository=https://repo-default.voidlinux.org/current/musl" @@ -372,6 +381,7 @@ GRUB_DIR="$BOOT_DIR/grub" CURRENT_STEP=0 STEP_COUNT=10 [ "${#INCLUDE_DIRS[@]}" -gt 0 ] && STEP_COUNT=$((STEP_COUNT+1)) +[ -n "${IGNORE_PKGS}" ] && STEP_COUNT=$((STEP_COUNT+1)) : ${SYSLINUX_DATADIR:="$VOIDHOSTDIR"/usr/lib/syslinux} : ${GRUB_DATADIR:="$VOIDHOSTDIR"/usr/share/grub} @@ -420,6 +430,11 @@ mkdir -p "$ROOTFS"/etc [ -s data/motd ] && cp data/motd "$ROOTFS"/etc [ -s data/issue ] && cp data/issue "$ROOTFS"/etc +if [ -n "$IGNORE_PKGS" ]; then + print_step "Ignoring packages in the rootfs: ${IGNORE_PKGS} ..." + ignore_packages +fi + print_step "Installing void pkgs into the rootfs: ${PACKAGE_LIST} ..." install_packages