On Mon, 2020-03-23 at 13:07 +0100, Jan Nijtmans wrote: > Op zo 22 mrt. 2020 om 23:34 schreef Yaakov Selkowitz: > > A word of caution wrt Tcl/Tk for Cygwin: upstream incorrectly treats > > Cygwin as a Win32 platform, necessitating extensive patches to make it > > comply with *NIX/X11 standards. These patches CANNOT be dropped > > without breaking compatibility, since Win32 and X11 APIs do not > > interact. Fortunately, Tcl/Tk moves rather slowly, so the existing > > patches should serve you well for some time. > > Yes, I'm aware of that. Of course, I'll be very careful to guarantee > 100% binary compatibility. > > Still, I have some questions. At first, I noted that the current Tcl > version is 8.6.8, which is two patchlevels behind (released > December 22, 2017, more than 3 years old, while 8.6.10 > is released November 21, 2019, 4 months ago). Work to do!
It's only two patchlevels. As I said, Tcl/Tk moves slowly. > So, I tried starting with x86_64-w64-mingw32. Here are my remarks. > > - There are 7 patches included. Only one of them applies cleanly, > the others are not really necessary (Please correct me if I'm wrong. > Let's go through them. The bulk of the patchset is from Fedora, but they haven't updated recently either. > - tcl-8.5.6-mingw.patch > This one is wrong. Changing tools for cross-compilations should > be done by "configure ... --host=x86_64-w64-mingw32" You could try without it, it's not clear from the logs why it was needed. > - tcl-8.6.1-nativezlib.patch > OK. Tcl provides its own zlib.dll, in case it's not available externally. > In Cygwin it is available (as "mingw64-x86_64-zlib"), which is prefered. > (I added "cygautoreconf", so this patch would be part of "configure") > - tcl-8.6.3-autopath.patch > Not necessary for building, Only needed when we want to run > Tcl in a non-standard installed directory. Keep in mind that the MinGW stuff can, and in some cases actually has to, run from within the sysroot. (On Linux, this is done with Wine, but obviously we can just run them directly.) Therefore, anything needed for running properly should be left in. > - tcl-8.6.5-hidden.patch > Wrong. This exports some internal symbols, which are not > supposed to be exported at all. This is done in Fedora for their Linux builds as well. According to the logs, expect uses (used?) these symbols. Since my Cygwin builds haven't carried the patch, maybe it's no longer needed, but I'd double- check first. > - tcl-8-6-5-paralle-make-fix.patch > Already fixed upstream. Besides, it's for unix/Makefile.in, not for mingw. Probably just carried over from the native build patchset when first created. > - tcl-mingw-w64-compatibility.patch > Already fixed upstream: > <https://core.tcl-lang.org/tcl/info/8fbf108ea77e5351> Ok. > - tcl-nativetclsh.patch > Only needed when running Tcl, not for building the libraries See above wrt keeping MinGW runnable. > Further on, I noted the the resulting hints file contains: > requires: tcl > while I would expect: > requires: mingw64-x86_64-zlib You'll have to diagnose this one. > Here is my cygport file so far. HTH, -- Yaakov