summaryrefslogtreecommitdiff
path: root/alpine
diff options
context:
space:
mode:
authorArthur Jones <arthur.jones@riverbed.com>2018-04-05 17:52:15 -0700
committerArthur Jones <arthur.jones@riverbed.com>2018-04-09 15:34:50 -0700
commit915c81b3ef426fd52ec138ad069ea1271052f209 (patch)
tree51d1000ba4b6bb29a5729dc2355dd39c7cf588c9 /alpine
parent8227cf93336730f6359db5c6c682eb97828c5da9 (diff)
alpine packaging: use a more standard packaging format
Currently, we just package the frr daemons, but we don't run them. This is fine for basic tests, but it is inconvenient to orchestrate the daemons from downstream test environments. Here, we follow the redhat and debianpkg formats more closely, putting the daemons in /usr/lib/frr and including the frr user and groups in the package. We also include a docker specific startup script and a sysvinit link in /etc/init.d/frr for openrc based alpine installs. Testing done: Built packages, built base images, everything seems to work fine. Uninstalled the package, all the daemons stopped. Issue: https://github.com/FRRouting/frr/issues/2030 Signed-off-by: Arthur Jones <arthur.jones@riverbed.com>
Diffstat (limited to 'alpine')
-rw-r--r--alpine/APKBUILD.in32
-rwxr-xr-xalpine/docker-start10
-rwxr-xr-xalpine/frr.post-deinstall6
-rwxr-xr-xalpine/frr.pre-deinstall4
-rwxr-xr-xalpine/frr.pre-install10
5 files changed, 58 insertions, 4 deletions
diff --git a/alpine/APKBUILD.in b/alpine/APKBUILD.in
index 2b211ccafd..c3e7e939e4 100644
--- a/alpine/APKBUILD.in
+++ b/alpine/APKBUILD.in
@@ -4,9 +4,9 @@ pkgver=@VERSION@
pkgrel=0
pkgdesc="Free Range Routing is a fork of quagga"
url="https://frrouting.org/"
-arch="all"
+arch="x86_64"
license="GPL-2.0"
-depends="iproute2 json-c c-ares ipsec-tools iproute2"
+depends="json-c c-ares ipsec-tools iproute2 python py-ipaddr bash"
makedepends="ncurses-dev net-snmp-dev gawk texinfo perl
acct autoconf automake bash
binutils binutils-libs bison bsd-compat-headers build-base
@@ -20,18 +20,42 @@ makedepends="ncurses-dev net-snmp-dev gawk texinfo perl
patch pax-utils pcre perl pkgconf python2 python2-dev readline
readline-dev sqlite-libs squashfs-tools sudo tar texinfo xorriso xz-libs
py-sphinx"
+install="$pkgname.pre-install $pkgname.pre-deinstall $pkgname.post-deinstall"
subpackages="$pkgname-dev $pkgname-doc $pkgname-dbg"
-source="$pkgname-$pkgver.tar.gz"
+source="$pkgname-$pkgver.tar.gz docker-start daemons daemons.conf"
builddir="$srcdir"/$pkgname-$pkgver
+_sbindir=/usr/lib/frr
+_sysconfdir=/etc/frr
+_libdir=/usr/lib
+_localstatedir=/var/run/frr
+_user=frr
+
build() {
cd "$builddir"
- ./configure --prefix=/usr || return 1
+ ./configure \
+ --prefix=/usr \
+ --sbindir=$_sbindir \
+ --sysconfdir=$_sysconfdir \
+ --libdir=$_libdir \
+ --localstatedir=$_localstatedir \
+ --enable-systemd=no \
+ --enable-vtysh \
+ --enable-multipath=64 \
+ --enable-vty-group=frrvty \
+ --enable-user=$_user \
+ --enable-group=$_user || return 1
make || return 1
}
package() {
cd "$builddir"
make DESTDIR="$pkgdir" install || return 1
+
+ install -Dm755 "$srcdir"/docker-start "$pkgdir"$_sbindir
+ install -Dm644 "$srcdir"/daemons "$pkgdir"$_sysconfdir
+ install -Dm644 "$srcdir"/daemons.conf "$pkgdir"$_sysconfdir
+ install -d "$pkgdir"/etc/init.d
+ ln -s ${_sbindir}/frr "$pkgdir"/etc/init.d/frr
}
diff --git a/alpine/docker-start b/alpine/docker-start
new file mode 100755
index 0000000000..43854ab142
--- /dev/null
+++ b/alpine/docker-start
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+set -e
+
+##
+# For volume mounts...
+##
+chown -R frr:frr /etc/frr
+/etc/init.d/frr start
+exec sleep 10000d
diff --git a/alpine/frr.post-deinstall b/alpine/frr.post-deinstall
new file mode 100755
index 0000000000..8f5d3dc40c
--- /dev/null
+++ b/alpine/frr.post-deinstall
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+getent passwd frr > /dev/null && deluser frr
+getent group frrvty > /dev/null && delgroup frrvty
+getent group frr > /dev/null && delgroup frr
+exit 0
diff --git a/alpine/frr.pre-deinstall b/alpine/frr.pre-deinstall
new file mode 100755
index 0000000000..72cf73bc1c
--- /dev/null
+++ b/alpine/frr.pre-deinstall
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+/etc/init.d/frr stop
+exit 0
diff --git a/alpine/frr.pre-install b/alpine/frr.pre-install
new file mode 100755
index 0000000000..da608cdcbd
--- /dev/null
+++ b/alpine/frr.pre-install
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+for g in frr frrvty; do
+ ! getent group $g > /dev/null && addgroup -S $g
+done
+
+! getent passwd frr > /dev/null && \
+ adduser -S -D -h /var/run/frr -s /sbin/nologin -G frr -g frr frr
+
+adduser frr frrvty