Source: condor Version: 7.7.6~dfsg.1-1 Severity: important Tags: upstream Condor fails to build from source (FTBFS) on ia64 due to a change that was introduced with 7.7.6.
Successful build of 7.7.5 https://buildd.debian.org/status/fetch.php?pkg=condor&arch=ia64&ver=7.7.5%7Edfsg.1-2&stamp=1332117436 Failed build of 7.7.6 https://buildd.debian.org/status/fetch.php?pkg=condor&arch=ia64&ver=7.7.6%7Edfsg.1-1&stamp=1335297668 Relevant portion of the fail log: ================================= cd "/build/buildd-condor_7.7.6~dfsg.1-1-ia64-qialEI/condor-7.7.6~dfsg.1/obj-ia64-linux-gnu/src/condor_shadow.V6.1" && /usr/bin/c++ -D_FORTIFY_SOURCE=2 -DLINUX=\"LINUX_2.6.32-BPO.5-MCKINLEY\" -DPLATFORM=\"IA64-Debian_\" -DPRE_RELEASE_STR="\" Debian-7.7.6~dfsg.1-1\"" -DCONDOR_VERSION=\"7.7.6\" -DBUILD_DATE="\"Apr 24 2012\"" -DHAVE_CONFIG_H -DWITH_OPENSSL -DGLIBC=GLIBC -DGLIBC213=GLIBC213 -DIA64=IA64 -Wall -W -Wextra -Wfloat-equal -Wshadow -Wendif-labels -Wpointer-arith -Wcast-qual -Wcast-align -Wvolatile-register-var -fstack-protector -rdynamic -g -I"/build/buildd-condor_7.7.6~dfsg.1-1-ia64-qialEI/condor-7.7.6~dfsg.1/obj-ia64-linux-gnu/bld_external/classads-7.7.6/install/include" -I/usr/include/globus -I/usr/lib64/globus/include -I/usr/lib/globus/include -I"/build/buildd-condor_7.7.6~dfsg.1-1-ia64-qialEI/condor-7.7.6~dfsg.1/src/condor_includes" -I"/build/buildd-condor_7.7.6~dfsg.1-1-ia64-qialEI/condor-7.7.6~dfsg.1/obj-ia64-linux-gnu/src/condor_includes" -I"/build/buildd-condo r_7.7.6~dfsg.1-1-ia64-qialEI/condor-7.7.6~dfsg.1/src/condor_utils" -I"/build/buildd-condor_7.7.6~dfsg.1-1-ia64-qialEI/condor-7.7.6~dfsg.1/obj-ia64-linux-gnu/src/condor_utils" -I"/build/buildd-condor_7.7.6~dfsg.1-1-ia64-qialEI/condor-7.7.6~dfsg.1/src/condor_daemon_core.V6" -I"/build/buildd-condor_7.7.6~dfsg.1-1-ia64-qialEI/condor-7.7.6~dfsg.1/src/condor_daemon_client" -I"/build/buildd-condor_7.7.6~dfsg.1-1-ia64-qialEI/condor-7.7.6~dfsg.1/src/ccb" -I"/build/buildd-condor_7.7.6~dfsg.1-1-ia64-qialEI/condor-7.7.6~dfsg.1/src/condor_io" -I"/build/buildd-condor_7.7.6~dfsg.1-1-ia64-qialEI/condor-7.7.6~dfsg.1/src/h" -I"/build/buildd-condor_7.7.6~dfsg.1-1-ia64-qialEI/condor-7.7.6~dfsg.1/obj-ia64-linux-gnu/src/h" -I"/build/buildd-condor_7.7.6~dfsg.1-1-ia64-qialEI/condor-7.7.6~dfsg.1/src/classad" -I"/build/buildd-condor_7.7.6~dfsg.1-1-ia64-qialEI/condor-7.7.6~dfsg.1/src/safefile" -I"/build/buildd-condor_7.7.6~dfsg.1-1-ia64-qialEI/condor-7.7.6~dfsg.1/obj-ia64-linux-gnu/src/safefile" -o CMakeFiles/condor_shadow.dir/remoteresource.cpp.o -c "/build/buildd-condor_7.7.6~dfsg.1-1-ia64-qialEI/condor-7.7.6~dfsg.1/src/condor_shadow.V6.1/remoteresource.cpp" /build/buildd-condor_7.7.6~dfsg.1-1-ia64-qialEI/condor-7.7.6~dfsg.1/src/condor_shadow.V6.1/remoteresource.cpp:1:0: warning: -fstack-protector not supported for this target [enabled by default] /build/buildd-condor_7.7.6~dfsg.1-1-ia64-qialEI/condor-7.7.6~dfsg.1/src/condor_shadow.V6.1/remoteresource.cpp: In member function 'virtual void RemoteResource::updateFromStarter(compat_classad::ClassAd*)': /build/buildd-condor_7.7.6~dfsg.1-1-ia64-qialEI/condor-7.7.6~dfsg.1/src/condor_shadow.V6.1/remoteresource.cpp:1214:61: error: no matching function for call to 'compat_classad::ClassAd::EvalInteger(const char* const&, NULL, int64_t&)' /build/buildd-condor_7.7.6~dfsg.1-1-ia64-qialEI/condor-7.7.6~dfsg.1/src/condor_shadow.V6.1/remoteresource.cpp:1214:61: note: candidates are: /build/buildd-condor_7.7.6~dfsg.1-1-ia64-qialEI/condor-7.7.6~dfsg.1/src/condor_utils/compat_classad.h:352:6: note: int compat_classad::ClassAd::EvalInteger(const char*, classad::ClassAd*, int&) /build/buildd-condor_7.7.6~dfsg.1-1-ia64-qialEI/condor-7.7.6~dfsg.1/src/condor_utils/compat_classad.h:352:6: note: no known conversion for argument 3 from 'int64_t {aka long int}' to 'int&' /build/buildd-condor_7.7.6~dfsg.1-1-ia64-qialEI/condor-7.7.6~dfsg.1/src/condor_utils/compat_classad.h:353:6: note: int compat_classad::ClassAd::EvalInteger(const char*, classad::ClassAd*, long long int&) /build/buildd-condor_7.7.6~dfsg.1-1-ia64-qialEI/condor-7.7.6~dfsg.1/src/condor_utils/compat_classad.h:353:6: note: no known conversion for argument 3 from 'int64_t {aka long int}' to 'long long int&' make[4]: *** [src/condor_shadow.V6.1/CMakeFiles/condor_shadow.dir/remoteresource.cpp.o] Error 1 ================================= This looks like a data type issue that seems to have its origin in a change to compat_classad.h that was introduced with 7.7.6. Related Git commits are: c2601f0db1df9e6869b7fe66070e7c6c9595922a 2e757aaa65299d21ae93137c56db657360bb2327 7fbb9e370a8d2ff8a7e2bbec4c8cedd36eabaeed ac250a697b424984139f9d876c597dc3598f2070 % git diff debian/7.7.5_dfsg.1-2 -- src/condor_utils/compat_classad.h diff --git a/src/condor_utils/compat_classad.h b/src/condor_utils/compat_classad.h index 1a17d79..2d08a6d 100644 --- a/src/condor_utils/compat_classad.h +++ b/src/condor_utils/compat_classad.h @@ -26,6 +26,20 @@ class StringList; class Stream; +// hopefully this can go away when classads has native support for 64bit int +// in the mean time, we want to do the conversion as close to the classad api +// as possible. +#ifndef classad_int64 +# ifdef WIN32 +# define classad_int64 __int64 +# elif defined(__x86_64__) && ! defined(Darwin) +# define classad_int64_is_long +# define classad_int64 long +# else +# define classad_int64 long long +# endif +#endif + #ifndef TRUE #define TRUE 1 #endif @@ -191,7 +205,12 @@ class ClassAd : public classad::ClassAd int Assign(char const *name,unsigned int value) { return InsertAttr( name, (int)value) ? TRUE : FALSE; } - int Assign(char const *name,long value) +#if ! defined classad_int64_is_long + int Assign(char const *name,long value) // TJ: fix for int64 classad + { return InsertAttr( name, (int)value) ? TRUE : FALSE; } +#endif + + int Assign(char const *name,classad_int64 value) // TJ: fix for int64 classad { return InsertAttr( name, (int)value) ? TRUE : FALSE; } int Assign(char const *name,unsigned long value) @@ -263,6 +282,13 @@ class ClassAd : public classad::ClassAd * @return true if the attribute exists and is a float, false otherwise */ + int LookupInteger(const char *name, int64_t &value) const; + /** Lookup (don't evaluate) an attribute that is a float. + * @param name The attribute + * @param value The integer + * @return true if the attribute exists and is a float, false otherwise + */ + int LookupFloat(const char *name, float &value) const; /** Lookup (don't evaluate) an attribute that can be considered a boolean @@ -324,6 +350,12 @@ class ClassAd : public classad::ClassAd * but is not an integer */ int EvalInteger (const char *name, classad::ClassAd *target, int &value); + int EvalInteger (const char *name, classad::ClassAd *target, classad_int64 & value) { + int ival; + int result = EvalInteger(name, target, ival); // TJ: fix for int64 classad + value = ival; + return result; + } /** Lookup and evaluate an attribute in the ClassAd that is a float * @param name The name of the attribute @@ -333,7 +365,13 @@ class ClassAd : public classad::ClassAd * but is not a float. */ - int EvalFloat (const char *name, classad::ClassAd *target, float &value); + int EvalFloat (const char *name, classad::ClassAd *target, double &value); + int EvalFloat (const char *name, classad::ClassAd *target, float &value) { + double dval; + int result = EvalFloat(name, target, dval); + value = dval; + return result; + } /** Lookup and evaluate an attribute in the ClassAd that is a boolean * @param name The name of the attribute -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org