From f5823b43f27a7541a8edfa46b70f2801fbf36501 Mon Sep 17 00:00:00 2001 From: Adrien Plazas Date: Sat, 25 Jan 2020 13:05:10 +0100 Subject: [PATCH] Add install rules and metadata for GTK/Linux This allows to install Flips on Linux desktops, with all the modern bells and whistles, like SVG icons, AppStream metadata, a flatpak manifest, and the com.github.Alcaro.Flips reverse domain name app ID. --- Makefile | 28 ++++ data/com.github.Alcaro.Flips-symbolic.svg | 68 ++++++++ data/com.github.Alcaro.Flips.desktop | 15 ++ data/com.github.Alcaro.Flips.metainfo.xml | 41 +++++ data/com.github.Alcaro.Flips.svg | 194 ++++++++++++++++++++++ data/flips-main-window.png | Bin 0 -> 18170 bytes data/flips-preferences-window.png | Bin 0 -> 34148 bytes flatpak/com.github.Alcaro.Flips.json | 34 ++++ flips-gtk.cpp | 1 + make.sh | 26 ++- 10 files changed, 402 insertions(+), 5 deletions(-) create mode 100644 data/com.github.Alcaro.Flips-symbolic.svg create mode 100644 data/com.github.Alcaro.Flips.desktop create mode 100644 data/com.github.Alcaro.Flips.metainfo.xml create mode 100644 data/com.github.Alcaro.Flips.svg create mode 100644 data/flips-main-window.png create mode 100644 data/flips-preferences-window.png create mode 100644 flatpak/com.github.Alcaro.Flips.json diff --git a/Makefile b/Makefile index 1a73a94..83457c1 100644 --- a/Makefile +++ b/Makefile @@ -17,6 +17,8 @@ XFILES := SOURCES := *.cpp +PREFIX ?= /usr + ifeq ($(TARGET),) targetmachine := $(shell $(CXX) -dumpmachine) ifneq ($(findstring mingw,$(targetmachine)),) @@ -100,3 +102,29 @@ endif $(FNAME_$(TARGET)): $(SOURCES) $(XFILES) $(CXX) $^ -std=c++98 $(CFLAGS_G) $(MOREFLAGS) $(CPPFLAGS) $(CFLAGS) $(CXXFLAGS) $(LFLAGS) -o$@ + +ifeq ($(TARGET),gtk) +install: + mkdir -p $(DESTDIR)$(PREFIX)/bin + mkdir -p $(DESTDIR)$(PREFIX)/share/applications + mkdir -p $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps + mkdir -p $(DESTDIR)$(PREFIX)/share/icons/hicolor/symbolic/apps + mkdir -p $(DESTDIR)$(PREFIX)/share/metainfo + install -p -m755 $(FNAME_$(TARGET)) $(DESTDIR)$(PREFIX)/bin + install -p -m755 data/com.github.Alcaro.Flips.desktop $(DESTDIR)$(PREFIX)/share/applications + install -p -m644 data/com.github.Alcaro.Flips.svg $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps + install -p -m644 data/com.github.Alcaro.Flips-symbolic.svg $(DESTDIR)$(PREFIX)/share/icons/hicolor/symbolic/apps + install -p -m644 data/com.github.Alcaro.Flips.metainfo.xml $(DESTDIR)$(PREFIX)/share/metainfo + +uninstall: + mkdir -p $(DESTDIR)$(PREFIX)/bin + mkdir -p $(DESTDIR)$(PREFIX)/share/applications + mkdir -p $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps + mkdir -p $(DESTDIR)$(PREFIX)/share/icons/hicolor/symbolic/apps + mkdir -p $(DESTDIR)$(PREFIX)/share/metainfo + rm $(DESTDIR)$(PREFIX)/bin/$(FNAME_$(TARGET)) + rm $(DESTDIR)$(PREFIX)/share/applications/com.github.Alcaro.Flips.desktop + rm $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps/com.github.Alcaro.Flips.svg + rm $(DESTDIR)$(PREFIX)/share/icons/hicolor/symbolic/apps/com.github.Alcaro.Flips-symbolic.svg + rm $(DESTDIR)$(PREFIX)/share/metainfo/com.github.Alcaro.Flips.metainfo.xml +endif diff --git a/data/com.github.Alcaro.Flips-symbolic.svg b/data/com.github.Alcaro.Flips-symbolic.svg new file mode 100644 index 0000000..7e9ab23 --- /dev/null +++ b/data/com.github.Alcaro.Flips-symbolic.svg @@ -0,0 +1,68 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/data/com.github.Alcaro.Flips.desktop b/data/com.github.Alcaro.Flips.desktop new file mode 100644 index 0000000..923a5bb --- /dev/null +++ b/data/com.github.Alcaro.Flips.desktop @@ -0,0 +1,15 @@ +[Desktop Entry] +Name=Flips +GenericName=Patcher +Comment=A patcher for IPS and BPS files +# Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +Keywords=ips;bps;patcher; +Exec=flips %U +# Translators: Do NOT translate or transliterate this text (this is an icon file name)! +Icon=com.github.Alcaro.Flips +Terminal=false +X-GNOME-SingleWindow=true +Type=Application +StartupNotify=true +Categories=GNOME;GTK;Utility;RevisionControl; +MimeType=application/x-bps-patch;application/x-ips-patch; diff --git a/data/com.github.Alcaro.Flips.metainfo.xml b/data/com.github.Alcaro.Flips.metainfo.xml new file mode 100644 index 0000000..873eb15 --- /dev/null +++ b/data/com.github.Alcaro.Flips.metainfo.xml @@ -0,0 +1,41 @@ + + + + com.github.Alcaro.Flips + CC0-1.0 + GPL-3.0+ + Flips + A patcher for IPS and BPS files + + +

+ Flips is a patcher for IPS and BPS files, aiming for a simple interface + yet plenty of power under the hood. +

+
+ + + + https://raw.githubusercontent.com/Alcaro/Flips/master/data/flips-main-window.png + + + https://raw.githubusercontent.com/Alcaro/Flips/master/data/flips-preferences-window.png + + + + + + + + + flips + + + com.github.Alcaro.Flips.desktop + https://github.com/Alcaro/Flips + https://github.com/Alcaro/Flips/issues + Alcaro + floating_at_muncher.se + + +
diff --git a/data/com.github.Alcaro.Flips.svg b/data/com.github.Alcaro.Flips.svg new file mode 100644 index 0000000..c3d6229 --- /dev/null +++ b/data/com.github.Alcaro.Flips.svg @@ -0,0 +1,194 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/flips-main-window.png b/data/flips-main-window.png new file mode 100644 index 0000000000000000000000000000000000000000..63bcaa0ac08326f8d4067c963233e3a51bc7817c GIT binary patch literal 18170 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 or~d!&(fd-kPm)9Fn~Z5_Ke2-=L;wH) literal 0 HcmV?d00001 diff --git a/flatpak/com.github.Alcaro.Flips.json b/flatpak/com.github.Alcaro.Flips.json new file mode 100644 index 0000000..63b59f2 --- /dev/null +++ b/flatpak/com.github.Alcaro.Flips.json @@ -0,0 +1,34 @@ +{ + "app-id" : "com.github.Alcaro.Flips", + "runtime" : "org.gnome.Platform", + "runtime-version" : "3.34", + "sdk" : "org.gnome.Sdk", + "command" : "flips", + "finish-args" : [ + /* X11 + XShm access */ + "--share=ipc", + "--socket=x11", + /* Wayland access */ + "--socket=wayland", + /* OpenGL + DRI access */ + "--device=dri", + /* Needed to find the ROMs and patches */ + "--filesystem=host:ro" + ], + "modules" : [ + { + "name" : "flips", + "buildsystem" : "simple", + "build-commands": [ + "sh make.sh --flatpak=yes", + "sh make.sh --flatpak=yes --install=yes" + ], + "sources" : [ + { + "type" : "git", + "url" : "https://github.com/Alcaro/Flips.git" + } + ] + } + ] +} diff --git a/flips-gtk.cpp b/flips-gtk.cpp index d015a2d..e8f01b5 100644 --- a/flips-gtk.cpp +++ b/flips-gtk.cpp @@ -1033,6 +1033,7 @@ int GUIShow(const char * filename) int main(int argc, char * argv[]) { + g_set_prgname("com.github.Alcaro.Flips"); canShowGUI = gtk_parse_args(&argc, &argv); cfg.init_file(g_build_filename(g_get_user_config_dir(), "flipscfg", NULL)); return flipsmain(argc, argv); diff --git a/make.sh b/make.sh index 222c684..43f41bf 100755 --- a/make.sh +++ b/make.sh @@ -2,6 +2,8 @@ #This script creates a heavily optimized Linux binary. For debugging or Windows, you're better off using the Makefile directly. +PREFIX=/usr + FLAGS='-Wall -Werror -O3 -flto -fuse-linker-plugin -fomit-frame-pointer -fmerge-all-constants -fvisibility=hidden' FLAGS=$FLAGS' -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables' FLAGS=$FLAGS' -ffunction-sections -fdata-sections -Wl,--gc-sections -fprofile-dir=obj/' @@ -11,6 +13,8 @@ LINFLAGS=' -Wl,-z,relro,-z,now,--as-needed,--hash-style=gnu,--relax' PROFILE=yes +INSTALL=no + for i in "$@"; do case "$i" in --harden=yes) @@ -28,18 +32,30 @@ case "$i" in ;; --harden=no|--profile=yes) ;; + --install=yes) + INSTALL=yes + ;; + --flatpak=yes) + PREFIX=/app + FLAGS=$FLAGS" -DFLATPAK" + ;; *) echo "Unknown argument $1; valid arguments are:" - echo "--harden=yes --profile=no --cflags=(...) --lflags=(...)" + echo "--harden=yes --profile=no --cflags=(...) --lflags=(...) --install=yes --flatpak=yes" exit 1 ;; esac done -if [ $PROFILE = yes ]; then +if [ $INSTALL = yes ]; then + +echo 'GTK+ (install)' +TARGET=gtk make install PREFIX=$PREFIX || exit $? + +elif [ $PROFILE = yes ]; then echo 'GTK+ (1/3)' -rm obj/* flips; TARGET=gtk make CFLAGS="$FLAGS$LINFLAGS -fprofile-generate -lgcov" || exit $? +rm obj/* flips; TARGET=gtk make PREFIX=$PREFIX CFLAGS="$FLAGS$LINFLAGS -fprofile-generate -lgcov" || exit $? [ -e flips ] || exit 1 echo 'GTK+ (2/3)' @@ -55,7 +71,7 @@ $TIME ./flips --create --bps-delta profile/firefox-10.0esr.tar profile/f $TIME ./flips --create --bps-delta-moremem profile/firefox-10.0esr.tar profile/firefox-17.0esr.tar /dev/null echo 'GTK+ (3/3)' -rm flips; TARGET=gtk make CFLAGS="$FLAGS$LINFLAGS -fprofile-use" || exit $? +rm flips; TARGET=gtk make PREFIX=$PREFIX CFLAGS="$FLAGS$LINFLAGS -fprofile-use" || exit $? else -rm flips; TARGET=gtk make CFLAGS="$FLAGS$LINFLAGS" || exit $? +rm flips; TARGET=gtk make PREFIX=$PREFIX CFLAGS="$FLAGS$LINFLAGS" || exit $? fi