Hi,

On 27/05/2010 00:02, Peter Simons wrote:
> very nice patch, thank you for your efforts!
> 
>  > +         wrapProgram --keep-name "$out/$prog"           \
>  >                       --set TK_LIBRARY "${tk}/lib/tk8.4" \
>  >                       --prefix PATH : "${tk}/bin"

As Marc suggested, I removed some duplications separating the functions
- wrapProgram
- wrapProgramKeepName

It has been tested on git and it does work,
But I don't know how to check how much will be rebuild by this patch...

> Hard-coding the Tk version number in the expression for Git doesn't feel quite
> right. Would it be possible to use pattern matching, i.e. ${tk}/lib/tk* to
> determine the path for TK_LIBRARY?

In the patch tk-libPrefix.patch, I introduce tk.libPrefix="tk8.5" and
change when it was hardcoded with the old value "tk8.4".

-- 
Regards, David
From: David Guibert <[email protected]>
Subject: [PATCH] change tk8.4 by tk.libPrefix

Tk version number is now 8.5 but at several places TK_LIBRARY is set
"${tk}/lib/tk8.4".
As for Python, tk.libPrefix is introduced to match "tk8.5".

Signed-off-by: David Guibert <[email protected]>

---
 pkgs/applications/misc/wordnet/default.nix         |    2 +-
 .../git-and-tools/git/default.nix                  |    2 +-
 .../git-and-tools/git/git-git.nix                  |    2 +-
 .../version-management/mercurial/default.nix       |    2 +-
 pkgs/development/libraries/tk/default.nix          |    4 ++++
 5 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/pkgs/applications/misc/wordnet/default.nix 
b/pkgs/applications/misc/wordnet/default.nix
index f63d61b..86213a8 100644
--- a/pkgs/applications/misc/wordnet/default.nix
+++ b/pkgs/applications/misc/wordnet/default.nix
@@ -15,7 +15,7 @@ stdenv.mkDerivation {
                    "--with-tk="  + tk  + "/lib";
 
   postInstall = ''
-    wrapProgram $out/bin/wishwn --set TK_LIBRARY "${tk}/lib/tk8.4"
+    wrapProgram $out/bin/wishwn --set TK_LIBRARY "${tk}/lib/${tk.libPrefix}"
     wrapProgram $out/bin/wnb    --prefix PATH : "$out/bin"
   '';
 
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 cbc498e..af3eec1 100644
--- a/pkgs/applications/version-management/git-and-tools/git/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/git/default.nix
@@ -83,7 +83,7 @@ stdenv.mkDerivation rec {
 
        do
          wrapProgramKeepName "$out/$prog"                       \
-                     --set TK_LIBRARY "${tk}/lib/tk8.4" \
+                     --set TK_LIBRARY "${tk}/lib/${tk.libPrefix}" \
                      --prefix PATH : "${tk}/bin"
        done
      '' else ''
diff --git a/pkgs/applications/version-management/git-and-tools/git/git-git.nix 
b/pkgs/applications/version-management/git-and-tools/git/git-git.nix
index 0e4efa2..a3b2a60 100644
--- a/pkgs/applications/version-management/git-and-tools/git/git-git.nix
+++ b/pkgs/applications/version-management/git-and-tools/git/git-git.nix
@@ -72,7 +72,7 @@ stdenv.mkDerivation rec {
 
    + (if guiSupport then ''
        # Wrap Tcl/Tk programs
-         wrapArgs="$wrapArgs --set TK_LIBRARY ${tk}/lib/tk8.4"
+         wrapArgs="$wrapArgs --set TK_LIBRARY ${tk}/lib/${tk.libPrefix}"
          wrapArgs="$wrapArgs --prefix PATH : ${tk}/bin"
      '' else "")
 
diff --git a/pkgs/applications/version-management/mercurial/default.nix 
b/pkgs/applications/version-management/mercurial/default.nix
index 198d143..054dd0c 100644
--- a/pkgs/applications/version-management/mercurial/default.nix
+++ b/pkgs/applications/version-management/mercurial/default.nix
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
       hgk=$out/lib/${python.libPrefix}/site-packages/hgext/hgk.py
       EOF
       # setting HG so that hgk can be run itself as well (not only hg view)
-      WRAP_TK=" --set TK_LIBRARY \"${tk}/lib/tk8.4\"
+      WRAP_TK=" --set TK_LIBRARY \"${tk}/lib/${tk.libPrefix}\"
                 --set HG \"$out/bin/hg\"
                 --prefix PATH : \"${tk}/bin\" "
     ''
diff --git a/pkgs/development/libraries/tk/default.nix 
b/pkgs/development/libraries/tk/default.nix
index bf6da7b..290580e 100644
--- a/pkgs/development/libraries/tk/default.nix
+++ b/pkgs/development/libraries/tk/default.nix
@@ -19,4 +19,8 @@ stdenv.mkDerivation {
   buildInputs = [tcl x11];
   
   inherit tcl;
+
+  passthru = {
+    libPrefix = "tk8.5";
+  };
 }
-- 
tg: (5f7765d..) t/tk-libprefix (depends on: t/make-wrapper)
From: David Guibert <[email protected]>
Subject: [PATCH] change wrapProgram to work for git-gui

On 26/05/2010 19:46, Marc Weber wrote:
> Which will not work for all cases because some apss might be using
> something like this: Calling apps relative to current bin directory:
> 
> exec $(dirname $0)/other-app
> 
> So you may fix git-gui but you may break others.
> So should an option be created eg:
> 
>   wrap --keep-name # use .orig/name
>   wrap --keep-path # use .name-wrapped


Signed-off-by: David Guibert <[email protected]>

---
 .../git-and-tools/git/default.nix                  |    5 +++--
 pkgs/build-support/make-wrapper/make-wrapper.sh    |    9 +++++++++
 2 files changed, 12 insertions(+), 2 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 9f7149d..cbc498e 100644
--- a/pkgs/applications/version-management/git-and-tools/git/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/git/default.nix
@@ -79,9 +79,10 @@ stdenv.mkDerivation rec {
 
    + (if guiSupport then ''
        # Wrap Tcl/Tk programs
-       for prog in bin/gitk libexec/git-core/git-gui
+       for prog in bin/gitk libexec/git-core/git-gui 
libexec/git-core/git-citool
+
        do
-         wrapProgram "$out/$prog"                       \
+         wrapProgramKeepName "$out/$prog"                       \
                      --set TK_LIBRARY "${tk}/lib/tk8.4" \
                      --prefix PATH : "${tk}/bin"
        done
diff --git a/pkgs/build-support/make-wrapper/make-wrapper.sh 
b/pkgs/build-support/make-wrapper/make-wrapper.sh
index 08146f3..a51c5b3 100644
--- a/pkgs/build-support/make-wrapper/make-wrapper.sh
+++ b/pkgs/build-support/make-wrapper/make-wrapper.sh
@@ -100,3 +100,12 @@ wrapProgram() {
     mv $prog $hidden
     makeWrapper $hidden $prog "$@"
 }
+
+# Syntax: wrapProgramKeepName <PROGRAM> <MAKE-WRAPPER FLAGS...>
+wrapProgramKeepName() {
+    local prog="$1"
+    local hidden="$(dirname "$prog")/.wrapped/$(basename "$prog")"
+    mkdir "$(dirname "$hidden")" || true
+    mv $prog $hidden
+    makeWrapper $hidden $prog "$@"
+}
-- 
tg: (b5e62a4..) t/make-wrapper (depends on: pu)
_______________________________________________
nix-dev mailing list
[email protected]
https://mail.cs.uu.nl/mailman/listinfo/nix-dev

Reply via email to