The upcoming transition to GCC 4.3 will cause some common problems in C and C++ source to become compile-time errors. You investigate if your Factory package is affected by looking at the home:dirkmueller:playground:gcc43 project which is currently rebuilding (most of) Factory with GCC 4.3. Common problems include: 1) Missing includes. The include dependencies of the standard library headers were cleaned up a lot and a lot less unneeded dependencies are pulled in. This results in errors like Geometry.cpp: In member function 'const Magick::Geometry& Magick::Geometry::operator=(const std::string&)': Geometry.cpp:191: error: 'strcpy' was not declared in this scope make[3]: *** [Geometry.lo] Error 1 which hints at that you should include <cstring>, the C++ standard include name of the C string.h header. The rule of thumb is to look in which C header the missing function is in and then include the C++ variant which has a 'c' prepended and the '.h' stripped off. This is 90% of all errors we currently see with C++ programs. 2) There are extra warnings with GCC 4.3 and you use -Werror. You simply need to fix them. 3) More picky preprocessor: main.cpp:182:7: error: extra tokens at end of #endif directive the preprocessor diagnoses #endif foo use #endif /* foo */ instead. 4) C99 inline semantics changes. If you use 'extern inline foo(....' in headers and build with either -std=c99 or -std=gnu99 then you will probably face linker errors complaining about duplicate symbols. If you want to fix this in a way that is compatible with GCC 4.3 and previous versions use something like the following: extern inline #ifdef __GNU_STDC_INLINE__ __attribute__((__gnu_inline__)) #endif foo(.... which will preserve the previous semantics. If you do not care about compatibility with older GCC and want to use C99 semantics simply remove the 'extern' qualifier on inline functions defined in headers. 5) If you see something like /usr/include/zypp/Bit.h:86: error: declaration of 'typedef struct zypp::bit::MaxBits<_IntT> zypp::bit::Range<_IntT, _begin, _size>::MaxBits' /usr/include/zypp/Bit.h:52: error: changes meaning of 'MaxBits' from 'struct zypp::bit::MaxBits<_IntT>' you did something like template <class T> struct Foo : public FooBar<T> { typedef Foo::FooBar<T> FooBar; ... this is invalid C++. Use a different typedef-name here: typedef Foo::FooBar<T> FooBar_t; --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-packaging+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-packaging+help@opensuse.org