From: Ramsay Jones <ramsay@ramsayjones•plus.com>
To: git@vger•kernel.org
Cc: Patrick Steinhardt <ps@pks•im>,
irecca.kun@gmail•com, Junio C Hamano <gitster@pobox•com>,
Ramsay Jones <ramsay@ramsayjones•plus.com>
Subject: [PATCH 1/2] meson: fix installation when -Dlibexexdir is set
Date: Wed, 16 Jul 2025 00:32:38 +0100 [thread overview]
Message-ID: <20250715233239.1539780-2-ramsay@ramsayjones.plus.com> (raw)
In-Reply-To: <20250715233239.1539780-1-ramsay@ramsayjones.plus.com>
commit 837f637cf5 ("meson.build: correct setting of GIT_EXEC_PATH",
2025-05-19) corrected the GIT_EXEC_PATH build setting, but then forgot
to update the installation path for the library executables. This causes
a regression when attempting to execute commands, after installing to a
non-standard location (reported here[1]):
$ meson -Dprefix=/tmp/git -Dlibexecdir=libexec-different build
$ meson install
$ /tmp/git/bin/git --exec-path
/tmp/git/libexec-different
$ /tmp/git/bin/git daemon
git: 'daemon' is not a git command. See 'git --help'
In order to fix the issue, use the 'git_exec_path' variable (calculated
while processing -Dlibexecdir) as the 'install_dir' field during the
installation of the library executables.
[1]: <66fd343a-1351-4350-83eb-c797e47b7693@gmail•com>
Reported-by: irecca.kun@gmail•com
Signed-off-by: Ramsay Jones <ramsay@ramsayjones•plus.com>
---
meson.build | 42 +++++++++++++++++++++---------------------
1 file changed, 21 insertions(+), 21 deletions(-)
diff --git a/meson.build b/meson.build
index 7fea4a34d6..26b12c4592 100644
--- a/meson.build
+++ b/meson.build
@@ -1744,7 +1744,7 @@ git_builtin = executable('git',
sources: builtin_sources + 'git.c',
dependencies: [libgit_commonmain],
install: true,
- install_dir: get_option('libexecdir') / 'git-core',
+ install_dir: git_exec_path,
)
bin_wrappers += git_builtin
@@ -1752,35 +1752,35 @@ test_dependencies += executable('git-daemon',
sources: 'daemon.c',
dependencies: [libgit_commonmain],
install: true,
- install_dir: get_option('libexecdir') / 'git-core',
+ install_dir: git_exec_path,
)
test_dependencies += executable('git-sh-i18n--envsubst',
sources: 'sh-i18n--envsubst.c',
dependencies: [libgit_commonmain],
install: true,
- install_dir: get_option('libexecdir') / 'git-core',
+ install_dir: git_exec_path,
)
bin_wrappers += executable('git-shell',
sources: 'shell.c',
dependencies: [libgit_commonmain],
install: true,
- install_dir: get_option('libexecdir') / 'git-core',
+ install_dir: git_exec_path,
)
test_dependencies += executable('git-http-backend',
sources: 'http-backend.c',
dependencies: [libgit_commonmain],
install: true,
- install_dir: get_option('libexecdir') / 'git-core',
+ install_dir: git_exec_path,
)
bin_wrappers += executable('scalar',
sources: 'scalar.c',
dependencies: [libgit_commonmain],
install: true,
- install_dir: get_option('libexecdir') / 'git-core',
+ install_dir: git_exec_path,
)
if curl.found()
@@ -1796,14 +1796,14 @@ if curl.found()
sources: 'remote-curl.c',
dependencies: [libgit_curl],
install: true,
- install_dir: get_option('libexecdir') / 'git-core',
+ install_dir: git_exec_path,
)
test_dependencies += executable('git-http-fetch',
sources: 'http-fetch.c',
dependencies: [libgit_curl],
install: true,
- install_dir: get_option('libexecdir') / 'git-core',
+ install_dir: git_exec_path,
)
if expat.found()
@@ -1811,7 +1811,7 @@ if curl.found()
sources: 'http-push.c',
dependencies: [libgit_curl],
install: true,
- install_dir: get_option('libexecdir') / 'git-core',
+ install_dir: git_exec_path,
)
endif
@@ -1822,7 +1822,7 @@ if curl.found()
)
install_symlink(alias + executable_suffix,
- install_dir: get_option('libexecdir') / 'git-core',
+ install_dir: git_exec_path,
pointing_to: 'git-remote-http',
)
endforeach
@@ -1832,7 +1832,7 @@ test_dependencies += executable('git-imap-send',
sources: 'imap-send.c',
dependencies: [ use_curl_for_imap_send ? libgit_curl : libgit_commonmain ],
install: true,
- install_dir: get_option('libexecdir') / 'git-core',
+ install_dir: git_exec_path,
)
foreach alias : [ 'git-receive-pack', 'git-upload-archive', 'git-upload-pack' ]
@@ -1842,7 +1842,7 @@ foreach alias : [ 'git-receive-pack', 'git-upload-archive', 'git-upload-pack' ]
)
install_symlink(alias + executable_suffix,
- install_dir: get_option('libexecdir') / 'git-core',
+ install_dir: git_exec_path,
pointing_to: 'git',
)
endforeach
@@ -1856,9 +1856,9 @@ foreach symlink : [
'scalar',
]
if meson.version().version_compare('>=1.3.0')
- pointing_to = fs.relative_to(get_option('libexecdir') / 'git-core' / symlink, get_option('bindir'))
+ pointing_to = fs.relative_to(git_exec_path / symlink, get_option('bindir'))
else
- pointing_to = '../libexec/git-core' / symlink
+ pointing_to = '..' / git_exec_path / symlink
endif
install_symlink(symlink,
@@ -1898,7 +1898,7 @@ foreach script : scripts_sh
meson.project_build_root() / 'GIT-BUILD-OPTIONS',
],
install: true,
- install_dir: get_option('libexecdir') / 'git-core',
+ install_dir: git_exec_path,
)
endforeach
@@ -1931,7 +1931,7 @@ if perl_features_enabled
input: perl_header_template,
output: 'GIT-PERL-HEADER',
configuration: {
- 'GITEXECDIR_REL': get_option('libexecdir') / 'git-core',
+ 'GITEXECDIR_REL': git_exec_path,
'PERLLIBDIR_REL': perllibdir,
'LOCALEDIR_REL': get_option('datadir') / 'locale',
'INSTLIBDIR': perllibdir,
@@ -1955,7 +1955,7 @@ if perl_features_enabled
output: fs.stem(script),
command: generate_perl_command,
install: true,
- install_dir: get_option('libexecdir') / 'git-core',
+ install_dir: git_exec_path,
depends: [git_version_file],
)
test_dependencies += generated_script
@@ -1964,9 +1964,9 @@ if perl_features_enabled
bin_wrappers += generated_script
if meson.version().version_compare('>=1.3.0')
- pointing_to = fs.relative_to(get_option('libexecdir') / 'git-core' / fs.stem(script), get_option('bindir'))
+ pointing_to = fs.relative_to(git_exec_path / fs.stem(script), get_option('bindir'))
else
- pointing_to = '../libexec/git-core' / fs.stem(script)
+ pointing_to = '..' / git_exec_path / fs.stem(script)
endif
install_symlink(fs.stem(script),
@@ -1996,7 +1996,7 @@ if python.found()
'@OUTPUT@',
],
install: true,
- install_dir: get_option('libexecdir') / 'git-core',
+ install_dir: git_exec_path,
)
test_dependencies += generated_python
endforeach
@@ -2030,7 +2030,7 @@ mergetools = [
]
foreach mergetool : mergetools
- install_data(mergetool, install_dir: get_option('libexecdir') / 'git-core' / 'mergetools')
+ install_data(mergetool, install_dir: git_exec_path / 'mergetools')
endforeach
if intl.found()
--
2.50.0
next prev parent reply other threads:[~2025-07-15 23:33 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-10 8:03 What's cooking in git.git (Jul 2025, #03; Wed, 9) Junio C Hamano
2025-07-10 19:32 ` [-SPAM-] " Ramsay Jones
2025-07-10 21:12 ` Junio C Hamano
2025-07-10 21:44 ` Ramsay Jones
2025-07-11 8:49 ` Patrick Steinhardt
2025-07-11 15:00 ` Junio C Hamano
2025-07-11 15:39 ` Ramsay Jones
2025-07-15 23:32 ` [PATCH 0/2] meson regression fix Ramsay Jones
2025-07-15 23:32 ` Ramsay Jones [this message]
2025-07-15 23:32 ` [PATCH 2/2] po/meson.build: add missing 'ga' language code Ramsay Jones
2025-07-11 0:07 ` "What's cooking" incremental update report Junio C Hamano
2025-07-11 2:05 ` What's cooking in git.git (Jul 2025, #03; Wed, 9) Ayush Chandekar
2025-07-11 16:01 ` Junio C Hamano
2025-07-11 18:15 ` Ayush Chandekar
2025-07-11 18:34 ` Junio C Hamano
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=20250715233239.1539780-2-ramsay@ramsayjones.plus.com \
--to=ramsay@ramsayjones$(echo .)plus.com \
--cc=git@vger$(echo .)kernel.org \
--cc=gitster@pobox$(echo .)com \
--cc=irecca.kun@gmail$(echo .)com \
--cc=ps@pks$(echo .)im \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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