meson: wire up the git-subtree(1) command

Wire up the git-subtree(1) command, which is part of "contrib/". Note
that we have to move around the exact location where we include the
"contrib/" subdirectory so that it comes after building the docs so that
we have access to some of the common functionality.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Patrick Steinhardt
2025-01-17 10:56:07 +01:00
committed by Junio C Hamano
parent 07892da045
commit 8454b42f94
2 changed files with 73 additions and 1 deletions

View File

@ -0,0 +1,71 @@
git_subtree = custom_target(
input: 'git-subtree.sh',
output: 'git-subtree',
command: [
shell,
meson.project_source_root() / 'generate-script.sh',
'@INPUT@',
'@OUTPUT@',
meson.project_build_root() / 'GIT-BUILD-OPTIONS',
],
install: true,
install_dir: get_option('libexecdir') / 'git-core',
)
subtree_test_environment = test_environment
subtree_test_environment.prepend('PATH', meson.current_build_dir())
test('t7900-subtree', shell,
args: [ 't7900-subtree.sh' ],
env: subtree_test_environment,
workdir: meson.current_source_dir() / 't',
depends: test_dependencies + bin_wrappers + [ git_subtree ],
timeout: 0,
)
if get_option('docs').contains('man')
subtree_xml = custom_target(
command: asciidoc_common_options + [
'--backend=' + asciidoc_docbook,
'--doctype=manpage',
'--out-file=@OUTPUT@',
'@INPUT@',
],
depends: documentation_deps,
input: 'git-subtree.txt',
output: 'git-subtree.xml',
)
custom_target(
command: [
xmlto,
'-m', '@INPUT@',
'man',
subtree_xml,
'-o',
meson.current_build_dir(),
] + xmlto_extra,
input: [
'../../Documentation/manpage-normal.xsl',
],
output: 'git-subtree.1',
install: true,
install_dir: get_option('mandir') / 'man1',
)
endif
if get_option('docs').contains('html')
custom_target(
command: asciidoc_common_options + [
'--backend=' + asciidoc_html,
'--doctype=manpage',
'--out-file=@OUTPUT@',
'@INPUT@',
],
depends: documentation_deps,
input: 'git-subtree.txt',
output: 'git-subtree.html',
install: true,
install_dir: get_option('datadir') / 'doc/git-doc',
)
endif

View File

@ -1857,7 +1857,6 @@ endforeach
if intl.found()
subdir('po')
endif
subdir('contrib')
# Gitweb requires Perl, so we disable the auto-feature if Perl was not found.
# We make sure further up that Perl is required in case the gitweb option is
@ -1884,6 +1883,8 @@ if get_option('docs') != []
subdir('Documentation')
endif
subdir('contrib')
foreach key, value : {
'DIFF': diff.full_path(),
'GIT_TEST_CMP': diff.full_path() + ' -u',