diff options
author | Aaron Small <a.small@unb.ca> | 2017-03-26 23:05:03 -0400 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2017-03-27 21:59:28 +0300 |
commit | b5e30fd8e09182473f31d7865d6b8dc5823788cd (patch) | |
tree | 064c67c3a2147f726fd4eccc9013d5870e049120 | |
parent | ff4b32741acb36e8b2cf3d83fe0d513ad5753e59 (diff) | |
download | meson-b5e30fd8e09182473f31d7865d6b8dc5823788cd.zip meson-b5e30fd8e09182473f31d7865d6b8dc5823788cd.tar.gz meson-b5e30fd8e09182473f31d7865d6b8dc5823788cd.tar.bz2 |
Fix qt4 tool location detection, which may result in incorrectly picking
up qt5 tools when using the qt4 module.
-rw-r--r-- | mesonbuild/dependencies.py | 17 | ||||
-rwxr-xr-x | run_unittests.py | 19 |
2 files changed, 35 insertions, 1 deletions
diff --git a/mesonbuild/dependencies.py b/mesonbuild/dependencies.py index 6fff39b..eacb15b 100644 --- a/mesonbuild/dependencies.py +++ b/mesonbuild/dependencies.py @@ -1010,7 +1010,7 @@ class QtBaseDependency(Dependency): corekwargs = {'required': 'false', 'silent': 'true'} core = PkgConfigDependency(self.qtpkgname + 'Core', env, corekwargs) # Used by self.compilers_detect() - self.bindir = core.get_pkgconfig_variable('host_bins') + self.bindir = self.get_pkgconfig_host_bins(core) if not self.bindir: # If exec_prefix is not defined, the pkg-config file is broken prefix = core.get_pkgconfig_variable('exec_prefix') @@ -1119,10 +1119,25 @@ class Qt5Dependency(QtBaseDependency): def __init__(self, env, kwargs): QtBaseDependency.__init__(self, 'qt5', env, kwargs) + def get_pkgconfig_host_bins(self, core): + return core.get_pkgconfig_variable('host_bins') + class Qt4Dependency(QtBaseDependency): def __init__(self, env, kwargs): QtBaseDependency.__init__(self, 'qt4', env, kwargs) + def get_pkgconfig_host_bins(self, core): + # Only return one bins dir, because the tools are generally all in one + # directory for Qt4, in Qt5, they must all be in one directory. Return + # the first one found among the bin variables, in case one tool is not + # configured to be built. + applications = ['moc', 'uic', 'rcc', 'lupdate', 'lrelease'] + for application in applications: + try: + return os.path.dirname(core.get_pkgconfig_variable('%s_location' % application)) + except MesonException: + pass + class GnuStepDependency(Dependency): def __init__(self, environment, kwargs): Dependency.__init__(self, 'gnustep') diff --git a/run_unittests.py b/run_unittests.py index a11e3a5..1865a52 100755 --- a/run_unittests.py +++ b/run_unittests.py @@ -1023,6 +1023,25 @@ class LinuxlikeTests(BasePlatformTests): self.assertIn("'-Werror'", vala_command) self.assertIn("'-Werror'", c_command) + def test_qt5dependency_pkgconfig_detection(self): + ''' + Test that qt4 and qt5 detection with pkgconfig works. + ''' + # Verify Qt4 or Qt5 can be found with pkg-config + if not shutil.which('pkg-config'): + raise unittest.SkipTest('pkg-config not found') + qt4 = subprocess.call(['pkg-config', '--exists', 'QtCore']) + qt5 = subprocess.call(['pkg-config', '--exists', 'Qt5Core']) + if qt4 != 0 or qt5 != 0: + raise unittest.SkipTest('Qt not found with pkg-config') + testdir = os.path.join(self.framework_test_dir, '4 qt') + self.init(testdir) + # Confirm that the dependency was found with qmake + msg = 'Qt4 native `pkg-config` dependency (modules: Core, Gui) found: YES\n' + msg2 = 'Qt5 native `pkg-config` dependency (modules: Core, Gui) found: YES\n' + mesonlog = self.get_meson_log() + self.assertTrue(msg in mesonlog or msg2 in mesonlog) + def test_qt5dependency_qmake_detection(self): ''' Test that qt5 detection with qmake works. This can't be an ordinary |