Skip to content

Commit

Permalink
meson: add options to override build information
Browse files Browse the repository at this point in the history
We inject various different kinds of build information into build
artifacts, like the version string or the commit from which Git was
built. Add options to let users explicitly override this information
with Meson.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
pks-t authored and gitster committed Dec 20, 2024
1 parent cfa01e6 commit 1bc815c
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 0 deletions.
1 change: 1 addition & 0 deletions Documentation/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,7 @@ asciidoc_conf = custom_target(
input: meson.current_source_dir() / 'asciidoc.conf.in',
output: 'asciidoc.conf',
depends: [git_version_file],
env: version_gen_environment,
)

asciidoc_common_options = [
Expand Down
13 changes: 13 additions & 0 deletions meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,16 @@ if get_option('sane_tool_path') != ''
script_environment.prepend('PATH', get_option('sane_tool_path'))
endif

# The environment used by GIT-VERSION-GEN. Note that we explicitly override
# environment variables that might be set by the user. This is by design so
# that we always use whatever Meson has configured instead of what is present
# in the environment.
version_gen_environment = script_environment
version_gen_environment.set('GIT_BUILT_FROM_COMMIT', get_option('built_from_commit'))
version_gen_environment.set('GIT_DATE', get_option('build_date'))
version_gen_environment.set('GIT_USER_AGENT', get_option('user_agent'))
version_gen_environment.set('GIT_VERSION', get_option('version'))

compiler = meson.get_compiler('c')

libgit_sources = [
Expand Down Expand Up @@ -1485,6 +1495,7 @@ git_version_file = custom_target(
],
input: meson.current_source_dir() / 'GIT-VERSION-FILE.in',
output: 'GIT-VERSION-FILE',
env: version_gen_environment,
build_always_stale: true,
)

Expand All @@ -1501,6 +1512,7 @@ version_def_h = custom_target(
# Depend on GIT-VERSION-FILE so that we don't always try to rebuild this
# target for the same commit.
depends: [git_version_file],
env: version_gen_environment,
)

# Build a separate library for "version.c" so that we do not have to rebuild
Expand Down Expand Up @@ -1544,6 +1556,7 @@ if host_machine.system() == 'windows'
input: meson.current_source_dir() / 'git.rc.in',
output: 'git.rc',
depends: [git_version_file],
env: version_gen_environment,
)

common_main_sources += import('windows').compile_resources(git_rc,
Expand Down
10 changes: 10 additions & 0 deletions meson_options.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,16 @@ option('runtime_prefix', type: 'boolean', value: false,
option('sane_tool_path', type: 'string', value: '',
description: 'A colon-separated list of paths to prepend to PATH if your tools in /usr/bin are broken.')

# Build information compiled into Git and other parts like documentation.
option('build_date', type: 'string', value: '',
description: 'Build date reported by our documentation.')
option('built_from_commit', type: 'string', value: '',
description: 'Commit that Git was built from reported by git-version(1).')
option('user_agent', type: 'string', value: '',
description: 'User agent reported to remote servers.')
option('version', type: 'string', value: '',
description: 'Version string reported by git-version(1) and other tools.')

# Features supported by Git.
option('curl', type: 'feature', value: 'enabled',
description: 'Build helpers used to access remotes with the HTTP transport.')
Expand Down

0 comments on commit 1bc815c

Please sign in to comment.