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

Arno Rehn arno at arnorehn.de
Mon May 2 15:05:28 UTC 2011


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?
This should definitely not happen. smokegen contains the line

lib.setFileName(app.applicationDirPath() + "/../lib" + LIB_SUFFIX + 
"/smokegen/generator_" + generator);

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.

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.

-- 
Arno Rehn
arno at arnorehn.de



More information about the Kde-bindings mailing list