from subprocess import Popen, PIPE
+# Handling Qt properties
+import macosx_qt
+
# ==============================
# Constants
# ==============================
class InstallQt(object):
- def __init__(self, appdir, bundle=True, requestedPlugins=[]):
+ def __init__(self, appdir, bundle=True, requestedPlugins=[], skipInstallQtConf=False):
self.appDir = appdir
self.bundle = bundle
self.frameworkDir = self.appDir + "/Frameworks"
self.findPluginsPath()
self.installPlugins(requestedPlugins)
- self.installQtConf()
-
- def qtProperty(self, qtProperty):
- """
- Query persistent property of Qt via qmake
- """
- VALID_PROPERTIES = ['QT_INSTALL_PREFIX',
- 'QT_INSTALL_DATA',
- 'QT_INSTALL_DOCS',
- 'QT_INSTALL_HEADERS',
- 'QT_INSTALL_LIBS',
- 'QT_INSTALL_BINS',
- 'QT_INSTALL_PLUGINS',
- 'QT_INSTALL_IMPORTS',
- 'QT_INSTALL_TRANSLATIONS',
- 'QT_INSTALL_CONFIGURATION',
- 'QT_INSTALL_EXAMPLES',
- 'QT_INSTALL_DEMOS',
- 'QMAKE_MKSPECS',
- 'QMAKE_VERSION',
- 'QT_VERSION'
- ]
- if qtProperty not in VALID_PROPERTIES:
- return None
-
- qmakeProcess = Popen('qmake -query %s' % qtProperty, shell=True, stdout=PIPE, stderr=PIPE)
- result = qmakeProcess.stdout.read().strip()
- qmakeProcess.stdout.close()
- qmakeProcess.wait()
- return result
+ if not skipInstallQtConf:
+ self.installQtConf()
def findFrameworkPath(self):
- self.sourceFrameworkPath = self.qtProperty('QT_INSTALL_LIBS')
+ self.sourceFrameworkPath = macosx_qt.qtProperty('QT_INSTALL_LIBS')
def findPluginsPath(self):
- self.sourcePluginsPath = self.qtProperty('QT_INSTALL_PLUGINS')
+ self.sourcePluginsPath = macosx_qt.qtProperty('QT_INSTALL_PLUGINS')
def findPlugin(self, pluginname):
qmakeProcess = Popen('find %s -name %s' % (self.sourcePluginsPath, pluginname), shell=True, stdout=PIPE, stderr=PIPE)
self.installedFrameworks.add(framework)
+ # if the Framework-Folder is a Symlink we are in a Helper-Process ".app" (e.g. in QtWebEngine),
+ # in this case skip copying/installing on existing folders
+ skipExisting = False;
+ if os.path.islink(self.frameworkDir):
+ skipExisting = True;
+
# ensure that the framework directory exists
try:
os.mkdir(self.frameworkDir)
if not framework.startswith('/'):
framework = "%s/%s" % (self.sourceFrameworkPath, framework)
- # Copy Framework
- os.system('cp -R "%s" "%s"' % (framework, self.frameworkDir))
-
frameworkname = framework.split('/')[-1]
localframework = self.frameworkDir + "/" + frameworkname
+ # Framework already installed in previous run ... see above
+ if skipExisting and os.path.isdir(localframework):
+ return
+
+ # Copy Framework
+ os.system('cp -R "%s" "%s"' % (framework, self.frameworkDir))
+
# De-Myllify
os.system('find "%s" -name *debug* -exec rm -f {} \;' % localframework)
os.system('find "%s" -name Headers -exec rm -rf {} \; 2>/dev/null' % localframework)
else:
newlibname = "@executable_path/%s%s" % (frameworkname, libpath)
# print 'install_name_tool -id "%s" "%s"' % (newlibname, lib)
+ os.system('chmod +w "%s"' % (lib))
os.system('install_name_tool -id "%s" "%s"' % (newlibname, lib))
self.resolveDependancies(lib)
newlibname = "@executable_path/Frameworks/%s" % newlibname
# print 'install_name_tool -change "%s" "%s" "%s"' % (lib, newlibname, obj)
+ os.system('chmod +w "%s"' % (lib))
+ os.system('chmod +w "%s"' % (obj))
os.system('install_name_tool -change "%s" "%s" "%s"' % (lib, newlibname, obj))
if __name__ == "__main__":
targetDir += "/Contents"
InstallQt(targetDir, bundle, plugins)
+
+ if bundle:
+ webenginetarget = targetDir + '/Frameworks/QtWebEngineCore.framework/Helpers/QtWebEngineProcess.app/Contents'
+
+ if os.path.isdir(webenginetarget):
+ os.system('ln -s ../../../../../../ "%s"/Frameworks' % webenginetarget)
+ InstallQt(webenginetarget, bundle, [], True)