script: lots of cleanup and simplify

This commit is contained in:
Christoph Reiter
2022-11-13 00:26:46 +01:00
parent e48c22a1dc
commit eb76bfb492
4 changed files with 52 additions and 91 deletions

1
.gitignore vendored
View File

@@ -1,3 +1,4 @@
_cache
*.exe
*.xz
_build

View File

@@ -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|<ReleaseDate>${_dateqif}<|<ReleaseDate>@DATE@<|g" "{}" \;
find "${_ifwroot}" \( -name "package.xml" -or -name "config.xml" \) -exec sed -i "s|<Version>${_version}<|<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

View File

@@ -8,8 +8,8 @@
<StartMenuDir>MSYS2</StartMenuDir>
<RunProgram>@TargetDir@/ucrt64.exe</RunProgram>
<RunProgramArguments></RunProgramArguments>
<InstallerApplicationIcon>../../msys2</InstallerApplicationIcon>
<InstallerWindowIcon>../../msys2</InstallerWindowIcon>
<InstallerApplicationIcon>msys2</InstallerApplicationIcon>
<InstallerWindowIcon>msys2.ico</InstallerWindowIcon>
<InstallActionColumnVisible>false</InstallActionColumnVisible>
<MaintenanceToolName>uninstall</MaintenanceToolName>
<SupportsModify>false</SupportsModify>

View File

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB