Skip to content

Package Management Policy

Package management is dependent on limited web servers, making parallelization harder. glaucus uses the filesystem tree as its database to store package metadata and recipes.

Cerata

  • Avoid versions in nom
  • Patches are typically applied in prepare
  • Patches should use -p0
  • Packages that use autoreconf, need runstatedir (copied from the system)
  • Group commands that deal with multiple arguments into one (if that applies, e.g. cp, rm, mkdir (if same permissions)…)
  • Group commands that are repeated 3 or more times into for loops
  • Packages should not install to the following directories: /boot, /dev, /mnt, /run, /sys, /tmp
  • Do not store commands inside variables: https://www.unix.com/unix-for-dummies-questions-and-answers/247059-run-command-stored-variable.html

Repository Layout

  • /var/cache/rad/pkg (binary packages, contains sac (DESTDIR) + tarball + sum)
  • /var/cache/rad/src (source tarballs, read-only, equals SRCD)
  • /var/lib/rad/clusters/cerata (official cluster, equals CERD)
  • /var/lib/rad/clusters/custom (custom cluster)
  • /var/lib/rad/pkg (track installed packages using another form of metadata, with checksums and files)
  • /var/log/rad (log files, equals LOGD)
  • /var/tmp/rad (temporary build files)

Local

Remove additional files:

  • .a (static libraries)
  • .alias
  • .bs (perl files)
  • .dbg
  • .la (libtool archives)
  • .packlist (perl files) (alpine removes them)
  • .pod (perl files) (void removes them)
  • .py (python files)
  • .pyc (python files) (ewe removes them)
  • .pyo (python files) (ewe removes them)
  • alias
  • charset
  • completions
  • extralibs.ld (perl files)
  • locale
  • systemd
  • test (ewe removes them)

Out of Tree Builds

Toolchain:

  • binutils
  • gcc

Cross:

  • binutils
  • dash (no patches applied so no need to copy src)
  • e2fsprogs
  • gcc
  • iputils
  • less
  • lksh
  • mksh
  • musl-utils (has no package source though, as its files are in CERD)
  • which

Resources