HTCondor Project List Archives



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Condor-devel] MacOS X 10.6 condor build failures



Do none of you have Mac laptops anymore? :)

Condor does not build on 10.6, which maybe no one cares about.

I've made some progress.

The first problem is in the externals. Classads can't link with PCRE because
it complains that "the files aren't of the right type" or some such. (Sorry,
didn't save the error messages) Anyway, the problem is this bit in build_pcre:

##
## We need this special flag for Intel OSX (as of 10.4)
##
if [ `uname` = "Darwin" -a `uname -m` = "i386" ]; then
    CFLAGS="-arch i386" ./configure --prefix=$PACKAGE_INSTALL_DIR --with-ccopts=$PACKAGE_DEBUG --disable-cpp
else
    ./configure --prefix=$PACKAGE_INSTALL_DIR --with-ccopts=$PACKAGE_DEBUG --disable-cpp
fi

You don't need it on 10.6 on semi-modern hardware - commenting out the test
for darwin on i386 and just falling through to the usual configure worked fine.

The next trouble is in the c++ util, and building libcondorapi.so. 
The Makefile has:

libcondorapi.so: $(call picobjs,$(CONLIBAPI_OBJ))
    rm -f libcondorapi.so
    $(CC) $(CC_SHARED_FLAGS) $(CC_PIC_FLAGS) -o libcondorapi.so $(call picobjs,$(CONLIBAPI_OBJ))
clean::
    rm -f libcondorapi.so $(call picobjs,$(CONLIBAPI_OBJ))
# End translation of [FUNC_shared_library_target:291]
libcondorapi.so: Makefile

That blows up in the way that makes you proud to be a C++ program - it can't
resolve a reference to std::basic_string - and it lets you know the places
that reference it.

All 7,570 places.
(That's 457 pages of places. All spewed to the terminal)

Anyway, replacing gcc ( $(CC) ) with g++ seems to work. Maybe we want that
rule to use CC_LINK instead of CC? 


Then there's this nastiness:
g++ -I. -I.. -I../.. -I../h -I../condor_includes -I../condor_c++_util -I../condor_daemon_client -I../condor_daemon_core.V6 -I../classad -I../classad_analysis -I../classad_support -I../ccb -I../condor_io -DHAVE_CONFIG_H -DI386=I386 -DDarwin=Darwin    -I/Users/epaulson/development/repository/CONDOR_SRC/externals/install/openssl-0.9.8h-p2/include   -DWANT_LEASE_MANAGER -DWANT_CLASSAD_NAMESPACE -g   -g -Wall -W -Wextra -Wfloat-equal -Wshadow -Wendif-labels -Wpointer-arith -Wcast-qual -Wcast-align -Wvolatile-register-var -fstack-protector  -DC_COMP_KIND_GCC -DC_COMP_MAJOR_GCC_4 -DC_COMP_MINOR_GCC_4_2 -DC_COMP_PATCH_GCC_4_2_1 -DWITH_OPENSSL -DCOMPILE_SOAP_SSL -I/Users/epaulson/development/repository/CONDOR_SRC/externals/install/pcre-7.6/include     -DTARGET_OS_MAC=1 -DTARGET_CPU_X86=1 -DHEADER_DES_LOCL_H  -c stream.cpp -o stream.o

It fails on a couple codes:
stream.cpp: In member function ‘int Stream::code(stat&)’:
stream.cpp:651: error: call of overloaded ‘code(__darwin_ino64_t&)’ is ambiguous

(I didn't copy its suggestions of values that are "close")

I'm punting on this one, because I'm not going down the rabbit hole of
64bit versus 32 bit fields in struct stat between different hosts through
CEDAR. 

Here's the useful information, in 
/usr/include/sys/_types:
typedef __uint64_t      __darwin_ino64_t;       /* [???] Used for 64 bit inodes */
#if __DARWIN_64_BIT_INO_T
typedef __darwin_ino64_t __darwin_ino_t;        /* [???] Used for inodes */
#else /* !__DARWIN_64_BIT_INO_T */
typedef __uint32_t      __darwin_ino_t;         /* [???] Used for inodes */
#endif /* __DARWIN_64_BIT_INO_T */

The next failure:
stream.cpp:657: error: call of overloaded ‘code(off_t&)’ is ambiguous

And then:
stream.cpp:662: error: call of overloaded ‘code(blkcnt_t&)’ is ambiguous

On to the next function -

stream.cpp: In member function ‘int Stream::code(statfs&)’:
stream.cpp:709: error: call of overloaded ‘code(uint64_t&)’ is ambiguous
stream.cpp:710: error: call of overloaded ‘code(uint64_t&)’ is ambiguous
stream.cpp:711: error: call of overloaded ‘code(uint64_t&)’ is ambiguous
stream.cpp:712: error: call of overloaded ‘code(uint64_t&)’ is ambiguous
stream.cpp:717: error: call of overloaded ‘code(uint64_t&)’ is ambiguous

Next function -
stream.cpp: In member function ‘int Stream::code(rlimit&)’:
stream.cpp:786: error: call of overloaded ‘code(rlim_t&)’ is ambiguous
stream.cpp:787: error: call of overloaded ‘code(rlim_t&)’ is ambiguous


Anyway, hope that helps. At the moment I don't need it to build on my 
laptop for anything, so I'm not stressing this, but I'd be glad to help
if anyone cares. 

-Erik