NameDateSize

..17-May-201940

.gitattributesH A D20-Dec-201633

.gitignoreH A D20-Dec-201625

AUTHORS.txtH A D23-Jun-2015190

buildmaster/H30-Aug-20187

doc/H20-Dec-20167

generic/H20-Dec-20166

HaikuPorter/H29-Apr-201927

haikuporterH A D24-Dec-2016799

haikuports-sample.confH A D30-Aug-20182.1 KiB

README.mdH A D01-Aug-20173.2 KiB

setup.pyH A D23-Jun-2015625

tools/H18-Jul-20183

README.md

1# Haikuporter
2
3The HaikuPorter tool is provided to ease the fetching, patching and building of source code. It can be compared to a slim version of [Gentoo Portage](https://www.gentoo.org/main/en/about.xml). Each port contains the [Haiku](http://haiku-os.org) specific patches to the original source code. It fetches the original source code, applies the Haiku-specific patches, builds the software, and packages it.
4
5Detailed information available on the [wiki](https://github.com/haikuports/haikuports/wiki/).
6
7# Quick start
8
9## Single Machine (Haiku)
10
11A single machine installation is for building individual packages.
12
13### Installation (Haiku)
14
15HaikuPorts installation can be done via the following command sequence:
16 - `git clone https://github.com/haikuports/haikuporter.git`
17 - `git clone https://github.com/haikuports/haikuports.git --depth=10`
18 - `cd haikuporter`
19 - `cp haikuports-sample.conf /boot/home/config/settings/haikuports.conf # Copy the config file`
20 - `lpe ~/config/settings/haikuports.conf # and edit it`
21
22### Build port
23 - `./haikuporter mesa -j4`
24
25### Build port and all outdated dependency ports
26 - `./haikuporter mesa --all-dependencies -j4`
27
28## Multi-node cluster (Linux + Haiku)
29
30A multi-node cluster is for mass building large numbers of packages.
31
32### Running buildmaster in a container with docker
33
34 - docker pull haikuporter/buildmaster
35 - mkdir ~/buildmaster.x86
36 - docker run -v ~/buildmaster.x86:/data -it -e ARCH=x86 haikuporter/buildmaster
37 - Provision builders
38   - createbuilder -n test01 -H 127.0.0.1
39   - copy generated public key to builder
40   - builderctl health
41 - exit
42 - Copy the packages from a nightly to ports/packages on the buildmaster
43 - docker run -v ~/buildmaster.x86:/data -it -e ARCH=x86 haikuporter/buildmaster
44 - buildmaster everything
45
46buildmaster.x86 will persist between build runs. Feel free to exit, update, or
47erase the container without losing your work.
48
49### Manually Deploy buildmaster (Linux)
50
51 - Install requirements
52   - `pip install paramiko` or `dnf install python-paramiko`
53   - buildtools dependencies: autoconf, flex, bison, texinfo, zlib-devel
54   - Haiku host tools dependencies: libstdc++-static, libcurl-devel
55 - Bootstrap the buildmaster instance
56   - `git clone https://github.com/haikuports/haikuporter.git`
57   - `./haikuporter/buildmaster/bin/bootstrap_buildmaster.sh ...`
58 - Configure your builders within instance ports tree with createbuilder
59   - `cd buildmaster_<arch>/haikuports`
60   - example: `../haikuporter/buildmaster/bin/createbuilder -n mybuilder01 -H 127.0.0.1`
61 - Validate and provision your builders
62   - `../haikuporter/buildmaster/bin/builderctl health`
63   - `../haikuporter/buildmaster/bin/builderctl provision`
64 - `../haikuporter/buildmaster/bin/buildmaster everything`
65
66### Deploy buildslave (Haiku)
67
68 - Checkout Haikuporter and Haikuports, matching the paths specified in createbuilder on buildmaster side
69 - Add the public key from the buildmaster to authorized\_keys
70 - useradd sshd ; ssh-keygen -A
71 - Enable PermitRootLogin in /system/settings/ssh/sshd\_config and make sure the path to the sftp server is correct
72 - install xz\_utils\_x86, lzip\_x86 (required for extracting packages), patch, dos2unix (required for PATCH() function in some packages)
73