diff options
| author | 2021-12-17 07:06:30 -0500 | |
|---|---|---|
| committer | 2021-12-17 07:06:30 -0500 | |
| commit | 1fdc150116cad39aae5c5da407c3312b47a59e3a (patch) | |
| tree | 123c79a4d7ad2d45781ba03ce939f7539fb428d8 /scripts/linux/create_portable.sh | |
| parent | feda8a7db8d1d7c5439aa8f8feef7cc0dd2b59a0 (diff) | |
New upstream version 3.3.3+dfsg1.upstream/3.3.3+dfsg1
Diffstat (limited to 'scripts/linux/create_portable.sh')
| -rwxr-xr-x | scripts/linux/create_portable.sh | 184 |
1 files changed, 184 insertions, 0 deletions
diff --git a/scripts/linux/create_portable.sh b/scripts/linux/create_portable.sh new file mode 100755 index 0000000..b3b2d52 --- /dev/null +++ b/scripts/linux/create_portable.sh @@ -0,0 +1,184 @@ +#!/bin/bash + +# echo "$0 <sqlitestudio build output directory> <qmake path> [tgz|dist|dist_full]" + +if [ "$1" == "" ]; then + QMAKE=`which qmake` + if [ $QMAKE == "" ]; then + echo "Cannot find qmake" + else + read -p "Is this correct qmake (y/N) $QMAKE : " yn + case $yn in + [Yy]* ) ;; + * ) echo "Please pass path to correct qmake as argument to this script."; exit;; + esac + fi +else + QMAKE=$1 +fi + +which chrpath >/dev/null +if [ "$?" -ne 0 ]; then + echo "chrpath program missing!" + exit 1 +fi + +qt_paths_bin="${QMAKE/qmake/qtpaths}" +$qt_paths_bin -v >/dev/null 2>&1 +if [ "$?" -ne 0 ]; then + echo "qtpaths program missing!" + exit 1 +fi + +OUTPUT=`pwd`/../../output + +cd $OUTPUT + +required_modules="libQt5Core.so libQt5Concurrent.so libQt5DBus.so libQt5Gui.so libQt5Network.so libQt5PrintSupport.so libQt5Script.so libQt5Widgets.so libQt5Xml.so \ + libQt5Svg.so libQt5XcbQpa.so" +required_plugins="platforms/libqxcb.so imageformats/libqgif.so imageformats/libqicns.so imageformats/libqico.so imageformats/libqjpeg.so \ + imageformats/libqsvg.so imageformats/libqtga.so imageformats/libqtiff.so iconengines/libqsvgicon.so printsupport/libcupsprintersupport.so" +optional_plugins="platformthemes/libqgtk3.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 $OUTPUT/SQLiteStudio . + +# Make lib directory to move all *.so files (sqlitestudio files and Qt files and dependencies) +cd SQLiteStudio + +# Copy SQLite libs +cd $portable/SQLiteStudio +if [ -f /usr/local/lib/libsqlite3.so.0.8.6 ]; then + echo "SQLite3 library exists in /usr/local/lib/. Since this is usually a custom build of SQLite, it's preferred and will be used now." + sqlite3_lib=/usr/local/lib/libsqlite3.so.0.8.6 + sqlite3_lib_target=`ldd $OUTPUT/SQLiteStudio/lib/libcoreSQLiteStudio.so | grep libsqlite | awk '{print $3;}'` + cp $sqlite3_lib lib/`basename $sqlite3_lib_target` +else + sqlite3_lib=`ldd $OUTPUT/SQLiteStudio/lib/libcoreSQLiteStudio.so | grep libsqlite | awk '{print $3;}'` + cp $sqlite3_lib lib +fi +echo "Using SQLite3 library: $sqlite3_lib" + +sqlite2_lib=`ldd plugins/libDbSqlite2.so | grep libsqlite | awk '{print $3;}'` +echo "Using SQLite2 library: $sqlite2_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 2>&1 >/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 2>&1 >/dev/null + done + cd .. +done + +for plugin in $optional_plugins; do + if [ ! -f $qt_plugins_dir/$plugin ]; then + continue + 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 2>&1 >/dev/null + done + cd .. +done + +cd $portable/SQLiteStudio +chrpath -r \$ORIGIN/lib sqlitestudio 2>&1 >/dev/null +chrpath -r \$ORIGIN/lib sqlitestudiocli 2>&1 >/dev/null + +cd $portable +VERSION=`SQLiteStudio/sqlitestudiocli -v | awk '{print $2}'` + +# 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 +#if [ "$3" == "dist" ]; then +# rm -rf plugins +# rm -f lib/libQ* +# rm -rf iconengines +# rm -rf imageformats +# rm -rf platforms +# rm -rf platformthemes +# rm -rf printsupport +# find . -type l -exec rm -f {} \; +#fi +rm -f lib/libicu* +rm -f lib/libsqlite.so.0 ;# this is for SQLite 2 +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." + +echo "Portable distribution created at: $portable/SQLiteStudio" |
