diff options
author | Kjell Ahlstedt <kjellahlstedt@gmail.com> | 2021-05-05 11:53:54 +0200 |
---|---|---|
committer | Kjell Ahlstedt <kjellahlstedt@gmail.com> | 2021-05-05 11:53:54 +0200 |
commit | f3a8d231863319ba8b221ca471175a040afef64b (patch) | |
tree | 4216b7455f0c53a21dfe54d18887bff4965754d1 | |
parent | 727241758e46b14cda6940e62651674d8748dc3f (diff) | |
download | mm-common-f3a8d231863319ba8b221ca471175a040afef64b.tar.gz |
Subprojects can use meson.add_dist_script() if meson.version() >= 0.58.0
* meson.build:
* skeletonmm/doc/reference/meson.build:
* skeletonmm/meson.build:
* skeletonmm/skeleton/skeletonmm/meson.build:
Call add_dist_script() in a subproject, if meson.version() >= 0.58.0.
* util/build_scripts/dist-build-scripts.py:
* util/build_scripts/dist-changelog.py:
* util/build_scripts/doc-reference.py:
* util/build_scripts/generate-binding.py:
* util/meson_aux/extra-dist-cmd.py:
Use MESON_PROJECT_DIST_ROOT if it exists, else MESON_DIST_ROOT.
It exists if meson.version() >= 0.58.0.
-rw-r--r-- | meson.build | 5 | ||||
-rw-r--r-- | skeletonmm/doc/reference/meson.build | 5 | ||||
-rw-r--r-- | skeletonmm/meson.build | 8 | ||||
-rw-r--r-- | skeletonmm/skeleton/skeletonmm/meson.build | 5 | ||||
-rwxr-xr-x | util/build_scripts/dist-build-scripts.py | 19 | ||||
-rwxr-xr-x | util/build_scripts/dist-changelog.py | 4 | ||||
-rwxr-xr-x | util/build_scripts/doc-reference.py | 7 | ||||
-rwxr-xr-x | util/build_scripts/generate-binding.py | 7 | ||||
-rwxr-xr-x | util/meson_aux/extra-dist-cmd.py | 6 |
9 files changed, 39 insertions, 27 deletions
diff --git a/meson.build b/meson.build index 3f91718..cb690f7 100644 --- a/meson.build +++ b/meson.build @@ -343,8 +343,9 @@ custom_target('libstdc++.tag', install: true ) -if not meson.is_subproject() - # Modify the contents of the distribution directory. (not allowed in a subproject) +if not meson.is_subproject() or meson.version().version_compare('>= 0.58.0') + # Modify the contents of the distribution directory. + # (not allowed in a subproject if meson.version() < 0.58.0) meson.add_dist_script( python3.path(), script_dir / 'extra-dist-cmd.py', diff --git a/skeletonmm/doc/reference/meson.build b/skeletonmm/doc/reference/meson.build index 23662fa..a1ee30c 100644 --- a/skeletonmm/doc/reference/meson.build +++ b/skeletonmm/doc/reference/meson.build @@ -2,7 +2,7 @@ # Input: built_files_root, project_source_root, skeletonmm_pcname, python3, # hg_ccg_basenames, extra_h_files, built_h_file_targets, install_datadir, -# doc_reference +# doc_reference, can_add_dist_script # Output: install_docdir, install_devhelpdir tag_file_modules = [ @@ -139,9 +139,8 @@ meson.add_install_script( docinstall_flags ) -if not meson.is_subproject() +if can_add_dist_script # Distribute built files and files copied by mm-common-prepare. - # (add_dist_script() is not allowed in a subproject) meson.add_dist_script( python3.path(), doc_reference, 'dist_doc', doctool_dir, diff --git a/skeletonmm/meson.build b/skeletonmm/meson.build index 7190ada..982a4b1 100644 --- a/skeletonmm/meson.build +++ b/skeletonmm/meson.build @@ -161,21 +161,23 @@ endif warning_flags = cpp_compiler.get_supported_arguments(warning_flags) add_project_arguments(warning_flags, language: 'cpp') +# add_dist_script() is not allowed in a subproject if meson.version() < 0.58.0. +can_add_dist_script = not meson.is_subproject() or meson.version().version_compare('>= 0.58.0') + subdir('tools/extra_defs_gen') subdir('skeleton') subdir('examples') subdir('tests') subdir('doc/reference') -if not meson.is_subproject() +if can_add_dist_script # Add a ChangeLog file to the distribution directory. - # (add_dist_script() is not allowed in a subproject) meson.add_dist_script( python3.path(), dist_changelog, project_source_root, ) # Add build scripts to the distribution directory, and delete .gitignore - # files and an empty $MESON_DIST_ROOT/build/ directory. + # files and an empty $MESON_PROJECT_DIST_ROOT/build/ directory. meson.add_dist_script( python3.path(), dist_build_scripts, project_source_root, diff --git a/skeletonmm/skeleton/skeletonmm/meson.build b/skeletonmm/skeleton/skeletonmm/meson.build index 2a424a7..8e41ba5 100644 --- a/skeletonmm/skeleton/skeletonmm/meson.build +++ b/skeletonmm/skeleton/skeletonmm/meson.build @@ -2,7 +2,7 @@ # Input: skeletonmm_build_dep, skeletonmm_pcname, maintainer_mode, project_source_root, # generate_binding, m4_files, skeletonmm_libversion, install_includedir, -# macos_darwin_versions, python3 +# macos_darwin_versions, python3, can_add_dist_script # Output: hg_ccg_basenames, extra_h_files, built_h_file_targets, built_files_root, # skeletonmm_dep @@ -159,9 +159,8 @@ meson.add_install_script( hg_ccg_basenames ) -if not meson.is_subproject() +if can_add_dist_script # Distribute built files. - # (add_dist_script() is not allowed in a subproject) meson.add_dist_script( python3.path(), generate_binding, 'dist_built_files', built_h_cc_dir, diff --git a/util/build_scripts/dist-build-scripts.py b/util/build_scripts/dist-build-scripts.py index 31aca50..a366a39 100755 --- a/util/build_scripts/dist-build-scripts.py +++ b/util/build_scripts/dist-build-scripts.py @@ -6,16 +6,17 @@ # dist-build-scripts.py <root_src_dir> <script_dir> <no_dist>... # <script_dir> The directory with the build scripts, relative to <root_source_dir>. -# <no_dist> Zero or more names (relative to MESON_DIST_ROOT) of files and -# directories that shall not be distributed. +# <no_dist> Zero or more names (relative to MESON_PROJECT_DIST_ROOT) +# of files and directories that shall not be distributed. import os import sys import shutil -dist_root = os.getenv('MESON_DIST_ROOT') +# MESON_PROJECT_DIST_ROOT is set only if meson.version() >= 0.58.0. +project_dist_root = os.getenv('MESON_PROJECT_DIST_ROOT', os.getenv('MESON_DIST_ROOT')) src_script_dir = os.path.join(sys.argv[1], sys.argv[2]) -dist_script_dir = os.path.join(dist_root, sys.argv[2]) +dist_script_dir = os.path.join(project_dist_root, sys.argv[2]) # Create the distribution script directory, if it does not exist. os.makedirs(dist_script_dir, exist_ok=True) @@ -32,12 +33,12 @@ for file in files: shutil.copy(os.path.join(src_script_dir, file), dist_script_dir) # Don't distribute .gitignore files. -for dirpath, dirnames, filenames in os.walk(dist_root): +for dirpath, dirnames, filenames in os.walk(project_dist_root): if '.gitignore' in filenames: os.remove(os.path.join(dirpath, '.gitignore')) -# Remove an empty MESON_DIST_ROOT/build directory. -dist_build_dir = os.path.join(dist_root, 'build') +# Remove an empty MESON_PROJECT_DIST_ROOT/build directory. +dist_build_dir = os.path.join(project_dist_root, 'build') if os.path.isdir(dist_build_dir): try: os.rmdir(dist_build_dir) @@ -45,9 +46,9 @@ if os.path.isdir(dist_build_dir): # Ignore the error, if not empty. pass -# Remove specified files and directories from the MESON_DIST_ROOT directory. +# Remove specified files and directories from the MESON_PROJECT_DIST_ROOT directory. for rel_path in sys.argv[3:]: - abs_path = os.path.join(dist_root, rel_path) + abs_path = os.path.join(project_dist_root, rel_path) if os.path.isfile(abs_path): os.remove(abs_path) elif os.path.isdir(abs_path): diff --git a/util/build_scripts/dist-changelog.py b/util/build_scripts/dist-changelog.py index 4a11a5f..5eecb1a 100755 --- a/util/build_scripts/dist-changelog.py +++ b/util/build_scripts/dist-changelog.py @@ -20,5 +20,7 @@ cmd = [ '--max-count=200', '--pretty=tformat:%cd %an <%ae>%n%n %s%n%w(0,0,2)%+b', ] -with open(os.path.join(os.getenv('MESON_DIST_ROOT'), 'ChangeLog'), mode='w') as logfile: +# MESON_PROJECT_DIST_ROOT is set only if meson.version() >= 0.58.0. +project_dist_root = os.getenv('MESON_PROJECT_DIST_ROOT', os.getenv('MESON_DIST_ROOT')) +with open(os.path.join(project_dist_root, 'ChangeLog'), mode='w') as logfile: sys.exit(subprocess.run(cmd, stdout=logfile).returncode) diff --git a/util/build_scripts/doc-reference.py b/util/build_scripts/doc-reference.py index c9a3a80..9769688 100755 --- a/util/build_scripts/doc-reference.py +++ b/util/build_scripts/doc-reference.py @@ -142,10 +142,13 @@ def dist_doc(): # argv[3] argv[4] argv[5] argv[6] # <doctool_dist_dir> <doc_ref_build_dir> <tagfile> <devhelpfile> - # <doctool_dist_dir> is a distribution directory, relative to MESON_DIST_ROOT. + # <doctool_dist_dir> is a distribution directory, relative to MESON_PROJECT_DIST_ROOT. # <doc_ref_build_dir> is a relative or absolute path in the build directory. # <tagfile> and <devhelpfile> are relative or absolute paths in the build directory. - doctool_dist_dir = os.path.join(os.getenv('MESON_DIST_ROOT'), sys.argv[3]) + + # MESON_PROJECT_DIST_ROOT is set only if meson.version() >= 0.58.0. + project_dist_root = os.getenv('MESON_PROJECT_DIST_ROOT', os.getenv('MESON_DIST_ROOT')) + doctool_dist_dir = os.path.join(project_dist_root, sys.argv[3]) doc_ref_build_dir = sys.argv[4] tagfile = sys.argv[5] devhelpfile = sys.argv[6] diff --git a/util/build_scripts/generate-binding.py b/util/build_scripts/generate-binding.py index c88bc5c..6d719ff 100755 --- a/util/build_scripts/generate-binding.py +++ b/util/build_scripts/generate-binding.py @@ -117,9 +117,12 @@ def dist_built_files(): # <built_h_cc_dir> <dist_dir> <basefilenames>... # <built_h_cc_dir> is an absolute path in the build directory or source directory. - # <dist_dir> is a distribution directory, relative to MESON_DIST_ROOT. + # <dist_dir> is a distribution directory, relative to MESON_PROJECT_DIST_ROOT. + + # MESON_PROJECT_DIST_ROOT is set only if meson.version() >= 0.58.0. + project_dist_root = os.getenv('MESON_PROJECT_DIST_ROOT', os.getenv('MESON_DIST_ROOT')) built_h_cc_dir = sys.argv[2] - dist_dir = os.path.join(os.getenv('MESON_DIST_ROOT'), sys.argv[3]) + dist_dir = os.path.join(project_dist_root, sys.argv[3]) # Create the distribution directory, if it does not exist. os.makedirs(os.path.join(dist_dir, 'private'), exist_ok=True) diff --git a/util/meson_aux/extra-dist-cmd.py b/util/meson_aux/extra-dist-cmd.py index 484f4e9..ff2c230 100755 --- a/util/meson_aux/extra-dist-cmd.py +++ b/util/meson_aux/extra-dist-cmd.py @@ -27,12 +27,14 @@ cmd = [ '--max-count=200', '--pretty=tformat:%cd %an <%ae>%n%n %s%n%w(0,0,2)%+b', ] -with open(os.path.join(os.getenv('MESON_DIST_ROOT'), 'ChangeLog'), mode='w') as logfile: +# MESON_PROJECT_DIST_ROOT is set only if meson.version() >= 0.58.0. +project_dist_root = os.getenv('MESON_PROJECT_DIST_ROOT', os.getenv('MESON_DIST_ROOT')) +with open(os.path.join(project_dist_root, 'ChangeLog'), mode='w') as logfile: result = subprocess.run(cmd, stdout=logfile) # Distribute the libstdc++.tag file in addition to the files in the local git clone. # shutil.copy2() copies timestamps and some other file metadata. shutil.copy2(os.path.join(root_build_dir, 'libstdc++.tag'), - os.path.join(os.getenv('MESON_DIST_ROOT'), 'doctags')) + os.path.join(project_dist_root, 'doctags')) sys.exit(result.returncode) |