All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.