summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--alpine/APKBUILD.in3
-rw-r--r--doc/Makefile.am1
-rw-r--r--doc/developer/Building_FRR_on_Alpine.rst47
-rw-r--r--doc/developer/building.rst1
-rw-r--r--docker/.gitignore2
-rw-r--r--docker/alpine/Dockerfile30
-rwxr-xr-xdocker/alpine/alpine-build.sh11
-rwxr-xr-xdocker/alpine/build.sh21
-rw-r--r--docker/alpine/builder1
9 files changed, 116 insertions, 1 deletions
diff --git a/alpine/APKBUILD.in b/alpine/APKBUILD.in
index 33c2859245..2b211ccafd 100644
--- a/alpine/APKBUILD.in
+++ b/alpine/APKBUILD.in
@@ -18,7 +18,8 @@ makedepends="ncurses-dev net-snmp-dev gawk texinfo perl
libstdc++ libtool libuuid linux-headers lzip lzo m4 make mkinitfs mpc1
mpfr3 mtools musl-dev ncurses-libs ncurses-terminfo ncurses-terminfo-base
patch pax-utils pcre perl pkgconf python2 python2-dev readline
- readline-dev sqlite-libs squashfs-tools sudo tar texinfo xorriso xz-libs"
+ readline-dev sqlite-libs squashfs-tools sudo tar texinfo xorriso xz-libs
+ py-sphinx"
subpackages="$pkgname-dev $pkgname-doc $pkgname-dbg"
source="$pkgname-$pkgver.tar.gz"
diff --git a/doc/Makefile.am b/doc/Makefile.am
index aeabc0981d..8d35d4540b 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -179,6 +179,7 @@ EXTRA_DIST = frr-sphinx.mk \
developer/OSPF-API.md \
developer/workflow.rst \
developer/Building_FRR_on_Ubuntu1404.rst \
+ developer/Building_FRR_on_Alpine.rst \
user/ospf_fundamentals.rst \
user/routemap.rst \
user/index.rst \
diff --git a/doc/developer/Building_FRR_on_Alpine.rst b/doc/developer/Building_FRR_on_Alpine.rst
new file mode 100644
index 0000000000..27718bdc80
--- /dev/null
+++ b/doc/developer/Building_FRR_on_Alpine.rst
@@ -0,0 +1,47 @@
+Building FRR dev packages on Alpine Linux from Git Source
+=========================================================
+
+For building Alpine Linux dev packages, we use docker.
+
+Install docker 17.05 or later
+-----------------------------
+
+Depending on your host, there are different ways of installing
+docker. Refer to the documentation here for instructions on how
+to install a free version of docker: https://www.docker.com/community-edition
+
+Work with sources
+-----------------
+
+ git clone https://github.com/frrouting/frr.git frr
+ cd frr
+
+Build apk packages
+------------------
+
+ ./docker/alpine/build.sh
+
+This will put the apk packages in:
+
+ ./docker/pkgs/apk/x86_64/
+
+Usage
+-----
+
+To add the packages to a docker image, create a Dockerfile in ./docker/pkgs:
+
+ FROM alpine:3.7
+ RUN mkdir -p /pkgs
+ ADD apk/ /pkgs/
+ RUN apk add --no-cache --allow-untrusted /pkgs/x86_64/*.apk
+
+And build a docker image:
+
+ docker build --rm --force-rm -t alpine-dev-pkgs:latest docker/pkgs
+
+And run the image:
+
+ docker run -it --rm alpine-dev-pkgs:latest /bin/sh
+
+Currently, we only package the raw daemons and example files, so, you'll
+need to run the daemons by hand (or, better, orchestrate in the Dockerfile).
diff --git a/doc/developer/building.rst b/doc/developer/building.rst
index 4715bca532..e56744ad87 100644
--- a/doc/developer/building.rst
+++ b/doc/developer/building.rst
@@ -5,6 +5,7 @@ Building FRR
:maxdepth: 2
Building_FRR_on_LEDE-OpenWRT
+ Building_FRR_on_Alpine
Building_FRR_on_CentOS6
Building_FRR_on_CentOS7
Building_FRR_on_Debian8
diff --git a/docker/.gitignore b/docker/.gitignore
new file mode 100644
index 0000000000..e9beab556e
--- /dev/null
+++ b/docker/.gitignore
@@ -0,0 +1,2 @@
+src.tar
+pkgs/
diff --git a/docker/alpine/Dockerfile b/docker/alpine/Dockerfile
new file mode 100644
index 0000000000..e186fdccdf
--- /dev/null
+++ b/docker/alpine/Dockerfile
@@ -0,0 +1,30 @@
+FROM alpine:3.7 as source-builder
+ARG commit
+RUN apk add --no-cache abuild acct alpine-sdk attr autoconf automake bash \
+ binutils binutils-libs bison bsd-compat-headers build-base \
+ c-ares c-ares-dev ca-certificates cryptsetup-libs curl \
+ device-mapper-libs expat fakeroot flex fortify-headers g++ gcc gdbm \
+ git gmp isl json-c json-c-dev kmod lddtree libacl libatomic libattr \
+ libblkid libburn libbz2 libc-dev libcap libcurl libedit libffi libgcc \
+ libgomp libisoburn libisofs libltdl libressl libssh2 \
+ libstdc++ libtool libuuid linux-headers lzip lzo m4 make mkinitfs mpc1 \
+ mpfr3 mtools musl-dev ncurses-libs ncurses-terminfo ncurses-terminfo-base \
+ patch pax-utils pcre perl pkgconf python2 python2-dev readline \
+ readline-dev sqlite-libs squashfs-tools sudo tar texinfo xorriso xz-libs \
+ groff gzip bc py-sphinx
+RUN mkdir -p /src
+ADD src.tar /src
+RUN (cd /src && \
+ ./bootstrap.sh && \
+ ./configure \
+ --enable-numeric-version \
+ --with-pkg-extra-version=_git$commit && \
+ make dist)
+FROM alpine:3.7 as alpine-builder
+RUN apk add --no-cache abuild alpine-sdk && mkdir -p /pkgs/apk
+ADD alpine-build.sh /usr/bin/
+ADD builder /etc/sudoers.d
+COPY --from=source-builder /src/*.tar.gz /src/alpine/APKBUILD /dist/
+RUN adduser -D -G abuild builder && chown -R builder /dist /pkgs
+USER builder
+RUN /usr/bin/alpine-build.sh
diff --git a/docker/alpine/alpine-build.sh b/docker/alpine/alpine-build.sh
new file mode 100755
index 0000000000..d4c0311122
--- /dev/null
+++ b/docker/alpine/alpine-build.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+cd /dist
+
+sudo apk --update add alpine-conf
+sudo setup-apkcache /var/cache/apk
+abuild-keygen -a -n
+abuild checksum
+abuild -r -P /pkgs/apk
diff --git a/docker/alpine/build.sh b/docker/alpine/build.sh
new file mode 100755
index 0000000000..357ea12dee
--- /dev/null
+++ b/docker/alpine/build.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+set -e
+set -v
+set -x
+
+##
+# commit must be converted to decimal
+##
+c=`git rev-parse --short=10 HEAD`
+commit=`printf '%u\n' 0x$c`
+git archive --format=tar $c > docker/alpine/src.tar
+(cd docker/alpine && \
+ docker build --build-arg commit=$commit --rm --force-rm -t \
+ frr:alpine-$c . && \
+ rm -f src.tar)
+
+id=`docker create frr:alpine-$c`
+docker cp ${id}:/pkgs/ docker
+docker rm $id
+docker rmi frr:alpine-$c
diff --git a/docker/alpine/builder b/docker/alpine/builder
new file mode 100644
index 0000000000..a950b8abaf
--- /dev/null
+++ b/docker/alpine/builder
@@ -0,0 +1 @@
+builder ALL=(ALL) NOPASSWD:ALL