mirror of https://github.com/opencardev/aasdk
added dockerbuild temp
parent
2d48d7cb45
commit
d25b363b0e
|
@ -0,0 +1,37 @@
|
|||
name: Build and test with docker
|
||||
|
||||
on: [ push, pull_request ]
|
||||
|
||||
jobs:
|
||||
build-image:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Build the Docker image
|
||||
run: docker build -t aasdk_builder --file Dockerfile .
|
||||
compile:
|
||||
runs-on: ${{ matrix.host }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
max-parallel: 3
|
||||
matrix:
|
||||
host: [
|
||||
"ubuntu-latest",
|
||||
#"macos-10.15",
|
||||
]
|
||||
config:
|
||||
- {
|
||||
name: "armhf Release",
|
||||
arch: "armhf",
|
||||
type: "release"
|
||||
}
|
||||
- {
|
||||
name: "amd64 Release",
|
||||
arch: "amd64",
|
||||
type: "release"
|
||||
}
|
||||
name: 'Upload release: ${{ matrix.config.name }}'
|
||||
steps:
|
||||
-
|
||||
name: 'Build ${{ matrix.config.arch }} Debian package'
|
||||
run: docker run -v "${PWD}/release":/${{ matrix.config.type }} aasdk_builder:latest ${{ matrix.config.arch }}
|
|
@ -1,8 +1,20 @@
|
|||
cmake_minimum_required(VERSION 3.5.1)
|
||||
|
||||
if( TARGET_ARCH STREQUAL "amd64" )
|
||||
message("Building for amd64")
|
||||
elseif( TARGET_ARCH STREQUAL "armhf" )
|
||||
message("Building for armhf")
|
||||
set(CMAKE_C_COMPILER /usr/bin/arm-linux-gnueabihf-gcc-8)
|
||||
set(CMAKE_CXX_COMPILER /usr/bin/arm-linux-gnueabihf-g++-8)
|
||||
else()
|
||||
message("Unknown target architecture. Exiting")
|
||||
return()
|
||||
endif()
|
||||
|
||||
set (aasdk_VERSION_MAJOR 2)
|
||||
set (aasdk_VERSION_MINOR 1)
|
||||
set (aasdk_VERSION_PATCH 0)
|
||||
|
||||
project(aasdk
|
||||
VERSION ${aasdk_VERSION_MAJOR}.${aasdk_VERSION_MINOR}.${aasdk_VERSION_PATCH}
|
||||
LANGUAGES CXX)
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
FROM debian:buster AS aasdk
|
||||
|
||||
RUN dpkg --add-architecture armhf
|
||||
RUN apt-get update
|
||||
RUN apt-get -y install cmake build-essential git
|
||||
RUN apt-get -y install gcc-arm-linux-gnueabihf cpp-arm-linux-gnueabihf g++-arm-linux-gnueabihf protobuf-compiler
|
||||
RUN apt-get -y install gcc-8-base:armhf libc6:armhf libgcc1:armhf libicu63:armhf libidn2-0:armhf libstdc++6:armhf libunistring2:armhf
|
||||
|
||||
# These are all the libboost requirements. It would be shorter if libboost-log-dev wasn't a disaster that's being dealt with manually.
|
||||
RUN apt-get install -y libprotobuf-dev libusb-1.0.0-dev libssl-dev libboost-dev libboost-system-dev libboost-atomic1.67.0 libboost-chrono1.67.0 libboost-date-time1.67.0 libboost-filesystem1.67.0 libboost-regex1.67.0 libboost-thread1.67.0 libboost-filesystem1.67-dev libboost-thread1.67-dev libboost-date-time1.67-dev
|
||||
RUN apt-get install -y libprotobuf-dev:armhf libusb-1.0.0-dev:armhf libssl-dev:armhf libboost-dev:armhf libboost-system-dev:armhf libboost-atomic1.67.0:armhf libboost-chrono1.67.0:armhf libboost-date-time1.67.0:armhf libboost-filesystem1.67.0:armhf libboost-regex1.67.0:armhf libboost-system1.67.0:armhf libboost-thread1.67.0:armhf libboost-filesystem1.67-dev:armhf libboost-thread1.67-dev:armhf libboost-date-time1.67-dev:armhf
|
||||
|
||||
COPY ../ /src
|
||||
|
||||
WORKDIR /src
|
||||
|
||||
# Import resources
|
||||
COPY ./patch-libboost-log-deb.sh /src/resources
|
||||
COPY ./entrypoint.sh /entrypoint.sh
|
||||
|
||||
# Patch libboost-log-dev and install
|
||||
RUN chmod +x ./resources/patch-libboost-log-deb.sh
|
||||
RUN ./resources/patch-libboost-log-deb.sh
|
||||
|
||||
# Make Executable
|
||||
RUN chmod +x /entrypoint.sh
|
||||
|
||||
ENTRYPOINT ["/bin/bash", "/entrypoint.sh"]
|
|
@ -0,0 +1,28 @@
|
|||
#!/bin/bash
|
||||
ARCH=$1
|
||||
MAJORVER=0
|
||||
|
||||
if [ -z "$ARCH" ]
|
||||
then
|
||||
echo "Please supply a target architecture to build"
|
||||
echo "Choose from 'amd64', 'armhf'"
|
||||
exit
|
||||
else
|
||||
if [ "$ARCH" != "amd64" ] && [ "$ARCH" != "armhf" ]
|
||||
then
|
||||
echo "Invalid architecture requested"
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Now building within docker for $ARCH"
|
||||
|
||||
# Clear out the /build directory
|
||||
mkdir build;
|
||||
cd build;
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DTARGET_ARCH=$ARCH ../
|
||||
make -j4
|
||||
cpack --config CPackConfig.cmake
|
||||
|
||||
# Move it to release
|
||||
mv *.deb /release/
|
|
@ -0,0 +1,46 @@
|
|||
# All this because of a packaging bug in libboost-log-dev
|
||||
# 'Multi-Arch: same' is not present in the control file of Debian packages, all the way up to Sid
|
||||
# Rather than recompiling the parent libbost suite, download the 6 packages, extract, edit, and repackage.
|
||||
|
||||
# https://bugs.debian.org/cgi-bin/pkgreport.cgi?package=libboost-log-dev
|
||||
|
||||
apt-get -y install --download-only libboost-log-dev:amd64 libboost-log1.67.0:amd64 libboost-log1.67-dev:amd64
|
||||
apt-get -y install --download-only libboost-log-dev:armhf libboost-log1.67.0:armhf libboost-log1.67-dev:armhf
|
||||
|
||||
mkdir -p /tmp/armhf/libboost-log-dev/
|
||||
dpkg-deb -x /var/cache/apt/archives/libboost-log-dev_1.67.0.1_armhf.deb /tmp/armhf/libboost-log-dev/
|
||||
dpkg-deb -e /var/cache/apt/archives/libboost-log-dev_1.67.0.1_armhf.deb /tmp/armhf/libboost-log-dev/DEBIAN/
|
||||
sed -i '/^Priority: optional/a Multi-Arch: same' /tmp/armhf/libboost-log-dev/DEBIAN/control
|
||||
dpkg-deb -b /tmp/armhf/libboost-log-dev/ /tmp/libboost-log-dev_1.67.0.1_armhf.deb
|
||||
|
||||
mkdir -p /tmp/amd64/libboost-log-dev/
|
||||
dpkg-deb -x /var/cache/apt/archives/libboost-log-dev_1.67.0.1_amd64.deb /tmp/amd64/libboost-log-dev/
|
||||
dpkg-deb -e /var/cache/apt/archives/libboost-log-dev_1.67.0.1_amd64.deb /tmp/amd64/libboost-log-dev/DEBIAN/
|
||||
sed -i '/^Priority: optional/a Multi-Arch: same' /tmp/amd64/libboost-log-dev/DEBIAN/control
|
||||
dpkg-deb -b /tmp/amd64/libboost-log-dev/ /tmp/libboost-log-dev_1.67.0.1_amd64.deb
|
||||
|
||||
mkdir -p /tmp/armhf/libboost-log1.67-dev/
|
||||
dpkg-deb -x /var/cache/apt/archives/libboost-log1.67-dev_1.67.0-13+deb10u1_armhf.deb /tmp/armhf/libboost-log1.67-dev/
|
||||
dpkg-deb -e /var/cache/apt/archives/libboost-log1.67-dev_1.67.0-13+deb10u1_armhf.deb /tmp/armhf/libboost-log1.67-dev/DEBIAN/
|
||||
sed -i '/^Priority: optional/a Multi-Arch: same' /tmp/armhf/libboost-log1.67-dev/DEBIAN/control
|
||||
dpkg-deb -b /tmp/armhf/libboost-log1.67-dev/ /tmp/libboost-log1.67-dev_1.67.0-13+deb10u1_armhf.deb
|
||||
|
||||
mkdir -p /tmp/amd64/libboost-log1.67-dev/
|
||||
dpkg-deb -x /var/cache/apt/archives/libboost-log1.67-dev_1.67.0-13+deb10u1_amd64.deb /tmp/amd64/libboost-log1.67-dev/
|
||||
dpkg-deb -e /var/cache/apt/archives/libboost-log1.67-dev_1.67.0-13+deb10u1_amd64.deb /tmp/amd64/libboost-log1.67-dev/DEBIAN/
|
||||
sed -i '/^Priority: optional/a Multi-Arch: same' /tmp/amd64/libboost-log1.67-dev/DEBIAN/control
|
||||
dpkg-deb -b /tmp/amd64/libboost-log1.67-dev/ /tmp/libboost-log1.67-dev_1.67.0-13+deb10u1_amd64.deb
|
||||
|
||||
mkdir -p /tmp/armhf/libboost-log1.67.0/
|
||||
dpkg-deb -x /var/cache/apt/archives/libboost-log1.67.0_1.67.0-13+deb10u1_armhf.deb /tmp/armhf/libboost-log1.67.0/
|
||||
dpkg-deb -e /var/cache/apt/archives/libboost-log1.67.0_1.67.0-13+deb10u1_armhf.deb /tmp/armhf/libboost-log1.67.0/DEBIAN/
|
||||
sed -i '/^Priority: optional/a Multi-Arch: same' /tmp/armhf/libboost-log1.67.0/DEBIAN/control
|
||||
dpkg-deb -b /tmp/armhf/libboost-log1.67.0/ /tmp/libboost-log1.67.0_1.67.0-13+deb10u1_armhf.deb
|
||||
|
||||
mkdir -p /tmp/amd64/libboost-log1.67.0/
|
||||
dpkg-deb -x /var/cache/apt/archives/libboost-log1.67.0_1.67.0-13+deb10u1_amd64.deb /tmp/amd64/libboost-log1.67.0/
|
||||
dpkg-deb -e /var/cache/apt/archives/libboost-log1.67.0_1.67.0-13+deb10u1_amd64.deb /tmp/amd64/libboost-log1.67.0/DEBIAN/
|
||||
sed -i '/^Priority: optional/a Multi-Arch: same' /tmp/amd64/libboost-log1.67.0/DEBIAN/control
|
||||
dpkg-deb -b /tmp/amd64/libboost-log1.67.0/ /tmp/libboost-log1.67.0_1.67.0-13+deb10u1_amd64.deb
|
||||
|
||||
dpkg -i /tmp/libboost*.deb
|
Loading…
Reference in New Issue