forked from msysgit/git
-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Makefile: add Perl runtime prefix support
Broaden the RUNTIME_PREFIX flag to configure Git's Perl scripts to locate the Git installation's Perl support libraries by resolving against the script's path, rather than hard-coding that path at build-time. Hard-coding at build time worked on previous RUNTIME_PREFIX configurations (i.e., Windows) because the Perl scripts were run within a virtual filesystem whose paths were consistent regardless of the location of the actual installation. This will no longer be the case for non-Windows RUNTIME_PREFIX users. When enabled, RUNTIME_PREFIX now requires Perl's system paths to be expressed relative to a common installation directory in the Makefile, and uses that relationship to locate support files based on the known starting point of the script being executed, much like RUNTIME_PREFIX does for the Git binary. This change enables Git's Perl scripts to work when their Git installation is relocated or moved to another system, even when they are not in a virtual filesystem environment. Signed-off-by: Dan Jacques <dnj@google.com> Thanks-to: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Thanks-to: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
- Loading branch information
1 parent
f6a0ad4
commit 07d90ea
Showing
3 changed files
with
107 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
# BEGIN RUNTIME_PREFIX generated code. | ||
# | ||
# This finds our Git::* libraries relative to the script's runtime path. | ||
sub __git_system_path { | ||
my ($relpath) = @_; | ||
my $gitexecdir_relative = '@@GITEXECDIR_REL@@'; | ||
|
||
# GIT_EXEC_PATH is supplied by `git` or the test suite. | ||
my $exec_path; | ||
if (exists $ENV{GIT_EXEC_PATH}) { | ||
$exec_path = $ENV{GIT_EXEC_PATH}; | ||
} else { | ||
# This can happen if this script is being directly invoked instead of run | ||
# by "git". | ||
require FindBin; | ||
$exec_path = $FindBin::Bin; | ||
} | ||
|
||
# Trim off the relative gitexecdir path to get the system path. | ||
(my $prefix = $exec_path) =~ s/\Q$gitexecdir_relative\E$//; | ||
|
||
require File::Spec; | ||
return File::Spec->catdir($prefix, $relpath); | ||
} | ||
|
||
BEGIN { | ||
use lib split /@@PATHSEP@@/, | ||
( | ||
$ENV{GITPERLLIB} || | ||
do { | ||
my $perllibdir = __git_system_path('@@PERLLIBDIR_REL@@'); | ||
(-e $perllibdir) || die("Invalid system path ($relpath): $path"); | ||
$perllibdir; | ||
} | ||
); | ||
|
||
# Export the system locale directory to the I18N module. The locale directory | ||
# is only installed if NO_GETTEXT is set. | ||
$Git::I18N::TEXTDOMAINDIR = __git_system_path('@@LOCALEDIR_REL@@'); | ||
} | ||
|
||
# END RUNTIME_PREFIX generated code. |