diff options
author | Nirbheek Chauhan <nirbheek@centricular.com> | 2018-05-06 20:09:49 +0530 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek@centricular.com> | 2018-05-06 20:25:16 +0530 |
commit | c1f275bfa644beafab9f8572351d4b64d61c148b (patch) | |
tree | 5e426407e55b89d51db50f131e1c29631f0ce5b9 | |
parent | c5865c50c444912afd92c2feb94d8739874a62b2 (diff) | |
download | meson-c1f275bfa644beafab9f8572351d4b64d61c148b.zip meson-c1f275bfa644beafab9f8572351d4b64d61c148b.tar.gz meson-c1f275bfa644beafab9f8572351d4b64d61c148b.tar.bz2 |
gnome.gtkdoc: Allow passing file objects as xml_files
If we pass a source files() object, we will look for it in the build
directory, which is wrong. If we pass a build files() object (from
configure_file()), we will find it in the build directory, and then
try to copy it on top of itself in gtkdochelper.py getting a
SameFileError.
Add a test for it, and also properly iterate custom target outputs
when adding to content files.
-rw-r--r-- | mesonbuild/modules/gnome.py | 10 | ||||
-rw-r--r-- | mesonbuild/scripts/gtkdochelper.py | 9 | ||||
-rw-r--r-- | test cases/frameworks/10 gtk-doc/doc/meson.build | 7 |
3 files changed, 16 insertions, 10 deletions
diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py index 12f6412..e553b4a 100644 --- a/mesonbuild/modules/gnome.py +++ b/mesonbuild/modules/gnome.py @@ -793,11 +793,13 @@ This will become a hard error in the future.''') s = s.held_object if isinstance(s, (build.CustomTarget, build.CustomTargetIndex)): depends.append(s) - content_files.append(os.path.join(state.environment.get_build_dir(), - state.backend.get_target_dir(s), - s.get_outputs()[0])) + for o in s.get_outputs(): + content_files.append(os.path.join(state.environment.get_build_dir(), + state.backend.get_target_dir(s), + o)) elif isinstance(s, mesonlib.File): - content_files.append(os.path.join(state.environment.get_build_dir(), s.subdir, s.fname)) + content_files.append(s.absolute_path(state.environment.get_source_dir(), + state.environment.get_build_dir())) elif isinstance(s, build.GeneratedList): depends.append(s) for gen_src in s.get_outputs(): diff --git a/mesonbuild/scripts/gtkdochelper.py b/mesonbuild/scripts/gtkdochelper.py index 3fe7fb7..2895991 100644 --- a/mesonbuild/scripts/gtkdochelper.py +++ b/mesonbuild/scripts/gtkdochelper.py @@ -93,9 +93,12 @@ def build_gtkdoc(source_root, build_root, doc_subdir, src_subdirs, # Copy files to build directory for f in content_files: - f_abs = os.path.join(doc_src, f) - shutil.copyfile(f_abs, os.path.join( - abs_out, os.path.basename(f_abs))) + # FIXME: Use mesonlib.File objects so we don't need to do this + if not os.path.isabs(f): + f = os.path.join(doc_src, f) + elif os.path.commonpath([f, build_root]) == build_root: + continue + shutil.copyfile(f, os.path.join(abs_out, os.path.basename(f))) shutil.rmtree(htmldir, ignore_errors=True) try: diff --git a/test cases/frameworks/10 gtk-doc/doc/meson.build b/test cases/frameworks/10 gtk-doc/doc/meson.build index 7aeb98d..60a494d 100644 --- a/test cases/frameworks/10 gtk-doc/doc/meson.build +++ b/test cases/frameworks/10 gtk-doc/doc/meson.build @@ -1,10 +1,11 @@ cdata = configuration_data() cdata.set('VERSION', '1.0') -configure_file(input : 'version.xml.in', - output : 'version.xml', - configuration : cdata) +version_xml = configure_file(input : 'version.xml.in', + output : 'version.xml', + configuration : cdata) gnome.gtkdoc('foobar', + version_xml, src_dir : inc, main_sgml : 'foobar-docs.sgml', content_files : docbook, |