[Kde-bindings] Re: fixing a build on Solaris with Sun Studio 12.1 compiler

Ben Taylor bentaylor.solx86 at gmail.com
Tue May 3 01:37:51 UTC 2011


On Mon, May 2, 2011 at 11:05 AM, Arno Rehn <arno at arnorehn.de> wrote:
> On Sunday 01 May 2011 22:31:08 Ben Taylor wrote:
>> On Sun, May 1, 2011 at 2:57 PM, Ben Taylor <bentaylor.solx86 at gmail.com>
> wrote:
>> > On Sat, Apr 30, 2011 at 5:18 PM, Arno Rehn <arno at arnorehn.de> wrote:
>> >> On Saturday 30 April 2011 22:55:50 Ben Taylor wrote:
>> >>> I am building KDE through a build tool on Solaris 10 with Sun Studio
>> >>> 12.1 compiler.
>> >>> (the same problem I'm reporting is also apparent on Open Solaris
>> >>> variants, such as Oracle Solaris 11 Express and Open Indiana).
>> >>>
>> >>> I get this error when building KDE-bindings:
>> >>>
>> >>> Generating smokedata.cpp, x_1.cpp, x_2.cpp, x_3.cpp, x_4.cpp, x_5.cpp,
>> >>> x_6.cpp, x_7.cpp, x_8.cpp, x_9.cpp, x_10.cpp, x_11.cpp, x_12.cpp,
>> >>> x_13.cpp, x_14.cpp, x_15.cpp, x_16.cpp, x_17.cpp, x_18.cpp, x_19.cpp,
>> >>> x_20.cpp
>> >>> cd
>> >>> /export/home/bent/k460-dev2/BUILD/kdebindings-4.6.2/build-kdebindings-4
>> >>> .6. 2/smoke/qt/qtcore &&
>> >>> /export/home/bent/k460-dev2/BUILD/kdebindings-4.6.2/build-kdebindings-4
>> >>> .6. 2/generator/bin/smokegen -config
>> >>> /export/home/bent/k460-dev2/BUILD/kdebindings-4.6.2/build-kdebindings-4
>> >>> .6. 2/smoke/qt/qtcore/config.xml -smokeconfig
>> >>> /export/home/bent/k460-dev2/BUILD/kdebindings-4.6.2/smoke/qt/qtcore/smo
>> >>> kec onfig.xml --
>> >>> /export/home/bent/k460-dev2/BUILD/kdebindings-4.6.2/smoke/qt/qtcore/qtc
>> >>> ore _includes.h "Cannot load library generator_smoke: (ld.so.1:
>> >>> smokegen: fatal:
>> >>> libgenerator_smoke.so: open failed: No such file or directory)"
>> >>>
>> >>> I have tried to tweak the various CMakeList.txt files under generatr to
>> >>> try and do the right thing, but my cmake foo is not strong enough.
>> >>>
>> >>> Howver, IFF if set the LD_LIBRARY_PATH in the make line as this:
>> >>>
>> >>> env
>> >>> LD_LIBRARY_PATH=/export/home/bent/k460-dev2/BUILD/kdebindings-4.6.2/bui
>> >>> ld- kdebindings-4.6.2/generator/bin make
>> >>>
>> >>> it will continue building, as shown below:
>> >>>
>> >>> [  6%] Generating smokedata.cpp, x_1.cpp, x_2.cpp, x_3.cpp, x_4.cpp,
>> >>> x_5.cpp, x_6.cpp, x_7.cpp, x_8.cpp, x_9.cpp, x_10.cpp, x_11.cpp,
>> >>> x_12.cpp, x_13.cpp, x_14.cpp, x_15.cpp, x_16.cpp, x_17.cpp, x_18.cpp,
>> >>> x_19.cpp, x_20.cpp
>> >>> using generator "generator_smoke.so"
>> >>> parsing
>> >>> "/export/home/bent/k460-dev2/BUILD/kdebindings-4.6.2/smoke/qt/qtcore/qt
>> >>> cor e_includes.h" Generating SMOKE sources...
>> >>> preparing SMOKE data [qtcore]
>> >>> writing out smokedata.cpp [qtcore]
>> >>> writing out x_*.cpp [qtcore]
>> >>> Done.
>> >>> Scanning dependencies of target smokeqtcore
>> >>> [  6%] Building CXX object
>> >>> smoke/qt/qtcore/CMakeFiles/smokeqtcore.dir/smokedata.o
>> >>>
>> >>> Anyone know what the proper cmake directive would be to make this work
>> >>> without the
>> >>> manual step of compiling with the LD_LIBRARY_PATH set?
>> >>
>> >> Normally this should just work, because smokegen should have a proper
>> >> rpath set. I don't know if this works on solaris though.
>> >> This won't be a problem in 4.7 anymore because smokegen, smokeqt and
>> >> smokekde are now all seperate projects. So we won't be running smokegen
>> >> from within the build anymore.
>> >> In the meantime just use your LD_LIBRARY_PATH hack, I'd say.
>> >
>> > Well, something is still not right. I started building out of git, and
>> > the same error
>> > occurs using /opt/kde4/bin/smokegen.  Seems that some additional linkage
>> > path needs to be in the path.  Also, by default, it looks like the
>> > RPATH is being
>> > deleted from smokegen and smokeapi.  I've tried fooling with the
>> > CMakeLists.txt to tweak that to not remove the RPATH, but no success
>> > yet....
>> >
>> > I was able to successfully build KDEbindings-smokeqt by using the
>> > LD_LIBRARY_PATH
>> > hack, but that's really not appropriate for "production", since it can't
>> > be used without the LD_LIBRARY_PATH hack.
>>
>> I have to add /opt/kde4/lib/smokegen to LD_LIBRARY_PATH for the smokegen
>> binary not to fail the build.  Is this caused by
>> generator_{smoke,dump} being placed
>> in the build-kdebinding-smokegen-4.6.4/bin directory instead of
>> lib/smokegen?
> Are you using smokegen from git as well?

Yes.  I was hoping to work around this issue.

> This should definitely not happen. smokegen contains the line
>
> lib.setFileName(app.applicationDirPath() + "/../lib" + LIB_SUFFIX +
> "/smokegen/generator_" + generator);

perhaps for Solaris, we need the RPATH setup for PREFIX/lib/smokegen,
because the LD_LIBRARY_PATH, so it can find it.

> to load the generator plugin. Note that smokegen doesn't link against these,
> they're loaded dynamically. So if your smokegen is in /opt/kde4/bin/smokegen,
> it should load /opt/kde4/lib/smokegen/generator_smoke.so. If it doesn't,
> Solaris seems to be doing something strange.

a plugin probably looks like a shared library on Solaris. I'm pretty sure that
the linker libarary for qt apps that use "plugins" set the RPATH to those
directories.

>
> I'll get a copy of OpenIndiana and try it in a VM, maybe I can track down the
> problem easier then. I can't promise anything before the weekend though.

Ben



More information about the Kde-bindings mailing list