Skip to content

gpodder/gpodder-osx-bundle

Repository files navigation

OS X Bundle Build Scripts

Don’t Panic

This is a collection of files required to build pythonbase.app: native dependencies to run gPodder as a native GTK+ Quartz application for Mac OS X 10.9+, with a working python interpreter and pip utility.

The scripts are executed on github.com, with xcode 13.2.1 on macos 11.6.8 (as of 27aug2022).

Note
In case you want just want to run gPodder from source you can ignore all this and use the released bundle as a development environment. Download the official bundle, git clone the gPodder repo and do ./gPodder.app/Contents/MacOS/run-python bin/gpodder.

Uses jhbuild and the stable module set provided by gtk-osx with a gPodder specific module set overlay to build all needed dependencies for gPodder. Everything will be downloaded/installed into this directory and your user directory will not be touched.

Builds upon the great scripts by Christoph Reiter to automate my previously tedious description.

Creating a Bundle

Prerequisites: OS X 12+ and a working Xcode and git.

Verify that Xcode and git is installed and in your $PATH by invoking git --version and gcc --version. The env.sh script resets your $PATH to the default value ({,/usr}/{,s}bin) to make sure non-native programs, installed by other package managers like homebrew or macports, are not used (read more here).

(Tested on macOS 10.15.1)

  1. Edit pins.sh, updating commit hashes.

  2. Call bootstrap.sh to install jhbuild and set up dummy $HOME as base.

  3. Call build.sh to download and build all the dependencies.

  4. Call bundle.sh to create the finished bundles for gPodder in _build.

Development

  • After bootstrap.sh has finished executing source env.sh will put you in the build environment. After that jhbuild can be used directly.

  • fetch_modules.sh downloads the git master of the gtk-osx module set and replaces the modules under "modulesets. Doing so so should ideally be followed by a review of the gPodder module to reduce duplication and a rebuild to verify that everything still works.

Releasing

Releasing on OS X

  1. edit pins.sh, updating commit hashes

  2. run fetch_modules.sh

  3. remove modulesets/*~, modulesets/gtk-osx.modules.orig and _gtk-osx

  4. commit and push changes

  5. wait for github action to build the bundle

  6. test latest pythonbase-xxx.zip on macOS

  7. tags are now the year as 2 digits, month as 1 or 2 digits (no leading 0), day as 1 or 2 digits (no leading 0): git tag -a -m "update deps" YY.MM.DD

  8. git push

  9. wait for github action to build the tagged bundle

  10. remove _build

  11. GITHUB_TOKEN=xxxx python github_release.py --download --github-workflow LATEST_GA_WORKFLOW --previous-tag THE_PREVIOUS_RELEASE_TAG YY.MM.DD where LATEST_GA_WORKFLOW is the number in URL of the latest github action for the tag, not master (eg. 1234567890)

  12. repeat the command without --download to upload to github

  13. edit and publish the release on github

  14. now you can update the tag in .github/workflows/release-from-macos.yml of the gPodder project.

Releasing on macOS by using the working pip:

git clone https://github.com/gpodder/gpodder.git cd gpodder ./tools/mac-osx/release_on_mac.sh ~/Downloads/pythonbase-21.4.27.zips

Using gPodder:

See the official help guide http://gpodder.github.io/docs/

Content Description

  • modulesets contains the gtk-osx stable module set and a gpodder module which adds new packages replaces existing ones.

  • misc: see each file or directory README for a description.