gpodder/tools/mac-osx/release_on_mac.sh

116 lines
3.3 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
usage="Usage: $0 /path/to/pythonbase-x.y.z_w.zip"
if [ -z "$1" ] ; then
echo "$usage"
exit -1
elif [ ! -f "$1" ] ; then
echo "$usage"
echo
echo "E: deps not found: $1 doesn't exist"
echo " get them from https://github.com/gpodder/gpodder-osx-bundle/releases"
exit -1
else
deps="$1"
shift
fi
set -e
set -x
me=$(readlink "$0" || echo $0)
mydir=$(cd $(dirname "$me"); pwd -P)
checkout=$(dirname $(dirname "$mydir"))
# directory where the generated app and zip will end in
workspace="$mydir/_build"
app="$workspace"/gPodder.app
oldapp="$workspace/pythonbase.app"
contents="$app"/Contents
resources="$contents"/Resources
macos="$app"/Contents/MacOS
run_python="$macos"/run-python
run_pip="$macos"/run-pip
mkdir -p "$workspace"
rm -rf "$oldapp" "$app" "$workspace/gPodder.contents" "$workspace/pythonbase.contents"
cd "$workspace"
unzip "$deps"
if [ ! -e "$oldapp/" ]; then
echo "E: unzipping deps didn't generate $oldapp"
exit -1
fi
mv "$oldapp" "$app"
mv "$workspace/pythonbase.contents" "$workspace/gPodder.contents"
# launcher scripts
mv "$macos"/{pythonbase,gpodder}
CMDS="gpo gpodder-migrate2tres run-python run-pip"
for cmd in ${CMDS}; do
if [ -e "$macos"/$cmd ]; then
unlink "$macos"/$cmd
fi
cp -a "$macos"/{gpodder,$cmd}
rm -f "$workspace/$cmd"
ln -s $(basename $app)/Contents/MacOS/$cmd "$workspace/"
done
cp -a "$checkout"/tools/mac-osx/launcher.py "$resources"/
cp -a "$checkout"/tools/mac-osx/make_cert_pem.py "$resources"/bin
# install gPodder hard dependencies
$run_pip install setuptools==64.0.3 wheel || exit 1
$run_pip install mygpoclient==1.9 podcastparser==0.6.10 requests[socks]==2.31.0 || exit 1
# install brotli and pycryptodomex (build from source)
$run_pip debug -v
$run_pip install -v brotli || exit 1
$run_pip install -v pycryptodomex || exit 1
# install extension dependencies; no explicit version for yt-dlp
$run_pip install html5lib==1.1 mutagen==1.46.0 yt-dlp || exit 1
cd "$checkout"
touch share/applications/gpodder{,-url-handler}.desktop
cp share/dbus-1/services/org.gpodder.service{.in,}
export GPODDER_INSTALL_UIS="cli gtk"
# compile translations
for po in po/*; do
lang=$(basename ${po%.po})
msgdir=$resources/share/locale/$lang/LC_MESSAGES
mkdir -p "$msgdir"
$macos/msgfmt $po -o $msgdir/gpodder.mo
done
# copy fake dbus
cp -r tools/fake-dbus-module/dbus $resources/lib/python3.9/site-packages/dbus
# install
"$run_python" setup.py install --root="$resources/" --prefix=. --optimize=0
find "$app" -name '*.pyc' -delete
find "$app" -name '*.pyo' -delete
rm -Rf "$resources"/share/applications
rm -Rf "$resources"/share/dbus-1
# Command-XX shortcuts in gPodder menus
/usr/bin/xsltproc -o menus.ui.tmp "$checkout"/tools/mac-osx/adjust-modifiers.xsl "$resources"/share/gpodder/ui/gtk/menus.ui
mv menus.ui.tmp "$resources"/share/gpodder/ui/gtk/menus.ui
# Set the version and copyright automatically
version=$(perl -ne "/__version__\\s*=\\s*'(.+)'/ && print \$1" "$checkout"/src/gpodder/__init__.py)
copyright=$(perl -ne "/__copyright__\\s*=\\s*'(.+)'/ && print \$1" "$checkout"/src/gpodder/__init__.py)
sed "s/__VERSION__/$version/g" "$checkout/tools/mac-osx/Info.plist" | sed "s/__COPYRIGHT__/$copyright/g" > "$contents"/Info.plist
# Copy the latest icons
cp "$checkout"/tools/mac-osx/icon.icns "$resources"/gPodder.icns
# release the thing
"$mydir"/release.sh "$app" "$version"