On Wed, 2012-02-29 at 20:15 -0500, Christopher Faylor wrote: > On Wed, Feb 29, 2012 at 06:57:27PM -0600, Yaakov (Cygwin/X) wrote: > >Using X requires user intervention to start an X server first. No > >amount of automatic dependencies will change this, and therefore I don't > >expect that the number of questions would change one iota. > > I agree 100% but this now qualifies as a FAQ so maybe we should add an > entry about tcl/tk.
Patch attached. Yaakov
2012-02-?? Yaakov Selkowitz <yselkowitz@...> * faq-programming.xml (faq.programming.make-execvp): Remove obsolete information about Tcl/Tk. (faq.programming.dll-relocatable): Ditto. * faq-using.xml (faq.using.tcl-tk): Rewrite to reflect switch to X11 Tcl/Tk. Index: faq-programming.xml =================================================================== RCS file: /cvs/src/src/winsup/doc/faq-programming.xml,v retrieving revision 1.17 diff -u -p -r1.17 faq-programming.xml --- faq-programming.xml 13 Aug 2010 11:52:13 -0000 1.17 +++ faq-programming.xml 1 Mar 2012 05:51:21 -0000 @@ -93,18 +93,6 @@ C:/cygwin/bin /bin ntfs binary,cygexec 0 C:/cygwin/bin /usr/bin ntfs binary,cygexec 0 0 </screen> -<para>Note that if you have Tcl/Tk installed, you must additionally -exclude <literal>tclsh84</literal> and <literal>wish84</literal>, which -are linked to the Cygwin DLL but are not actually Cygwin programs: -</para> - -<screen> -C:/cygwin/bin/tclsh84.exe /bin/tclsh84.exe ntfs binary,notexec 0 0 -C:/cygwin/bin/tclsh84.exe /usr/bin/tclsh84.exe ntfs binary,notexec 0 0 -C:/cygwin/bin/wish84.exe /bin/wish84.exe ntfs binary,notexec 0 0 -C:/cygwin/bin/wish84.exe /usr/bin/wish84.exe ntfs binary,notexec 0 0 -</screen> - <para>If you have added other non-Cygwin programs to a path you want to mount cygexec, you can find them with a script like this: </para> @@ -574,8 +562,6 @@ $(LD) EXPFILE --dll -o DLLNAME OBJS LIBS </para> <para>LIBS is the list of libraries you want to link the DLL against. For example, you may or may not want -lcygwin. You may want -lkernel32. -Tcl links against -lcygwin -ladvapi32 -luser32 -lgdi32 -lcomdlg32 --lkernel32. </para> <para>DEFFILE is the name of your definitions file. A simple DEFFILE would consist of ``EXPORTS'' followed by a list of all symbols which should @@ -614,9 +600,8 @@ int entry (HINSTANT hinst, DWORD reason, } </screen> -<para>You may put an optional `--subsystem windows' on the $(LD) lines. The -Tcl build does this, but I admit that I no longer remember whether -this is important. Note that if you specify a --subsytem <x> flag to ld, +<para>You may put an optional `--subsystem windows' on the $(LD) lines. +Note that if you specify a --subsytem <x> flag to ld, the -e entry must come after the subsystem flag, since the subsystem flag sets a different default entry point. </para> Index: faq-using.xml =================================================================== RCS file: /cvs/src/src/winsup/doc/faq-using.xml,v retrieving revision 1.43 diff -u -p -r1.43 faq-using.xml --- faq-using.xml 27 Feb 2012 19:45:26 -0000 1.43 +++ faq-using.xml 1 Mar 2012 05:51:21 -0000 @@ -1060,16 +1060,27 @@ usually all set and you can start the ss </answer></qandaentry> <qandaentry id="faq.using.tcl-tk"> -<question><para>Why doesn't Cygwin tcl/tk understand Cygwin paths?</para></question> +<question><para>Why do my Tk programs not work anymore?</para></question> <answer> -<para>The versions of Tcl/Tk distributed with Cygwin (e.g. cygtclsh80.exe, -cygwish80.exe) are not actually "Cygwin versions" of those tools. -They are built as native libraries, which means they do not understand -Cygwin mounts or symbolic links. -</para> -<para>See the entry "How do I convert between Windows and UNIX paths?" -elsewhere in this FAQ. +<para>Previous versions of Tcl/Tk distributed with Cygwin (e.g. tclsh84.exe, +wish84.exe) were not actually "Cygwin versions" of those tools. +They were built as native libraries, which means they did not understand +Cygwin mounts or symbolic links. This lead to all sorts of problems interacting +with true Cygwin programs.</para> + +<para>As of February 2012, this was replaced with a version of Tcl/Tk which +uses Cygwin's POSIX APIs and X11 for GUI functionality. If you get a message +such as this when trying to start a Tk app:</para> + +<screen> + Application initialization failed: couldn't connect to display "" +</screen> + +<para>Then you need to start an X server, or if one is already running, set the +<literal>DISPLAY</literal> variable to the proper value. The Cygwin distribution +includes an X server; please see the <ulink url="http://x.cygwin.com/docs/ug/cygwin-x-ug.html">Cygwin/X User Guide</ulink> +for installation and startup instructions. </para></answer></qandaentry> <qandaentry id="faq.using.ipv6">
