[tlbuild] Patches for building Textiles with CYGWIN-gcc-3.4.4

Rodrigo Medina rodmedina at cantv.net
Fri Oct 3 02:53:30 CEST 2008


Hi TeXlive Team,
Angelo Graziosi wrote:
>It seems that applying patch #6 is equivalent to stop at patch #5, i.e.
>we can avoid to change .../texk/web2c/configure.
>In any case, the result is that xetex.exe depend on a few Cygwin dlls

I think that we have come up against two kinds of problems with CYGWIN:
a) Problems due to peculiarities of CYGWIN that make the building
   process to differ from other platforms.
b) Bugs in Makefile-configure.

The patches #2-#6 have to do with problems of the first kind. In particular
The patch #6 is related to a test that is done in configure if the 
stdc++lib can be linked statically. The result of this test is used in
building various programs like (pdftex, xetex). Two tries of flags are
provided for different platforms. None of those tries is correct for CYGWIN,
so the test fails. But actually in CYGWIN stdc++lib is linked statically by
default; so the failure of the test has no consequences for most programs.
But in the case of xetex the result of the test is used to determine if a
bunch of other libraries are linked statically or dynamically.
The patch #6 just provides a set of flags that works for CYGWIN.

The fact that, after applying the patches, there are still libraries linked
dynamically, I believe is due to bugs in configure. In fact xetex is not the
only program in which this happens, so I think that to modify xetex.mk is
not
the proper thing to do. Follows the list of programs that 
are linked dynamically to libraries different from cygwin1.dll


$ cygcheck ./info.exe
.\info.exe
  C:\cygwin\bin\cygwin1.dll
    C:\WINDOWS\system32\ADVAPI32.DLL
      C:\WINDOWS\system32\KERNEL32.dll
        C:\WINDOWS\system32\ntdll.dll
      C:\WINDOWS\system32\RPCRT4.dll
        C:\WINDOWS\system32\Secur32.dll
  C:\cygwin\bin\cygncurses-8.dll

$ cygcheck ./mf.exe
.\mf.exe
  C:\cygwin\bin\cygwin1.dll
    C:\WINDOWS\system32\ADVAPI32.DLL
            .....
  C:\cygwin\usr\X11R6\bin\cygX11-6.dll
  C:\cygwin\usr\X11R6\bin\cygXt-6.dll
    C:\cygwin\usr\X11R6\bin\cygICE-6.dll
    C:\cygwin\usr\X11R6\bin\cygSM-6.dll

$ cygcheck ./pdfclose.exe
.\pdfclose.exe
  C:\cygwin\bin\cygwin1.dll
    C:\WINDOWS\system32\ADVAPI32.DLL
             .....
  C:\cygwin\usr\X11R6\bin\cygX11-6.dll

$ cygcheck ./pdfopen.exe 
.\pdfopen.exe
  C:\cygwin\bin\cygwin1.dll
    C:\WINDOWS\system32\ADVAPI32.DLL
           .....
  C:\cygwin\usr\X11R6\bin\cygX11-6.dll

$ cygcheck ./xdvi-xaw.exe
.\xdvi-xaw.exe
  C:\cygwin\bin\cygiconv-2.dll
    C:\cygwin\bin\cygwin1.dll
      C:\WINDOWS\system32\ADVAPI32.DLL
             .....
  C:\cygwin\usr\X11R6\bin\cygX11-6.dll
  C:\cygwin\usr\X11R6\bin\cygXaw-8.dll
    C:\cygwin\usr\X11R6\bin\cygXext-6.dll
    C:\cygwin\usr\X11R6\bin\cygXmu-6.dll
      C:\cygwin\usr\X11R6\bin\cygXt-6.dll
        C:\cygwin\usr\X11R6\bin\cygICE-6.dll
        C:\cygwin\usr\X11R6\bin\cygSM-6.dll
    C:\cygwin\usr\X11R6\bin\cygXp-6.dll
      C:\cygwin\usr\X11R6\bin\cygXau-6.dll
    C:\cygwin\usr\X11R6\bin\cygXpm-4.dll
$ cygcheck ./xdvipdfmx.exe
.\xdvipdfmx.exe
  C:\cygwin\bin\cygwin1.dll
    C:\WINDOWS\system32\ADVAPI32.DLL
              ....
  C:\cygwin\bin\cygfontconfig-1.dll
    C:\cygwin\bin\cygexpat-0.dll
    C:\cygwin\bin\cygfreetype-6.dll
      C:\cygwin\bin\cygz.dll

$ cygcheck ./xetex.exe    
.\xetex.exe
  C:\cygwin\bin\cygwin1.dll
    C:\WINDOWS\system32\ADVAPI32.DLL
             ....
  C:\cygwin\bin\cygfontconfig-1.dll
    C:\cygwin\bin\cygexpat-0.dll
    C:\cygwin\bin\cygfreetype-6.dll
      C:\cygwin\bin\cygz.dll

There are four kinds of DLL's that appear.
1- The X11 libraries. In this case I think that it is correct that
   those libraries appear. After all if you want to use xdvi you have
   to have XWin installed.
2- Libraries that are provided by TeXlive and nevertheless the program
   is linked to the system library instead than to the library provided.
   (cygz.dll, cygfreetype-6.dll, cygncurses-8.dll) This is clearly
   a Makefile-configure bug.
3- Libraries that are not provided, but are linked dynamically instead
   than statically to the system library (cygfontconfig-1.dll,
   cygiconv-2.dll) This is also a Makefile-configure bug.
4- The case of expat is special. The source of the library is provided
   but the actual library is not built. (The target is missing in the
   Makefile).

--------
   Karl Berry wrote:
> Patch #6
>    Modify .../texk/web2c/configure.
>  Aside from anything else, we can't modify configure.  It is generated
> from configure.in.  Please send a patch against configure.in.

Just make the same modification in /texk/web2c/configure.in

> This should only be tried if we're on Cygwin, though.  Otherwise it's
> just a waste of time ...

It will be tried only for those platforms for which tries #1 and #2 fail.

----
Unfortunately I am not the right person for doing complex modifications
in configure.in. My experience is very limited.

Greetings
Rodrigo Medina





More information about the tlbuild mailing list