From 376b6049a1235be6eb957f307cf227af26456e1d Mon Sep 17 00:00:00 2001 From: Fabio Erculiani Date: Wed, 14 Sep 2011 12:47:33 +0200 Subject: [PATCH] [scripts] split daily and weekly ISO build scripts --- scripts/daily_iso_build.sh | 182 +------------------------------ scripts/iso_build.sh | 206 ++++++++++++++++++++++++++++++++++++ scripts/weekly_iso_build.sh | 3 + 3 files changed, 210 insertions(+), 181 deletions(-) create mode 100755 scripts/iso_build.sh create mode 100755 scripts/weekly_iso_build.sh diff --git a/scripts/daily_iso_build.sh b/scripts/daily_iso_build.sh index 6779623..ffb6ecd 100755 --- a/scripts/daily_iso_build.sh +++ b/scripts/daily_iso_build.sh @@ -1,183 +1,3 @@ #!/bin/bash -for arg in $@ -do - [[ "${arg}" = "--push" ]] && DO_PUSH="1" - [[ "${arg}" = "--stdout" ]] && DO_STDOUT="1" - if [ "${arg}" = "--pushonly" ]; then - DO_PUSH="1" - DRY_RUN="1" - fi -done - -CUR_DATE=$(date -u +%Y%m%d) -LOG_FILE="/var/log/molecule/autobuild-${CUR_DATE}-${$}.log" -BUILDING_DAILY=1 - -# to make ISO remaster spec files working (pre_iso_script) -export CUR_DATE -export ETP_NONINTERACTIVE=1 -export BUILDING_DAILY - -echo "DO_PUSH=${DO_PUSH}" -echo "DRY_RUN=${DRY_RUN}" -echo "LOG_FILE=${LOG_FILE}" - -# setup default language, cron might not do that -export LC_ALL="en_US.UTF-8" -export LANG="en_US.UTF-8" -export LANGUAGE="en_US.UTF-8" - -SOURCE_SPECS=( - "sabayon-x86-spinbase.spec" - "sabayon-amd64-spinbase.spec" -) -SOURCE_SPECS_ISO=( - "Sabayon_Linux_SpinBase_DAILY_x86.iso" - "Sabayon_Linux_SpinBase_DAILY_amd64.iso" -) - -REMASTER_SPECS=( - "sabayon-amd64-gnome.spec" - "sabayon-x86-gnome.spec" - "sabayon-amd64-kde.spec" - "sabayon-x86-kde.spec" - - "sabayon-amd64-lxde.spec" - "sabayon-x86-lxde.spec" - "sabayon-amd64-xfce.spec" - "sabayon-x86-xfce.spec" - "sabayon-amd64-e17.spec" - "sabayon-x86-e17.spec" - "sabayon-amd64-corecdx.spec" - "sabayon-x86-corecdx.spec" - "sabayon-amd64-serverbase.spec" - "sabayon-x86-serverbase.spec" - "sabayon-amd64-awesome.spec" - "sabayon-x86-awesome.spec" -) -REMASTER_SPECS_ISO=( - "Sabayon_Linux_DAILY_amd64_G.iso" - "Sabayon_Linux_DAILY_x86_G.iso" - "Sabayon_Linux_DAILY_amd64_K.iso" - "Sabayon_Linux_DAILY_x86_K.iso" - "Sabayon_Linux_DAILY_amd64_LXDE.iso" - "Sabayon_Linux_DAILY_x86_LXDE.iso" - "Sabayon_Linux_DAILY_amd64_Xfce.iso" - "Sabayon_Linux_DAILY_x86_Xfce.iso" - "Sabayon_Linux_DAILY_amd64_E17.iso" - "Sabayon_Linux_DAILY_x86_E17.iso" - "Sabayon_Linux_CoreCDX_DAILY_amd64.iso" - "Sabayon_Linux_CoreCDX_DAILY_x86.iso" - "Sabayon_Linux_ServerBase_DAILY_amd64.iso" - "Sabayon_Linux_ServerBase_DAILY_x86.iso" - "Sabayon_Linux_DAILY_amd64_Awesome.iso" - "Sabayon_Linux_DAILY_x86_Awesome.iso" -) - -REMASTER_OPENVZ_SPECS=( - "sabayon-amd64-spinbase-openvz-template.spec" - "sabayon-x86-spinbase-openvz-template.spec" -) -REMASTER_OPENVZ_SPECS_TAR=( - "Sabayon_Linux_SpinBase_DAILY_amd64_openvz.tar.gz" - "Sabayon_Linux_SpinBase_DAILY_x86_openvz.tar.gz" -) - -[[ -d "/sabayon/molecules/daily" ]] || mkdir -p /sabayon/molecules/daily -[[ -d "/sabayon/molecules/daily/remaster" ]] || mkdir -p /sabayon/molecules/daily/remaster -[[ -d "/var/log/molecule" ]] || mkdir -p /var/log/molecule - - -move_to_pkg_sabayon_org() { - if [ -n "${DO_PUSH}" ] || [ -f /sabayon/DO_PUSH ]; then - rm -f /sabayon/DO_PUSH - rsync -av --partial --delete-excluded /sabayon/iso_rsync/*DAILY* \ - entropy@pkg.sabayon.org:/sabayon/rsync/rsync.sabayon.org/iso/daily - fi -} - -build_sabayon() { - if [ -z "${DRY_RUN}" ]; then - rm -rf /sabayon/molecules/daily/*.spec - rm -rf /sabayon/molecules/daily/remaster/*.spec - - local source_specs="" - for i in ${!SOURCE_SPECS[@]} - do - src="/sabayon/molecules/${SOURCE_SPECS[i]}" - dst="/sabayon/molecules/daily/${SOURCE_SPECS[i]}" - cp "${src}" "${dst}" -p || return 1 - echo >> "${dst}" - echo "inner_source_chroot_script: /sabayon/scripts/inner_source_chroot_update.sh" >> "${dst}" - # tweak iso image name - sed -i "s/^#.*destination_iso_image_name/destination_iso_image_name:/" "${dst}" || return 1 - sed -i "s/destination_iso_image_name.*/destination_iso_image_name: ${SOURCE_SPECS_ISO[i]}/" "${dst}" || return 1 - # tweak release version - sed -i "s/release_version.*/release_version: ${CUR_DATE}/" "${dst}" || return 1 - echo "${dst}: iso: ${SOURCE_SPECS_ISO[i]} date: ${CUR_DATE}" - source_specs+="${dst} " - done - - local remaster_specs="" - for i in ${!REMASTER_SPECS[@]} - do - src="/sabayon/molecules/${REMASTER_SPECS[i]}" - dst="/sabayon/molecules/daily/remaster/${REMASTER_SPECS[i]}" - cp "${src}" "${dst}" -p || return 1 - # tweak iso image name - sed -i "s/^#.*destination_iso_image_name/destination_iso_image_name:/" "${dst}" || return 1 - sed -i "s/destination_iso_image_name.*/destination_iso_image_name: ${REMASTER_SPECS_ISO[i]}/" "${dst}" || return 1 - # tweak release version - sed -i "s/release_version.*/release_version: ${CUR_DATE}/" "${dst}" || return 1 - echo "${dst}: iso: ${REMASTER_SPECS_ISO[i]} date: ${CUR_DATE}" - remaster_specs+="${dst} " - done - - for i in ${!REMASTER_OPENVZ_SPECS[@]} - do - src="/sabayon/molecules/${REMASTER_OPENVZ_SPECS[i]}" - dst="/sabayon/molecules/daily/remaster/${REMASTER_OPENVZ_SPECS[i]}" - cp "${src}" "${dst}" -p || return 1 - # tweak tar name - sed -i "s/^#.*tar_name/tar_name:/" "${dst}" || return 1 - sed -i "s/tar_name.*/tar_name: ${REMASTER_OPENVZ_SPECS_TAR[i]}/" "${dst}" || return 1 - # tweak release version - sed -i "s/release_version.*/release_version: ${CUR_DATE}/" "${dst}" || return 1 - echo "${dst}: iso: ${REMASTER_OPENVZ_SPECS_TAR[i]} date: ${CUR_DATE}" - remaster_specs+="${dst} " - done - - molecule --nocolor ${source_specs} || return 1 - molecule --nocolor ${remaster_specs} || return 1 - cp /sabayon/iso/*DAILY* /sabayon/iso_rsync/ || return 1 - date > /sabayon/iso_rsync/RELEASE_DATE_DAILY - /sabayon/scripts/make_torrents.sh || return 1 - fi - return 0 -} - -out="0" -if [ -n "${DO_STDOUT}" ]; then - build_sabayon - out=${?} - if [ "${out}" = "0" ]; then - move_to_pkg_sabayon_org - out=${?} - fi -else - log_file="/var/log/molecule/autobuild-${CUR_DATE}-${$}.log" - build_sabayon &> "${log_file}" - out=${?} - if [ "${out}" = "0" ]; then - move_to_pkg_sabayon_org &>> "${log_file}" - out=${?} - fi -fi -echo "EXIT_STATUS: ${out}" - -CUR_DAY=$(date -u +%d) -if [ "${CUR_DAY}" = "01" ]; then - rm -rf /sabayon/pkgcache/* -fi -exit ${out} +exec /sabayon/scripts/iso_build.sh "daily" "$@" diff --git a/scripts/iso_build.sh b/scripts/iso_build.sh new file mode 100755 index 0000000..e70d42b --- /dev/null +++ b/scripts/iso_build.sh @@ -0,0 +1,206 @@ +#!/bin/bash + +ACTION="${1}" +if [ "${ACTION}" != "daily" ] && [ "${ACTION}" != "weekly" ]; then + echo "invalid action: ${ACTION}" >&2 + exit 1 +fi +shift + +for arg in "$@" +do + [[ "${arg}" = "--push" ]] && DO_PUSH="1" + [[ "${arg}" = "--stdout" ]] && DO_STDOUT="1" + if [ "${arg}" = "--pushonly" ]; then + DO_PUSH="1" + DRY_RUN="1" + fi +done + +CUR_DATE=$(date -u +%Y%m%d) +LOG_FILE="/var/log/molecule/autobuild-${CUR_DATE}-${$}.log" +BUILDING_DAILY=1 + +# to make ISO remaster spec files working (pre_iso_script) +export CUR_DATE +export ETP_NONINTERACTIVE=1 +export BUILDING_DAILY + +echo "DO_PUSH=${DO_PUSH}" +echo "DRY_RUN=${DRY_RUN}" +echo "LOG_FILE=${LOG_FILE}" + +# setup default language, cron might not do that +export LC_ALL="en_US.UTF-8" +export LANG="en_US.UTF-8" +export LANGUAGE="en_US.UTF-8" + +if [ "${ACTION}" = "weekly" ]; then + SOURCE_SPECS=() + SOURCE_SPECS_ISO=() + REMASTER_SPECS=( + "sabayon-x86-gforensic.spec" + "sabayon-x86-kforensic.spec" + "sabayon-amd64-gaming.spec" + "sabayon-x86-gaming.spec" + ) + REMASTER_SPECS_ISO=( + "Sabayon_Linux_Gforensic_DAILY_x86.iso" + "Sabayon_Linux_Kforensic_DAILY_x86.iso" + "Sabayon_Linux_DAILY_amd64_Gaming.iso" + "Sabayon_Linux_DAILY_x86_Gaming.iso" + ) +elif [ "${ACTION}" = "daily" ]; then + SOURCE_SPECS=( + "sabayon-x86-spinbase.spec" + "sabayon-amd64-spinbase.spec" + ) + SOURCE_SPECS_ISO=( + "Sabayon_Linux_SpinBase_DAILY_x86.iso" + "Sabayon_Linux_SpinBase_DAILY_amd64.iso" + ) + REMASTER_SPECS=( + "sabayon-amd64-gnome.spec" + "sabayon-x86-gnome.spec" + "sabayon-amd64-kde.spec" + "sabayon-x86-kde.spec" + + "sabayon-amd64-lxde.spec" + "sabayon-x86-lxde.spec" + "sabayon-amd64-xfce.spec" + "sabayon-x86-xfce.spec" + "sabayon-amd64-e17.spec" + "sabayon-x86-e17.spec" + "sabayon-amd64-corecdx.spec" + "sabayon-x86-corecdx.spec" + "sabayon-amd64-serverbase.spec" + "sabayon-x86-serverbase.spec" + "sabayon-amd64-awesome.spec" + "sabayon-x86-awesome.spec" + ) + REMASTER_SPECS_ISO=( + "Sabayon_Linux_DAILY_amd64_G.iso" + "Sabayon_Linux_DAILY_x86_G.iso" + "Sabayon_Linux_DAILY_amd64_K.iso" + "Sabayon_Linux_DAILY_x86_K.iso" + "Sabayon_Linux_DAILY_amd64_LXDE.iso" + "Sabayon_Linux_DAILY_x86_LXDE.iso" + "Sabayon_Linux_DAILY_amd64_Xfce.iso" + "Sabayon_Linux_DAILY_x86_Xfce.iso" + "Sabayon_Linux_DAILY_amd64_E17.iso" + "Sabayon_Linux_DAILY_x86_E17.iso" + "Sabayon_Linux_CoreCDX_DAILY_amd64.iso" + "Sabayon_Linux_CoreCDX_DAILY_x86.iso" + "Sabayon_Linux_ServerBase_DAILY_amd64.iso" + "Sabayon_Linux_ServerBase_DAILY_x86.iso" + "Sabayon_Linux_DAILY_amd64_Awesome.iso" + "Sabayon_Linux_DAILY_x86_Awesome.iso" + ) +fi + +[[ -d "/sabayon/molecules/daily" ]] || mkdir -p /sabayon/molecules/daily +[[ -d "/sabayon/molecules/daily/remaster" ]] || mkdir -p /sabayon/molecules/daily/remaster +[[ -d "/var/log/molecule" ]] || mkdir -p /var/log/molecule + + +move_to_pkg_sabayon_org() { + if [ -n "${DO_PUSH}" ] || [ -f /sabayon/DO_PUSH ]; then + rm -f /sabayon/DO_PUSH + rsync -av --partial --delete-excluded /sabayon/iso_rsync/*DAILY* \ + entropy@pkg.sabayon.org:/sabayon/rsync/rsync.sabayon.org/iso/daily + fi +} + +build_sabayon() { + if [ -z "${DRY_RUN}" ]; then + rm -rf /sabayon/molecules/daily/*.spec + rm -rf /sabayon/molecules/daily/remaster/*.spec + + local source_specs="" + for i in ${!SOURCE_SPECS[@]} + do + src="/sabayon/molecules/${SOURCE_SPECS[i]}" + dst="/sabayon/molecules/daily/${SOURCE_SPECS[i]}" + cp "${src}" "${dst}" -p || return 1 + echo >> "${dst}" + echo "inner_source_chroot_script: /sabayon/scripts/inner_source_chroot_update.sh" >> "${dst}" + # tweak iso image name + sed -i "s/^#.*destination_iso_image_name/destination_iso_image_name:/" "${dst}" || return 1 + sed -i "s/destination_iso_image_name.*/destination_iso_image_name: ${SOURCE_SPECS_ISO[i]}/" "${dst}" || return 1 + # tweak release version + sed -i "s/release_version.*/release_version: ${CUR_DATE}/" "${dst}" || return 1 + echo "${dst}: iso: ${SOURCE_SPECS_ISO[i]} date: ${CUR_DATE}" + source_specs+="${dst} " + done + + local remaster_specs="" + for i in ${!REMASTER_SPECS[@]} + do + src="/sabayon/molecules/${REMASTER_SPECS[i]}" + dst="/sabayon/molecules/daily/remaster/${REMASTER_SPECS[i]}" + cp "${src}" "${dst}" -p || return 1 + # tweak iso image name + sed -i "s/^#.*destination_iso_image_name/destination_iso_image_name:/" "${dst}" || return 1 + sed -i "s/destination_iso_image_name.*/destination_iso_image_name: ${REMASTER_SPECS_ISO[i]}/" "${dst}" || return 1 + # tweak release version + sed -i "s/release_version.*/release_version: ${CUR_DATE}/" "${dst}" || return 1 + echo "${dst}: iso: ${REMASTER_SPECS_ISO[i]} date: ${CUR_DATE}" + remaster_specs+="${dst} " + done + + for i in ${!REMASTER_OPENVZ_SPECS[@]} + do + src="/sabayon/molecules/${REMASTER_OPENVZ_SPECS[i]}" + dst="/sabayon/molecules/daily/remaster/${REMASTER_OPENVZ_SPECS[i]}" + cp "${src}" "${dst}" -p || return 1 + # tweak tar name + sed -i "s/^#.*tar_name/tar_name:/" "${dst}" || return 1 + sed -i "s/tar_name.*/tar_name: ${REMASTER_OPENVZ_SPECS_TAR[i]}/" "${dst}" || return 1 + # tweak release version + sed -i "s/release_version.*/release_version: ${CUR_DATE}/" "${dst}" || return 1 + echo "${dst}: iso: ${REMASTER_OPENVZ_SPECS_TAR[i]} date: ${CUR_DATE}" + remaster_specs+="${dst} " + done + + local done_something=0 + if [ -n "${source_specs}" ]; then + molecule --nocolor ${source_specs} || return 1 + done_something=1 + fi + if [ -n "${remaster_specs}" ]; then + molecule --nocolor ${remaster_specs} || return 1 + done_something=1 + fi + if [ "${done_something}" = "1" ]; then + cp /sabayon/iso/*DAILY* /sabayon/iso_rsync/ || return 1 + date > /sabayon/iso_rsync/RELEASE_DATE_DAILY + /sabayon/scripts/make_torrents.sh || return 1 + fi + fi + return 0 +} + +out="0" +if [ -n "${DO_STDOUT}" ]; then + build_sabayon + out=${?} + if [ "${out}" = "0" ]; then + move_to_pkg_sabayon_org + out=${?} + fi +else + log_file="/var/log/molecule/autobuild-${CUR_DATE}-${$}.log" + build_sabayon &> "${log_file}" + out=${?} + if [ "${out}" = "0" ]; then + move_to_pkg_sabayon_org &>> "${log_file}" + out=${?} + fi +fi +echo "EXIT_STATUS: ${out}" + +CUR_DAY=$(date -u +%d) +if [ "${CUR_DAY}" = "01" ]; then + rm -rf /sabayon/pkgcache/* +fi +exit ${out} diff --git a/scripts/weekly_iso_build.sh b/scripts/weekly_iso_build.sh new file mode 100755 index 0000000..d6bc105 --- /dev/null +++ b/scripts/weekly_iso_build.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +exec /sabayon/scripts/iso_build.sh "weekly" "$@"