From: Dan Jacques <dnj@google.com>
To: git@vger.kernel.org
Cc: gitster@pobox.com, avarab@gmail.com, Johannes.Schindelin@gmx.de,
Dan Jacques <dnj@google.com>
Subject: [PATCH v6 0/3] RUNTIME_PREFIX relocatable Git
Date: Sun, 18 Mar 2018 22:50:43 -0400 [thread overview]
Message-ID: <20180319025046.58052-1-dnj@google.com> (raw)
This patch set expands support for the RUNTIME_PREFIX configuration flag,
currently only used on Windows builds, to include Linux, Darwin, and
FreeBSD. When Git is built with RUNTIME_PREFIX enabled, it resolves its
ancillary paths relative to the runtime location of its executable
rather than hard-coding them at compile-time, allowing a Git
installation to be deployed to a path other than the one in which it
was built/installed.
Note that RUNTIME_PREFIX is not currently used outside of Windows.
This patch set should not have an impact on default Git builds.
I'm dusting this back off now that avarab@'s Perl Makefile simplification
patch set has landed. It's been a few months, so I'm a bit rusty, but I think
that I've incorporated all of the feedback. Please take a look and let me know
what you think!
Previous threads:
v1: https://public-inbox.org/git/20171116170523.28696-1-dnj@google.com/
v2: https://public-inbox.org/git/20171119173141.4896-1-dnj@google.com/
v3: https://public-inbox.org/git/20171127164055.93283-1-dnj@google.com/
v4: https://public-inbox.org/git/20171129223807.91343-1-dnj@google.com/
v5: https://public-inbox.org/git/20180108030239.92036-1-dnj@google.com/
Changes in v6 from v5:
- Rebased on top of "master".
- Updated commit messages.
- Updated runtime prefix Perl header comment and code to clarify when and
why FindBin is used.
- With Johannes' blessing on Git-for-Windows, folded "RUNTIME_PREFIX_PERL"
functionality into "RUNTIME_PREFIX".
- Updated "run-command" test to accommodate RUNTIME_PREFIX trace messages.
=== Testing ===
The latest patch set is available for testing on my GitHub fork, including
"travis.ci" testing. The "runtime-prefix" branch includes a "config.mak"
commit that enables runtime prefix for the Travis build; the
"runtime-prefix-no-config" omits this file, testing this patch without
runtime prefix enabled:
- https://github.com/danjacques/git/tree/runtime-prefix
- https://github.com/danjacques/git/tree/runtime-prefix-no-config
- https://travis-ci.org/danjacques/git/branches
Built/tested locally using this "config.mak" w/ autoconf:
=== Example config.mak ===
## (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)
=== Revision History ===
Changes in v5 from v4:
- Rebase on top of "next", notably incorporating the
"ab/simplify-perl-makefile" branch.
- Cleaner Makefile relative path enforcement.
- Update Perl header template path now that the "perl/" directory has
fewer build-related files in it.
- Update Perl runtime prefix header to use a general system path resolution
function.
- Implemented the injection of the locale directory into Perl's
"Git/I18N.pm" module from the runtime prefix Perl script header.
- Updated Perl's "Git/I18N.pm" module to accept injected locale directory.
- Added more content to some comments.
Changes in v4 from v3:
- Incorporated some quoting and Makefile dependency fixes, courtesy of
<johannes.schindelin@gmx.de>.
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 (3):
Makefile: generate Perl header from template file
Makefile: add Perl runtime prefix support
exec_cmd: RUNTIME_PREFIX on some POSIX systems
.gitignore | 1 +
Makefile | 120 +++++++++--
cache.h | 1 +
common-main.c | 4 +-
config.mak.uname | 7 +
exec_cmd.c | 241 ++++++++++++++++++++---
exec_cmd.h | 4 +-
gettext.c | 8 +-
git.c | 2 +-
perl/Git/I18N.pm | 2 +-
perl/header_templates/fixed_prefix.template.pl | 1 +
perl/header_templates/runtime_prefix.template.pl | 40 ++++
t/t0061-run-command.sh | 2 +-
13 files changed, 379 insertions(+), 54 deletions(-)
create mode 100644 perl/header_templates/fixed_prefix.template.pl
create mode 100644 perl/header_templates/runtime_prefix.template.pl
--
2.15.0.chromium12
next reply other threads:[~2018-03-19 2:50 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-19 2:50 Dan Jacques [this message]
2018-03-19 2:50 ` [PATCH v6 1/3] Makefile: generate Perl header from template file Dan Jacques
2018-03-19 3:07 ` Eric Sunshine
2018-03-19 2:50 ` [PATCH v6 2/3] Makefile: add Perl runtime prefix support Dan Jacques
2018-03-19 17:14 ` Junio C Hamano
2018-03-19 17:21 ` Daniel Jacques
2018-03-19 19:12 ` Ævar Arnfjörð Bjarmason
2018-03-19 19:14 ` Daniel Jacques
2018-03-19 19:17 ` Daniel Jacques
2018-03-19 20:41 ` Junio C Hamano
2018-03-19 19:21 ` Ævar Arnfjörð Bjarmason
2018-03-19 19:47 ` Daniel Jacques
2018-03-19 21:32 ` Martin Ågren
2018-03-19 22:07 ` Daniel Jacques
2018-03-19 2:50 ` [PATCH v6 3/3] exec_cmd: RUNTIME_PREFIX on some POSIX systems Dan Jacques
2018-03-19 17:24 ` Junio C Hamano
2018-03-19 17:30 ` Daniel Jacques
2018-03-19 19:27 ` Ævar Arnfjörð Bjarmason
2018-03-19 19:38 ` Daniel Jacques
2018-03-19 17:02 ` [PATCH v6 0/3] RUNTIME_PREFIX relocatable Git Junio C Hamano
2018-03-19 19:30 ` Ævar Arnfjörð Bjarmason
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=20180319025046.58052-1-dnj@google.com \
--to=dnj@google.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=avarab@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.