mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-07-26 04:54:44 +00:00
Merge pull request #4030 from cfra/feature/fix-alpine-build
Fix alpine build
This commit is contained in:
commit
8db37bf14a
@ -5,3 +5,4 @@
|
|||||||
**/*.lo
|
**/*.lo
|
||||||
**/*.so
|
**/*.so
|
||||||
**/.libs
|
**/.libs
|
||||||
|
docker/alpine/pkgs
|
||||||
|
@ -9,13 +9,13 @@ license="GPL-2.0"
|
|||||||
depends="json-c c-ares ipsec-tools iproute2 python py-ipaddr bash"
|
depends="json-c c-ares ipsec-tools iproute2 python py-ipaddr bash"
|
||||||
makedepends="ncurses-dev net-snmp-dev gawk texinfo perl
|
makedepends="ncurses-dev net-snmp-dev gawk texinfo perl
|
||||||
acct autoconf automake bash
|
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
|
c-ares c-ares-dev ca-certificates cryptsetup-libs curl
|
||||||
device-mapper-libs expat fakeroot flex fortify-headers gdbm
|
device-mapper-libs expat fakeroot flex fortify-headers gdbm
|
||||||
git gmp isl json-c-dev kmod lddtree libacl libatomic libattr
|
git gmp isl json-c-dev kmod lddtree libacl libatomic libattr
|
||||||
libblkid libburn libbz2 libc-dev libcap libcurl libedit libffi libgcc
|
libblkid libburn libbz2 libc-dev libcap libcurl libedit libffi libgcc
|
||||||
libgomp libisoburn libisofs libltdl libressl libssh2
|
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
|
mpfr3 mtools musl-dev ncurses-libs ncurses-terminfo ncurses-terminfo-base
|
||||||
patch pax-utils pcre perl pkgconf python2 python2-dev readline
|
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
|
||||||
@ -23,7 +23,7 @@ makedepends="ncurses-dev net-snmp-dev gawk texinfo perl
|
|||||||
checkdepends="pytest py-setuptools"
|
checkdepends="pytest py-setuptools"
|
||||||
install="$pkgname.pre-install $pkgname.pre-deinstall $pkgname.post-deinstall"
|
install="$pkgname.pre-install $pkgname.pre-deinstall $pkgname.post-deinstall"
|
||||||
subpackages="$pkgname-dev $pkgname-doc $pkgname-dbg"
|
subpackages="$pkgname-dev $pkgname-doc $pkgname-dbg"
|
||||||
source="$pkgname-$pkgver.tar.gz docker-start daemons"
|
source="$pkgname-$pkgver.tar.gz"
|
||||||
|
|
||||||
builddir="$srcdir"/$pkgname-$pkgver
|
builddir="$srcdir"/$pkgname-$pkgver
|
||||||
|
|
||||||
@ -60,8 +60,7 @@ package() {
|
|||||||
cd "$builddir"
|
cd "$builddir"
|
||||||
make DESTDIR="$pkgdir" install
|
make DESTDIR="$pkgdir" install
|
||||||
|
|
||||||
install -Dm755 "$srcdir"/docker-start "$pkgdir"$_sbindir
|
install -Dm644 "$builddir"/tools/etc/frr/daemons "$pkgdir"$_sysconfdir
|
||||||
install -Dm644 "$srcdir"/daemons "$pkgdir"$_sysconfdir
|
|
||||||
install -d "$pkgdir"/etc/init.d
|
install -d "$pkgdir"/etc/init.d
|
||||||
ln -s ${_sbindir}/frr "$pkgdir"/etc/init.d/frr
|
ln -s ${_sbindir}/frr "$pkgdir"/etc/init.d/frr
|
||||||
}
|
}
|
||||||
|
@ -1,35 +1,58 @@
|
|||||||
FROM alpine:3.7 as source-builder
|
# This stage builds a dist tarball from the source
|
||||||
ARG commit
|
FROM alpine:edge as source-builder
|
||||||
RUN apk add --no-cache abuild acct alpine-sdk attr autoconf automake bash \
|
|
||||||
binutils binutils-libs bison bsd-compat-headers build-base \
|
RUN mkdir -p /src/alpine
|
||||||
c-ares c-ares-dev ca-certificates cryptsetup-libs curl \
|
COPY alpine/APKBUILD.in /src/alpine
|
||||||
device-mapper-libs expat fakeroot flex fortify-headers g++ gcc gdbm \
|
RUN source /src/alpine/APKBUILD.in \
|
||||||
git gmp isl json-c json-c-dev kmod lddtree libacl libatomic libattr \
|
&& echo 'http://dl-cdn.alpinelinux.org/alpine/edge/testing' >> /etc/apk/repositories \
|
||||||
libblkid libburn libbz2 libc-dev libcap libcurl libedit libffi libgcc \
|
&& apk add \
|
||||||
libgomp libisoburn libisofs libltdl libressl libssh2 \
|
--no-cache \
|
||||||
libstdc++ libtool libuuid linux-headers lzip lzo m4 make mkinitfs mpc1 \
|
--update-cache \
|
||||||
mpfr3 mtools musl-dev ncurses-libs ncurses-terminfo ncurses-terminfo-base \
|
$makedepends \
|
||||||
patch pax-utils pcre perl pkgconf python2 python2-dev readline \
|
gzip
|
||||||
readline-dev sqlite-libs squashfs-tools sudo tar texinfo xorriso xz-libs \
|
|
||||||
groff gzip bc py-sphinx
|
COPY . /src
|
||||||
ADD . /src
|
ARG PKGVER
|
||||||
RUN (cd /src && \
|
RUN cd /src \
|
||||||
./bootstrap.sh && \
|
&& ./bootstrap.sh \
|
||||||
./configure \
|
&& ./configure \
|
||||||
--enable-numeric-version \
|
--enable-numeric-version \
|
||||||
--with-pkg-extra-version=_git$commit && \
|
--with-pkg-extra-version="_git$PKGVER" \
|
||||||
make dist)
|
&& make dist
|
||||||
FROM alpine:3.7 as alpine-builder
|
|
||||||
RUN apk add --no-cache abuild alpine-sdk && mkdir -p /pkgs/apk
|
# This stage builds an apk from the dist tarball
|
||||||
ADD docker/alpine/alpine-build.sh /usr/bin/
|
FROM alpine:edge as alpine-builder
|
||||||
ADD docker/alpine/builder /etc/sudoers.d
|
# Don't use nocache here so that abuild can use the cache
|
||||||
COPY --from=source-builder /src/*.tar.gz /src/alpine/* /src/tools/etc/frr/daemons* /dist/
|
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
|
RUN adduser -D -G abuild builder && chown -R builder /dist /pkgs
|
||||||
USER builder
|
USER builder
|
||||||
RUN /usr/bin/alpine-build.sh
|
RUN cd /dist \
|
||||||
FROM alpine:3.7
|
&& 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
|
RUN mkdir -p /pkgs/apk
|
||||||
COPY --from=alpine-builder /pkgs/apk/ /pkgs/apk/
|
COPY --from=alpine-builder /pkgs/apk/ /pkgs/apk/
|
||||||
RUN apk add --no-cache tini
|
RUN echo 'http://dl-cdn.alpinelinux.org/alpine/edge/testing' >> /etc/apk/repositories \
|
||||||
RUN apk add --no-cache --allow-untrusted /pkgs/apk/x86_64/*.apk
|
&& 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" ]
|
ENTRYPOINT [ "/sbin/tini", "--", "/usr/lib/frr/docker-start" ]
|
||||||
|
@ -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
|
|
@ -1,17 +1,30 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
set -v
|
|
||||||
set -x
|
set -x
|
||||||
|
|
||||||
##
|
##
|
||||||
# commit must be converted to decimal
|
# Package version needs to be decimal
|
||||||
##
|
##
|
||||||
c=`git rev-parse --short=10 HEAD`
|
GITREV="$(git rev-parse --short=10 HEAD)"
|
||||||
commit=`printf '%u\n' 0x$c`
|
PKGVER="$(printf '%u\n' 0x$GITREV)"
|
||||||
docker build -f docker/alpine/Dockerfile \
|
|
||||||
--build-arg commit=$commit -t frr:alpine-$c .
|
docker build \
|
||||||
id=`docker create frr:alpine-$c`
|
--pull \
|
||||||
docker cp ${id}:/pkgs/ docker
|
--file=docker/alpine/Dockerfile \
|
||||||
docker rm $id
|
--build-arg="PKGVER=$PKGVER" \
|
||||||
docker rmi frr:alpine-$c
|
--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"
|
||||||
|
@ -1 +0,0 @@
|
|||||||
builder ALL=(ALL) NOPASSWD:ALL
|
|
@ -6,5 +6,7 @@ set -e
|
|||||||
# For volume mounts...
|
# For volume mounts...
|
||||||
##
|
##
|
||||||
chown -R frr:frr /etc/frr
|
chown -R frr:frr /etc/frr
|
||||||
/etc/init.d/frr start
|
/usr/lib/frr/frrinit.sh start
|
||||||
exec sleep 10000d
|
|
||||||
|
# Sleep forever
|
||||||
|
exec tail -f /dev/null
|
Loading…
Reference in New Issue
Block a user