blob: 55d48134a87d42091c06e4478f8fdbf6cfdf4581 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
|
#!/bin/sh
printUsage() {
echo "$0 <sqlitestudio build output directory> <qmake path> [tgz|dist|dist_full]"
}
if [ "$#" -lt 2 ] || [ "$#" -gt 3 ]; then
printUsage
exit 1
fi
if [ "$#" -eq 3 ] && [ "$3" != "tgz" ] && [ "$3" != "dist" ] && [ "$3" != "dist_plugins" ] && [ "$3" != "dist_full" ]; 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" ] || [ "$3" == "dist_plugins" ] || [ "$3" == "dist_full" ]; then
if [ "$3" == "dist" ] || [ "$3" == "dist_full" ]; 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
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
fi
# 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
|