HaikuPorter is a command line Python application that, using the information contained in a HaikuPort's BepFile:
- fetches the original source code archive
- extracts this archive
- patches the sources for compilation on Haiku
- builds the software
- installs the software
- zips up the resulting binary for distribution
Currently HaikuPorter can not automatically resolve any dependencies. The HaikuPorts project's main objective is the porting of software to Haiku, and not to create a package management system as powerful as Gentoo Portage or the FreeBSD ports system. Automatic dependency handling is therefor not high on the to-do list.
HaikuPorter depends on two files:
- /etc/HaikuPorts.conf - contains global HaikuPorts options (this should be moved to B_COMMON_SETTINGS_DIRECTORY)
- a BepFile - contains specific information about a HaikuPort
HaikuPorter is implemented in Python (dev-lang/python) which is included with the Haiku R1/Alpha1 release.
One of the goals of HaikuPorter is to be as simple as possible. This includes minimizing dependence on external programs. Currently HaikuPorter requires the following:
- rm (included with Haiku)
- tar (included with Haiku)
- unzip (included with Haiku)
- patch (included with Haiku)
- any programs used for building and installing HaikuPorts. These should be limited to:
- GNU make (included with Haiku)
- gcc-2.95.3 (included with Haiku)
- XZ-utils (if using the -z option)
Other dependencies should be listed in the port's BepFile.
WARNING - HaikuPorter is currently in development. Be sure to check over the resulting builds for any issues prior to posting them publicly. If you find broken .bep files be sure to post a trac ticket (and attach a fixed .bep if you fix it).
Usage information can be obtained by invoking HaikuPorter with the -h option:
$ haikuporter -h usage: haikuporter [options] portname[-portversion] options: -h, --help show this help message and exit -v, --version show program's version number and exit -a, --about show description of the specified port -b, --nobuild don't build the port, just download, unpack and patch -c, --clean clean the working directory of the specified port -d, --distro make distribution package of the specified port (include download, unpack, patch, build) -f, --force force to perform the steps (unpack, patch, build) -g, --get get ports tree -i, --install also install the port (the default is to only build) -l, --list list available ports -p, --nopatch don't patch the sources, just download and unpack -s, --search search for a port (regex) -t, --tree print out the location of the haikuports source tree -z, --archive create a patched source archive as <package>_haiku.tar.xz --test run tests on resulting binaries --lint scan the ports tree for problems
Note that this information may become obsolete as new versions of HaikuPorter might add or remove command line options.
When passing only a port name to HaikuPorter, it will return the port versions available, if any.
To fetch, patch and build a port, both the port name and the port version need to be specified, separated with a hyphen. By default, HaikuPorter will not install the port. You need to specify the --install (or -i) option for that.