.. _development_alpine:

================================================================================
Alpine
================================================================================

This page is intended to provide information about Alpine that may be useful
for PDAL developers, especially when it comes to adding new PDAL dependencies.

Packages
--------------------------------------------------------------------------------

When adding a dependency to PDAL, you will need to update our Travis
configuration for continuous integration and testing, and Dockerfiles for
automated builds. Begin by checking for your package in
https://pkgs.alpinelinux.org/packages. Packages containing binaries can
typically be found by searching for the library/package name alone. Development
files are typically grouped in a separate subpackage with ``-dev`` appended to
the package name. Libraries are sometimes grouped in yet another subpackage
with ``-libs`` appended. It may take a little inspection of the package
contents to determine exactly what you are getting with a particular package.

If a package does not yet exist, you'll need to consult
https://wiki.alpinelinux.org/wiki/Creating_an_Alpine_package or phone a friend.
Alpine developers can frequently be found on the IRC channel #alpine-devel.

Travis
--------------------------------------------------------------------------------

We currently run our Travis CI builds by first pulling ``alpine:3.6`` and then
running a script within the Alpine container. Any new dependencies that are
required for PDAL to be built and tested will need to be added to
https://github.com/PDAL/PDAL/blob/master/scripts/ci/script.sh.

Docker
--------------------------------------------------------------------------------

Our Docker automated builds are built from the Dockerfiles located in
https://github.com/PDAL/PDAL/tree/master/scripts/docker. There are folders for
each supported release as well as master, and there are variants for Alpine and
Ubuntu based images. In the Alpine Dockerfiles, any development dependencies
should be added in the ``apk add`` step that uses the ``--virtual`` switch, as
these will be deleted after compilation. Any runtime dependencies should be
added to the regular ``apk add`` step.
