gpodder/tools/mac-osx/release_on_mac.sh

116 lines
3.3 KiB
Bash
Raw Normal View History

#!/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
2023-08-08 04:05:29 +02:00
$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
2022-08-29 11:26:18 +02:00
$run_pip install -v brotli || exit 1
$run_pip install -v pycryptodomex || exit 1
# install extension dependencies; no explicit version for yt-dlp
2023-02-18 03:01:45 +01:00
$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
2022-03-07 21:45:57 +01:00
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"