diff options
-rw-r--r-- | README | 15 | ||||
-rwxr-xr-x | configs/releng/build.sh | 239 |
2 files changed, 183 insertions, 71 deletions
@@ -240,23 +240,24 @@ Note: These steps should be done with 64 bits support. * Enter 32 bits chroot enviroment then build core and netinstall single images. [chroot32] # linux32 mkarchroot -r bash /tmp/chroot32 - [chroot32] # mknod /dev/loop1032 b 7 1032 #assumed loop.max_part=0 (by default) + [chroot32] # mknod /dev/loop1032 b 7 1032 # assumed loop.max_part=0 (by default) [chroot32] # cp -r /usr/share/archiso/configs/releng /tmp [chroot32] # cd /tmp/releng - [chroot32] # ./build.sh all_iso_single - [chroot32] # ./build.sh purge_single #optional + [chroot32] # ./build.sh build single all + [chroot32] # ./build.sh purge single # optional step * Enter 64 bits chroot enviroment then build core and netinstall single images. [chroot64] # mkarchroot -r bash /tmp/chroot64 - [chroot64] # mknod /dev/loop1064 b 7 1064 #assumed loop.max_part=0 (by default) + [chroot64] # mknod /dev/loop1064 b 7 1064 # assumed loop.max_part=0 (by default) [chroot64] # cp -r /usr/share/archiso/configs/releng /tmp [chroot64] # cd /tmp/releng - [chroot64] # ./build.sh all_iso_single - [chroot64] # ./build.sh purge_single #optional + [chroot64] # ./build.sh build single all + [chroot64] # ./build.sh purge single # optional step * Build core and netinstall dual images from any of the chroot enviroments. [host64] # mkarchroot -r bash /tmp/chroot64 [chroot64] # cd /tmp/releng - [chroot64] # ./build.sh all_iso_dual + [chroot64] # ./build.sh build dual all + [chroot64] # ./build.sh purge dual # optional step diff --git a/configs/releng/build.sh b/configs/releng/build.sh index 7660ee9..feac4a8 100755 --- a/configs/releng/build.sh +++ b/configs/releng/build.sh @@ -9,7 +9,7 @@ install_dir=arch arch=$(uname -m) work_dir=work out_dir=out -verbose="n" +verbose="" script_path=$(readlink -f ${0%/*}) @@ -214,13 +214,82 @@ make_dual() { fi } +purge_single () +{ + if [[ -d ${work_dir} ]]; then + find ${work_dir} -mindepth 1 -maxdepth 1 \ + ! -path ${work_dir}/iso -prune \ + | xargs rm -rf + fi +} + +purge_dual () +{ + if [[ -d ${work_dir}/dual ]]; then + find ${work_dir}/dual -mindepth 1 -maxdepth 1 \ + ! -path ${work_dir}/dual/iso -prune \ + | xargs rm -rf + fi +} + +clean_single () +{ + rm -rf ${work_dir} + rm -f ${out_dir}/${iso_name}-${iso_version}-*-${arch}.iso +} +clean_dual () +{ + rm -rf ${work_dir}/dual + rm -f ${out_dir}/${iso_name}-${iso_version}-*-dual.iso +} + +make_common_single() { + make_basefs + make_packages + make_customize_root_image + make_setup_mkinitcpio + make_boot + make_syslinux + make_isolinux + make_lib_modules + make_usr_share + make_aitab $1 + make_prepare $1 + make_iso $1 +} _usage () { - echo "usage ${0##*/} net_iso_single | core_iso_single | all_iso_single | purge_single | clean_single" - echo " net_iso_dual | core_iso_dual | all_iso_dual | purge_dual | clean_dual" + echo "usage ${0} [options] command <command options>" + echo + echo " General options:" + echo " -N <iso_name> Set an iso filename (prefix)" + echo " Default: ${iso_name}" + echo " -V <iso_version> Set an iso version (in filename)" + echo " Default: ${iso_version}" + echo " -L <iso_label> Set an iso label (disk label)" + echo " Default: ${iso_label}" + echo " -D <install_dir> Set an install_dir (directory inside iso)" + echo " Default: ${install_dir}" + echo " -w <work_dir> Set the working directory" + echo " Default: ${work_dir}" + echo " -o <out_dir> Set the output directory" + echo " Default: ${out_dir}" + echo " -v Enable verbose output" + echo " -h This help message" echo + echo " Commands:" + echo " build <mode> <type>" + echo " Build selected .iso by <mode> and <type>" + echo " purge <mode>" + echo " Clean working directory except iso/ directory of build <mode>" + echo " clean <mode>" + echo " Clean working directory and .iso file in output directory of build <mode>" + echo + echo " Command options:" + echo " <mode> Valid values 'single' or 'dual'" + echo " <type> Valid values 'netinstall', 'core' or 'all'" exit ${1} } @@ -229,81 +298,123 @@ if [[ ${EUID} -ne 0 ]]; then _usage 1 fi +while getopts 'N:V:L:D:w:o:vh' arg; do + case "${arg}" in + N) iso_name="${OPTARG}" ;; + V) iso_version="${OPTARG}" ;; + L) iso_label="${OPTARG}" ;; + D) install_dir="${OPTARG}" ;; + w) work_dir="${OPTARG}" ;; + o) out_dir="${OPTARG}" ;; + v) verbose="-v" ;; + h|?) _usage 0 ;; + *) + _msg_error "Invalid argument '${arg}'" 0 + _usage 1 + ;; + esac +done + +shift $((OPTIND - 1)) + if [[ $# -lt 1 ]]; then echo "No command specified" _usage 1 fi command_name="${1}" -if [[ ${verbose} == "y" ]]; then - verbose="-v" -else - verbose="" +if [[ $# -lt 2 ]]; then + echo "No command mode specified" + _usage 1 fi +command_mode="${2}" -if [[ ${command_name} =~ single ]]; then - work_dir=${work_dir}/${arch} +if [[ ${command_name} == "build" ]]; then + if [[ $# -lt 3 ]]; then + echo "No build type specified" + _usage 1 + fi +command_type="${3}" fi -make_common_single() { - make_basefs - make_packages - make_customize_root_image - make_setup_mkinitcpio - make_boot - make_syslinux - make_isolinux - make_lib_modules - make_usr_share - make_aitab $1 - make_prepare $1 - make_iso $1 -} +if [[ ${command_mode} == "single" ]]; then + work_dir=${work_dir}/${arch} +fi case "${command_name}" in - net_iso_single) - make_common_single netinstall - ;; - core_iso_single) - make_core_repo - make_common_single core - ;; - all_iso_single) - make_common_single netinstall - make_core_repo - make_common_single core - ;; - net_iso_dual) - make_dual netinstall - ;; - core_iso_dual) - make_dual core - ;; - all_iso_dual) - make_dual netinstall - make_dual core - ;; - purge_single) - if [[ -d ${work_dir} ]]; then - find ${work_dir} -mindepth 1 -maxdepth 1 \ - ! -path ${work_dir}/iso -prune \ - | xargs rm -rf - fi - ;; - purge_dual) - if [[ -d ${work_dir}/dual ]]; then - find ${work_dir}/dual -mindepth 1 -maxdepth 1 \ - ! -path ${work_dir}/dual/iso -prune \ - | xargs rm -rf - fi + build) + case "${command_mode}" in + single) + case "${command_type}" in + netinstall) + make_common_single netinstall + ;; + core) + make_core_repo + make_common_single core + ;; + all) + make_common_single netinstall + make_core_repo + make_common_single core + ;; + *) + echo "Invalid build type '${command_type}'" + _usage 1 + ;; + esac + ;; + dual) + case "${command_type}" in + netinstall) + make_dual netinstall + ;; + core) + make_dual core + ;; + all) + make_dual netinstall + make_dual core + ;; + *) + echo "Invalid build type '${command_type}'" + _usage 1 + ;; + esac + ;; + *) + echo "Invalid build mode '${command_mode}'" + _usage 1 + ;; + esac ;; - clean_single) - rm -rf ${work_dir} - rm -f ${out_dir}/${iso_name}-${iso_version}-*-${arch}.iso + purge) + case "${command_mode}" in + single) + purge_single + ;; + dual) + purge_dual + ;; + *) + echo "Invalid purge mode '${command_mode}'" + _usage 1 + ;; + esac ;; - clean_dual) - rm -rf ${work_dir}/dual - rm -f ${out_dir}/${iso_name}-${iso_version}-*-dual.iso + clean) + case "${command_mode}" in + single) + clean_single + ;; + dual) + clean_dual + ;; + *) + echo "Invalid clean mode '${command_mode}'" + _usage 1 + ;; + esac ;; *) echo "Invalid command name '${command_name}'" |