buildiso: make it run path independent; needs detection or manual configuring of iso-profiles location
This commit is contained in:
parent
44570ca07c
commit
f75ab1de22
4 changed files with 119 additions and 120 deletions
|
@ -21,9 +21,7 @@ import ${LIBDIR}/util.sh
|
||||||
|
|
||||||
show_profile(){
|
show_profile(){
|
||||||
eval_edition "$1"
|
eval_edition "$1"
|
||||||
cd ${run_dir}/${edition_type}/$1
|
load_profile "${edition_dir}/$1"
|
||||||
load_profile "$1"
|
|
||||||
msg2 "edition_type: ${edition_type}"
|
|
||||||
if ${verbose};then
|
if ${verbose};then
|
||||||
msg2 "work_dir: ${work_dir}"
|
msg2 "work_dir: ${work_dir}"
|
||||||
msg2 "iso_dir: ${iso_dir}"
|
msg2 "iso_dir: ${iso_dir}"
|
||||||
|
@ -60,7 +58,6 @@ show_profile(){
|
||||||
msg2 "disable_openrc: ${disable_openrc[*]}"
|
msg2 "disable_openrc: ${disable_openrc[*]}"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
cd ${run_dir}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
display_settings(){
|
display_settings(){
|
||||||
|
@ -106,7 +103,7 @@ load_user_info
|
||||||
load_config "${USER_CONFIG}/manjaro-tools.conf"
|
load_config "${USER_CONFIG}/manjaro-tools.conf"
|
||||||
load_config "${SYSCONFDIR}/manjaro-tools.conf"
|
load_config "${SYSCONFDIR}/manjaro-tools.conf"
|
||||||
|
|
||||||
run_dir=$(pwd)
|
run_dir=/home/devtux/Projekte/iso-profiles #$(pwd)
|
||||||
|
|
||||||
clean_first=true
|
clean_first=true
|
||||||
pretend=false
|
pretend=false
|
||||||
|
|
|
@ -36,7 +36,7 @@ copy_initcpio(){
|
||||||
msg2 "Copying initcpio ..."
|
msg2 "Copying initcpio ..."
|
||||||
cp /usr/lib/initcpio/hooks/miso* $1/usr/lib/initcpio/hooks
|
cp /usr/lib/initcpio/hooks/miso* $1/usr/lib/initcpio/hooks
|
||||||
cp /usr/lib/initcpio/install/miso* $1/usr/lib/initcpio/install
|
cp /usr/lib/initcpio/install/miso* $1/usr/lib/initcpio/install
|
||||||
cp mkinitcpio.conf $1/etc/mkinitcpio-${iso_name}.conf
|
cp ${profile_dir}/mkinitcpio.conf $1/etc/mkinitcpio-${iso_name}.conf
|
||||||
set_mkinicpio_hooks "$1/etc/mkinitcpio-${iso_name}.conf"
|
set_mkinicpio_hooks "$1/etc/mkinitcpio-${iso_name}.conf"
|
||||||
sed -e 's|"$@"|"$@" >/dev/null 2>&1|' -i $1/usr/lib/initcpio/init
|
sed -e 's|"$@"|"$@" >/dev/null 2>&1|' -i $1/usr/lib/initcpio/init
|
||||||
}
|
}
|
||||||
|
|
127
lib/util-iso.sh
127
lib/util-iso.sh
|
@ -22,59 +22,23 @@ import_util_iso_fs(){
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# $1: profile
|
|
||||||
check_profile(){
|
|
||||||
local keyfiles=('profile.conf' 'mkinitcpio.conf' 'Packages' 'Packages-Livecd')
|
|
||||||
local keydirs=('overlay' 'overlay-livecd' 'isolinux')
|
|
||||||
local has_keyfiles=false has_keydirs=false
|
|
||||||
for f in ${keyfiles[@]}; do
|
|
||||||
if [[ -f $f ]];then
|
|
||||||
has_keyfiles=true
|
|
||||||
else
|
|
||||||
has_keyfiles=false
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
for d in ${keydirs[@]}; do
|
|
||||||
if [[ -d $d ]];then
|
|
||||||
has_keydirs=true
|
|
||||||
else
|
|
||||||
has_keydirs=false
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if ! ${has_keyfiles} && ! ${has_keydirs};then
|
|
||||||
die "Profile [$1] sanity check failed!"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
check_requirements(){
|
|
||||||
[[ -f ${run_dir}/.manjaro-tools ]] || die "${run_dir} is not a valid iso profiles directory!"
|
|
||||||
if ! $(is_valid_arch_iso ${arch});then
|
|
||||||
die "${arch} is not a valid arch!"
|
|
||||||
fi
|
|
||||||
if ! $(is_valid_branch ${branch});then
|
|
||||||
die "${branch} is not a valid branch!"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
copy_overlay_root(){
|
copy_overlay_root(){
|
||||||
msg2 "Copying overlay ..."
|
msg2 "Copying overlay ..."
|
||||||
cp -a --no-preserve=ownership overlay/* $1
|
cp -a --no-preserve=ownership ${profile_dir}/overlay/* $1
|
||||||
}
|
}
|
||||||
|
|
||||||
copy_overlay_custom(){
|
copy_overlay_custom(){
|
||||||
msg2 "Copying ${custom}-overlay ..."
|
msg2 "Copying ${custom}-overlay ..."
|
||||||
cp -a --no-preserve=ownership ${custom}-overlay/* ${work_dir}/${custom}-image
|
cp -a --no-preserve=ownership ${profile_dir}/${custom}-overlay/* ${work_dir}/${custom}-image
|
||||||
}
|
}
|
||||||
|
|
||||||
copy_overlay_livecd(){
|
copy_overlay_livecd(){
|
||||||
msg2 "Copying overlay-livecd ..."
|
msg2 "Copying overlay-livecd ..."
|
||||||
if [[ -L overlay-livecd ]];then
|
if [[ -L overlay-livecd ]];then
|
||||||
cp -a --no-preserve=ownership overlay-livecd/* $1
|
cp -a --no-preserve=ownership ${profile_dir}/overlay-livecd/* $1
|
||||||
else
|
else
|
||||||
msg2 "Copying custom overlay-livecd ..."
|
msg2 "Copying custom overlay-livecd ..."
|
||||||
cp -LR overlay-livecd/* $1
|
cp -LR ${profile_dir}/overlay-livecd/* $1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -523,8 +487,8 @@ load_pkgs(){
|
||||||
local list
|
local list
|
||||||
|
|
||||||
if [[ $1 == "${packages_custom}" ]];then
|
if [[ $1 == "${packages_custom}" ]];then
|
||||||
sort -u ../../shared/Packages-Desktop ${packages_custom} > ${work_dir}/${packages_custom}
|
sort -u ${run_dir}/shared/Packages-Desktop ${packages_custom} > ${work_dir}/p_custom
|
||||||
list=${work_dir}/${packages_custom}
|
list=${work_dir}/p_custom
|
||||||
else
|
else
|
||||||
list=$1
|
list=$1
|
||||||
fi
|
fi
|
||||||
|
@ -564,7 +528,43 @@ check_custom_pacman_conf(){
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
check_profile_conf(){
|
# $1: profile
|
||||||
|
check_profile_sanity(){
|
||||||
|
local keyfiles=("$1/profile.conf" "$1/mkinitcpio.conf" "$1/Packages" "$1/Packages-Livecd")
|
||||||
|
local keydirs=("$1/overlay" "$1/overlay-livecd" "$1/isolinux")
|
||||||
|
local has_keyfiles=false has_keydirs=false
|
||||||
|
for f in ${keyfiles[@]}; do
|
||||||
|
if [[ -f $f ]];then
|
||||||
|
has_keyfiles=true
|
||||||
|
else
|
||||||
|
has_keyfiles=false
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
for d in ${keydirs[@]}; do
|
||||||
|
if [[ -d $d ]];then
|
||||||
|
has_keydirs=true
|
||||||
|
else
|
||||||
|
has_keydirs=false
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if ! ${has_keyfiles} && ! ${has_keydirs};then
|
||||||
|
die "Profile [$1] sanity check failed!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
check_requirements(){
|
||||||
|
[[ -f ${run_dir}/.manjaro-tools ]] || die "${run_dir} is not a valid iso profiles directory!"
|
||||||
|
if ! $(is_valid_arch_iso ${arch});then
|
||||||
|
die "${arch} is not a valid arch!"
|
||||||
|
fi
|
||||||
|
if ! $(is_valid_branch ${branch});then
|
||||||
|
die "${branch} is not a valid branch!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
check_profile_vars(){
|
||||||
if ! is_valid_init "${initsys}";then
|
if ! is_valid_init "${initsys}";then
|
||||||
die "initsys only accepts openrc/systemd value!"
|
die "initsys only accepts openrc/systemd value!"
|
||||||
fi
|
fi
|
||||||
|
@ -587,18 +587,21 @@ check_profile_conf(){
|
||||||
|
|
||||||
# $1: profile
|
# $1: profile
|
||||||
load_profile(){
|
load_profile(){
|
||||||
msg3 "Profile: [$1]"
|
profile_dir=$1
|
||||||
check_profile "$1"
|
local prof=${1##*/}
|
||||||
load_profile_config 'profile.conf'
|
msg3 "Profile: [$prof]"
|
||||||
check_profile_conf
|
check_profile_sanity "$1"
|
||||||
local files=$(ls Packages*)
|
load_profile_config "$1/profile.conf" || die "$1 is not a valid profile!"
|
||||||
|
check_profile_vars
|
||||||
|
local files=$(ls $1/Packages*)
|
||||||
for f in ${files[@]};do
|
for f in ${files[@]};do
|
||||||
case $f in
|
case $f in
|
||||||
Packages|Packages-Livecd|Packages-Mhwd) continue ;;
|
$1/Packages|$1/Packages-Livecd|$1/Packages-Mhwd) continue ;;
|
||||||
*) packages_custom="$f" ;;
|
*) packages_custom="$f" ;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
custom=${packages_custom#*-}
|
custom=${packages_custom##*/}
|
||||||
|
custom=${custom#*-}
|
||||||
custom=${custom,,}
|
custom=${custom,,}
|
||||||
if [[ ${initsys} == 'openrc' ]];then
|
if [[ ${initsys} == 'openrc' ]];then
|
||||||
iso_file="${iso_name}-${custom}-${initsys}-${dist_release}-${arch}.iso"
|
iso_file="${iso_name}-${custom}-${initsys}-${dist_release}-${arch}.iso"
|
||||||
|
@ -609,11 +612,11 @@ load_profile(){
|
||||||
check_custom_pacman_conf
|
check_custom_pacman_conf
|
||||||
|
|
||||||
mkchroot_args+=(-C ${pacman_conf} -S ${mirrors_conf} -B "${build_mirror}/${branch}" -K)
|
mkchroot_args+=(-C ${pacman_conf} -S ${mirrors_conf} -B "${build_mirror}/${branch}" -K)
|
||||||
work_dir=${chroots_iso}/$1/${arch}
|
work_dir=${chroots_iso}/$prof/${arch}
|
||||||
|
|
||||||
[[ -d ${work_dir}/root-image ]] && check_chroot_version "${work_dir}/root-image"
|
[[ -d ${work_dir}/root-image ]] && check_chroot_version "${work_dir}/root-image"
|
||||||
|
|
||||||
iso_dir="${cache_dir_iso}/${edition_type}/$1/${dist_release}/${arch}"
|
iso_dir="${cache_dir_iso}/$prof/${dist_release}/${arch}"
|
||||||
|
|
||||||
prepare_dir "${iso_dir}"
|
prepare_dir "${iso_dir}"
|
||||||
}
|
}
|
||||||
|
@ -628,18 +631,19 @@ compress_images(){
|
||||||
|
|
||||||
build_images(){
|
build_images(){
|
||||||
local timer=$(get_timer)
|
local timer=$(get_timer)
|
||||||
load_pkgs "Packages"
|
load_pkgs "${profile_dir}/Packages"
|
||||||
make_image_root
|
make_image_root
|
||||||
|
msg "${packages_custom}"
|
||||||
if [[ -f "${packages_custom}" ]] ; then
|
if [[ -f "${packages_custom}" ]] ; then
|
||||||
load_pkgs "${packages_custom}"
|
load_pkgs "${packages_custom}"
|
||||||
make_image_custom
|
make_image_custom
|
||||||
fi
|
fi
|
||||||
if [[ -f Packages-Livecd ]]; then
|
if [[ -f ${profile_dir}/Packages-Livecd ]]; then
|
||||||
load_pkgs "Packages-Livecd"
|
load_pkgs "${profile_dir}/Packages-Livecd"
|
||||||
make_image_livecd
|
make_image_livecd
|
||||||
fi
|
fi
|
||||||
if [[ -f Packages-Mhwd ]] ; then
|
if [[ -f ${profile_dir}/Packages-Mhwd ]] ; then
|
||||||
load_pkgs 'Packages-Mhwd'
|
load_pkgs "${profile_dir}/Packages-Mhwd"
|
||||||
make_image_mhwd
|
make_image_mhwd
|
||||||
fi
|
fi
|
||||||
make_image_boot
|
make_image_boot
|
||||||
|
@ -655,25 +659,22 @@ build_images(){
|
||||||
make_profile(){
|
make_profile(){
|
||||||
eval_edition "$1"
|
eval_edition "$1"
|
||||||
msg "Start building [$1]"
|
msg "Start building [$1]"
|
||||||
cd ${run_dir}/${edition_type}/$1
|
load_profile "${edition_dir}/$1"
|
||||||
load_profile "$1"
|
|
||||||
import_util_iso_fs
|
import_util_iso_fs
|
||||||
${clean_first} && chroot_clean "${work_dir}"
|
${clean_first} && chroot_clean "${work_dir}"
|
||||||
if ${iso_only}; then
|
if ${iso_only}; then
|
||||||
[[ ! -d ${work_dir} ]] && die "Create images: buildiso -p ${buildset_iso} -i"
|
[[ ! -d ${work_dir} ]] && die "Create images: buildiso -p $1 -i"
|
||||||
compress_images
|
compress_images
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
if ${images_only}; then
|
if ${images_only}; then
|
||||||
build_images
|
build_images
|
||||||
warning "Continue compress: buildiso -p ${buildset_iso} -sc ..."
|
warning "Continue compress: buildiso -p $1 -sc ..."
|
||||||
exit 1
|
exit 1
|
||||||
else
|
else
|
||||||
build_images
|
build_images
|
||||||
compress_images
|
compress_images
|
||||||
fi
|
fi
|
||||||
cd ${run_dir}
|
|
||||||
msg "Finished building [$1]"
|
msg "Finished building [$1]"
|
||||||
msg3 "Time ${FUNCNAME}: $(elapsed_time ${timer_start}) minutes"
|
msg3 "Time ${FUNCNAME}: $(elapsed_time ${timer_start}) minutes"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -40,10 +40,11 @@ eval_buildset(){
|
||||||
}
|
}
|
||||||
|
|
||||||
eval_edition(){
|
eval_edition(){
|
||||||
local result=$(find . -maxdepth 2 -name "$1") path
|
local result=$(find ${run_dir} -maxdepth 2 -name "$1") path
|
||||||
[[ -z $result ]] && die "$1 is not a valid profile or buildset!"
|
[[ -z $result ]] && die "$1 is not a valid profile or buildset!"
|
||||||
path=${result#./*}
|
path=${result%/*}
|
||||||
edition_type=${path%%/*}
|
path=${path##*/}
|
||||||
|
edition_dir=${run_dir}/${path}
|
||||||
}
|
}
|
||||||
|
|
||||||
get_timer(){
|
get_timer(){
|
||||||
|
|
Loading…
Reference in a new issue