[clam-devel] Network compilation problem

David García Garzón david.garcia at upf.edu
Thu Apr 29 12:21:59 PDT 2010


A Dimarts 27 Abril 2010 11:09:45, David García Garzón va escriure:
> A Divendres 23 Abril 2010 20:11:00, SAn va escriure:
> > On Fri, Apr 23, 2010 at 09:47, David García Garzón
> > 
> > <david.garcia at barcelonamedia.org> wrote:
> > > Adding that to SHCXXFLAGS has sense, adding to CPPPATH would be even
> > > nicer, although, as you say, maybe there is a better way based on
> > > pkg-config, and/or patching qt4.py to work well without this.
> > > 
> > > But QT4_MOC as defined in the patch has no sense at all. This option is
> > > used as moc command (tipical value is '/usr/bin/moc'). I cannot find an
> > > explanation for it working but that the statement has no effect in the
> > > place it is patched (so build will work without the statement) or that
> > > moc generated files were generated in previous executions, (so the
> > > patch wouldn't work with a clean build).
> > 
> > $ QTDIR=/usr/lib/qt scons install prefix=$pkgdir/usr clam_prefix=/usr
> > qt_plugins_install_path=/usr/lib/qt/plugins/designer release=0
> > verbose=1
> > [...]
> > moc -I/home/san/clam/clean/pkg/usr/include -I/usr/local/include
> > -I/usr/include/libxml++-2.6 -I/usr/lib/libxml++-2.6/include
> > -I/usr/include/libxml2 -I/usr/include/glibmm-2.4
> > -I/usr/lib/glibmm-2.4/include -I/usr/include/sigc++-2.0
> > -I/usr/lib/sigc++-2.0/include -I/usr/include/glib-2.0
> > -I/usr/lib/glib-2.0/include -I/usr/include/alsa -I/usr/include/QtCore
> > -I/usr/include/QtGui -I/usr/include/QtOpenGL -I/usr/include/QtXml
> > -I/usr/include/QtSvg -I/usr/include/QtUiTools
> > -I/usr/include/QtDesigner -I/usr/include/QtWebKit
> > -I/usr/include/QtNetwork -o
> > src/clamWidgetsPlugin/generated/moc_KeySpacePlugin.cxx
> > src/clamWidgetsPlugin/KeySpacePlugin.hxx
> > [...]
> > XTERM_SHELL, /bin/bash
> > PATH,
> > /bin:/usr/bin:/sbin:/usr/sbin:/opt/kde/bin:/usr/bin/perlbin/site:/usr/bin
> > / perlbin/vendor:/usr/bin/perlbin/core:/opt/qt/bin TERM, xterm
> > QT_XFT, true
> > PKG_CONFIG_PATH, /usr/lib/pkgconfig:/opt/qt/lib/pkgconfig
> > _, /usr/bin/scons
> > PWD, /home/san/clam/Ms/src/NetworkEditor-1.4.0
> > QTDIR, /usr/lib/qt
> > Building src/clamWidgetsPlugin/generated/moc_KeySpacePlugin.cxx with
> > action: $QT4_MOC $QT4_MOCFROMHFLAGS $QT4_MOCINCFLAGS -o 
$TARGET
> 
> $SOURCE
> 
> > ['moc', '-I/home/san/clam/clean/pkg/usr/include',
> > '-I/usr/local/include', '-I/usr/include/libxml++-2.6',
> > '-I/usr/lib/libxml++-2.6/include', '-I/usr/include/libxml2',
> > '-I/usr/include/glibmm-2.4', '-I/usr/lib/glibmm-2.4/include',
> > '-I/usr/include/sigc++-2.0', '-I/usr/lib/sigc++-2.0/include',
> > '-I/usr/include/glib-2.0', '-I/usr/lib/glib-2.0/include',
> > '-I/usr/include/alsa', '-I/usr/include/QtCore',
> > '-I/usr/include/QtGui', '-I/usr/include/QtOpenGL',
> > '-I/usr/include/QtXml', '-I/usr/include/QtSvg',
> > '-I/usr/include/QtUiTools', '-I/usr/include/QtDesigner',
> > '-I/usr/include/QtWebKit', '-I/usr/include/QtNetwork', '-o',
> > '"src/clamWidgetsPlugin/generated/moc_KeySpacePlugin.cxx"',
> > '"src/clamWidgetsPlugin/KeySpacePlugin.hxx"']
> > src/clamWidgetsPlugin/KeySpacePlugin.hxx:33: Error: Undefined interface
> > scons: *** [src/clamWidgetsPlugin/generated/moc_KeySpacePlugin.cxx] Error
> > 1 scons: building terminated because of errors.
> > 
> > (i have patched scons *only* to print more stuff, and SConstruct to
> > use -O0, wishing to down the build time)
> > 
> > So, i changed
> > env.Append(QT4_MOC=["-I/usr/include"])
> > for
> > env.Append(QT4_MOCFROMHFLAGS=["-I/usr/include"])
> > its okey now?
> 
> Does the CPPPATH work?
> 
> env.AppendUnique(CPPPATH=['/usr/include'])
> 
> If not try to append it before or after the EnableQtModules call. It should
> not, but it could be a difference.
> 
> > >> > I would also like that as most platforms could rely on pkg-config
> > >> > for qt. Did you have problems using it (by undefining QTDIR)?
> > >> 
> > >> Yes. Its not explicit in the dependences but the meta package
> > >> base-devel (with gcc, fakeroot,
> > >> pkg-config) its a must when you use the AUR repositories (its in the
> > >> AUR guide). So it should be
> > >> using pkg-config and it doesnt find QTDIR.
> > > 
> > > Forgive the tool about the warning on no QTDIR defined. It shouldn't be
> > > needed if proper pkg-config files for Qt libs is available.
> > 
> > Take a look, without defining QTDIR
> > 
> > $ scons install prefix=../../pkg/usr clam_prefix=/usr
> > qt_plugins_install_path=/usr/lib/qt/plugins/designer release=0
> > verbose=1
> > scons: Reading SConscript files ...
> > Loading nsis tool...
> > Lodading dmg tool...
> > Version:  1.4.0
> > Package version:  1.4.0
> > scons: done reading SConscript files.
> > scons: Building targets ...
> > /opt/qt/bin/uic -o src/generated/ui_About.hxx src/About.ui
> > 
> > Building src/generated/ui_About.hxx with action:
> >   $QT4_UIC $QT4_UICFLAGS -o $TARGET $SOURCE
> > 
> > ['/opt/qt/bin/uic', '-o', '"src/generated/ui_About.hxx"',
> > '"src/About.ui"'] uic: File generated with too recent version of Qt
> > Designer (4.0 vs. 3.3.8) scons: *** [src/generated/ui_About.hxx] Error 1
> > scons: building terminated because of errors.
> > 
> > but the pkgconfig looks good (well, thanks to the network editor now i
> > know that pkg-config exists):
> > 
> > [san at abulafia NetworkEditor-1.4.0]$ cat /usr/lib/pkgconfig/QtCore.pc
> > prefix=/usr
> > exec_prefix=${prefix}
> > libdir=${prefix}/lib
> > includedir=${prefix}/include/QtCore
> > qt_config=lex yacc warn_on uic resources qt warn_on release
> > incremental link_prl exceptions no_mocdepend release stl
> > qt_no_framework silent system-sqlite release shared dll largefile stl
> > precompile_header mmx 3dnow sse sse2 dylib create_prl link_prl
> > depend_includepath QTDIR_build use_libmysqlclient_r qt_install_headers
> > qt warn_on depend_includepath qmake_cache target_qt hide_symbols
> > bsymbolic_functions create_libtool create_pc explicitlib moc thread
> > shared dll
> > moc_location=/usr/bin/moc
> > uic_location=/usr/bin/uic
> > 
> > Name: Qtcore
> > Description: Qtcore Library
> > Version: 4.6.2
> > Libs: -L${libdir} -lQtCore
> > Libs.private: -L/usr/lib  -lpthread -lz -lm -ldl -pthread
> > -lgthread-2.0 -lrt -lglib-2.0
> > Cflags: -DQT_SHARED -I/usr/include -I${includedir}
> > 
> > >> Withoud using pkg-config
> > >> CLAM doesnt build because
> > >> it cant find libxml++-2.6 (something like
> > >> /usr/include/libxml++/libxml++.h and not
> > >> /usr/include/libxml++-2.6/libxml++-2.6.h)
> > > 
> > > I can't get the point on what you say. You can (must) use pkg-config
> > > for the rest of the packages (libxml++...).
> > 
> > Well i thougt that pkg-config wasnt a dependency.
> > 
> > 
> > I have a few more questions ;)
> > 
> > 1)
> > Take a look to the prefix's on *.pc
> > 
> > [san at abulafia src]$ cat /usr/lib/pkgconfig/clam_core.pc
> > name = clam_core
> > prefix = /home/san/clam/clean/pkg/usr
> > libdir = ${prefix}/lib
> > includedir = ${prefix}/include
> > 
> > Name: ${name}
> > Description: C++ Framework for analysis, synthesis and transformation
> > of music audio signals
> > Url: http://clam-project.org
> > Version: 1.4.0
> > Requires:
> > Conflicts:
> > Libs: -L${libdir} -l${name}
> > Cflags: -I${includedir} -DCLAM_FLOAT -DUSE_XMLPP=1 -DCLAM_USE_XML
> > -DCLAM_USE_XML -DUSE_LADSPA=1 -I/usr/local/include
> > -I/usr/include/libxml++-2.6 -I/usr/lib/libxml++-2.6/include
> > -I/usr/include/libxml2 -I/usr/include/glibmm-2.4
> > -I/usr/lib/glibmm-2.4/include -I/usr/include/sigc++-2.0
> > -I/usr/lib/sigc++-2.0/include -I/usr/include/glib-2.0
> > -I/usr/lib/glib-2.0/include
> > 
> > [san at abulafia src]$ cat /usr/lib/pkgconfig/clam_qtmonitors.pc
> > name = clam_qtmonitors
> > prefix = /home/san/clam/Ne/pkg
> > libdir = ${prefix}/lib
> > includedir = ${prefix}/include
> > 
> > Name: ${name}
> > Description: C++ Framework for analysis, synthesis and transformation
> > of music audio signals
> > Url: http://clam-project.org
> > Version: 1.4.0
> > Requires: clam_core, clam_processing, clam_audioio
> > Conflicts:
> > Libs: -L${libdir} -l${name}
> > Cflags: -I${includedir}
> > 
> > they are wrong? I think they should say prefix = /usr, and that value
> > is taken from the  scons install --prefix=DIR
> > but because i am "doing the package"  and not using the "final" prefix.
> > How should i change them? In post install or what?
> 
> core, processing and audioio, scons has two different options 'prefix' and
> 'prefix_for_packaging'. Just use them. Sadly we don't have such option in
> the rest of the sconstructs (plugins, apps...) Maybe is something that we
> should eventually introduce.
> 
> > 2)
> > How to tell NetworkEditor the correct path of example-data so when i
> > click in examples it opens directly that?
> > Now it is pointing to the pkgdir/usr/share instead of /usr/share/blah
> > 
> > I had read the sources of the debian packages, but still dont
> > understand! (well i dont have experience with debian)
> > 
> > thanks! and sory for the length
> > SAn
> 
> The problem is about defining DATA_EXAMPLES_PATH macro as we do in line 
131
q> of the SConstruct. As the comment says, if you define the prefix as the
> (missing) prefix_for_packaging, the path in networks is set to that path.
> And won't work when installed. So, yes, definitelly we should add such
> scons flag. The fast workaround, modifying such a line to hardcode /usr.

I did a temptative fix in the svn. NetworkEditor and plugins have 
prefix_for_packaging. clam.py tool also patched.

TODO: Chordata and Annotator.



-- 
David García Garzón
(Work) david dot garcia at upf anotherdot edu
http://www.iua.upf.edu/~dgarcia



More information about the clam-devel mailing list