Cygwin attempt with sage-4.8.alpha3

72 views
Skip to first unread message

kcrisman

unread,
Dec 3, 2011, 1:08:52 PM12/3/11
to sage-windows
I have a repeatable failure. This is presumably due to the MPIR
upgrade in 4.8.alpha0, see http://trac.sagemath.org/sage_trac/ticket/8664,
or perhaps one of the .px that followed, which I couldn't immediately
find.

/home/Administrator/sage-4.8.alpha3/spkg/pipestatus "sage-spkg
${SAGE_SPKG_OPTS} mpir-2.1.3.p7 2>&1" "tee -a
/home/Administrator/sage-4.8.alpha3/spkg/logs/mpir-2.1.3.p7.log"
mpir-2.1.3.p7
Machine:
CYGWIN_NT-6.1-WOW64 CET03791 1.7.9(0.237/5/3) 2011-03-29 10:10 i686
Cygwin
Deleting directories from past builds of previous/current versions of
mpir-2.1.3.p7
Extracting package
/home/Administrator/sage-4.8.alpha3/spkg/standard/mpir-2.1.3.p7.spkg
...
-rw-r--r-- 1 Administrator None 3760213 Oct 30 20:25
/home/Administrator/sage-4.8.alpha3/spkg/standard/mpir-2.1.3.p7.spkg
Finished extraction
****************************************************
Host system
uname -a:
CYGWIN_NT-6.1-WOW64 CET03791 1.7.9(0.237/5/3) 2011-03-29 10:10 i686
Cygwin
****************************************************
****************************************************
CC Version
gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-pc-cygwin/4.5.3/lto-wrapper.exe
Target: i686-pc-cygwin
Configured with:
/gnu/gcc/releases/respins/4.5.3-3/gcc4-4.5.3-3/src/gcc-4.5.3/configure
--srcdir=/gnu/gcc/releases/respins/4.5.3-3/gcc4-4.5.3-3/src/gcc-4.5.3
--prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin
--libexecdir=/usr/lib --datadir=/usr/share --localstatedir=/var
--sysconfdir=/etc --datarootdir=/usr/share
--docdir=/usr/share/doc/gcc4 -C --datadir=/usr/share
--infodir=/usr/share/info --mandir=/usr/share/man -v --with-gmp=/usr
--with-mpfr=/usr --enable-bootstrap
--enable-version-specific-runtime-libs --libexecdir=/usr/lib
--enable-static --enable-shared --enable-shared-libgcc
--disable-__cxa_atexit --with-gnu-ld --with-gnu-as --with-dwarf2
--disable-sjlj-exceptions
--enable-languages=ada,c,c++,fortran,java,lto,objc,obj-c++
--enable-graphite --enable-lto --enable-java-awt=gtk --disable-symvers
--enable-libjava --program-suffix=-4 --enable-libgomp --enable-libssp
--enable-libada --enable-threads=posix --with-arch=i686
--with-tune=generic --enable-libgcj-sublibs CC=gcc-4 CXX=g++-4
CC_FOR_TARGET=gcc-4 CXX_FOR_TARGET=g++-4 GNATMAKE_FOR_TARGET=gnatmake
GNATBIND_FOR_TARGET=gnatbind --with-ecj-jar=/usr/share/java/ecj.jar
Thread model: posix
gcc version 4.5.3 (GCC)
****************************************************
Checking what CFLAGS MPIR would use if they were empty...
Settings required to properly build MPIR, taking into account
SAGE_DEBUG etc.:
CFLAGS:
LDFLAGS:
ABI:
Settings from the "global" environment:
CC: gcc
CFLAGS:
(CPPFLAGS, CXX and CXXFLAGS are listed below; these don't get
modified.)
Using the spkg's (i.e. Sage's) default (plus mandatory) settings.
Finally using the following settings:
CC=gcc
CFLAGS=-march=native -g -O3
CPPFLAGS=
CXX=g++
CXXFLAGS=
LDFLAGS=
ABI=
(These settings may still get overridden by 'configure' or Makefiles.)
Configuring MPIR with the following options:
--prefix="/home/Administrator/sage-4.8.alpha3/local"
--enable-shared --enable-static --enable-gmpcompat --enable-cxx=yes
You can set MPIR_EXTRA_OPTS to pass additional parameters.
checking build system type... i486-pc-cygwin
checking host system type... i486-pc-cygwin
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether to enable maintainer-specific portions of
Makefiles... no
checking ABI=32
checking compiler gcc -march=native -g -O3 ... yes
checking compiler gcc -march=native -g -O3 has sizeof(long)==4...
yes
checking for gcc... gcc
checking for C compiler default output file name... a.exe
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... .exe
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for gcc option to accept ISO C99... -std=gnu99
checking for gcc -std=gnu99 option to accept ISO Standard C...
(cached) -std=gnu99
checking how to run the C preprocessor... gcc -std=gnu99 -E
checking build system compiler gcc -std=gnu99... yes
checking for build system preprocessor... gcc -std=gnu99 -E
checking for build system executable suffix... .exe
checking whether build system compiler is ANSI... yes
checking for build system compiler math library... -lm
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking C++ compiler g++ -march=native -g -O3 ... yes
checking how to run the C++ preprocessor... g++ -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
using ABI="32"
CC="gcc -std=gnu99"
CFLAGS="-march=native -g -O3 "
CPPFLAGS=""
CXX="g++"
CXXFLAGS="-march=native -g -O3 "
MPN_PATH=" x86/i486 x86 generic"
checking for ar... ar
checking for BSD-compatible nm... /usr/bin/nm -B
configure: error: cannot build both static and DLL, since mpir.h is
different for each.
Use "--disable-static --enable-shared" to build just a DLL.
Error configuring MPIR. (See above for the options passed to it.)

real 2m6.922s
user 0m9.886s
sys 0m13.056s
************************************************************************
Error installing package mpir-2.1.3.p7
************************************************************************
Please email sage-devel (http://groups.google.com/group/sage-devel)
explaining the problem and including the relevant part of the log file
/home/Administrator/sage-4.8.alpha3/spkg/logs/mpir-2.1.3.p7.log
Describe your computer, operating system, etc.
If you want to try to fix the problem yourself, *don't* just cd to
/home/Administrator/sage-4.8.alpha3/spkg/build/mpir-2.1.3.p7 and type
'make' or whatever is appropriate.
Instead, the following commands setup all environment variables
correctly and load a subshell for you to debug the error:
(cd '/home/Administrator/sage-4.8.alpha3/spkg/build/mpir-2.1.3.p7'
&& '/home/Administrator/sage-4.8.alpha3/sage' -sh)
When you are done debugging, you can type "exit" to leave the
subshell.
************************************************************************
standard/deps:208: recipe for target `installed/mpir-2.1.3.p7' failed

kcrisman

unread,
Dec 3, 2011, 2:08:18 PM12/3/11
to sage-windows, sage-...@googlegroups.com

On Dec 3, 1:08 pm, kcrisman <kcris...@gmail.com> wrote:
> I have a repeatable failure.  This is presumably due to the MPIR
> upgrade in 4.8.alpha0, seehttp://trac.sagemath.org/sage_trac/ticket/8664,

Ah, I'm pretty sure yes.

> configure: error: cannot build both static and DLL, since mpir.h is
> different for each.
> Use "--disable-static --enable-shared" to build just a DLL.
> Error configuring MPIR. (See above for the options passed to it.)

From the diff from mpir-2.1.3.p0-p1:

- SAGE_CONF_OPTS="--enable-shared --disable-static"
+ # Also build the static library to be used by e.g. ECM:
+ # SAGE_CONF_OPTS="--enable-shared --disable-static"
+ SAGE_CONF_OPTS="--enable-shared --enable-static"
+ # (Further options to 'configure' are added below.)

I'm cc:ing this to sage-devel in case the folks who added this have
any ideas of how to fix it. I assume that going back to the --disable-
static is not possible.

If there's still a copy of mpir-2.1.3.p0 hanging around in someone's
sage.math home directory, I could try that to make sure this really is
the problem, for instance.

I've also added a short note on #8664.

- kcrisman

Bill Hart

unread,
Dec 3, 2011, 2:13:41 PM12/3/11
to mpir-devel, sage-...@googlegroups.com, sage-w...@googlegroups.com
Forwarding to MPIR devel, where it might get some attention.

> --
> You received this message because you are subscribed to the Google Groups "sage-windows" group.
> To post to this group, send email to sage-w...@googlegroups.com.
> To unsubscribe from this group, send email to sage-windows...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/sage-windows?hl=en.
>

kcrisman

unread,
Dec 3, 2011, 4:30:10 PM12/3/11
to sage-windows
> From the diff from mpir-2.1.3.p0-p1:
>
> -    SAGE_CONF_OPTS="--enable-shared --disable-static"
> +   # Also build the static library to be used by e.g. ECM:
> +   # SAGE_CONF_OPTS="--enable-shared --disable-static"
> +   SAGE_CONF_OPTS="--enable-shared --enable-static"
> +   # (Further options to 'configure' are added below.)
>
> I'm cc:ing this to sage-devel in case the folks who added this have
> any ideas of how to fix it.  I assume that going back to the --disable-
> static is not possible.
>

However, doing this worked for at least getting MPIR to continue
building. See #12115. Unfortunately, there are more problems later.

- kcrisman

kcrisman

unread,
Dec 3, 2011, 8:56:29 PM12/3/11
to sage-devel, sage-w...@googlegroups.com

> > > Making all in yasm
> > > make[4]: Entering directory `/home/Administrator/sage-4.8.alpha3/spkg/
> > > build/mpir-2.1.3.p8/src/yasm'
> > > gcc -std=gnu99 -I.  -c -o genperf.o `test -f tools/genperf/genperf.c
> > > || echo './'`tools/genperf/genperf.c
> > > <snip>
> > > gcc -std=gnu99 -I.  -c -o re2c-parser.o `test -f tools/re2c/parser.c
> > > || echo './'`tools/re2c/parser.c
> > > Makefile:3665: recipe for target `re2c-parser.o' failed
> > > make[4]: *** [re2c-parser.o] Error 1
> > > make[4]: Leaving directory `/home/Administrator/sage-4.8.alpha3/spkg/
> > > build/mpir-2.1.3.p8/src/yasm'
> > > Makefile:772: recipe for target `all-recursive' failed
> > > make[3]: *** [all-recursive] Error 1
> > > make[3]: Leaving directory `/home/Administrator/sage-4.8.alpha3/spkg/
> > > build/mpir-2.1.3.p8/src'
> > > Makefile:603: recipe for target `all' failed
> > > make[2]: *** [all] Error 2
> > > make[2]: Leaving directory `/home/Administrator/sage-4.8.alpha3/spkg/
> > > build/mpir-2.1.3.p8/src'
> > > Error building MPIR.
>
> > This look like yasm is failing because your doing a parallel build , it's a known problem and has been reported at least a year ago , it only seems to effect cygwin ,
> > a workaround is to build yasm first with just make and then build mpir with make -j
>
> > Jason
>
> it's been fixed it appears see
>
> http://tortall.lighthouseapp.com/projects/78676/changesets/2bd66514b6...

Reported by Volker, nice!

> We should upgrade yasm in mpir to this for mpir-2.5 , which although delayed , I hope to get out next week, I've almost done all the tuning , just power7 to do ,
> and some docs , and then our tests

But these are "race conditions", right, so just restarting the build
should make things work out okay for now, right?

kcrisman

unread,
Dec 3, 2011, 8:57:32 PM12/3/11
to sage-w...@googlegroups.com
Forwarding to sage-windows.


---------- Forwarded message ----------
From: Jason <ja...@njkfrudils.plus.com>
Date: Dec 3, 6:43 pm
Subject: [sage-windows] Re: Cygwin attempt with sage-4.8.alpha3
To: sage-devel


On Saturday 03 December 2011 22:40:51 Cactus wrote:

> I can only comment on the MSVC Windows build, for which I believe mpir.h is
> identical DLL and static library builds.   To double check this I have just
> built both and compared the two mpir.h files that were generated.

> In fact mpir.h is now identical for win32 and x64 builds as well since I
> changed this recently to avoid any differences because an increasing number
> of people were trying to compile MPIR with the wrong version.

>    Brian

Aha , only for cygwin and MSYS then which use the autotools , as in
configure.in we have this

# Configs for Windows DLLs.

AC_LIBTOOL_WIN32_DLL

AC_SUBST(LIBGMP_DLL,0)
case $host in
  *-*-cygwin* | *-*-mingw*)
    # By default, build only static.
    if test -z "$enable_shared"; then
      enable_shared=no
    fi
    # Don't allow both static and DLL.
    if test "$enable_shared" != no && test "$enable_static" != no;
then
      AC_MSG_ERROR([cannot build both static and DLL, since mpir.h is
different for each.
Use "--disable-static --enable-shared" to build just a DLL.])
    fi

    # "-no-undefined" is required when building a DLL, see
documentation on
    # AC_LIBTOOL_WIN32_DLL.
    #
    # "-Wl,--export-all-symbols" is a bit of a hack, it gets all
libmpir and
    # libmpirxx functions and variables exported.  This is what
libtool did
    # in the past, and it's convenient for us in the test programs.
    #
    # Maybe it'd be prudent to check for --export-all-symbols before
using
    # it, but it seems to have been in ld since at least 2000, and
there's
    # not really any alternative we want to take up at the moment.
    #
    # "-Wl,output-def" is used to get a .def file for use by MS lib to
make
    # a .lib import library, described in the manual.
 libmpir-3.dll.def
    # corresponds to the libmp-3.dll.def generated by libtool (as a
result
    # of -export-symbols on that library).
    #
    # Incidentally, libtool does generate an import library
libmpir.dll.a,
    # but it's "ar" format and cannot be used by the MS linker.  There
    # doesn't seem to be any GNU tool for generating or converting
to .lib.
    #
    # FIXME: The .def files produced by -Wl,output-def include
isascii,
    # iscsym, iscsymf and toascii, apparently because mingw ctype.h
doesn't
    # inline isascii (used in gmp).  It gives an extern inline for
    # __isascii, but for some reason not the plain isascii.
    #
    # LDFLAGS="$LDFLAGS -Wl,--enable-auto-import"  this is too general
    if test "$enable_shared" = yes; then
      GMP_LDFLAGS="$GMP_LDFLAGS -no-undefined -Wl,--export-all-
symbols"
      LIBGMP_LDFLAGS="$LIBGMP_LDFLAGS -Wl,--output-def,.libs/
libmpir-3.dll.def"
      LIBGMPXX_LDFLAGS="$LIBGMP_LDFLAGS -Wl,--output-def,.libs/
libmpirxx-3.dll.def"
      LIBGMP_DLL=1
    fi
    ;;
esac

and note there are a few other systems which also can't build both
types at the same time

Jason

Reply all
Reply to author
Forward
0 new messages