[PATCH v4 0/4] RUNTIME_PREFIX relocatable Git
- Date: Wed, 29 Nov 2017 10:56:33 -0500
- From: Dan Jacques <dnj@xxxxxxxxxx>
- Subject: [PATCH v4 0/4] RUNTIME_PREFIX relocatable Git
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
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:
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.
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
Changes in v3 from v2:
- Broken into multiple patches now that Perl is isolated in its own
- Working with avarab@, several changes to Perl script runtime prefix
- Moved Perl header body content from Makefile into external template
- Added generic "perllibdir" variable to override Perl installation
- 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
- Consolidated "cached_exec_path" and "argv_exec_path" globals
- 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