Subject: Re: bug#14821: Build broken on 64-bit Cygwin starting with bzr revision 113315

From: Ken Brown <[email-masked]>
Date: Tue, 09 Jul 2013 08:33:03 -0400

On 7/8/2013 11:47 AM, Ken Brown wrote:
> Starting with bzr revision 113315, the build on 64-bit Cygwin fails as
> follows:
>
> gcc -std=gnu99 -Demacs  -I. -I/c/src/emacs/64testt/src  -I../lib
> -I/c/src/emacs/64testt/src/../lib    -D_REENTRANT -I/usr/include/gtk-3.0
> -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0
> -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/
> -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0
> -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
> -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/pixman-1
> -I/usr/include/libpng15   -DGDK_DISABLE_DEPRECATION_WARNINGS
> -DGLIB_DISABLE_DEPRECATION_WARNINGS -I/usr/include/freetype2
> -D_REENTRANT -I/usr/include/librsvg-2.0 -I/usr/include/glib-2.0
> -I/usr/lib/glib-2.0/include -I/usr/include/gdk-pixbuf-2.0
> -I/usr/include/cairo -I/usr/include/libpng15 -I/usr/include/pixman-1
> -I/usr/include/freetype2   -fopenmp -I/usr/include/ImageMagick
> -I/usr/include/libxml2   -I/usr/include/dbus-1.0
> -I/usr/lib/dbus-1.0/include      -D_REENTRANT -I/usr/include/glib-2.0
> -I/usr/lib/glib-2.0/include   -D_REENTRANT -I/usr/include/gconf/2
> -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include
> -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
> -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
> -I/usr/include/freetype2       -MMD -MF deps/.d -MP
> -I/usr/include/p11-kit-1   -D_REENTRANT -I/usr/include/glib-2.0
> -I/usr/lib/glib-2.0/include      -O0 -ggdb    \
>    -o temacs  vm-limit.o dispnew.o frame.o scroll.o xdisp.o menu.o
> xmenu.o window.o  charset.o coding.o category.o ccl.o character.o
> chartab.o bidi.o  cm.o term.o terminal.o xfaces.o xterm.o xfns.o
> xselect.o xrdb.o xsmfns.o xsettings.o gtkutil.o emacsgtkfixed.o
> dbusbind.o  emacs.o keyboard.o macros.o keymap.o sysdep.o  buffer.o
> filelock.o insdel.o marker.o  minibuf.o fileio.o dired.o  cmds.o
> casetab.o casefiddle.o indent.o search.o regex.o undo.o  alloc.o data.o
> doc.o editfns.o callint.o  eval.o floatfns.o fns.o font.o print.o
> lread.o  syntax.o unexcw.o bytecode.o  process.o gnutls.o callproc.o
> region-cache.o sound.o atimer.o  doprnt.o intervals.o textprop.o
> composite.o xml.o gfilenotify.o  profiler.o     sheap.o cygw32.o xfont.o
> ftfont.o xftfont.o ftxfont.o   fontset.o fringe.o image.o xgselect.o
> terminfo.o  gmalloc.o   lastfile.o   ../lib/libgnu.a       -ltiff -ljpeg
> -lpng -lz -lm -lgif -lXpm  -lgtk-3 -latk-bridge-2.0 -lgdk-3 -latk-1.0
> -lXinerama -lXi -lXrandr -lXcursor -lXcomposite -lXdamage
> -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo-gobject -lgio-2.0 -lXfixes
> -lpangoft2-1.0 -lharfbuzz -lpango-1.0 -lcairo -lpixman-1 -lfontconfig
> -lexpat -lfreetype -lbz2 -lxcb-shm -lxcb-render -lXrender -lXext -lX11
> -lxcb -lXau -lXdmcp -lpng15 -lm -lz -lgmodule-2.0 -lgobject-2.0 -lffi
> -lglib-2.0 -lintl -liconv -lpcre   -lSM -lICE -lX11 -lXrender -lXft
> -lXrender -lfontconfig -lexpat -lfreetype -lz -lbz2 -lX11 -lxcb -lXau
> -lXdmcp     -lrsvg-2 -lgio-2.0 -lgdk_pixbuf-2.0 -lcairo -lgmodule-2.0
> -lgobject-2.0 -lffi -lpixman-1 -lfontconfig -lexpat -lfreetype -lbz2
> -lpng15 -lm -lz -lxcb-shm -lxcb-render -lXrender -lXext -lglib-2.0
> -lintl -liconv -lpcre -lX11 -lxcb -lXau -lXdmcp   -lMagickWand
> -lMagickCore         -ldbus-1 -lpthread -lrt     -lXrandr -lXext
> -lXrender -lX11 -lxcb -lXau -lXdmcp   -lXinerama -lXext -lX11 -lxcb
> -lXau -lXdmcp    -lxml2 -lz -liconv -lm       -lncurses  -lgio-2.0 -lz
> -lgmodule-2.0 -lgobject-2.0 -lffi -lglib-2.0 -lintl -liconv -lpcre
> -lgconf-2 -ldbus-1 -lpthread -lrt -lgio-2.0 -lz -lgmodule-2.0
> -lgobject-2.0 -lffi -lglib-2.0 -lintl -liconv -lpcre   -lgobject-2.0
> -lffi -lglib-2.0 -lintl -liconv -lpcre     -lfreetype -lz -lbz2
> -lfontconfig -lexpat -lfreetype -lz -lbz2      -lgnutls -lnettle
> -lhogweed -lgmp -lintl -liconv -ltasn1 -lp11-kit -lz   -lpthread
> -lgio-2.0 -lz -lgmodule-2.0 -lgobject-2.0 -lffi -lglib-2.0 -lintl
> -liconv -lpcre
> ../lib/libgnu.a(pipe2.o): In function `rpl_pipe2':
> /c/src/emacs/64testt/lib/pipe2.c:144: undefined reference to `setmode'
>
>
> I think the issue here is that pipe2.c shouldn't be compiled on Cygwin.

Sorry, that was a stupid guess, made without even  looking at pipe2.c. 
But the point is that setmode shouldn't be used on Cygwin (and wasn't 
prior to revision 113315).

The following patch allows the build to complete, but I don't know if 
it's the right fix:

=== modified file 'lib/pipe2.c'
--- lib/pipe2.c 2013-07-07 18:00:14 +0000
+++ lib/pipe2.c 2013-07-09 12:20:47 +0000
@@ -138,7 +138,7 @@
          goto fail;
      }

-# if O_BINARY
+# if O_BINARY && !defined (CYGWIN)
    if (flags & O_BINARY)
      {
        setmode (fd[1], O_BINARY);

Ken