Merge branch 'ps/build-meson-html'
The build procedure based on meson learned to generate HTML documention pages. * ps/build-meson-html: Documentation: wire up sanity checks for Meson t/Makefile: make "check-meson" work with Dash meson: install static files for HTML documentation meson: generate articles Documentation: refactor "howto-index.sh" for out-of-tree builds Documentation: refactor "api-index.sh" for out-of-tree builds meson: generate user manual Documentation: inline user-manual.conf meson: generate HTML pages for all man page categories meson: fix generation of merge tools meson: properly wire up dependencies for our docs meson: wire up support for AsciiDoctormaint
commit
1b4e9a5f8b
|
|
@ -12,6 +12,7 @@ cmds-*.txt
|
||||||
mergetools-*.txt
|
mergetools-*.txt
|
||||||
SubmittingPatches.txt
|
SubmittingPatches.txt
|
||||||
tmp-doc-diff/
|
tmp-doc-diff/
|
||||||
|
tmp-meson-diff/
|
||||||
GIT-ASCIIDOCFLAGS
|
GIT-ASCIIDOCFLAGS
|
||||||
/.build/
|
/.build/
|
||||||
/GIT-EXCLUDED-PROGRAMS
|
/GIT-EXCLUDED-PROGRAMS
|
||||||
|
|
|
||||||
|
|
@ -339,6 +339,7 @@ clean:
|
||||||
$(RM) $(cmds_txt) $(mergetools_txt) *.made
|
$(RM) $(cmds_txt) $(mergetools_txt) *.made
|
||||||
$(RM) GIT-ASCIIDOCFLAGS
|
$(RM) GIT-ASCIIDOCFLAGS
|
||||||
$(RM) asciidoc.conf asciidoctor-extensions.rb
|
$(RM) asciidoc.conf asciidoctor-extensions.rb
|
||||||
|
$(RM) -rf tmp-meson-diff
|
||||||
|
|
||||||
docinfo.html: docinfo-html.in
|
docinfo.html: docinfo-html.in
|
||||||
$(QUIET_GEN)$(RM) $@ && cat $< >$@
|
$(QUIET_GEN)$(RM) $@ && cat $< >$@
|
||||||
|
|
@ -362,12 +363,12 @@ manpage-cmd = $(QUIET_XMLTO)$(XMLTO) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $<
|
||||||
%.xml : %.txt $(ASCIIDOC_DEPS)
|
%.xml : %.txt $(ASCIIDOC_DEPS)
|
||||||
$(QUIET_ASCIIDOC)$(TXT_TO_XML) -d manpage -o $@ $<
|
$(QUIET_ASCIIDOC)$(TXT_TO_XML) -d manpage -o $@ $<
|
||||||
|
|
||||||
user-manual.xml: user-manual.txt user-manual.conf $(ASCIIDOC_DEPS)
|
user-manual.xml: user-manual.txt $(ASCIIDOC_DEPS)
|
||||||
$(QUIET_ASCIIDOC)$(TXT_TO_XML) -d book -o $@ $<
|
$(QUIET_ASCIIDOC)$(TXT_TO_XML) -d book -o $@ $<
|
||||||
|
|
||||||
technical/api-index.txt: technical/api-index-skel.txt \
|
technical/api-index.txt: technical/api-index-skel.txt \
|
||||||
technical/api-index.sh $(patsubst %,%.txt,$(API_DOCS))
|
technical/api-index.sh $(patsubst %,%.txt,$(API_DOCS))
|
||||||
$(QUIET_GEN)cd technical && '$(SHELL_PATH_SQ)' ./api-index.sh
|
$(QUIET_GEN)'$(SHELL_PATH_SQ)' technical/api-index.sh ./technical ./technical/api-index.txt
|
||||||
|
|
||||||
technical/%.html: ASCIIDOC_EXTRA += -a git-relative-html-prefix=../
|
technical/%.html: ASCIIDOC_EXTRA += -a git-relative-html-prefix=../
|
||||||
$(patsubst %,%.html,$(API_DOCS) technical/api-index $(TECH_DOCS)): %.html : %.txt \
|
$(patsubst %,%.html,$(API_DOCS) technical/api-index $(TECH_DOCS)): %.html : %.txt \
|
||||||
|
|
@ -411,8 +412,8 @@ gitman.info: gitman.texi
|
||||||
$(patsubst %.txt,%.texi,$(MAN_TXT)): %.texi : %.xml
|
$(patsubst %.txt,%.texi,$(MAN_TXT)): %.texi : %.xml
|
||||||
$(QUIET_DB2TEXI)$(DOCBOOK2X_TEXI) --to-stdout $*.xml >$@
|
$(QUIET_DB2TEXI)$(DOCBOOK2X_TEXI) --to-stdout $*.xml >$@
|
||||||
|
|
||||||
howto-index.txt: howto-index.sh $(HOWTO_TXT)
|
howto-index.txt: howto/howto-index.sh $(HOWTO_TXT)
|
||||||
$(QUIET_GEN)'$(SHELL_PATH_SQ)' ./howto-index.sh $(sort $(HOWTO_TXT)) >$@
|
$(QUIET_GEN)'$(SHELL_PATH_SQ)' ./howto/howto-index.sh $(sort $(HOWTO_TXT)) >$@
|
||||||
|
|
||||||
$(patsubst %,%.html,$(ARTICLES)) : %.html : %.txt $(ASCIIDOC_DEPS)
|
$(patsubst %,%.html,$(ARTICLES)) : %.html : %.txt $(ASCIIDOC_DEPS)
|
||||||
$(QUIET_ASCIIDOC)$(TXT_TO_HTML) $*.txt
|
$(QUIET_ASCIIDOC)$(TXT_TO_HTML) $*.txt
|
||||||
|
|
@ -494,6 +495,20 @@ lint-docs-fsck-msgids: $(LINT_DOCS_FSCK_MSGIDS)
|
||||||
lint-docs-manpages:
|
lint-docs-manpages:
|
||||||
$(QUIET_GEN)./lint-manpages.sh
|
$(QUIET_GEN)./lint-manpages.sh
|
||||||
|
|
||||||
|
.PHONY: lint-docs-meson
|
||||||
|
lint-docs-meson:
|
||||||
|
@# awk acts up when trying to match single quotes, so we use \047 instead.
|
||||||
|
@mkdir -p tmp-meson-diff && \
|
||||||
|
awk "/^manpages = {$$/ {flag=1 ; next } /^}$$/ { flag=0 } flag { gsub(/^ \047/, \"\"); gsub(/\047 : [157],\$$/, \"\"); print }" meson.build | \
|
||||||
|
grep -v -e '#' -e '^$$' | \
|
||||||
|
sort >tmp-meson-diff/meson.txt && \
|
||||||
|
ls git*.txt scalar.txt | grep -v -e git-bisect-lk2009.txt -e git-tools.txt >tmp-meson-diff/actual.txt && \
|
||||||
|
if ! cmp tmp-meson-diff/meson.txt tmp-meson-diff/actual.txt; then \
|
||||||
|
echo "Meson man pages differ from actual man pages:"; \
|
||||||
|
diff -u tmp-meson-diff/meson.txt tmp-meson-diff/actual.txt; \
|
||||||
|
exit 1; \
|
||||||
|
fi
|
||||||
|
|
||||||
## Lint: list of targets above
|
## Lint: list of targets above
|
||||||
.PHONY: lint-docs
|
.PHONY: lint-docs
|
||||||
lint-docs: lint-docs-fsck-msgids
|
lint-docs: lint-docs-fsck-msgids
|
||||||
|
|
@ -501,6 +516,7 @@ lint-docs: lint-docs-gitlink
|
||||||
lint-docs: lint-docs-man-end-blurb
|
lint-docs: lint-docs-man-end-blurb
|
||||||
lint-docs: lint-docs-man-section-order
|
lint-docs: lint-docs-man-section-order
|
||||||
lint-docs: lint-docs-manpages
|
lint-docs: lint-docs-manpages
|
||||||
|
lint-docs: lint-docs-meson
|
||||||
|
|
||||||
ifeq ($(wildcard po/Makefile),po/Makefile)
|
ifeq ($(wildcard po/Makefile),po/Makefile)
|
||||||
doc-l10n install-l10n::
|
doc-l10n install-l10n::
|
||||||
|
|
|
||||||
|
|
@ -25,12 +25,22 @@ manmanual=Git Manual
|
||||||
mansource=Git @GIT_VERSION@
|
mansource=Git @GIT_VERSION@
|
||||||
revdate=@GIT_DATE@
|
revdate=@GIT_DATE@
|
||||||
|
|
||||||
|
ifdef::doctype-book[]
|
||||||
|
[titles]
|
||||||
|
underlines="__","==","--","~~","^^"
|
||||||
|
endif::doctype-book[]
|
||||||
|
|
||||||
ifdef::backend-docbook[]
|
ifdef::backend-docbook[]
|
||||||
[linkgit-inlinemacro]
|
[linkgit-inlinemacro]
|
||||||
|
ifndef::doctype-book[]
|
||||||
{0%{target}}
|
{0%{target}}
|
||||||
{0#<citerefentry>}
|
{0#<citerefentry>}
|
||||||
{0#<refentrytitle>{target}</refentrytitle><manvolnum>{0}</manvolnum>}
|
{0#<refentrytitle>{target}</refentrytitle><manvolnum>{0}</manvolnum>}
|
||||||
{0#</citerefentry>}
|
{0#</citerefentry>}
|
||||||
|
endif::doctype-book[]
|
||||||
|
ifdef::doctype-book[]
|
||||||
|
<ulink url="{target}.html">{target}{0?({0})}</ulink>
|
||||||
|
endif::doctype-book[]
|
||||||
|
|
||||||
[literal-inlinemacro]
|
[literal-inlinemacro]
|
||||||
{eval:re.sub(r'(<[-a-zA-Z0-9.]+>)', r'<emphasis>\1</emphasis>', re.sub(r'([\[\s|()>]|^|\]|>)(\.?([-a-zA-Z0-9:+=~@,\/_^\$]+\.?)+)',r'\1<literal>\2</literal>', re.sub(r'(\.\.\.?)([^\]$.])', r'<literal>\1</literal>\2', macros.passthroughs[int(attrs['passtext'][1:-1])] if attrs['passtext'][1:-1].isnumeric() else attrs['passtext'][1:-1])))}
|
{eval:re.sub(r'(<[-a-zA-Z0-9.]+>)', r'<emphasis>\1</emphasis>', re.sub(r'([\[\s|()>]|^|\]|>)(\.?([-a-zA-Z0-9:+=~@,\/_^\$]+\.?)+)',r'\1<literal>\2</literal>', re.sub(r'(\.\.\.?)([^\]$.])', r'<literal>\1</literal>\2', macros.passthroughs[int(attrs['passtext'][1:-1])] if attrs['passtext'][1:-1].isnumeric() else attrs['passtext'][1:-1])))}
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ do
|
||||||
file="$txt"
|
file="$txt"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "* link:$file[$title] $from
|
echo "* link:howto/$(basename "$file")[$title] $from
|
||||||
$abstract
|
$abstract
|
||||||
|
|
||||||
"
|
"
|
||||||
|
|
@ -0,0 +1,62 @@
|
||||||
|
howto_sources = [
|
||||||
|
'coordinate-embargoed-releases.txt',
|
||||||
|
'keep-canonical-history-correct.txt',
|
||||||
|
'maintain-git.txt',
|
||||||
|
'new-command.txt',
|
||||||
|
'rebase-from-internal-branch.txt',
|
||||||
|
'rebuild-from-update-hook.txt',
|
||||||
|
'recover-corrupted-blob-object.txt',
|
||||||
|
'recover-corrupted-object-harder.txt',
|
||||||
|
'revert-a-faulty-merge.txt',
|
||||||
|
'revert-branch-rebase.txt',
|
||||||
|
'separating-topic-branches.txt',
|
||||||
|
'setup-git-server-over-http.txt',
|
||||||
|
'update-hook-example.txt',
|
||||||
|
'use-git-daemon.txt',
|
||||||
|
'using-merge-subtree.txt',
|
||||||
|
'using-signed-tag-in-pull-request.txt',
|
||||||
|
]
|
||||||
|
|
||||||
|
howto_index = custom_target(
|
||||||
|
command: [
|
||||||
|
shell,
|
||||||
|
meson.current_source_dir() / 'howto-index.sh',
|
||||||
|
'@INPUT@',
|
||||||
|
],
|
||||||
|
env: script_environment,
|
||||||
|
capture: true,
|
||||||
|
input: howto_sources,
|
||||||
|
output: 'howto-index.txt',
|
||||||
|
)
|
||||||
|
|
||||||
|
custom_target(
|
||||||
|
command: asciidoc_html_options,
|
||||||
|
input: howto_index,
|
||||||
|
output: 'howto-index.html',
|
||||||
|
depends: documentation_deps,
|
||||||
|
install: true,
|
||||||
|
install_dir: get_option('datadir') / 'doc/git-doc',
|
||||||
|
)
|
||||||
|
|
||||||
|
foreach howto : howto_sources
|
||||||
|
howto_stripped = custom_target(
|
||||||
|
command: [
|
||||||
|
find_program('sed'),
|
||||||
|
'-e',
|
||||||
|
'1,/^$/d',
|
||||||
|
'@INPUT@',
|
||||||
|
],
|
||||||
|
input: howto,
|
||||||
|
output: fs.stem(howto) + '.stripped',
|
||||||
|
capture: true,
|
||||||
|
)
|
||||||
|
|
||||||
|
custom_target(
|
||||||
|
command: asciidoc_html_options,
|
||||||
|
input: howto_stripped,
|
||||||
|
output: fs.stem(howto_stripped.full_path()) + '.html',
|
||||||
|
depends: documentation_deps,
|
||||||
|
install: true,
|
||||||
|
install_dir: get_option('datadir') / 'doc/git-doc/howto',
|
||||||
|
)
|
||||||
|
endforeach
|
||||||
|
|
@ -204,30 +204,88 @@ manpages = {
|
||||||
'gitworkflows.txt' : 7,
|
'gitworkflows.txt' : 7,
|
||||||
}
|
}
|
||||||
|
|
||||||
asciidoc = find_program('asciidoc')
|
docs_backend = get_option('docs_backend')
|
||||||
|
if docs_backend == 'auto'
|
||||||
|
if find_program('asciidoc', required: false).found()
|
||||||
|
docs_backend = 'asciidoc'
|
||||||
|
elif find_program('asciidoctor', required: false).found()
|
||||||
|
docs_backend = 'asciidoctor'
|
||||||
|
else
|
||||||
|
error('Neither asciidoc nor asciidoctor were found.')
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
if docs_backend == 'asciidoc'
|
||||||
|
asciidoc = find_program('asciidoc', required: true)
|
||||||
|
asciidoc_html = 'xhtml11'
|
||||||
|
asciidoc_docbook = 'docbook'
|
||||||
|
xmlto_extra = [ ]
|
||||||
|
|
||||||
|
asciidoc_conf = custom_target(
|
||||||
|
command: [
|
||||||
|
shell,
|
||||||
|
meson.project_source_root() / 'GIT-VERSION-GEN',
|
||||||
|
meson.project_source_root(),
|
||||||
|
'@INPUT@',
|
||||||
|
'@OUTPUT@',
|
||||||
|
],
|
||||||
|
input: 'asciidoc.conf.in',
|
||||||
|
output: 'asciidoc.conf',
|
||||||
|
depends: [git_version_file],
|
||||||
|
env: version_gen_environment,
|
||||||
|
)
|
||||||
|
|
||||||
|
asciidoc_common_options = [
|
||||||
|
asciidoc,
|
||||||
|
'--conf-file=' + asciidoc_conf.full_path(),
|
||||||
|
'--attribute=build_dir=' + meson.current_build_dir(),
|
||||||
|
]
|
||||||
|
|
||||||
|
documentation_deps = [
|
||||||
|
asciidoc_conf,
|
||||||
|
]
|
||||||
|
elif docs_backend == 'asciidoctor'
|
||||||
|
asciidoctor = find_program('asciidoctor', required: true)
|
||||||
|
asciidoc_html = 'xhtml5'
|
||||||
|
asciidoc_docbook = 'docbook5'
|
||||||
|
xmlto_extra = [
|
||||||
|
'--skip-validation',
|
||||||
|
'-x', meson.current_source_dir() / 'manpage.xsl',
|
||||||
|
]
|
||||||
|
|
||||||
|
asciidoctor_extensions = custom_target(
|
||||||
|
command: [
|
||||||
|
shell,
|
||||||
|
meson.project_source_root() / 'GIT-VERSION-GEN',
|
||||||
|
meson.project_source_root(),
|
||||||
|
'@INPUT@',
|
||||||
|
'@OUTPUT@',
|
||||||
|
],
|
||||||
|
input: 'asciidoctor-extensions.rb.in',
|
||||||
|
output: 'asciidoctor-extensions.rb',
|
||||||
|
depends: [git_version_file],
|
||||||
|
env: version_gen_environment,
|
||||||
|
)
|
||||||
|
|
||||||
|
asciidoc_common_options = [
|
||||||
|
asciidoctor,
|
||||||
|
'--attribute', 'compat-mode',
|
||||||
|
'--attribute', 'tabsize=8',
|
||||||
|
'--attribute', 'litdd=--',
|
||||||
|
'--attribute', 'docinfo=shared',
|
||||||
|
'--attribute', 'build_dir=' + meson.current_build_dir(),
|
||||||
|
'--load-path', meson.current_build_dir(),
|
||||||
|
'--require', 'asciidoctor-extensions',
|
||||||
|
]
|
||||||
|
|
||||||
|
documentation_deps = [
|
||||||
|
asciidoctor_extensions,
|
||||||
|
]
|
||||||
|
endif
|
||||||
|
|
||||||
git = find_program('git', required: false)
|
git = find_program('git', required: false)
|
||||||
xmlto = find_program('xmlto')
|
xmlto = find_program('xmlto')
|
||||||
|
|
||||||
asciidoc_conf = custom_target(
|
|
||||||
command: [
|
|
||||||
shell,
|
|
||||||
meson.project_source_root() / 'GIT-VERSION-GEN',
|
|
||||||
meson.project_source_root(),
|
|
||||||
'@INPUT@',
|
|
||||||
'@OUTPUT@',
|
|
||||||
],
|
|
||||||
input: meson.current_source_dir() / 'asciidoc.conf.in',
|
|
||||||
output: 'asciidoc.conf',
|
|
||||||
depends: [git_version_file],
|
|
||||||
env: version_gen_environment,
|
|
||||||
)
|
|
||||||
|
|
||||||
asciidoc_common_options = [
|
|
||||||
asciidoc,
|
|
||||||
'--conf-file=' + asciidoc_conf.full_path(),
|
|
||||||
'--attribute=build_dir=' + meson.current_build_dir(),
|
|
||||||
]
|
|
||||||
|
|
||||||
cmd_lists = [
|
cmd_lists = [
|
||||||
'cmds-ancillaryinterrogators.txt',
|
'cmds-ancillaryinterrogators.txt',
|
||||||
'cmds-ancillarymanipulators.txt',
|
'cmds-ancillarymanipulators.txt',
|
||||||
|
|
@ -243,17 +301,14 @@ cmd_lists = [
|
||||||
'cmds-foreignscminterface.txt',
|
'cmds-foreignscminterface.txt',
|
||||||
]
|
]
|
||||||
|
|
||||||
documentation_deps = [
|
|
||||||
asciidoc_conf,
|
|
||||||
]
|
|
||||||
|
|
||||||
documentation_deps += custom_target(
|
documentation_deps += custom_target(
|
||||||
command: [
|
command: [
|
||||||
perl,
|
perl,
|
||||||
meson.current_source_dir() / 'cmd-list.perl',
|
'@INPUT@',
|
||||||
meson.project_source_root(),
|
meson.project_source_root(),
|
||||||
meson.current_build_dir(),
|
meson.current_build_dir(),
|
||||||
] + cmd_lists,
|
] + cmd_lists,
|
||||||
|
input: 'cmd-list.perl',
|
||||||
output: cmd_lists
|
output: cmd_lists
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -261,15 +316,15 @@ foreach mode : [ 'diff', 'merge' ]
|
||||||
documentation_deps += custom_target(
|
documentation_deps += custom_target(
|
||||||
command: [
|
command: [
|
||||||
shell,
|
shell,
|
||||||
meson.current_source_dir() / 'generate-mergetool-list.sh',
|
'@INPUT@',
|
||||||
'..',
|
'..',
|
||||||
'diff',
|
mode,
|
||||||
'@OUTPUT@'
|
'@OUTPUT@'
|
||||||
],
|
],
|
||||||
env: [
|
env: [
|
||||||
'MERGE_TOOLS_DIR=' + meson.project_source_root() / 'mergetools',
|
'MERGE_TOOLS_DIR=' + meson.project_source_root() / 'mergetools',
|
||||||
'TOOL_MODE=' + mode,
|
|
||||||
],
|
],
|
||||||
|
input: 'generate-mergetool-list.sh',
|
||||||
output: 'mergetools-' + mode + '.txt',
|
output: 'mergetools-' + mode + '.txt',
|
||||||
)
|
)
|
||||||
endforeach
|
endforeach
|
||||||
|
|
@ -278,12 +333,13 @@ foreach manpage, category : manpages
|
||||||
if get_option('docs').contains('man')
|
if get_option('docs').contains('man')
|
||||||
manpage_xml_target = custom_target(
|
manpage_xml_target = custom_target(
|
||||||
command: asciidoc_common_options + [
|
command: asciidoc_common_options + [
|
||||||
'--backend=docbook',
|
'--backend=' + asciidoc_docbook,
|
||||||
'--doctype=manpage',
|
'--doctype=manpage',
|
||||||
'--out-file=@OUTPUT@',
|
'--out-file=@OUTPUT@',
|
||||||
meson.current_source_dir() / manpage,
|
'@INPUT@',
|
||||||
],
|
],
|
||||||
depends: documentation_deps,
|
depends: documentation_deps,
|
||||||
|
input: manpage,
|
||||||
output: fs.stem(manpage) + '.xml',
|
output: fs.stem(manpage) + '.xml',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -291,16 +347,18 @@ foreach manpage, category : manpages
|
||||||
manpage_target = custom_target(
|
manpage_target = custom_target(
|
||||||
command: [
|
command: [
|
||||||
xmlto,
|
xmlto,
|
||||||
'-m',
|
'-m', '@INPUT0@',
|
||||||
meson.current_source_dir() / 'manpage-normal.xsl',
|
'-m', '@INPUT1@',
|
||||||
'-m',
|
|
||||||
meson.current_source_dir() / 'manpage-bold-literal.xsl',
|
|
||||||
'--stringparam',
|
'--stringparam',
|
||||||
'man.base.url.for.relative.links=' + get_option('prefix') / get_option('mandir'),
|
'man.base.url.for.relative.links=' + get_option('prefix') / get_option('mandir'),
|
||||||
'man',
|
'man',
|
||||||
manpage_xml_target,
|
manpage_xml_target,
|
||||||
'-o',
|
'-o',
|
||||||
meson.current_build_dir(),
|
meson.current_build_dir(),
|
||||||
|
] + xmlto_extra,
|
||||||
|
input: [
|
||||||
|
'manpage-normal.xsl',
|
||||||
|
'manpage-bold-literal.xsl',
|
||||||
],
|
],
|
||||||
output: manpage_path,
|
output: manpage_path,
|
||||||
install: true,
|
install: true,
|
||||||
|
|
@ -308,18 +366,139 @@ foreach manpage, category : manpages
|
||||||
)
|
)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if get_option('docs').contains('html') and category == 1
|
if get_option('docs').contains('html')
|
||||||
custom_target(
|
custom_target(
|
||||||
command: asciidoc_common_options + [
|
command: asciidoc_common_options + [
|
||||||
'--backend=xhtml11',
|
'--backend=' + asciidoc_html,
|
||||||
'--doctype=manpage',
|
'--doctype=manpage',
|
||||||
'--out-file=@OUTPUT@',
|
'--out-file=@OUTPUT@',
|
||||||
meson.current_source_dir() / manpage,
|
'@INPUT@',
|
||||||
],
|
],
|
||||||
depends: documentation_deps,
|
depends: documentation_deps,
|
||||||
|
input: manpage,
|
||||||
output: fs.stem(manpage) + '.html',
|
output: fs.stem(manpage) + '.html',
|
||||||
install: true,
|
install: true,
|
||||||
install_dir: get_option('datadir') / 'doc/git-doc',
|
install_dir: get_option('datadir') / 'doc/git-doc',
|
||||||
)
|
)
|
||||||
endif
|
endif
|
||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
|
if get_option('docs').contains('html')
|
||||||
|
configure_file(
|
||||||
|
input: 'docinfo-html.in',
|
||||||
|
output: 'docinfo.html',
|
||||||
|
copy: true,
|
||||||
|
install: true,
|
||||||
|
install_dir: get_option('datadir') / 'doc/git-doc',
|
||||||
|
)
|
||||||
|
|
||||||
|
configure_file(
|
||||||
|
input: 'docbook-xsl.css',
|
||||||
|
output: 'docbook-xsl.css',
|
||||||
|
copy: true,
|
||||||
|
install: true,
|
||||||
|
install_dir: get_option('datadir') / 'doc/git-doc',
|
||||||
|
)
|
||||||
|
|
||||||
|
install_symlink('index.html',
|
||||||
|
install_dir: get_option('datadir') / 'doc/git-doc',
|
||||||
|
pointing_to: 'git.html',
|
||||||
|
)
|
||||||
|
|
||||||
|
xsltproc = find_program('xsltproc')
|
||||||
|
|
||||||
|
user_manual_xml = custom_target(
|
||||||
|
command: asciidoc_common_options + [
|
||||||
|
'--backend=' + asciidoc_docbook,
|
||||||
|
'--doctype=book',
|
||||||
|
'--out-file=@OUTPUT@',
|
||||||
|
'@INPUT@',
|
||||||
|
],
|
||||||
|
input: 'user-manual.txt',
|
||||||
|
output: 'user-manual.xml',
|
||||||
|
depends: documentation_deps,
|
||||||
|
)
|
||||||
|
|
||||||
|
custom_target(
|
||||||
|
command: [
|
||||||
|
xsltproc,
|
||||||
|
'--xinclude',
|
||||||
|
'--stringparam', 'html.stylesheet', 'docbook-xsl.css',
|
||||||
|
'--param', 'generate.consistent.ids', '1',
|
||||||
|
'--output', '@OUTPUT@',
|
||||||
|
'@INPUT@',
|
||||||
|
user_manual_xml,
|
||||||
|
],
|
||||||
|
input: 'docbook.xsl',
|
||||||
|
output: 'user-manual.html',
|
||||||
|
install: true,
|
||||||
|
install_dir: get_option('datadir') / 'doc/git-doc',
|
||||||
|
)
|
||||||
|
|
||||||
|
articles = [
|
||||||
|
'DecisionMaking.txt',
|
||||||
|
'MyFirstContribution.txt',
|
||||||
|
'MyFirstObjectWalk.txt',
|
||||||
|
'ReviewingGuidelines.txt',
|
||||||
|
'SubmittingPatches',
|
||||||
|
'ToolsForGit.txt',
|
||||||
|
'git-bisect-lk2009.txt',
|
||||||
|
'git-tools.txt',
|
||||||
|
]
|
||||||
|
|
||||||
|
foreach article : articles
|
||||||
|
custom_target(
|
||||||
|
command: asciidoc_common_options + [
|
||||||
|
'--backend=' + asciidoc_html,
|
||||||
|
'--out-file=@OUTPUT@',
|
||||||
|
'@INPUT@',
|
||||||
|
],
|
||||||
|
input: article,
|
||||||
|
output: fs.stem(article) + '.html',
|
||||||
|
depends: documentation_deps,
|
||||||
|
install: true,
|
||||||
|
install_dir: get_option('datadir') / 'doc/git-doc',
|
||||||
|
)
|
||||||
|
endforeach
|
||||||
|
|
||||||
|
asciidoc_html_options = asciidoc_common_options + [
|
||||||
|
'--backend=' + asciidoc_html,
|
||||||
|
'--out-file=@OUTPUT@',
|
||||||
|
'--attribute', 'git-relative-html-prefix=../',
|
||||||
|
'@INPUT@',
|
||||||
|
]
|
||||||
|
|
||||||
|
subdir('howto')
|
||||||
|
subdir('technical')
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Sanity check that we are not missing any tests present in 't/'. This check
|
||||||
|
# only runs once at configure time and is thus best-effort, only. Furthermore,
|
||||||
|
# it only verifies man pages for the sake of simplicity.
|
||||||
|
configured_manpages = manpages.keys() + [ 'git-bisect-lk2009.txt', 'git-tools.txt' ]
|
||||||
|
actual_manpages = run_command(shell, '-c', 'ls git*.txt scalar.txt',
|
||||||
|
check: true,
|
||||||
|
env: script_environment,
|
||||||
|
).stdout().strip().split('\n')
|
||||||
|
|
||||||
|
if configured_manpages != actual_manpages
|
||||||
|
missing_manpage = [ ]
|
||||||
|
foreach actual_manpage : actual_manpages
|
||||||
|
if actual_manpage not in configured_manpages
|
||||||
|
missing_manpage += actual_manpage
|
||||||
|
endif
|
||||||
|
endforeach
|
||||||
|
if missing_manpage.length() > 0
|
||||||
|
error('Man page found, but not configured:\n\n - ' + '\n - '.join(missing_manpage))
|
||||||
|
endif
|
||||||
|
|
||||||
|
superfluous_manpage = [ ]
|
||||||
|
foreach configured_manpage : configured_manpages
|
||||||
|
if configured_manpage not in actual_manpages
|
||||||
|
superfluous_manpage += configured_manpage
|
||||||
|
endif
|
||||||
|
endforeach
|
||||||
|
if superfluous_manpage.length() > 0
|
||||||
|
error('Man page configured, but not found:\n\n - ' + '\n - '.join(superfluous_manpage))
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,17 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
|
if test $# -ne 2
|
||||||
|
then
|
||||||
|
echo >&2 "USAGE: $0 <SOURCE_DIR> <OUTPUT>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
SOURCE_DIR="$1"
|
||||||
|
OUTPUT="$2"
|
||||||
|
|
||||||
(
|
(
|
||||||
|
cd "$SOURCE_DIR"
|
||||||
|
|
||||||
c=////////////////////////////////////////////////////////////////
|
c=////////////////////////////////////////////////////////////////
|
||||||
skel=api-index-skel.txt
|
skel=api-index-skel.txt
|
||||||
sed -e '/^\/\/ table of contents begin/q' "$skel"
|
sed -e '/^\/\/ table of contents begin/q' "$skel"
|
||||||
|
|
@ -18,11 +29,11 @@
|
||||||
done
|
done
|
||||||
echo "$c"
|
echo "$c"
|
||||||
sed -n -e '/^\/\/ table of contents end/,$p' "$skel"
|
sed -n -e '/^\/\/ table of contents end/,$p' "$skel"
|
||||||
) >api-index.txt+
|
) >"$OUTPUT"+
|
||||||
|
|
||||||
if test -f api-index.txt && cmp api-index.txt api-index.txt+ >/dev/null
|
if test -f "$OUTPUT" && cmp "$OUTPUT" "$OUTPUT"+ >/dev/null
|
||||||
then
|
then
|
||||||
rm -f api-index.txt+
|
rm -f "$OUTPUT"+
|
||||||
else
|
else
|
||||||
mv api-index.txt+ api-index.txt
|
mv "$OUTPUT"+ "$OUTPUT"
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,66 @@
|
||||||
|
api_docs = [
|
||||||
|
'api-error-handling.txt',
|
||||||
|
'api-merge.txt',
|
||||||
|
'api-parse-options.txt',
|
||||||
|
'api-simple-ipc.txt',
|
||||||
|
'api-trace2.txt',
|
||||||
|
]
|
||||||
|
|
||||||
|
articles = [
|
||||||
|
'bitmap-format.txt',
|
||||||
|
'build-systems.txt',
|
||||||
|
'bundle-uri.txt',
|
||||||
|
'commit-graph.txt',
|
||||||
|
'directory-rename-detection.txt',
|
||||||
|
'hash-function-transition.txt',
|
||||||
|
'long-running-process-protocol.txt',
|
||||||
|
'multi-pack-index.txt',
|
||||||
|
'packfile-uri.txt',
|
||||||
|
'pack-heuristics.txt',
|
||||||
|
'parallel-checkout.txt',
|
||||||
|
'partial-clone.txt',
|
||||||
|
'platform-support.txt',
|
||||||
|
'racy-git.txt',
|
||||||
|
'reftable.txt',
|
||||||
|
'remembering-renames.txt',
|
||||||
|
'repository-version.txt',
|
||||||
|
'rerere.txt',
|
||||||
|
'scalar.txt',
|
||||||
|
'send-pack-pipeline.txt',
|
||||||
|
'shallow.txt',
|
||||||
|
'sparse-checkout.txt',
|
||||||
|
'sparse-index.txt',
|
||||||
|
'trivial-merge.txt',
|
||||||
|
'unit-tests.txt',
|
||||||
|
]
|
||||||
|
|
||||||
|
api_index = custom_target(
|
||||||
|
command: [
|
||||||
|
shell,
|
||||||
|
meson.current_source_dir() / 'api-index.sh',
|
||||||
|
meson.current_source_dir(),
|
||||||
|
'@OUTPUT@',
|
||||||
|
],
|
||||||
|
env: script_environment,
|
||||||
|
input: api_docs,
|
||||||
|
output: 'api-index.txt',
|
||||||
|
)
|
||||||
|
|
||||||
|
custom_target(
|
||||||
|
command: asciidoc_html_options,
|
||||||
|
input: api_index,
|
||||||
|
output: 'api-index.html',
|
||||||
|
depends: documentation_deps,
|
||||||
|
install: true,
|
||||||
|
install_dir: get_option('datadir') / 'doc/git-doc/technical',
|
||||||
|
)
|
||||||
|
|
||||||
|
foreach article : api_docs + articles
|
||||||
|
custom_target(
|
||||||
|
command: asciidoc_html_options,
|
||||||
|
input: article,
|
||||||
|
output: fs.stem(article) + '.html',
|
||||||
|
install: true,
|
||||||
|
install_dir: get_option('datadir') / 'doc/git-doc/technical',
|
||||||
|
)
|
||||||
|
endforeach
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
[titles]
|
|
||||||
underlines="__","==","--","~~","^^"
|
|
||||||
|
|
||||||
[attributes]
|
|
||||||
caret=^
|
|
||||||
startsb=[
|
|
||||||
endsb=]
|
|
||||||
tilde=~
|
|
||||||
|
|
||||||
[linkgit-inlinemacro]
|
|
||||||
<ulink url="{target}.html">{target}{0?({0})}</ulink>
|
|
||||||
|
|
@ -85,6 +85,8 @@ option('docs', type: 'array', choices: ['man', 'html'], value: [],
|
||||||
description: 'Which documenattion formats to build and install.')
|
description: 'Which documenattion formats to build and install.')
|
||||||
option('default_help_format', type: 'combo', choices: ['man', 'html'], value: 'man',
|
option('default_help_format', type: 'combo', choices: ['man', 'html'], value: 'man',
|
||||||
description: 'Default format used when executing git-help(1).')
|
description: 'Default format used when executing git-help(1).')
|
||||||
|
option('docs_backend', type: 'combo', choices: ['asciidoc', 'asciidoctor', 'auto'], value: 'auto',
|
||||||
|
description: 'Which backend to use to generate documentation.')
|
||||||
|
|
||||||
# Testing.
|
# Testing.
|
||||||
option('tests', type: 'boolean', value: true,
|
option('tests', type: 'boolean', value: true,
|
||||||
|
|
|
||||||
|
|
@ -2,4 +2,5 @@
|
||||||
/test-results
|
/test-results
|
||||||
/.prove
|
/.prove
|
||||||
/chainlinttmp
|
/chainlinttmp
|
||||||
|
/mesontmp
|
||||||
/out/
|
/out/
|
||||||
|
|
|
||||||
12
t/Makefile
12
t/Makefile
|
|
@ -103,6 +103,7 @@ clean-except-prove-cache: clean-chainlint
|
||||||
|
|
||||||
clean: clean-except-prove-cache
|
clean: clean-except-prove-cache
|
||||||
$(RM) -r '$(TEST_RESULTS_DIRECTORY_SQ)'
|
$(RM) -r '$(TEST_RESULTS_DIRECTORY_SQ)'
|
||||||
|
$(RM) -r mesontmp
|
||||||
$(RM) .prove
|
$(RM) .prove
|
||||||
|
|
||||||
clean-chainlint:
|
clean-chainlint:
|
||||||
|
|
@ -116,16 +117,17 @@ check-chainlint:
|
||||||
|
|
||||||
check-meson:
|
check-meson:
|
||||||
@# awk acts up when trying to match single quotes, so we use \047 instead.
|
@# awk acts up when trying to match single quotes, so we use \047 instead.
|
||||||
@printf "%s\n" \
|
@mkdir -p mesontmp && \
|
||||||
|
printf "%s\n" \
|
||||||
"integration_tests t[0-9][0-9][0-9][0-9]-*.sh" \
|
"integration_tests t[0-9][0-9][0-9][0-9]-*.sh" \
|
||||||
"unit_test_programs unit-tests/t-*.c" \
|
"unit_test_programs unit-tests/t-*.c" \
|
||||||
"clar_test_suites unit-tests/u-*.c" | \
|
"clar_test_suites unit-tests/u-*.c" | \
|
||||||
while read -r variable pattern; do \
|
while read -r variable pattern; do \
|
||||||
meson_tests=$$(awk "/^$$variable = \[\$$/ {flag=1 ; next } /^]$$/ { flag=0 } flag { gsub(/^ \047/, \"\"); gsub(/\047,\$$/, \"\"); print }" meson.build) && \
|
awk "/^$$variable = \[\$$/ {flag=1 ; next } /^]$$/ { flag=0 } flag { gsub(/^ \047/, \"\"); gsub(/\047,\$$/, \"\"); print }" meson.build >mesontmp/meson.txt && \
|
||||||
actual_tests=$$(ls $$pattern) && \
|
ls $$pattern >mesontmp/actual.txt && \
|
||||||
if test "$$meson_tests" != "$$actual_tests"; then \
|
if ! cmp mesontmp/meson.txt mesontmp/actual.txt; then \
|
||||||
echo "Meson tests differ from actual tests:"; \
|
echo "Meson tests differ from actual tests:"; \
|
||||||
diff -u <(echo "$$meson_tests") <(echo "$$actual_tests"); \
|
diff -u mesontmp/meson.txt mesontmp/actual.txt; \
|
||||||
exit 1; \
|
exit 1; \
|
||||||
fi; \
|
fi; \
|
||||||
done
|
done
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue