Skip to content

Commit 837f637

Browse files
ramsay-jonesgitster
authored andcommitted
meson.build: correct setting of GIT_EXEC_PATH
For the non-'runtime prefix' case, the meson build sets the GIT_EXEC_PATH build variable to an absolute path equivalent to <prefix>/libexec/git-core. In comparison, the default make build sets it to a relative path equivalent to 'libexec/git-core'. Indeed, the make build requires the use of some means outside of the Makefile (eg. config.mak[.*] or the command-line) to set GIT_EXEC_PATH to anything other than 'libexec/git-core'. For example, the make invocation: $ make gitexecdir=/some/other/bin all install will build git with GIT_EXEC_PATH set to '/some/other/bin' and install the 'library' executables to that location. However, without setting the 'gitexecdir' make variable, irrespective of the 'runtime prefix' setting, the GIT_EXEC_PATH is always set to 'libexec/git-core'. The meson built-in 'libexecdir' option can be used to provide a similar configurability. The default value for the option is 'libexec'. Attempting to set the option to '' on the command-line, will reset it to the '.' string, presumably to ensure a relative path value. This commit allows the meson build, similar to the above, to configure the project like: $ meson setup --buildtype=debugoptimized -Dprefix=$HOME -Dpcre2=disabled \ -Dlibexecdir=/some/other/bin build so that the GIT_EXEC_PATH is set to '/some/other/bin'. Absent the -Dlibexecdir argument, the GIT_EXEC_PATH is set to 'libexec/git-core'. In order to correct the value of GIT_EXEC_PATH, default the value to the static string value 'libexec/git-core', and only override if the value of the 'libexecdir' option has a value different to 'libexec' or '.'. Also, like the Makefile, add a check for an absolute path when the runtime prefix option is true (and if so, error out). Signed-off-by: Ramsay Jones <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 46a626c commit 837f637

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

meson.build

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1592,10 +1592,19 @@ else
15921592
error('Unsupported CSPRNG backend: ' + csprng_backend)
15931593
endif
15941594

1595+
git_exec_path = 'libexec/git-core'
1596+
libexec = get_option('libexecdir')
1597+
if libexec != 'libexec' and libexec != '.'
1598+
git_exec_path = libexec
1599+
endif
1600+
15951601
if get_option('runtime_prefix')
15961602
libgit_c_args += '-DRUNTIME_PREFIX'
15971603
build_options_config.set('RUNTIME_PREFIX', 'true')
1598-
git_exec_path = get_option('libexecdir') / 'git-core'
1604+
1605+
if git_exec_path.startswith('/')
1606+
error('runtime_prefix requires a relative libexecdir not:', libexec)
1607+
endif
15991608

16001609
if compiler.has_header('mach-o/dyld.h')
16011610
libgit_c_args += '-DHAVE_NS_GET_EXECUTABLE_PATH'
@@ -1632,7 +1641,6 @@ if get_option('runtime_prefix')
16321641
endif
16331642
else
16341643
build_options_config.set('RUNTIME_PREFIX', 'false')
1635-
git_exec_path = get_option('prefix') / get_option('libexecdir') / 'git-core'
16361644
endif
16371645
libgit_c_args += '-DGIT_EXEC_PATH="' + git_exec_path + '"'
16381646

0 commit comments

Comments
 (0)