From 7524745b185af3690d83e197bb827e936cd56024 Mon Sep 17 00:00:00 2001 From: Nathan Coad Date: Sat, 31 Jan 2026 17:12:49 +1100 Subject: [PATCH] try arm builds --- .drone.yml | 53 ++++++++++++++++++++++++++++++++++++++++---- Dockerfile.builddeps | 17 ++++++++++++++ sbin/build_deb.sh | 35 +++++++++++++++++++++++++---- 3 files changed, 97 insertions(+), 8 deletions(-) create mode 100644 Dockerfile.builddeps diff --git a/.drone.yml b/.drone.yml index 56830cc..6fb9a85 100644 --- a/.drone.yml +++ b/.drone.yml @@ -3,20 +3,65 @@ type: docker name: build steps: -- name: build-deb - image: cache.coadcorp.com/library/ubuntu:22.04 +- name: build-deb-amd64 + image: cache.coadcorp.com/library/buildpack-deps:jammy environment: DEBIAN_FRONTEND: noninteractive commands: - apt-get update - apt-get install -y --no-install-recommends build-essential qt5-qmake qtbase5-dev qtbase5-dev-tools libexif-dev qt5-image-formats-plugins libmosquitto-dev dpkg-dev fakeroot ca-certificates - - bash sbin/build_deb.sh "${DRONE_TAG:-${DRONE_COMMIT_SHA:0:8}}" + - ARCH=amd64 BUILD_DIR=build-amd64 bash sbin/build_deb.sh "${DRONE_TAG:-${DRONE_COMMIT_SHA:0:8}}" - ls -la dist +- name: build-deb-armhf + image: cache.coadcorp.com/library/buildpack-deps:jammy + environment: + DEBIAN_FRONTEND: noninteractive + ARM_CFLAGS: -march=armv6 -mfpu=vfp -mfloat-abi=hard + commands: + - dpkg --add-architecture armhf + - apt-get update + - apt-get install -y --no-install-recommends build-essential qt5-qmake qtbase5-dev qtbase5-dev-tools libexif-dev qt5-image-formats-plugins libmosquitto-dev dpkg-dev fakeroot ca-certificates gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf qtbase5-dev:armhf libqt5core5a:armhf libqt5gui5:armhf libqt5widgets5:armhf libqt5network5:armhf libexif-dev:armhf libmosquitto-dev:armhf qt5-image-formats-plugins:armhf + - ARCH=armhf BUILD_DIR=build-armhf QMAKESPEC=linux-arm-gnueabihf-g++ QMAKE_CC=arm-linux-gnueabihf-gcc QMAKE_CXX=arm-linux-gnueabihf-g++ QMAKE_LINK=arm-linux-gnueabihf-g++ QMAKE_CFLAGS="$ARM_CFLAGS" QMAKE_CXXFLAGS="$ARM_CFLAGS" bash sbin/build_deb.sh "${DRONE_TAG:-${DRONE_COMMIT_SHA:0:8}}" + - ls -la dist + +- name: build-deb-arm64 + image: cache.coadcorp.com/library/buildpack-deps:jammy + environment: + DEBIAN_FRONTEND: noninteractive + ARM64_CFLAGS: -march=armv8-a + commands: + - dpkg --add-architecture arm64 + - apt-get update + - apt-get install -y --no-install-recommends build-essential qt5-qmake qtbase5-dev qtbase5-dev-tools libexif-dev qt5-image-formats-plugins libmosquitto-dev dpkg-dev fakeroot ca-certificates gcc-aarch64-linux-gnu g++-aarch64-linux-gnu qtbase5-dev:arm64 libqt5core5a:arm64 libqt5gui5:arm64 libqt5widgets5:arm64 libqt5network5:arm64 libexif-dev:arm64 libmosquitto-dev:arm64 qt5-image-formats-plugins:arm64 + - ARCH=arm64 BUILD_DIR=build-arm64 QMAKESPEC=linux-aarch64-gnu-g++ QMAKE_CC=aarch64-linux-gnu-gcc QMAKE_CXX=aarch64-linux-gnu-g++ QMAKE_LINK=aarch64-linux-gnu-g++ QMAKE_CFLAGS="$ARM64_CFLAGS" QMAKE_CXXFLAGS="$ARM64_CFLAGS" bash sbin/build_deb.sh "${DRONE_TAG:-${DRONE_COMMIT_SHA:0:8}}" + - ls -la dist + +- name: build-deps-image + image: cache.coadcorp.com/plugins/docker + settings: + registry: registry.coadcorp.com + repo: slide/build-deps + dockerfile: Dockerfile.builddeps + username: + from_secret: REGISTRY_USER + password: + from_secret: REGISTRY_PASS + tags: + - latest + - ${DRONE_COMMIT_SHA} + when: + event: + - promote + target: + - build-deps + - name: gitea-release image: cache.coadcorp.com/plugins/gitea-release depends_on: - - build-deb + - build-deb-amd64 + - build-deb-armhf + - build-deb-arm64 settings: api_key: from_secret: GITEA_TOKEN diff --git a/Dockerfile.builddeps b/Dockerfile.builddeps new file mode 100644 index 0000000..3e4aba4 --- /dev/null +++ b/Dockerfile.builddeps @@ -0,0 +1,17 @@ +FROM cache.coadcorp.com/library/ubuntu:22.04 + +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + build-essential \ + qt5-qmake \ + qtbase5-dev \ + qtbase5-dev-tools \ + libexif-dev \ + qt5-image-formats-plugins \ + libmosquitto-dev \ + dpkg-dev \ + fakeroot \ + ca-certificates \ + && rm -rf /var/lib/apt/lists/* diff --git a/sbin/build_deb.sh b/sbin/build_deb.sh index 75735a3..243cc65 100644 --- a/sbin/build_deb.sh +++ b/sbin/build_deb.sh @@ -10,14 +10,41 @@ if [[ ! "$VERSION" =~ ^[0-9] ]]; then VERSION="0.0.0+${VERSION}" fi ARCH="${ARCH:-$(dpkg --print-architecture)}" - -PACKAGE_NAME="slide" -BUILD_DIR="$ROOT_DIR/build" +BUILD_DIR="${BUILD_DIR:-$ROOT_DIR/build-$ARCH}" DIST_DIR="$ROOT_DIR/dist" STAGE_DIR="$BUILD_DIR/deb" +QMAKE_BIN="${QMAKE_BIN:-qmake}" +MAKE_JOBS="${MAKE_JOBS:-2}" + +QMAKE_ARGS=() +if [[ -n "${QMAKESPEC:-}" ]]; then + QMAKE_ARGS+=("-spec" "$QMAKESPEC") +fi +if [[ -n "${QMAKE_CC:-}" ]]; then + QMAKE_ARGS+=("QMAKE_CC=$QMAKE_CC") +fi +if [[ -n "${QMAKE_CXX:-}" ]]; then + QMAKE_ARGS+=("QMAKE_CXX=$QMAKE_CXX") +fi +if [[ -n "${QMAKE_LINK:-}" ]]; then + QMAKE_ARGS+=("QMAKE_LINK=$QMAKE_LINK") +fi +if [[ -n "${QMAKE_CFLAGS:-}" ]]; then + QMAKE_ARGS+=("QMAKE_CFLAGS=$QMAKE_CFLAGS") +fi +if [[ -n "${QMAKE_CXXFLAGS:-}" ]]; then + QMAKE_ARGS+=("QMAKE_CXXFLAGS=$QMAKE_CXXFLAGS") +fi +if [[ -n "${QMAKE_LFLAGS:-}" ]]; then + QMAKE_ARGS+=("QMAKE_LFLAGS=$QMAKE_LFLAGS") +fi + +PACKAGE_NAME="slide" cd "$ROOT_DIR" -make build +mkdir -p "$BUILD_DIR" +"$QMAKE_BIN" "${QMAKE_ARGS[@]}" "$ROOT_DIR/src/slide.pro" -o "$BUILD_DIR/Makefile" +make -C "$BUILD_DIR" -j"$MAKE_JOBS" rm -rf "$STAGE_DIR" mkdir -p "$STAGE_DIR/DEBIAN" "$STAGE_DIR/usr/local/bin" "$DIST_DIR"