Previous threads: v1: https://public-inbox.org/git/20171116170523.28696-1-dnj@xxxxxxxxxx/ v2: https://public-inbox.org/git/20171119173141.4896-1-dnj@xxxxxxxxxx/ v3: https://public-inbox.org/git/20171127164055.93283-1-dnj@xxxxxxxxxx/ This is a small update to incorporate some Windows fixes from Johannes. At this point, it passes the full test suite on Linux, Mac, and FreeBSD, as well as the Travis.ci test suites, with and without RUNTIME_PREFIX/RUNTIME_PREFIX_PERL flags. I'm happy with the patch set, and feel that it is ready to move forward. However, while it's been looked at by several people, and I have incorporated reviewer feedback, the patch set hasn't received any formal LGTM-style responses yet. I'm not sure what standard of review is required to move forward with a patch on this project, so maybe this is totally fine, but I wanted to make sure to point this out. I also want to note Ævar Arnfjörð Bjarmason's RFC: https://public-inbox.org/git/20171129153436.24471-1-avarab@xxxxxxxxx/T/ The proposed patch set conflicts with the Perl installation directory changes in this patch set, as avarab@ notes. The proposed Perl installation process would simplify patch 0002 in this patch set. I don't think the landing order is terribly impactful - if this lands first, the patch in the RFC would delete a few more lines, and if this lands later, patch 0002 would largely not be necessary. Cheers, -Dan Built using this "config.mak" w/ autoconf: === BEGIN config.mak === RUNTIME_PREFIX = YesPlease RUNTIME_PREFIX_PERL = YesPlease gitexecdir = libexec/git-core template_dir = share/git-core/templates sysconfdir = etc === END config.mak === Changes in v4 from v3: - Incorporated some quoting and Makefile dependency fixes, courtesy of <johannes.schindelin@xxxxxx>. Changes in v3 from v2: - Broken into multiple patches now that Perl is isolated in its own RUNTIME_PREFIX_PERL flag. - Working with avarab@, several changes to Perl script runtime prefix support: - Moved Perl header body content from Makefile into external template file(s). - Added generic "perllibdir" variable to override Perl installation path. - RUNTIME_PREFIX_PERL generated script header is more descriptive and consistent with how the C version operates. - Fixed Generated Perl header Makefile dependency, should rebuild when dependent files and flags change. - Changed some of the new RUNTIME_PREFIX trace strings to use consistent formatting and terminology. Changes in v2 from v1: - Added comments and formatting to improve readability of platform-sepecific executable path resolution sleds in `git_get_exec_path`. - Consolidated "cached_exec_path" and "argv_exec_path" globals into "exec_path_value". - Use `strbuf_realpath` instead of `realpath` for procfs resolution. - Removed new environment variable exports. Git with RUNTIME_PREFIX no longer exports or consumes any additional environment information. - Updated Perl script resolution strategy: rather than having Git export the relative executable path to the Perl scripts, they now resolve it independently when RUNTIME_PREFIX_PERL is enabled. - Updated resolution strategy for "gettext()": use system_path() instead of special environment variable. - Added `sysctl` executable resolution support for BSDs that don't mount "procfs" by default (most of them). Dan Jacques (4): Makefile: generate Perl header from template file Makefile: add support for "perllibdir" Makefile: add Perl runtime prefix support exec_cmd: RUNTIME_PREFIX on some POSIX systems .gitignore | 1 + Makefile | 111 +++++++++++++-- cache.h | 1 + common-main.c | 4 +- config.mak.uname | 7 + exec_cmd.c | 239 ++++++++++++++++++++++++++++----- exec_cmd.h | 4 +- gettext.c | 8 +- git.c | 2 +- perl/Makefile | 52 ++++++- perl/header_fixed_prefix.pl.template | 1 + perl/header_runtime_prefix.pl.template | 24 ++++ 12 files changed, 396 insertions(+), 58 deletions(-) create mode 100644 perl/header_fixed_prefix.pl.template create mode 100644 perl/header_runtime_prefix.pl.template -- 2.15.0.chromium12