about summary refs log tree commit diff
path: root/pkgs/applications/version-management/git-and-tools
diff options
context:
space:
mode:
authorzimbatm <zimbatm@zimbatm.com>2016-02-26 00:03:17 +0000
committerzimbatm <zimbatm@zimbatm.com>2016-02-26 00:03:17 +0000
commit428e12d23ff7bfa5f4be4c318c989aaab8827e35 (patch)
tree6e300a65f23393975285336fe9fbf7931254488f /pkgs/applications/version-management/git-and-tools
parent853a213698710b0f2e88524287a60ebabb3b9a42 (diff)
parent11733b39b58a377ecebde444d2c630731882eb50 (diff)
downloadnixlib-428e12d23ff7bfa5f4be4c318c989aaab8827e35.tar
nixlib-428e12d23ff7bfa5f4be4c318c989aaab8827e35.tar.gz
nixlib-428e12d23ff7bfa5f4be4c318c989aaab8827e35.tar.bz2
nixlib-428e12d23ff7bfa5f4be4c318c989aaab8827e35.tar.lz
nixlib-428e12d23ff7bfa5f4be4c318c989aaab8827e35.tar.xz
nixlib-428e12d23ff7bfa5f4be4c318c989aaab8827e35.tar.zst
nixlib-428e12d23ff7bfa5f4be4c318c989aaab8827e35.zip
Merge pull request #13154 from zimbatm/git-rebase-fix-v2
git: fixes references to gettext properly
Diffstat (limited to 'pkgs/applications/version-management/git-and-tools')
-rw-r--r--pkgs/applications/version-management/git-and-tools/git/default.nix3
-rw-r--r--pkgs/applications/version-management/git-and-tools/git/git-sh-i18n.patch78
2 files changed, 80 insertions, 1 deletions
diff --git a/pkgs/applications/version-management/git-and-tools/git/default.nix b/pkgs/applications/version-management/git-and-tools/git/default.nix
index 3515f60a86c0..2878fec3c095 100644
--- a/pkgs/applications/version-management/git-and-tools/git/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/git/default.nix
@@ -24,6 +24,7 @@ stdenv.mkDerivation {
   patches = [
     ./docbook2texi.patch
     ./symlinks-in-bin.patch
+    ./git-sh-i18n.patch
   ];
 
   buildInputs = [curl openssl zlib expat gettext cpio makeWrapper libiconv]
@@ -85,7 +86,7 @@ stdenv.mkDerivation {
 
       # Fix references to gettext.
       substituteInPlace $out/libexec/git-core/git-sh-i18n \
-          --replace 'gettext.sh' '${gettext}/bin/gettext.sh'
+          --subst-var-by gettext ${gettext}
 
       # gzip (and optionally bzip2, xz, zip) are runtime dependencies for
       # gitweb.cgi, need to patch so that it's found
diff --git a/pkgs/applications/version-management/git-and-tools/git/git-sh-i18n.patch b/pkgs/applications/version-management/git-and-tools/git/git-sh-i18n.patch
new file mode 100644
index 000000000000..8e3ee2bce896
--- /dev/null
+++ b/pkgs/applications/version-management/git-and-tools/git/git-sh-i18n.patch
@@ -0,0 +1,78 @@
+diff --git a/git-sh-i18n.sh b/git-sh-i18n.sh
+index e6c3116..4e34a2c 100644
+--- a/git-sh-i18n.sh
++++ b/git-sh-i18n.sh
+@@ -15,69 +15,11 @@ else
+ fi
+ export TEXTDOMAINDIR
+ 
+-# First decide what scheme to use...
+-GIT_INTERNAL_GETTEXT_SH_SCHEME=fallthrough
+-if test -n "@@USE_GETTEXT_SCHEME@@"
+-then
+-	GIT_INTERNAL_GETTEXT_SH_SCHEME="@@USE_GETTEXT_SCHEME@@"
+-elif test -n "$GIT_INTERNAL_GETTEXT_TEST_FALLBACKS"
+-then
+-	: no probing necessary
+-elif test -n "$GIT_GETTEXT_POISON"
+-then
+-	GIT_INTERNAL_GETTEXT_SH_SCHEME=poison
+-elif type gettext.sh >/dev/null 2>&1
+-then
+-	# GNU libintl's gettext.sh
+-	GIT_INTERNAL_GETTEXT_SH_SCHEME=gnu
+-elif test "$(gettext -h 2>&1)" = "-h"
+-then
+-	# gettext binary exists but no gettext.sh. likely to be a gettext
+-	# binary on a Solaris or something that is not GNU libintl and
+-	# lack eval_gettext.
+-	GIT_INTERNAL_GETTEXT_SH_SCHEME=gettext_without_eval_gettext
+-fi
+-export GIT_INTERNAL_GETTEXT_SH_SCHEME
+-
+-# ... and then follow that decision.
+-case "$GIT_INTERNAL_GETTEXT_SH_SCHEME" in
+-gnu)
+-	# Use libintl's gettext.sh, or fall back to English if we can't.
+-	. gettext.sh
+-	;;
+-gettext_without_eval_gettext)
+-	# Solaris has a gettext(1) but no eval_gettext(1)
+-	eval_gettext () {
+-		gettext "$1" | (
+-			export PATH $(git sh-i18n--envsubst --variables "$1");
+-			git sh-i18n--envsubst "$1"
+-		)
+-	}
+-	;;
+-poison)
+-	# Emit garbage so that tests that incorrectly rely on translatable
+-	# strings will fail.
+-	gettext () {
+-		printf "%s" "# GETTEXT POISON #"
+-	}
+-
+-	eval_gettext () {
+-		printf "%s" "# GETTEXT POISON #"
+-	}
+-	;;
+-*)
+-	gettext () {
+-		printf "%s" "$1"
+-	}
++# GNU gettext
++export GIT_INTERNAL_GETTEXT_SH_SCHEME=gnu
++export PATH=@gettext@/bin:$PATH
+ 
+-	eval_gettext () {
+-		printf "%s" "$1" | (
+-			export PATH $(git sh-i18n--envsubst --variables "$1");
+-			git sh-i18n--envsubst "$1"
+-		)
+-	}
+-	;;
+-esac
++. @gettext@/bin/gettext.sh
+ 
+ # Git-specific wrapper functions
+ gettextln () {