This is a base image for building packages for Arch Linux.
This docker image builds on top of Arch Linux's base/devel image for the purpose of building arch packages. It provides several key features:
build) for executing the image build. This is important
to ensure that the package can be built correctly without destructively
modifying the system.mksrcinfo and
mkaurball commands. This makes it easy to generate the .SRCINFO
files to upload to AUR for your packages.PKGBUILD's.makepkg --force. This is a common usecase:
needing to build the package for testing./package.This library is useful with simple PKGBUILD's from the command line. For
example, assuming you have a PKGBUILD with no additional dependencies beyond
base-devel in /tmp/my-package:
docker run --interactive --tty --rm --volume /tmp/my-package:/package nubs/arch-build
# Using short-options:
# docker run -i -t --rm -v /tmp/my-package:/package nubs/arch-build
This will make the package placing the results (including the pkg.tar.xz
file for a successful build) in /tmp/my-package.
In order to create the .SRCINFO:
docker run -i -t --rm -v /tmp/my-package:/package nubs/arch-build mksrcinfo
Alternatively, you can create your own Dockerfile that builds on top of this
image. This allows you to modify the environment by installing additional
software needed, altering the commands to run, etc.
A simple one that just installs another package but leaves the rest of the process alone could look like this:
FROM nubs/arch-build
USER root
RUN pacman --sync --noconfirm --noprogressbar --quiet php
USER build
You can then build this docker image and run it against your PKGBUILD volume
like normal (this example assumes the PKGBUILD and Dockerfile are in your
current directory):
docker build --tag my-package .
docker run -i -t --rm -v "$(pwd):/package" my-package
docker run -i -t --rm -v "$(pwd):/package" my-package mksrcinfo
Because the container runs as a non-root user, you may run into permission problems when using volume mounts to your host. The build user used in the container is uid/gid 1000, so you may need to provide write access to that user to any files/directories that need to be written to. For example:
chgrp 1000 .
chmod g+w .
docker-arch-build is licensed under the MIT license. See LICENSE for the full license text.
Content type
Image
Digest
sha256:95271f26b…
Size
257.6 MB
Last updated
about 5 years ago
docker pull nubs/arch-build