From b320f69a799969bc2a6d194f0265a2ebd0161a79 Mon Sep 17 00:00:00 2001 From: Kubat <mael.martin31@gmail.com> Date: Tue, 20 Oct 2020 16:41:38 +0200 Subject: [PATCH] [build] A working appimage build To generate the AppImage the libraries from the host system will be used (if it worked on my machine it should works on your machine). All libraries are copied into the AppImage, it should have a size of something like 100Mio. --- .gitignore | 1 + Aegisub/.DirIcon | 1 + Aegisub/Aegisub.desktop | 12 +++++++++ Aegisub/AppRun | 5 ++++ Aegisub/aegisub-icon.png | Bin 0 -> 5030 bytes {appimage => Aegisub/lib}/.gitkeep | 0 Makefile.target | 7 ++++- configure.ac | 3 ++- tools/copy_libs.bash | 42 +++++++++++++++++++++++++++++ 9 files changed, 69 insertions(+), 2 deletions(-) create mode 120000 Aegisub/.DirIcon create mode 100644 Aegisub/Aegisub.desktop create mode 100755 Aegisub/AppRun create mode 100644 Aegisub/aegisub-icon.png rename {appimage => Aegisub/lib}/.gitkeep (100%) create mode 100755 tools/copy_libs.bash diff --git a/.gitignore b/.gitignore index 75b7f9586..d391c74b7 100644 --- a/.gitignore +++ b/.gitignore @@ -67,6 +67,7 @@ packages/desktop/aegisub.desktop packages/desktop/aegisub.desktop.template packages/win_installer/vendor src/aegisub +Aegisub/aegisub src/libresrc/bitmap.cpp src/libresrc/bitmap.h src/libresrc/default_config.cpp diff --git a/Aegisub/.DirIcon b/Aegisub/.DirIcon new file mode 120000 index 000000000..c559be2fe --- /dev/null +++ b/Aegisub/.DirIcon @@ -0,0 +1 @@ +aegisub-icon.png \ No newline at end of file diff --git a/Aegisub/Aegisub.desktop b/Aegisub/Aegisub.desktop new file mode 100644 index 000000000..b3772f71b --- /dev/null +++ b/Aegisub/Aegisub.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Name=Aegisub +Icon=aegisub-icon +GenericName=Subtitle Editor +Comment=Create and edit subtitles for film and videos. +Keywords=subtitles;video;audio;text +Terminal=false +Categories=AudioVideo;AudioVideoEditing; +MimeType=application/x-srt;text/plain;text/x-ass;text/x-microdvd;text/x-ssa; +StartupNotify=true diff --git a/Aegisub/AppRun b/Aegisub/AppRun new file mode 100755 index 000000000..58a33fc7e --- /dev/null +++ b/Aegisub/AppRun @@ -0,0 +1,5 @@ +#!/bin/sh + +SELF_DIR=$(dirname "$0") +export LD_LIBRARY_PATH="$SELF_DIR/lib" +exec "$SELF_DIR"/aegisub diff --git a/Aegisub/aegisub-icon.png b/Aegisub/aegisub-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..fbbd14dc9f46796622c457b781c1388d45353788 GIT binary patch literal 5030 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 literal 0 HcmV?d00001 diff --git a/appimage/.gitkeep b/Aegisub/lib/.gitkeep similarity index 100% rename from appimage/.gitkeep rename to Aegisub/lib/.gitkeep diff --git a/Makefile.target b/Makefile.target index fd40d87bf..38d429f07 100644 --- a/Makefile.target +++ b/Makefile.target @@ -1,5 +1,5 @@ ifneq (yes, $(INCLUDING_CHILD_MAKEFILES)) -COMMANDS := all install clean distclean test depclean osx-bundle osx-dmg test-automation test-libaegisub style tags +COMMANDS := all install clean distclean test depclean osx-bundle osx-dmg test-automation test-libaegisub style tags appimage .PHONY: $(COMMANDS) .DEFAULT_GOAL := all @@ -95,6 +95,11 @@ style: tags: ./tools/tags.bash +appimage: src/aegisub + cp $^ Aegisub/aegisub + ./tools/copy_libs.bash --exec=Aegisub/aegisub --dest=Aegisub/lib + ./tools/appimagetool.AppImage Aegisub + # The actual build rules .SUFFIXES: diff --git a/configure.ac b/configure.ac index cc202d8ea..658f066da 100644 --- a/configure.ac +++ b/configure.ac @@ -191,8 +191,9 @@ AC_ARG_ENABLE([appimage], [AEGISUB_APPIMAGE_ENABLED=no]) AS_IF([test "x$AEGISUB_APPIMAGE_ENABLED" = "xyes"], [ AC_MSG_CHECKING([Downloading AppImage creation tool]) - wget https://github.com/probonopd/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage \ + wget https://github.com/probonopd/AppImageKit/releases/download/continuous/appimagetool-`arch`.AppImage \ -O tools/appimagetool.AppImage -o config.wget.log + chmod 00700 tools/appimagetool.AppImage AS_IF([test $? -eq 0 ], [ AC_MSG_RESULT([done]) ], [ diff --git a/tools/copy_libs.bash b/tools/copy_libs.bash new file mode 100755 index 000000000..ab133c61b --- /dev/null +++ b/tools/copy_libs.bash @@ -0,0 +1,42 @@ +#!/bin/bash + +EXEC="" +DEST="" + +function print_help { +cat << EOF +Usage: $0 --exec=* --dest=* [--help] + --help Display this help message + --exec Specify which dynamic executable to inspect and get the .so files from + --dest In which folder the .so files must be copied +EOF +} + +for arg in "$@" +do + case $arg in + --help|-h) + print_help + exit + ;; + --exec=*) + EXEC=`echo A$arg | sed -e 's/^A--exec=//g'` + ;; + --dest=*) + DEST=`echo A$arg | sed -e 's/^A--dest=//g'` + ;; + esac +done + +if test "x$EXEC" = "x" -o "x$DEST" = "x" +then + print_help + exit +fi + +ldd "$EXEC" \ + | awk '$2 = "=>" && $3 { print $1 " " $3 }' 2>&1 \ + | while read NAME FILE +do + cp $FILE $DEST/`basename $FILE` +done -- GitLab