Compare commits
9 Commits
Author | SHA1 | Date | |
---|---|---|---|
911a0fff36 | |||
f80c51e8d3 | |||
1e948b3ef5 | |||
bf0a9bc7fc | |||
a4a690951c | |||
e05765269e | |||
3df364189b | |||
974df38738 | |||
7b831d8867 |
@@ -46,6 +46,7 @@ newroot=/mnt
|
|||||||
hostcache=0
|
hostcache=0
|
||||||
copykeyring=1
|
copykeyring=1
|
||||||
copymirrorlist=1
|
copymirrorlist=1
|
||||||
|
pacmode=-Sy
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
echo "usage: ${0##*/} [options] root [packages...]"
|
echo "usage: ${0##*/} [options] root [packages...]"
|
||||||
@@ -54,6 +55,7 @@ usage() {
|
|||||||
echo " -G Avoid copying the host's pacman keyring to the target"
|
echo " -G Avoid copying the host's pacman keyring to the target"
|
||||||
echo " -i Avoid auto-confirmation of package selections"
|
echo " -i Avoid auto-confirmation of package selections"
|
||||||
echo " -M Avoid copying the host's mirrorlist to the target"
|
echo " -M Avoid copying the host's mirrorlist to the target"
|
||||||
|
echo ' -U Use pacman -U to install packages'
|
||||||
echo " -h Print this help message"
|
echo " -h Print this help message"
|
||||||
echo ''
|
echo ''
|
||||||
echo ' basestrap installs packages to the specified new root directory.'
|
echo ' basestrap installs packages to the specified new root directory.'
|
||||||
@@ -65,7 +67,7 @@ usage() {
|
|||||||
|
|
||||||
orig_argv=("$0" "$@")
|
orig_argv=("$0" "$@")
|
||||||
|
|
||||||
opts=':C:cGiM'
|
opts=':C:cGiMU'
|
||||||
|
|
||||||
while getopts ${opts} arg; do
|
while getopts ${opts} arg; do
|
||||||
case "${arg}" in
|
case "${arg}" in
|
||||||
@@ -74,6 +76,7 @@ while getopts ${opts} arg; do
|
|||||||
i) interactive=1 ;;
|
i) interactive=1 ;;
|
||||||
G) copykeyring=0 ;;
|
G) copykeyring=0 ;;
|
||||||
M) copymirrorlist=0 ;;
|
M) copymirrorlist=0 ;;
|
||||||
|
U) pacmode=-U ;;
|
||||||
:) echo "invalid argument ${arg}:$OPTARG"; usage 1;;
|
:) echo "invalid argument ${arg}:$OPTARG"; usage 1;;
|
||||||
?) usage 0 ;;
|
?) usage 0 ;;
|
||||||
esac
|
esac
|
||||||
@@ -109,7 +112,7 @@ if (( copykeyring ));then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
msg2 'Installing packages to %s' "$newroot"
|
msg2 'Installing packages to %s' "$newroot"
|
||||||
if ! pacman -r "$newroot" -Sy "${pacman_args[@]}"; then
|
if ! unshare --fork --pid pacman -r "$newroot" $pacmode "${pacman_args[@]}"; then
|
||||||
die 'Failed to install packages to new root'
|
die 'Failed to install packages to new root'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@@ -86,15 +86,13 @@ done
|
|||||||
|
|
||||||
while read -r line; do
|
while read -r line; do
|
||||||
mapfile -t lines < <($pacconf_cmd --config "${pac_conf:-$working_dir/etc/pacman.conf}" \
|
mapfile -t lines < <($pacconf_cmd --config "${pac_conf:-$working_dir/etc/pacman.conf}" \
|
||||||
--repo $line Server | sed -r 's#(.*/)[^/]+/os/.+#\1$repo/os/$arch#')
|
--repo $line Server | sed -r 's#(.*/)[^/]+/os/.+#\1#')
|
||||||
if [[ ${lines[0]} != ${host_mirrors[0]} ]]; then
|
|
||||||
for line in "${lines[@]}"; do
|
for line in "${lines[@]}"; do
|
||||||
if [[ $line = file://* ]]; then
|
if [[ $line = file://* ]]; then
|
||||||
line=${line#file://}
|
line=${line#file://}
|
||||||
in_array "$line" "${cache_dirs[@]}" || cache_dirs+=("$line")
|
in_array "$line" "${cache_dirs[@]}" || cache_dirs+=("$line")
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
fi
|
|
||||||
done < <($pacconf_cmd --config "${pac_conf:-$working_dir/etc/pacman.conf}" --repo-list)
|
done < <($pacconf_cmd --config "${pac_conf:-$working_dir/etc/pacman.conf}" --repo-list)
|
||||||
|
|
||||||
copy_hostconf () {
|
copy_hostconf () {
|
||||||
|
@@ -15,6 +15,7 @@
|
|||||||
. @libdir@/artools/util-base.sh
|
. @libdir@/artools/util-base.sh
|
||||||
|
|
||||||
working_dir=''
|
working_dir=''
|
||||||
|
umode=''
|
||||||
|
|
||||||
files=()
|
files=()
|
||||||
chroot_args=()
|
chroot_args=()
|
||||||
@@ -22,6 +23,7 @@ chroot_args=()
|
|||||||
usage() {
|
usage() {
|
||||||
echo "Usage: ${0##*/} [options] working-dir package-list..."
|
echo "Usage: ${0##*/} [options] working-dir package-list..."
|
||||||
echo ' options:'
|
echo ' options:'
|
||||||
|
echo ' -U Use pacman -U to install packages'
|
||||||
echo ' -C <file> Location of a pacman config file'
|
echo ' -C <file> Location of a pacman config file'
|
||||||
echo ' -M <file> Location of a makepkg config file'
|
echo ' -M <file> Location of a makepkg config file'
|
||||||
echo ' -c <dir> Set pacman cache'
|
echo ' -c <dir> Set pacman cache'
|
||||||
@@ -33,10 +35,11 @@ usage() {
|
|||||||
|
|
||||||
orig_argv=("$0" "$@")
|
orig_argv=("$0" "$@")
|
||||||
|
|
||||||
opts='hC:M:c:f:s'
|
opts='hUC:M:c:f:s'
|
||||||
|
|
||||||
while getopts ${opts} arg; do
|
while getopts ${opts} arg; do
|
||||||
case "${arg}" in
|
case "${arg}" in
|
||||||
|
U) umode=U ;;
|
||||||
C) pacman_conf="$OPTARG" ;;
|
C) pacman_conf="$OPTARG" ;;
|
||||||
M) makepkg_conf="$OPTARG" ;;
|
M) makepkg_conf="$OPTARG" ;;
|
||||||
c) cache_dir="$OPTARG" ;;
|
c) cache_dir="$OPTARG" ;;
|
||||||
@@ -45,8 +48,10 @@ while getopts ${opts} arg; do
|
|||||||
h|?) usage ;;
|
h|?) usage ;;
|
||||||
*) error "invalid argument '%s'" "$arg"; usage ;;
|
*) error "invalid argument '%s'" "$arg"; usage ;;
|
||||||
esac
|
esac
|
||||||
|
if [[ $arg != U ]]; then
|
||||||
chroot_args+=("-$arg")
|
chroot_args+=("-$arg")
|
||||||
[[ -v OPTARG ]] && chroot_args+=("$OPTARG")
|
[[ -v OPTARG ]] && chroot_args+=("$OPTARG")
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
shift $(($OPTIND - 1))
|
shift $(($OPTIND - 1))
|
||||||
|
|
||||||
@@ -88,7 +93,7 @@ for f in "${files[@]}"; do
|
|||||||
cp "$f" "$working_dir$f"
|
cp "$f" "$working_dir$f"
|
||||||
done
|
done
|
||||||
|
|
||||||
basestrap -Mc ${pacman_conf:+-C "$pacman_conf"} "$working_dir" \
|
basestrap -${umode}Mc ${pacman_conf:+-C "$pacman_conf"} "$working_dir" \
|
||||||
${cache_dirs[@]/#/--cachedir=} "$@" || die 'Failed to install all packages'
|
${cache_dirs[@]/#/--cachedir=} "$@" || die 'Failed to install all packages'
|
||||||
|
|
||||||
printf '%s.UTF-8 UTF-8\n' en_US de_DE > "$working_dir/etc/locale.gen"
|
printf '%s.UTF-8 UTF-8\n' en_US de_DE > "$working_dir/etc/locale.gen"
|
||||||
|
@@ -14,6 +14,8 @@
|
|||||||
|
|
||||||
. @libdir@/artools/util-iso.sh
|
. @libdir@/artools/util-iso.sh
|
||||||
|
|
||||||
|
prepare_artools
|
||||||
|
|
||||||
gen_iso_fn(){
|
gen_iso_fn(){
|
||||||
local vars=("artix") name
|
local vars=("artix") name
|
||||||
vars+=("${PROFILE}")
|
vars+=("${PROFILE}")
|
||||||
@@ -50,6 +52,8 @@ prepare_build(){
|
|||||||
basestrap_args+=(-C ${pacman_conf})
|
basestrap_args+=(-C ${pacman_conf})
|
||||||
work_dir=${CHROOTS_ISO}/${PROFILE}/artix
|
work_dir=${CHROOTS_ISO}/${PROFILE}/artix
|
||||||
|
|
||||||
|
prepare_dir "${ISO_POOL}"
|
||||||
|
|
||||||
iso_dir="${ISO_POOL}/${PROFILE}"
|
iso_dir="${ISO_POOL}/${PROFILE}"
|
||||||
|
|
||||||
iso_root=${CHROOTS_ISO}/${PROFILE}/iso
|
iso_root=${CHROOTS_ISO}/${PROFILE}/iso
|
||||||
@@ -75,6 +79,44 @@ display_settings(){
|
|||||||
show_profile
|
show_profile
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mk_squash(){
|
||||||
|
local timer=$(get_timer)
|
||||||
|
make_sfs "${work_dir}/rootfs"
|
||||||
|
[[ -d "${work_dir}/livefs" ]] && make_sfs "${work_dir}/livefs"
|
||||||
|
show_elapsed_time "${FUNCNAME}" "${timer}"
|
||||||
|
}
|
||||||
|
|
||||||
|
mk_iso(){
|
||||||
|
touch "${iso_root}/.artix"
|
||||||
|
msg "Making bootable image"
|
||||||
|
# Sanity checks
|
||||||
|
[[ ! -d "${iso_root}" ]] && return 1
|
||||||
|
if [[ -f "${iso_dir}/${iso_file}" ]]; then
|
||||||
|
msg2 "Removing existing bootable image..."
|
||||||
|
rm -rf "${iso_dir}/${iso_file}"
|
||||||
|
fi
|
||||||
|
assemble_iso
|
||||||
|
chown -R "${OWNER}:$(id --group ${OWNER})" "${iso_dir}"
|
||||||
|
}
|
||||||
|
|
||||||
|
mk_boot(){
|
||||||
|
local timer=$(get_timer)
|
||||||
|
run_safe "make_bootfs"
|
||||||
|
run_safe "make_grub"
|
||||||
|
show_elapsed_time "${FUNCNAME}" "${timer}"
|
||||||
|
}
|
||||||
|
|
||||||
|
mk_chroots(){
|
||||||
|
local timer=$(get_timer)
|
||||||
|
load_pkgs "${ROOT_LIST}" "${INITSYS}"
|
||||||
|
run_safe "make_rootfs"
|
||||||
|
if [[ -n ${LIVE_LIST} ]]; then
|
||||||
|
load_pkgs "${LIVE_LIST}" "${INITSYS}"
|
||||||
|
run_safe "make_livefs"
|
||||||
|
fi
|
||||||
|
show_elapsed_time "${FUNCNAME}" "${timer}"
|
||||||
|
}
|
||||||
|
|
||||||
build(){
|
build(){
|
||||||
msg "Start building [%s]" "${PROFILE}"
|
msg "Start building [%s]" "${PROFILE}"
|
||||||
if ${clean_first};then
|
if ${clean_first};then
|
||||||
@@ -95,29 +137,45 @@ build(){
|
|||||||
rm -rf --one-file-system "${iso_root}"
|
rm -rf --one-file-system "${iso_root}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ${iso_only}; then
|
case true in
|
||||||
[[ ! -d ${work_dir} ]] && die "Create images: %s -p %s -x" "${cmd}" "${PROFILE}"
|
${chroot_only})
|
||||||
compress_images
|
mk_chroots
|
||||||
|
warning "Continue squash: %s -p %s -sc ..." "${cmd}" "${PROFILE}"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
;;
|
||||||
if ${images_only}; then
|
${boot_only})
|
||||||
prepare_images
|
mk_boot
|
||||||
warning "Continue compress: %s -p %s -zc ..." "${cmd}" "${PROFILE}"
|
warning "Continue iso: %s -p %s -zc ..." "${cmd}" "${PROFILE}"
|
||||||
exit 1
|
exit 1
|
||||||
else
|
;;
|
||||||
prepare_images
|
${squash_only})
|
||||||
compress_images
|
mk_squash
|
||||||
fi
|
warning "Continue boot: %s -p %s -bc ..." "${cmd}" "${PROFILE}"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
${iso_only})
|
||||||
|
[[ ! -d ${work_dir} ]] && die "Create chroot: %s -p %s -x" "${cmd}" "${PROFILE}"
|
||||||
|
mk_iso
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
mk_chroots
|
||||||
|
mk_boot
|
||||||
|
mk_squash
|
||||||
|
mk_iso
|
||||||
|
;;
|
||||||
|
esac
|
||||||
msg "Finished building [%s]" "${PROFILE}"
|
msg "Finished building [%s]" "${PROFILE}"
|
||||||
show_elapsed_time "${FUNCNAME}" "${timer_start}"
|
show_elapsed_time "${FUNCNAME}" "${timer_start}"
|
||||||
}
|
}
|
||||||
|
|
||||||
clean_first=true
|
clean_first=true
|
||||||
pretend=false
|
pretend=false
|
||||||
images_only=false
|
chroot_only=false
|
||||||
iso_only=false
|
iso_only=false
|
||||||
persist=false
|
persist=false
|
||||||
use_dracut=false
|
use_dracut=false
|
||||||
|
squash_only=false
|
||||||
|
boot_only=false
|
||||||
|
|
||||||
basestrap_args=(-GMc)
|
basestrap_args=(-GMc)
|
||||||
cmd=${0##*/}
|
cmd=${0##*/}
|
||||||
@@ -137,7 +195,9 @@ usage() {
|
|||||||
echo " [default: ${GPG_KEY}]"
|
echo " [default: ${GPG_KEY}]"
|
||||||
echo ' -m Set SquashFS image mode to persistence'
|
echo ' -m Set SquashFS image mode to persistence'
|
||||||
echo ' -c Disable clean work dir'
|
echo ' -c Disable clean work dir'
|
||||||
echo ' -x Build images only'
|
echo ' -x Build chroot only'
|
||||||
|
echo ' -s Squash chroot only'
|
||||||
|
echo ' -b Generate iso boot only'
|
||||||
echo ' -z Generate iso only'
|
echo ' -z Generate iso only'
|
||||||
echo ' Requires pre built images (-x)'
|
echo ' Requires pre built images (-x)'
|
||||||
echo ' -d Use dracut instead of mkinitcpio for iso initramfs'
|
echo ' -d Use dracut instead of mkinitcpio for iso initramfs'
|
||||||
@@ -150,7 +210,7 @@ usage() {
|
|||||||
|
|
||||||
orig_argv=("$0" "$@")
|
orig_argv=("$0" "$@")
|
||||||
|
|
||||||
opts='p:r:t:i:g:czxmdqh'
|
opts='p:r:t:i:g:czsbxmdqh'
|
||||||
|
|
||||||
while getopts "${opts}" arg; do
|
while getopts "${opts}" arg; do
|
||||||
case "${arg}" in
|
case "${arg}" in
|
||||||
@@ -160,8 +220,10 @@ while getopts "${opts}" arg; do
|
|||||||
i) INITSYS="$OPTARG" ;;
|
i) INITSYS="$OPTARG" ;;
|
||||||
g) GPG_KEY="$OPTARG" ;;
|
g) GPG_KEY="$OPTARG" ;;
|
||||||
c) clean_first=false ;;
|
c) clean_first=false ;;
|
||||||
x) images_only=true ;;
|
x) chroot_only=true ;;
|
||||||
z) iso_only=true ;;
|
z) iso_only=true ;;
|
||||||
|
s) squash_only=true ;;
|
||||||
|
b) boot_only=true ;;
|
||||||
m) persist=true ;;
|
m) persist=true ;;
|
||||||
d) use_dracut=true ;;
|
d) use_dracut=true ;;
|
||||||
q) pretend=true ;;
|
q) pretend=true ;;
|
||||||
|
@@ -14,6 +14,8 @@
|
|||||||
|
|
||||||
. @libdir@/artools/util-iso.sh
|
. @libdir@/artools/util-iso.sh
|
||||||
|
|
||||||
|
prepare_artools
|
||||||
|
|
||||||
connect(){
|
connect(){
|
||||||
echo "${ACCOUNT}@${FILE_HOST}:${FILE_HOME}"
|
echo "${ACCOUNT}@${FILE_HOST}:${FILE_HOME}"
|
||||||
}
|
}
|
||||||
|
@@ -14,6 +14,8 @@
|
|||||||
|
|
||||||
. /usr/lib/artools/util-pkg.sh
|
. /usr/lib/artools/util-pkg.sh
|
||||||
|
|
||||||
|
prepare_artools
|
||||||
|
|
||||||
batch_move() {
|
batch_move() {
|
||||||
local name="${1:-pkg_moves}"
|
local name="${1:-pkg_moves}"
|
||||||
local pkglist=${TREE_DIR_ARTIX}/$name.list
|
local pkglist=${TREE_DIR_ARTIX}/$name.list
|
||||||
|
@@ -14,6 +14,8 @@
|
|||||||
|
|
||||||
. @libdir@/artools/util-pkg.sh
|
. @libdir@/artools/util-pkg.sh
|
||||||
|
|
||||||
|
prepare_artools
|
||||||
|
|
||||||
create_first=false
|
create_first=false
|
||||||
rebuild=false
|
rebuild=false
|
||||||
no_check=false
|
no_check=false
|
||||||
@@ -90,7 +92,7 @@ if ${create_first} || [[ ! -d "${CHROOTS_PKG}/${repo}-${ARCH}" ]];then
|
|||||||
lock_close 9
|
lock_close 9
|
||||||
|
|
||||||
rm -rf --one-file-system "${CHROOTS_PKG}/${repo}-${ARCH}"
|
rm -rf --one-file-system "${CHROOTS_PKG}/${repo}-${ARCH}"
|
||||||
mkdir -p "${CHROOTS_PKG}/${repo}-${ARCH}"
|
(umask 0022; mkdir -p "${CHROOTS_PKG}/${repo}-${ARCH}")
|
||||||
setarch "${ARCH}" mkchroot \
|
setarch "${ARCH}" mkchroot \
|
||||||
-C "${pacman_conf}" \
|
-C "${pacman_conf}" \
|
||||||
-M "${makepkg_conf}" \
|
-M "${makepkg_conf}" \
|
||||||
|
@@ -14,6 +14,8 @@
|
|||||||
|
|
||||||
. @libdir@/artools/util-pkg.sh
|
. @libdir@/artools/util-pkg.sh
|
||||||
|
|
||||||
|
prepare_artools
|
||||||
|
|
||||||
patch_pkg(){
|
patch_pkg(){
|
||||||
local pkg="$1"
|
local pkg="$1"
|
||||||
case $pkg in
|
case $pkg in
|
||||||
|
@@ -14,6 +14,8 @@
|
|||||||
|
|
||||||
. @libdir@/artools/util-pkg.sh
|
. @libdir@/artools/util-pkg.sh
|
||||||
|
|
||||||
|
prepare_artools
|
||||||
|
|
||||||
get_path(){
|
get_path(){
|
||||||
local repo="$1" pkg=trunk/PKGBUILD
|
local repo="$1" pkg=trunk/PKGBUILD
|
||||||
if [[ $repo != trunk ]]; then
|
if [[ $repo != trunk ]]; then
|
||||||
|
@@ -14,6 +14,8 @@
|
|||||||
|
|
||||||
. @libdir@/artools/util-pkg.sh
|
. @libdir@/artools/util-pkg.sh
|
||||||
|
|
||||||
|
prepare_artools
|
||||||
|
|
||||||
compare(){
|
compare(){
|
||||||
local pkgpath="$1" group="$2"
|
local pkgpath="$1" group="$2"
|
||||||
local pkg=${pkgpath##*/}
|
local pkg=${pkgpath##*/}
|
||||||
|
@@ -14,6 +14,8 @@
|
|||||||
|
|
||||||
. @libdir@/artools/util-pkg.sh
|
. @libdir@/artools/util-pkg.sh
|
||||||
|
|
||||||
|
prepare_artools
|
||||||
|
|
||||||
find_cached_pkgfile() {
|
find_cached_pkgfile() {
|
||||||
local searchdirs=("$PKGDEST" "$PWD") results=()
|
local searchdirs=("$PKGDEST" "$PWD") results=()
|
||||||
local pkg="$1"
|
local pkg="$1"
|
||||||
|
@@ -12,7 +12,6 @@
|
|||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
. @libdir@/artools/util-base.sh
|
|
||||||
. @libdir@/artools/util-pkg.sh
|
. @libdir@/artools/util-pkg.sh
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
@@ -398,13 +398,27 @@ if (( ret != 0 )); then
|
|||||||
else
|
else
|
||||||
if (( run_checkpkg )); then
|
if (( run_checkpkg )); then
|
||||||
msg "Running checkpkg"
|
msg "Running checkpkg"
|
||||||
|
# sync off-site databases for up-to-date queries
|
||||||
|
trap 'rm -rf $dbpath; cleanup' EXIT INT TERM QUIT
|
||||||
|
dbpath=$(mktemp -d --tmpdir makechrootpkg-database.XXXXXXXXXX)
|
||||||
|
mkdir -p "$dbpath"
|
||||||
|
pacman -Sy --dbpath "$dbpath" --logfile /dev/null
|
||||||
|
|
||||||
|
# query current package locations
|
||||||
|
remotepkgs=($(pacman -Sddp --dbpath "$dbpath" --logfile /dev/null "${pkgnames[@]}"))
|
||||||
|
if (( $? )); then
|
||||||
|
warning "Skipped checkpkg due to missing repo packages"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
# download package files if any non-local location exists
|
||||||
|
for remotepkg in "${remotepkgs[@]}"; do
|
||||||
|
[[ $remotepkg == file://* ]] && continue
|
||||||
msg2 "Downloading current versions"
|
msg2 "Downloading current versions"
|
||||||
if pacman --noconfirm -Swdd --logfile /dev/null "${pkgnames[@]}"; then
|
pacman --noconfirm -Swdd --dbpath "$dbpath" --logfile /dev/null "${pkgnames[@]}"
|
||||||
|
break
|
||||||
|
done
|
||||||
msg2 "Checking packages"
|
msg2 "Checking packages"
|
||||||
sudo -u "$makepkg_user" checkpkg --rmdir --warn
|
sudo -u "$makepkg_user" checkpkg --rmdir --warn
|
||||||
else
|
|
||||||
warning "Skipped checkpkg due to missing packages"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
true
|
true
|
||||||
fi
|
fi
|
||||||
|
@@ -146,7 +146,7 @@ run_hook() {
|
|||||||
|
|
||||||
lower_dir=''
|
lower_dir=''
|
||||||
live_root="/run/artix"
|
live_root="/run/artix"
|
||||||
bootmnt="/run/bootmnt"
|
bootmnt="${live_root}/bootmnt"
|
||||||
overlay_root="${live_root}/overlay_root"
|
overlay_root="${live_root}/overlay_root"
|
||||||
cow="${live_root}/cowspace"
|
cow="${live_root}/cowspace"
|
||||||
cp2ram="${live_root}/copytoram"
|
cp2ram="${live_root}/copytoram"
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
# export LC_MESSAGES=C
|
# export LC_MESSAGES=C
|
||||||
export LANG=C
|
export LANG=C
|
||||||
|
|
||||||
if [[ -t 2 ]]; then
|
if [[ -t 2 && "$TERM" != dumb ]]; then
|
||||||
colorize
|
colorize
|
||||||
else
|
else
|
||||||
declare -gr ALL_OFF='' BOLD='' BLUE='' GREEN='' RED='' YELLOW=''
|
declare -gr ALL_OFF='' BOLD='' BLUE='' GREEN='' RED='' YELLOW=''
|
||||||
|
@@ -143,10 +143,10 @@ write_unpackfs() {
|
|||||||
local yaml=$(write_yaml_header)
|
local yaml=$(write_yaml_header)
|
||||||
yaml+=$(write_yaml_map 0 'unpack')
|
yaml+=$(write_yaml_map 0 'unpack')
|
||||||
# if ${persist}; then
|
# if ${persist}; then
|
||||||
# yaml+=$(write_yaml_seq_map 2 'source' '"/run/bootmnt/LiveOS/rootfs.img"')
|
# yaml+=$(write_yaml_seq_map 2 'source' '"/run/artix/bootmnt/LiveOS/rootfs.img"')
|
||||||
# yaml+=$(write_yaml_map 4 'sourcefs' '"ext4"')
|
# yaml+=$(write_yaml_map 4 'sourcefs' '"ext4"')
|
||||||
# else
|
# else
|
||||||
yaml+=$(write_yaml_seq_map 2 'source' '"/run/bootmnt/LiveOS/rootfs.img"')
|
yaml+=$(write_yaml_seq_map 2 'source' '"/run/artix/bootmnt/LiveOS/rootfs.img"')
|
||||||
yaml+=$(write_yaml_map 4 'sourcefs' '"squashfs"')
|
yaml+=$(write_yaml_map 4 'sourcefs' '"squashfs"')
|
||||||
# fi
|
# fi
|
||||||
yaml+=$(write_yaml_map 4 'destination' '""')
|
yaml+=$(write_yaml_map 4 'destination' '""')
|
||||||
@@ -167,7 +167,7 @@ configure_calamares(){
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
configure_image(){
|
configure_chroot(){
|
||||||
local fs="$1"
|
local fs="$1"
|
||||||
msg "Configuring [%s]" "${fs##*/}"
|
msg "Configuring [%s]" "${fs##*/}"
|
||||||
configure_hosts "$fs"
|
configure_hosts "$fs"
|
||||||
@@ -179,3 +179,40 @@ configure_image(){
|
|||||||
write_live_session_conf > "$fs/etc/artools/live.conf"
|
write_live_session_conf > "$fs/etc/artools/live.conf"
|
||||||
msg "Done configuring [%s]" "${fs##*/}"
|
msg "Done configuring [%s]" "${fs##*/}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
clean_up_chroot(){
|
||||||
|
local path mnt="$1"
|
||||||
|
msg2 "Cleaning [%s]" "${mnt##*/}"
|
||||||
|
|
||||||
|
path=$mnt/boot
|
||||||
|
if [[ -d "$path" ]]; then
|
||||||
|
find "$path" -name 'initramfs*.img' -delete &> /dev/null
|
||||||
|
fi
|
||||||
|
path=$mnt/var/lib/pacman/sync
|
||||||
|
if [[ -d $path ]];then
|
||||||
|
find "$path" -type f -delete &> /dev/null
|
||||||
|
fi
|
||||||
|
path=$mnt/var/cache/pacman/pkg
|
||||||
|
if [[ -d $path ]]; then
|
||||||
|
find "$path" -type f -delete &> /dev/null
|
||||||
|
fi
|
||||||
|
path=$mnt/var/log
|
||||||
|
if [[ -d $path ]]; then
|
||||||
|
find "$path" -type f -delete &> /dev/null
|
||||||
|
fi
|
||||||
|
path=$mnt/var/tmp
|
||||||
|
if [[ -d $path ]];then
|
||||||
|
find "$path" -mindepth 1 -delete &> /dev/null
|
||||||
|
fi
|
||||||
|
path=$mnt/tmp
|
||||||
|
if [[ -d $path ]];then
|
||||||
|
find "$path" -mindepth 1 -delete &> /dev/null
|
||||||
|
fi
|
||||||
|
find "$mnt" -name *.pacnew -name *.pacsave -name *.pacorig -delete
|
||||||
|
if [[ -f "$mnt/boot/grub/grub.cfg" ]]; then
|
||||||
|
rm $mnt/boot/grub/grub.cfg
|
||||||
|
fi
|
||||||
|
if [[ -f "$mnt/etc/machine-id" ]]; then
|
||||||
|
rm $mnt/etc/machine-id
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
@@ -130,12 +130,15 @@ configure_grub(){
|
|||||||
|
|
||||||
prepare_grub(){
|
prepare_grub(){
|
||||||
local platform=i386-pc img='core.img' prefix=/boot/grub
|
local platform=i386-pc img='core.img' prefix=/boot/grub
|
||||||
local lib=$1/usr/lib/grub theme=$2/usr/share/grub
|
local lib="$1"/usr/lib/grub
|
||||||
|
local theme="$1"/usr/share/grub
|
||||||
|
local livecfg="$2"/usr/share/grub
|
||||||
local grub=${iso_root}/boot/grub efi=${iso_root}/efi/boot
|
local grub=${iso_root}/boot/grub efi=${iso_root}/efi/boot
|
||||||
|
|
||||||
|
|
||||||
prepare_dir ${grub}/${platform}
|
prepare_dir ${grub}/${platform}
|
||||||
|
|
||||||
cp ${theme}/cfg/*.cfg ${grub}
|
cp ${livecfg}/cfg/*.cfg ${grub}
|
||||||
|
|
||||||
cp ${lib}/${platform}/* ${grub}/${platform}
|
cp ${lib}/${platform}/* ${grub}/${platform}
|
||||||
|
|
||||||
@@ -158,8 +161,9 @@ prepare_grub(){
|
|||||||
grub-mkimage -d ${grub}/${platform} -o ${efi}/${img} -O ${platform} -p ${prefix} iso9660
|
grub-mkimage -d ${grub}/${platform} -o ${efi}/${img} -O ${platform} -p ${prefix} iso9660
|
||||||
|
|
||||||
prepare_dir ${grub}/themes
|
prepare_dir ${grub}/themes
|
||||||
cp -r ${theme}/themes/artix ${grub}/themes/
|
|
||||||
cp -r ${theme}/{locales,tz} ${grub}
|
cp -r ${theme}/themes/artix ${grub}/themes
|
||||||
|
cp -r ${livecfg}/{locales,tz} ${grub}
|
||||||
|
|
||||||
if [[ -f /usr/share/grub/unicode.pf2 ]];then
|
if [[ -f /usr/share/grub/unicode.pf2 ]];then
|
||||||
msg2 "Copying %s ..." "unicode.pf2"
|
msg2 "Copying %s ..." "unicode.pf2"
|
||||||
|
@@ -72,7 +72,6 @@ make_sfs() {
|
|||||||
error "The path %s does not exist" "${sfs_in}"
|
error "The path %s does not exist" "${sfs_in}"
|
||||||
retrun 1
|
retrun 1
|
||||||
fi
|
fi
|
||||||
local timer=$(get_timer)
|
|
||||||
|
|
||||||
mkdir -p ${iso_root}${live_dir}
|
mkdir -p ${iso_root}${live_dir}
|
||||||
|
|
||||||
@@ -108,7 +107,6 @@ make_sfs() {
|
|||||||
fi
|
fi
|
||||||
${persist} && rm -r "${work_dir}/embed"
|
${persist} && rm -r "${work_dir}/embed"
|
||||||
fi
|
fi
|
||||||
show_elapsed_time "${FUNCNAME}" "${timer_start}"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
get_disturl(){
|
get_disturl(){
|
||||||
@@ -146,19 +144,3 @@ assemble_iso(){
|
|||||||
${iso_root}/
|
${iso_root}/
|
||||||
}
|
}
|
||||||
|
|
||||||
make_iso() {
|
|
||||||
msg "Start [Build ISO]"
|
|
||||||
touch "${iso_root}/.artix"
|
|
||||||
make_sfs "${work_dir}/rootfs"
|
|
||||||
[[ -d "${work_dir}/livefs" ]] && make_sfs "${work_dir}/livefs"
|
|
||||||
|
|
||||||
msg "Making bootable image"
|
|
||||||
# Sanity checks
|
|
||||||
[[ ! -d "${iso_root}" ]] && return 1
|
|
||||||
if [[ -f "${iso_dir}/${iso_file}" ]]; then
|
|
||||||
msg2 "Removing existing bootable image..."
|
|
||||||
rm -rf "${iso_dir}/${iso_file}"
|
|
||||||
fi
|
|
||||||
assemble_iso
|
|
||||||
msg "Done [Build ISO]"
|
|
||||||
}
|
|
||||||
|
@@ -37,7 +37,7 @@ track_fs() {
|
|||||||
mount "$@" && FS_ACTIVE_MOUNTS=("$5" "${FS_ACTIVE_MOUNTS[@]}")
|
mount "$@" && FS_ACTIVE_MOUNTS=("$5" "${FS_ACTIVE_MOUNTS[@]}")
|
||||||
}
|
}
|
||||||
|
|
||||||
mount_overlay(){
|
mount_overlayfs(){
|
||||||
FS_ACTIVE_MOUNTS=()
|
FS_ACTIVE_MOUNTS=()
|
||||||
local lower= upper="$1" work="$2"
|
local lower= upper="$1" work="$2"
|
||||||
mkdir -p "${mnt_dir}/work"
|
mkdir -p "${mnt_dir}/work"
|
||||||
@@ -52,7 +52,7 @@ mount_overlay(){
|
|||||||
track_fs -t overlay overlay -olowerdir="$lower",upperdir="$upper",workdir="${mnt_dir}/work" "$upper"
|
track_fs -t overlay overlay -olowerdir="$lower",upperdir="$upper",workdir="${mnt_dir}/work" "$upper"
|
||||||
}
|
}
|
||||||
|
|
||||||
umount_overlay(){
|
umount_overlayfs(){
|
||||||
if [[ -n ${FS_ACTIVE_MOUNTS[@]} ]];then
|
if [[ -n ${FS_ACTIVE_MOUNTS[@]} ]];then
|
||||||
info "overlayfs umount: [%s]" "${FS_ACTIVE_MOUNTS[@]}"
|
info "overlayfs umount: [%s]" "${FS_ACTIVE_MOUNTS[@]}"
|
||||||
umount "${FS_ACTIVE_MOUNTS[@]}"
|
umount "${FS_ACTIVE_MOUNTS[@]}"
|
||||||
|
@@ -19,7 +19,7 @@ error_function() {
|
|||||||
error "A failure occurred in %s()." "$func"
|
error "A failure occurred in %s()." "$func"
|
||||||
plain "Aborting..."
|
plain "Aborting..."
|
||||||
fi
|
fi
|
||||||
umount_overlay
|
umount_overlayfs
|
||||||
umount_img
|
umount_img
|
||||||
exit 2
|
exit 2
|
||||||
}
|
}
|
||||||
@@ -41,7 +41,7 @@ run_safe() {
|
|||||||
trap_exit() {
|
trap_exit() {
|
||||||
local sig=$1; shift
|
local sig=$1; shift
|
||||||
error "$@"
|
error "$@"
|
||||||
umount_overlay
|
umount_overlayfs
|
||||||
trap -- "$sig"
|
trap -- "$sig"
|
||||||
kill "-$sig" "$$"
|
kill "-$sig" "$$"
|
||||||
}
|
}
|
||||||
@@ -62,43 +62,6 @@ copy_overlay(){
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
clean_up_image(){
|
|
||||||
local path mnt="$1"
|
|
||||||
msg2 "Cleaning [%s]" "${mnt##*/}"
|
|
||||||
|
|
||||||
path=$mnt/boot
|
|
||||||
if [[ -d "$path" ]]; then
|
|
||||||
find "$path" -name 'initramfs*.img' -delete &> /dev/null
|
|
||||||
fi
|
|
||||||
path=$mnt/var/lib/pacman/sync
|
|
||||||
if [[ -d $path ]];then
|
|
||||||
find "$path" -type f -delete &> /dev/null
|
|
||||||
fi
|
|
||||||
path=$mnt/var/cache/pacman/pkg
|
|
||||||
if [[ -d $path ]]; then
|
|
||||||
find "$path" -type f -delete &> /dev/null
|
|
||||||
fi
|
|
||||||
path=$mnt/var/log
|
|
||||||
if [[ -d $path ]]; then
|
|
||||||
find "$path" -type f -delete &> /dev/null
|
|
||||||
fi
|
|
||||||
path=$mnt/var/tmp
|
|
||||||
if [[ -d $path ]];then
|
|
||||||
find "$path" -mindepth 1 -delete &> /dev/null
|
|
||||||
fi
|
|
||||||
path=$mnt/tmp
|
|
||||||
if [[ -d $path ]];then
|
|
||||||
find "$path" -mindepth 1 -delete &> /dev/null
|
|
||||||
fi
|
|
||||||
find "$mnt" -name *.pacnew -name *.pacsave -name *.pacorig -delete
|
|
||||||
if [[ -f "$mnt/boot/grub/grub.cfg" ]]; then
|
|
||||||
rm $mnt/boot/grub/grub.cfg
|
|
||||||
fi
|
|
||||||
if [[ -f "$mnt/etc/machine-id" ]]; then
|
|
||||||
rm $mnt/etc/machine-id
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
make_rootfs() {
|
make_rootfs() {
|
||||||
if [[ ! -e ${work_dir}/rootfs.lock ]]; then
|
if [[ ! -e ${work_dir}/rootfs.lock ]]; then
|
||||||
msg "Prepare [Base installation] (rootfs)"
|
msg "Prepare [Base installation] (rootfs)"
|
||||||
@@ -110,9 +73,9 @@ make_rootfs() {
|
|||||||
|
|
||||||
copy_overlay "${ROOT_OVERLAY}" "${rootfs}"
|
copy_overlay "${ROOT_OVERLAY}" "${rootfs}"
|
||||||
|
|
||||||
[[ -z ${LIVE_LIST} ]] && configure_image "${rootfs}"
|
[[ -z ${LIVE_LIST} ]] && configure_chroot "${rootfs}"
|
||||||
|
|
||||||
clean_up_image "${rootfs}"
|
clean_up_chroot "${rootfs}"
|
||||||
|
|
||||||
: > ${work_dir}/rootfs.lock
|
: > ${work_dir}/rootfs.lock
|
||||||
|
|
||||||
@@ -127,17 +90,17 @@ make_livefs() {
|
|||||||
|
|
||||||
prepare_dir "${livefs}"
|
prepare_dir "${livefs}"
|
||||||
|
|
||||||
mount_overlay "${livefs}" "${work_dir}"
|
mount_overlayfs "${livefs}" "${work_dir}"
|
||||||
|
|
||||||
basestrap "${basestrap_args[@]}" "${livefs}" "${packages[@]}"
|
basestrap "${basestrap_args[@]}" "${livefs}" "${packages[@]}"
|
||||||
|
|
||||||
copy_overlay "${LIVE_OVERLAY}" "${livefs}"
|
copy_overlay "${LIVE_OVERLAY}" "${livefs}"
|
||||||
|
|
||||||
configure_image "${livefs}"
|
configure_chroot "${livefs}"
|
||||||
|
|
||||||
umount_overlay
|
umount_overlayfs
|
||||||
|
|
||||||
clean_up_image "${livefs}"
|
clean_up_chroot "${livefs}"
|
||||||
|
|
||||||
: > ${work_dir}/livefs.lock
|
: > ${work_dir}/livefs.lock
|
||||||
|
|
||||||
@@ -155,7 +118,7 @@ make_bootfs() {
|
|||||||
|
|
||||||
local bootfs="${work_dir}/bootfs"
|
local bootfs="${work_dir}/bootfs"
|
||||||
|
|
||||||
mount_overlay "${bootfs}" "${work_dir}"
|
mount_overlayfs "${bootfs}" "${work_dir}"
|
||||||
|
|
||||||
if ${use_dracut}; then
|
if ${use_dracut}; then
|
||||||
prepare_initramfs_dracut "${bootfs}"
|
prepare_initramfs_dracut "${bootfs}"
|
||||||
@@ -163,7 +126,7 @@ make_bootfs() {
|
|||||||
prepare_initramfs "${bootfs}"
|
prepare_initramfs "${bootfs}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
umount_overlay
|
umount_overlayfs
|
||||||
|
|
||||||
rm -R ${bootfs}
|
rm -R ${bootfs}
|
||||||
: > ${work_dir}/bootfs.lock
|
: > ${work_dir}/bootfs.lock
|
||||||
@@ -190,24 +153,3 @@ make_grub(){
|
|||||||
msg "Done [/iso/boot/grub]"
|
msg "Done [/iso/boot/grub]"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
compress_images(){
|
|
||||||
local timer=$(get_timer)
|
|
||||||
run_safe "make_iso"
|
|
||||||
chown -R "${OWNER}:$(id --group ${OWNER})" "${iso_dir}"
|
|
||||||
show_elapsed_time "${FUNCNAME}" "${timer}"
|
|
||||||
}
|
|
||||||
|
|
||||||
prepare_images(){
|
|
||||||
local timer=$(get_timer)
|
|
||||||
load_pkgs "${ROOT_LIST}" "${INITSYS}"
|
|
||||||
run_safe "make_rootfs"
|
|
||||||
if [[ -n ${LIVE_LIST} ]]; then
|
|
||||||
load_pkgs "${LIVE_LIST}" "${INITSYS}"
|
|
||||||
run_safe "make_livefs"
|
|
||||||
fi
|
|
||||||
run_safe "make_bootfs"
|
|
||||||
run_safe "make_grub"
|
|
||||||
|
|
||||||
show_elapsed_time "${FUNCNAME}" "${timer}"
|
|
||||||
}
|
|
||||||
|
@@ -12,6 +12,8 @@
|
|||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
|
shopt -s extglob
|
||||||
|
|
||||||
get_compliant_name(){
|
get_compliant_name(){
|
||||||
local gitname="$1"
|
local gitname="$1"
|
||||||
case $gitname in
|
case $gitname in
|
||||||
@@ -145,7 +147,7 @@ find_cached_package() {
|
|||||||
for dir in "${searchdirs[@]}"; do
|
for dir in "${searchdirs[@]}"; do
|
||||||
[[ -d $dir ]] || continue
|
[[ -d $dir ]] || continue
|
||||||
|
|
||||||
for pkg in "$dir"/*.pkg.tar.?z; do
|
for pkg in "$dir"/*.pkg.tar?(.!(sig|*.*)); do
|
||||||
[[ -f $pkg ]] || continue
|
[[ -f $pkg ]] || continue
|
||||||
|
|
||||||
# avoid adding duplicates of the same inode
|
# avoid adding duplicates of the same inode
|
||||||
@@ -155,7 +157,7 @@ find_cached_package() {
|
|||||||
|
|
||||||
# split apart package filename into parts
|
# split apart package filename into parts
|
||||||
pkgbasename=${pkg##*/}
|
pkgbasename=${pkg##*/}
|
||||||
pkgbasename=${pkgbasename%.pkg.tar.?z}
|
pkgbasename=${pkgbasename%.pkg.tar*}
|
||||||
|
|
||||||
arch=${pkgbasename##*-}
|
arch=${pkgbasename##*-}
|
||||||
pkgbasename=${pkgbasename%-"$arch"}
|
pkgbasename=${pkgbasename%-"$arch"}
|
||||||
|
@@ -34,7 +34,10 @@ for baselib in ${LIBDIR}/base/*.sh; do
|
|||||||
. $baselib
|
. $baselib
|
||||||
done
|
done
|
||||||
|
|
||||||
prepare_dir "${USER_CONF_DIR}"
|
prepare_artools(){
|
||||||
|
prepare_dir "${WORKSPACE_DIR}"
|
||||||
|
prepare_dir "${USER_CONF_DIR}"
|
||||||
|
}
|
||||||
|
|
||||||
load_base_config(){
|
load_base_config(){
|
||||||
|
|
||||||
@@ -50,8 +53,6 @@ load_base_config(){
|
|||||||
|
|
||||||
WORKSPACE_DIR=${WORKSPACE_DIR:-"/home/${OWNER}/artools-workspace"}
|
WORKSPACE_DIR=${WORKSPACE_DIR:-"/home/${OWNER}/artools-workspace"}
|
||||||
|
|
||||||
prepare_dir "${WORKSPACE_DIR}"
|
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -30,8 +30,6 @@ load_iso_config(){
|
|||||||
|
|
||||||
ISO_POOL=${ISO_POOL:-"${WORKSPACE_DIR}/iso"}
|
ISO_POOL=${ISO_POOL:-"${WORKSPACE_DIR}/iso"}
|
||||||
|
|
||||||
prepare_dir "${ISO_POOL}"
|
|
||||||
|
|
||||||
PROFILE='base'
|
PROFILE='base'
|
||||||
|
|
||||||
ISO_VERSION=${ISO_VERSION:-"$(date +%Y%m%d)"}
|
ISO_VERSION=${ISO_VERSION:-"$(date +%Y%m%d)"}
|
||||||
|
Reference in New Issue
Block a user