|
@@ -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
|
|
|
+```
|