-
-
Notifications
You must be signed in to change notification settings - Fork 573
Bundling Qt apps
probonopd edited this page Jun 3, 2016
·
24 revisions
See this patch for how existing continuous builds on Travis CI can be turned into AppImages with ease. https://github.com/cpvrlab/ImagePlay/pull/93/files?diff=unified
Download Qt from http://download.qt.io/online/qtsdkrepository - apparently it is built in a distro-agnostic way, which is good. This can be used both for building (e.g., on travis-ci) and for bundling.
You would think that there is an easy way to install Qt binaries from upstream without the need for a GUI, but so far I have not found an easy way yet. Hence the somewhat harder way below.
Assuming that we want to unpack Qt to /home/me/5.5
, we can use:
# Install CMake 3.2.2 and Qt 5.4.1 # https://github.com/vlc-qt/examples/blob/master/tools/ci/linux/install.sh
wget http://www.cmake.org/files/v3.2/cmake-3.2.2-Linux-x86_64.tar.gz
tar xf cmake-3.2.2-Linux-x86_64.tar.gz
wget http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_55/qt.55.gcc_64/5.5.0-2qt5_essentials.7z
wget http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_55/qt.55.gcc_64/5.5.0-2icu-linux-g++-Rhel6.6-x64.7z
wget http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_55/qt.55.gcc_64/5.5.0-2qt5_addons.7z
7z x *_essentials.7z > /dev/null
7z x *icu-linux-*.7z > /dev/null
7z x *_addons.7z > /dev/null
export PATH=$PWD/cmake-3.2.2-Linux-x86_64/bin/:$PWD/5.5/gcc_64/bin/:$PATH
export LD_LIBRARY_PATH=$PWD/5.5/gcc_64/lib
# This is a super cool trick to bundle all libraries that are not part of the build host base system
apt-get install pax-utils
# ALL libraries needed by this binary
lddtree 5.5/gcc_64/bin/designer | grep "=>" | awk '{print $3}'
# All libraries needed by this binary that are NOT part of /lib of the build system
lddtree 5.5/gcc_64/bin/designer | grep "=>" | awk '{print $3}' | grep -ve "^/lib"
# As an alterative to pax-utils' lddtree, you could try ldd-recursive:
# http://sourceforge.net/projects/recursive-ldd/
# This sometimes returns more dependencies than lddtree
ldd-recursive -uniq 5.5/gcc_64/bin/designer | grep -ve "^/lib"
############################################################################################################
# http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_54/Updates.xml
############################################################################################################
# qt.54.gcc_64
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_54/qt.54.gcc_64/5.4.2-0qt5_essentials.7z
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_54/qt.54.gcc_64/5.4.2-0qt5_addons.7z
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_54/qt.54.gcc_64/5.4.2-0icu_53_1_ubuntu_11_10_64.7z
# qt.54.qtwebengine.gcc_64
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_54/qt.54.qtwebengine.gcc_64/5.4.2-0qt5_qtwebengine.7z
############################################################################################################
# http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_55/Updates.xml
############################################################################################################
# qt.55.gcc_64
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_55/qt.55.gcc_64/5.5.1-0qt5_essentials.7z
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_55/qt.55.gcc_64/5.5.1-0qt5_addons.7z
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_55/qt.55.gcc_64/5.5.1-0icu-linux-g++-Rhel6.6-x64.7z
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_55/qt.55.gcc_64/5.5.1-0qt5_qtpositioning.7z
# qt.55.qt3d.gcc_64
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_55/qt.55.qt3d.gcc_64/5.5.1-0qt5_qt3d.7z
# qt.55.qtcanvas3d.gcc_64
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_55/qt.55.qtcanvas3d.gcc_64/5.5.1-0qt5_qtcanvas3d.7z
# qt.55.qtlocation.gcc_64
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_55/qt.55.qtlocation.gcc_64/5.5.1-0qt5_qtlocation.7z
# qt.55.qtquick1.gcc_64
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_55/qt.55.qtquick1.gcc_64/5.5.1-0qt5_qtquick1.7z
# qt.55.qtquickcontrols.gcc_64
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_55/qt.55.qtquickcontrols.gcc_64/5.5.1-0qt5_qtquickcontrols.7z
# qt.55.qtscript.gcc_64
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_55/qt.55.qtscript.gcc_64/5.5.1-0qt5_qtscript.7z
# qt.55.qtwebengine.gcc_64
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_55/qt.55.qtwebengine.gcc_64/5.5.1-0qt5_qtwebengine.7z
############################################################################################################
# http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_56/Updates.xml
############################################################################################################
# qt.56.gcc_64
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_56/qt.56.gcc_64/5.6.0-1qtbase-Linux-RHEL_6_6-GCC-Linux-RHEL_6_6-X86_64.7z
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_56/qt.56.gcc_64/5.6.0-1qtconnectivity-Linux-RHEL_6_6-GCC-Linux-RHEL_6_6-X86_64.7z
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_56/qt.56.gcc_64/5.6.0-1qtx11extras-Linux-RHEL_6_6-GCC-Linux-RHEL_6_6-X86_64.7z
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_56/qt.56.gcc_64/5.6.0-1qtwebchannel-Linux-RHEL_6_6-GCC-Linux-RHEL_6_6-X86_64.7z
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_56/qt.56.gcc_64/5.6.0-1qtmultimedia-Linux-RHEL_6_6-GCC-Linux-RHEL_6_6-X86_64.7z
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_56/qt.56.gcc_64/5.6.0-1qttranslations-Linux-RHEL_6_6-GCC-Linux-RHEL_6_6-X86_64.7z
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_56/qt.56.gcc_64/5.6.0-1qtgraphicaleffects-Linux-RHEL_6_6-GCC-Linux-RHEL_6_6-X86_64.7z
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_56/qt.56.gcc_64/5.6.0-1qtsvg-Linux-RHEL_6_6-GCC-Linux-RHEL_6_6-X86_64.7z
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_56/qt.56.gcc_64/5.6.0-1qtdeclarative-Linux-RHEL_6_6-GCC-Linux-RHEL_6_6-X86_64.7z
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_56/qt.56.gcc_64/5.6.0-1qtwebsockets-Linux-RHEL_6_6-GCC-Linux-RHEL_6_6-X86_64.7z
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_56/qt.56.gcc_64/5.6.0-1qtimageformats-Linux-RHEL_6_6-GCC-Linux-RHEL_6_6-X86_64.7z
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_56/qt.56.gcc_64/5.6.0-1qttools-Linux-RHEL_6_6-GCC-Linux-RHEL_6_6-X86_64.7z
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_56/qt.56.gcc_64/5.6.0-1qtxmlpatterns-Linux-RHEL_6_6-GCC-Linux-RHEL_6_6-X86_64.7z
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_56/qt.56.gcc_64/5.6.0-1qtsensors-Linux-RHEL_6_6-GCC-Linux-RHEL_6_6-X86_64.7z
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_56/qt.56.gcc_64/5.6.0-1qtpositioning-Linux-RHEL_6_6-GCC-Linux-RHEL_6_6-X86_64.7z
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_56/qt.56.gcc_64/5.6.0-1qtserialport-Linux-RHEL_6_6-GCC-Linux-RHEL_6_6-X86_64.7z
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_56/qt.56.gcc_64/5.6.0-1icu-linux-Rhel6.6-x64.7z
# qt.56.qt3d.gcc_64
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_56/qt.56.qt3d.gcc_64/5.6.0-1qt3d-Linux-RHEL_6_6-GCC-Linux-RHEL_6_6-X86_64.7z
# qt.56.qtcanvas3d.gcc_64
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_56/qt.56.qtcanvas3d.gcc_64/5.6.0-1qtcanvas3d-Linux-RHEL_6_6-GCC-Linux-RHEL_6_6-X86_64.7z
# qt.56.qtlocation.gcc_64
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_56/qt.56.qtlocation.gcc_64/5.6.0-1qtlocation-Linux-RHEL_6_6-GCC-Linux-RHEL_6_6-X86_64.7z
# qt.56.qtquickcontrols.gcc_64
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_56/qt.56.qtquickcontrols.gcc_64/5.6.0-1qtquickcontrols-Linux-RHEL_6_6-GCC-Linux-RHEL_6_6-X86_64.7z
# qt.56.qtquickcontrols2.gcc_64
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_56/qt.56.qtquickcontrols2.gcc_64/5.6.0-1qtquickcontrols2-Linux-RHEL_6_6-GCC-Linux-RHEL_6_6-X86_64.7z
# qt.56.qtscript.gcc_64
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_56/qt.56.qtscript.gcc_64/5.6.0-1qtscript-Linux-RHEL_6_6-GCC-Linux-RHEL_6_6-X86_64.7z
# qt.56.qtserialbus.gcc_64
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_56/qt.56.qtserialbus.gcc_64/5.6.0-1qtserialbus-Linux-RHEL_6_6-GCC-Linux-RHEL_6_6-X86_64.7z
# qt.56.qtwebengine.gcc_64
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_56/qt.56.qtwebengine.gcc_64/5.6.0-1qtwebengine-Linux-RHEL_6_6-GCC-Linux-RHEL_6_6-X86_64.7z
# qt.56.qtwebview.gcc_64
http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_56/qt.56.qtwebview.gcc_64/5.6.0-1qtwebview-Linux-RHEL_6_6-GCC-Linux-RHEL_6_6-X86_64.7z
These links were generated with the following Python script:
#!/usr/bin/python
import xmltodict # sudo apt install python-xmltodict
import urllib2, os
def do(version):
url = "http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_" + str(version) + "/Updates.xml"
print("")
print("############################################################################################################")
print("# " + url)
print("############################################################################################################")
print("")
response = urllib2.urlopen(url)
xml = response.read()
data = xmltodict.parse(xml)
for item in data["Updates"]["PackageUpdate"]:
if(item["DownloadableArchives"]):
print "# " + item["Name"]
for archive in item["DownloadableArchives"].split(", "):
print(os.path.join(os.path.dirname(url), item["Name"], item["Version"] + archive ))
print ""
if(__name__ == "__main__"):
for version in (54 ,55, 56):
do(version=version)