How to Build Extra Applications
This HowTo provides detailed notes and explanations for building the optional applications included in the Trinity Desktop Environment code repository.
Introduction and Requirements
The optional applications are QT3 and KDE3 applications, some of them originally third-party, which have been ported forward to TQT/TDE and are now maintained by the Trinity Project. All of them require TQT to be installed, and many also require tdelibs, so they share the dependency list for the core packages.
Other than that, well, if this page looks awfully similar to How to Build TDE Core Modules, that's because they were both split from a single difficult-to-read mega-page on the old wiki, and some material had to be common to both.
Preparing the Source
To use the release tarballs, just untar them somewhere.
To live dangerously and use the GIT sources, read Notes on GIT Sources first.
Building
Building Packages with cmake
List of Packages Building with cmake
cmake is the newer, easier, and more maintainable build system the Trinity Project is in the process of porting TDE source to. The following core and dependency packages have already been converted, and their autotools build scripts are no longer maintained:
- abakus
- amarok
- dolphin
- gtk-qt-engine
- kde-style-lipstik
- kde-style-qtcurve
- kdesvn
- kgtk-qt3
- kio-locate
- knetworkmanager8
- knetworkmanager9
- kpilot
- kpowersave
- rosegarden
- tde-systemsettings
- wlassistant
Some other packages are in the process of conversion, but do not have complete cmake build scripts yet. Build everything not in the list above with autotools.
Read the notes for individual package requirements before trying to build anything.
Performing a cmake Build
The command listing below is only an example. You will wish to edit the exports if your distribution puts things in unusual locations or if you wish to install to somewhere other than /opt/trinity . Not all exports will be needed on all systems.
export PREFIX=/opt/trinity export SYSCONFDIR=/etc/trinity export LIBDIR=/opt/trinity/lib export MANDIR=/opt/trinity/man export QTDIR=/opt/trinity/lib/qt3-3.3.8.d export PATH=/opt/trinity/qt3-3.3.8.d/bin:/opt/trinity/bin:$PATH export LD_LIBRARY_PATH=/opt/trinity/lib:/opt/trinity/lib/trinity:$LD_LIBRARY_PATH export PKG_CONFIG_PATH=:/opt/trinity/lib/pkgconfig:/opt/trinity/qt3-3.3.8.d/lib/pkgconfig:$PKG_CONFIG_PATH # Enable only one of the following: # export DEBUG_AUTOTOOL_OPT="--disable-debug" export DEBUG_CMAKE_OPT="" cmake path/to/trinity/module \ -DCMAKE_C_FLAGS:STRING="$CPUOPTIONS" \ -DCMAKE_CXX_FLAGS:STRING="$CPUOPTIONS $DEBUG_CMAKE_OPT" \ -DCMAKE_INSTALL_PREFIX=${PREFIX} \ -DSYSCONF_INSTALL_DIR=${SYSCONFDIR} \ -DLIB_SUFFIX=${LIBDIRSUFFIX} \ -DMAN_INSTALL_DIR=${MANDIR} \ -DBUILD_ALL=ON make VERBOSE=1
Notes
- When building on 64-bit, the following (T)Qt3 configuration option might need to be explicitly declared in some distro build scripts:
-platform linux=g++-64 (rather than linux-g++ (notice the dash!))
- If class constructor issues surface during the build, please post the error to the trinity-users list.
Building Packages with Autoconf
Introduction
If the package you're trying to build is on the list of those that will build with cmake, try that first, because its autotools files will be unmaintained, bit-rotted, and possibly outright broken.
Please read the notes for individual package requirements before trying to build anything.
For those packages that still need to be built with autotools, the following steps must be run for each affected Trinity module, including tarball snapshots.
Regenerate Autoconf/Automake files
cd to the desired module to build, then run:
cp -Rp <path to your system's libtool.m4 file> admin/libtool.m4.in cp -Rp <path to your system's ltmain.sh file> admin/ltmain.sh make -f admin/Makefile.common
Configure and Build
export PREFIX=/opt/trinity export SYSCONFDIR=/etc/trinity export LIBDIR=/opt/trinity/lib export MANDIR=/opt/trinity/man export QTDIR=/opt/trinity/lib/qt3-3.3.8.d export PATH=/opt/trinity/qt3-3.3.8.d/bin:/opt/trinity/bin:$PATH export LD_LIBRARY_PATH=/opt/trinity/lib:/opt/trinity/lib/trinity:$LD_LIBRARY_PATH export PKG_CONFIG_PATH=:/opt/trinity/lib/pkgconfig:/opt/trinity/qt3-3.3.8.d/lib/pkgconfig:$PKG_CONFIG_PATH # Enable only one of the following: # export DEBUG_AUTOTOOL_OPT="--enable-debug=full" export DEBUG_AUTOTOOL_OPT="--disable-debug"
CFLAGS=$CPUOPT \ CXXFLAGS=$CPUOPT \ ./configure \ --prefix=${PREFIX} \ --sysconfdir=${SYSCONFDIR} \ --libdir=${LIBDIR} \ --mandir=${MANDIR} \ --with-qt-dir=${QTDIR} \ --with-qt-includes=${QTDIR}/include \ --with-qt-libraries=${QTDIR}/lib \ $DEBUG_AUTOTOOL_OPT
View the Distribution Specific Builds page for additional configure options.
Notes
- Not well documented anywhere, but when building with automake several packages need the --enable-closure configure option:
- kaffeine
- kdiff3
- When building on 64-bit, the following (T)Qt3 configuration option might need to be explicitly declared in some distro build scripts:
-platform linux=g++-64 (rather than linux-g++ (notice the dash!))
Build Times
Building Trinity requires time and patience. Build times vary. Here are some guidelines from building Trinity 3.5.12 on a dual core 2.3 GHz AM2 with 4GB of RAM, using tmpfs, 7200 rpm SATA II hard drives; with Amarok, Firefox, Konsole, Konqueror, Kate, and other various apps often running concurrently. Compile times will be faster without such overhead, but likely will be longer when building with support package hooks. Packages using cmake will build faster than those still stuck on autotools.
- k3b: 8 minutes
- amarok: 10 minutes
- knemo: 2 minutes
- ktorrent: 7 minutes
- koffice: 109 minutes
Installing
The command is the same regardless of whether your package was built with cmake or autotools:
make install || exit 1
Additional Functionality
Some applications gain additional functionality when compiled with optional dependencies available. What follows is an (incomplete) list.
List of Optional Dependencies by Application
k3b
- libsndfile C library for reading and writing sampled sound files
- libdvdcss library for transparent DVD device access with on-the-fly CSS decryption
- libdvdnav library support for DVD navigation features
- ffmpeg software to record, convert and stream audio and video
- lame MP3 encoding support
- libdv- quasar DV codec
- libdvdread read DVD video disks
- a52dec video decoder
- faac Advanced Audio Coder (MPEG2-AAC, MPEG4-AAC)
- faad2 AAC decoder
- xvidcore MPEG-4 compliant video codec
- schroedinger C implementation of BBC's dirac codec
- openjpeg open-source JPEG 2000 codec
- x264 H264/AVC video stream encoder
- speex an audio compression format designed for speech
- transcode video stream processor
- libquicktime library for reading and writing QuickTime? files
- mjpegtools video recording/playback tools
- libmpeg2 mpeg-video decoding library
- vcdimager video CD and Super Video CD tools
- emovix video CD distribution tools
- musepack-tools Musepack decoder/encoder
- libmusicbrainz MusicBrainz? client library
amarok
- Ruby
- libmp4v2 MP4V2 tagging
koffice
- wv2 Microsoft Word conversion
- GraphicsMagick various image filters (chalk)
- PostgreSQL database server (kexi)
kaffeine
- cdparanoia digital audio extraction tool
- gst-plugins-base GStreamer plugins
- gstreamer streaming multimedia framework
- xine-lib xine multimedia playback engine libraries
k9copy
- ffmpeg software to record, convert and stream audio and video
- dvdauthor DVD authoring tools
- vamps DVD backup tool
- MPlayer movie player
- k3b CD and DVD creation and ripping
digikam
- lcms color management engine
- dcraw decode raw digital photos
- libgphoto2 digital camera library
- jasper JPEG-2000 codec
- exiv2 Exif and IPTC metadata library and tools
- libkdcraw dcraw C++ library wrapper
- libkexiv2 exiv2 library wrapper
- libkipi image plugin interface structure
- kipi-plugins plugins for libKipi
- sqlite self contained SQL database engine
gwenview
- exiv2 Exif and IPTC metadata library and tools
- libkexiv2 exiv2 library wrapper
- libkipi image plugin interface structure
- kipi-plugins plugins for libKipi
Quirks and Known Bugs
Krita Rename
Koffice Krita has been renamed to Chalk.
Third-party/LibreOffice
This folder contains patches that add TDE support to the upstream LibreOffice sources. The patches allow LibreOffice to use Trinity dialog boxes. The patches have not been merged into the upstream LibreOffice GIT tree, but they work just fine as-is when applied to the stock LO sources. Obtaining the advantages of these patches requires rebuilding LibreOffice from sources.
OpenGL and nVidia
Building many Trinity and related packages depend upon OpenGL, such as tdegraphics, k3b, koffice, tdenetwork, gwenview, digikam, etc.;
as well as dependency packages such as libkipi, libkdcraw, libkexiv2, avahi, etc.
If any of those packages are built when the proprietary nvidia drivers are installed, the dependent package will fail to build with an error about /usr/lib/libGL.la.
That file is installed by the proprietary nvidia package. When building for personal use only, then building those packages with nvidia installed will pose no harm.
When building packages for other users then build the entire suite of packages in a "clean" generic OpenGL environment.
Other users might not use the proprietary nvidia package. This is true of any package that has OpenGL dependencies.
MSWord Support in KOffice
The koffice package expects the wv2 package to provide MS Word import support. The older wv2-0.2.3 package is somewhat broken. Users are encouraged to update wv2-0.2.3 to wv2-0.4.2. The newer version of wv2 is compiled with cmake and ignores compiling with automake. The libwv2.la file provided upstream is broken with respect to automake and will cause automake to fail. Basically, /usr/lib/libwv2.la is missing a proper header statement. This should be patched when creating the wv2-0.4.2 package.