PKGURL vs. PKGSRVR discussion for kayak-kernel.

about an hour ago by danmcd
Page History
  1. Build Instructions 
  2. How-to 
  3. How to roll your own software 
  4. Package Notes 
  5. git 
  6. kayak 
  7. illumos 
  8. Creating Installation Media 
  9. Keeping Up With The Flow 

Build Instructions #

See also the illumos developer's guide if you are interested in contributing to illumos. OmniOS is a near-optimal platform for developing against illumos-gate or our own downstream illumos-omnios.

Starting with r151016 or later, building illumos is much easier. Visit the Building illumos page for details.

How-to #

# git clone


# git clone

To build a single package, including illumos as well as the third-party packages:

# cd omnios-build/build
# ./buildctl list
# ./buildctl build <pkgname>

To a first approximation, the buildctl script goes into one of the build/* directories and run ./ Every package is generated by a "simple" bash script of the same name. The job of these build scripts is to download, compile, mock-install, assemble packages and finally publish packages into the repo specified in lib/

If you're only interested in re-rolling the illumos packages:

# cd illumos/
# ./

Note that the illumos build script uses a different TMPDIR than most of the other build scripts, and by default it is not under /tmp. It defaults to "/code" which is typically on its own ZFS dataset, possibly with child datasets for different workspaces. If you build illumos separately, the illumos will honor the PREBUILT_ILLUMOS variable, and wait for that nightly to finish before merging the debug and non-debug packages.

Because of the annoyance with a hardwired ZFS dataset, as well as being more friendly to illumos developers who often build illumos-omnios before building the rest of the system, buildctl has been enhanced. See the dedicated buildctl page for more.

How to roll your own software #

One of the advantages of IPS is that it is build system agnostic. However you wish to build your software, you can get it packaged into IPS.

The OmniOS build scripts are on Github. If you clone the "template" branch, you will have a good starting point for rolling your own software distributions. You simply need to setup a repo and alter the lib/ file in order to specify your publisher name and repository location.

A working example of this is how OmniTI's managed services group rolls its packages, which is found in the omniti-ms branch.

Package Notes #

Certain packages have idiosyncrasies that are documented below.

git #

Git documentation is written in AsciiDoc, which requires an enormous number of dependencies, adding support overhead and bloat for little benefit. We instead get the manpage tarball that is distributed along with the source tarball from and add them to the pkg proto area before packaging.

The build script takes care of extracting them, but it means that both the main source and the manpages archives should be fetched to (or your own mirror) before building.

kayak #

Kayak builds have two components: kayak, and kayak-kernel. kayak-kernel requires privilege (either run as root, with sudo(1), or with appropriate finer-grained privileges). To this end, the buildctl script has certain variables that can help assist with worry-free Kayak builds. Otherwise, chdir()-ing directly into the kayak-kernel/ directory and uttering "sudo ./" may work as well.

Also mentioned on the buildctl page: kayak-kernel pulls its bits from PKGURL if specified, or PKGSRVR if PKGURL is not specified.

illumos #

Already mentioned above is the TMPDIR change vs. every other package. Because illumos-omnios is the largest set of source, and because many OmniOS builders make changes to illumos-omnios, the PREBUILT_ILLUMOS variable can be exploited to install an already-built-and-packaged illumos-omnios. See the buildctl page for more details.

Creating Installation Media #

See ReleaseMedia

Keeping Up With The Flow #

See the Maintainers page for how we stay in sync with illumos-gate.

See the OmniOS-on-demand page for how the bloody repo is built every time illumos-omnios or omnios-build changes.