> Managing overlays

There are some assumptions in the build process based on my personal environment, namely that lots of stuff is present under the directory /packages/localsrc/Tribblix which I have as an environment variable THOME. You'll need THOME set for much of the following to work.

Initial setup

You'll need to check out one or more of the 3 overlay sources.

cd $THOME
git clone https://github.com/tribblix/overlays
git clone https://github.com/tribblix/overlays.lx
git clone https://github.com/tribblix/overlays.sparc

You'll also need the build repo, because some of the shared scripts are supplied there (rather than each set of overlays having a duplicate copy).

cd $THOME
git clone https://github.com/tribblix/build

Differences between the repos

In general, the intention is that the overlays available for the different variants should be as similar as possible.

lx vs vanilla

The lx version is slightly different, only because OmniTribblix has a couple of extra features. The only differences should be:

In general, though, the application overlays for lx should be identical to the vanilla version. The actual packages are shared between the variants, so there's no reason for any differences.

x86 vs sparc

The sparc version can be quite different. There are significant differences in the packages that come from illumos - the packages are named differently in some cases, and there's a different set of drivers. And in terms of applications, software availability on sparc is quite a bit worse (there's no go or rust, for example, so anything requiring those won't exist on sparc at all).

Some of the overlays make no sense at all on sparc (for example, anything related to cloud).

Related to software availability, some packages for sparc are downrev compared to x86. (In many cases a later version has been rewritten in rust, for example, which means we can't update.) That also means that the list of dependencies can be quite different.

How the overlays work

There are 2 files for each overlay. The ovl file is metadata, and the pkgs file is simply the list of constituent packages.

Generally, I try to normalise the overlays a bit. In other words, overlays are layered, so you don't have to duplicate packages between overlays too much. That's more of an aspiration than a hard rule. Dependencies between overlays are expressed as a REQUIRES entry in the ovl file.

Adding a new overlay requires creating both files.

Adding new software is simple a case of adding the package to the pkgs file and bumpoing the version in the ovl file.

The overlays should be consistent (see the next section for checks), although there are missing dependencies in some of the core packages. This is deliberate (for example, perl is missing from the live image which makes it slightly wrong, but that's a known case and handled correctly).

Validation

The validation scripts are shared and come from the build repo.

To check the dependencies are consistent:

cd ${THOME}/overlays
../build/overlay-depends -a

If there's something missing you can see why for a given overlay:

cd ${THOME}/overlays
../build/overlay-depends -v develop-extras

You can also check that all the packages actually exist:

cd ${THOME}/overlays
../build/check-overlay-pkgs -a

Note that a lot of this assumes that you have a copy of the illumos packages as built earlier to check against.


Index | Previous Section


tribblix@gmail.com :: GitHub :: Privacy