Add docker build

This commit is contained in:
wheaney 2025-08-21 13:02:40 -07:00
parent e4dbcdaee7
commit 471523fb31
5 changed files with 110 additions and 1 deletions

22
kwin/bin/package Executable file
View File

@ -0,0 +1,22 @@
#!/usr/bin/env bash
# exit when any command fails
set -e
ARCH=${ARCH:-$(uname -m)}
echo "Building Breezy KWin plugin for $ARCH"
BUILD_PATH=build
mkdir $BUILD_PATH
pushd $BUILD_PATH
cmake ..
make
cpack -G TGZ
popd
mkdir -p out
cp $BUILD_PATH/breezy_desktop_kwin_plugin.tar.gz out/breezyKWin-$ARCH.tar.gz
# build artifacts are needed for IDE header awareness with generated code
# rm -rf $BUILD_PATH

View File

@ -0,0 +1,43 @@
# To run the build from the package root:
# docker buildx build --platform linux/amd64,linux/arm64 -f ./docker-build/Dockerfile -t "breezy-kwin" .
# docker run --rm -t -v ./:/source -v --platform linux/amd64 "breezy-kwin:amd64"
# docker run --rm -t -v ./:/source -v --platform linux/arm64 "breezy-kwin:arm64"
FROM --platform=$TARGETPLATFORM debian:trixie
ARG TARGETPLATFORM
RUN echo "Target platform: $TARGETPLATFORM"
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
build-essential \
cmake \
pkg-config \
git \
curl \
wget \
extra-cmake-modules \
qt6-base-dev \
qt6-base-dev-tools \
qt6-declarative-dev \
qt6-tools-dev \
qt6-tools-dev-tools \
libkf6config-dev \
libkf6configwidgets-dev \
libkf6coreaddons-dev \
libkf6globalaccel-dev \
libkf6i18n-dev \
libkf6kcmutils-dev \
libkf6xmlgui-dev \
libkf6windowsystem-dev \
kwayland-dev \
plasma-wayland-protocols \
libwayland-dev \
kwin-dev \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /source
CMD bin/package

22
kwin/docker-build/init.sh Executable file
View File

@ -0,0 +1,22 @@
#!/bin/bash
# might be needed on a fresh docker setup:
# install qemu and qemu-user-static packages
# sudo docker context rm default
# docker run --privileged --rm tonistiigi/binfmt --install all
# sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
# ls -l /proc/sys/fs/binfmt_misc/ # should contain qemu-<arch> files
if [[ "$1" == "--init" || ! $(docker buildx inspect breezykwinbuilder &>/dev/null; echo $?) -eq 0 ]]; then
# start fresh
echo "Creating new docker builder instance"
docker buildx rm breezykwinbuilder 2>/dev/null || true
docker buildx create --use --name breezykwinbuilder --driver docker-container --driver-opt image=moby/buildkit:latest
else
echo "Using existing docker builder instance"
docker buildx use breezykwinbuilder
fi
echo "Building docker image"
docker buildx build --platform linux/amd64 -f ./docker-build/Dockerfile -t "breezy-kwin:amd64" --load .
docker buildx build --platform linux/arm64 -f ./docker-build/Dockerfile -t "breezy-kwin:arm64" --load .

22
kwin/docker-build/run-build.sh Executable file
View File

@ -0,0 +1,22 @@
#!/bin/bash
set -e
USER=${SUDO_USER:-$USER}
GROUP=$(id -gn $USER)
# Run containers for each architecture
if [[ "$1" == "x86_64" || -z "$1" ]]; then
sudo rm -rf build/
docker run --rm -t -v ./:/source --platform linux/amd64 "breezy-kwin:amd64"
sudo chown -R $USER:$GROUP out/
fi
if [[ "$1" == "aarch64" || -z "$1" ]]; then
sudo rm -rf build/
docker run --rm -t -v ./:/source --platform linux/arm64 "breezy-kwin:arm64"
sudo chown -R $USER:$GROUP out/
fi
# build directory structure is all owned by root because of docker, delete it all now
sudo rm -rf build/

View File

@ -12,6 +12,7 @@
#include <functional>
#include <QAction>
#include <QBuffer>
#include <QFile>
#include <QFileSystemWatcher>
#include <QLoggingCategory>
@ -20,7 +21,6 @@
#include <KGlobalAccel>
#include <KLocalizedString>
#include <qt/QtCore/qbuffer.h>
Q_LOGGING_CATEGORY(KWIN_XR, "kwin.xr")