Add docker build

This commit is contained in:
wheaney 2024-07-16 12:49:06 -07:00
parent 7369cb0551
commit 3818ac3a33
5 changed files with 74 additions and 4 deletions

View File

@ -3,6 +3,9 @@
# exit when any command fails
set -e
ARCH=$(uname -m)
echo "Building for $ARCH"
# https://stackoverflow.com/a/246128
SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)
ROOT_DIR=$(realpath $SCRIPT_DIR/..)
@ -32,7 +35,7 @@ fi
mkdir -p $PACKAGE_DIR/bin
copy_and_inject_ua "$XREAL_DRIVER_DIR/bin/ua.sh" "$PACKAGE_DIR/bin" "$GNOME_DIR/bin/setup" "$GNOME_DIR/bin/breezy_gnome_verify" "$GNOME_DIR/bin/breezy_gnome_uninstall"
XREAL_BINARY=$XREAL_DRIVER_DIR/build/xrealAirLinuxDriver.tar.gz
XREAL_BINARY=$XREAL_DRIVER_DIR/build/xrealAirLinuxDriver-$ARCH.tar.gz
pushd $XREAL_DRIVER_DIR
if [ ! -e "$XREAL_BINARY" ] || [ "$1" != "--skip-module-builds" ]; then
@ -50,7 +53,7 @@ fi
XREAL_MANIFEST_LINE=$(sha256sum build/driver_air_glasses/manifest)
popd
cp $XREAL_BINARY $PACKAGE_DIR
cp $XREAL_BINARY $PACKAGE_DIR/xrealAirLinuxDriver.tar.gz
cp $XREAL_DRIVER_DIR/bin/xreal_driver_setup $PACKAGE_DIR/bin
gnome/bin/package_extension
@ -73,5 +76,5 @@ popd
# bundle everything up
pushd $GNOME_BUILD_DIR
tar -zcvf breezyGNOME.tar.gz breezy_gnome
tar -zcvf breezyGNOME-$ARCH.tar.gz breezy_gnome
popd

32
docker-build/Dockerfile Normal file
View File

@ -0,0 +1,32 @@
# To run the build from the package root:
# docker buildx build --platform linux/amd64 -f ./docker-build/Dockerfile -t "breezy-desktop:amd64" --load .
# docker buildx build --platform linux/arm64 -f ./docker-build/Dockerfile -t "breezy-desktop:arm64" --load .
# docker buildx build --platform linux/arm/v7 -f ./docker-build/Dockerfile -t "breezy-desktop:armv7" --load .
# docker run --rm -t -v ./:/source -v ./out/amd64:/out --platform linux/amd64 "breezy-desktop:amd64"
# docker run --rm -t -v ./:/source -v ./out/arm64:/out --platform linux/arm64 "breezy-desktop:arm64"
# docker run --rm -t -v ./:/source -v ./out/arm64:/out --platform linux/arm64 "breezy-desktop:armv7"
FROM --platform=$TARGETPLATFORM debian:latest
ARG TARGETPLATFORM
RUN echo "Target platform: $TARGETPLATFORM"
RUN apt-get update && apt-get install -y \
build-essential \
cmake \
pkg-config \
libudev-dev \
libusb-1.0-0-dev \
libcurl4-openssl-dev \
libevdev-dev \
libssl-dev \
libjson-c-dev \
python3 \
python3-yaml \
flatpak \
flatpak-builder
VOLUME /out
WORKDIR /source
CMD bin/package_gnome && cp build/*.tar.gz /out/

16
docker-build/init.sh Normal file
View File

@ -0,0 +1,16 @@
#!/bin/bash
if [[ "$1" == "--init" || ! $(docker buildx inspect breezydesktopbuilder &>/dev/null; echo $?) -eq 0 ]]; then
# start fresh
echo "Creating new docker builder instance"
docker buildx rm breezydesktopbuilder 2>/dev/null || true
docker buildx create --name breezydesktopbuilder --use
else
echo "Using existing docker builder instance"
docker buildx use breezydesktopbuilder
fi
echo "Building docker image"
docker buildx build --platform linux/amd64 -f ./docker-build/Dockerfile -t "breezy-desktop:amd64" --load .
docker buildx build --platform linux/arm64 -f ./docker-build/Dockerfile -t "breezy-desktop:arm64" --load .
docker buildx build --platform linux/arm/v7 -f ./docker-build/Dockerfile -t "breezy-desktop:armv7" --load .

19
docker-build/run-build.sh Executable file
View File

@ -0,0 +1,19 @@
#!/bin/bash
set -e
# Create output directories
mkdir -p out/x86_64 out/aarch64 out/armv7
# Run containers for each architecture
sudo rm -rf build/
docker run --rm -t -v ./:/source -v ./out/x86_64:/out --platform linux/amd64 "breezy-desktop:amd64"
sudo rm -rf build/
docker run --rm -t -v ./:/source -v ./out/aarch64:/out --platform linux/arm64 "breezy-desktop:arm64"
sudo rm -rf build/
docker run --rm -t -v ./:/source -v ./out/armv7:/out --platform linux/arm/v7 "breezy-desktop:armv7"
# build directory structure is all owned by root because of docker, delete it all now
sudo rm -rf build/

@ -1 +1 @@
Subproject commit b97faa82a7767e4270e46886d68dd1c70b71abca
Subproject commit 68e1c44d890cc317241dae25abba6cde8093e22a