Difference between pages "Changelog For R14.0.5" and "How to Build Extra Applications"

From Trinity Desktop Project Wiki
(Difference between pages)
Jump to navigation Jump to search
imported>SlavekB
(Update 20170402)
 
imported>Sunjob
 
Line 1: Line 1:
  +
[[Category:Documentation]]
= common =
 
  +
[[Category:Installation]]
== cmake ==
 
  +
[[Category:Developers]]
* Add support for libraries with release number in the name of the library<br/>See https://www.gnu.org/software/libtool/manual/html_node/Release-numbers.html
 
  +
This HowTo provides detailed notes and explanations for building the optional applications included in the
* Fix '.la' file name for libraries with dot in name
 
  +
Trinity Desktop Environment code repository.
* Automatically run tests within check target
 
* tde_add_check_executable: add TEST argument
 
* add tde_add_check_executable macro<br/>- also add EXCLUDE_FROM_ALL arg for tde_add_library
 
   
= dependencies =
 
== qt3 ==
 
* Do not force POSIX mutexes on FreeBSD<br/>This relates to bug [https://bugs.trinitydesktop.org/show_bug.cgi?id=2462 #2462]<br/>See comments on bug [https://bugs.trinitydesktop.org/show_bug.cgi?id=2744 #2744]
 
   
  +
==Introduction and Requirements==
== tqt3 ==
 
* Do not force POSIX mutexes on FreeBSD<br/>This relates to bug [https://bugs.trinitydesktop.org/show_bug.cgi?id=2462 #2462]<br/>See comments on bug [https://bugs.trinitydesktop.org/show_bug.cgi?id=2744 #2744]
 
   
  +
The optional applications are QT3 and KDE3 applications, some of them originally third-party, which have been
== arts ==
 
  +
ported forward to TQT/TDE and are now maintained by the Trinity Project. All of them require TQT to be
* Fix detection whether the system is big endian
 
  +
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
== dbus-1-tqt ==
 
  +
because they were both split from a single difficult-to-read mega-page on the old wiki, and some material
* Fix memory leaks in sendWithReplyAsync
 
  +
had to be common to both.
   
== tqca-tls ==
 
* Add support for OpenSSL 1.1
 
   
  +
==Preparing the Source==
= main =
 
== tdelibs ==
 
* Fix memory leak after processing udev_monitor
 
* Fix memory leak after processing udev_device
 
* Fix memory leak after use XGetAtomName
 
* Fixed code for tdefiledialog which caused the problem explained in bug<br/>2743. Using the new code, editing the path information in a<br/>tdefiledialog and pressing the "open/save" button will behave exactly in<br/>the same way as if ENTER was pressed after editing the path and before<br/>pressing "open/save".
 
* Reverted commit 53e36f6d (master), c8ff908d (r14.0.x)
 
* testing: Run tests that use DCOP in a temporary home
 
* Fix detection whether the system is big endian
 
* testing: fix execution of test tdeabc/vcardparser/testread2 with CMake older than 2.8.4
 
* Fixed javascript syntax highlighting in Kate
 
* testing: fix utf8 handling in tdeabc/testread2
 
* testing: disable tdeabc/testldapclient<br/>Test requires running TDE session and access<br/>to a foreign ldap server on the Internet.
 
* testing: run tdeio/kmimetypetest with temporary profile
 
* testing: fix bash specific syntax in dcop test
 
* testing: fix build of tdewallet tests with hidden visibility
 
* tdeui & tdewallet: add tests
 
* tdeio: add tests
 
* fixup! tdecore/tdeconfig_compiler: add check/test executables
 
* dcop/tests: run dcop tests in a safer manner
 
* tdecore/tdeconfig_compiler: add check/test executables
 
* testing: add TEST argument to tde_add_check_executable() macro
 
* tdeabc: update the tests for vcardparser to run them in a new way
 
* tdeabc: make the testldapclient app non-gui
 
* tdecore: fix a crash of dcop non-GUI apps without X<br/>Previously non-GUI apps crashed on TDEApplication::updateUserTimestamp<br/>callback when receiving a DCOP message.
 
* Include module into test names
 
* Make dcop tests run without X
 
* Add tdeabc tests to cmake
 
* Fix a couple of harmless warnings
 
* Add dcop tests to cmake
 
* Initial add for check target for cmake
 
* tdeio/kmimemagic: remove MAGIC_CONTINUE flag<br/>This resolves bug [https://bugs.trinitydesktop.org/show_bug.cgi?id=2713 #2713]<br/>The MAGIC_CONTINUE flag resulted in a malformed mimemagic responses<br/>like "application/x-executable\012- application/octet-stream"<br/>instead of just "application/x-executable".<br/>This string being unparsed then caused the KMimeType::findByURL() to<br/>fallback to application/octet-stream for nearly every mimetype.
 
* kimgio: Enable STDC_LIMIT_MACROS for jasper
 
* tdeinit: make lnusertemp respect HOME for root<br/>This resolves bug [https://bugs.trinitydesktop.org/show_bug.cgi?id=2739 #2739]
 
* Added support for OpenSSL 1.1<br/>Some KOpenSSLProxy methods have been renamed to be consistent<br/>with OpenSSL 1.1 API names and to prevent hidden API changes.<br/>To ensure API / ABI compatibility, the original methods are<br/>still included but have been marked as deprecated.<br/>+ SSLv23_client_method => TLS_client_method<br/>+ X509_STORE_CTX_set_chain => X509_STORE_CTX_set0_untrusted<br/>+ sk_dup => OPENSSL_sk_dup<br/>+ sk_free => OPENSSL_sk_free<br/>+ sk_new => OPENSSL_sk_new<br/>+ sk_num => OPENSSL_sk_num<br/>+ sk_pop => OPENSSL_sk_pop<br/>+ sk_push => OPENSSL_sk_push<br/>+ sk_value => OPENSSL_sk_value<br/>Additional methods have been added to KOpenSSLProxy to support<br/>the new OpenSSL 1.1 API functions that provide access to the<br/>(now) opaque SSL structures. Compatibility with OpenSSL < 1.1<br/>is handled internally in KOpenSSLProxy.<br/>+ BIO_get_data<br/>+ DSA_get0_key<br/>+ DSA_get0_pqg<br/>+ EVP_PKEY_base_id<br/>+ EVP_PKEY_get0_DSA<br/>+ EVP_PKEY_get0_RSA<br/>+ RSA_get0_key<br/>+ X509_CRL_get0_lastUpdate<br/>+ X509_CRL_get0_nextUpdate<br/>+ X509_OBJECT_get0_X509<br/>+ X509_OBJECT_get_type<br/>+ X509_STORE_CTX_get_current_cert<br/>+ X509_STORE_CTX_get_error<br/>+ X509_STORE_CTX_get_error_depth<br/>+ X509_STORE_CTX_set_error<br/>+ X509_STORE_get0_objects<br/>+ X509_STORE_set_verify_cb<br/>+ X509_get0_signature<br/>+ X509_getm_notAfter<br/>+ X509_getm_notBefore<br/>+ X509_subject_name_cmp<br/>+ _SSL_session_reused<br/>+ _SSL_set_options<br/>Method "KSSL::setSession" has been renamed to "KSSL::takeSession"<br/>and its functionality has changed: the session is now transferred<br/>from the argument object to the invoked object. Since it is only<br/>used internally in TDE and the functionality is different, the<br/>method with the previous name has not been preserved.
 
* Fix crash on KSSLCertificate deallocation when a CRL is held in the KSSLCertificate object
 
* Fix memory leak when deleting a KSSLCertificate that holds a CRL
 
* Add initial CRL support to KSSLCertificate
 
* tdeui: fixed handling of setPrecision() for KDoubleSpinBox. This resolves bug [https://bugs.trinitydesktop.org/show_bug.cgi?id=2717 #2717]
 
* Fix FTBFS with clang
 
   
  +
To use the release tarballs, just untar them somewhere.
== tdebase ==
 
* Fix memory leak after processing udev
 
* Fix memory leak after use XGetAtomName
 
* Fix detection whether the system is big endian
 
* Change format of TDE_FULL_SESSION property on a root window from 't' to 's'.<br/>Value is not localized and format 't' can cause problems with some locales.
 
* Added support for OpenSSL 1.1
 
* kcontrol/crypto: Use KOpenSSLProxy methods<br/>instead of direct calls SSL functions
 
   
  +
To live dangerously and use the GIT sources, read [[Notes on GIT Sources]] first.
== tdepim ==
 
* Fix detection whether the system is big endian
 
   
== tdemultimedia ==
 
* Initial cmake conversion
 
   
== tdenetwork ==
+
==Building==
* Fix detection whether the system is big endian
 
* Kopete - avdevice: Use standard integer types instead of Linux specific<br/>This resolves FTBFS on FreeBSD
 
* cmake: Move test for stdint.h to common tests
 
* Fix CMake build dependencies
 
* Fix FTBFS with GCC6
 
* Kopete - jabber: Process all SRV records or fallback if SRV records not exist<br/>This resolves bug [https://bugs.trinitydesktop.org/show_bug.cgi?id=2723 #2723]
 
* Kopete: Improve check for videodev header<br/>This resolves bug [https://bugs.trinitydesktop.org/show_bug.cgi?id=2725 #2725]
 
   
  +
===Building Packages with cmake===
== tdegraphics ==
 
* likscan: Prefer pkg-config for libsane detection
 
   
  +
====List of Packages Building with cmake====
== tdetoys ==
 
* KWeather: Add current date to the log entries<br/>This relates to bug [https://bugs.trinitydesktop.org/show_bug.cgi?id=2728 #2728]
 
   
  +
cmake is the newer, easier, and more maintainable build system the Trinity Project is in the process
== tdeutils ==
 
  +
of porting TDE source to. The following core and dependency packages have already been converted, and their
* Fix detection whether the system is big endian
 
  +
autotools build scripts are no longer maintained:
   
  +
*abakus
== tdegames ==
 
  +
*amarok
* Fix forward classes declaration in kpat/dealer.h<br/>This resolves FTBFS for cmake build with clang
 
  +
*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
== tdeartwork ==
 
  +
everything not in the list above with autotools.
* Removed locolor icons that are already contained in the applications<br/>This resolves bug [https://bugs.trinitydesktop.org/show_bug.cgi?id=1282 #1282]
 
   
  +
Read the notes for individual package requirements before trying to build anything.
== tdebindings ==
 
* Fix detection whether the system is big endian
 
* Added support for openssl 1.1
 
   
== tdesdk ==
 
* Fix typo in cmake macro name
 
   
  +
====Performing a cmake Build====
= libraries =
 
== libksquirrel ==
 
* Enable STDC_LIMIT_MACROS for jasper
 
* Fix FTBFS due missing include
 
   
  +
The command listing below is only an example. You will wish to edit the exports if your distribution
= applications =
 
  +
puts things in unusual locations or if you wish to install to somewhere other than /opt/trinity . Not
== bibletime ==
 
  +
all exports will be needed on all systems.
* Add test whether the Sword needs for building __SANE_USERSPACE_TYPES__<br/>This resolves FTBFS on some 64bit architectures
 
   
  +
export PREFIX=/opt/trinity
== digikam ==
 
  +
export SYSCONFDIR=/etc/trinity
* Enable STDC_LIMIT_MACROS for jasper
 
  +
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
   
== k3b ==
 
* Fix detection whether the system is big endian
 
   
== kftpgrabber ==
+
====Notes====
* Added support for OpenSSL 1.1
 
   
  +
*When building on 64-bit, the following (T)Qt3 configuration option might need to be explicitly declared in some distro build scripts:
== knetworkmanager8 ==
 
  +
-platform linux-g++-64 (rather than linux-g++ (notice the dash!))
* Fix detection whether the system is big endian
 
   
  +
*If class constructor issues surface during the build, please post the error to the trinity-users list.
== koffice ==
 
* Fix detection whether the system is big endian
 
   
  +
===Building Packages with Autoconf===
== kpowersave ==
 
* Fix build with GCC hidden visibility
 
   
  +
====Introduction====
== krusader ==
 
* Fix detection whether the system is big endian
 
   
  +
If the package you're trying to build is on the list of those that will build with cmake, try that first, because
== kvirc ==
 
  +
its autotools files will be unmaintained, bit-rotted, and possibly outright broken.
* Added support for OpenSSL 1.1
 
   
  +
Please read the notes for individual package requirements before trying to build anything.
== tdenetworkmanager ==
 
* Fix detection whether the system is big endian
 
   
  +
For those packages that still need to be built with autotools, the following steps must be run for each affected
== tdepowersave ==
 
  +
Trinity module, including tarball snapshots.
* Fix build with GCC hidden visibility
 
   
== tellico ==
 
* Fix detection whether the system is big endian
 
* Update tests to a new way
 
   
  +
====Regenerate Autoconf/Automake files====
== tork ==
 
* Fix detection whether the system is big endian
 
* Added support for OpenSSL 1.1
 
   
  +
cd to the desired module to build, then run:
= main =
 
  +
== thirdparty ==
 
  +
cp -Rp <path to your system's libtool.m4 file> admin/libtool.m4.in
* Update LibreOffice packaging patches:<br/>+ 4.3.3 - Debian 7.x - Wheezy-backports<br/> Fixed FTBFS with GCC < 4.7 (armel, armhf)
 
  +
cp -Rp <path to your system's ltmain.sh file> admin/ltmain.sh
* Update LibreOffice packaging patches:<br/>+ 4.2.8 - Ubuntu 14.04 - Trusty<br/>+ 4.3.3 - Debian 7.x - Wheezy-backports<br/>+ 4.3.3 - Debian 8.x - Jessie<br/>+ 5.2.5 - Debian 8.x - Jessie-backports (updated from 5.0.2)
 
  +
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.

Revision as of 16:48, 28 October 2015

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.