From a377c8dce01633c22c036e8846f8038a2ddd33d1 Mon Sep 17 00:00:00 2001 From: Hal Emmerich Date: Tue, 26 May 2020 20:59:45 -0500 Subject: [PATCH] add readme for packaging layout --- packages/packaging-readme.md | 50 ++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 packages/packaging-readme.md diff --git a/packages/packaging-readme.md b/packages/packaging-readme.md new file mode 100644 index 0000000..1ad8446 --- /dev/null +++ b/packages/packaging-readme.md @@ -0,0 +1,50 @@ +## 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 +```