aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/gnome.py30
-rw-r--r--modules/qt5.py2
2 files changed, 29 insertions, 3 deletions
diff --git a/modules/gnome.py b/modules/gnome.py
index f126bcf..f5537a4 100644
--- a/modules/gnome.py
+++ b/modules/gnome.py
@@ -20,6 +20,7 @@ import os, sys
import subprocess
from coredata import MesonException
import mlog
+import xml.etree.ElementTree as ET
girwarning_printed = False
@@ -36,13 +37,38 @@ class GnomeModule:
kwargs['command'] = cmd
output_c = args[0] + '.c'
output_h = args[0] + '.h'
- kwargs['input'] = args[1]
+ resfile = args[1]
+ kwargs['depend_files'] = self.parse_gresource_xml(state, resfile)
+ kwargs['input'] = resfile
kwargs['output'] = output_c
target_c = build.CustomTarget(args[0]+'_c', state.subdir, kwargs)
kwargs['output'] = output_h
target_h = build.CustomTarget(args[0] + '_h', state.subdir, kwargs)
return [target_c, target_h]
-
+
+ def parse_gresource_xml(self, state, fname):
+ abspath = os.path.join(state.environment.source_dir, state.subdir, fname)
+ relative_part = os.path.split(fname)[0]
+ resdir = os.path.join(state.subdir, 'data')
+ try:
+ tree = ET.parse(abspath)
+ root = tree.getroot()
+ result = []
+ for child in root[0]:
+ if child.tag != 'file':
+ mlog.log("Warning, malformed rcc file: ", os.path.join(state.subdir, fname))
+ break
+ else:
+ relfname = os.path.join(resdir, child.text)
+ absfname = os.path.join(state.environment.source_dir, relfname)
+ if os.path.isfile(absfname):
+ result.append(relfname)
+ else:
+ mlog.log('Warning, resource file points to nonexisting file %s.' % relfname)
+ return result
+ except Exception:
+ return []
+
def generate_gir(self, state, args, kwargs):
if len(args) != 1:
raise MesonException('Gir takes one argument')
diff --git a/modules/qt5.py b/modules/qt5.py
index d941439..0e732a1 100644
--- a/modules/qt5.py
+++ b/modules/qt5.py
@@ -19,7 +19,7 @@ from coredata import MesonException
import xml.etree.ElementTree as ET
class Qt5Module():
-
+
def __init__(self):
mlog.log('Detecting Qt tools.')
# The binaries have different names on different