WIP
This commit is contained in:
parent
ecbd855c1c
commit
6a01d7de38
|
|
@ -6,30 +6,43 @@ set -e
|
||||||
ARCH=${ARCH:-$(uname -m)}
|
ARCH=${ARCH:-$(uname -m)}
|
||||||
echo "Building Breezy UI for $ARCH"
|
echo "Building Breezy UI for $ARCH"
|
||||||
|
|
||||||
check_command() {
|
BUILD_PATH=build
|
||||||
if ! command -v "$1" &>/dev/null; then
|
UI_BUILD_PATH=$BUILD_PATH/ui
|
||||||
echo "Please install \"$1\" and make sure it's available in your \$PATH"
|
PACKAGE_DIR=$BUILD_PATH/breezy_ui
|
||||||
exit 1
|
mkdir -p $UI_BUILD_PATH
|
||||||
fi
|
mkdir -p $PACKAGE_DIR
|
||||||
}
|
|
||||||
|
|
||||||
check_command "flatpak"
|
meson setup $UI_BUILD_PATH
|
||||||
check_command "flatpak-builder"
|
pushd $UI_BUILD_PATH
|
||||||
|
meson compile
|
||||||
|
popd
|
||||||
|
|
||||||
# https://stackoverflow.com/a/246128
|
PACKAGE_SRC_DIR=$PACKAGE_DIR/src
|
||||||
SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)
|
PACKAGE_BIN_DIR=$PACKAGE_DIR/bin
|
||||||
|
PACKAGE_ICONS_DIR=$PACKAGE_DIR/icons
|
||||||
|
mkdir -p $PACKAGE_SRC_DIR
|
||||||
|
mkdir -p $PACKAGE_BIN_DIR
|
||||||
|
mkdir -p $PACKAGE_ICONS_DIR
|
||||||
|
|
||||||
TMP_DIR=$(mktemp -d --tmpdir=$SCRIPT_DIR/.. -t .breezy-ui-flatpak-XXXXXXXXXX)
|
cp src/*.py $PACKAGE_SRC_DIR
|
||||||
OUT_DIR=$SCRIPT_DIR/../out
|
cp -r po $BUILD_PATH
|
||||||
mkdir -p $OUT_DIR
|
cp modules/PyXRLinuxDriverIPC/xrdriveripc.py $PACKAGE_SRC_DIR
|
||||||
|
cp $UI_BUILD_PATH/src/breezydesktop $PACKAGE_BIN_DIR
|
||||||
|
cp $UI_BUILD_PATH/src/breezydesktop.gresource $PACKAGE_DIR
|
||||||
|
cp $UI_BUILD_PATH/data/com.xronlinux.BreezyDesktop.desktop $PACKAGE_DIR
|
||||||
|
|
||||||
BUILD_ARTIFACT=$OUT_DIR/com.xronlinux.BreezyDesktop-$ARCH.flatpak
|
rsvg-convert data/icons/hicolor/scalable/apps/com.xronlinux.BreezyDesktop.svg -w 64 -h 64 -o $PACKAGE_ICONS_DIR/com.xronlinux.BreezyDesktop_64.png
|
||||||
if [ -e "$BUILD_ARTIFACT" ]; then
|
rsvg-convert data/icons/hicolor/scalable/apps/com.xronlinux.BreezyDesktop.svg -w 128 -h 128 -o $PACKAGE_ICONS_DIR/com.xronlinux.BreezyDesktop_128.png
|
||||||
rm $BUILD_ARTIFACT
|
rsvg-convert data/icons/hicolor/scalable/apps/com.xronlinux.BreezyDesktop.svg -w 256 -h 256 -o $PACKAGE_ICONS_DIR/com.xronlinux.BreezyDesktop_256.png
|
||||||
fi
|
rsvg-convert data/icons/hicolor/scalable/apps/com.xronlinux.BreezyDesktop.svg -w 1024 -h 1024 -o $PACKAGE_ICONS_DIR/com.xronlinux.BreezyDesktop_1024.png
|
||||||
|
|
||||||
flatpak-builder --arch $ARCH --disable-rofiles-fuse --disable-cache --force-clean --delete-build-dirs --user $TMP_DIR/build $SCRIPT_DIR/../com.xronlinux.BreezyDesktop.json
|
pushd $BUILD_PATH
|
||||||
flatpak build-export --arch $ARCH $TMP_DIR/export $TMP_DIR/build
|
|
||||||
flatpak build-bundle --arch $ARCH $TMP_DIR/export $BUILD_ARTIFACT com.xronlinux.BreezyDesktop --runtime-repo=https://flathub.org/repo/flathub.flatpakrepo
|
|
||||||
|
|
||||||
rm -rf "$TMP_DIR"
|
tar -zcvf breezyUI-$ARCH.tar.gz breezy_ui
|
||||||
|
|
||||||
|
popd
|
||||||
|
|
||||||
|
mkdir -p out
|
||||||
|
cp $BUILD_PATH/breezyUI-$ARCH.tar.gz out/
|
||||||
|
|
||||||
|
rm -rf $BUILD_PATH
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
diff --git a/engine/dconf-engine-source-user.c b/engine/dconf-engine-source-user.c
|
|
||||||
index 1657875..e4f8786 100644
|
|
||||||
--- a/engine/dconf-engine-source-user.c
|
|
||||||
+++ b/engine/dconf-engine-source-user.c
|
|
||||||
@@ -39,11 +39,17 @@ dconf_engine_source_user_open_gvdb (const gchar *name)
|
|
||||||
{
|
|
||||||
GvdbTable *table;
|
|
||||||
gchar *filename;
|
|
||||||
+ const gchar *override;
|
|
||||||
+
|
|
||||||
+ override = g_getenv ("DCONF_USER_CONFIG_DIR");
|
|
||||||
+ if (override == NULL)
|
|
||||||
+ filename = g_build_filename (g_get_user_config_dir (), "dconf", name, NULL);
|
|
||||||
+ else
|
|
||||||
+ filename = g_build_filename (g_get_home_dir (), override, name, NULL);
|
|
||||||
|
|
||||||
/* This can fail in the normal case of the user not having any
|
|
||||||
* settings. That's OK and it shouldn't be considered as an error.
|
|
||||||
*/
|
|
||||||
- filename = g_build_filename (g_get_user_config_dir (), "dconf", name, NULL);
|
|
||||||
table = gvdb_table_new (filename, FALSE, NULL);
|
|
||||||
g_free (filename);
|
|
||||||
|
|
||||||
|
|
@ -1,69 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# stolen from dconf-editor:
|
|
||||||
# https://gitlab.gnome.org/GNOME/dconf-editor/-/blob/master/build-aux/start-dconf-editor.sh
|
|
||||||
|
|
||||||
IFS=: read -ra host_data_dirs < <(flatpak-spawn --host sh -c 'echo "$XDG_DATA_DIRS"')
|
|
||||||
IFS=: read -ra HOST_XDG_STATE_HOME < <(flatpak-spawn --host sh -c 'echo "$XDG_STATE_HOME"')
|
|
||||||
IFS=: read -ra HOST_XDG_CONFIG_HOME < <(flatpak-spawn --host sh -c 'echo "$XDG_CONFIG_HOME"')
|
|
||||||
IFS=: read -ra HOST_XDG_BIN_HOME < <(flatpak-spawn --host sh -c 'echo "$XDG_BIN_HOME"')
|
|
||||||
IFS=: read -ra HOST_XDG_DATA_HOME < <(flatpak-spawn --host sh -c 'echo "$XDG_DATA_HOME"')
|
|
||||||
|
|
||||||
# To avoid potentially muddying up $XDG_DATA_DIRS too much, we link the schema paths
|
|
||||||
# into a temporary directory.
|
|
||||||
bridge_dir=$XDG_RUNTIME_DIR/dconf-bridge
|
|
||||||
mkdir -p "$bridge_dir"
|
|
||||||
|
|
||||||
HOST_XDG_DATA_DIRS=""
|
|
||||||
|
|
||||||
for dir in "${host_data_dirs[@]}"; do
|
|
||||||
if [[ "$dir" == /usr/* ]]; then
|
|
||||||
dir=/run/host/"$dir"
|
|
||||||
fi
|
|
||||||
|
|
||||||
schemas="$dir/glib-2.0/schemas"
|
|
||||||
if [[ -d "$schemas" ]]; then
|
|
||||||
bridged=$(mktemp -d XXXXXXXXXX -p "$bridge_dir")
|
|
||||||
mkdir -p "$bridged"/glib-2.0
|
|
||||||
ln -s "$schemas" "$bridged"/glib-2.0
|
|
||||||
HOST_XDG_DATA_DIRS="${HOST_XDG_DATA_DIRS}:${bridged}"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# We MUST prepend the host's data dirs BEFORE the Flatpak environment's own dirs,
|
|
||||||
# otherwise data (such as default values) load in the wrong order and would then
|
|
||||||
# incorrectly prefer the Flatpak's internal defaults instead of the host's defaults!
|
|
||||||
if [[ ! -z "${HOST_XDG_DATA_DIRS}" ]]; then
|
|
||||||
XDG_DATA_DIRS="${HOST_XDG_DATA_DIRS:1}:${XDG_DATA_DIRS}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ ! -z "${HOST_XDG_BIN_HOME}" ]]; then
|
|
||||||
XDG_BIN_HOME="${HOST_XDG_BIN_HOME}"
|
|
||||||
else
|
|
||||||
XDG_BIN_HOME="$(realpath ~)/.local/bin"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ ! -z "${HOST_XDG_STATE_HOME}" ]]; then
|
|
||||||
XDG_STATE_HOME="${HOST_XDG_STATE_HOME}"
|
|
||||||
else
|
|
||||||
XDG_STATE_HOME="$(realpath ~)/.local/state"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ ! -z "${HOST_XDG_CONFIG_HOME}" ]]; then
|
|
||||||
XDG_CONFIG_HOME="${HOST_XDG_CONFIG_HOME}"
|
|
||||||
else
|
|
||||||
XDG_CONFIG_HOME="$(realpath ~)/.config"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ ! -z "${HOST_XDG_DATA_HOME}" ]]; then
|
|
||||||
XDG_DATA_HOME="${HOST_XDG_DATA_HOME}"
|
|
||||||
else
|
|
||||||
XDG_DATA_HOME="$(realpath ~)/.local/share"
|
|
||||||
fi
|
|
||||||
|
|
||||||
export XDG_DATA_DIRS
|
|
||||||
export XDG_BIN_HOME
|
|
||||||
export XDG_STATE_HOME
|
|
||||||
export XDG_CONFIG_HOME
|
|
||||||
export XDG_DATA_HOME
|
|
||||||
exec breezydesktop "$@"
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Name=Breezy Desktop
|
Name=Breezy Desktop
|
||||||
Exec=start-breezy-desktop
|
Exec=env LOCALE_DIR=/usr/local/share/breezydesktop/breezydesktop/po breezydesktop
|
||||||
Icon=com.xronlinux.BreezyDesktop
|
Icon=com.xronlinux.BreezyDesktop
|
||||||
Terminal=false
|
Terminal=false
|
||||||
Type=Application
|
Type=Application
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
# To run the build from the package root:
|
||||||
|
# docker buildx build --platform linux/amd64,linux/arm64 -f ./docker-build/Dockerfile -t "breezy-ui" .
|
||||||
|
# docker run --rm -t -v ./:/source -v --platform linux/amd64 "breezy-ui:amd64"
|
||||||
|
# docker run --rm -t -v ./:/source -v --platform linux/arm64 "breezy-ui:arm64"
|
||||||
|
|
||||||
|
FROM --platform=$TARGETPLATFORM debian:latest
|
||||||
|
|
||||||
|
ARG TARGETPLATFORM
|
||||||
|
RUN echo "Target platform: $TARGETPLATFORM"
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y \
|
||||||
|
build-essential \
|
||||||
|
meson \
|
||||||
|
ninja-build \
|
||||||
|
librsvg2-bin \
|
||||||
|
libglib2.0-dev \
|
||||||
|
libgtk-4-common \
|
||||||
|
libgtk-4-bin \
|
||||||
|
gtk-update-icon-cache \
|
||||||
|
desktop-file-utils \
|
||||||
|
gettext \
|
||||||
|
appstream
|
||||||
|
|
||||||
|
WORKDIR /source
|
||||||
|
|
||||||
|
CMD bin/package
|
||||||
|
|
@ -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 breezyuibuilder &>/dev/null; echo $?) -eq 0 ]]; then
|
||||||
|
# start fresh
|
||||||
|
echo "Creating new docker builder instance"
|
||||||
|
docker buildx rm breezyuibuilder 2>/dev/null || true
|
||||||
|
docker buildx create --use --name breezyuibuilder --driver docker-container --driver-opt image=moby/buildkit:latest
|
||||||
|
else
|
||||||
|
echo "Using existing docker builder instance"
|
||||||
|
docker buildx use breezyuibuilder
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Building docker image"
|
||||||
|
docker buildx build --platform linux/amd64 -f ./docker-build/Dockerfile -t "breezy-ui:amd64" --load .
|
||||||
|
docker buildx build --platform linux/arm64 -f ./docker-build/Dockerfile -t "breezy-ui:arm64" --load .
|
||||||
|
|
@ -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-ui: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-ui: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/
|
||||||
|
|
@ -7,8 +7,6 @@ project('breezydesktop',
|
||||||
i18n = import('i18n')
|
i18n = import('i18n')
|
||||||
gnome = import('gnome')
|
gnome = import('gnome')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
subdir('data')
|
subdir('data')
|
||||||
subdir('src')
|
subdir('src')
|
||||||
subdir('po')
|
subdir('po')
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue