From 1e86f3ab70ad20971a800089ec531f567dcc58da Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Sat, 17 Feb 2018 22:41:02 -0500 Subject: Complete .travis.yml and AppImage support (fixes #160, #161) --- .gitignore | 1 + .travis.yml | 24 +++--------------------- Makefile | 1 + appimage/AppRun | 19 +++++++++++++++++++ appimage/build-appimage | 36 ++++++++++++++++++++++++++++++++++++ appimage/qpdf.desktop | 7 +++++++ dist/AppRun | 19 ------------------- dist/qpdf.desktop | 7 ------- dist/qpdf.png | Bin 4870 -> 0 bytes 9 files changed, 67 insertions(+), 47 deletions(-) create mode 100644 appimage/AppRun create mode 100755 appimage/build-appimage create mode 100644 appimage/qpdf.desktop delete mode 100644 dist/AppRun delete mode 100644 dist/qpdf.desktop delete mode 100644 dist/qpdf.png diff --git a/.gitignore b/.gitignore index f206a21e..c8bd500b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ *.pdb .lineno aclocal.m4 +appimage/build autoconf.mk autofiles.zip autom4te.cache/ diff --git a/.travis.yml b/.travis.yml index 16bafa3d..fe84f3c8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,28 +4,10 @@ sudo: require dist: trusty script: - - ./autogen.sh - - ./configure --prefix=/usr - - make -j$(nproc) - - make check - - make install DESTDIR=$(readlink -f appdir) ; find appdir/ - - rm -rf appdir/usr/include/ appdir/usr/lib/pkgconfig/ appdir/usr/lib/*.{a,la} # Don't bundle developer stuff - - sudo mv appdir/usr/lib/* /usr/local/lib/ # Workaround for https://github.com/probonopd/linuxdeployqt/issues/160 - - mkdir -p appdir/usr/share/icons/hicolor/128x128/apps ; cp dist/qpdf.png appdir/usr/share/icons/hicolor/128x128/apps/ - - mkdir -p appdir/usr/share/applications ; cp dist/qpdf.desktop appdir/usr/share/applications/ - - wget -c "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" - - chmod a+x linuxdeployqt*.AppImage - - unset QTDIR; unset QT_PLUGIN_PATH ; unset LD_LIBRARY_PATH - - export LD_LIBRARY_PATH=/usr/local/lib/ # Workaround for https://github.com/probonopd/linuxdeployqt/issues/160 - - ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -bundle-non-qt-libs - - # In addition to the main executable, we have additional ones to process - - # ./linuxdeployqt*.AppImage ./appdir/usr/bin/fix-qdf -bundle-non-qt-libs # Not an ELF? - - ./linuxdeployqt*.AppImage ./appdir/usr/bin/zlib-flate -bundle-non-qt-libs - - # Generate AppImage - - ./linuxdeployqt*.AppImage --appimage-extract - - rm ./appdir/AppRun ; cp dist/AppRun appdir/ ; chmod a+x ./appdir/AppRun # Replace symlink with custom script - - PATH=./squashfs-root/usr/bin:$PATH ./squashfs-root/usr/bin/appimagetool ./appdir/ + - appimage/build-appimage after_success: + - cd appimage/build - find ./appdir -executable -type f -exec ldd {} \; | grep " => /usr" | cut -d " " -f 2-3 | sort | uniq - curl --upload-file ./QPDF*.AppImage https://transfer.sh/QPDF-git.$(git rev-parse --short HEAD)-x86_64.AppImage + - sha512sum ./QPDF*.AppImage diff --git a/Makefile b/Makefile index 47dfbed1..d5c2c2b3 100644 --- a/Makefile +++ b/Makefile @@ -90,6 +90,7 @@ export QPDF_SKIP_TEST_COMPARE_IMAGES export QPDF_LARGE_FILE_TEST_PATH clean:: $(CLEAN_TARGETS) + $(RM) -r appimage/build .PHONY: $(CLEAN_TARGETS) $(foreach B,$(BUILD_ITEMS),$(eval \ diff --git a/appimage/AppRun b/appimage/AppRun new file mode 100644 index 00000000..8a2e5935 --- /dev/null +++ b/appimage/AppRun @@ -0,0 +1,19 @@ +#!/bin/bash + +# The purpose of this custom AppRun script is +# to allow symlinking the AppImage and invoking +# the corresponding binary depending on which +# symlink was used to invoke the AppImage + +HERE="$(dirname "$(readlink -f "${0}")")" + +if [ ! -z $APPIMAGE ] ; then + BINARY_NAME=$(basename "$ARGV0") + if [ -e "$HERE/usr/bin/$BINARY_NAME" ] ; then + exec "$HERE/usr/bin/$BINARY_NAME" "$@" + else + exec "$HERE/usr/bin/qpdf" "$@" + fi +else + exec "$HERE/usr/bin/qpdf" "$@" +fi diff --git a/appimage/build-appimage b/appimage/build-appimage new file mode 100755 index 00000000..a00761be --- /dev/null +++ b/appimage/build-appimage @@ -0,0 +1,36 @@ +#!/bin/sh +set -ex +here="$(dirname $(readlink -f "$0"))" +top=$(dirname $here) +cd $top +appdir=$here/build/appdir +rm -rf $here/build +./autogen.sh +./configure --prefix=/usr --enable-werror --enable-show-failed-test-output +make -j$(nproc) +make check +mkdir -p $appdir +make install DESTDIR=$appdir; find $appdir +cd $here/build +# Don't bundle developer stuff +rm -rf appdir/usr/include appdir/usr/lib/pkgconfig appdir/usr/lib/*.{a,la,so} +rm -rf appdir/usr/share/doc appdir/usr/share/man +for i in appdir/usr/share/icons/hicolor/128x128/apps; do + mkdir -p $i + cp $top/logo/qpdf.svg $i + convert -resize '128x128>' $top/logo/qpdf.svg $i/qpdf.png +done +for i in appdir/usr/share/applications; do mkdir -p $i; cp $top/appimage/qpdf.desktop $i; done +wget -c "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" +chmod a+x linuxdeployqt*.AppImage +unset QTDIR; unset QT_PLUGIN_PATH ; unset LD_LIBRARY_PATH +./linuxdeployqt*.AppImage appdir/usr/share/applications/*.desktop -bundle-non-qt-libs +# In addition to the main executable, we have additional ones to process +./linuxdeployqt*.AppImage appdir/usr/bin/zlib-flate -bundle-non-qt-libs +# Generate AppImage +./linuxdeployqt*.AppImage --appimage-extract +rm appdir/AppRun ; cp $top/appimage/AppRun appdir; chmod a+x appdir/AppRun # Replace symlink with custom script +PATH=./squashfs-root/usr/bin:$PATH ./squashfs-root/usr/bin/appimagetool appdir +echo "" +echo "*** AppImage is ready in appimage/build ***" +echo "" diff --git a/appimage/qpdf.desktop b/appimage/qpdf.desktop new file mode 100644 index 00000000..b030a6db --- /dev/null +++ b/appimage/qpdf.desktop @@ -0,0 +1,7 @@ +[Desktop Entry] +Type=Application +Terminal=true +Exec=qpdf +Name=QPDF +Comment=Structural, content-preserving transformations on PDF files +Icon=qpdf diff --git a/dist/AppRun b/dist/AppRun deleted file mode 100644 index 8a2e5935..00000000 --- a/dist/AppRun +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -# The purpose of this custom AppRun script is -# to allow symlinking the AppImage and invoking -# the corresponding binary depending on which -# symlink was used to invoke the AppImage - -HERE="$(dirname "$(readlink -f "${0}")")" - -if [ ! -z $APPIMAGE ] ; then - BINARY_NAME=$(basename "$ARGV0") - if [ -e "$HERE/usr/bin/$BINARY_NAME" ] ; then - exec "$HERE/usr/bin/$BINARY_NAME" "$@" - else - exec "$HERE/usr/bin/qpdf" "$@" - fi -else - exec "$HERE/usr/bin/qpdf" "$@" -fi diff --git a/dist/qpdf.desktop b/dist/qpdf.desktop deleted file mode 100644 index b030a6db..00000000 --- a/dist/qpdf.desktop +++ /dev/null @@ -1,7 +0,0 @@ -[Desktop Entry] -Type=Application -Terminal=true -Exec=qpdf -Name=QPDF -Comment=Structural, content-preserving transformations on PDF files -Icon=qpdf diff --git a/dist/qpdf.png b/dist/qpdf.png deleted file mode 100644 index f7a46c6f..00000000 Binary files a/dist/qpdf.png and /dev/null differ -- cgit v1.2.3-54-g00ecf