For discussion of Alpine Linux development and developer support

[alpine-devel] Adélie on Alpine, a retrospective (so far)

A. Wilcox
Message ID
Sender timestamp
DKIM signature
Download raw message
Hash: SHA256

Hi there Alpinists,

We've just released our first alpha build of Adélie Linux built atop
Alpine Linux, and I thought I would share a retrospective of the
things we learned and how we want to continue contributing and
improving Alpine as we move forward in our release cycle.

Alpine is surprisingly portable

We were thrilled to find how easy it is to port Alpine to new CPU
architectures.  We have successfully built a repo for 32-bit
big-endian PowerPC that allows desktop and server usage with very
minimal effort.  This was actually easier to do than on Gentoo,
despite Gentoo's massive amount of tooling for porting to other
platforms.  We also have had some limited success at porting to 64-bit
big-endian PowerPC; however, we have run in to ABI issues with libffi
that we are working on with upstream.  We have also built an
almost-complete toolchain for MIPS, though we are having issues
building a final GCC (and have discussed this previously in another

Package updates and testing

We are very happy to have such a warm and welcoming community in
Alpine that is willing to work with us on improving packages.  I would
like to personally thank everyone involved with reviewing and merging
our many pull requests to add check support and tweak / modernise the
package recipe files.

Moving forward, we have internally discussed moving to a 1:1 mapping
between pull requests and packages, so that the large PRs (such as the
X11 libraries one, a full 36 commits) do not happen again.  This may
cause a bit more noise on the Alpine side but we hope that it will
allow our changes to be more easily reviewed and merged, and take less
time than it would to review a large monolithic PR.  Please do let us
know if this would be okay.


We have a few people on our IRC channel that would like to start
contributing packages to Adélie (and very hopefully to Alpine, too)
but they are confused on how to write an APKBUILD properly.  The wiki
is a bit mangled due to its age and how many different people have
edited it.  I have written documentation for many different types of
packages (in fact, that was my day job many years ago), and I would
like to try and write a developer's guide for Adélie.  If there is
interest, I would be very happy to make it a developer's guide for
Alpine as well.

I feel most comfortable with DocBook.  This is a rough outline of the
layout I would like to write for this guide:

1. Preparing your system
 \- Running abuild-keygen
 |- Write abuild.conf
 |- Setting up the directory trees (/var/cache/distfiles, /srv/packages)
2. Git basics
 \- Link to Git official docs
 |- Describe Adélie specific things
 |\ - commit msg formatting (repo/pkg: brief desc of change)
 || - commit signing
 || - multiple remotes
3. Writing your first package
 \- Use something like GNU Hello
 |- Using newapkbuild
 |- Call out vars that all packages have (pkgrel, makedepends, others)
 |- License field
 |- Test suites (and options="!check" if package has no test suite)
4. Deep dive into APKBUILD
 \- Advanced vars like options, checkdepends, _host/_build
 |- Subpackages
 |\ - Optional modules (py-$foo, $foo-guile, and such)
 || - Debug, development, documentation, and language packages
 || - Service packages (-openrc, -s6)
 |- Patching (change 'hello world' to 'hello galaxy' or such?)
 |- More things I find in abuild's source code that I don't know about
 |- Manual installation (when `make install` doesn't exist)
5. Ensuring security
 \- How package signing works
 |- APK key management
 |- Maybe mention stuff about PaX
6. Odds and ends
 \- Options to APK to help you debug packages
7. If you need help
 \- Other sources of documentation
 |- IRC, ML, Twitter, Mastodon
A. APKBUILD reference
 \- Describe each variable
B. abuild reference
 \- abuild man page basically
C. newapkbuild reference
 \- newapkbuild man page basically

Best to you and yours,
- --arw

- -- 
A. Wilcox (awilfox)
Project Lead, Adélie Linux
Version: GnuPG v2