Subject: Re: git-gui not working in a non-default Cygwin installation.

From: "Shawn O. Pearce" <[email-masked]>
Date: Sun, 17 Feb 2008 03:02:55 -0500

Jurko Gospodneti <[email-masked]> wrote:
>   I am unsure whether this is the right group for asking this question 
> and if it is not please excuse me and/or redirect me to a more suitable one.

This is a pretty good place to start for all things Git related.  :)
 
>   One of these is that it seems that with the latest git release the 
> git-gui script changed and started hardcoding some absolute paths in it 
> during its build (git-gui/Makefile replaces @@GITGUI_SCRIPT@@ with a 
> hardcoded path). However, this causes the prebuilt Cygwin package to not 
> work in case Cygwin is not installed in its default location at 
> C:\Cygwin (e.g. D:\Cygwin or C:\Program Files\Cygwin).
> 
>   Everything works fine if you manually edit the git-gui script and 
> change the hard-coded path defined there.
> 
>   Is there something I'm missing here? E.g. is there any way for the 
> Cygwin installation to set the correct path here? Or is the user 
> supposed to modify this by hand on every installation? If this is so, 
> then what other such files are expected to be modified?

Gaaaaah.

This is not what I had intended to have happen.  Users should not
need to edit binary package files post installation to make things
work correctly.

There's a lot of people I could try to point fingers at for this,
but I think its all mine.  :-\

First, let me point out that Cygwin's Tcl/Tk is stuck on 8.4.1 and
will probably never get updated again.  I have had some bugs with
git-gui on 8.4.1 on Windows where git-fetch/git-push processes
get hung and don't function correctly.  Upgrading Tcl/Tk to the
native Windows binaries of version 8.4.15 resolves the problem,
but that binary cannot handle Cygwin paths and Cygwin mount points.

Cygwin gets around needing to embed absolute paths into binary
files at build time by using the mount point feature to relocate
those paths onto the user's system.  Thus '/' can be D:\Cygwin on
your system and C:\Program Files\Cygwin on mine.  Executables linked
against the Cygwin library can still function just fine, but native
Win32 programs (like Tcl/Tk 8.4.15) can't.

git-gui assumes its going to be running on a newer (and more stable)
Tcl/Tk so its build process embeds the Windows path into the script.
*sigh*

I'll have to figure out on Cygwin if the $TCL_PATH I'm using is
able to resolve Cygwin absolute paths or not, and then build the
script accordingly.  Fun.

I'll try to work up a Makefile patch in the next few days and get
it into a gitgui-0.9.3 maint release, which will probably roll up
into git 1.5.4.3.

-- 
Shawn.