# 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 ```sh 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 ```sh 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](https://docs.brew.sh/). ```sh brew install meson python3 py3cairo pygobject3 gtk+3 ``` _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: ```sh pip install -r requirements.txt ``` For developer tools, run this one instead (it includes requirements.txt): ```sh pip install -r requirements.dev.txt ``` ## Setup on Linux ### Build, test and install using Flatpak To install Diffuse locally: ```sh flatpak install runtime/org.gnome.Sdk/$(uname -p)/42 flatpak-builder --user --install build-flatpak io.github.mightycreak.Diffuse.yml ``` To run Diffuse through Flatpak: ```sh flatpak run io.github.mightycreak.Diffuse ``` To uninstall Diffuse: ```sh flatpak remove io.github.mightycreak.Diffuse ``` ## Build, test and install using Meson on Linux and Mac OS Diffuse build system is meson. To compile and test Diffuse: ```sh meson setup build cd build meson compile meson test ``` To install Diffuse on your system (e.g. `/usr/local/`): ```sh meson install # requires admin privileges # Run Diffuse diffuse ``` To install Diffuse on a custom directory (e.g. `~/bin/diffuse`): ```sh meson install --destdir ~/bin/diffuse # Run Diffuse cd ~/bin/diffuse/usr/local/bin PYTHONPATH=$HOME/bin/diffuse/usr/local/share/diffuse ./diffuse ``` To uninstall diffuse afterwards: ```sh sudo ninja uninstall -C build sudo rm -v /usr/local/share/locale/*/LC_MESSAGES/diffuse.mo ``` Meson allows to change the default installation directories, see [command-line documentation](https://mesonbuild.com/Commands.html#configure). ## Setup on Mac OS Building on Mac OS is similar to building on Linux. To recap, these are the steps needed to build and install Diffuse manually: ```brew install meson python3 py3cairo pygobject3 gtk+3 meson setup build cd build meson compile meson test meson install ``` After `meson install`, the `diffuse` command can be used to launch Diffuse as a native Mac app that is installed into `/Applications/Diffuse.app`. The `diffuse` command is compatible with git. To use Diffuse as git's `git difftool` run `git config --global diff.tool diffuse` ## Setup on Windows _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).