git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: "D. Ben Knoble" <ben.knoble+github@gmail.com>
Cc: git@vger.kernel.org,  Patrick Steinhardt <ps@pks.im>,
	 Todd Zullinger <tmz@pobox.com>
Subject: Re: [PATCH] meson: make GIT_HTML_PATH configurable
Date: Tue, 04 Nov 2025 06:41:06 -0800	[thread overview]
Message-ID: <xmqqms51rhbx.fsf@gitster.g> (raw)
In-Reply-To: <385992f6020703558f0ba75a1be6c4f9dae08b83.1762264709.git.ben.knoble+github@gmail.com> (D. Ben Knoble's message of "Tue, 4 Nov 2025 08:58:29 -0500")

"D. Ben Knoble" <ben.knoble+github@gmail.com> writes:

> Makefile-based builds can configure Git's internal HTML_PATH by defining
> htmldir, which is useful for packagers that put documentation in
> different locations. Gentoo, for example, uses version-suffixed
> directories like ${prefix}/share/doc/git-2.51 and puts the HTML
> documentation in an 'html' subdirectory of the same.
>
> Propagate the same configuration knob to Meson-based builds so that
> "git --html-path" on such systems can be configured to output the
> correct directory.
>
> Signed-off-by: D. Ben Knoble <ben.knoble+github@gmail.com>
> ---

Makes sense (a more meson-minded person needs to double check my
knee-jerk reaction, though).  It is surprising that 

    $ git grep "dir', " meson_options.txt
    meson_options.txt:option('perllibdir', type: 'string', value: '',

has only a single hit (now two), though.  I thought we have a lot
more flexibility in our build process.

I am also a bit surprised that these things are of type 'string'; I
somehow was expecting that more modern build system would offer
richer (relative to Makefile, that is) types like 'filename' or
'path'.

> I've tested this with a modified live Gentoo ebuild [1] and had good results.

Thanks.  Will queue and wait for others to chime in.

>
> [1]: https://github.com/benknoble/gentoo-repo/commit/f2e6bbc8ec5e061a7f8151e56fa91a9d31b5b30b



>
>  Documentation/howto/meson.build     |  4 ++--
>  Documentation/meson.build           | 12 ++++++------
>  Documentation/technical/meson.build |  4 ++--
>  contrib/contacts/meson.build        |  2 +-
>  contrib/subtree/meson.build         |  2 +-
>  meson.build                         |  7 ++++++-
>  meson_options.txt                   |  2 ++
>  7 files changed, 20 insertions(+), 13 deletions(-)
>
> diff --git a/Documentation/howto/meson.build b/Documentation/howto/meson.build
> index ece20244af..16b9056f24 100644
> --- a/Documentation/howto/meson.build
> +++ b/Documentation/howto/meson.build
> @@ -35,7 +35,7 @@ doc_targets += custom_target(
>    output: 'howto-index.html',
>    depends: documentation_deps,
>    install: true,
> -  install_dir: get_option('datadir') / 'doc/git-doc',
> +  install_dir: htmldir,
>  )
>  
>  foreach howto : howto_sources
> @@ -57,6 +57,6 @@ foreach howto : howto_sources
>      output: fs.stem(howto_stripped.full_path()) + '.html',
>      depends: documentation_deps,
>      install: true,
> -    install_dir: get_option('datadir') / 'doc/git-doc/howto',
> +    install_dir: htmldir / 'howto',
>    )
>  endforeach
> diff --git a/Documentation/meson.build b/Documentation/meson.build
> index 9d24f2da54..c00c9fe7f4 100644
> --- a/Documentation/meson.build
> +++ b/Documentation/meson.build
> @@ -412,7 +412,7 @@ foreach manpage, category : manpages
>        input: manpage,
>        output: fs.stem(manpage) + '.html',
>        install: true,
> -      install_dir: get_option('datadir') / 'doc/git-doc',
> +      install_dir: htmldir,
>      )
>    endif
>  endforeach
> @@ -423,7 +423,7 @@ if get_option('docs').contains('html')
>      output: 'docinfo.html',
>      copy: true,
>      install: true,
> -    install_dir: get_option('datadir') / 'doc/git-doc',
> +    install_dir: htmldir,
>    )
>  
>    configure_file(
> @@ -431,11 +431,11 @@ if get_option('docs').contains('html')
>      output: 'docbook-xsl.css',
>      copy: true,
>      install: true,
> -    install_dir: get_option('datadir') / 'doc/git-doc',
> +    install_dir: htmldir,
>    )
>  
>    install_symlink('index.html',
> -    install_dir: get_option('datadir') / 'doc/git-doc',
> +    install_dir: htmldir,
>      pointing_to: 'git.html',
>    )
>  
> @@ -466,7 +466,7 @@ if get_option('docs').contains('html')
>      input: 'docbook.xsl',
>      output: 'user-manual.html',
>      install: true,
> -    install_dir: get_option('datadir') / 'doc/git-doc',
> +    install_dir: htmldir,
>    )
>  
>    articles = [
> @@ -492,7 +492,7 @@ if get_option('docs').contains('html')
>        output: fs.stem(article) + '.html',
>        depends: documentation_deps,
>        install: true,
> -      install_dir: get_option('datadir') / 'doc/git-doc',
> +      install_dir: htmldir,
>      )
>    endforeach
>  
> diff --git a/Documentation/technical/meson.build b/Documentation/technical/meson.build
> index be698ef22a..faff3964a9 100644
> --- a/Documentation/technical/meson.build
> +++ b/Documentation/technical/meson.build
> @@ -53,7 +53,7 @@ doc_targets += custom_target(
>    output: 'api-index.html',
>    depends: documentation_deps,
>    install: true,
> -  install_dir: get_option('datadir') / 'doc/git-doc/technical',
> +  install_dir: htmldir / 'technical',
>  )
>  
>  foreach article : api_docs + articles
> @@ -63,6 +63,6 @@ foreach article : api_docs + articles
>      output: fs.stem(article) + '.html',
>      depends: documentation_deps,
>      install: true,
> -    install_dir: get_option('datadir') / 'doc/git-doc/technical',
> +    install_dir: htmldir / 'technical',
>    )
>  endforeach
> diff --git a/contrib/contacts/meson.build b/contrib/contacts/meson.build
> index c8fdb35ed9..4ae6b32a03 100644
> --- a/contrib/contacts/meson.build
> +++ b/contrib/contacts/meson.build
> @@ -50,6 +50,6 @@ if get_option('docs').contains('html')
>      input: 'git-contacts.adoc',
>      output: 'git-contacts.html',
>      install: true,
> -    install_dir: get_option('datadir') / 'doc/git-doc',
> +    install_dir: htmldir,
>    )
>  endif
> diff --git a/contrib/subtree/meson.build b/contrib/subtree/meson.build
> index 46cdbcc30c..161435abeb 100644
> --- a/contrib/subtree/meson.build
> +++ b/contrib/subtree/meson.build
> @@ -68,6 +68,6 @@ if get_option('docs').contains('html')
>      input: 'git-subtree.adoc',
>      output: 'git-subtree.html',
>      install: true,
> -    install_dir: get_option('datadir') / 'doc/git-doc',
> +    install_dir: htmldir,
>    )
>  endif
> diff --git a/meson.build b/meson.build
> index 2b763f7c53..1f95a06edb 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -768,13 +768,18 @@ if test_output_directory == ''
>    test_output_directory = meson.project_build_root() / 'test-output'
>  endif
>  
> +htmldir = get_option('htmldir')
> +if htmldir == ''
> +  htmldir = get_option('datadir') / 'doc/git-doc'
> +endif
> +
>  # These variables are used for building libgit.a.
>  libgit_c_args = [
>    '-DBINDIR="' + get_option('bindir') + '"',
>    '-DDEFAULT_GIT_TEMPLATE_DIR="' + get_option('datadir') / 'git-core/templates' + '"',
>    '-DFALLBACK_RUNTIME_PREFIX="' + get_option('prefix') + '"',
>    '-DGIT_HOST_CPU="' + host_machine.cpu_family() + '"',
> -  '-DGIT_HTML_PATH="' + get_option('datadir') / 'doc/git-doc"',
> +  '-DGIT_HTML_PATH="' + htmldir + '"',
>    '-DGIT_INFO_PATH="' + get_option('infodir') + '"',
>    '-DGIT_LOCALE_PATH="' + get_option('localedir') + '"',
>    '-DGIT_MAN_PATH="' + get_option('mandir') + '"',
> diff --git a/meson_options.txt b/meson_options.txt
> index 143dee9237..13d421c067 100644
> --- a/meson_options.txt
> +++ b/meson_options.txt
> @@ -1,6 +1,8 @@
>  # Configuration for Git installation
>  option('perllibdir', type: 'string', value: '',
>    description: 'Directory to install perl lib to. Defaults to <datadir>/perl5')
> +option('htmldir', type: 'string', value: '',
> +  description: 'Directory to install HTML docs to. Defaults to <datadir>/doc/git-doc')
>  
>  # Configuration for how Git behaves at runtime.
>  option('default_pager', type: 'string', value: 'less',
>
> base-commit: 7f278e958afbf9b7e0727631b4c26dcfa1c63d6e

  reply	other threads:[~2025-11-04 14:41 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-04 13:58 [PATCH] meson: make GIT_HTML_PATH configurable D. Ben Knoble
2025-11-04 14:41 ` Junio C Hamano [this message]
2025-11-04 16:47   ` Ben Knoble
2025-11-06  7:51   ` Patrick Steinhardt
2025-11-06  7:51 ` Patrick Steinhardt
2025-11-06 14:08   ` Ben Knoble
2025-11-06 15:29     ` Junio C Hamano
2025-11-11  0:25 ` D. Ben Knoble
2025-11-11 13:43   ` Karthik Nayak
2025-11-11 18:52     ` D. Ben Knoble

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=xmqqms51rhbx.fsf@gitster.g \
    --to=gitster@pobox.com \
    --cc=ben.knoble+github@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=ps@pks.im \
    --cc=tmz@pobox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).