Subversion Repositories Scribus

Compare Revisions

Ignore whitespace Rev 22821 → Rev 22822

/trunk/Scribus/.gitlab-ci.yml
0,0 → 1,28
# Dependencies are managed in the Dockerfile in the scribus-ci-docker
# Git repository. Change them there, wait a bit, and then we'll use
# the new ones here in these builds.
image: registry.gitlab.com/scribus/scribus-ci-docker/master
 
variables:
GIT_DEPTH: "10"
GIT_SUBMODULE_STRATEGY: recursive
 
appimage:linux:
stage: build
except:
- schedules
cache:
key: "cache-appimage"
paths:
- ccache/
before_script:
# CCache Config
- mkdir -p ccache
- export CCACHE_BASEDIR=${PWD}
- export CCACHE_DIR=${PWD}/ccache
script:
- bash -ex AppImage-package/bundle.sh
artifacts:
expire_in: 14 days
paths:
- ./Scribus*.AppImage*
/trunk/Scribus/AUTHORS
72,6 → 72,11
Giovanni Mugnai musical777@gmail.com
 
 
AppImage for Linux:
 
Simon Peter
 
 
Refactoring text layout code, the new boxes model & CTL text layout, Oman House of Open Source Technology team:
 
Anood Almuharbi anood.almuharbi@gmail.com
/trunk/Scribus/AppImage-package/bundle.sh
1,113 → 1,115
#!/bin/bash
 
cat /proc/1/cgroup # Check if we run in Docker; https://github.com/AppImage/AppImageKit/issues/912
 
. /opt/qt*/bin/qt*-env.sh || true
 
########################################################################
# Package the binaries built on Travis-CI as an AppImage
# By Simon Peter 2016
# For more information, see http://appimage.org/
# Build Plaform Theme for Gtk+
########################################################################
 
export ARCH=$(arch)
find /opt/qt*/| grep platform
#apt-get update
#apt-get -y install libgtk-3-dev libnotify-dev qt5113d
#git clone https://github.com/CrimsonAS/gtkplatform
#cd gtkplatform
#qmake
#make -j$(nproc)
#sudo make install
#cd -
 
APP=Scribus
LOWERAPP=${APP,,}
 
GIT_REV=$(git rev-parse --short HEAD)
echo $GIT_REV
make install DESTDIR=/home/travis/$APP/$APP.AppDir
 
cd $HOME/$APP/
 
wget -q https://github.com/probonopd/AppImages/raw/master/functions.sh -O ./functions.sh
. ./functions.sh
 
cd $APP.AppDir
 
########################################################################
# Copy desktop and icon file to AppDir for AppRun to pick them up
# https://askubuntu.com/a/910143
# https://askubuntu.com/a/748186
# Deploy with linuxdeployqt using
# -extra-plugins=platformthemes/libqgtk2.so,styles/libqgtk2style.so
# At runtime, export QT_QPA_PLATFORMTHEME=gtk2 (Xfce does this itself)
########################################################################
 
get_apprun
git clone http://code.qt.io/qt/qtstyleplugins.git
cd qtstyleplugins
qmake
make -j$(nproc)
make install
cd -
 
find . -name *desktop -exec cp {} $LOWERAPP.desktop \;
 
cp ./usr/share/scribus/icons/1_5_1/scribus.png .
rm -rf usr/share/icons/hicolor/48x48/
 
########################################################################
# Copy in the dependencies that cannot be assumed to be available
# on all target systems
# Build Scribus and install to appdir/
########################################################################
 
# FIXME: How to find out which subset of plugins is really needed?
mkdir -p ./usr/lib/qt5/plugins/
PLUGINS=/opt/qt58/plugins/
cp -r $PLUGINS/* ./usr/lib/qt5/plugins/
cmake . -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_INSTALL_PREFIX=/usr -DWANT_HUNSPELL=1 -DWITH_PODOFO=1 -DWANT_GRAPHICSMAGICK=1 -DWANT_DEBUG=0 -DWANT_SVNVERSION=0 -DWANT_GUI_LANG=en_US
make -j$(nproc)
make DESTDIR=appdir -j$(nproc) install ; find appdir/
cp AppImage-package/AppRun appdir/ ; chmod +x appdir/AppRun
cp ./appdir/usr/share/icons/hicolor/256x256/apps/scribus.png ./appdir/
sed -i -e 's|^Icon=.*|Icon=scribus|g' ./appdir/usr/share/applications/scribus.desktop # Needed?
 
# Tcl/Tk, Tkinter (for Calendar script)
cp /usr/li*/python2.7/lib-dynload/_tkinter.so usr/ # It is indeed picked up here because we cd there at runtime
ldd usr/_tkinter.so | grep "=>" | awk '{print $3}' | xargs -I '{}' cp -v '{}' ./usr/lib || true
cp -r /usr/lib/tcltk usr/lib/
cp -r /usr/share/tcltk usr/share/
 
export LD_LIBRARY_PATH=/opt/qt58/lib/:LD_LIBRARY_PATH
copy_deps
 
# Move the libraries to usr/bin
move_lib
mv ./opt/qt58/lib/* usr/lib ; rm -rf ./opt
( cd usr/lib/qt5/plugins/platforms/../../ ; ln -s ../../lib/ . )
mv usr/lib/x86_64-linux-gnu/* usr/lib/
 
########################################################################
# Delete stuff that should not go into the AppImage
# Bundle everyhting
# to allow the AppImage to run on older systems as well
########################################################################
 
# Delete dangerous libraries; see
# https://github.com/probonopd/AppImages/blob/master/excludelist
delete_blacklisted
cd appdir/
 
# We don't bundle the developer stuff
rm -rf usr/include || true
rm -rf usr/lib/cmake || true
rm -rf usr/lib/pkgconfig || true
find . -name '*.la' | xargs -i rm {}
strip usr/bin/* usr/lib/* || true
# Bundle all of glibc; this should eventually be done by linuxdeployqt
apt-get update -q
apt-get download libc6
find *.deb -exec dpkg-deb -x {} . \;
rm *deb
 
########################################################################
# desktopintegration asks the user on first run to install a menu item
########################################################################
# Make absolutely sure it will not load stuff from /lib or /usr
sed -i -e 's|/usr|/xxx|g' lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
sed -i -e 's|/usr/lib|/ooo/ooo|g' lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
 
get_desktopintegration $LOWERAPP
# Bundle fontconfig settings
mkdir -p etc/fonts/
cp /etc/fonts/fonts.conf etc/fonts/
 
# Bundle Python
apt-get download libpython2.7-stdlib python2.7 python2.7-minimal libpython2.7-minimal
find *.deb -exec dpkg-deb -x {} . \;
rm *deb
cd -
 
########################################################################
# Determine the version of the app; also include needed glibc version
# Patch away absolute paths
# FIXME: It would be nice if they were relative
########################################################################
 
GLIBC_NEEDED=$(glibc_needed)
VERSION=git$GIT_REV-glibc$GLIBC_NEEDED
sed -i -e 's|/usr/share/scribus|././/share/scribus|g' appdir/usr/bin/scribus
sed -i -e 's|/usr/lib/scribus|././/lib/scribus|g' appdir/usr/bin/scribus
sed -i -e 's|/usr/share/doc/scribus/|././/share/doc/scribus/|g' appdir/usr/bin/scribus
 
########################################################################
# Patch away absolute paths; it would be nice if they were relative
# Also bundle Tcl/Tk, Tkinter (for Calendar script)
########################################################################
 
sed -i -e 's|/usr/share/scribus|././/share/scribus|g' usr/bin/scribus
sed -i -e 's|/usr/lib/scribus|././/lib/scribus|g' usr/bin/scribus
sed -i -e 's|/usr/share/doc/scribus/|././/share/doc/scribus/|g' usr/bin/scribus
# Possibly need to patch additional hardcoded paths away, replace
# "/usr" with "././" which means "usr/ in the AppDir"
mkdir -p appdir/usr/lib appdir/usr/share
cp /usr/li*/python2.7/lib-dynload/_tkinter.so appdir/usr/ # It is indeed picked up here because we cd there at runtime
cp -r /usr/lib/tcltk appdir/usr/lib/
cp -r /usr/share/tcltk appdir/usr/share/
 
########################################################################
# AppDir complete
# Now packaging it as an AppImage
# Create extra qt.conf in a strange location; FIXME: why is this needed?
########################################################################
 
cd .. # Go out of AppImage
mkdir -p appdir/lib/x86_64-linux-gnu/
cat > appdir/lib/x86_64-linux-gnu/qt.conf <<\EOF
# Why is this needed here? Bug?
[Paths]
Prefix = ../../usr
Plugins = plugins
Imports = qml
Qml2Imports = qml
EOF
 
mkdir -p ../out/
generate_appimage
 
########################################################################
# Upload the AppDir
# Generate AppImage
########################################################################
 
transfer ../out/*
# Finalize AppDir but do not turn into AppImage just yet
wget -c -nv "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage"
chmod a+x linuxdeployqt-continuous-x86_64.AppImage
ARCH=x86_64 ./linuxdeployqt-continuous-x86_64.AppImage --appimage-extract-and-run appdir/usr/share/applications/scribus.desktop \
-appimage -unsupported-bundle-everything \
-executable=appdir/usr/bin/python2.7 -executable=appdir/usr/_tkinter.so -extra-plugins=platformthemes/libqgtk2.so,styles/libqgtk2style.so