script: lots of cleanup and simplify
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,3 +1,4 @@
|
||||
_cache
|
||||
*.exe
|
||||
*.xz
|
||||
_build
|
||||
@@ -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
|
||||
@@ -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>
|
||||
|
||||
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
Reference in New Issue
Block a user