geany / geany-osx

Things needed to bundle Geany for OSX
Other
24 stars 14 forks source link

Geany for macOS

Geany for macOS is a project that contains all the necessary configuration files, themes, scripts and instructions to create the Geany app bundle and a dmg installer image for macOS.

Binaries

The macOS binaries can be downloaded from the Geany Releases page:

https://www.geany.org/Download/Releases

Configuration

In addition to standard Geany configuration, the macOS bundle creates its own configuration file under ~/.config/geany/geany_mac.conf upon first start. In this configuration file it is for instance possible to override the used theme (light/dark) when autodetection based on system macOS theme is not desired.

Files and Directories

A brief description of the contents of the project directory:

Directories

Configuration files

Scripts

General Instructions

For more general instructions about building and bundling macOS applications please visit

The HOWTO below contains just the portions necessary/relevant for building and bundling Geany.

Prerequisities

Building

To create the bundle, you need to first install JHBuild and GTK as described below.

  1. Create a new account for jhbuild (not necessary but this makes sure jhbuild does not interfere with some other command-line tools installed on your system).

  2. Optionally, when cross-compiling x86_64 binaries on a new ARM-based Apple computer, run

    env /usr/bin/arch -x86_64 /bin/zsh --login

    to create a x86_64 shell. All the compilation steps below have to be executed in this shell.

  3. Depending on the used shell, add the following lines

    export PATH=$PATH:"$HOME/.new_local/bin"
    export LC_ALL=en_US.UTF-8
    export LANG=en_US.UTF-8

    either to your .zprofile or .bash_profile to make sure these variables are defined and restart your shell.

  4. Get gtk-osx-setup.sh by

    curl -L -o gtk-osx-setup.sh https://gitlab.gnome.org/GNOME/gtk-osx/raw/master/gtk-osx-setup.sh

    and run it:

    bash gtk-osx-setup.sh
  5. Add the following lines to ~/.config/jhbuildrc-custom:

    setup_sdk(target="10.13", architectures=["x86_64"])
    #setup_sdk(target="11", architectures=["arm64"])
    setup_release()  # enables optimizations

    With this settings, the build creates a 64-bit Intel binary that works on macOS 10.13 and later. Instead of x86_64 you can also specify arm64 to produce binaries for Apple ARM processors. This only works when building on ARM processors - it isn't possible to compile ARM binaries on Intel processors.

  6. Install GTK and all of its dependencies by running the following command inside the geany-osx directory:

    jhbuild bootstrap-gtk-osx && jhbuild build meta-gtk-osx-bootstrap meta-gtk-osx-gtk3

    The upstream project is sometimes in an unstable state and fails to build; if this happens, you can use our snapshot of modulesets which was used to build the last release of Geany:

    jhbuild bootstrap-gtk-osx && jhbuild -m "https://raw.githubusercontent.com/geany/geany-osx/master/modulesets-stable/gtk-osx.modules" build meta-gtk-osx-bootstrap meta-gtk-osx-gtk3
  7. To build Geany, plugins and all of their dependencies, run one of the following commands inside the geany-osx directory depending on whether to use Geany sources from the latest release tarball or current git master:

    • tarball
      jhbuild -m `pwd`/geany.modules build geany-bundle-release
    • git master
      jhbuild -m `pwd`/geany.modules build geany-bundle-git

Bundling

  1. To build the launcher binary, run

    xcodebuild ARCHS=`uname -m` -project Launcher/geany/geany.xcodeproj clean build

    inside the geany-osx directory.

  2. Run

    jhbuild shell

    to start jhbuild shell.

    Steps 3 and 4 of this section assume you are running from within the jhbuild shell.

  3. To bundle all available Geany themes, get them from

    https://github.com/geany/geany-themes

    and copy the colorschemes directory under $PREFIX/share/geany.

  4. Inside the geany-osx directory run the following command to create the app bundle:

    ./bundle.sh
  5. Leave jhbuild shell if it was entered in step 2 by typing exit.

  6. Optionally, if you have a development account at Apple and want to sign the resulting bundle, get the list of signing identities by

    security find-identity -p codesigning

    and use the whole string within apostrophes which contains "Developer ID Application: ..." in the following command:

    export SIGN_CERTIFICATE="Developer ID Application: ..."

    Then, run

    ./sign.sh

Distribution

  1. Get the create-dmg script from

    https://github.com/andreyvit/create-dmg.git

    and put it to your $PATH.

  2. Create the dmg installation image by calling

    ./create_dmg.sh

    from within the geany-osx directory. If the SIGN_CERTIFICATE variable is defined (see above), the image gets signed by the specified certificate.

  3. Optionally, to get the image notarized by Apple notary service, run

    ./notarize.sh <dmg_file> <apple_id>

    where <dmg_file> is the dmg file generated above and <apple_id> is the Apple ID used for your developer account. The script then prompts for an app-specific password generated for your Apple ID.

Maintenance

This section describes some maintenance-related activities which do not have to be performed during normal bundle/installer creation:


Jiri Techet, 2023