Trolltech Home | Qt-interest Home | Recent Threads | All Threads | Author | Date
All threads index page 5

Qt-interest Archive, November 2007
LSB 3.0 and Qt4.3.2


Message 1 in thread

Hi trolls,

If I try to compile Qt4.3.2 with LSB 3.0 I get the following error:

qsettings.o: In function `isLikelyToBeNfs(int)':
qsettings.cpp:(.text+0x198b): undefined reference to `fstatfs'

fstatfs() seems not to be part of LSB 3.0 (I cannot find it in any
include-file)

Any idea if Qt4.3.2 ist LSB 3.0 conform?
Anyone out there who has compiled a LSB-version of Qt4?

Greetings
Jens Henrik


================
CONFIGURE:
./configure -platform linux-lsb-g++ -release -no-qt3support -qt-zlib
-qt-gif -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -no-nis -no-rpath
-no-separate-debug-info -prefix /usr/local/qt4-lsb3.0

COMPILATION-ERROR:
lsbc++ -o "/usr/local/qt-x11-opensource-src-4.3.2/bin/qmake" project.o
property.o main.o makefile.o unixmake2.o unixmake.o mingw_make.o
option.o winmakefile.o projectgenerator.o meta.o makefiledeps.o
metamakefile.o xmloutput.o pbuilder_pbx.o borland_bmake.o msvc_dsp.o
msvc_vcproj.o msvc_nmake.o msvc_objectmodel.o qstring.o qtextstream.o
qiodevice.o qglobal.o qbytearray.o qbytearraymatcher.o qdatastream.o
qbuffer.o qlistdata.o qfile.o qfsfileengine_unix.o
qfsfileengine_iterator_unix.o qfsfileengine.o qfsfileengine_iterator.o
qregexp.o qvector.o qbitarray.o qdir.o qdiriterator.o quuid.o qhash.o
qfileinfo.o qdatetime.o qstringlist.o qabstractfileengine.o
qtemporaryfile.o qmap.o qmetatype.o qsettings.o qlibraryinfo.o
qvariant.o qvsnprintf.o qlocale.o qlinkedlist.o qurl.o qnumeric.o
qcryptographichash.o qscriptasm.o qscriptast.o qscriptastvisitor.o
qscriptcompiler.o qscriptecmaarray.o qscriptecmaboolean.o
qscriptecmacore.o qscriptecmadate.o qscriptecmafunction.o
qscriptecmaglobal.o qscriptecmamath.o qscriptecmanumber.o
qscriptecmaobject.o qscriptecmaregexp.o qscriptecmastring.o
qscriptecmaerror.o qscriptcontext_p.o qscriptengine.o qscriptengine_p.o
qscriptextenumeration.o qscriptextvariant.o qscriptcontext.o
qscriptfunction.o qscriptgrammar.o qscriptlexer.o qscriptclassdata.o
qscriptparser.o qscriptprettypretty.o qscriptsyntaxchecker.o
qscriptvalue.o qscriptvalueimpl.o qscriptvalueiterator.o
--lsb-shared-libs=Xrender:Xrandr:Xfixes:Xcursor:Xinerama:freetype
qsettings.o: In function `isLikelyToBeNfs(int)':
qsettings.cpp:(.text+0x198b): undefined reference to `fstatfs'
collect2: ld gab 1 als Ende-Status zurück
gmake: *** [/usr/local/qt-x11-opensource-src-4.3.2/bin/qmake] Fehler 1

--
 [ signature omitted ] 

Message 2 in thread

Em Wednesday 28 November 2007 17:31:09 Jens escreveu:
> Any idea if Qt4.3.2 ist LSB 3.0 conform?
> Anyone out there who has compiled a LSB-version of Qt4?

Qt is not LSB-compliant. There will be no LSB-compliant versions of Qt.

Qt, however, is part of LSB. Which means you can have LSB-compliant 
applications that link to Qt. Currently, Qt 3.3.x and 4.2.x are in the 
standard.

-- 
 [ signature omitted ] 

Attachment: signature.asc
Description: This is a digitally signed message part.


Message 3 in thread

Em Wednesday 28 November 2007 19:03:04 Thiago Macieira escreveu:
> Qt, however, is part of LSB. Which means you can have LSB-compliant
> applications that link to Qt. Currently, Qt 3.3.x and 4.2.x are in the
> standard.

My mistake: it's Qt 4.1.x that is part of the LSB.

-- 
 [ signature omitted ] 

Attachment: signature.asc
Description: This is a digitally signed message part.


Message 4 in thread

Hi Thiago,

thanks for the infos.

Somehow the lsb-guys managed to compile Qt4 with lsb-tools. And I found
an lsb-plattform in qt4/mkspecs/linux-lsb-g++. It seems as if qt4 tries
to become lsb 3.1 compliant.

Thats why I tried to compile qt4.3.2 with the lsb-sdk.

But it fails :( because of conflicting declarations between
/usr/include/linux/types.h and /opt/lsb/include/sys/types.h in
corelib/io/qfilesystemwatcher_inotify.cpp

Any idea what to do?

Greetings
Jens

=============================
Here my script:

#!/bin/sh

QT4LIBSDIR=/usr/local/qt-x11-opensource-src-4.3.2_lsb31/lib

export PATH=/opt/lsb/bin:$PATH
export LD_LIBRARY_PATH=/opt/lsb/lib:$LD_LIBRARY_PATH

export LSBCC_SHAREDLIBS=\
libQt3Support:\
libQtAssistantClient:\
libQtCore:\
libQtDBus:\
libQtDesignerComponents:\
libQtDesigner:\
libQtGui:\
libQtNetwork:\
libQtOpenGL:\
libQtScript:\
libQtSql:\
libQtSvg:\
libQtTest:\
libQtUiTools:\
libQtXml

export LSB_SHAREDLIBPATH=$QT4LIBSDIR
#export LSBCC_INCLUDES
#export LSBCXX_INCLUDES

./configure \
	-release \
	-shared \
	-no-qt3support \
	-platform linux-lsb-g++ \
	-no-gif \
	-no-libtiff \
	-no-libmng \
	-no-openssl \
	-no-rpath \
	-no-separate-debug-info \
	-no-nis \
	-no-pch \
	-no-qdbus \
	-no-stl \
	-DQT_NO_INOTIFY \
	-prefix /usr/local/qt4-lsb31
make

--
 [ signature omitted ] 

Message 5 in thread

On Thursday 29 November 2007 11:53:43 Jens wrote:
> Somehow the lsb-guys managed to compile Qt4 with lsb-tools. And I found
> an lsb-plattform in qt4/mkspecs/linux-lsb-g++. It seems as if qt4 tries
> to become lsb 3.1 compliant.
>
> Thats why I tried to compile qt4.3.2 with the lsb-sdk.
>
> But it fails :( because of conflicting declarations between
> /usr/include/linux/types.h and /opt/lsb/include/sys/types.h in
> corelib/io/qfilesystemwatcher_inotify.cpp
>
> Any idea what to do?

That makespec is for building LSB applications against Qt. It's not meant to 
build Qt against the LSB libraries.

That will not work. Qt uses a lot of symbols and definitions that are not part 
of the LSB and will probably not be any time soon.

In fact, with LSB 3.1, the only way you can print is to use Qt, because CUPS 
libraries aren't part of it, but Qt has QPrinter that is allowed to talk to 
CUPS. It does that by linking to libcups, even if that is not part of LSB.

How, you ask me? Because Qt isn't LSB-compliant. It's not intended to be. But 
applications linking to Qt can be LSB-compliant.

-- 
 [ signature omitted ] 

Attachment: signature.asc
Description: This is a digitally signed message part.


Message 6 in thread

Hi Thiago,

> How, you ask me? Because Qt isn't LSB-compliant. It's not intended to be. But 
> applications linking to Qt can be LSB-compliant.

I would like to create a LSB-compliant application, which needs minimum
Qt4.3.2. Therefore I decided to publish my app (beside source) as
binary-tar.gz-package (same as paraview does).

To have a clear definition on which distributions this binary runs
without problems, I decided to use LSB and include all extra libraries
in my binary-package.

Beside Vtk, Qt4.3.2 are extra libraries I have to include. Therefore I
need to compile Qt4.3.2 against the LSB-libs/includes.

I have seen at

http://labs.trolltech.com/blogs/2006/01/08/qt-lsb-integration/ and
http://trolltech.com/company/newsroom/announcements/press.2006-05-01.5997770897

that Qt4.1.1 was build against the LSB-libs and is part of LSB as an
optional package -- that is the reason why I hoped and asked how to
compile the new Qt4.3.2 with LSB.
I cannot believe LSB-support dropped after Qt4.3.2.

Sorry for keeping this thread open :)

Greetings
Jens

--
 [ signature omitted ] 

Message 7 in thread

Hi,

>
> I would like to create a LSB-compliant application, which needs minimum
> Qt4.3.2. Therefore I decided to publish my app (beside source) as
> binary-tar.gz-package (same as paraview does).
>

Then you cannot use that version of LSB. LSB 3.1 only included Qt 4.1 as 
optional. LSB 3.2 will hopefully upgrade Qt to 4.2.3 and make it a mandatory 
part of the stack.

> Beside Vtk, Qt4.3.2 are extra libraries I have to include. Therefore I
> need to compile Qt4.3.2 against the LSB-libs/includes.
>

If you want to compile Qt using LSB only stuff, then you shouldn't have major 
problems. You need to tweak the configuration a little bit to make it work, 
but you will have to ship your own compiled version of Qt with your 
application to make it LSB compliant.

>
> that Qt4.1.1 was build against the LSB-libs and is part of LSB as an
> optional package -- that is the reason why I hoped and asked how to
> compile the new Qt4.3.2 with LSB.
> I cannot believe LSB-support dropped after Qt4.3.2.
>

It wasn't dropped, but LSB publish their standards once a year and they do not 
update them. We are working to have a more recent version of Qt on the next 
LSB standards but that is not our decision, LSB people make the decision.

Regards.


-- 
 [ signature omitted ] 

Message 8 in thread

Hi Carlos,

thanks for your answer. I am happy to get positiv news :)

> If you want to compile Qt using LSB only stuff, then you shouldn't have major 
> problems. You need to tweak the configuration a little bit to make it work, 
> but you will have to ship your own compiled version of Qt with your 
> application to make it LSB compliant.

yes, that is exactly what I was thinking about.

Compiling Qt4.3.2 using LSB-only-stuff is what I tried. Therefore I
started the script "config4LSB" (listed at the bottom ) in a clean
qt-x11-opensource-src-4.3.2 directory.

But it fails :( because of conflicting declarations between
/usr/include/linux/types.h and /opt/lsb/include/sys/types.h in
corelib/io/qfilesystemwatcher_inotify.cpp

The line in qfilesystemwatcher_inotify.cpp
#include "linux/types.h"
makes it fail. I changed that line to "sys/types.h", which would take
the lsb-includes, but it still fails.

I tried to skip qfilesystemwatcher_inotify.cpp with -DQT_NO_INOTIFY, but
qt tries to compile that file anyway.

Any idea? Anyone working on LSB-related issues at trolltech, who might
have made Qt4.3.2 compile with LSB?

Thanks a lot for your answers and your time.

Greetings
Jens


================== config4LSB ====================
#!/bin/sh
export PATH=/opt/lsb/bin:$PATH
export LD_LIBRARY_PATH=/opt/lsb/lib:$LD_LIBRARY_PATH

export LSBCC_SHAREDLIBS=\
libQt3Support:\
libQtAssistantClient:\
libQtCore:\
libQtDBus:\
libQtDesignerComponents:\
libQtDesigner:\
libQtGui:\
libQtNetwork:\
libQtOpenGL:\
libQtScript:\
libQtSql:\
libQtSvg:\
libQtTest:\
libQtUiTools:\
libQtXml

export SB_SHAREDLIBPATH=/usr/local/qt-x11-opensource-src-4.3.2_lsb31/lib

./configure \
        -release \
        -shared \
        -no-qt3support \
        -platform linux-lsb-g++ \
        -no-gif \
        -no-libtiff \
        -no-libmng \
        -no-openssl \
        -no-rpath \
        -no-separate-debug-info \
        -no-nis \
        -no-pch \
        -no-qdbus \
        -no-stl \
        -DQT_NO_INOTIFY \
        -prefix /usr/local/qt4-lsb31

--
 [ signature omitted ] 

Message 9 in thread

Hi,

> Compiling Qt4.3.2 using LSB-only-stuff is what I tried. Therefore I
> started the script "config4LSB" (listed at the bottom ) in a clean
> qt-x11-opensource-src-4.3.2 directory.
>
> But it fails :( because of conflicting declarations between
> /usr/include/linux/types.h and /opt/lsb/include/sys/types.h in
> corelib/io/qfilesystemwatcher_inotify.cpp
>

Well, in this case Qt can be compiled using your normal toolchain since you 
will ship your own version of Qt. _HOWEVER_ you need to make sure that all 
dependencies are fulfilled by either including other libraries or by 
disabling them in Qt (libpng for instance).
After you have your version of Qt ready, compile your application using LSB 
developer tools and add Qt to the compile process as a component of your 
application. Once that's done you can ship your application and your own 
version of Qt as a bundle to be LSB certified. 
The LSB guys check that you only call LSB standard symbols when calling system 
libraries, therefore any Qt symbols your application requires must be 
provided with the Qt version you ship with your app.
I'm not sure if I explained clearly, but give it a spin and scream if you run 
into troubles.

Cheers!


-- 
 [ signature omitted ] 

Message 10 in thread

Hi,

I finally managed to compile Qt4.3.2 with LSB3.1 SDK with the two
scripts attached to this mail.

I found one "bug" in Qt4.3.2/src/corelib/io/qfilesystemwatch_inotify.cpp
"#include <linux/types.h>"
	needs to be changed to
"#include <asm/types.h>"
to make it compile with lsb-3.1.1. (shall I send this to
qt-bug@trolltech, too?)

That header is needed for definition of "__u32" which is defined in
"asm/types.h" (included from "linux/types"). But if you include
"linux/types.h", you include other definitions, too, which create
conflicts with lsb-headers.

Greetings
Jens

========================
Here is the howto:
1) download LSB3.1-SDK from www.linux-foundation.org/en/Downloads
2) lsb-skd includes seperate rpms. I installed the following to /opt/lsb/
	lsb-build-base-3.1.1-3.i486.rpm
	lsb-build-c++-3.1.1-3.i486.rpm
	lsb-build-cc-3.1.1-3.i486.rpm
	lsb-build-desktop-3.1.1-3.i486.rpm
3) then change to the source directory of qt and "mkdir lib" ((because
will set LSB_SHAREDLIBPATH)
4) change "#include <linux/types.h>" in
corelib/io/qfilesystemwatch_inotify.cpp to "#include <asm/types.h>"

Infos:
* the config flags are just the ones I used. If you change them, make
sure to include the libs they need.
* use "-no-sse -no-sse2" to skip mm_malloc-errors (no libmm-support in
LSB 3.1) in gui/painting/



Carlos Manuel Duclos Vergara schrieb:
> Hi,
> 
>> Compiling Qt4.3.2 using LSB-only-stuff is what I tried. Therefore I
>> started the script "config4LSB" (listed at the bottom ) in a clean
>> qt-x11-opensource-src-4.3.2 directory.
>>
>> But it fails :( because of conflicting declarations between
>> /usr/include/linux/types.h and /opt/lsb/include/sys/types.h in
>> corelib/io/qfilesystemwatcher_inotify.cpp
>>
> 
> Well, in this case Qt can be compiled using your normal toolchain since you 
> will ship your own version of Qt. _HOWEVER_ you need to make sure that all 
> dependencies are fulfilled by either including other libraries or by 
> disabling them in Qt (libpng for instance).
> After you have your version of Qt ready, compile your application using LSB 
> developer tools and add Qt to the compile process as a component of your 
> application. Once that's done you can ship your application and your own 
> version of Qt as a bundle to be LSB certified. 
> The LSB guys check that you only call LSB standard symbols when calling system 
> libraries, therefore any Qt symbols your application requires must be 
> provided with the Qt version you ship with your app.
> I'm not sure if I explained clearly, but give it a spin and scream if you run 
> into troubles.
> 
> Cheers!
> 
> 

Attachment:

Attachment: config4LSB.sh
Description: application/shellscript

Attachment: make4LSB.sh
Description: application/shellscript