From 120356f8207eafff84a299f453e22db5db132db6 Mon Sep 17 00:00:00 2001 From: Frederik Carlier Date: Thu, 28 Mar 2019 14:43:22 +0100 Subject: [PATCH 1/6] Support cross-building for Ubuntu 18.04 arm64 (bionic) --- CMakeLists.arm64.txt | 6 ++++++ Dockerfile.ubuntu.18.04-arm64 | 17 +++++++++++++++++ build.libgit2.sh | 5 +++++ 3 files changed, 28 insertions(+) create mode 100644 CMakeLists.arm64.txt create mode 100644 Dockerfile.ubuntu.18.04-arm64 diff --git a/CMakeLists.arm64.txt b/CMakeLists.arm64.txt new file mode 100644 index 00000000..304ef973 --- /dev/null +++ b/CMakeLists.arm64.txt @@ -0,0 +1,6 @@ +SET(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_PROCESSOR aarch64) +set(TARGET_ABI "linux-gnu") + +SET(CMAKE_C_COMPILER ${CMAKE_SYSTEM_PROCESSOR}-${TARGET_ABI}-gcc) +SET(CMAKE_CXX_COMPILER ${CMAKE_SYSTEM_PROCESSOR}-${TARGET_ABI}-g++) diff --git a/Dockerfile.ubuntu.18.04-arm64 b/Dockerfile.ubuntu.18.04-arm64 new file mode 100644 index 00000000..aeee8cb6 --- /dev/null +++ b/Dockerfile.ubuntu.18.04-arm64 @@ -0,0 +1,17 @@ +FROM ubuntu:18.04 + +WORKDIR /nativebinaries +COPY . /nativebinaries/ + +RUN dpkg --add-architecture arm64 \ +&& sed -i 's/deb/deb [arch=amd64]/g' /etc/apt/sources.list \ +&& echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports bionic main universe" > /etc/apt/sources.list.d/arm64.list \ +&& echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports bionic-updates main universe" > /etc/apt/sources.list.d/arm64-updates.list + +RUN apt update \ +&& apt -y install cmake pkg-config \ + crossbuild-essential-arm64 \ + pkg-config-aarch64-linux-gnu \ + libssl-dev:arm64 + +CMD ["/bin/bash", "-c", "./build.libgit2.sh"] diff --git a/build.libgit2.sh b/build.libgit2.sh index 861eeb3c..85f4c65c 100755 --- a/build.libgit2.sh +++ b/build.libgit2.sh @@ -9,6 +9,10 @@ pushd libgit2/build export _BINPATH=`pwd` +if [[ $RID == *arm64 ]]; then + export TOOLCHAIN_FILE=/nativebinaries/CMakeLists.arm64.txt +fi + cmake -DCMAKE_BUILD_TYPE:STRING=Release \ -DBUILD_CLAR:BOOL=OFF \ -DUSE_SSH=OFF \ @@ -16,6 +20,7 @@ cmake -DCMAKE_BUILD_TYPE:STRING=Release \ -DLIBGIT2_FILENAME=git2-$SHORTSHA \ -DCMAKE_OSX_ARCHITECTURES="i386;x86_64" \ -DUSE_BUNDLED_ZLIB=ON \ + -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_FILE} \ .. cmake --build . From 1b55c6b54ff529d5815955ad25a11d8e3ef66367 Mon Sep 17 00:00:00 2001 From: Frederik Carlier Date: Thu, 28 Mar 2019 14:48:23 +0100 Subject: [PATCH 2/6] Add linux-arm64 --- Dockerfile.linux-arm64 | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 Dockerfile.linux-arm64 diff --git a/Dockerfile.linux-arm64 b/Dockerfile.linux-arm64 new file mode 100644 index 00000000..df50b6b0 --- /dev/null +++ b/Dockerfile.linux-arm64 @@ -0,0 +1,16 @@ +FROM ubuntu:14.04 +WORKDIR /nativebinaries +COPY . /nativebinaries/ + +RUN dpkg --add-architecture arm64 \ +&& sed -i 's/deb/deb [arch=amd64]/g' /etc/apt/sources.list \ +&& echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports trusty main universe" > /etc/apt/sources.list.d/arm64.list \ +&& echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports trusty-updates main universe" > /etc/apt/sources.list.d/arm64-updates.list + +RUN apt update \ +&& apt -y install cmake pkg-config \ + crossbuild-essential-arm64 \ + pkg-config-aarch64-linux-gnu \ + libssl-dev:arm64 + +CMD ["/bin/bash", "-c", "./build.libgit2.sh"] From 6829f60239385728354bcd187e9d3633aa762d86 Mon Sep 17 00:00:00 2001 From: Frederik Carlier Date: Thu, 28 Mar 2019 14:48:59 +0100 Subject: [PATCH 3/6] Update CI script --- .travis.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.travis.yml b/.travis.yml index 600520c3..7ee6753c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -35,6 +35,14 @@ matrix: env: RID=alpine.3.9-x64 - os: osx env: RID=osx + - os: linux + dist: trusty + sudo: required + env: RID=linux-arm64 + - os: linux + dist: trusty + sudo: required + env: RID=ubuntu.18.04-arm64 branches: only: From 8afe08d165a5b734edd84f94fdcd13222268eccd Mon Sep 17 00:00:00 2001 From: Frederik Carlier Date: Thu, 28 Mar 2019 14:56:53 +0100 Subject: [PATCH 4/6] Add Debian 9 - arm64 --- .travis.yml | 4 ++++ Dockerfile.debian.9-arm64 | 12 ++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 Dockerfile.debian.9-arm64 diff --git a/.travis.yml b/.travis.yml index 7ee6753c..ca06e877 100644 --- a/.travis.yml +++ b/.travis.yml @@ -43,6 +43,10 @@ matrix: dist: trusty sudo: required env: RID=ubuntu.18.04-arm64 + - os: linux + dist: trusty + sudo: required + env: RID=debian.9-arm64 branches: only: diff --git a/Dockerfile.debian.9-arm64 b/Dockerfile.debian.9-arm64 new file mode 100644 index 00000000..32c8ab1a --- /dev/null +++ b/Dockerfile.debian.9-arm64 @@ -0,0 +1,12 @@ +FROM debian:9 +WORKDIR /nativebinaries +COPY . /nativebinaries/ + +RUN dpkg --add-architecture arm64 + +RUN apt update \ +&& apt -y install cmake pkg-config \ + crossbuild-essential-arm64 \ + libssl-dev:arm64 + +CMD ["/bin/bash", "-c", "./build.libgit2.sh"] From 6d460b20eb80196aee59bcfc4875f31d76357466 Mon Sep 17 00:00:00 2001 From: Frederik Carlier Date: Wed, 3 Apr 2019 19:34:16 +0200 Subject: [PATCH 5/6] Add Ubuntu 16.04, 18.10 Dockerfiles --- Dockerfile.ubuntu.16.04-arm64 | 17 +++++++++++++++++ Dockerfile.ubuntu.18.10-arm64 | 17 +++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 Dockerfile.ubuntu.16.04-arm64 create mode 100644 Dockerfile.ubuntu.18.10-arm64 diff --git a/Dockerfile.ubuntu.16.04-arm64 b/Dockerfile.ubuntu.16.04-arm64 new file mode 100644 index 00000000..c9c21af6 --- /dev/null +++ b/Dockerfile.ubuntu.16.04-arm64 @@ -0,0 +1,17 @@ +FROM ubuntu:16.04 + +WORKDIR /nativebinaries +COPY . /nativebinaries/ + +RUN dpkg --add-architecture arm64 \ +&& sed -i 's/deb/deb [arch=amd64]/g' /etc/apt/sources.list \ +&& echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports xenial main universe" > /etc/apt/sources.list.d/arm64.list \ +&& echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports xenial-updates main universe" > /etc/apt/sources.list.d/arm64-updates.list + +RUN apt update \ +&& apt -y install cmake pkg-config \ + crossbuild-essential-arm64 \ + pkg-config-aarch64-linux-gnu \ + libssl-dev:arm64 + +CMD ["/bin/bash", "-c", "./build.libgit2.sh"] diff --git a/Dockerfile.ubuntu.18.10-arm64 b/Dockerfile.ubuntu.18.10-arm64 new file mode 100644 index 00000000..0b1384bb --- /dev/null +++ b/Dockerfile.ubuntu.18.10-arm64 @@ -0,0 +1,17 @@ +FROM ubuntu:18.10 + +WORKDIR /nativebinaries +COPY . /nativebinaries/ + +RUN dpkg --add-architecture arm64 \ +&& sed -i 's/deb/deb [arch=amd64]/g' /etc/apt/sources.list \ +&& echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports cosmic main universe" > /etc/apt/sources.list.d/arm64.list \ +&& echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports cosmic-updates main universe" > /etc/apt/sources.list.d/arm64-updates.list + +RUN apt update \ +&& apt -y install cmake pkg-config \ + crossbuild-essential-arm64 \ + pkg-config-aarch64-linux-gnu \ + libssl-dev:arm64 + +CMD ["/bin/bash", "-c", "./build.libgit2.sh"] From 5ee4e121f2941ee22caf36c48243ed4eb2b1719f Mon Sep 17 00:00:00 2001 From: Frederik Carlier Date: Tue, 23 Apr 2019 18:08:46 +0200 Subject: [PATCH 6/6] Reduce dependency graph --- .travis.yml | 8 ++------ ...le.debian.9-arm64 => Dockerfile.debian-arm64 | 0 Dockerfile.linux-arm64 | 16 ---------------- Dockerfile.ubuntu.18.04-arm64 | 17 ----------------- Dockerfile.ubuntu.18.10-arm64 | 17 ----------------- 5 files changed, 2 insertions(+), 56 deletions(-) rename Dockerfile.debian.9-arm64 => Dockerfile.debian-arm64 (100%) delete mode 100644 Dockerfile.linux-arm64 delete mode 100644 Dockerfile.ubuntu.18.04-arm64 delete mode 100644 Dockerfile.ubuntu.18.10-arm64 diff --git a/.travis.yml b/.travis.yml index ca06e877..359cc59a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -38,15 +38,11 @@ matrix: - os: linux dist: trusty sudo: required - env: RID=linux-arm64 + env: RID=ubuntu.16.04-arm64 - os: linux dist: trusty sudo: required - env: RID=ubuntu.18.04-arm64 - - os: linux - dist: trusty - sudo: required - env: RID=debian.9-arm64 + env: RID=debian-arm64 branches: only: diff --git a/Dockerfile.debian.9-arm64 b/Dockerfile.debian-arm64 similarity index 100% rename from Dockerfile.debian.9-arm64 rename to Dockerfile.debian-arm64 diff --git a/Dockerfile.linux-arm64 b/Dockerfile.linux-arm64 deleted file mode 100644 index df50b6b0..00000000 --- a/Dockerfile.linux-arm64 +++ /dev/null @@ -1,16 +0,0 @@ -FROM ubuntu:14.04 -WORKDIR /nativebinaries -COPY . /nativebinaries/ - -RUN dpkg --add-architecture arm64 \ -&& sed -i 's/deb/deb [arch=amd64]/g' /etc/apt/sources.list \ -&& echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports trusty main universe" > /etc/apt/sources.list.d/arm64.list \ -&& echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports trusty-updates main universe" > /etc/apt/sources.list.d/arm64-updates.list - -RUN apt update \ -&& apt -y install cmake pkg-config \ - crossbuild-essential-arm64 \ - pkg-config-aarch64-linux-gnu \ - libssl-dev:arm64 - -CMD ["/bin/bash", "-c", "./build.libgit2.sh"] diff --git a/Dockerfile.ubuntu.18.04-arm64 b/Dockerfile.ubuntu.18.04-arm64 deleted file mode 100644 index aeee8cb6..00000000 --- a/Dockerfile.ubuntu.18.04-arm64 +++ /dev/null @@ -1,17 +0,0 @@ -FROM ubuntu:18.04 - -WORKDIR /nativebinaries -COPY . /nativebinaries/ - -RUN dpkg --add-architecture arm64 \ -&& sed -i 's/deb/deb [arch=amd64]/g' /etc/apt/sources.list \ -&& echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports bionic main universe" > /etc/apt/sources.list.d/arm64.list \ -&& echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports bionic-updates main universe" > /etc/apt/sources.list.d/arm64-updates.list - -RUN apt update \ -&& apt -y install cmake pkg-config \ - crossbuild-essential-arm64 \ - pkg-config-aarch64-linux-gnu \ - libssl-dev:arm64 - -CMD ["/bin/bash", "-c", "./build.libgit2.sh"] diff --git a/Dockerfile.ubuntu.18.10-arm64 b/Dockerfile.ubuntu.18.10-arm64 deleted file mode 100644 index 0b1384bb..00000000 --- a/Dockerfile.ubuntu.18.10-arm64 +++ /dev/null @@ -1,17 +0,0 @@ -FROM ubuntu:18.10 - -WORKDIR /nativebinaries -COPY . /nativebinaries/ - -RUN dpkg --add-architecture arm64 \ -&& sed -i 's/deb/deb [arch=amd64]/g' /etc/apt/sources.list \ -&& echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports cosmic main universe" > /etc/apt/sources.list.d/arm64.list \ -&& echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports cosmic-updates main universe" > /etc/apt/sources.list.d/arm64-updates.list - -RUN apt update \ -&& apt -y install cmake pkg-config \ - crossbuild-essential-arm64 \ - pkg-config-aarch64-linux-gnu \ - libssl-dev:arm64 - -CMD ["/bin/bash", "-c", "./build.libgit2.sh"]