104 lines
3.0 KiB
Bash
Executable File
104 lines
3.0 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
github_ref="$1"
|
|
|
|
case "$MSYSTEM" in
|
|
MINGW64) os=win64; suf=$os-portable; exe=.exe;;
|
|
MINGW32) os=win32; suf=$os-portable; exe=.exe;;
|
|
*) os=linux64; suf=$os-static; exe='';;
|
|
esac
|
|
|
|
./dvdisaster$exe --version
|
|
|
|
if ./dvdisaster$exe --version | grep -q NOGUI; then
|
|
GUI=0
|
|
suffix=$suf-cli-only
|
|
else
|
|
GUI=1
|
|
suffix=$suf
|
|
fi
|
|
|
|
archive=dvdisaster-$(echo "$github_ref" | grep -Eo '[^/]+$')-$suffix.zip
|
|
[ -n "$GITHUB_OUTPUT" ] && echo "archive=$archive" >> "$GITHUB_OUTPUT"
|
|
echo "!> Appimage is <$archive>"
|
|
|
|
echo "!> Copying locales"
|
|
mkdir -p dist/locale
|
|
cp -va locale/*/ dist/locale/
|
|
|
|
# WINDOWS 32/64
|
|
if [ "$os" != "linux64" ]; then
|
|
lookup_dependencies="dvdisaster"
|
|
if [ "$GUI" = 1 ]; then
|
|
echo "!> Copying glib2 schemas..."
|
|
mkdir -p dist/share/glib-2.0
|
|
cp -va "$MINGW_PREFIX/share/glib-2.0/schemas" dist/share/glib-2.0/
|
|
echo "!> Copying default icons..."
|
|
mkdir -p dist/share/
|
|
cp -va "$MINGW_PREFIX/share/icons" dist/share/
|
|
loaders_cache="$(find "$MINGW_PREFIX/lib/gdk-pixbuf-2.0/" -name loaders.cache | head -n1)"
|
|
pixbuf_dir="$(dirname "$loaders_cache")"
|
|
echo "!> Absolute pixbuf directory is $pixbuf_dir"
|
|
pixbuf_dir_relative=$(echo "$pixbuf_dir" | sed -re "s=$MINGW_PREFIX/==")
|
|
echo "!> Relative pixbuf directory is $pixbuf_dir_relative"
|
|
mkdir -p "dist/$pixbuf_dir_relative/loaders"
|
|
cp -va "$loaders_cache" "dist/$pixbuf_dir_relative/"
|
|
lookup_dependencies="$lookup_dependencies $(\ls -1 "$pixbuf_dir"/loaders/*.dll)"
|
|
fi
|
|
echo "!> Will look for dependencies of $lookup_dependencies"
|
|
|
|
for binary in $lookup_dependencies
|
|
do
|
|
if [ "$binary" != "dvdisaster" ]; then
|
|
echo "!> Copying pixbuf loader lib $binary to dist/$pixbuf_dir_relative/loaders..."
|
|
cp -va "$binary" "dist/$pixbuf_dir_relative/loaders/"
|
|
fi
|
|
echo "!> Looking for dependencies of $binary..."
|
|
# ntldd -R $binary
|
|
for i in $(ntldd -R "$binary" | awk '/mingw/ {print $3}' | tr \\\\ / | grep -Eo '[^/]+$')
|
|
do
|
|
src="$MINGW_PREFIX/bin/$i"
|
|
echo -n "!>> Inspecting $src... "
|
|
if [ -e "$src" ]; then
|
|
echo "found, copying"
|
|
cp -va "$src" dist/
|
|
else
|
|
echo "not found, skipping"
|
|
fi
|
|
done
|
|
done
|
|
|
|
echo "!> Remove .a files if any"
|
|
find dist -type f -name "*.a" -print -delete
|
|
|
|
echo "!> Copy and rename text files"
|
|
for file in CHANGELOG TODO COPYING CREDITS.* TODO
|
|
do
|
|
cp -va "$file" "dist/$file.txt"
|
|
done
|
|
|
|
echo "!> Copy other files"
|
|
for file in dvdisaster.exe documentation/user-manual/manual.pdf
|
|
do
|
|
cp -va "$file" dist/
|
|
done
|
|
# /WINDOWS
|
|
else
|
|
# Linux
|
|
echo "!> Copying text, man and pdf files"
|
|
cp -va CHANGELOG TODO COPYING CREDITS.* dvdisaster documentation/dvdisaster.*.1 documentation/user-manual/manual.pdf dist/
|
|
fi
|
|
|
|
echo "!> Building pdf from man"
|
|
man -t documentation/dvdisaster.en.1 | ps2pdf - dist/dvdisaster.pdf
|
|
|
|
echo "!> Building dist zip"
|
|
if command -v zip >/dev/null; then
|
|
mv -v dist "${archive/.zip/}"
|
|
zip -9r "$archive" "${archive/.zip/}"
|
|
mv -v "${archive/.zip/}" dist
|
|
fi
|
|
|
|
echo "!> Dist done ($archive)"
|