From eb76bfb49297829d3c306edececb6b41bef0b648 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sun, 13 Nov 2022 00:26:46 +0100 Subject: [PATCH] script: lots of cleanup and simplify --- .gitignore | 1 + make-msys2-installer | 138 ++++++++++----------------- qt-ifw/config/config.xml | 4 +- msys2.ico => qt-ifw/config/msys2.ico | Bin 4 files changed, 52 insertions(+), 91 deletions(-) rename msys2.ico => qt-ifw/config/msys2.ico (100%) diff --git a/.gitignore b/.gitignore index 410e66f..66d4f3d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ _cache *.exe *.xz +_build \ No newline at end of file diff --git a/make-msys2-installer b/make-msys2-installer index 10bc3cd..a51c8a1 100644 --- a/make-msys2-installer +++ b/make-msys2-installer @@ -1,105 +1,70 @@ #!/usr/bin/env bash -_thisdir="$(dirname $0)" -test "${_thisdir}" = "." && _thisdir=${PWD} -_ifwroot="${_thisdir}"/qt-ifw +set -e + +_thisdir="$( cd "$( dirname "$0" )" && pwd )" +_build="${_thisdir}/_build" +_ifwroot="${_build}/qt-ifw" _date=$(date +'%Y%m%d') _dateqif=$(date +'%Y-%m-%d') -_version=${_date} -_filename=msys2-x86_64-${_date}.exe -_filename2=msys2-base-x86_64-${_date}.tar.xz -_filename3=msys2-base-x86_64-${_date}.sfx.exe -_binarycreator=/mingw64/bin/binarycreator.exe -_installerbase=/mingw64/bin/installerbase.exe -_newmsysbase=/tmp/newmsys -_newmsys=${_newmsysbase}/msys64 - -declare -a undo_commands - -_exitcode=5 - -exit_with_undo() { - for _cmd in ${undo_commands[@]}; do - eval "${_cmd}" - done - exit ${_exitcode} -} - -exit_cleanly() { - _exitcode=$1; shift; - local _message=$1; shift; - echo "${_message}" - exit_with_undo -} - -do_seds() { - find "${_ifwroot}" \( -name "package.xml" -or -name "config.xml" \) -exec sed -i "s|@DATE@|${_dateqif}|g" "{}" \; - find "${_ifwroot}" \( -name "package.xml" -or -name "config.xml" \) -exec sed -i "s|@VERSION@|${_version}|g" "{}" \; - undo_commands+=("undo_seds") -} - -undo_seds() { - find "${_ifwroot}" \( -name "package.xml" -or -name "config.xml" \) -exec sed -i "s|${_dateqif}<|@DATE@<|g" "{}" \; - find "${_ifwroot}" \( -name "package.xml" -or -name "config.xml" \) -exec sed -i "s|${_version}<|@VERSION@<|g" "{}" \; -} +_version="${_date}" +_newmsysbase="${_build}/newmsys" +_newmsys="${_newmsysbase}/msys64" create_installer_archive() { - local _data="${_ifwroot}"/packages/com.msys2.root/data - [ -d "${_data}" ] && rm -rf "${_data}" - mkdir -p "${_data}" + echo "[Creating installer archive...]" - local _dirs="${_newmsys}/"* - local _compress_cmd="7z a -mx9 -md128m ${_data}/msys64.7z ${_dirs}" + local _data="${_ifwroot}"/packages/com.msys2.root/data pushd / > /dev/null - echo "Run: ${_compress_cmd} ..." - eval "${_compress_cmd}" 2>&1 - _result=$? - if [ "${_result}" -eq "0" ]; then - echo " archivegen succeeded. Created ${_data}/msys64.7z" - else - exit_cleanly "3" "archivegen failed." - fi + mkdir -p "${_data}" + 7z a -mx9 -md128m "${_data}/msys64.7z" "${_newmsys}/"* popd > /dev/null } create_archive() { - pushd ${_newmsysbase} > /dev/null - export XZ_OPT="-e9T0" - local _compress_cmd2="/usr/bin/tar --transform='s/:/_/g' --dereference --hard-dereference -cJf ${_thisdir}/${_filename2} msys64" - echo "Run: ${_compress_cmd2} ..." - eval "${_compress_cmd2}" - _result=$? - if [ "${_result}" -eq "0" ]; then - echo " tar succeeded. Created " - else - die "MSYS2 compressing fail." - fi + echo "[Creating archive...]" + + pushd "${_newmsysbase}" > /dev/null + export XZ_OPT="-9T0" + /usr/bin/tar --transform='s/:/_/g' --dereference --hard-dereference -cJf "${_thisdir}/msys2-base-x86_64-${_date}.tar.xz" msys64 popd > /dev/null } create_sfx() { - # self extracting cli 7z archive - "${_thisdir}/create-sfx.sh" "msys64" "${_thisdir}/${_filename3}" + echo "[Creating SFX...]" + + pushd "${_newmsysbase}" > /dev/null + "${_thisdir}/create-sfx.sh" "msys64" "${_thisdir}/msys2-base-x86_64-${_date}.sfx.exe" + popd > /dev/null } -# Add -v to get more information. -make_installer() { - "${_binarycreator}" \ - -t "${_installerbase}" \ - -p "${_ifwroot}/packages" \ - -c "${_ifwroot}/config/config.xml" \ - --offline-only \ - "${_filename}" \ - -v +copy_installer() { + echo "[Copying installer...]" + rm -Rf "${_ifwroot}" && cp -r "${_thisdir}"/qt-ifw "${_ifwroot}" + + find "${_ifwroot}" \( -name "package.xml" -or -name "config.xml" \) -exec sed -i "s|@DATE@|${_dateqif}|g" "{}" \; + find "${_ifwroot}" \( -name "package.xml" -or -name "config.xml" \) -exec sed -i "s|@VERSION@|${_version}|g" "{}" \; } -trap exit_with_undo 1 2 15 +create_installer() { + echo "[Creating installer...]" + + pushd "${_build}" > /dev/null + binarycreator \ + -t "$(command -v installerbase)" \ + -p "${_ifwroot}/packages" \ + -c "${_ifwroot}/config/config.xml" \ + --offline-only \ + "${_thisdir}/msys2-x86_64-${_date}.exe" \ + -v + popd > /dev/null +} create_chroot_system() { - [ -d ${_newmsysbase} ] && rm -rf ${_newmsysbase} - mkdir -p "${_newmsys}" - pushd "${_newmsys}" > /dev/null + echo "[Creating chroot system...]" + rm -Rf "${_newmsysbase}" && mkdir -p "${_newmsys}" + pushd "${_newmsys}" > /dev/null mkdir -p var/lib/pacman mkdir -p var/log mkdir -p tmp @@ -107,27 +72,22 @@ create_chroot_system() { pacman -Syu --root "${_newmsys}" pacman -S filesystem msys2-runtime --noconfirm --root "${_newmsys}" pacman -S base --noconfirm --root "${_newmsys}" - _result=$? - if [ "${_result}" -ne "0" ]; then - exit_cleanly "1" "failed to create newmsys2 via command 'pacman -S base --noconfirm --root ${_newmsys}'" - fi popd > /dev/null } main() { pacman -S --noconfirm --needed \ - mingw-w64-x86_64-qt-installer-framework \ - mingw-w64-x86_64-7zip + "${MINGW_PACKAGE_PREFIX}-qt-installer-framework" \ + "${MINGW_PACKAGE_PREFIX}-7zip" - echo "Creating MSYS2 chroot system ${_newmsys}" create_chroot_system - do_seds + copy_installer create_installer_archive + create_installer + create_archive create_sfx - make_installer - exit_cleanly "0" "All done, see ${_filename}" } main \ No newline at end of file diff --git a/qt-ifw/config/config.xml b/qt-ifw/config/config.xml index bf2b8c1..fdafe5e 100644 --- a/qt-ifw/config/config.xml +++ b/qt-ifw/config/config.xml @@ -8,8 +8,8 @@ MSYS2 @TargetDir@/ucrt64.exe - ../../msys2 - ../../msys2 + msys2 + msys2.ico false uninstall false diff --git a/msys2.ico b/qt-ifw/config/msys2.ico similarity index 100% rename from msys2.ico rename to qt-ifw/config/msys2.ico