Tough_Crowd/docs/developers/developers-setup.md

3.9 KiB

Developers setup

Requirements

Diffuse depends on these projects:

  • Python 3.8+
  • PyPi
  • Cairo and GObject Introspection development headers
  • Meson
  • Flatpak and Flatpak builder (Linux only)

Install the distribution dependencies

It's a bit difficult to get the command lines for all the distributions and their releases, but it should be enough to find the packages on other distributions.

Debian/Ubuntu
sudo apt install python3-pip libcairo2-dev libgirepository1.0-dev meson flatpak flatpak-builder

Note: Tested on Debian 11 (Buster) and Ubuntu 20.04 (Focal)

Fedora
sudo dnf install python-pip cairo-devel cairo-gobject-devel meson flatpak flatpak-builder

Note: Tested on Fedora 34

Mac OS

On Mac, all deps can be fetched using Homebrew.

brew install meson python3 py3cairo pygobject3 gtk+3 librsvg

Note: Tested on macOS 12.5 (Monterey)

You don't need to use pip because the above brew command installs all dependencies.

Install the project dependencies

To install the requirements just to execute the binary, run:

pip install -r requirements.txt

For developer tools, run this one instead (it includes requirements.txt):

pip install -r requirements.dev.txt

Setup

Setup on Linux using Flatpak

Build, test and install

To build, test and install Diffuse locally:

flatpak install runtime/org.gnome.Sdk/$(uname -p)/42
flatpak-builder --user --install build-flatpak io.github.mightycreak.Diffuse.yml

Run

To run Diffuse through Flatpak:

flatpak run io.github.mightycreak.Diffuse

Uninstall

To uninstall Diffuse:

flatpak remove io.github.mightycreak.Diffuse

Setup on Linux using Meson

Build and test

Diffuse is using Meson as its build system.

To build and test Diffuse:

meson setup build
cd build
meson compile
meson test

Install on system and run

To install Diffuse on your system (e.g. /usr/local/):

meson install # requires admin privileges

To run Diffuse:

diffuse

Install in a custom directory and run

Meson allows to change the default installation directories, see command-line documentation.

To install Diffuse in a custom directory (e.g. ~/bin/diffuse):

meson install --destdir ~/bin/diffuse

To run Diffuse:

export PYTHONPATH=$HOME/bin/diffuse/usr/local/share/diffuse
cd ~/bin/diffuse/usr/local/bin
./diffuse

Uninstall

To uninstall Diffuse afterwards:

sudo ninja uninstall -C build
sudo rm -v /usr/local/share/locale/*/LC_MESSAGES/diffuse.mo

Setup on Mac OS

Build and test

Diffuse is using Meson as its build system.

To build and test Diffuse:

meson setup build
cd build
meson compile
meson test

Install on system and run

To install Diffuse on your system (e.g. /usr/local/):

meson install # requires admin privileges

To run Diffuse:

diffuse

Note: The diffuse command can be used to launch Diffuse as a native Mac app that is installed into /Applications/Diffuse.app.

Setup on Windows (deprecated)

Note: The Windows port is not maintained and would need some love. Contributions are very welcome! 😉

The windows-installer directory contains scripts for building an installable package for Windows that includes all dependencies.

Diffuse can be packaged as a portable application by copying the installation directory to a pen drive and creating a front end that sets the XDG_CONFIG_HOME and XDG_DATA_DIR environment variables prior to launching Diffuse. The XDG_CONFIG_HOME and XDG_DATA_DIR environment variables indicate where Diffuse should store persistent settings (eg. the path to a writable directory on the pen drive).