[tex-live] Successful (but cludgy) build on cygwin

Karl Berry karl at freefriends.org
Mon May 29 22:14:03 CEST 2006

       * include/sys/stdio.h: Guard getline and getdelim prototypes with
       _GNU_SOURCE to avoid collision with old-style declarations.

That is good, although it seems odd that Cygwin uses _GNU_SOURCE and
glibc uses __USE_GNU.

    meaning your source will soon be officially noncompliant.

The blithe unconcern of standards committees for backward compatibility
never ceases to amaze me.  I guess all the useless makework changing
names keeps programmers and managers employed, anyway.

    (2) The good news for now is that with modifying the following files
    for the getline collision problem I was able to get a successfull

Please send a diff, so I can install the changes.

Also, please contact the authors of the latter programs (with mtpo.c,
afm2pl.c, dvistuff.c, newobj.h), so they can update their original sources.

    Which just means that "Build" does not pre-erease or the "ln" can
    not ignore existing files?

Build does do a make clean (if there's a Makefile), and removes the Work
and inst directories.  It's a very short and simple shell script, take a
look.  Anyway, if you look at the command, you'll see that it explicitly
removes the link name before (re)making the link:

    rm -f /cygdrive/c/tex/texlive/src/inst/bin/i686-pc-cygwin/dvilj6; ln
    dvilj4 /cygdrive/c/tex/texlive/src/inst/bin/i686-pc-cygwin/dvilj6

As for your error:

    ln: creating hard link
    `/cygdrive/c/tex/texlive/src/inst/bin/i686-pc-cygwin/dvilj6.exe' to
    `dvilj4.exe': File exists

I surmise the problem may be a hard link from the dvilj4.exe in the
*build* directory to dvilj6.exe in the install directory.  Probably that
rule has never been exercised with LN=ln before, only ln -s.  Does this
change for texk/dviljk/Makefile.in fix it?

--- Makefile.in (revision 1610)
+++ Makefile.in (working copy)
@@ -62,7 +62,7 @@
        test ! -f $(program4l) \
          || $(INSTALL_LIBTOOL_PROG) $(program4l) $(bindir)
        $(INSTALL_SCRIPT) $(srcdir)/dvihp $(scriptdir)/dvihp
-       rm -f $(bindir)/$(program6); $(LN) $(program4) $(bindir)/$(program6)
+       cd $(bindir) && (rm -f $(program6); $(LN) $(program4) $(program6))
        cd $(bindir); rm -f $(programs)

Thanks for your efforts,

More information about the tex-live mailing list