Integration of 3rd-party software

Downloaded 3rd-party source code resides outside of the actual repository at the central <genode-dir>/contrib/ directory. This structure has the following benefits over hosting 3rd-party source code along with Genode's genuine source code:

The contrib/ directory is managed using the tools at <genode-dir>/tool/ports/.

Obtain a list of available ports
Download and install a port
 tool/ports/prepare_port <port-name>

The prepare_port tool scans all repositories under repos/ for the specified port and installs the port into contrib/. Each version of an installed port resides in a dedicated subdirectory within the contrib/ directory. The port-specific directory is called port directory. It is named <port-name>-<fingerprint>. The <fingerprint> uniquely identifies the version of the port (it is a SHA256 hash of the ingredients of the port). If two versions of the same port are installed, each of them will have a different fingerprint. So they end up in different directories.

Within a source-code repository, a port is represented by two files, a <port-name>.port and a <port-name>.hash file. Both files reside at the ports/ subdirectory of the corresponding repository. The <port-name>.port file is the port description, which declares the ingredients of the port, e.g., the archives to download and the patches to apply. The <port-name>.hash file contains the fingerprint of the corresponding port description, thereby uniquely identifying a version of the port as expected by the checked-out Genode version.

For step-by-step instructions on how to add a port using the mechanism, please refer to the porting guide:

Genode Porting Guide