Skip to content

Instantly share code, notes, and snippets.

@geigi
Last active September 7, 2020 15:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save geigi/a3b6d661daeb7b181d3bdd3cab517092 to your computer and use it in GitHub Desktop.
Save geigi/a3b6d661daeb7b181d3bdd3cab517092 to your computer and use it in GitHub Desktop.
The journey of building Cozy (GTK+3, python, gstreamer) for macOS using pyinstaller

The journey of building Cozy on macOS

  • Remove hombrew/macports completely or setup a clean macOS VM
  • Get the GTK+ setup shell script to setup the build environment. Everything which is installed from now on will be bundled with the macOS application later on: https://wiki.gnome.org/Projects/GTK+/OSX/Building
./gtk-osx-build-setup.sh
alias jhbuild="PATH=gtk-prefix/bin:$PATH jhbuild"
jhbuild bootstrap
jhbuild build python3

cd gtk/inst/bin
ln -s python3 python
ln -s python3-config python-config

jhbuild shell
cd ~/gtk/inst/lib/python3.6/site-packages/
python easy_install.py six

jhbuild build meta-gtk-osx-bootstrap meta-gtk-osx-gtk3
jhbuild build meta-gtk-osx-python-gtk3
jhbuild build gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-libav gst-plugins-ugly
jhbuild build adwaita-icon-theme hicolor-icon-theme

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
# install all dependencies needed by Cozy
pip install peewee meson
  • Copy libmagic.dylib to gtk folder
  • Install Cozy to ~/gtk/inst/ using meson/ninja
  • For theme support:
jhbuild build gsettings-desktop-schemas
  • Copy share/misc/magic to the gtk folder from other machine (e.g. homebrew installation)
  • Use pyinstaller to build a macOS Application

stack_size error

Drop to shell then:

find . -name "Makefile" -exec sed -i '' 's+-Wl,-stack_size,1000000 ++g' {} \;

libxml2 error

Drop to shell then:

cp ~/gtk/inst/lib/python2.7/sitepackages/* ~/gtk/inst/lib/python3.6/

foreign struct converter error

Add cairo to pyinstaller hidden imports.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment