From 55e8c786fd59dcebeb1199087c3ea922bfab00ff Mon Sep 17 00:00:00 2001 From: wheaney <42350981+wheaney@users.noreply.github.com> Date: Thu, 3 Oct 2024 12:15:40 -0700 Subject: [PATCH] Partially working AppImage build --- ui/bin/package | 21 ++++++++++++++------- ui/docker-build/Dockerfile | 26 +++++++++++++++++++++++--- ui/docker-build/run-build.sh | 4 ++-- ui/src/breezydesktop.in | 12 +++++++++--- ui/src/main.py | 9 --------- 5 files changed, 48 insertions(+), 24 deletions(-) diff --git a/ui/bin/package b/ui/bin/package index d66e731..02df1dc 100755 --- a/ui/bin/package +++ b/ui/bin/package @@ -18,7 +18,7 @@ meson compile popd # mimick the XDG directory structure in our archive file so setup can just copy the directories and not individual files -PACKAGE_DATA_DIR=$PACKAGE_DIR/data +PACKAGE_DATA_DIR=$PACKAGE_DIR/share PACKAGE_BIN_DIR=$PACKAGE_DIR/bin # these are all subdirectories of XDG_DATA_HOME @@ -54,13 +54,20 @@ rsvg-convert data/icons/hicolor/scalable/apps/com.xronlinux.BreezyDesktop.svg -w rsvg-convert data/icons/hicolor/scalable/apps/com.xronlinux.BreezyDesktop.svg -w 256 -h 256 -o $PACKAGE_ICONS_DIR/256x256/apps/com.xronlinux.BreezyDesktop.png rsvg-convert data/icons/hicolor/scalable/apps/com.xronlinux.BreezyDesktop.svg -w 1024 -h 1024 -o $PACKAGE_ICONS_DIR/1024x1024/apps/com.xronlinux.BreezyDesktop.png -pushd $BUILD_PATH +# pushd $BUILD_PATH -tar -zcvf breezyUI-$ARCH.tar.gz breezy_ui +mkdir -p $APPDIR/usr +cp -r $PACKAGE_DATA_DIR $APPDIR/usr +cp -r $PACKAGE_BIN_DIR $APPDIR/usr -popd +"$LINUXDEPLOY_PLUGIN_GTK" --appdir $APPDIR +"$LINUXDEPLOY" --appdir $APPDIR --output appimage --icon-file $APPDIR/usr/share/icons/hicolor/256x256/apps/com.xronlinux.BreezyDesktop.png --desktop-file $APPDIR/usr/share/applications/com.xronlinux.BreezyDesktop.desktop -mkdir -p out -cp $BUILD_PATH/breezyUI-$ARCH.tar.gz out/ +# tar -zcvf breezyUI-$ARCH.tar.gz breezy_ui -rm -rf $BUILD_PATH \ No newline at end of file +# popd + +# mkdir -p out +cp Breezy_Desktop-*.AppImage out/ + +# rm -rf $BUILD_PATH \ No newline at end of file diff --git a/ui/docker-build/Dockerfile b/ui/docker-build/Dockerfile index 8074855..6844c70 100644 --- a/ui/docker-build/Dockerfile +++ b/ui/docker-build/Dockerfile @@ -8,18 +8,38 @@ FROM --platform=$TARGETPLATFORM debian:latest ARG TARGETPLATFORM RUN echo "Target platform: $TARGETPLATFORM" +ENV LINUXDEPLOY=/usr/local/bin/linuxdeploy.AppImage +ENV LINUXDEPLOY_PLUGIN_GTK=/usr/local/bin/linuxdeploy-plugin-gtk.sh +ENV DEPLOY_GTK_VERSION=4 +ENV APPDIR=/AppDir +RUN mkdir $APPDIR + RUN apt-get update && apt-get install -y \ build-essential \ meson \ ninja-build \ librsvg2-bin \ + librsvg2-common \ + librsvg2-dev \ libglib2.0-dev \ - libgtk-4-common \ - libgtk-4-bin \ + libgtk-4-dev \ + libadwaita-1-dev \ + libgirepository1.0-dev \ gtk-update-icon-cache \ desktop-file-utils \ gettext \ - appstream + appstream \ + fuse \ + file + +RUN case ${TARGETPLATFORM} in \ + "linux/amd64") curl -L -o $LINUXDEPLOY "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage" ;; \ + "linux/arm64") curl -L -o $LINUXDEPLOY "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-aarch64.AppImage" ;; \ + *) echo "Unsupported architecture: ${TARGETPLATFORM}" && exit 1 ;; \ + esac && chmod +x $LINUXDEPLOY + +RUN curl -L -o $LINUXDEPLOY_PLUGIN_GTK "https://raw.githubusercontent.com/linuxdeploy/linuxdeploy-plugin-gtk/master/linuxdeploy-plugin-gtk.sh" && \ + chmod +x $LINUXDEPLOY_PLUGIN_GTK WORKDIR /source diff --git a/ui/docker-build/run-build.sh b/ui/docker-build/run-build.sh index da29d78..c1f45c6 100755 --- a/ui/docker-build/run-build.sh +++ b/ui/docker-build/run-build.sh @@ -8,13 +8,13 @@ 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" + docker run --rm -t -v ./:/source --platform linux/amd64 --device /dev/fuse --cap-add SYS_ADMIN --security-opt apparmor:unconfined "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" + docker run --rm -t -v ./:/source --platform linux/arm64 --device /dev/fuse --cap-add SYS_ADMIN --security-opt apparmor:unconfined "breezy-ui:arm64" sudo chown -R $USER:$GROUP out/ fi diff --git a/ui/src/breezydesktop.in b/ui/src/breezydesktop.in index f25bbe3..8f8c3ca 100755 --- a/ui/src/breezydesktop.in +++ b/ui/src/breezydesktop.in @@ -26,14 +26,20 @@ import locale import gettext VERSION = '@VERSION@' -pkgdatadir = '@pkgdatadir@' -localedir = '@localedir@' + +appdir = os.getenv('APPDIR', '/') +pkgdatadir = os.path.join(appdir, 'usr', 'share', 'breezydesktop') +localedir = os.path.join(appdir, 'usr', 'share', 'locale') sys.path.insert(1, pkgdatadir) signal.signal(signal.SIGINT, signal.SIG_DFL) -locale.bindtextdomain('breezydesktop', localedir) + +locale.setlocale(locale.LC_ALL, locale.getdefaultlocale()) locale.textdomain('breezydesktop') +locale.bindtextdomain('breezydesktop', localedir) gettext.install('breezydesktop', localedir) +gettext.bindtextdomain('breezydesktop', localedir) +gettext.textdomain('breezydesktop') if __name__ == '__main__': import gi diff --git a/ui/src/main.py b/ui/src/main.py index 74213cf..c5baced 100644 --- a/ui/src/main.py +++ b/ui/src/main.py @@ -36,15 +36,6 @@ gi.require_version('Adw', '1') gi.require_version('Gio', '2.0') gi.require_version('GLib', '2.0') -user_home = os.path.expanduser('~') -xdg_data_home = os.environ.get('XDG_DATA_HOME') or os.path.join(user_home, '.local', 'share') -locale_dir = os.environ.get('LOCALE_DIR', os.path.join(xdg_data_home, 'locale')) - -locale.setlocale(locale.LC_ALL, locale.getdefaultlocale()) -locale.bindtextdomain('breezydesktop', locale_dir) -gettext.bindtextdomain('breezydesktop', locale_dir) -gettext.textdomain('breezydesktop') - from gi.repository import Adw, Gtk, Gio from .licensedialog import LicenseDialog from .statemanager import StateManager