Skip to content

Commit

Permalink
Docker image to build openvpn for armel
Browse files Browse the repository at this point in the history
Signed-off-by: keliramu <[email protected]>
  • Loading branch information
keliramu committed Sep 20, 2024
1 parent 7ab8d6c commit c7dcfd2
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 2 deletions.
9 changes: 8 additions & 1 deletion ci/docker/builder/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ RUN dpkg --add-architecture i386 && \
DEBIAN_FRONTEND=noninteractive apt-get -y --no-install-recommends install \
pkg-config \
dpkg-dev \
libcap-ng-dev \
make \
gcc \
gcc-arm-linux-gnueabi \
Expand All @@ -22,6 +21,14 @@ RUN dpkg --add-architecture i386 && \
libxml2-dev:i386 \
libxml2-dev:arm64 \
libxml2-dev:armhf \
libnl-genl-3-200 \
libnl-genl-3-dev \
libnl-genl-3-200:i386 \
libnl-genl-3-dev:i386 \
libnl-genl-3-200:arm64 \
libnl-genl-3-dev:arm64 \
libnl-genl-3-200:armhf \
libnl-genl-3-dev:armhf \
# libxml2-dev:armel \
# Install libc6-dev-armel-cross instead of libxml2-dev:armel to provide libc6-dev for armel
libc6-dev-armel-cross \
Expand Down
36 changes: 36 additions & 0 deletions ci/docker/openvpn/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# builder-openvpn-armel
# note: debian has armel support which we need to build openvpn 2.6.12+
# note: debian:11 satisfies current libc version requirements
FROM debian:11

LABEL org.opencontainers.image.source=https://github.com/NordSecurity/nordvpn-linux

RUN mkdir -p /.cache && chmod -R 777 /.cache

RUN dpkg --add-architecture armel&& \
apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get -y --no-install-recommends upgrade && \
DEBIAN_FRONTEND=noninteractive apt-get -y --no-install-recommends install \
iptables \
iproute2 \
wget \
curl \
ca-certificates \
git \
unzip \
pkg-config \
dpkg-dev \
make \
gcc \
gcc-arm-linux-gnueabi \
libc6-dev-armel-cross \
libcap-ng-dev:armel \
libcap-ng0:armel \
libnl-genl-3-200 \
libnl-genl-3-200:armel \
libnl-genl-3-dev \
libnl-genl-3-dev:armel \
libssl-dev:armel \
procps && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
2 changes: 1 addition & 1 deletion ci/openvpn/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ configure_openvpn() {
LZO_CFLAGS="-I${current_dir}/lzo/include" \
LIBS="-L${current_dir}/openssl/lib -L${current_dir}/lzo/lib -lssl -lcrypto -llzo2" \
--prefix="${current_dir}/openvpn" --host="${target}" \
--enable-static=yes --enable-iproute2 --disable-lz4 --disable-shared --disable-debug --disable-plugins
--enable-static=yes --disable-lz4 --disable-shared --disable-debug --disable-plugins
}

declare -A cross_compiler_map=(
Expand Down
22 changes: 22 additions & 0 deletions ci/openvpn/check_dependencies.sh
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,25 @@ pushd "${openvpn_patches_dir}"
wget -nv -nc "${tunnelblick_url}/openvpn/openvpn-${OPENVPN_VERSION}/patches/06-tunnelblick-openvpn_xorpatch-e.diff"
[[ "$(sha256sum <<< "$(cat ./*diff)" | awk $'{print $1}')" == "${tunnelblick_sha256sum}" ]] || exit 1
popd


# Need to install package libcap-ng-dev for current arch,
# cannot have this package installed for all archs - each
# install of this package replaces previous one.
# This workaround became needed for openvpn 2.6.12.

ARCH=$([ "${ARCH}" == "aarch64" ] && echo arm64 || echo "${ARCH}")

echo "Check what version of libncap-ng is present:"
find /usr -name 'libcap-ng*'
apt list --installed | grep -i libcap-ng

echo "Install libcap-ng for ARCH: ${ARCH}"

#apt-get remove -y libcap-ng-dev
apt-get update
apt-get install -y libcap-ng-dev:"${ARCH}" libcap-ng0:"${ARCH}"

echo "Check what version of libncap-ng is present after all:"
find /usr -name 'libcap-ng*'
apt list --installed | grep -i libcap-ng

0 comments on commit c7dcfd2

Please sign in to comment.