mirror of
https://github.com/vyos/vyos-build.git
synced 2025-10-01 20:28:40 +02:00
Merge pull request #80 from runborg/arm-build
T1927: Extend main docker container to support arm builds
This commit is contained in:
commit
d7a2ea6195
69
Jenkinsfile
vendored
69
Jenkinsfile
vendored
@ -72,27 +72,84 @@ setDescription()
|
||||
|
||||
// Due to long build times on DockerHub we rather build the container by ourself
|
||||
// and publish it later on.
|
||||
|
||||
// create container names on demand
|
||||
env.DOCKER_IMAGE = "vyos/vyos-build:" + getGitBranchName()
|
||||
env.DOCKER_IMAGE_ARM = "vyos/vyos-build:" + getGitBranchName() + "-armhf"
|
||||
env.DOCKER_IMAGE_ARM64 = "vyos/vyos-build:" + getGitBranchName() + "-arm64"
|
||||
|
||||
node('Docker') {
|
||||
stage('Build Container') {
|
||||
script {
|
||||
stage('Fetch') {
|
||||
git branch: getGitBranchName(),
|
||||
url: getGitRepoURL()
|
||||
}
|
||||
stage('Build Docker container') {
|
||||
parallel (
|
||||
'x86-64': {
|
||||
script {
|
||||
dir('docker') {
|
||||
sh """
|
||||
mkdir -p x86-64
|
||||
cp Dockerfile x86-64/Dockerfile
|
||||
cp entrypoint.sh x86-64/entrypoint.sh
|
||||
|
||||
// create container name on demand
|
||||
env.DOCKER_IMAGE = "vyos/vyos-build:" + getGitBranchName()
|
||||
sh "docker build -t ${env.DOCKER_IMAGE} docker"
|
||||
docker build -t ${env.DOCKER_IMAGE} x86-64
|
||||
"""
|
||||
if ( ! isCustomBuild()) {
|
||||
withDockerRegistry([credentialsId: "DockerHub"]) {
|
||||
sh "docker push ${env.DOCKER_IMAGE}"
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
'armhf': {
|
||||
script {
|
||||
dir('docker') {
|
||||
sh """
|
||||
cp Dockerfile armhf/Dockerfile
|
||||
cp entrypoint.sh armhf/entrypoint.sh
|
||||
sed -i 's#^FROM.*#FROM multiarch/debian-debootstrap:armhf-buster-slim#' armhf/Dockerfile
|
||||
docker build -t ${env.DOCKER_IMAGE_ARM} armhf
|
||||
"""
|
||||
if ( ! isCustomBuild()) {
|
||||
withDockerRegistry([credentialsId: "DockerHub"]) {
|
||||
sh "docker push ${env.DOCKER_IMAGE_ARM}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
'arm64': {
|
||||
script {
|
||||
dir('docker') {
|
||||
sh """
|
||||
cp Dockerfile arm64/Dockerfile
|
||||
cp entrypoint.sh arm64/entrypoint.sh
|
||||
sed -i 's#^FROM.*#FROM multiarch/debian-debootstrap:arm64-buster-slim#' arm64/Dockerfile
|
||||
docker build -t ${env.DOCKER_IMAGE_ARM64} arm64
|
||||
|
||||
"""
|
||||
|
||||
if ( ! isCustomBuild()) {
|
||||
withDockerRegistry([credentialsId: "DockerHub"]) {
|
||||
sh "docker push ${env.DOCKER_IMAGE_ARM64}"
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
pipeline {
|
||||
options {
|
||||
skipDefaultCheckout()
|
||||
disableConcurrentBuilds()
|
||||
timeout(time: 90, unit: 'MINUTES')
|
||||
timeout(time: 120, unit: 'MINUTES')
|
||||
parallelsAlwaysFailFast()
|
||||
timestamps()
|
||||
}
|
||||
|
||||
@ -16,7 +16,26 @@
|
||||
# Must be run with --privileged flag, recommended to run the container with a
|
||||
# volume mapped in order to easy export images
|
||||
|
||||
# This Dockerfile is installable on both x86, x86-64, armhf and arm64 systems
|
||||
# To install using native cpu instructionset use the default docker `FROM` statement
|
||||
# (Use this to build on an x86/x86-64 pc/server and on an ARM system, eg. RaspberryPi)
|
||||
FROM debian:buster
|
||||
|
||||
# It is also possible to emulate an arm system inside docker,
|
||||
# execution of this emulated system needs to be executed on an x86 or x86-64 host.
|
||||
|
||||
# To install an qemu emulated armhf or arm64 cpu comment out the default `FROM` statement
|
||||
# and use one of the following instead.
|
||||
# ARMHF:
|
||||
#FROM multiarch/debian-debootstrap:armhf-buster-slim
|
||||
# ARM64:
|
||||
#FROM multiarch/debian-debootstrap:arm64-buster-slim
|
||||
|
||||
# Prior of installing an emulated qemu build you need to install qemu, qemu-user-static
|
||||
# and register qemu inside docker using:
|
||||
# `docker run --rm --privileged multiarch/qemu-user-static:register --reset`
|
||||
|
||||
|
||||
LABEL authors="VyOS Maintainers <maintainers@vyos.io>"
|
||||
|
||||
ENV DEBIAN_FRONTEND noninteractive
|
||||
@ -45,7 +64,6 @@ RUN apt-get update && apt-get install -y \
|
||||
pbuilder \
|
||||
devscripts \
|
||||
squashfs-tools \
|
||||
syslinux \
|
||||
genisoimage \
|
||||
lsb-release \
|
||||
fakechroot \
|
||||
@ -68,6 +86,11 @@ RUN apt-get update && apt-get install -y \
|
||||
openssh-client \
|
||||
jq
|
||||
|
||||
# Syslinux is only supported on x86 and x64 systems
|
||||
RUN if dpkg-architecture -ii386 || dpkg-architecture -iamd64; then \
|
||||
apt-get update && apt-get install -y syslinux; \
|
||||
fi
|
||||
|
||||
# Package needed for mdns-repeater
|
||||
RUN apt-get update && apt-get install -y \
|
||||
dh-systemd
|
||||
@ -80,10 +103,19 @@ RUN apt-get update && apt-get install -y \
|
||||
libpcre3-dev \
|
||||
unzip
|
||||
|
||||
# Update certificate store to not crash ocaml package installf
|
||||
# Apply fix for https in curl running on armhf
|
||||
RUN dpkg-reconfigure ca-certificates; \
|
||||
if dpkg-architecture -iarmhf; then \
|
||||
echo "cacert=/etc/ssl/certs/ca-certificates.crt" >> ~/.curlrc; \
|
||||
fi
|
||||
|
||||
|
||||
# Installing OCAML needed to compile libvyosconfig
|
||||
RUN curl https://raw.githubusercontent.com/ocaml/opam/2.0.2/shell/install.sh \
|
||||
--output /tmp/opam_install.sh --retry 10 --retry-delay 5 && \
|
||||
sed -i 's/read BINDIR/BINDIR=""/' /tmp/opam_install.sh && sh /tmp/opam_install.sh && \
|
||||
opam init --root=/opt/opam --comp=4.08.0 --disable-sandboxing
|
||||
opam init --root=/opt/opam --comp=4.09.0 --disable-sandboxing
|
||||
|
||||
RUN eval $(opam env --root=/opt/opam --set-root) && opam install -y \
|
||||
pcre
|
||||
@ -102,7 +134,7 @@ RUN eval $(opam env --root=/opt/opam --set-root) && \
|
||||
git clone https://github.com/vyos/libvyosconfig.git && \
|
||||
cd libvyosconfig && git checkout 5138b5eb && \
|
||||
dpkg-buildpackage -uc -us -tc -b && \
|
||||
dpkg -i ../libvyosconfig0_*_amd64.deb
|
||||
dpkg -i ../libvyosconfig0_*_$(dpkg-architecture -qDEB_HOST_ARCH).deb
|
||||
|
||||
# Packages needed for vyatta-cfg
|
||||
RUN apt-get update && apt-get install -y \
|
||||
@ -168,7 +200,7 @@ RUN export RTRLIB_VERSION="0.6.3" && \
|
||||
wget -P /tmp https://github.com/rtrlib/rtrlib/archive/v${RTRLIB_VERSION}.tar.gz && \
|
||||
tar xf /tmp/v${RTRLIB_VERSION}.tar.gz -C /tmp && \
|
||||
cd /tmp/rtrlib-${RTRLIB_VERSION} && dpkg-buildpackage -uc -us -tc -b && \
|
||||
dpkg -i ../librtr*_amd64.deb ../librtr*_all.deb
|
||||
dpkg -i ../librtr*_$(dpkg-architecture -qDEB_HOST_ARCH).deb ../librtr*_all.deb
|
||||
|
||||
# Packages needed to build frr itself
|
||||
# https://github.com/FRRouting/frr/blob/master/doc/developer/building-libyang.rst
|
||||
@ -256,11 +288,14 @@ RUN apt-get update && apt-get install -y \
|
||||
libpopt-dev
|
||||
|
||||
# Packages needed for Qemu test-suite
|
||||
RUN apt-get update && apt-get install -y \
|
||||
# This is for now only supported on i386 and amd64 platforms
|
||||
RUN if dpkg-architecture -ii386 || dpkg-architecture -iamd64; then \
|
||||
apt-get update && apt-get install -y \
|
||||
python3-pexpect \
|
||||
qemu-system-x86 \
|
||||
qemu-utils \
|
||||
qemu-kvm
|
||||
qemu-kvm; \
|
||||
fi
|
||||
|
||||
# Packages needed for vyos-cloud-init
|
||||
RUN apt-get update && apt-get install -y \
|
||||
@ -282,12 +317,26 @@ RUN apt-get update && apt-get install -y \
|
||||
libaudit-dev
|
||||
|
||||
# Install packer
|
||||
RUN export LATEST="$(curl -s https://checkpoint-api.hashicorp.com/v1/check/packer | \
|
||||
RUN if dpkg-architecture -ii386 || dpkg-architecture -iamd64; then \
|
||||
export LATEST="$(curl -s https://checkpoint-api.hashicorp.com/v1/check/packer | \
|
||||
jq -r -M '.current_version')"; \
|
||||
echo "url https://releases.hashicorp.com/packer/"$LATEST"/packer_"$LATEST"_linux_amd64.zip" |\
|
||||
echo "url https://releases.hashicorp.com/packer/${LATEST}/packer_${LATEST}_linux_amd64.zip" |\
|
||||
curl -K- | gzip -d > /usr/bin/packer && \
|
||||
chmod +x /usr/bin/packer
|
||||
chmod +x /usr/bin/packer; \
|
||||
fi
|
||||
|
||||
# Install utillities for building grub and u-boot images
|
||||
RUN if dpkg-architecture -iarm64; then \
|
||||
apt-get update && apt-get install -y \
|
||||
dosfstools \
|
||||
u-boot-tools \
|
||||
grub-efi-$(dpkg-architecture -qDEB_HOST_ARCH); \
|
||||
elif dpkg-architecture -iarmhf; then \
|
||||
apt-get update && apt-get install -y \
|
||||
dosfstools \
|
||||
u-boot-tools \
|
||||
grub-efi-arm; \
|
||||
fi
|
||||
#
|
||||
# live-build: building with local packages fails due to missing keys
|
||||
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=941691
|
||||
|
||||
@ -1,314 +0,0 @@
|
||||
# Copyright (C) 2019 VyOS maintainers and contributors
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# in order to easy exprort images built to "external" world
|
||||
# it under the terms of the GNU General Public License version 2 or later as
|
||||
# published by the Free Software Foundation.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# Must be run with --privileged flag, recommended to run the container with a
|
||||
# volume mapped in order to easy export images
|
||||
|
||||
FROM multiarch/debian-debootstrap:arm64-buster-slim
|
||||
LABEL authors="VyOS Maintainers <maintainers@vyos.io>"
|
||||
|
||||
ENV DEBIAN_FRONTEND noninteractive
|
||||
|
||||
# Standard shell should be bash not dash
|
||||
RUN echo "dash dash/sh boolean false" | debconf-set-selections && \
|
||||
dpkg-reconfigure dash
|
||||
|
||||
RUN apt-get update && apt-get install -y \
|
||||
dialog \
|
||||
apt-utils \
|
||||
locales
|
||||
|
||||
RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && locale-gen
|
||||
ENV LANG en_US.utf8
|
||||
|
||||
RUN apt-get update && apt-get install -y \
|
||||
vim \
|
||||
git \
|
||||
curl \
|
||||
make \
|
||||
sudo \
|
||||
mc \
|
||||
pbuilder \
|
||||
devscripts \
|
||||
squashfs-tools \
|
||||
autoconf \
|
||||
automake \
|
||||
dpkg-dev \
|
||||
genisoimage \
|
||||
lsb-release \
|
||||
fakechroot \
|
||||
libtool \
|
||||
libapt-pkg-dev \
|
||||
parted \
|
||||
kpartx \
|
||||
quilt \
|
||||
python3-lxml \
|
||||
python3-setuptools \
|
||||
python3-nose \
|
||||
python3-coverage \
|
||||
python3-sphinx \
|
||||
python3-pystache \
|
||||
python3-git \
|
||||
python3-pip \
|
||||
pkg-config \
|
||||
debhelper \
|
||||
gosu \
|
||||
live-build \
|
||||
jq
|
||||
|
||||
# Package needed for mdns-repeater
|
||||
RUN apt-get update && apt-get install -y \
|
||||
dh-systemd
|
||||
|
||||
#
|
||||
# Building libvyosconf requires a full configured OPAM/OCaml setup
|
||||
#
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libffi-dev \
|
||||
libpcre3-dev
|
||||
|
||||
RUN curl https://raw.githubusercontent.com/ocaml/opam/2.0.2/shell/install.sh --output /tmp/opam_install.sh && \
|
||||
sed -i 's/read BINDIR/BINDIR=""/' /tmp/opam_install.sh && sh /tmp/opam_install.sh && \
|
||||
opam init --root=/opt/opam --comp=4.07.0 --disable-sandboxing
|
||||
|
||||
RUN eval $(opam env --root=/opt/opam --set-root) && \
|
||||
opam install -y \
|
||||
oasis
|
||||
|
||||
RUN eval $(opam env --root=/opt/opam --set-root) && opam install -y \
|
||||
fileutils \
|
||||
lwt \
|
||||
lwt_ppx \
|
||||
lwt_log \
|
||||
ocplib-endian \
|
||||
ounit \
|
||||
pcre \
|
||||
ppx_deriving_yojson \
|
||||
sha \
|
||||
toml \
|
||||
xml-light \
|
||||
batteries \
|
||||
ocaml-protoc \
|
||||
ctypes-foreign \
|
||||
menhir
|
||||
|
||||
RUN eval $(opam env --root=/opt/opam --set-root) && opam install -y \
|
||||
ctypes
|
||||
|
||||
# Build VyConf which is required to build libvyosconfig
|
||||
RUN eval $(opam env --root=/opt/opam --set-root) && \
|
||||
opam pin add vyconf https://github.com/vyos/vyconf.git#51d79a3f -y
|
||||
|
||||
# Build libvyosconfig
|
||||
RUN eval $(opam env --root=/opt/opam --set-root) && \
|
||||
git clone https://github.com/vyos/libvyosconfig.git && \
|
||||
cd libvyosconfig && git checkout 9a80a5d3 && \
|
||||
dpkg-buildpackage -uc -us -tc -b && \
|
||||
dpkg -i ../libvyosconfig0_*.deb
|
||||
|
||||
# Packages needed for vyatta-cfg
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libglib2.0-dev \
|
||||
libperl-dev \
|
||||
libboost-filesystem-dev
|
||||
|
||||
# Packages needed for vyatta-iproute
|
||||
RUN apt-get update && apt-get install -y \
|
||||
iptables-dev \
|
||||
libatm1-dev \
|
||||
libcap-dev \
|
||||
libdb-dev \
|
||||
libelf-dev \
|
||||
libselinux1-dev
|
||||
|
||||
# Packages needed for vyatta-webgui
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libexpat1-dev \
|
||||
subversion
|
||||
|
||||
# Packages needed for pmacct
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libpcap-dev \
|
||||
libpq-dev \
|
||||
default-libmysqlclient-dev \
|
||||
libgeoip-dev \
|
||||
librabbitmq-dev \
|
||||
libjansson-dev \
|
||||
librdkafka-dev \
|
||||
libnetfilter-log-dev
|
||||
|
||||
# Pavkages needed for wireguard
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libmnl-dev
|
||||
|
||||
# Packages needed for kernel
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libncurses5-dev \
|
||||
flex \
|
||||
bison \
|
||||
libelf-dev \
|
||||
bc \
|
||||
kmod
|
||||
|
||||
# Packages needed for vyos-accel-ppp
|
||||
RUN apt-get update && apt-get install -y \
|
||||
cdbs \
|
||||
cmake \
|
||||
liblua5.1-dev
|
||||
|
||||
# Prerequisites for building rtrlib
|
||||
# see http://docs.frrouting.org/projects/dev-guide/en/latest/building-frr-for-debian8.html
|
||||
RUN apt-get update && apt-get install -y \
|
||||
graphviz \
|
||||
doxygen \
|
||||
libssh-dev \
|
||||
libssl-dev
|
||||
|
||||
# Build rtrlib release 0.6.3
|
||||
RUN export RTRLIB_VERSION="0.6.3" && \
|
||||
wget -P /tmp https://github.com/rtrlib/rtrlib/archive/v${RTRLIB_VERSION}.tar.gz && \
|
||||
tar xf /tmp/v${RTRLIB_VERSION}.tar.gz -C /tmp && \
|
||||
cd /tmp/rtrlib-${RTRLIB_VERSION} && dpkg-buildpackage -uc -us -tc -b && \
|
||||
dpkg -i ../librtr*.deb
|
||||
|
||||
# Packages needed to build frr itself
|
||||
# https://github.com/FRRouting/frr/blob/master/doc/developer/building-libyang.rst
|
||||
# for more info
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libyang-dev \
|
||||
libyang0.16 \
|
||||
chrpath \
|
||||
install-info \
|
||||
libjson-c-dev \
|
||||
libpython3-dev \
|
||||
python3-dev \
|
||||
python3-pytest \
|
||||
texinfo
|
||||
|
||||
# Packages needed for conntrack-tools
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libnetfilter-conntrack-dev \
|
||||
libnetfilter-cthelper0-dev \
|
||||
libnetfilter-cttimeout-dev \
|
||||
libnetfilter-queue-dev
|
||||
|
||||
# Packages needed for hvinfo
|
||||
RUN apt-get update && apt-get install -y \
|
||||
gnat \
|
||||
gprbuild
|
||||
|
||||
# Packages needed for vyos-1x
|
||||
RUN apt-get update && apt-get install -y \
|
||||
whois
|
||||
|
||||
# Packages needed for vyos-xe-guest-utilities
|
||||
RUN apt-get update && apt-get install -y \
|
||||
golang
|
||||
|
||||
# Packages needed for ipaddrcheck
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libcidr0 \
|
||||
libcidr-dev \
|
||||
check
|
||||
|
||||
# Packages needed for lldpd
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libbsd-dev \
|
||||
libevent-dev
|
||||
|
||||
# Packages needed for vyatta-quagga
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libpam-dev \
|
||||
libcap-dev \
|
||||
libsnmp-dev \
|
||||
gawk
|
||||
|
||||
# Packages needed for vyos-strongswan
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libkrb5-dev \
|
||||
libssl-dev \
|
||||
libxml2-dev \
|
||||
systemd \
|
||||
libcurl4-openssl-dev \
|
||||
libgcrypt20-dev \
|
||||
libgmp3-dev \
|
||||
libldap2-dev \
|
||||
libsqlite3-dev \
|
||||
dh-apparmor \
|
||||
gperf \
|
||||
libsystemd-dev \
|
||||
python3-stdeb \
|
||||
python-setuptools
|
||||
|
||||
# Packages needed for vyos-opennhrp
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libc-ares-dev
|
||||
|
||||
# Packages needed for ddclient
|
||||
RUN apt-get update && apt-get install -y \
|
||||
xmlto
|
||||
|
||||
# Packages needed for keepalived
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libnl-3-200 \
|
||||
libnl-3-dev \
|
||||
libnl-nf-3-200 \
|
||||
libnl-nf-3-dev \
|
||||
libipset-dev \
|
||||
libnl-genl-3-200 \
|
||||
libnl-genl-3-dev \
|
||||
libpopt-dev
|
||||
|
||||
# Packages needed for net-snmp
|
||||
RUN apt-get update && apt-get install -y \
|
||||
python-all \
|
||||
python2.7-dev \
|
||||
libmariadb-dev
|
||||
|
||||
# Install packer
|
||||
RUN export LATEST="$(curl -s https://checkpoint-api.hashicorp.com/v1/check/packer | \
|
||||
jq -r -M '.current_version')"; \
|
||||
echo "url https://releases.hashicorp.com/packer/"$LATEST"/packer_"$LATEST"_linux_arm64.zip" |\
|
||||
curl -K- | gzip -d > /usr/bin/packer && \
|
||||
chmod +x /usr/bin/packer
|
||||
|
||||
#
|
||||
# live-build: building in docker fails with mounting /proc | /sys
|
||||
#
|
||||
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=919659
|
||||
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=921815
|
||||
# https://salsa.debian.org/installer-team/debootstrap/merge_requests/26
|
||||
#
|
||||
RUN wget https://salsa.debian.org/klausenbusk-guest/debootstrap/commit/a9a603b17cadbf52cb98cde0843dc9f23a08b0da.patch && \
|
||||
git clone https://salsa.debian.org/installer-team/debootstrap && \
|
||||
cd debootstrap && \
|
||||
git checkout 1.0.114 && \
|
||||
patch -p1 < ../a9a603b17cadbf52cb98cde0843dc9f23a08b0da.patch && \
|
||||
dch -n "Applying fix for docker image compile" && \
|
||||
dpkg-buildpackage -us -uc && \
|
||||
sudo dpkg -i ../debootstrap*.deb
|
||||
|
||||
# Allow password-less 'sudo' for all users in group 'sudo'
|
||||
RUN sed "s/^%sudo.*/%sudo\tALL=(ALL) NOPASSWD:ALL/g" -i /etc/sudoers && \
|
||||
chmod a+s /usr/sbin/useradd /usr/sbin/groupadd /usr/sbin/gosu /usr/sbin/usermod
|
||||
|
||||
# Ensure sure all users have access to our OCAM installation
|
||||
RUN echo "$(opam env --root=/opt/opam --set-root)" >> /etc/skel/.bashrc
|
||||
|
||||
# Cleanup
|
||||
RUN rm -rf /tmp/*
|
||||
|
||||
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
|
||||
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
|
||||
@ -1,314 +0,0 @@
|
||||
# Copyright (C) 2019 VyOS maintainers and contributors
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# in order to easy exprort images built to "external" world
|
||||
# it under the terms of the GNU General Public License version 2 or later as
|
||||
# published by the Free Software Foundation.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# Must be run with --privileged flag, recommended to run the container with a
|
||||
# volume mapped in order to easy export images
|
||||
|
||||
FROM multiarch/debian-debootstrap:armhf-buster-slim
|
||||
LABEL authors="VyOS Maintainers <maintainers@vyos.io>"
|
||||
|
||||
ENV DEBIAN_FRONTEND noninteractive
|
||||
|
||||
# Standard shell should be bash not dash
|
||||
RUN echo "dash dash/sh boolean false" | debconf-set-selections && \
|
||||
dpkg-reconfigure dash
|
||||
|
||||
RUN apt-get update && apt-get install -y \
|
||||
dialog \
|
||||
apt-utils \
|
||||
locales
|
||||
|
||||
RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && locale-gen
|
||||
ENV LANG en_US.utf8
|
||||
|
||||
RUN apt-get update && apt-get install -y \
|
||||
vim \
|
||||
git \
|
||||
curl \
|
||||
make \
|
||||
sudo \
|
||||
mc \
|
||||
pbuilder \
|
||||
devscripts \
|
||||
squashfs-tools \
|
||||
autoconf \
|
||||
automake \
|
||||
dpkg-dev \
|
||||
genisoimage \
|
||||
lsb-release \
|
||||
fakechroot \
|
||||
libtool \
|
||||
libapt-pkg-dev \
|
||||
parted \
|
||||
kpartx \
|
||||
quilt \
|
||||
python3-lxml \
|
||||
python3-setuptools \
|
||||
python3-nose \
|
||||
python3-coverage \
|
||||
python3-sphinx \
|
||||
python3-pystache \
|
||||
python3-git \
|
||||
python3-pip \
|
||||
pkg-config \
|
||||
debhelper \
|
||||
gosu \
|
||||
live-build \
|
||||
jq
|
||||
|
||||
# Package needed for mdns-repeater
|
||||
RUN apt-get update && apt-get install -y \
|
||||
dh-systemd
|
||||
|
||||
#
|
||||
# Building libvyosconf requires a full configured OPAM/OCaml setup
|
||||
#
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libffi-dev \
|
||||
libpcre3-dev
|
||||
|
||||
RUN curl -k https://raw.githubusercontent.com/ocaml/opam/2.0.2/shell/install.sh --output /tmp/opam_install.sh && \
|
||||
sed -i 's/read BINDIR/BINDIR=""/' /tmp/opam_install.sh && sh /tmp/opam_install.sh && \
|
||||
opam init --root=/opt/opam --comp=4.07.0 --disable-sandboxing
|
||||
|
||||
RUN eval $(opam env --root=/opt/opam --set-root) && \
|
||||
opam install -y \
|
||||
oasis
|
||||
|
||||
RUN eval $(opam env --root=/opt/opam --set-root) && opam install -y \
|
||||
fileutils \
|
||||
lwt \
|
||||
lwt_ppx \
|
||||
lwt_log \
|
||||
ocplib-endian \
|
||||
ounit \
|
||||
pcre \
|
||||
ppx_deriving_yojson \
|
||||
sha \
|
||||
toml \
|
||||
xml-light \
|
||||
batteries \
|
||||
ocaml-protoc \
|
||||
ctypes-foreign \
|
||||
menhir
|
||||
|
||||
RUN eval $(opam env --root=/opt/opam --set-root) && opam install -y \
|
||||
ctypes
|
||||
|
||||
# Build VyConf which is required to build libvyosconfig
|
||||
RUN eval $(opam env --root=/opt/opam --set-root) && \
|
||||
opam pin add vyconf https://github.com/vyos/vyconf.git#51d79a3f -y
|
||||
|
||||
# Build libvyosconfig
|
||||
RUN eval $(opam env --root=/opt/opam --set-root) && \
|
||||
git clone https://github.com/vyos/libvyosconfig.git && \
|
||||
cd libvyosconfig && git checkout 9a80a5d3 && \
|
||||
dpkg-buildpackage -uc -us -tc -b && \
|
||||
dpkg -i ../libvyosconfig0_*.deb
|
||||
|
||||
# Packages needed for vyatta-cfg
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libglib2.0-dev \
|
||||
libperl-dev \
|
||||
libboost-filesystem-dev
|
||||
|
||||
# Packages needed for vyatta-iproute
|
||||
RUN apt-get update && apt-get install -y \
|
||||
iptables-dev \
|
||||
libatm1-dev \
|
||||
libcap-dev \
|
||||
libdb-dev \
|
||||
libelf-dev \
|
||||
libselinux1-dev
|
||||
|
||||
# Packages needed for vyatta-webgui
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libexpat1-dev \
|
||||
subversion
|
||||
|
||||
# Packages needed for pmacct
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libpcap-dev \
|
||||
libpq-dev \
|
||||
default-libmysqlclient-dev \
|
||||
libgeoip-dev \
|
||||
librabbitmq-dev \
|
||||
libjansson-dev \
|
||||
librdkafka-dev \
|
||||
libnetfilter-log-dev
|
||||
|
||||
# Pavkages needed for wireguard
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libmnl-dev
|
||||
|
||||
# Packages needed for kernel
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libncurses5-dev \
|
||||
flex \
|
||||
bison \
|
||||
libelf-dev \
|
||||
bc \
|
||||
kmod
|
||||
|
||||
# Packages needed for vyos-accel-ppp
|
||||
RUN apt-get update && apt-get install -y \
|
||||
cdbs \
|
||||
cmake \
|
||||
liblua5.1-dev
|
||||
|
||||
# Prerequisites for building rtrlib
|
||||
# see http://docs.frrouting.org/projects/dev-guide/en/latest/building-frr-for-debian8.html
|
||||
RUN apt-get update && apt-get install -y \
|
||||
graphviz \
|
||||
doxygen \
|
||||
libssh-dev \
|
||||
libssl-dev
|
||||
|
||||
# Build rtrlib release 0.6.3
|
||||
RUN export RTRLIB_VERSION="0.6.3" && \
|
||||
wget -P /tmp https://github.com/rtrlib/rtrlib/archive/v${RTRLIB_VERSION}.tar.gz && \
|
||||
tar xf /tmp/v${RTRLIB_VERSION}.tar.gz -C /tmp && \
|
||||
cd /tmp/rtrlib-${RTRLIB_VERSION} && dpkg-buildpackage -uc -us -tc -b && \
|
||||
dpkg -i ../librtr*.deb
|
||||
|
||||
# Packages needed to build frr itself
|
||||
# https://github.com/FRRouting/frr/blob/master/doc/developer/building-libyang.rst
|
||||
# for more info
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libyang-dev \
|
||||
libyang0.16 \
|
||||
chrpath \
|
||||
install-info \
|
||||
libjson-c-dev \
|
||||
libpython3-dev \
|
||||
python3-dev \
|
||||
python3-pytest \
|
||||
texinfo
|
||||
|
||||
# Packages needed for conntrack-tools
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libnetfilter-conntrack-dev \
|
||||
libnetfilter-cthelper0-dev \
|
||||
libnetfilter-cttimeout-dev \
|
||||
libnetfilter-queue-dev
|
||||
|
||||
# Packages needed for hvinfo
|
||||
RUN apt-get update && apt-get install -y \
|
||||
gnat \
|
||||
gprbuild
|
||||
|
||||
# Packages needed for vyos-1x
|
||||
RUN apt-get update && apt-get install -y \
|
||||
whois
|
||||
|
||||
# Packages needed for vyos-xe-guest-utilities
|
||||
RUN apt-get update && apt-get install -y \
|
||||
golang
|
||||
|
||||
# Packages needed for ipaddrcheck
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libcidr0 \
|
||||
libcidr-dev \
|
||||
check
|
||||
|
||||
# Packages needed for lldpd
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libbsd-dev \
|
||||
libevent-dev
|
||||
|
||||
# Packages needed for vyatta-quagga
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libpam-dev \
|
||||
libcap-dev \
|
||||
libsnmp-dev \
|
||||
gawk
|
||||
|
||||
# Packages needed for vyos-strongswan
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libkrb5-dev \
|
||||
libssl-dev \
|
||||
libxml2-dev \
|
||||
systemd \
|
||||
libcurl4-openssl-dev \
|
||||
libgcrypt20-dev \
|
||||
libgmp3-dev \
|
||||
libldap2-dev \
|
||||
libsqlite3-dev \
|
||||
dh-apparmor \
|
||||
gperf \
|
||||
libsystemd-dev \
|
||||
python3-stdeb \
|
||||
python-setuptools
|
||||
|
||||
# Packages needed for vyos-opennhrp
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libc-ares-dev
|
||||
|
||||
# Packages needed for ddclient
|
||||
RUN apt-get update && apt-get install -y \
|
||||
xmlto
|
||||
|
||||
# Packages needed for keepalived
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libnl-3-200 \
|
||||
libnl-3-dev \
|
||||
libnl-nf-3-200 \
|
||||
libnl-nf-3-dev \
|
||||
libipset-dev \
|
||||
libnl-genl-3-200 \
|
||||
libnl-genl-3-dev \
|
||||
libpopt-dev
|
||||
|
||||
# Packages needed for net-snmp
|
||||
RUN apt-get update && apt-get install -y \
|
||||
python-all \
|
||||
python2.7-dev \
|
||||
libmariadb-dev
|
||||
|
||||
# Install packer
|
||||
RUN export LATEST="$(curl -k -s https://checkpoint-api.hashicorp.com/v1/check/packer | \
|
||||
jq -r -M '.current_version')"; \
|
||||
echo "url https://releases.hashicorp.com/packer/"$LATEST"/packer_"$LATEST"_linux_arm.zip" |\
|
||||
curl -k -K- | gzip -d > /usr/bin/packer && \
|
||||
chmod +x /usr/bin/packer
|
||||
|
||||
#
|
||||
# live-build: building in docker fails with mounting /proc | /sys
|
||||
#
|
||||
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=919659
|
||||
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=921815
|
||||
# https://salsa.debian.org/installer-team/debootstrap/merge_requests/26
|
||||
#
|
||||
RUN wget https://salsa.debian.org/klausenbusk-guest/debootstrap/commit/a9a603b17cadbf52cb98cde0843dc9f23a08b0da.patch && \
|
||||
git clone https://salsa.debian.org/installer-team/debootstrap && \
|
||||
cd debootstrap && \
|
||||
git checkout 1.0.114 && \
|
||||
patch -p1 < ../a9a603b17cadbf52cb98cde0843dc9f23a08b0da.patch && \
|
||||
dch -n "Applying fix for docker image compile" && \
|
||||
dpkg-buildpackage -us -uc && \
|
||||
sudo dpkg -i ../debootstrap*.deb
|
||||
|
||||
# Allow password-less 'sudo' for all users in group 'sudo'
|
||||
RUN sed "s/^%sudo.*/%sudo\tALL=(ALL) NOPASSWD:ALL/g" -i /etc/sudoers && \
|
||||
chmod a+s /usr/sbin/useradd /usr/sbin/groupadd /usr/sbin/gosu /usr/sbin/usermod
|
||||
|
||||
# Ensure sure all users have access to our OCAM installation
|
||||
RUN echo "$(opam env --root=/opt/opam --set-root)" >> /etc/skel/.bashrc
|
||||
|
||||
# Cleanup
|
||||
RUN rm -rf /tmp/*
|
||||
|
||||
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
|
||||
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
|
||||
Loading…
x
Reference in New Issue
Block a user