aboutsummaryrefslogtreecommitdiffstats
path: root/make-bootstrap-file.sh
blob: de42f674690b4df21982372f29313df064c138f5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#!/bin/bash

# Build: Bootstrap a base Hyperbola GNU plus Linux-libre system

set -e -u -o pipefail

usage() {
    cat <<EOF
    Usage:
     bash $0 make-bootstrap-file.sh
     or
     bash $0 make-bootstrap-file.sh --arch i686 --release v0.4.3 --url https://mirror.fsf.org/hyperbola/gnu-plus-linux-libre/stable
     or
     bash $0 make-bootstrap-file.sh -a i686 -r v0.4.3 -u https://mirror.fsf.org/hyperbola/gnu-plus-linux-libre/stable
EOF
    exit 1
}

SCRIPT=$(readlink -f "$0")
SCRIPT_PWD=$(dirname "$SCRIPT")
CHROOT_DELETE='y'

RESULTPATH="${SCRIPT_PWD}"
ARCH="x86_64"
RELEASE="v0.4.3"
REPO_URL="https://mirror.fsf.org/hyperbola/gnu-plus-linux-libre/stable"
TAR_OWNER_USER_ID="1000"
TAR_OWNER_GROUP_ID="1000"

# Parse command-line arguments
while [[ $# -gt 0 ]]; do
    key="${1}"
    case $key in
        -a|--arch)
            ARCH="${2}"
            shift 2
            ;;
        -r|--release)
            RELEASE="${2}"
            shift 2
            ;;
        -u|--url)
            REPO_URL="${2}"
            shift 2
            ;;
        -owu|--owner-user-id)
            TAR_OWNER_USER_ID="${2}"
            shift 2
            ;;
        -owg|--owner-group-id)
            TAR_OWNER_GROUP_ID="${2}"
            shift 2
            ;;
        *)
            echo "Unrecognized option: $key"
            usage
            ;;
    esac
done

# Set ROOTFS
ROOTFS="$ARCH"

# Remove old archives
rm -fv "${RESULTPATH}/hyperbola-bootstrap-${ARCH}.tar.gz" "${RESULTPATH}/hyperbola-bootstrap-${ARCH}.tar.gz.sha512sum"

# Make bootstrap for Hyperbola
bash "${SCRIPT_PWD}/hyper-bootstrap_${RELEASE}.sh" -a "${ARCH}" -r "${REPO_URL}" "${ROOTFS}"

# Clean up package cache
(cd "${ROOTFS}" && rm -rf var/cache/*)

# Rename pacnew files
printf '%b%s%b%s%b\n' '\e[1;32m' '==> ' '\e[0m\033[1m' 'Rename files ending in .pacnew...' '\e[m'
find "${ROOTFS}" -type f -name "*.pacnew" -exec sh -c 'mv -f "$1" "${1%.pacnew}"' _ {} \;

# Make new tarball
printf '%b%s%b%s%b\n' '\e[1;32m' '==> ' '\e[0m\033[1m' "Make hyperbola-bootstrap-${ARCH}.tar.gz..." '\e[m'
(cd "${RESULTPATH}/${ROOTFS}" && tar --create --gzip --numeric-owner --xattrs --acls --file="${SCRIPT_PWD}/hyperbola-bootstrap-${ARCH}.tar.gz" *)

# Make sha512sum
(cd ${RESULTPATH} && sha512sum "hyperbola-bootstrap-${ARCH}.tar.gz" >| "hyperbola-bootstrap-${ARCH}.tar.gz.sha512sum")

# Fix permission Tarballs
(cd ${RESULTPATH} && chown ${TAR_OWNER_USER_ID}:${TAR_OWNER_GROUP_ID} hyperbola-bootstrap-x86_64.tar.gz*)

# Clean chroot temp
case $CHROOT_DELETE in
    y) rm -rf "${ROOTFS}" || true && echo -e "\e[1;32m==>\e[0m\033[1m Temporal chroot deleted! \e[m" ;;
    n) echo 'Temporal chroot available' ;;
    *) echo 'Invalid option "$@"' ;;
esac

# Report result
echo "REPO: ${REPO_URL}"
echo "ROOTFS: ${ROOTFS}"
echo "RESULTPATH: ${RESULTPATH}"