about summary refs log tree commit diff
path: root/mkrootfs.sh.in
diff options
context:
space:
mode:
Diffstat (limited to 'mkrootfs.sh.in')
-rw-r--r--mkrootfs.sh.in27
1 files changed, 18 insertions, 9 deletions
diff --git a/mkrootfs.sh.in b/mkrootfs.sh.in
index bedcb0c..583044c 100644
--- a/mkrootfs.sh.in
+++ b/mkrootfs.sh.in
@@ -56,6 +56,7 @@ Options
     -h          Show this help
     -p <pkgs>   Additional packages to install into the rootfs (separated by blanks)
     -r <repo>   Set XBPS repository (may be set multiple times)
+    -k <cmd>    Call "cmd <ROOTFSPATH>" after building the rootfs
     -V          Show version
 _EOF
 }
@@ -75,7 +76,10 @@ umount_pseudofs() {
 
 run_cmd_target() {
     info_msg "Running $@ for target $_ARCH ..."
-    eval XBPS_TARGET_ARCH=${_TARGET_ARCH:=${_ARCH}} "$@"
+    case "${_TARGET_ARCH}" in
+        i686*|x86_64*) eval XBPS_ARCH=${_TARGET_ARCH} "$@";;
+        *) eval XBPS_TARGET_ARCH=${_TARGET_ARCH:=${_ARCH}} "$@";;
+    esac
     [ $? -ne 0 ] && die "Failed to run $@"
 }
 
@@ -104,7 +108,7 @@ register_binfmt() {
 #
 # main()
 #
-while getopts "b:C:c:hp:r:V" opt; do
+while getopts "b:C:c:hp:r:k:V" opt; do
     case $opt in
         b) PKGBASE="$OPTARG";;
         C) XBPS_CONFFILE="-C $OPTARG";;
@@ -112,6 +116,7 @@ while getopts "b:C:c:hp:r:V" opt; do
         h) usage; exit 0;;
         p) EXTRA_PKGS="$OPTARG";;
         r) XBPS_REPOSITORY="$XBPS_REPOSITORY --repository=$OPTARG";;
+        k) POST_HOOK="$OPTARG";;
         V) echo "$PROGNAME @@MKLIVE_VERSION@@"; exit 0;;
     esac
 done
@@ -121,10 +126,8 @@ PLATFORM="$1"
 SUBPLATFORM=$PLATFORM
 
 case "$PLATFORM" in
-    i686-musl) _TARGET_ARCH="$PLATFORM"; _ARCH="i386";;
-    i686) _TARGET_ARCH="$PLATFORM"; _ARCH="i386";;
-    x86_64-musl) _TARGET_ARCH="$PLATFORM"; _ARCH="x86_64";;
-    x86_64) _TARGET_ARCH="$PLATFORM"; _ARCH="x86_64";;
+    i686*) _TARGET_ARCH="$PLATFORM"; _ARCH="i686";;
+    x86_64*) _TARGET_ARCH="$PLATFORM"; _ARCH="x86_64";;
     dockstar) _TARGET_ARCH="armv5tel"; _ARCH="armv5tel";;
     rpi-musl) _TARGET_ARCH="armv6l-musl"; _ARCH="armv6l";;
     rpi) _TARGET_ARCH="armv6l"; _ARCH="armv6l";;
@@ -134,7 +137,10 @@ esac
 
 : ${XBPS_REPOSITORY:=--repository=http://repo.voidlinux.eu/current --repository=http://muslrepo.voidlinux.eu/current}
 : ${XBPS_CACHEDIR:=--cachedir=$PWD/xbps-cachedir-${_TARGET_ARCH}}
-: ${PKGBASE:=base-system}
+case "$PLATFORM" in
+    i686*|x86_64*) PKGBASE="base-voidstrap";;
+    *) PKGBASE="base-system";;
+esac
 
 if [ -z "$PLATFORM" ]; then
     echo "$PROGNAME: platform was not set!"
@@ -184,7 +190,7 @@ run_cmd_target "xbps-query -R -r $rootfs $XBPS_CONFFILE $XBPS_CACHEDIR $XBPS_REP
 chmod 755 $rootfs
 
 case "$PLATFORM" in
-    i686*|x86_64*) PKGS="${PKGBASE} grub" ;;
+    i686*|x86_64*) PKGS="${PKGBASE}" ;;
     *) PKGS="${PKGBASE} ${SUBPLATFORM}-base" ;;
 esac
 [ -n "$EXTRA_PKGS" ] && PKGS="${PKGS} ${EXTRA_PKGS}"
@@ -209,7 +215,7 @@ if [ -n "${_ARCH}" ]; then
     info_msg "Reconfiguring packages for ${_ARCH} ..."
     case "$PLATFORM" in
         i686*|x86_64*)
-            run_cmd "XBPS_ARCH=$_ARCH xbps-reconfigure -r $rootfs base-files"
+            run_cmd "XBPS_ARCH=${PLATFORM} xbps-reconfigure -r $rootfs base-files"
             ;;
         *)
             register_binfmt
@@ -226,6 +232,9 @@ fi
 # Setup default root password.
 #
 run_cmd "chroot $rootfs sh -c 'echo "root:voidlinux" | chpasswd -c SHA512'"
+if [ -n "$POST_HOOK" ]; then
+    run_cmd "$POST_HOOK $rootfs"
+fi
 umount_pseudofs
 #
 # Cleanup rootfs.