* bug#14821: Build broken on 64-bit Cygwin starting with bzr revision 113315
@ 2013-07-08 15:47 Ken Brown
2013-07-09 12:33 ` Ken Brown
0 siblings, 1 reply; 9+ messages in thread
From: Ken Brown @ 2013-07-08 15:47 UTC (permalink / raw)
To: 14821
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.
Ken
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#14821: Build broken on 64-bit Cygwin starting with bzr revision 113315
2013-07-08 15:47 bug#14821: Build broken on 64-bit Cygwin starting with bzr revision 113315 Ken Brown
@ 2013-07-09 12:33 ` Ken Brown
2013-07-09 13:28 ` Ken Brown
2013-07-09 16:17 ` Eli Zaretskii
0 siblings, 2 replies; 9+ messages in thread
From: Ken Brown @ 2013-07-09 12:33 UTC (permalink / raw)
To: 14821; +Cc: Paul Eggert
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
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#14821: Build broken on 64-bit Cygwin starting with bzr revision 113315
2013-07-09 12:33 ` Ken Brown
@ 2013-07-09 13:28 ` Ken Brown
2013-07-09 16:17 ` Eli Zaretskii
1 sibling, 0 replies; 9+ messages in thread
From: Ken Brown @ 2013-07-09 13:28 UTC (permalink / raw)
To: 14821; +Cc: Paul Eggert
On 7/9/2013 8:33 AM, Ken Brown wrote:
> 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);
On second thought, instead of the negative '!defined (CYGWIN)', the code
should probably explicitly list the platforms on which setmode *should*
be used. This is how it's done in other uses of setmode.
Ken
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#14821: Build broken on 64-bit Cygwin starting with bzr revision 113315
2013-07-09 12:33 ` Ken Brown
2013-07-09 13:28 ` Ken Brown
@ 2013-07-09 16:17 ` Eli Zaretskii
2013-07-09 16:46 ` Ken Brown
1 sibling, 1 reply; 9+ messages in thread
From: Eli Zaretskii @ 2013-07-09 16:17 UTC (permalink / raw)
To: Ken Brown; +Cc: 14821, eggert
> Date: Tue, 09 Jul 2013 08:33:03 -0400
> From: Ken Brown <kbrown@cornell.edu>
> Cc: Paul Eggert <eggert@cs.ucla.edu>
>
> But the point is that setmode shouldn't be used on Cygwin
Why not? What if the volume in question was mounted in text mode?
And even if it wasn't, wouldn't setmode be a no-op?
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#14821: Build broken on 64-bit Cygwin starting with bzr revision 113315
2013-07-09 16:17 ` Eli Zaretskii
@ 2013-07-09 16:46 ` Ken Brown
2013-07-09 17:07 ` Eli Zaretskii
0 siblings, 1 reply; 9+ messages in thread
From: Ken Brown @ 2013-07-09 16:46 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 14821, eggert
On 7/9/2013 12:17 PM, Eli Zaretskii wrote:
>> Date: Tue, 09 Jul 2013 08:33:03 -0400
>> From: Ken Brown <kbrown@cornell.edu>
>> Cc: Paul Eggert <eggert@cs.ucla.edu>
>>
>> But the point is that setmode shouldn't be used on Cygwin
>
> Why not? What if the volume in question was mounted in text mode?
> And even if it wasn't, wouldn't setmode be a no-op?
No, the symbol 'setmode' is no longer exported in 64bit Cygwin. That's
what caused the build failure. And the code in pipe2.c that calls
setmode should never actually get executed on Cygwin anyway because of this:
int result = pipe2 (fd, flags);
if (!(result < 0 && errno == ENOSYS))
{
have_pipe2_really = 1;
return result;
Ken
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#14821: Build broken on 64-bit Cygwin starting with bzr revision 113315
2013-07-09 16:46 ` Ken Brown
@ 2013-07-09 17:07 ` Eli Zaretskii
2013-07-09 17:13 ` Ken Brown
0 siblings, 1 reply; 9+ messages in thread
From: Eli Zaretskii @ 2013-07-09 17:07 UTC (permalink / raw)
To: Ken Brown; +Cc: 14821, eggert
> Date: Tue, 09 Jul 2013 12:46:44 -0400
> From: Ken Brown <kbrown@cornell.edu>
> CC: 14821@debbugs.gnu.org, eggert@cs.ucla.edu
>
> the symbol 'setmode' is no longer exported in 64bit Cygwin.
Are you saying that there's no way of reading files in text mode while
removing CR characters from CR-LF pairs?
> That's
> what caused the build failure. And the code in pipe2.c that calls
> setmode should never actually get executed on Cygwin anyway because of this:
>
> int result = pipe2 (fd, flags);
> if (!(result < 0 && errno == ENOSYS))
> {
> have_pipe2_really = 1;
> return result;
So define setmode away for Cygwin versions that don't have it. Not
everyone runs the bleeding edge.
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#14821: Build broken on 64-bit Cygwin starting with bzr revision 113315
2013-07-09 17:07 ` Eli Zaretskii
@ 2013-07-09 17:13 ` Ken Brown
2013-07-09 17:29 ` Paul Eggert
0 siblings, 1 reply; 9+ messages in thread
From: Ken Brown @ 2013-07-09 17:13 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: 14821, eggert
On 7/9/2013 1:07 PM, Eli Zaretskii wrote:
>> Date: Tue, 09 Jul 2013 12:46:44 -0400
>> From: Ken Brown <kbrown@cornell.edu>
>> CC: 14821@debbugs.gnu.org, eggert@cs.ucla.edu
>>
>> the symbol 'setmode' is no longer exported in 64bit Cygwin.
>
> Are you saying that there's no way of reading files in text mode while
> removing CR characters from CR-LF pairs?
>
>> That's
>> what caused the build failure. And the code in pipe2.c that calls
>> setmode should never actually get executed on Cygwin anyway because of this:
>>
>> int result = pipe2 (fd, flags);
>> if (!(result < 0 && errno == ENOSYS))
>> {
>> have_pipe2_really = 1;
>> return result;
>
> So define setmode away for Cygwin versions that don't have it. Not
> everyone runs the bleeding edge.
The discussion is moot now. Paul just submitted a patch to Gnulib that
should fix it in a better way than what I suggested.
Ken
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#14821: Build broken on 64-bit Cygwin starting with bzr revision 113315
2013-07-09 17:13 ` Ken Brown
@ 2013-07-09 17:29 ` Paul Eggert
2013-07-09 19:52 ` Ken Brown
0 siblings, 1 reply; 9+ messages in thread
From: Paul Eggert @ 2013-07-09 17:29 UTC (permalink / raw)
To: Ken Brown; +Cc: 14821
On 07/09/13 10:13, Ken Brown wrote:
> Paul just submitted a patch to Gnulib that should fix it in a better way than what I suggested.
One problem was that I tried too hard to not use Gnulib
in Emacs, so I mistakenly avoided Gnulib's binary-io module.
There appears to be another issue, though -- a porting bug in Gnulib when
using the accept4 or pipe2 modules on Cygwin. As Ken notes I
have tried to fix that problem in Gnulib, and propagated the
fix to Emacs while I was fixing the binary-io issue.
Please try trunk bzr 113348 to see whether these two changes
solve the problem.
^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#14821: Build broken on 64-bit Cygwin starting with bzr revision 113315
2013-07-09 17:29 ` Paul Eggert
@ 2013-07-09 19:52 ` Ken Brown
0 siblings, 0 replies; 9+ messages in thread
From: Ken Brown @ 2013-07-09 19:52 UTC (permalink / raw)
To: Paul Eggert; +Cc: 14821-done
On 7/9/2013 1:29 PM, Paul Eggert wrote:
> On 07/09/13 10:13, Ken Brown wrote:
>> Paul just submitted a patch to Gnulib that should fix it in a better way than what I suggested.
>
> One problem was that I tried too hard to not use Gnulib
> in Emacs, so I mistakenly avoided Gnulib's binary-io module.
>
> There appears to be another issue, though -- a porting bug in Gnulib when
> using the accept4 or pipe2 modules on Cygwin. As Ken notes I
> have tried to fix that problem in Gnulib, and propagated the
> fix to Emacs while I was fixing the binary-io issue.
>
> Please try trunk bzr 113348 to see whether these two changes
> solve the problem.
Yes, that fixes it. Thanks.
For the record, the problem I reported was due to the fact that Cygwin
defines setmode as a macro that expands to _setmode. (So I was wrong
when I said that setmode shouldn't be used on Cygwin.) But this
definition is in <io.h>, which wasn't being #included. The problem
showed up only in the 64-bit build because underscores are automatically
prepended in the 32-bit build.
I'm closing the bug.
Ken
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2013-07-09 19:52 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-07-08 15:47 bug#14821: Build broken on 64-bit Cygwin starting with bzr revision 113315 Ken Brown
2013-07-09 12:33 ` Ken Brown
2013-07-09 13:28 ` Ken Brown
2013-07-09 16:17 ` Eli Zaretskii
2013-07-09 16:46 ` Ken Brown
2013-07-09 17:07 ` Eli Zaretskii
2013-07-09 17:13 ` Ken Brown
2013-07-09 17:29 ` Paul Eggert
2013-07-09 19:52 ` Ken Brown
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).