4.3 KiB
Table of Contents
- Jhbuild
- Possible error
- gtk-mac-bundler
- How to use
- Prerequisite
- Usage
Jhbuild
In order to set up Jhbuild properly before building Nmap suite, follow the tutorial at https://wiki.gnome.org/Projects/GTK%2B/OSX/Building, but keep reading this file if you encounter any error...
If you had any error, just type the following command to delete jhbuild,
$ rm -rf ~/.local ~/.new_local ~/.cache ~/.config ~/Source/jhbuild ~/Source/pyenv ~/Library/Caches/pip* ~/gtk
And we'll start over together:
-
First, simply download the following script in your $HOME directory (https://git.gnome.org/browse/gtk-osx/plain/gtk-osx-build-setup.sh). Edit it to make sure that
MACOSX_DEPLOYMENT_TARGETexists and is set to the lowest supported version of OS X, e.g. "10.11". Then run it:$ sh gtk-osx-build-setup.shAnd add it to your $PATH, so you can run jhbuild without the absolute path:
$ export PATH=$HOME/.local/bin:$PATH -
In
~/.jhbuildrc-custom, make sure that this line is setup properly and matchesMACOSX_DEPLOYMENT_TARGETfrom step 1:setup_sdk(target="10.11") -
Now do,
$ jhbuild bootstrap-gtk-osxTo install missing dependencies (with --force option to force rebuilding).
-
And,
$ jhbuild build meta-gtk-osx-bootstrap $ jhbuild build meta-gtk-osx-core -
Now we need Python2 and the GTK2 bindings for it, but gtk-osx has built Python3, and the bindings will prefer that even though the dev headers aren't present. Specifically, we need pycairo prior to 1.19 (when they dropped Python2 support) and gtk-integration-python. There's got to be a better way, but what I did was first install python2:
$ jhbuild build python
Then install pycairo. This is necessary because if it's missing for Python 2, the other bindings won't build for Python 2 either. Make sure version is less than 1.19 in ~/.cache/jhbuild/gtk-osx-python.modules. This may "succeed" but it will have built the Python3 bindings. Clear out the build tree and make sure the source will prefer python2:
$ jhbuild build pycairo
$ rm -rf ~/.cache/jhbuild/build/pycairo-*
$ sed -i 's/python3/python2/' ~/gtk/source/pycairo-*/meson_options.txt
$ jhbuild build pycairo
Now build the rest of the python bindings. Some of these will fail (and maybe they failed as prereqs for pycairo earlier), so hang on and I'll tell you how to fix those:
$ jhbuild build meta-gtk-osx-python
Ok, when you get a failure, that's your chance to reconfigure with python2. Jhbuild will give you some options; choose "4. start a shell" and then check for the proper configuration command (may be visible in scrollback, otherwise check config.log) and copy it. Clear out the build directory (probably the current directory, ~/.cache/jhbuild/build/package-name-version/*) then from there run the configuration command with PYTHON variable overridden, e.g.:
$ PYTHON=$(which python2) ~/gtk/source/package-name-version/configure --some-options
Now exit that shell and go to the build step. This might mean "ignore error and continue with build" or it might mean "rerun step build" depending on when the error happened.
Possible error
For those of you who have this error while trying to make,
svn: E155021: This client is too old to work with the working copy at...
You need to update SVN.
Go to http://www.wandisco.com/subversion/download#osx and download and install the approriate version for your OS.
Now, add the path for the new SVN version to your $PATH:
$ export PATH=/opt/subversion/bin:$PATH
gtk-mac-bundler
Now that Jhbuild is properly configured, we need to install gtk-mac-bundler in order to render the bundle file:
$ git clone git://git.gnome.org/gtk-mac-bundler
$ cd gtk-mac-bundler
$ make install
How to use
Prerequisite:
—openssl.modules:
This is a jhbuild moduleset that can be used to build/update openssl.
Usage:
Now use it like this:
$ jhbuild -m openssl.modules build nmap-deps