summaryrefslogtreecommitdiff
path: root/adelie-build-txz
diff options
context:
space:
mode:
authorA. Wilcox <AWilcox@Wilcox-Tech.com>2020-02-06 01:49:59 -0600
committerA. Wilcox <AWilcox@Wilcox-Tech.com>2020-02-06 01:49:59 -0600
commit8dabe8373558c656a84eb921694e57f967408da0 (patch)
tree2ba505ee50b8ca681202a8ef47996da7813874a2 /adelie-build-txz
parentf6be8b0e80d2decd17215678813b739d9f158f0f (diff)
downloadimage-8dabe8373558c656a84eb921694e57f967408da0.tar.gz
image-8dabe8373558c656a84eb921694e57f967408da0.tar.bz2
image-8dabe8373558c656a84eb921694e57f967408da0.tar.xz
image-8dabe8373558c656a84eb921694e57f967408da0.zip
adelie-build-txz: Overhaul, similar to adelie-build-cd
Diffstat (limited to 'adelie-build-txz')
-rwxr-xr-xadelie-build-txz95
1 files changed, 54 insertions, 41 deletions
diff --git a/adelie-build-txz b/adelie-build-txz
index 7776527..15d81bf 100755
--- a/adelie-build-txz
+++ b/adelie-build-txz
@@ -1,8 +1,12 @@
#!/bin/sh
+set -e
def_arch=$(uname -m)
-def_ver="1.0-beta4"
-declare -r PROGNAME=$(basename $0)
+def_ver="1.0-rc1"
+readonly PROGNAME=$(basename $0)
+
+
+[ -z $ZSH_VERSION ] || set -y
warn() {
@@ -32,22 +36,22 @@ fatal() {
ensure_commands() {
- if ! type apk>/dev/null 2>/dev/null; then
+ if ! command -v apk>/dev/null 2>/dev/null; then
fatal
printf 'You must have apk installed. On Gentoo, see sys-devel/apk-tools.\n'
- exit -1
+ exit 127
fi
- if ! type tar>/dev/null 2>/dev/null; then
+ if ! command -pv tar>/dev/null 2>/dev/null; then
fatal
printf 'You must have tar installed.\n'
- exit -1
+ exit 127
fi
}
usage() {
- printf 'usage: %s [-a ARCH] [--mini] [-s] [-v VERSION] [--help]\n\n' $PROGNAME
+ printf 'usage: %s [-a ARCH] [--mini] [-v VERSION] [--help]\n\n' $PROGNAME
printf 'Create an Adélie Linux root FS tarball (.TXZ) using the specified parameters.\n\n'
printf 'Default ARCH: %s\n' $def_arch
printf 'Default VERSION: %s\n' $def_ver
@@ -58,36 +62,34 @@ while [ -n "$1" ]; do
case $1 in
-a | --arch)
shift
- declare -r MY_ARCH=$1
+ readonly MY_ARCH=$1
;;
-h | --help)
usage
exit
;;
--mini)
- declare -r MINI=yes
+ readonly MINI=yes
;;
- -s | --sign)
- declare -r SIGN=yes
- ;;
-v | --version)
shift
- declare -r MY_VER=$1
+ readonly MY_VER=$1
;;
*)
usage >&2
- exit -1
+ exit 127
;;
esac
shift
done
set -a
-declare -r ARCH=${MY_ARCH:-$def_arch}
-declare -r LDARCH=${LDARCH:-$ARCH}
-declare -r PHASE=${MY_PHASE:-all}
-declare -r VERSION=${MY_VER:-$def_ver}
-declare -r URL=${MY_URL:-https://distfiles.adelielinux.org/adelie/$VERSION/}
+readonly ARCH=${MY_ARCH:-$def_arch}
+readonly LDARCH=${LDARCH:-$ARCH}
+readonly PHASE=${MY_PHASE:-all}
+readonly VERSION=${MY_VER:-$def_ver}
+readonly APKVER=${MY_APKVER:-$VERSION}
+readonly URL=${MY_URL:-https://distfiles.adelielinux.org/adelie/$VERSION/}
set +a
ensure_commands
@@ -103,7 +105,7 @@ clean_dirs() {
warn
printf 'This will erase all files at the directories %s/rootfs-%s.\n\n' `pwd` $ARCH
printf 'When you are ready, press RETURN. To cancel, press Ctrl-C.\n'
- read
+ read dontcare
rm -rf rootfs-$ARCH
mkdir rootfs-$ARCH
@@ -114,16 +116,18 @@ install_pkgs() {
header "Installing base system to tar root..."
if test -n "${MINI+mini}"; then
- declare -r PACKAGES="adelie-core dash-binsh"
- declare -r ARCH_PKGS=""
+ readonly PACKAGES="adelie-core dash-binsh"
+ readonly ARCH_PKGS=""
else
- declare -r PACKAGES=$(cat packages 2>/dev/null || fatal 'No core packages specified')
- declare -r ARCH_PKGS=$(cat packages-$ARCH 2>/dev/null || echo '')
+ readonly PACKAGES="$(cat packages/base 2>/dev/null | tr '\n' ' ' || fatal 'No core packages specified')"
+ readonly ARCH_PKGS="$(cat packages/arch/$ARCH 2>/dev/null | tr '\n' ' ' || echo '')"
fi
- mkdir -p rootfs-$ARCH/etc/apk/keys
- cp 'packages@adelielinux.org.pub' rootfs-$ARCH/etc/apk/keys/
- # XXX: Handle pre-install scripts.
+ mkdir -p rootfs-$ARCH/etc/apk
+ cp -r keys rootfs-$ARCH/etc/apk/
+ # Disable grub trigger.
+ mkdir -p rootfs-$ARCH/etc/default
+ printf "ADELIE_MANUAL_CONFIG=1\n" >> rootfs-$ARCH/etc/default/grub
mkdir -p rootfs-$ARCH/dev
mknod rootfs-$ARCH/dev/urandom c 1 9
mkdir -p rootfs-$ARCH/usr/sbin
@@ -139,7 +143,9 @@ make_structure() {
else
echo 'adelie-root' > rootfs-$ARCH/etc/hostname
- mkdir -p rootfs-$ARCH/etc/runlevels/{sysinit,boot,default,shutdown}
+ for _runlevel in sysinit boot default shutdown; do
+ mkdir -p rootfs-$ARCH/etc/runlevels/$_runlevel
+ done
echo 'mtab_is_file=no' > rootfs-$ARCH/etc/conf.d/mtab
@@ -148,17 +154,24 @@ make_structure() {
rootfs-$ARCH/etc/runlevels/sysinit/$siservice
done
- for bootservice in root binfmt bootmisc fsck hostname hwclock keymaps \
- localmount loopback modules mtab procfs sysctl sysfsconf termencoding \
- tmpfiles.setup urandom; do
+ for bootservice in root binfmt bootmisc fsck hostname hwclock \
+ keymaps localmount loopback modules mtab procfs sysctl \
+ sysfsconf termencoding tmpfiles.setup urandom; do
ln -s /etc/init.d/$bootservice \
rootfs-$ARCH/etc/runlevels/boot/$bootservice
done
+ readonly BASE_SERVICES="$(cat services/base 2>/dev/null | tr '\n' ' ' || echo '')"
+
+ [ -z BASE_SERVICES ] || for base_service in $BASE_SERVICES; do
+ ln -s /etc/init.d/$base_service \
+ rootfs-$ARCH/etc/runlevels/default/$base_service
+ done
+
cp AdelieTux.icns rootfs-$ARCH/.VolumeIcon.icns
- # Put a copy of the kernel(s) in the kernels-$ARCH/ directory, so that
- # users may download them for netbooting or such.
+ # Put a copy of the kernel(s) in the kernels/$ARCH/ directory,
+ # so users may download them for netbooting or such.
mkdir -p out/kernels/$ARCH
cp -r rootfs-$ARCH/boot/* out/kernels/$ARCH/
fi
@@ -178,8 +191,8 @@ make_structure() {
RESOLVE
cat >rootfs-$ARCH/etc/apk/repositories <<-REPOS
- https://distfiles.adelielinux.org/adelie/$VERSION/system/$EXTRA_MIRROR
- https://distfiles.adelielinux.org/adelie/$VERSION/user/$EXTRA_MIRROR
+ https://distfiles.adelielinux.org/adelie/$APKVER/system/$EXTRA_MIRROR
+ https://distfiles.adelielinux.org/adelie/$APKVER/user/$EXTRA_MIRROR
REPOS
}
@@ -187,7 +200,7 @@ tar_it() {
header 'Creating file system archive...'
cd rootfs-$ARCH
- tar -cJf ../out/adelie-rootfs-${MINI+mini-}$ARCH-$VERSION-$(date +%Y%m%d).txz .
+ tar -cf - . | xz -v > ../out/adelie-rootfs-${MINI+mini-}$ARCH-$VERSION-$(date +%Y%m%d).txz
}
# in case we want to add phase support like adelie-build-cd has later
@@ -202,14 +215,14 @@ case $PHASE in
tar)
tar_it
;;
- *)
+ all)
clean_dirs
install_pkgs
make_structure
tar_it
;;
-# *)
-# fatal
-# printf 'Unknown phase %s. Stop.\n' $PHASE
-# ;;
+ *)
+ fatal
+ printf 'Unknown phase %s. Stop.\n' $PHASE
+ ;;
esac