Partially working AppImage build

This commit is contained in:
wheaney 2024-10-03 12:15:40 -07:00
parent cfdbc82b40
commit 55e8c786fd
5 changed files with 48 additions and 24 deletions

View File

@ -18,7 +18,7 @@ meson compile
popd popd
# mimick the XDG directory structure in our archive file so setup can just copy the directories and not individual files # 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 PACKAGE_BIN_DIR=$PACKAGE_DIR/bin
# these are all subdirectories of XDG_DATA_HOME # 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 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 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 # tar -zcvf breezyUI-$ARCH.tar.gz breezy_ui
cp $BUILD_PATH/breezyUI-$ARCH.tar.gz out/
rm -rf $BUILD_PATH # popd
# mkdir -p out
cp Breezy_Desktop-*.AppImage out/
# rm -rf $BUILD_PATH

View File

@ -8,18 +8,38 @@ FROM --platform=$TARGETPLATFORM debian:latest
ARG TARGETPLATFORM ARG TARGETPLATFORM
RUN echo "Target platform: $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 \ RUN apt-get update && apt-get install -y \
build-essential \ build-essential \
meson \ meson \
ninja-build \ ninja-build \
librsvg2-bin \ librsvg2-bin \
librsvg2-common \
librsvg2-dev \
libglib2.0-dev \ libglib2.0-dev \
libgtk-4-common \ libgtk-4-dev \
libgtk-4-bin \ libadwaita-1-dev \
libgirepository1.0-dev \
gtk-update-icon-cache \ gtk-update-icon-cache \
desktop-file-utils \ desktop-file-utils \
gettext \ 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 WORKDIR /source

View File

@ -8,13 +8,13 @@ GROUP=$(id -gn $USER)
# Run containers for each architecture # Run containers for each architecture
if [[ "$1" == "x86_64" || -z "$1" ]]; then if [[ "$1" == "x86_64" || -z "$1" ]]; then
sudo rm -rf build/ 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/ sudo chown -R $USER:$GROUP out/
fi fi
if [[ "$1" == "aarch64" || -z "$1" ]]; then if [[ "$1" == "aarch64" || -z "$1" ]]; then
sudo rm -rf build/ 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/ sudo chown -R $USER:$GROUP out/
fi fi

View File

@ -26,14 +26,20 @@ import locale
import gettext import gettext
VERSION = '@VERSION@' 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) sys.path.insert(1, pkgdatadir)
signal.signal(signal.SIGINT, signal.SIG_DFL) signal.signal(signal.SIGINT, signal.SIG_DFL)
locale.bindtextdomain('breezydesktop', localedir)
locale.setlocale(locale.LC_ALL, locale.getdefaultlocale())
locale.textdomain('breezydesktop') locale.textdomain('breezydesktop')
locale.bindtextdomain('breezydesktop', localedir)
gettext.install('breezydesktop', localedir) gettext.install('breezydesktop', localedir)
gettext.bindtextdomain('breezydesktop', localedir)
gettext.textdomain('breezydesktop')
if __name__ == '__main__': if __name__ == '__main__':
import gi import gi

View File

@ -36,15 +36,6 @@ gi.require_version('Adw', '1')
gi.require_version('Gio', '2.0') gi.require_version('Gio', '2.0')
gi.require_version('GLib', '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 gi.repository import Adw, Gtk, Gio
from .licensedialog import LicenseDialog from .licensedialog import LicenseDialog
from .statemanager import StateManager from .statemanager import StateManager