aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/create_linux_portable.sh
diff options
context:
space:
mode:
Diffstat (limited to 'SQLiteStudio3/create_linux_portable.sh')
-rw-r--r--SQLiteStudio3/create_linux_portable.sh152
1 files changed, 152 insertions, 0 deletions
diff --git a/SQLiteStudio3/create_linux_portable.sh b/SQLiteStudio3/create_linux_portable.sh
new file mode 100644
index 0000000..8b7b8fe
--- /dev/null
+++ b/SQLiteStudio3/create_linux_portable.sh
@@ -0,0 +1,152 @@
+#!/bin/sh
+
+printUsage() {
+ echo "$0 <sqlitestudio build output directory> <qmake path> [tgz|dist]"
+}
+
+if [ "$#" -lt 2 ] || [ "$#" -gt 3 ]; then
+ printUsage
+ exit 1
+fi
+
+if [ "$#" -eq 3 ] && [ "$3" != "tgz" ] && [ "$3" != "dist" ]; then
+ printUsage
+ exit 1
+fi
+
+which chrpath >/dev/null
+if [ "$?" -ne 0 ]; then
+ echo "chrpath program missing!"
+ exit 1
+fi
+
+qt_paths_bin="${2/qmake/qtpaths}"
+$qt_paths_bin -v >/dev/null 2>&1
+if [ "$?" -ne 0 ]; then
+ echo "qtpaths program missing!"
+ exit 1
+fi
+
+cd $1
+
+required_modules="libQt5Core.so libQt5Concurrent.so libQt5DBus.so libQt5Gui.so libQt5Network.so libQt5PrintSupport.so libQt5Script.so libQt5Widgets.so libQt5Xml.so \
+ libQt5Svg.so"
+required_plugins="platforms/libqxcb.so imageformats/libqgif.so imageformats/libqicns.so imageformats/libqico.so imageformats/libqjpeg.so imageformats/libqmng.so \
+ imageformats/libqsvg.so imageformats/libqtga.so imageformats/libqtiff.so iconengines/libqsvgicon.so printsupport/libcupsprintersupport.so platformthemes/libqgtk2.so"
+
+qt_lib_dir=`ldd SQLiteStudio/sqlitestudio | grep libQt5Core | awk '{print $3;}'`
+qt_lib_dir=`dirname $qt_lib_dir`
+qt_plugins_dir=`$qt_paths_bin --plugin-dir`
+
+# Create portable dir to store distribution in
+rm -rf portable
+mkdir portable
+cd portable
+portable=`pwd`
+
+# Copy all output from compilation here
+cp -R $1/SQLiteStudio .
+
+# Make lib directory to move all *.so files (sqlitestudio files and Qt files and dependencies)
+cd SQLiteStudio
+
+# Copy SQLite libs
+cd $portable/SQLiteStudio
+sqlite3_lib=`ldd $1/SQLiteStudio/lib/libcoreSQLiteStudio.so | grep libsqlite | awk '{print $3;}'`
+sqlite2_lib=`ldd plugins/libDbSqlite2.so | grep libsqlite | awk '{print $3;}'`
+cp $sqlite3_lib lib
+cp $sqlite2_lib lib
+strip lib/*libsqlite*
+
+# Copy Qt
+cd $portable/SQLiteStudio/lib
+for module in $required_modules; do
+ if [ ! -f $qt_lib_dir/$module ]; then
+ echo "Required Qt module doesn't exist: $qt_lib_dir/$module"
+ exit 1
+ fi
+ cp -P $qt_lib_dir/$module* .
+
+ for dep_lib in `ldd $qt_lib_dir/$module | grep $qt_lib_dir | awk '{print $3;}'`; do
+ cp -Pu $dep_lib* .
+ done
+done
+
+for lib in `ls *.so`; do
+ chrpath -r \$ORIGIN/lib $lib >/dev/null
+done
+
+# Now copy Qt plugins
+cd $portable/SQLiteStudio
+qt_plugin_dirs=()
+for plugin in $required_plugins; do
+ if [ ! -f $qt_plugins_dir/$plugin ]; then
+ echo "Required Qt plugin doesn't exist: $qt_plugins_dir/$plugin"
+ exit 1
+ fi
+ parts=(${plugin/\// })
+ mkdir ${parts[0]} 2>/dev/null
+ cp -P $qt_plugins_dir/$plugin ${parts[0]}
+
+ # Update rpath in Qt plugins
+ cd ${parts[0]}
+ for lib in `ls *.so`; do
+ chrpath -r \$ORIGIN/../lib $lib >/dev/null
+ done
+ cd ..
+done
+
+cd $portable/SQLiteStudio
+chrpath -r \$ORIGIN/lib sqlitestudio >/dev/null
+chrpath -r \$ORIGIN/lib sqlitestudiocli >/dev/null
+
+cd $portable
+VERSION=`SQLiteStudio/sqlitestudiocli -v | awk '{print $2}'`
+
+if [ "$3" == "tgz" ]; then
+ tar cf sqlitestudio-$VERSION.tar SQLiteStudio
+ xz -z sqlitestudio-$VERSION.tar
+elif [ "$3" == "dist" ]; then
+ # Complete
+ echo "Building complete package: sqlitestudio-$VERSION.tar.xz"
+ tar cf sqlitestudio-$VERSION.tar SQLiteStudio
+ xz -z sqlitestudio-$VERSION.tar
+
+ # App
+ echo "Building incremental update package: sqlitestudio-$VERSION.tar.gz"
+ cp -R SQLiteStudio app
+ cd app
+ rm -rf plugins
+ rm -f lib/libQ*
+ rm -rf iconengines
+ rm -rf imageformats
+ rm -rf platforms
+ rm -rf platformthemes
+ rm -rf printsupport
+ rm -f lib/libicu*
+ rm -f lib/libsqlite.so.0 ;# this is for SQLite 2
+ find . -type l -exec rm -f {} \;
+ tar cf sqlitestudio-$VERSION.tar *
+ gzip -9 sqlitestudio-$VERSION.tar
+ mv sqlitestudio-$VERSION.tar.gz ..
+ cd ..
+ rm -rf app
+
+ # Plugins
+ mkdir plugins
+ SQLiteStudio/sqlitestudio --list-plugins | while read line
+ do
+ PLUGIN=`echo $line | awk '{print $1}'`
+ PLUGIN_VER=`echo $line | awk '{print $2}'`
+ if [ -f SQLiteStudio/plugins/lib$PLUGIN.so ]; then
+ echo "Building plugin package: $PLUGIN-$PLUGIN_VER.tar.gz"
+ cp SQLiteStudio/plugins/lib$PLUGIN.so plugins/
+ tar cf $PLUGIN\-$PLUGIN_VER.tar plugins
+ gzip -9 $PLUGIN\-$PLUGIN_VER.tar
+ fi
+ rm -f plugins/*
+ done
+ rm -rf plugins
+
+ echo "Done."
+fi