]> git.proxmox.com Git - mirror_frr.git/commitdiff
Merge pull request #4030 from cfra/feature/fix-alpine-build
authorQuentin Young <qlyoung@users.noreply.github.com>
Thu, 28 Mar 2019 16:02:59 +0000 (12:02 -0400)
committerGitHub <noreply@github.com>
Thu, 28 Mar 2019 16:02:59 +0000 (12:02 -0400)
Fix alpine build

.dockerignore
alpine/APKBUILD.in
alpine/docker-start [deleted file]
docker/alpine/Dockerfile
docker/alpine/alpine-build.sh [deleted file]
docker/alpine/build.sh
docker/alpine/builder [deleted file]
docker/alpine/docker-start [new file with mode: 0755]

index f2fc34583d3e482edd93929b2d7864e41fec56cd..d613e18dfc0ae1e810854a5396fccab3b5c08aa0 100644 (file)
@@ -5,3 +5,4 @@
 **/*.lo
 **/*.so
 **/.libs
+docker/alpine/pkgs
index 969b85f5240d52c6e14146a346dbed8ed7f6e184..0f56a427dd772990795911734ef1d891c6e13ea5 100644 (file)
@@ -9,13 +9,13 @@ license="GPL-2.0"
 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
+    binutils bison bsd-compat-headers build-base
     c-ares c-ares-dev ca-certificates cryptsetup-libs curl
     device-mapper-libs expat fakeroot flex fortify-headers gdbm
     git gmp isl 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
+    libstdc++ libtool libuuid libyang-dev 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
@@ -23,7 +23,7 @@ makedepends="ncurses-dev net-snmp-dev gawk texinfo perl
 checkdepends="pytest py-setuptools"
 install="$pkgname.pre-install $pkgname.pre-deinstall $pkgname.post-deinstall"
 subpackages="$pkgname-dev $pkgname-doc $pkgname-dbg"
-source="$pkgname-$pkgver.tar.gz docker-start daemons"
+source="$pkgname-$pkgver.tar.gz"
 
 builddir="$srcdir"/$pkgname-$pkgver
 
@@ -60,8 +60,7 @@ package() {
        cd "$builddir"
        make DESTDIR="$pkgdir" install
 
-       install -Dm755 "$srcdir"/docker-start "$pkgdir"$_sbindir
-       install -Dm644 "$srcdir"/daemons "$pkgdir"$_sysconfdir
+       install -Dm644 "$builddir"/tools/etc/frr/daemons "$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
deleted file mode 100755 (executable)
index 43854ab..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-
-set -e
-
-##
-# For volume mounts...
-##
-chown -R frr:frr /etc/frr
-/etc/init.d/frr start
-exec sleep 10000d
index dd29358b07368e78ab625d79291fc8e979a60e3d..815983a3940a195b03a04aadc1e7ef61795c8aac 100644 (file)
@@ -1,35 +1,58 @@
-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
-ADD . /src
-RUN (cd /src && \
-       ./bootstrap.sh && \
-       ./configure \
+# This stage builds a dist tarball from the source
+FROM alpine:edge as source-builder
+
+RUN mkdir -p /src/alpine
+COPY alpine/APKBUILD.in /src/alpine
+RUN source /src/alpine/APKBUILD.in \
+       && echo 'http://dl-cdn.alpinelinux.org/alpine/edge/testing' >> /etc/apk/repositories \
+       && apk add \
+               --no-cache \
+               --update-cache \
+               $makedepends \
+               gzip
+
+COPY . /src
+ARG PKGVER
+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 docker/alpine/alpine-build.sh /usr/bin/
-ADD docker/alpine/builder /etc/sudoers.d
-COPY --from=source-builder /src/*.tar.gz /src/alpine/* /src/tools/etc/frr/daemons* /dist/
+               --with-pkg-extra-version="_git$PKGVER" \
+       && make dist
+
+# This stage builds an apk from the dist tarball
+FROM alpine:edge as alpine-builder
+# Don't use nocache here so that abuild can use the cache
+RUN echo 'http://dl-cdn.alpinelinux.org/alpine/edge/testing' >> /etc/apk/repositories \
+       && apk add \
+               --update-cache \
+               abuild \
+               alpine-conf \
+               alpine-sdk \
+       && setup-apkcache /var/cache/apk \
+       && mkdir -p /pkgs/apk \
+       && echo 'builder ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
+
+COPY --from=source-builder /src/frr-*.tar.gz /src/alpine/* /dist/
 RUN adduser -D -G abuild builder && chown -R builder /dist /pkgs
 USER builder
-RUN /usr/bin/alpine-build.sh
-FROM alpine:3.7
+RUN cd /dist \
+       && abuild-keygen -a -n \
+       && abuild checksum \
+       && abuild -r -P /pkgs/apk
+
+# This stage installs frr from the apk
+FROM alpine:edge
 RUN mkdir -p /pkgs/apk
 COPY --from=alpine-builder /pkgs/apk/ /pkgs/apk/
-RUN apk add --no-cache tini
-RUN apk add --no-cache --allow-untrusted /pkgs/apk/x86_64/*.apk
+RUN echo 'http://dl-cdn.alpinelinux.org/alpine/edge/testing' >> /etc/apk/repositories \
+       && apk add \
+               --no-cache \
+               --update-cache \
+               tini \
+       && apk add \
+               --no-cache \
+               --allow-untrusted /pkgs/apk/*/*.apk \
+       && rm -rf /pkgs
+COPY docker/alpine/docker-start /usr/lib/frr/docker-start
 ENTRYPOINT [ "/sbin/tini", "--", "/usr/lib/frr/docker-start" ]
diff --git a/docker/alpine/alpine-build.sh b/docker/alpine/alpine-build.sh
deleted file mode 100755 (executable)
index d4c0311..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/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
index 40ed1194fe6cb23514352d146a30ec2f689b6f0c..22a36877c039d1f0f4301d86a05704b1845b0690 100755 (executable)
@@ -1,17 +1,30 @@
 #!/bin/sh
 
 set -e
-set -v
 set -x
 
 ##
-# commit must be converted to decimal
+# Package version needs to be decimal
 ##
-c=`git rev-parse --short=10 HEAD`
-commit=`printf '%u\n' 0x$c`
-docker build -f docker/alpine/Dockerfile \
-       --build-arg commit=$commit -t frr:alpine-$c .
-id=`docker create frr:alpine-$c`
-docker cp ${id}:/pkgs/ docker
-docker rm $id
-docker rmi frr:alpine-$c
+GITREV="$(git rev-parse --short=10 HEAD)"
+PKGVER="$(printf '%u\n' 0x$GITREV)"
+
+docker build \
+       --pull \
+       --file=docker/alpine/Dockerfile \
+       --build-arg="PKGVER=$PKGVER" \
+       --tag="frr:alpine-builder-$GITREV" \
+       --target=alpine-builder \
+       .
+
+CONTAINER_ID="$(docker create "frr:alpine-builder-$GITREV")"
+docker cp "${CONTAINER_ID}:/pkgs/" docker/alpine
+docker rm "${CONTAINER_ID}"
+
+docker build \
+       --file=docker/alpine/Dockerfile \
+       --build-arg="PKGVER=$PKGVER" \
+       --tag="frr:alpine-$GITREV" \
+       .
+
+docker rmi "frr:alpine-builder-$GITREV"
diff --git a/docker/alpine/builder b/docker/alpine/builder
deleted file mode 100644 (file)
index a950b8a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-builder ALL=(ALL) NOPASSWD:ALL
diff --git a/docker/alpine/docker-start b/docker/alpine/docker-start
new file mode 100755 (executable)
index 0000000..52cfb66
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+set -e
+
+##
+# For volume mounts...
+##
+chown -R frr:frr /etc/frr
+/usr/lib/frr/frrinit.sh start
+
+# Sleep forever
+exec tail -f /dev/null