1
0
mirror of https://github.com/nmap/nmap.git synced 2025-12-09 06:01:28 +00:00
Files
nmap/macosx/BUNDLING.md
2020-10-05 23:00:30 +00:00

4.3 KiB

Table of Contents


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:

  1. 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_TARGET exists and is set to the lowest supported version of OS X, e.g. "10.11". Then run it:

    $ sh gtk-osx-build-setup.sh
    

    And add it to your $PATH, so you can run jhbuild without the absolute path:

    $ export PATH=$HOME/.local/bin:$PATH
    
  2. In ~/.jhbuildrc-custom, make sure that this line is setup properly and matches MACOSX_DEPLOYMENT_TARGET from step 1:

    setup_sdk(target="10.11")
    
  3. Now do,

    $ jhbuild bootstrap-gtk-osx
    

    To install missing dependencies (with --force option to force rebuilding).

  4. And,

    $ jhbuild build meta-gtk-osx-bootstrap
    $ jhbuild build meta-gtk-osx-core
    
    
  5. 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