All,
I ran some more testing against the cmake 2.8.12 CMP-0022 problem.
The TL;DR version:
The proposed patch partially works but needs attention. If we
refine the patch to eliminate certain errors we probably will be
able to place this entire cmake episode behind us. :-)
The longer story:
On Slackware 14.0 I have no problems compiling Trinity packages.
The stock Slackware 14.0 came with cmake 2.8.8, but a while ago I
updated my 14.0 build environment to cmake 2.8.10.2. I updated
cmake because I was trying to anticipate what eventually would
become Slackware 14.1. Along the way of developing the 14.1 branch
after Slackware 14.0, cmake was updated to 2.8.10.2. Regardless, I
have had no problems with 2.8.8 or 2.8.10.2.
Slackware 14.0 comes with gcc 4.7.1 and glibc 2.15.
In all of the following tests I attempted to build only the
dependencies and core packages through tdebase. In each test I
rebuilt all packages except TQt3 because that package has no cmake
requirements.
On Slackware 14.0, I built and installed cmake 2.8.12.0. I did not
apply the proposed patch. I saw a slew of CMP0022 warnings for arts
and tdelibs. While arts did compile, I was unable to build tdelibs.
Next on Slackware 14.0, I built and installed cmake 2.8.12.1. I did
not apply the proposed patch. I again saw a slew of CMP0022
warnings for arts, tdelibs, and tdebase. This time I was able to
build tdelibs and tdebase. Thus 2.8.12.1 does provide a work-around
to 2.8.12.0.
Next on Slackware 14.0, I returned to cmake 2.8.8 (the version
provided in the original 14.0). I applied the proposed patch. This
was to test backwards compatibility of the patch in distros using
cmake < 2.8.12. I got as far as tdelibs with no errors or warnings.
tdebase failed to build, with a slew of errors such as the
following:
/dev/shm/tdebase/tdmlib/kgreet_classic.cpp:494: undefined reference
to `TQString::TQString(char const*)'
/dev/shm/tdebase/tdmlib/kgreet_classic.cpp:494: undefined reference
to `TDEGlobal::locale()'
/dev/shm/tdebase/tdmlib/kgreet_classic.cpp:494: undefined reference
to `TDELocale::removeCatalogue(TQString const&)'
CMakeFiles/kgreet_winbind-
module.dir/kgreet_winbind.cpp.o:(.data.rel.ro._ZTI7TQGList[_ZTI7TQGL
ist]+0x8): undefined reference to `typeinfo for TQPtrCollection'
CMakeFiles/kgreet_winbind-
module.dir/kgreet_winbind.cpp.o:(.data.rel.ro._ZTI15KWinbindGreeter[
_ZTI15KWinbindGreeter]+0x10): undefined reference to `typeinfo for
TQObject'
CMakeFiles/kgreet_winbind-
module.dir/kgreet_winbind.cpp.o:(.data.rel.ro._ZTV7TQGList[_ZTV7TQGL
ist]+0xc): undefined reference to `TQGList::clear()'
Next on Slackware 14.0, I returned to cmake 2.8.10.2. I applied the
proposed patch. Again no build failures through tdelibs while
tdebase failed to build with the same errors.
Next on Slackware 14.0, I returned to cmake 2.8.12.0. I applied the
proposed patch. tdelibs failed to build, but I saw the same
failures in Slackware 14.1. Apparently at least part of the patch
is required to build tdelibs with cmake 2.8.12.0.
Next on Slackware 14.0, I returned to cmake 2.8.12.1. I applied the
proposed patch. Again no build failures through tdelibs while
tdebase failed to build with the same errors.
The original cmake 2.8.12 problems I reported occurred with
Slackware 14.1 and not 14.0. I used 14.0 as a test environment to
establish some kind of baseline.
The primary differences between Slackware 14.1 and 14.0: cmake
2.8.12.0 vs. 2.8.8, gcc 4.8.2 vs. 4.7.1, and glibc 2.17 vs. 2.15.
Yet by using Slackware 14.0 I believe I affirmed the failures I am
experiencing are not related to gcc, glibc, etc.
Some Trinity members report they can build Trinity with cmake
2.8.12.0 although they witness the slew of CMP0022 warnings. With
2.8.12.X I always have been able to build arts but always either
fail to build tdelibs or tdebase. The proposed patch allows me to
build tdelibs but not tdebase.
I don't believe the problem is Slackware 14.1. Just cmake 2.8.12.X.
Darrell