mirror of
https://git.rwth-aachen.de/acs/public/villas/node/
synced 2025-03-09 00:00:00 +01:00
ci: add support for armhf and aarch64 cross-builds
This commit is contained in:
parent
5e3d5a49a0
commit
7a8b2b902d
3 changed files with 71 additions and 37 deletions
|
@ -31,7 +31,7 @@ before_script:
|
|||
prepare:fedora:docker-dev:
|
||||
stage: prepare
|
||||
script:
|
||||
- docker build
|
||||
- docker build ${DOCKER_OPTS}
|
||||
--file ${DOCKER_FILE}
|
||||
--tag ${DOCKER_IMAGE_DEV}:${DOCKER_TAG} .
|
||||
tags:
|
||||
|
@ -44,18 +44,25 @@ prepare:raspbian:docker-dev:
|
|||
DOCKER_FILE: packaging/docker/Dockerfile.dev-raspbian
|
||||
DOCKER_IMAGE_DEV: villas/node-dev-raspbian
|
||||
|
||||
prepare:debian-armhf:docker-dev:
|
||||
extends: prepare:fedora:docker-dev
|
||||
variables:
|
||||
DOCKER_FILE: packaging/docker/Dockerfile.dev-debian-armhf
|
||||
DOCKER_IMAGE_DEV: villas/node-dev-debian-armhf
|
||||
|
||||
prepare:ubuntu:docker-dev:
|
||||
extends: prepare:fedora:docker-dev
|
||||
variables:
|
||||
DOCKER_FILE: packaging/docker/Dockerfile.dev-ubuntu
|
||||
DOCKER_IMAGE_DEV: villas/node-dev-ubuntu
|
||||
|
||||
prepare:debian-armhf:docker-dev:
|
||||
extends: prepare:fedora:docker-dev
|
||||
variables:
|
||||
DOCKER_FILE: packaging/docker/Dockerfile.dev-debian-multiarch
|
||||
DOCKER_IMAGE_DEV: villas/node-dev-debian-armhf
|
||||
DOCKER_OPTS: --build-arg ARCH=armhf --build-arg TRIPLET=arm-linux-gnueabihf
|
||||
|
||||
prepare:debian-arm64:docker-dev:
|
||||
extends: prepare:fedora:docker-dev
|
||||
variables:
|
||||
DOCKER_FILE: packaging/docker/Dockerfile.dev-debian-multiarch
|
||||
DOCKER_IMAGE_DEV: villas/node-dev-debian-arm64
|
||||
DOCKER_OPTS: --build-arg ARCH=arm64 --build-arg TRIPLET=aarch64-linux-gnu
|
||||
|
||||
# Stage: build
|
||||
##############################################################################
|
||||
|
@ -90,11 +97,16 @@ build:raspbian:armv6l:
|
|||
DOCKER_IMAGE_DEV: villas/node-dev-raspbian
|
||||
CMAKE_OPTS: -DWITH_NODE_INFINIBAND=OFF
|
||||
|
||||
build:debian-cross:armv7l:
|
||||
build:debian-multiarch:armhf:
|
||||
extends: build:fedora:x86_64
|
||||
variables:
|
||||
DOCKER_IMAGE_DEV: villas/node-dev-debian-armhf
|
||||
|
||||
build:debian-multiarch:arm64:
|
||||
extends: build:fedora:x86_64
|
||||
variables:
|
||||
DOCKER_IMAGE_DEV: villas/node-dev-debian-arm64
|
||||
|
||||
build:docs:
|
||||
stage: build
|
||||
artifacts:
|
||||
|
|
15
cmake/toolchains/debian-arm64.cmake
Normal file
15
cmake/toolchains/debian-arm64.cmake
Normal file
|
@ -0,0 +1,15 @@
|
|||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR aarch64)
|
||||
|
||||
set(TRIPLET "aarch64-linux-gnu")
|
||||
|
||||
# specify the cross compiler
|
||||
SET(CMAKE_C_COMPILER "/usr/bin/${TRIPLET}-gcc")
|
||||
SET(CMAKE_CXX_COMPILER "/usr/bin/${TRIPLET}-g++")
|
||||
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "Buildroot CFLAGS")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "Buildroot CXXFLAGS")
|
||||
set(CMAKE_EXE_LINKER_FLAGS " ${CMAKE_EXE_LINKER_FLAGS}" CACHE STRING "Buildroot LDFLAGS")
|
||||
|
||||
set(CMAKE_LIBRARY_PATH "/usr/lib/${TRIPLET}")
|
||||
|
|
@ -36,56 +36,54 @@ ARG GIT_BRANCH=unknown
|
|||
ARG VERSION=unknown
|
||||
ARG VARIANT=unknown
|
||||
|
||||
ARG ARCH=armhf
|
||||
ARG TRIPLET=arm-linux-gnueabihf
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
# Enable armhf architecture
|
||||
RUN dpkg --add-architecture armhf
|
||||
# Enable ${ARCH} architecture
|
||||
RUN dpkg --add-architecture ${ARCH}
|
||||
|
||||
# Toolchain
|
||||
RUN apt-get update && apt-get install -y \
|
||||
crossbuild-essential-armhf \
|
||||
crossbuild-essential-${ARCH} \
|
||||
pkg-config cmake make ninja-build \
|
||||
texinfo git curl tar \
|
||||
protobuf-compiler protobuf-c-compiler
|
||||
|
||||
# Dependencies
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libssl-dev:armhf \
|
||||
libprotobuf-dev:armhf \
|
||||
libprotobuf-c-dev:armhf \
|
||||
uuid-dev:armhf \
|
||||
libconfig-dev:armhf \
|
||||
libnl-3-dev libnl-route-3-dev:armhf \
|
||||
libcurl4-openssl-dev:armhf \
|
||||
libjansson-dev:armhf \
|
||||
libzmq3-dev:armhf \
|
||||
libnanomsg-dev:armhf \
|
||||
librabbitmq-dev:armhf \
|
||||
libmosquitto-dev:armhf \
|
||||
libcomedi-dev:armhf \
|
||||
libibverbs-dev:armhf \
|
||||
librdmacm-dev:armhf \
|
||||
libre-dev:armhf
|
||||
libssl-dev:${ARCH} \
|
||||
libprotobuf-dev:${ARCH} \
|
||||
libprotobuf-c-dev:${ARCH} \
|
||||
uuid-dev:${ARCH} \
|
||||
libconfig-dev:${ARCH} \
|
||||
libnl-3-dev libnl-route-3-dev:${ARCH} \
|
||||
libcurl4-openssl-dev:${ARCH} \
|
||||
libjansson-dev:${ARCH} \
|
||||
libzmq3-dev:${ARCH} \
|
||||
libnanomsg-dev:${ARCH} \
|
||||
librabbitmq-dev:${ARCH} \
|
||||
libmosquitto-dev:${ARCH} \
|
||||
libcomedi-dev:${ARCH} \
|
||||
libibverbs-dev:${ARCH} \
|
||||
librdmacm-dev:${ARCH} \
|
||||
libre-dev:${ARCH} \
|
||||
libusb-1.0-0-dev:${ARCH}
|
||||
|
||||
ADD cmake/toolchains/debian-armhf.cmake /
|
||||
ADD cmake/toolchains/debian-${ARCH}.cmake /
|
||||
|
||||
ENV TRIPLET=arm-linux-gnueabihf
|
||||
ENV PKG_CONFIG_PATH=/usr/lib/${TRIPLET}/pkgconfig:/usr/local/lib/pkgconfig:/usr/share/pkgconfig
|
||||
ENV PKG_CONFIG_LIBDIR=/usr/lib/${TRIPLET}/pkgconfig:/usr/share/pkgconfig
|
||||
|
||||
ENV CMAKE_OPTS="-DCMAKE_TOOLCHAIN_FILE=/debian-armhf.cmake \
|
||||
-DCMAKE_INSTALL_LIBDIR=/usr/lib/${TRIPLET} \
|
||||
-DOPENSSL_INCLUDE_DIR=/usr/include/${TRIPLET}/ \
|
||||
-DOPENSSL_CRYPTO_LIBRARY=/usr/lib/${TRIPLET}/libcrypto.so \
|
||||
-DOPENSSL_SSL_LIBRARY=/usr/lib/${TRIPLET}/libssl.so \
|
||||
-DCURL_INCLUDE_DIR=/usr/include/${TRIPLET}/ \
|
||||
-DCURL_LIBRARY=/usr/lib/${TRIPLET}/libcurl.so"
|
||||
ENV CMAKE_OPTS="-DCMAKE_TOOLCHAIN_FILE=/debian-${ARCH}.cmake \
|
||||
-DCMAKE_INSTALL_LIBDIR=/usr/lib/${TRIPLET}"
|
||||
|
||||
# Build & Install libwebsockets
|
||||
RUN cd /tmp && \
|
||||
git clone -b v3.1-stable https://github.com/warmcat/libwebsockets && \
|
||||
mkdir -p libwebsockets/build && cd libwebsockets/build && \
|
||||
cmake ${CMAKE_OPTS} -DLWS_INSTALL_LIB_DIR=lib/${TRIPLET} .. && make -j$(nproc) install && \
|
||||
cmake ${CMAKE_OPTS} -DLWS_INSTALL_LIB_DIR=/usr/lib/${TRIPLET} .. && make -j$(nproc) install && \
|
||||
rm -rf /tmp/*
|
||||
|
||||
# Build & Install libiec61850
|
||||
|
@ -95,6 +93,15 @@ RUN cd /tmp && \
|
|||
cmake ${CMAKE_OPTS} .. && make -j$(nproc) install && \
|
||||
rm -rf /tmp/*
|
||||
|
||||
# Build & Install uldaq
|
||||
RUN apt-get -y install automake autoconf libtool
|
||||
RUN cd /tmp && \
|
||||
git clone -b rpm https://github.com/stv0g/uldaq && \
|
||||
mkdir -p uldaq/build && cd uldaq && \
|
||||
autoreconf -i && cd build && \
|
||||
../configure --host=${TRIPLET} && make -j$(nproc) install && \
|
||||
rm -rf /tmp/*
|
||||
|
||||
WORKDIR /villas
|
||||
ENTRYPOINT bash
|
||||
|
Loading…
Add table
Reference in a new issue