PrawnOS-nonfree/packages/packaging-readme.md
2020-05-26 20:59:45 -05:00

2.3 KiB

PrawnOS Packaging

All programs, themes, etc that are not part of upstream debian are built as packages this allows PrawnOS the following benefits:

  • the PrawnOS apt repo is not a build dependency
  • test builds don't require any special steps-- just make the change locally and rebuild the filesystem
  • a user doesn't have to trust the PrawnOS apt repo to build their own image
  • the PrawnOS apt repo requires less bandwidth, as only package updates will be gotten from it

Note that some packages that are available upstream, but only in unstable or testing repos or have fixes only in the unstable or testing repos are packaged as part of PrawnOS

Updating Packages

By using packages for all parts of PrawnOS, updates are more straightforward. When an existing PrawnOS install has out of date packages, the user can then either build the new version themselves or get the update from the repo using the standard "apt upgrade"

Package folder structure

Packages are stored under component of the final PrawnOS image they belong to, and then for filesystem packages, the component of the filesystem they belong to. Inside the package folder there are the following items:

  • makefile
  • source folder called src
  • a .orig.tar.gz* containing the package source.
  • a .gitignore to avoid commiting build artifacts, or unnecessary source files

The contents of the src are the following:

  • a debian folder
  • the source files if the package is not packages upstream (by debian)
  • the patched source files if there are any PrawnOS specific patches. This is to keep the changes tracked by git.

If the source is from an upstream package, and no PrawnOS specific patches are carried then only the debian folder is in the src folder

Building packages

Most packages are built in a host architecture agnostic fashion using pbuilder. The only notable exceptions to this are font packages, which are not architecture dependent and the kernel package, which handles cross compilation manually without a chroot.

To build any package, navigate to that packages folder and run

make clean
make

the resulting .deb will be in that same folder when the build is complete

Uploading packages

New packages, and package updates can upload to deb.prawnos.com by first building and then running

make upload