Difference between revisions of "TDE 14.0.0 prerequisites"

From Studiosg
Jump to navigationJump to search
(Added page about the build procedure of the Prerequisites packages for TDE 14.0.0)
 
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
Welcome to Simone Giustetti's wiki pages.
+
{{header_en|title=How-to build TDE prerequisites| keyword={{Template:keyword_en_tde}}| description=Building, installing and configuring working packages for TDE prerequisites on Slackware Linux | link_page=TDE_14.0.0_prerequisiti}}
 
 
 
 
Languages: '''English''' - [http://www.giustetti.net/wiki/index.php?title=TDE_14.0.0_prerequisiti Italiano]
 
 
 
----
 
  
 
== '''Prerequisites''' ==
 
== '''Prerequisites''' ==
[[En/trinity_desktop_environment_14.0.0]]
+
[[En/trinity_desktop_environment_14.0.0 | Trinity Desktop Environment 14.0.0]]
  
 
Packages grouped with the generic name '''Prerequisites''' include all of the desktop environment base libraries and some optional components needed for advanced features. The base libraries obviously include '''TQt3''', the Qt fork developed and maintained by the Trinity project members, '''tqtinterface''', a library providing an abstraction layer between TQt and TDE, '''arts''', the TDE sound server and sound stream mixer, '''dbus-tqt''' and '''dbus-1-tqt''', which tie the desktop environment with the hardware subsystem. The remaining libraries: '''avahi-tqt''', '''libart-lgpl''', '''libcaldav''', '''libcarddav''', '''python-tqt''', '''sip4-tqt''', '''tqca''', '''tqca-tls''' and '''tqscintilla''' are optional ones. The desktop environment could be built without them, but will miss some useful functionality.
 
Packages grouped with the generic name '''Prerequisites''' include all of the desktop environment base libraries and some optional components needed for advanced features. The base libraries obviously include '''TQt3''', the Qt fork developed and maintained by the Trinity project members, '''tqtinterface''', a library providing an abstraction layer between TQt and TDE, '''arts''', the TDE sound server and sound stream mixer, '''dbus-tqt''' and '''dbus-1-tqt''', which tie the desktop environment with the hardware subsystem. The remaining libraries: '''avahi-tqt''', '''libart-lgpl''', '''libcaldav''', '''libcarddav''', '''python-tqt''', '''sip4-tqt''', '''tqca''', '''tqca-tls''' and '''tqscintilla''' are optional ones. The desktop environment could be built without them, but will miss some useful functionality.
Line 52: Line 47:
 
=== Common Build Script Structure ===
 
=== Common Build Script Structure ===
  
Scripts for version 3.5.13.2 of TDE ([[En/trinity_desktop_environment#Prerequisites]]) were updated and adapted to the last available release. The script skeleton is nearly untouched:
+
Scripts for version 3.5.13.2 of TDE ([[En/trinity_desktop_environment#Prerequisites |Prerequisites]]) were updated and adapted to the last available release. The script skeleton is nearly untouched:
 
* Introduction where a brief description and license information are provided for the script.
 
* Introduction where a brief description and license information are provided for the script.
 
* External files containing global and local build options are loaded:
 
* External files containing global and local build options are loaded:
 +
<syntaxhighlight lang="bash">
 
   if [ -r ../../TDE.options ]; then
 
   if [ -r ../../TDE.options ]; then
 
       . ../../TDE.options
 
       . ../../TDE.options
Line 62: Line 58:
 
       . ./local.options
 
       . ./local.options
 
   fi
 
   fi
 +
</syntaxhighlight>
 
* Declare some global variables for the script:
 
* Declare some global variables for the script:
 +
<syntaxhighlight lang="bash">
 
   ARCHIVE_FORMAT=${ARCHIVE_FORMAT:-"tar.bz2"}
 
   ARCHIVE_FORMAT=${ARCHIVE_FORMAT:-"tar.bz2"}
 
   BUILD=${BUILD:-"1"}
 
   BUILD=${BUILD:-"1"}
Line 68: Line 66:
 
   PRGNAM="tqtinterface"
 
   PRGNAM="tqtinterface"
 
   PREFIX=${PREFIX:-"/usr"}
 
   PREFIX=${PREFIX:-"/usr"}
   MANDIR=${MANDIR:-"${PREFIX}/man"}
+
   MANDIR=${MANDIR:-${PREFIX}/man}
 
   SOURCE_SUBDIR=${SOURCE_SUBDIR:-"dependencies"}
 
   SOURCE_SUBDIR=${SOURCE_SUBDIR:-"dependencies"}
 
   SRCVER=${SRCVER:-"R14.0.0"}
 
   SRCVER=${SRCVER:-"R14.0.0"}
Line 76: Line 74:
 
    
 
    
 
   DOCS="AUTHORS COPYING HOW.TO.BUILD NAMING README TODO TRINITY.RELEASE tqtinterface.lsm"
 
   DOCS="AUTHORS COPYING HOW.TO.BUILD NAMING README TODO TRINITY.RELEASE tqtinterface.lsm"
 +
</syntaxhighlight>
 
: Some variables were added since release 3.5.13.2, among them: the archive format and options for the '''tar''' program. All of the additions are meant to ease the build procedure once the project will settle on a compression format for source code archives.
 
: Some variables were added since release 3.5.13.2, among them: the archive format and options for the '''tar''' program. All of the additions are meant to ease the build procedure once the project will settle on a compression format for source code archives.
 
* Determine the target architecture for the package and set proper parameters for the compiler, linker, included libraries, etc.:
 
* Determine the target architecture for the package and set proper parameters for the compiler, linker, included libraries, etc.:
 +
<syntaxhighlight lang="bash">
 
   if [ -z "${MARCH}" ]; then
 
   if [ -z "${MARCH}" ]; then
 
       MARCH=`uname -m`
 
       MARCH=`uname -m`
Line 94: Line 94:
 
       esac
 
       esac
 
   fi
 
   fi
 +
</syntaxhighlight>
 
: Code was updated in order to read the target architecture from global parameters thus providing a suitable script for '''chroot''' environments.
 
: Code was updated in order to read the target architecture from global parameters thus providing a suitable script for '''chroot''' environments.
 
* Create a directory build tree:
 
* Create a directory build tree:
 +
<syntaxhighlight lang="bash">
 
   mkdir -p ${TMP}/tmp-${PRGNAM}  # Location to build the source
 
   mkdir -p ${TMP}/tmp-${PRGNAM}  # Location to build the source
 
   rm -rf ${TMP}/tmp-${PRGNAM}/*  # Remove the remnants of previous build and continue
 
   rm -rf ${TMP}/tmp-${PRGNAM}/*  # Remove the remnants of previous build and continue
Line 101: Line 103:
 
   rm -rf ${PKG}/*                # We always erase old package's contents
 
   rm -rf ${PKG}/*                # We always erase old package's contents
 
   mkdir -p ${OUTPUT}            # Place for the package to be saved
 
   mkdir -p ${OUTPUT}            # Place for the package to be saved
 +
</syntaxhighlight>
 
* Assign sane permissions to files:
 
* Assign sane permissions to files:
 +
<syntaxhighlight lang="bash">
 
   chown -R root:root .
 
   chown -R root:root .
 
   find . \
 
   find . \
Line 108: Line 112:
 
   \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
 
   \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
 
   -exec chmod 644 {} \;
 
   -exec chmod 644 {} \;
 +
</syntaxhighlight>
 
* Configure, build and install the package.
 
* Configure, build and install the package.
 
* Add some documentation, links, examples and whatever is needed to obtain a fully functional package:
 
* Add some documentation, links, examples and whatever is needed to obtain a fully functional package:
 +
<syntaxhighlight lang="bash">
 
   mkdir -p ${PKG}/usr/doc/${PRGNAM}"-"$VERSION
 
   mkdir -p ${PKG}/usr/doc/${PRGNAM}"-"$VERSION
 
   cp -a ${DOCS} ${PKG}/usr/doc/${PRGNAM}"-"${VERSION}
 
   cp -a ${DOCS} ${PKG}/usr/doc/${PRGNAM}"-"${VERSION}
Line 123: Line 129:
 
       find ${PKG}/${PREFIX}/include -type f -exec chmod 0644 {} \;
 
       find ${PKG}/${PREFIX}/include -type f -exec chmod 0644 {} \;
 
   fi
 
   fi
 +
</syntaxhighlight>
 
* Crete the package.
 
* Crete the package.
  
Line 129: Line 136:
 
Generic build options will vary depending on the adopted build system only. '''Autotools''' related packages require the following:
 
Generic build options will vary depending on the adopted build system only. '''Autotools''' related packages require the following:
 
* Rebuild the '''Autoconf / Automake''' used files:
 
* Rebuild the '''Autoconf / Automake''' used files:
   '''cp''' ''-Rp'' /usr/share/aclocal/libtool.m4 <pkg_path_build>/admin/libtool.m4.in
+
<syntaxhighlight lang="bash">
   '''cp''' ''-Rp'' <path to your system's ltmain.sh file> admin/ltmain.sh
+
   cp -Rp /usr/share/aclocal/libtool.m4 <pkg_path_build>/admin/libtool.m4.in
   '''make''' ''-f'' admin/Makefile.common
+
   cp -Rp <path to your systems ltmain.sh file> admin/ltmain.sh
 +
   make -f admin/Makefile.common
 +
</syntaxhighlight>
 
* Set options for the compiler and linker, set paths for include files, libraries and man pages:
 
* Set options for the compiler and linker, set paths for include files, libraries and man pages:
   '''export''' LD_LIBRARY_PATH=${PREFIX}/lib${LIBDIRSUFFIX}:${PREFIX}/lib${LIBDIRSUFFIX}/trinity:${LD_LIBRARY_PATH}
+
<syntaxhighlight lang="bash">
   '''export''' LIBDIR=${PREFIX}/lib${LIBDIRSUFFIX}
+
   export LD_LIBRARY_PATH=${PREFIX}/lib${LIBDIRSUFFIX}:${PREFIX}/lib${LIBDIRSUFFIX}/trinity:${LD_LIBRARY_PATH}
   '''export''' MANDIR
+
   export LIBDIR=${PREFIX}/lib${LIBDIRSUFFIX}
   '''export''' PATH=${PREFIX}/bin:${PATH}
+
   export MANDIR
   '''export''' PKG_CONFIG_PATH=:${PREFIX}/lib${LIBDIRSUFFIX}/pkgconfig:${PKG_CONFIG_PATH}
+
   export PATH=${PREFIX}/bin:${PATH}
   '''export''' PREFIX
+
   export PKG_CONFIG_PATH=:${PREFIX}/lib${LIBDIRSUFFIX}/pkgconfig:${PKG_CONFIG_PATH}
   '''export''' QTDIR=${PREFIX}
+
   export PREFIX
   '''export''' SYSCONFDIR=/etc/trinity
+
   export QTDIR=${PREFIX}
 +
   export SYSCONFDIR=/etc/trinity
 
   # Enable only one of the following:
 
   # Enable only one of the following:
 
   # export DEBUG_AUTOTOOL_OPT="--enable-debug=full"
 
   # export DEBUG_AUTOTOOL_OPT="--enable-debug=full"
   '''export''' DEBUG_AUTOTOOL_OPT="''--disable-debug''"
+
   export DEBUG_AUTOTOOL_OPT="--disable-debug"
 +
</syntaxhighlight>
 
* Configure source code:
 
* Configure source code:
 +
<syntaxhighlight lang="bash">
 
   CFLAGS="${SLKCFLAGS}" \
 
   CFLAGS="${SLKCFLAGS}" \
 
   CXXFLAGS="${SLKCFLAGS}" \
 
   CXXFLAGS="${SLKCFLAGS}" \
   ./'''configure''' \
+
   ./configure \
       ''--prefix=''${PREFIX} \
+
       --prefix=${PREFIX} \
       ''--libdir=''${LIBDIR} \
+
       --libdir=${LIBDIR} \
       ''--mandir=''${MANDIR} \
+
       --mandir=${MANDIR} \
       ''--build=''$ARCH-slackware-linux \
+
       --build=$ARCH-slackware-linux \
       2>&1 | '''tee''' -a ${OUTPUT}/${PRGNAM}_configure.log
+
       2>&1 | tee -a ${OUTPUT}/${PRGNAM}_configure.log
 +
</syntaxhighlight>
 
* Build and install:
 
* Build and install:
   '''make''' VERBOSE=1 2>&1 | '''tee''' ${OUTPUT}/${PRGNAM}_make.log
+
<syntaxhighlight lang="bash">
   '''make''' install DESTDIR=${PKG} 2>&1 | '''tee''' ${OUTPUT}/${PRGNAM}_install.log
+
   make VERBOSE=1 2>&1 | tee ${OUTPUT}/${PRGNAM}_make.log
 +
   make install DESTDIR=${PKG} 2>&1 | tee ${OUTPUT}/${PRGNAM}_install.log
 +
</syntaxhighlight>
  
  
 
Steps for '''[http://www.cmake.org/ Cmake]''' consist of:
 
Steps for '''[http://www.cmake.org/ Cmake]''' consist of:
 
* Clean the cmake cache:
 
* Clean the cmake cache:
   '''find''' . ''-name'' CMakeCache.txt ''-exec'' '''rm''' {} \;
+
<syntaxhighlight lang="bash">
 +
   find . -name CMakeCache.txt -exec rm {} \;
 +
</syntaxhighlight>
 
* Set options for the compiler and linker, set paths for include files, libraries and man pages:
 
* Set options for the compiler and linker, set paths for include files, libraries and man pages:
   '''export''' LD_LIBRARY_PATH=${PREFIX}/lib${LIBDIRSUFFIX}:${PREFIX}/lib${LIBDIRSUFFIX}/trinity:${LD_LIBRARY_PATH}
+
<syntaxhighlight lang="bash">
   '''export''' LIBDIR=${PREFIX}/lib${LIBDIRSUFFIX}
+
   export LD_LIBRARY_PATH=${PREFIX}/lib${LIBDIRSUFFIX}:${PREFIX}/lib${LIBDIRSUFFIX}/trinity:${LD_LIBRARY_PATH}
   '''export''' MANDIR
+
   export LIBDIR=${PREFIX}/lib${LIBDIRSUFFIX}
   '''export''' PATH=${PREFIX}/bin:${PATH}
+
   export MANDIR
   '''export''' PKG_CONFIG_PATH=${PREFIX}/lib${LIBDIRSUFFIX}/pkgconfig:${PKG_CONFIG_PATH}
+
   export PATH=${PREFIX}/bin:${PATH}
   '''export''' PREFIX
+
   export PKG_CONFIG_PATH=${PREFIX}/lib${LIBDIRSUFFIX}/pkgconfig:${PKG_CONFIG_PATH}
   '''export''' QTDIR=${PREFIX}
+
   export PREFIX
   '''export''' SYSCONFDIR=/etc/trinity
+
   export QTDIR=${PREFIX}
 +
   export SYSCONFDIR=/etc/trinity
 
   # Enable only one of the following:
 
   # Enable only one of the following:
 
   # export DEBUG_AUTOTOOL_OPT="--disable-debug"
 
   # export DEBUG_AUTOTOOL_OPT="--disable-debug"
   '''export''' DEBUG_CMAKE_OPT=""
+
   export DEBUG_CMAKE_OPT=""
 +
</syntaxhighlight>
 
* Configure source code:
 
* Configure source code:
   '''cmake''' ${TMP}/tmp-${PRGNAM}/${DIR_SRC} \
+
<syntaxhighlight lang="bash">
       ''-DCMAKE_C_FLAGS:STRING=''"${SLKCFLAGS}" \
+
   cmake ${TMP}/tmp-${PRGNAM}/${DIR_SRC} \
       ''-DCMAKE_CXX_FLAGS:STRING=''"${SLKCFLAGS} $DEBUG_CMAKE_OPT" \
+
       -DCMAKE_C_FLAGS:STRING="${SLKCFLAGS}" \
       ''-DCMAKE_INSTALL_PREFIX=''${PREFIX} \
+
       -DCMAKE_CXX_FLAGS:STRING="${SLKCFLAGS} $DEBUG_CMAKE_OPT" \
       ''-DLIB_SUFFIX=''${LIBDIRSUFFIX} \
+
       -DCMAKE_INSTALL_PREFIX=${PREFIX} \
       ''-DMAN_INSTALL_DIR=''${MANDIR} \
+
       -DLIB_SUFFIX=${LIBDIRSUFFIX} \
       ''-DSYSCONF_INSTALL_DIR=''${SYSCONFDIR} \
+
       -DMAN_INSTALL_DIR=${MANDIR} \
       ''-DBUILD_ALL=ON'' \
+
       -DSYSCONF_INSTALL_DIR=${SYSCONFDIR} \
       2>&1 | '''tee''' ${OUTPUT}/${PRGNAM}_configure.log
+
       -DBUILD_ALL=ON \
 +
       2>&1 | tee ${OUTPUT}/${PRGNAM}_configure.log
 +
</syntaxhighlight>
 
* Build and install:
 
* Build and install:
   '''make''' VERBOSE=1 2>&1 | '''tee''' ${OUTPUT}/${PRGNAM}_make.log
+
<syntaxhighlight lang="bash">
   '''make''' install DESTDIR=${PKG} 2>&1 | '''tee''' ${OUTPUT}/${PRGNAM}_install.log
+
   make VERBOSE=1 2>&1 | tee ${OUTPUT}/${PRGNAM}_make.log
 +
   make install DESTDIR=${PKG} 2>&1 | tee ${OUTPUT}/${PRGNAM}_install.log
 +
</syntaxhighlight>
  
  
 
Packages '''python-tqt''' and '''sip4-tqt''' use a script written in Python language to configure source code. Both scripts only accept options for the compiler and linker.
 
Packages '''python-tqt''' and '''sip4-tqt''' use a script written in Python language to configure source code. Both scripts only accept options for the compiler and linker.
 
* Configure source code:
 
* Configure source code:
   '''python''' configure.py \
+
<syntaxhighlight lang="bash">
 +
   python configure.py \
 
       CFLAGS="${SLKCFLAGS}" \
 
       CFLAGS="${SLKCFLAGS}" \
 
       CXXFLAGS="${SLKCFLAGS}" \
 
       CXXFLAGS="${SLKCFLAGS}" \
       2>&1 | '''tee''' ${OUTPUT}/${PRGNAM}_configure.log
+
       2>&1 | tee ${OUTPUT}/${PRGNAM}_configure.log
 +
</syntaxhighlight>
 
* Build and install:
 
* Build and install:
   '''make''' VERBOSE=1 2>&1 | '''tee''' ${OUTPUT}/${PRGNAM}_make.log
+
<syntaxhighlight lang="bash">
   '''make''' install DESTDIR=${PKG} 2>&1 | '''tee''' ${OUTPUT}/${PRGNAM}_install.log
+
   make VERBOSE=1 2>&1 | tee ${OUTPUT}/${PRGNAM}_make.log
 +
   make install DESTDIR=${PKG} 2>&1 | tee ${OUTPUT}/${PRGNAM}_install.log
 +
</syntaxhighlight>
  
  
 
Last is '''tqscintilla''', the only package to use '''tqmake''', which requires options for the compiler and linker.
 
Last is '''tqscintilla''', the only package to use '''tqmake''', which requires options for the compiler and linker.
 
* Configure source code:
 
* Configure source code:
 +
<syntaxhighlight lang="bash">
 
   CFLAGS="${SLKCFLAGS}" \
 
   CFLAGS="${SLKCFLAGS}" \
   CXXFLAGS="${SLKCFLAGS} ''-fno-exceptions''" \
+
   CXXFLAGS="${SLKCFLAGS} -fno-exceptions" \
   '''tqmake''' qscintilla.pro \
+
   tqmake qscintilla.pro \
       2>&1 | '''tee''' ${OUTPUT}/${PRGNAM}_configure.log
+
       2>&1 | tee ${OUTPUT}/${PRGNAM}_configure.log
 +
</syntaxhighlight>
 
* Build and install:
 
* Build and install:
   '''make''' VERBOSE=1 2>&1 | '''tee''' ${OUTPUT}/${PRGNAM}_make.log
+
<syntaxhighlight lang="bash">
   '''make''' install INSTALL_ROOT=${PKG} 2>&1 | '''tee''' ${OUTPUT}/${PRGNAM}_install.log
+
   make VERBOSE=1 2>&1 | tee ${OUTPUT}/${PRGNAM}_make.log
 +
   make install INSTALL_ROOT=${PKG} 2>&1 | tee ${OUTPUT}/${PRGNAM}_install.log
 +
</syntaxhighlight>
  
 
=== Custom Options ===
 
=== Custom Options ===
Line 216: Line 247:
  
 
The '''A'''nalog '''R'''eal '''T'''ime '''S'''ynthesizer is a sound library providing '''an integrated sound server''', a sound streams mixer and some configuration tools. Used since KDE 2, Arts was replaced by '''Phonon''' in KDE 4 and later adopted by TDE. To build Arts You need to set the '''-DCMAKE_SKIP_RPATH="OFF"''' option while running the configuration script. The '''[http://www.cmake.org/ cmake]''' invocation command is:
 
The '''A'''nalog '''R'''eal '''T'''ime '''S'''ynthesizer is a sound library providing '''an integrated sound server''', a sound streams mixer and some configuration tools. Used since KDE 2, Arts was replaced by '''Phonon''' in KDE 4 and later adopted by TDE. To build Arts You need to set the '''-DCMAKE_SKIP_RPATH="OFF"''' option while running the configuration script. The '''[http://www.cmake.org/ cmake]''' invocation command is:
   '''cmake''' ${TMP}/tmp-${PRGNAM}/${DIR_SRC} \
+
<syntaxhighlight lang="bash">
       ''-DCMAKE_C_FLAGS:STRING=''"${SLKCFLAGS}" \
+
   cmake ${TMP}/tmp-${PRGNAM}/${DIR_SRC} \
       ''-DCMAKE_CXX_FLAGS:STRING=''"${SLKCFLAGS} $DEBUG_CMAKE_OPT" \
+
       -DCMAKE_C_FLAGS:STRING="${SLKCFLAGS}" \
       ''-DCMAKE_INSTALL_PREFIX''=${PREFIX} \
+
       -DCMAKE_CXX_FLAGS:STRING="${SLKCFLAGS} $DEBUG_CMAKE_OPT" \
       ''-DCMAKE_SKIP_RPATH="OFF"'' \
+
       -DCMAKE_INSTALL_PREFIX=${PREFIX} \
       ''-DLIB_SUFFIX=''${LIBDIRSUFFIX} \
+
       -DCMAKE_SKIP_RPATH="OFF" \
       ''-DMAN_INSTALL_DIR=''${MANDIR} \
+
       -DLIB_SUFFIX=${LIBDIRSUFFIX} \
       ''-DSYSCONF_INSTALL_DIR=''${SYSCONFDIR} \
+
       -DMAN_INSTALL_DIR=${MANDIR} \
       ''-DBUILD_ALL=ON''
+
       -DSYSCONF_INSTALL_DIR=${SYSCONFDIR} \
 +
       -DBUILD_ALL=ON
 +
</syntaxhighlight>
 
A compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following [http://www.giustetti.net/resource/slackbuild/tde/1400/arts.tar.gz link].
 
A compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following [http://www.giustetti.net/resource/slackbuild/tde/1400/arts.tar.gz link].
  
Line 230: Line 263:
  
 
A library providing DNS resolution capabilities to the base TDE packages tdebase and tdelibs. Avahi-tqt requires the '''avahi''' library as a dependency, but the latter is not part of a standard Slackware release. A build script for avahi can be downloaded from the [http://slackbuilds.org slackbuilds.org] web page. Once installed the dependency, '''avahi-tqt''' can be built setting some environment variables:
 
A library providing DNS resolution capabilities to the base TDE packages tdebase and tdelibs. Avahi-tqt requires the '''avahi''' library as a dependency, but the latter is not part of a standard Slackware release. A build script for avahi can be downloaded from the [http://slackbuilds.org slackbuilds.org] web page. Once installed the dependency, '''avahi-tqt''' can be built setting some environment variables:
 +
<syntaxhighlight lang="bash">
 
   PREFIX="/usr/local"
 
   PREFIX="/usr/local"
 
   MANDIR="/usr/man"
 
   MANDIR="/usr/man"
 +
</syntaxhighlight>
 
Exporting the '''tqt3''' path:
 
Exporting the '''tqt3''' path:
   '''export''' QTDIR=${PREFIX_TDE}
+
<syntaxhighlight lang="bash">
 +
   export QTDIR=${PREFIX_TDE}
 +
</syntaxhighlight>
 
Running the autogen.sh script to create all of the build scripts and configuration files:
 
Running the autogen.sh script to create all of the build scripts and configuration files:
   '''sh''' ./autogen.sh
+
<syntaxhighlight lang="bash">
 +
   sh ./autogen.sh
 +
</syntaxhighlight>
 
Then configuring the source code passing some parameters to the script:
 
Then configuring the source code passing some parameters to the script:
 +
<syntaxhighlight lang="bash">
 
   CFLAGS="${SLKCFLAGS}" \
 
   CFLAGS="${SLKCFLAGS}" \
 
   CXXFLAGS="${SLKCFLAGS}" \
 
   CXXFLAGS="${SLKCFLAGS}" \
   ./'''configure''' \
+
   ./configure \
       ''--prefix=''${PREFIX} \
+
       --prefix=${PREFIX} \
       ''--libdir=''${LIBDIR} \
+
       --libdir=${LIBDIR} \
       ''--mandir=''${MANDIR} \
+
       --mandir=${MANDIR} \
       ''--build=''$ARCH-slackware-linux
+
       --build=$ARCH-slackware-linux
 +
</syntaxhighlight>
 
A compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following [http://www.giustetti.net/resource/slackbuild/tde/1400/avahi-tqt.tar.gz link]. Please note: The script is provided for reference only. I don't usually build optional packages nor set on add-on functionality if I can do without. Having no avahi package installed, I could not test the SlackBuild script behavior, just its syntax.
 
A compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following [http://www.giustetti.net/resource/slackbuild/tde/1400/avahi-tqt.tar.gz link]. Please note: The script is provided for reference only. I don't usually build optional packages nor set on add-on functionality if I can do without. Having no avahi package installed, I could not test the SlackBuild script behavior, just its syntax.
  
Line 251: Line 292:
  
 
Clean the cmake cache:
 
Clean the cmake cache:
   '''find''' . ''-name'' CMakeCache.txt ''-exec'' '''rm''' {} \;
+
<syntaxhighlight lang="bash">
 +
   find . -name CMakeCache.txt -exec rm {} \;
 +
</syntaxhighlight>
 
Pass the '''-DCMAKE_SKIP_RPATH="OFF"''' option to cmake. The cmake command line should be something like:
 
Pass the '''-DCMAKE_SKIP_RPATH="OFF"''' option to cmake. The cmake command line should be something like:
   '''cmake''' ${TMP}/tmp-${PRGNAM}/${DIR_SRC} \
+
<syntaxhighlight lang="bash">
       ''-DCMAKE_C_FLAGS:STRING=''"${SLKCFLAGS}" \
+
   cmake ${TMP}/tmp-${PRGNAM}/${DIR_SRC} \
       ''-DCMAKE_CXX_FLAGS:STRING=''"${SLKCFLAGS} $DEBUG_CMAKE_OPT" \
+
       -DCMAKE_C_FLAGS:STRING="${SLKCFLAGS}" \
       ''-DCMAKE_INSTALL_PREFIX=''${PREFIX} \
+
       -DCMAKE_CXX_FLAGS:STRING="${SLKCFLAGS} $DEBUG_CMAKE_OPT" \
       ''-DCMAKE_SKIP_RPATH="OFF"'' \
+
       -DCMAKE_INSTALL_PREFIX=${PREFIX} \
       ''-DLIB_SUFFIX=''${LIBDIRSUFFIX} \
+
       -DCMAKE_SKIP_RPATH="OFF" \
       ''-DMAN_INSTALL_DIR=''${MANDIR} \
+
       -DLIB_SUFFIX=${LIBDIRSUFFIX} \
       ''-DSYSCONF_INSTALL_DIR=''${SYSCONFDIR} \
+
       -DMAN_INSTALL_DIR=${MANDIR} \
       ''-DBUILD_ALL=ON''
+
       -DSYSCONF_INSTALL_DIR=${SYSCONFDIR} \
 +
       -DBUILD_ALL=ON
 +
</syntaxhighlight>
 
A compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following [http://www.giustetti.net/resource/slackbuild/tde/1400/dbus-tqt.tar.gz link].
 
A compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following [http://www.giustetti.net/resource/slackbuild/tde/1400/dbus-tqt.tar.gz link].
  
Line 269: Line 314:
  
 
Clean the cmake cache:
 
Clean the cmake cache:
   '''find''' . ''-name'' CMakeCache.txt ''-exec'' '''rm''' {} \;
+
<syntaxhighlight lang="bash">
 +
   find . -name CMakeCache.txt -exec rm {} \;
 +
</syntaxhighlight>
 
Pass the '''-DCMAKE_SKIP_RPATH="OFF"''' option to cmake. The cmake command line should be something like:
 
Pass the '''-DCMAKE_SKIP_RPATH="OFF"''' option to cmake. The cmake command line should be something like:
   '''cmake''' ${TMP}/tmp-${PRGNAM}/${DIR_SRC} \
+
<syntaxhighlight lang="bash">
       ''-DCMAKE_C_FLAGS:STRING=''"${SLKCFLAGS}" \
+
   cmake ${TMP}/tmp-${PRGNAM}/${DIR_SRC} \
       ''-DCMAKE_CXX_FLAGS:STRING=''"${SLKCFLAGS} $DEBUG_CMAKE_OPT" \
+
       -DCMAKE_C_FLAGS:STRING="${SLKCFLAGS}" \
       ''-DCMAKE_INSTALL_PREFIX=''${PREFIX} \
+
       -DCMAKE_CXX_FLAGS:STRING="${SLKCFLAGS} $DEBUG_CMAKE_OPT" \
       ''-DCMAKE_SKIP_RPATH=''"OFF" \
+
       -DCMAKE_INSTALL_PREFIX=${PREFIX} \
       ''-DLIB_SUFFIX=''${LIBDIRSUFFIX} \
+
       -DCMAKE_SKIP_RPATH="OFF" \
       ''-DMAN_INSTALL_DIR=''${MANDIR} \
+
       -DLIB_SUFFIX=${LIBDIRSUFFIX} \
       ''-DSYSCONF_INSTALL_DIR=''${SYSCONFDIR} \
+
       -DMAN_INSTALL_DIR=${MANDIR} \
       ''-DBUILD_ALL=ON''
+
       -DSYSCONF_INSTALL_DIR=${SYSCONFDIR} \
 +
       -DBUILD_ALL=ON
 +
</syntaxhighlight>
 
A compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following [http://www.giustetti.net/resource/slackbuild/tde/1400/dbus-1-tqt.tar.gz link].
 
A compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following [http://www.giustetti.net/resource/slackbuild/tde/1400/dbus-1-tqt.tar.gz link].
  
Line 285: Line 334:
  
 
'''Libart''' is a library for high-performance 2D graphics used by '''Gnome''', '''KDE''' and '''TDE'''. The library release distributed with TDE is different from the standard one included in many Linux distributions. You are recommended to replace the installed version if any with the TDE provided one. To build a libart package please define some environment variables:
 
'''Libart''' is a library for high-performance 2D graphics used by '''Gnome''', '''KDE''' and '''TDE'''. The library release distributed with TDE is different from the standard one included in many Linux distributions. You are recommended to replace the installed version if any with the TDE provided one. To build a libart package please define some environment variables:
 +
<syntaxhighlight lang="bash">
 
   PREFIX="/usr"
 
   PREFIX="/usr"
 
   MANDIR="/usr/man"
 
   MANDIR="/usr/man"
 +
</syntaxhighlight>
 
Then configure the source code:
 
Then configure the source code:
 +
<syntaxhighlight lang="bash">
 
   CFLAGS="${SLKCFLAGS}" \
 
   CFLAGS="${SLKCFLAGS}" \
 
   CXXFLAGS="${SLKCFLAGS}" \
 
   CXXFLAGS="${SLKCFLAGS}" \
   ./'''configure''' \
+
   ./configure \
       ''--prefix=''${PREFIX} \
+
       --prefix=${PREFIX} \
       ''--libdir=''${LIBDIR} \
+
       --libdir=${LIBDIR} \
       ''--build=''$ARCH-slackware-linux
+
       --build=$ARCH-slackware-linux
 +
</syntaxhighlight>
 
A compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following [http://www.giustetti.net/resource/slackbuild/tde/1400/libart-lgpl.tar.gz link].
 
A compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following [http://www.giustetti.net/resource/slackbuild/tde/1400/libart-lgpl.tar.gz link].
  
Line 299: Line 352:
  
 
The '''Libcaldav''' library implements the client side '''CALDAV''' protocol defined in the '''rfc4791''' paper. The library is used by the shared calendar included in the '''tdepim''' package. It is an add-on package. Some environment variables are needed to build '''libcaldav''':  
 
The '''Libcaldav''' library implements the client side '''CALDAV''' protocol defined in the '''rfc4791''' paper. The library is used by the shared calendar included in the '''tdepim''' package. It is an add-on package. Some environment variables are needed to build '''libcaldav''':  
 +
<syntaxhighlight lang="bash">
 
   PREFIX="/usr/local"
 
   PREFIX="/usr/local"
 
   MANDIR="/usr/man"
 
   MANDIR="/usr/man"
 +
</syntaxhighlight>
 
Define the TQt3 library path:
 
Define the TQt3 library path:
   '''export''' QTDIR=${PREFIX_TDE}
+
<syntaxhighlight lang="bash">
 +
   export QTDIR=${PREFIX_TDE}
 +
</syntaxhighlight>
 
Run the autogen.sh script to create all of the build scripts and configuration files:
 
Run the autogen.sh script to create all of the build scripts and configuration files:
   '''sh''' ./autogen.sh
+
<syntaxhighlight lang="bash">
 +
   sh ./autogen.sh
 +
</syntaxhighlight>
 
Then configure the source code passing some parameters to the script:
 
Then configure the source code passing some parameters to the script:
 +
<syntaxhighlight lang="bash">
 
   CFLAGS="${SLKCFLAGS}" \
 
   CFLAGS="${SLKCFLAGS}" \
 
   CXXFLAGS="${SLKCFLAGS}" \
 
   CXXFLAGS="${SLKCFLAGS}" \
   ./'''configure''' \
+
   ./configure \
       ''--prefix=''${PREFIX} \
+
       --prefix=${PREFIX} \
       ''--libdir=''${LIBDIR} \
+
       --libdir=${LIBDIR} \
       ''--mandir=''${MANDIR} \
+
       --mandir=${MANDIR} \
       ''--build=''$ARCH-slackware-linux
+
       --build=$ARCH-slackware-linux
 +
</syntaxhighlight>
 
A compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following [http://www.giustetti.net/resource/slackbuild/tde/1400/libcaldav.tar.gz link].
 
A compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following [http://www.giustetti.net/resource/slackbuild/tde/1400/libcaldav.tar.gz link].
  
Line 318: Line 379:
  
 
The '''Libcarddav''' library implements the '''CARDDAV''' protocol used by the '''tdepim''' package. '''Libcarddav''' is an add-on package providing some optional functionality. To build the package set some environment variables:
 
The '''Libcarddav''' library implements the '''CARDDAV''' protocol used by the '''tdepim''' package. '''Libcarddav''' is an add-on package providing some optional functionality. To build the package set some environment variables:
 +
<syntaxhighlight lang="bash">
 
   PREFIX="/usr/local"
 
   PREFIX="/usr/local"
 
   MANDIR="/usr/man"
 
   MANDIR="/usr/man"
 +
</syntaxhighlight>
 
Define the TQt3 library path:
 
Define the TQt3 library path:
   '''export''' QTDIR=${PREFIX_TDE}
+
<syntaxhighlight lang="bash">
 +
   export QTDIR=${PREFIX_TDE}
 +
</syntaxhighlight>
 
Run the autogen.sh script to create all of the build scripts and configuration files:
 
Run the autogen.sh script to create all of the build scripts and configuration files:
   '''sh''' ./autogen.sh
+
<syntaxhighlight lang="bash">
 +
   sh ./autogen.sh
 +
</syntaxhighlight>
 
And configure the source code passing some parameters to the script:
 
And configure the source code passing some parameters to the script:
 +
<syntaxhighlight lang="bash">
 
   CFLAGS="${SLKCFLAGS}" \
 
   CFLAGS="${SLKCFLAGS}" \
 
   CXXFLAGS="${SLKCFLAGS}" \
 
   CXXFLAGS="${SLKCFLAGS}" \
   ./'''configure''' \
+
   ./configure \
       ''--prefix=''${PREFIX} \
+
       --prefix=${PREFIX} \
       ''--libdir=''${LIBDIR} \
+
       --libdir=${LIBDIR} \
       ''--mandir=''${MANDIR} \
+
       --mandir=${MANDIR} \
       ''--build=''$ARCH-slackware-linux
+
       --build=$ARCH-slackware-linux
 +
</syntaxhighlight>
 
Some lines of code in the script '''install the man pages'''. Those ''' should be commented out''' to avoid an error that aborts the whole build procedure.
 
Some lines of code in the script '''install the man pages'''. Those ''' should be commented out''' to avoid an error that aborts the whole build procedure.
 +
<syntaxhighlight lang="bash">
 
   # Add man pages (No man page => Comment the following lines to avoid errors)
 
   # Add man pages (No man page => Comment the following lines to avoid errors)
 
   # if [ -d ${PKG}/${MANDIR} ]; then
 
   # if [ -d ${PKG}/${MANDIR} ]; then
 
   #  gzip -9 $PKG/${MANDIR}/man?/*
 
   #  gzip -9 $PKG/${MANDIR}/man?/*
 
   # fi
 
   # fi
 +
</syntaxhighlight>
 
A compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following [http://www.giustetti.net/resource/slackbuild/tde/1400/libcarddav.tar.gz link].
 
A compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following [http://www.giustetti.net/resource/slackbuild/tde/1400/libcarddav.tar.gz link].
  
Line 342: Line 413:
  
 
'''Sip''' is a tool that eases the creation of '''Python''' bindings for '''C''' or '''C++''' libraries. It was originally developed to bind Python to Qt, but can be used for any C or C++ library. As many other previously discussed packages, sip can be built setting some environment variables:
 
'''Sip''' is a tool that eases the creation of '''Python''' bindings for '''C''' or '''C++''' libraries. It was originally developed to bind Python to Qt, but can be used for any C or C++ library. As many other previously discussed packages, sip can be built setting some environment variables:
 +
<syntaxhighlight lang="bash">
 
   PREFIX="/usr/local"
 
   PREFIX="/usr/local"
 
   MANDIR="/usr/man"
 
   MANDIR="/usr/man"
 +
</syntaxhighlight>
 
Setting a target path for man pages:
 
Setting a target path for man pages:
   '''export''' MANDIR
+
<syntaxhighlight lang="bash">
 +
   export MANDIR
 +
</syntaxhighlight>
 
Adding to the standard compiler options some paths where to search for include files:
 
Adding to the standard compiler options some paths where to search for include files:
   SLKCFLAGS="${SLKCFLAGS} ''-I''/usr/include/tqt ''-I''/opt/trinity/include"
+
<syntaxhighlight lang="bash">
 +
   SLKCFLAGS="${SLKCFLAGS} -I/usr/include/tqt -I/opt/trinity/include"
 +
</syntaxhighlight>
 
and finally running a configuration script written in Python:
 
and finally running a configuration script written in Python:
   '''python''' configure.py \
+
<syntaxhighlight lang="bash">
 +
   python configure.py \
 
       CFLAGS="${SLKCFLAGS}" \
 
       CFLAGS="${SLKCFLAGS}" \
 
       CXXFLAGS="${SLKCFLAGS}"
 
       CXXFLAGS="${SLKCFLAGS}"
 +
</syntaxhighlight>
 
A compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following [http://www.giustetti.net/resource/slackbuild/tde/1400/sip4-tqt.tar.gz link].
 
A compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following [http://www.giustetti.net/resource/slackbuild/tde/1400/sip4-tqt.tar.gz link].
  
Line 359: Line 438:
  
 
Set some environment variables:
 
Set some environment variables:
 +
<syntaxhighlight lang="bash">
 
   PREFIX="/usr/local"
 
   PREFIX="/usr/local"
 
   MANDIR="/usr/man"
 
   MANDIR="/usr/man"
 +
</syntaxhighlight>
 
Set the installation path for the TQt library:
 
Set the installation path for the TQt library:
   '''export''' QTDIR=${PREFIX_TDE}
+
<syntaxhighlight lang="bash">
 +
   export QTDIR=${PREFIX_TDE}
 +
</syntaxhighlight>
 
Pass the aforementioned variables as parameters to the configuration script:
 
Pass the aforementioned variables as parameters to the configuration script:
 +
<syntaxhighlight lang="bash">
 
   CFLAGS="${SLKCFLAGS}" \
 
   CFLAGS="${SLKCFLAGS}" \
 
   CXXFLAGS="${SLKCFLAGS}" \
 
   CXXFLAGS="${SLKCFLAGS}" \
   ./'''configure''' \
+
   ./configure \
       ''--prefix=''${PREFIX} \
+
       --prefix=${PREFIX} \
       ''--qtdir=''${QTDIR} \
+
       --qtdir=${QTDIR} \
 +
</syntaxhighlight>
 
Another peculiarity consists of the variable used to set the produced binary packages destination: '''INSTALL_ROOT''' in place of '''DESTDIR''', used by almost all of the packages.
 
Another peculiarity consists of the variable used to set the produced binary packages destination: '''INSTALL_ROOT''' in place of '''DESTDIR''', used by almost all of the packages.
   '''make''' install INSTALL_ROOT=${PKG}
+
<syntaxhighlight lang="bash">
 +
   make install INSTALL_ROOT=${PKG}
 +
</syntaxhighlight>
 
When all variables are set the build process can be started running the '''make''' command.
 
When all variables are set the build process can be started running the '''make''' command.
  
Line 378: Line 465:
  
 
'''Tqca-tls''' is a plug-in providing support for cryptography through a SSL/TLS channel for programs using the '''TQt Cryptographic Architecture'''. Perhaps the easiest package to build as the configure script sets sane values for all of its options. To build a working package you need to set the TQt library installation path:
 
'''Tqca-tls''' is a plug-in providing support for cryptography through a SSL/TLS channel for programs using the '''TQt Cryptographic Architecture'''. Perhaps the easiest package to build as the configure script sets sane values for all of its options. To build a working package you need to set the TQt library installation path:
   '''export''' QTDIR=${PREFIX}
+
<syntaxhighlight lang="bash">
 +
   export QTDIR=${PREFIX}
 +
</syntaxhighlight>
 
Then execute the build script:
 
Then execute the build script:
 +
<syntaxhighlight lang="bash">
 
   CFLAGS="${SLKCFLAGS}" \
 
   CFLAGS="${SLKCFLAGS}" \
 
   CXXFLAGS="${SLKCFLAGS}" \
 
   CXXFLAGS="${SLKCFLAGS}" \
   ./'''configure''' \
+
   ./configure \
       ''--qtdir=''${QTDIR}
+
       --qtdir=${QTDIR}
 +
</syntaxhighlight>
 
As for '''tqca''', the only package peculiarity consists of the variable used to set a target directory for produced binary files: '''INSTALL_ROOT'''
 
As for '''tqca''', the only package peculiarity consists of the variable used to set a target directory for produced binary files: '''INSTALL_ROOT'''
   '''make''' install INSTALL_ROOT=${PKG}
+
<syntaxhighlight lang="bash">
 +
   make install INSTALL_ROOT=${PKG}
 +
</syntaxhighlight>
  
 
A compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following [http://www.giustetti.net/resource/slackbuild/tde/1400/tqca-tls.tar.gz link].
 
A compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following [http://www.giustetti.net/resource/slackbuild/tde/1400/tqca-tls.tar.gz link].
Line 392: Line 485:
  
 
'''TQt''' is a library providing all of the base widgets used by the desktop environment and as such has a fundamental importance. Building the package requires a great deal of time, but it relatively straightforward. First of all some environment variables are required:
 
'''TQt''' is a library providing all of the base widgets used by the desktop environment and as such has a fundamental importance. Building the package requires a great deal of time, but it relatively straightforward. First of all some environment variables are required:
   '''export''' LD_LIBRARY_PATH=/usr/lib${LIBDIRSUFFIX}:${TMP}/tmp-${PRGNAM}/${DIR_SRC}/lib:${TMP}/tmp-${PRGNAM}/build/lib
+
<syntaxhighlight lang="bash">
   '''export''' QTDIR=${PREFIX}
+
   export LD_LIBRARY_PATH=/usr/lib${LIBDIRSUFFIX}:${TMP}/tmp-${PRGNAM}/${DIR_SRC}/lib:${TMP}/tmp-${PRGNAM}/build/lib
 +
   export QTDIR=${PREFIX}
 +
</syntaxhighlight>
 
The '''LD_LIBRARY_PATH''' variable requires special care as it should point to the directory where intermediate binary files are stored. Files which are needed in later steps of the procedure. Set the wrong value and the build procedure will fail returning an error. Given the library complexity, the '''configure''' script is invoked with an option dense command line:
 
The '''LD_LIBRARY_PATH''' variable requires special care as it should point to the directory where intermediate binary files are stored. Files which are needed in later steps of the procedure. Set the wrong value and the build procedure will fail returning an error. Given the library complexity, the '''configure''' script is invoked with an option dense command line:
 +
<syntaxhighlight lang="bash">
 
   LDFLAGS="${SLKLDFLAGS}" \
 
   LDFLAGS="${SLKLDFLAGS}" \
 
   CFLAGS="${SLKCFLAGS}" \
 
   CFLAGS="${SLKCFLAGS}" \
 
   CXXFLAGS="${SLKCFLAGS}" \
 
   CXXFLAGS="${SLKCFLAGS}" \
   ../${DIR_SRC}/'''configure''' \
+
   ../${DIR_SRC}/configure \
       ''-cups'' \
+
       -cups \
       ''-dlopen-opengl'' \
+
       -dlopen-opengl \
       ''-enable-opengl'' \
+
       -enable-opengl \
       ''-I/usr/include/freetype2/freetype'' \
+
       -I/usr/include/freetype2/freetype \
       ''-I/usr/include/mysql'' \
+
       -I/usr/include/mysql \
       ''-inputmethod'' \
+
       -inputmethod \
       ''-ipv6'' \
+
       -ipv6 \
       ''-L/usr/lib${LIBDIRSUFFIX}'' \
+
       -L/usr/lib${LIBDIRSUFFIX} \
       ''-lfontconfig'' \
+
       -lfontconfig \
       ''-libdir ${PREFIX}/lib${LIBDIRSUFFIX}'' \
+
       -libdir ${PREFIX}/lib${LIBDIRSUFFIX} \
       ''-nis'' \
+
       -nis \
       ''-no-g++-exceptions'' \
+
       -no-g++-exceptions \
       ''-no-pch'' \
+
       -no-pch \
       ''-platform linux-g++'' \
+
       -platform linux-g++ \
       ''-plugin-imgfmt-mng'' \
+
       -plugin-imgfmt-mng \
       ''-plugin-sql-mysql'' \
+
       -plugin-sql-mysql \
       ''-plugin-sql-sqlite'' \
+
       -plugin-sql-sqlite \
       ''-plugin-style-cde'' \
+
       -plugin-style-cde \
       ''-plugin-style-compact'' \
+
       -plugin-style-compact \
       ''-plugin-style-motifplus'' \
+
       -plugin-style-motifplus \
       ''-plugin-style-platinum'' \
+
       -plugin-style-platinum \
       ''-plugin-style-sgi'' \
+
       -plugin-style-sgi \
       ''-plugin-style-windows'' \
+
       -plugin-style-windows \
       ''-prefix ${PREFIX}'' \
+
       -prefix ${PREFIX} \
       ''-qt-gif'' \
+
       -qt-gif \
       ''-qt-imgfmt-jpeg'' \
+
       -qt-imgfmt-jpeg \
       ''-qt-imgfmt-mng'' \
+
       -qt-imgfmt-mng \
       ''-qt-imgfmt-png'' \
+
       -qt-imgfmt-png \
       ''-qt-style-motif'' \
+
       -qt-style-motif \
       ''-release'' \
+
       -release \
       ''-R${TMP}/tmp-${PRGNAM}/lib'' \
+
       -R${TMP}/tmp-${PRGNAM}/lib \
       ''-shared'' \
+
       -shared \
       ''-sm'' \
+
       -sm \
       ''-stl'' \
+
       -stl \
       ''-system-libjpeg'' \
+
       -system-libjpeg \
       ''-system-libmng'' \
+
       -system-libmng \
       ''-system-libpng'' \
+
       -system-libpng \
       ''-system-zlib'' \
+
       -system-zlib \
       ''-thread'' \
+
       -thread \
       ''-tablet'' \
+
       -tablet \
       ''-v'' \
+
       -v \
       ''-xcursor'' \
+
       -xcursor \
       ''-xft'' \
+
       -xft \
       ''-xinerama'' \
+
       -xinerama \
       ''-xkb'' \
+
       -xkb \
       ''-xrandr'' \
+
       -xrandr \
       ''-xrender'' \
+
       -xrender \
       ''-xshape''
+
       -xshape
 +
</syntaxhighlight>
 
The '''make''' command requires running twice. The second time around to create symbolic links and some other stuff:
 
The '''make''' command requires running twice. The second time around to create symbolic links and some other stuff:
   '''make''' VERBOSE=1
+
<syntaxhighlight lang="bash">
   '''make''' install INSTALL_ROOT=${PKG}
+
   make VERBOSE=1
   '''make''' -i symlinks sub-src sub-tool
+
   make install INSTALL_ROOT=${PKG}
   '''make''' install INSTALL_ROOT=${PKG}
+
   make -i symlinks sub-src sub-tool
 +
   make install INSTALL_ROOT=${PKG}
 +
</syntaxhighlight>
 
Some other post build actions should be taken to add other symbolic links, configuration scripts,  and some files needed to ensure everything will run smoothly once installed:
 
Some other post build actions should be taken to add other symbolic links, configuration scripts,  and some files needed to ensure everything will run smoothly once installed:
 +
<syntaxhighlight lang="bash">
 
   # Some configure scripts seem unable to find lib64 => Create a symlink to lib
 
   # Some configure scripts seem unable to find lib64 => Create a symlink to lib
 
   if [[ "x86_64" = "${ARCH}" ]]; then
 
   if [[ "x86_64" = "${ARCH}" ]]; then
Line 499: Line 599:
 
    
 
    
 
   chmod 755 ${PKG}/etc/profile.d/*
 
   chmod 755 ${PKG}/etc/profile.d/*
 +
</syntaxhighlight>
 
As usual a compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following [http://www.giustetti.net/resource/slackbuild/tde/1400/tqt3.tar.gz link].
 
As usual a compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following [http://www.giustetti.net/resource/slackbuild/tde/1400/tqt3.tar.gz link].
  
Line 504: Line 605:
  
 
The '''Trinity Qt Interface''' is a library that abstracts Qt from Trinity. The abstraction layer allows to use both applications linked to TQt and Qt4 in a transparent way permitting both environments to coexist. To work correctly '''TQtinterface''' should be installed in directory '''/usr'''. To build the package set some environment variables:
 
The '''Trinity Qt Interface''' is a library that abstracts Qt from Trinity. The abstraction layer allows to use both applications linked to TQt and Qt4 in a transparent way permitting both environments to coexist. To work correctly '''TQtinterface''' should be installed in directory '''/usr'''. To build the package set some environment variables:
 +
<syntaxhighlight lang="bash">
 
   PREFIX="/usr"
 
   PREFIX="/usr"
 
   MANDIR="/usr/man"
 
   MANDIR="/usr/man"
 +
</syntaxhighlight>
 
Then run '''[http://www.cmake.org/ cmake]''' passing it some configuration options of which '''-DQT_VERSION=3''' is worth mentioning:
 
Then run '''[http://www.cmake.org/ cmake]''' passing it some configuration options of which '''-DQT_VERSION=3''' is worth mentioning:
   '''cmake''' ${TMP}/tmp-${PRGNAM}/${DIR_SRC} \
+
<syntaxhighlight lang="bash">
       ''-DCMAKE_C_FLAGS:STRING=''"${SLKCFLAGS}" \
+
   cmake ${TMP}/tmp-${PRGNAM}/${DIR_SRC} \
       ''-DCMAKE_CXX_FLAGS:STRING=''"${SLKCFLAGS} $DEBUG_CMAKE_OPT" \
+
       -DCMAKE_C_FLAGS:STRING="${SLKCFLAGS}" \
       ''-DCMAKE_INSTALL_PREFIX=''${PREFIX} \
+
       -DCMAKE_CXX_FLAGS:STRING="${SLKCFLAGS} $DEBUG_CMAKE_OPT" \
       ''-DLIB_SUFFIX=''${LIBDIRSUFFIX} \
+
       -DCMAKE_INSTALL_PREFIX=${PREFIX} \
       ''-DMAN_INSTALL_DIR=''${MANDIR} \
+
       -DLIB_SUFFIX=${LIBDIRSUFFIX} \
       ''-DQT_VERSION=3'' \
+
       -DMAN_INSTALL_DIR=${MANDIR} \
       ''-DSYSCONF_INSTALL_DIR=''${SYSCONFDIR} \
+
       -DQT_VERSION=3 \
       ''-DBUILD_ALL=ON''
+
       -DSYSCONF_INSTALL_DIR=${SYSCONFDIR} \
 +
       -DBUILD_ALL=ON
 +
</syntaxhighlight>
 
A compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following [http://www.giustetti.net/resource/slackbuild/tde/1400/tqtinterface.tar.gz link].
 
A compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following [http://www.giustetti.net/resource/slackbuild/tde/1400/tqtinterface.tar.gz link].
  
Line 536: Line 641:
 
----
 
----
  
Languages: '''English''' - [http://www.giustetti.net/wiki/index.php?title=TDE_14.0.0_prerequisiti Italiano]
+
{{footer_en | link_page=TDE_14.0.0_prerequisiti}}

Latest revision as of 14:40, 21 March 2022

Welcome to Simone Giustetti's wiki pages.


Languages: English - Italiano


Prerequisites

Trinity Desktop Environment 14.0.0

Packages grouped with the generic name Prerequisites include all of the desktop environment base libraries and some optional components needed for advanced features. The base libraries obviously include TQt3, the Qt fork developed and maintained by the Trinity project members, tqtinterface, a library providing an abstraction layer between TQt and TDE, arts, the TDE sound server and sound stream mixer, dbus-tqt and dbus-1-tqt, which tie the desktop environment with the hardware subsystem. The remaining libraries: avahi-tqt, libart-lgpl, libcaldav, libcarddav, python-tqt, sip4-tqt, tqca, tqca-tls and tqscintilla are optional ones. The desktop environment could be built without them, but will miss some useful functionality.

Build System

One among the Trinity project main goals consists of porting the package build system from autotools to cmake. The migration is still a work in progress partially concluded only for a bunch of the previously listed packages. A package list matched with the used build system follows:

BUILD SYSTEM
Package Package Type Build System
arts Base Cmake
avahi-tqt Add-on Autotools
dbus-1-tqt Base Cmake
dbus-tqt Base Cmake
libart-lgpl Add-on Autotools
libcaldav Add-on Autotools
libcarddav Add-on Autotools
python-tqt Add-on configure.py script
Python interpreter required
sip4-tqt Add-on configure.py script
Python interpreter required
tqca Add-on Autotools
tqca-tls Add-on Autotools
tqscintilla Add-on Uses script qscintilla.pro for qmake
TQt3 library required
tqt3 Base Autotools
tqtinterface Base Cmake

The need for four different build script templates is evident. Templates should share as much code as possible, but differences will surely arise while invoking the build process because of both the different employed build systems and the need for package specific options. The common SlackBuild script structure, global options and finally package specific options all will be discussed and detailed below.

Common Build Script Structure

Scripts for version 3.5.13.2 of TDE (Prerequisites) were updated and adapted to the last available release. The script skeleton is nearly untouched:

  • Introduction where a brief description and license information are provided for the script.
  • External files containing global and local build options are loaded:
   if [ -r ../../TDE.options ]; then
      . ../../TDE.options
   fi
   PREFIX_TDE=${PREFIX}
   if [ -r ./local.options ]; then
      . ./local.options
   fi
  • Declare some global variables for the script:
   ARCHIVE_FORMAT=${ARCHIVE_FORMAT:-"tar.bz2"}
   BUILD=${BUILD:-"1"}
   LD_LIBRARY_PATH=""  # Will be defined later on
   PRGNAM="tqtinterface"
   PREFIX=${PREFIX:-"/usr"}
   MANDIR=${MANDIR:-${PREFIX}/man}
   SOURCE_SUBDIR=${SOURCE_SUBDIR:-"dependencies"}
   SRCVER=${SRCVER:-"R14.0.0"}
   TAG=${TAG:-"sg"}
   TAR_OPTION=${TAR_OPTION:-"-xjvf"}
   VERSION=$(echo ${SRCVER} | tr '-' '.')
   
   DOCS="AUTHORS COPYING HOW.TO.BUILD NAMING README TODO TRINITY.RELEASE tqtinterface.lsm"
Some variables were added since release 3.5.13.2, among them: the archive format and options for the tar program. All of the additions are meant to ease the build procedure once the project will settle on a compression format for source code archives.
  • Determine the target architecture for the package and set proper parameters for the compiler, linker, included libraries, etc.:
   if [ -z "${MARCH}" ]; then
      MARCH=`uname -m`
   fi
   if [ -z "${ARCH}" ]; then
      case "${MARCH}" in
         i?86)
            export ARCH=i486
         ;;
         arm*)
            export ARCH=arm
         ;;
         *)
            export ARCH=${MARCH}
         ;;
      esac
   fi
Code was updated in order to read the target architecture from global parameters thus providing a suitable script for chroot environments.
  • Create a directory build tree:
   mkdir -p ${TMP}/tmp-${PRGNAM}  # Location to build the source
   rm -rf ${TMP}/tmp-${PRGNAM}/*  # Remove the remnants of previous build and continue
   mkdir -p ${PKG}                # Place for the package to be built
   rm -rf ${PKG}/*                # We always erase old package's contents
   mkdir -p ${OUTPUT}             # Place for the package to be saved
  • Assign sane permissions to files:
   chown -R root:root .
   find . \
   \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
   -exec chmod 755 {} \; -o \
   \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
   -exec chmod 644 {} \;
  • Configure, build and install the package.
  • Add some documentation, links, examples and whatever is needed to obtain a fully functional package:
   mkdir -p ${PKG}/usr/doc/${PRGNAM}"-"$VERSION
   cp -a ${DOCS} ${PKG}/usr/doc/${PRGNAM}"-"${VERSION}
   chown -R root:root ${PKG}/usr/doc/${PRGNAM}"-"${VERSION}
   find ${PKG}/usr/doc -type f -exec chmod 644 {} \;
   
   # Add a package description.
   mkdir -p ${PKG}/install
   cat ${SRCDIR}/slack-desc > ${PKG}/install/slack-desc
   
   # Set sane permissions for the include files.
   if [ -d ${PKG}/${PREFIX}/include ]; then
      find ${PKG}/${PREFIX}/include -type f -exec chmod 0644 {} \;
   fi
  • Crete the package.

Generic Options

Generic build options will vary depending on the adopted build system only. Autotools related packages require the following:

  • Rebuild the Autoconf / Automake used files:
   cp -Rp /usr/share/aclocal/libtool.m4 <pkg_path_build>/admin/libtool.m4.in
   cp -Rp <path to your systems ltmain.sh file> admin/ltmain.sh
   make -f admin/Makefile.common
  • Set options for the compiler and linker, set paths for include files, libraries and man pages:
   export LD_LIBRARY_PATH=${PREFIX}/lib${LIBDIRSUFFIX}:${PREFIX}/lib${LIBDIRSUFFIX}/trinity:${LD_LIBRARY_PATH}
   export LIBDIR=${PREFIX}/lib${LIBDIRSUFFIX}
   export MANDIR
   export PATH=${PREFIX}/bin:${PATH}
   export PKG_CONFIG_PATH=:${PREFIX}/lib${LIBDIRSUFFIX}/pkgconfig:${PKG_CONFIG_PATH}
   export PREFIX
   export QTDIR=${PREFIX}
   export SYSCONFDIR=/etc/trinity
   # Enable only one of the following:
   # export DEBUG_AUTOTOOL_OPT="--enable-debug=full"
   export DEBUG_AUTOTOOL_OPT="--disable-debug"
  • Configure source code:
   CFLAGS="${SLKCFLAGS}" \
   CXXFLAGS="${SLKCFLAGS}" \
   ./configure \
      --prefix=${PREFIX} \
      --libdir=${LIBDIR} \
      --mandir=${MANDIR} \
      --build=$ARCH-slackware-linux \
      2>&1 | tee -a ${OUTPUT}/${PRGNAM}_configure.log
  • Build and install:
   make VERBOSE=1 2>&1 | tee ${OUTPUT}/${PRGNAM}_make.log
   make install DESTDIR=${PKG} 2>&1 | tee ${OUTPUT}/${PRGNAM}_install.log


Steps for Cmake consist of:

  • Clean the cmake cache:
   find . -name CMakeCache.txt -exec rm {} \;
  • Set options for the compiler and linker, set paths for include files, libraries and man pages:
   export LD_LIBRARY_PATH=${PREFIX}/lib${LIBDIRSUFFIX}:${PREFIX}/lib${LIBDIRSUFFIX}/trinity:${LD_LIBRARY_PATH}
   export LIBDIR=${PREFIX}/lib${LIBDIRSUFFIX}
   export MANDIR
   export PATH=${PREFIX}/bin:${PATH}
   export PKG_CONFIG_PATH=${PREFIX}/lib${LIBDIRSUFFIX}/pkgconfig:${PKG_CONFIG_PATH}
   export PREFIX
   export QTDIR=${PREFIX}
   export SYSCONFDIR=/etc/trinity
   # Enable only one of the following:
   # export DEBUG_AUTOTOOL_OPT="--disable-debug"
   export DEBUG_CMAKE_OPT=""
  • Configure source code:
   cmake ${TMP}/tmp-${PRGNAM}/${DIR_SRC} \
      -DCMAKE_C_FLAGS:STRING="${SLKCFLAGS}" \
      -DCMAKE_CXX_FLAGS:STRING="${SLKCFLAGS} $DEBUG_CMAKE_OPT" \
      -DCMAKE_INSTALL_PREFIX=${PREFIX} \
      -DLIB_SUFFIX=${LIBDIRSUFFIX} \
      -DMAN_INSTALL_DIR=${MANDIR} \
      -DSYSCONF_INSTALL_DIR=${SYSCONFDIR} \
      -DBUILD_ALL=ON \
      2>&1 | tee ${OUTPUT}/${PRGNAM}_configure.log
  • Build and install:
   make VERBOSE=1 2>&1 | tee ${OUTPUT}/${PRGNAM}_make.log
   make install DESTDIR=${PKG} 2>&1 | tee ${OUTPUT}/${PRGNAM}_install.log


Packages python-tqt and sip4-tqt use a script written in Python language to configure source code. Both scripts only accept options for the compiler and linker.

  • Configure source code:
   python configure.py \
      CFLAGS="${SLKCFLAGS}" \
      CXXFLAGS="${SLKCFLAGS}" \
      2>&1 | tee ${OUTPUT}/${PRGNAM}_configure.log
  • Build and install:
   make VERBOSE=1 2>&1 | tee ${OUTPUT}/${PRGNAM}_make.log
   make install DESTDIR=${PKG} 2>&1 | tee ${OUTPUT}/${PRGNAM}_install.log


Last is tqscintilla, the only package to use tqmake, which requires options for the compiler and linker.

  • Configure source code:
   CFLAGS="${SLKCFLAGS}" \
   CXXFLAGS="${SLKCFLAGS} -fno-exceptions" \
   tqmake qscintilla.pro \
      2>&1 | tee ${OUTPUT}/${PRGNAM}_configure.log
  • Build and install:
   make VERBOSE=1 2>&1 | tee ${OUTPUT}/${PRGNAM}_make.log
   make install INSTALL_ROOT=${PKG} 2>&1 | tee ${OUTPUT}/${PRGNAM}_install.log

Custom Options

The generic options used to configure and build each package in the prerequisites group were discussed above. Package specific options instead are detailed below together with some tips to attain a successful build. Moreover a download link for each SlackBuild is provided in order to help whoever wishes to test a full build.

ARTS

The Analog Real Time Synthesizer is a sound library providing an integrated sound server, a sound streams mixer and some configuration tools. Used since KDE 2, Arts was replaced by Phonon in KDE 4 and later adopted by TDE. To build Arts You need to set the -DCMAKE_SKIP_RPATH="OFF" option while running the configuration script. The cmake invocation command is:

   cmake ${TMP}/tmp-${PRGNAM}/${DIR_SRC} \
      -DCMAKE_C_FLAGS:STRING="${SLKCFLAGS}" \
      -DCMAKE_CXX_FLAGS:STRING="${SLKCFLAGS} $DEBUG_CMAKE_OPT" \
      -DCMAKE_INSTALL_PREFIX=${PREFIX} \
      -DCMAKE_SKIP_RPATH="OFF" \
      -DLIB_SUFFIX=${LIBDIRSUFFIX} \
      -DMAN_INSTALL_DIR=${MANDIR} \
      -DSYSCONF_INSTALL_DIR=${SYSCONFDIR} \
      -DBUILD_ALL=ON

A compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following link.

AVAHI-TQT

A library providing DNS resolution capabilities to the base TDE packages tdebase and tdelibs. Avahi-tqt requires the avahi library as a dependency, but the latter is not part of a standard Slackware release. A build script for avahi can be downloaded from the slackbuilds.org web page. Once installed the dependency, avahi-tqt can be built setting some environment variables:

   PREFIX="/usr/local"
   MANDIR="/usr/man"

Exporting the tqt3 path:

   export QTDIR=${PREFIX_TDE}

Running the autogen.sh script to create all of the build scripts and configuration files:

   sh ./autogen.sh

Then configuring the source code passing some parameters to the script:

   CFLAGS="${SLKCFLAGS}" \
   CXXFLAGS="${SLKCFLAGS}" \
   ./configure \
      --prefix=${PREFIX} \
      --libdir=${LIBDIR} \
      --mandir=${MANDIR} \
      --build=$ARCH-slackware-linux

A compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following link. Please note: The script is provided for reference only. I don't usually build optional packages nor set on add-on functionality if I can do without. Having no avahi package installed, I could not test the SlackBuild script behavior, just its syntax.

DBUS-TQT

A library interfacing to the dbus daemon included in most modern Linux distributions to manage hardware and provide a common messaging infrastructure for applications. Dbus is a replacement for HAL. To configure and build the package using cmake you should:

Clean the cmake cache:

   find . -name CMakeCache.txt -exec rm {} \;

Pass the -DCMAKE_SKIP_RPATH="OFF" option to cmake. The cmake command line should be something like:

   cmake ${TMP}/tmp-${PRGNAM}/${DIR_SRC} \
      -DCMAKE_C_FLAGS:STRING="${SLKCFLAGS}" \
      -DCMAKE_CXX_FLAGS:STRING="${SLKCFLAGS} $DEBUG_CMAKE_OPT" \
      -DCMAKE_INSTALL_PREFIX=${PREFIX} \
      -DCMAKE_SKIP_RPATH="OFF" \
      -DLIB_SUFFIX=${LIBDIRSUFFIX} \
      -DMAN_INSTALL_DIR=${MANDIR} \
      -DSYSCONF_INSTALL_DIR=${SYSCONFDIR} \
      -DBUILD_ALL=ON

A compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following link.

DBUS-1-TQT

A dbus-tqt related library adding an abstraction layer between the dbus daemon and the TQt3 library. The package can be configured recurring to cmake. Follow some easy steps:

Clean the cmake cache:

   find . -name CMakeCache.txt -exec rm {} \;

Pass the -DCMAKE_SKIP_RPATH="OFF" option to cmake. The cmake command line should be something like:

   cmake ${TMP}/tmp-${PRGNAM}/${DIR_SRC} \
      -DCMAKE_C_FLAGS:STRING="${SLKCFLAGS}" \
      -DCMAKE_CXX_FLAGS:STRING="${SLKCFLAGS} $DEBUG_CMAKE_OPT" \
      -DCMAKE_INSTALL_PREFIX=${PREFIX} \
      -DCMAKE_SKIP_RPATH="OFF" \
      -DLIB_SUFFIX=${LIBDIRSUFFIX} \
      -DMAN_INSTALL_DIR=${MANDIR} \
      -DSYSCONF_INSTALL_DIR=${SYSCONFDIR} \
      -DBUILD_ALL=ON

A compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following link.

LIBART-LGPL

Libart is a library for high-performance 2D graphics used by Gnome, KDE and TDE. The library release distributed with TDE is different from the standard one included in many Linux distributions. You are recommended to replace the installed version if any with the TDE provided one. To build a libart package please define some environment variables:

   PREFIX="/usr"
   MANDIR="/usr/man"

Then configure the source code:

   CFLAGS="${SLKCFLAGS}" \
   CXXFLAGS="${SLKCFLAGS}" \
   ./configure \
      --prefix=${PREFIX} \
      --libdir=${LIBDIR} \
      --build=$ARCH-slackware-linux

A compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following link.

LIBCALDAV

The Libcaldav library implements the client side CALDAV protocol defined in the rfc4791 paper. The library is used by the shared calendar included in the tdepim package. It is an add-on package. Some environment variables are needed to build libcaldav:

   PREFIX="/usr/local"
   MANDIR="/usr/man"

Define the TQt3 library path:

   export QTDIR=${PREFIX_TDE}

Run the autogen.sh script to create all of the build scripts and configuration files:

   sh ./autogen.sh

Then configure the source code passing some parameters to the script:

   CFLAGS="${SLKCFLAGS}" \
   CXXFLAGS="${SLKCFLAGS}" \
   ./configure \
      --prefix=${PREFIX} \
      --libdir=${LIBDIR} \
      --mandir=${MANDIR} \
      --build=$ARCH-slackware-linux

A compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following link.

LIBCARDDAV

The Libcarddav library implements the CARDDAV protocol used by the tdepim package. Libcarddav is an add-on package providing some optional functionality. To build the package set some environment variables:

   PREFIX="/usr/local"
   MANDIR="/usr/man"

Define the TQt3 library path:

   export QTDIR=${PREFIX_TDE}

Run the autogen.sh script to create all of the build scripts and configuration files:

   sh ./autogen.sh

And configure the source code passing some parameters to the script:

   CFLAGS="${SLKCFLAGS}" \
   CXXFLAGS="${SLKCFLAGS}" \
   ./configure \
      --prefix=${PREFIX} \
      --libdir=${LIBDIR} \
      --mandir=${MANDIR} \
      --build=$ARCH-slackware-linux

Some lines of code in the script install the man pages. Those should be commented out to avoid an error that aborts the whole build procedure.

   # Add man pages (No man page => Comment the following lines to avoid errors)
   # if [ -d ${PKG}/${MANDIR} ]; then
   #   gzip -9 $PKG/${MANDIR}/man?/*
   # fi

A compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following link.

SIP4-TQT

Sip is a tool that eases the creation of Python bindings for C or C++ libraries. It was originally developed to bind Python to Qt, but can be used for any C or C++ library. As many other previously discussed packages, sip can be built setting some environment variables:

   PREFIX="/usr/local"
   MANDIR="/usr/man"

Setting a target path for man pages:

   export MANDIR

Adding to the standard compiler options some paths where to search for include files:

   SLKCFLAGS="${SLKCFLAGS} -I/usr/include/tqt -I/opt/trinity/include"

and finally running a configuration script written in Python:

   python configure.py \
      CFLAGS="${SLKCFLAGS}" \
      CXXFLAGS="${SLKCFLAGS}"

A compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following link.

TQCA

Another optional library, Tqca (TQt Cryptographic Architecture), provides an API to add cryptographic features to the Trinity Desktop Environment. Tqca has a small fingerprint and can be built recurring to some package specific steps:

Set some environment variables:

   PREFIX="/usr/local"
   MANDIR="/usr/man"

Set the installation path for the TQt library:

   export QTDIR=${PREFIX_TDE}

Pass the aforementioned variables as parameters to the configuration script:

   CFLAGS="${SLKCFLAGS}" \
   CXXFLAGS="${SLKCFLAGS}" \
   ./configure \
      --prefix=${PREFIX} \
      --qtdir=${QTDIR} \

Another peculiarity consists of the variable used to set the produced binary packages destination: INSTALL_ROOT in place of DESTDIR, used by almost all of the packages.

   make install INSTALL_ROOT=${PKG}

When all variables are set the build process can be started running the make command.

A compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following link.

TQCA-TLS

Tqca-tls is a plug-in providing support for cryptography through a SSL/TLS channel for programs using the TQt Cryptographic Architecture. Perhaps the easiest package to build as the configure script sets sane values for all of its options. To build a working package you need to set the TQt library installation path:

   export QTDIR=${PREFIX}

Then execute the build script:

   CFLAGS="${SLKCFLAGS}" \
   CXXFLAGS="${SLKCFLAGS}" \
   ./configure \
      --qtdir=${QTDIR}

As for tqca, the only package peculiarity consists of the variable used to set a target directory for produced binary files: INSTALL_ROOT

   make install INSTALL_ROOT=${PKG}

A compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following link.

TQT3

TQt is a library providing all of the base widgets used by the desktop environment and as such has a fundamental importance. Building the package requires a great deal of time, but it relatively straightforward. First of all some environment variables are required:

   export LD_LIBRARY_PATH=/usr/lib${LIBDIRSUFFIX}:${TMP}/tmp-${PRGNAM}/${DIR_SRC}/lib:${TMP}/tmp-${PRGNAM}/build/lib
   export QTDIR=${PREFIX}

The LD_LIBRARY_PATH variable requires special care as it should point to the directory where intermediate binary files are stored. Files which are needed in later steps of the procedure. Set the wrong value and the build procedure will fail returning an error. Given the library complexity, the configure script is invoked with an option dense command line:

   LDFLAGS="${SLKLDFLAGS}" \
   CFLAGS="${SLKCFLAGS}" \
   CXXFLAGS="${SLKCFLAGS}" \
   ../${DIR_SRC}/configure \
      -cups \
      -dlopen-opengl \
      -enable-opengl \
      -I/usr/include/freetype2/freetype \
      -I/usr/include/mysql \
      -inputmethod \
      -ipv6 \
      -L/usr/lib${LIBDIRSUFFIX} \
      -lfontconfig \
      -libdir ${PREFIX}/lib${LIBDIRSUFFIX} \
      -nis \
      -no-g++-exceptions \
      -no-pch \
      -platform linux-g++ \
      -plugin-imgfmt-mng \
      -plugin-sql-mysql \
      -plugin-sql-sqlite \
      -plugin-style-cde \
      -plugin-style-compact \
      -plugin-style-motifplus \
      -plugin-style-platinum \
      -plugin-style-sgi \
      -plugin-style-windows \
      -prefix ${PREFIX} \
      -qt-gif \
      -qt-imgfmt-jpeg \
      -qt-imgfmt-mng \
      -qt-imgfmt-png \
      -qt-style-motif \
      -release \
      -R${TMP}/tmp-${PRGNAM}/lib \
      -shared \
      -sm \
      -stl \
      -system-libjpeg \
      -system-libmng \
      -system-libpng \
      -system-zlib \
      -thread \
      -tablet \
      -v \
      -xcursor \
      -xft \
      -xinerama \
      -xkb \
      -xrandr \
      -xrender \
      -xshape

The make command requires running twice. The second time around to create symbolic links and some other stuff:

   make VERBOSE=1
   make install INSTALL_ROOT=${PKG}
   make -i symlinks sub-src sub-tool
   make install INSTALL_ROOT=${PKG}

Some other post build actions should be taken to add other symbolic links, configuration scripts, and some files needed to ensure everything will run smoothly once installed:

   # Some configure scripts seem unable to find lib64 => Create a symlink to lib
   if [[ "x86_64" = "${ARCH}" ]]; then
      ln -sf ${PREFIX}/lib${LIBDIRSUFFIX} ${PKG}/${PREFIX}/lib
   fi
   
   # Adding a link to the include folder
   mkdir -p ${PKG}/usr/include
   ln -sf ${PREFIX}/include ${PKG}/usr/include/${PRGNAM}
   
   # Move the qt-mt.pc in the pkgconfig directory
   if [[ ! -f ${PKG}/${PREFIX}/lib${LIBDIRSUFFIX}/pkgconfig/tqt-mt.pc ]]; then
      mkdir -p ${PKG}/${PREFIX}/lib${LIBDIRSUFFIX}/pkgconfig
      mv ${PKG}/${PREFIX}/lib${LIBDIRSUFFIX}/tqt-mt.pc ${PKG}/${PREFIX}/lib${LIBDIRSUFFIX}/pkgconfig/tqt-mt.pc
   fi
   # Link for qt-mt.pc to the /usr/lib[64] directory
   mkdir -p ${PKG}/usr/lib${LIBDIRSUFFIX}/pkgconfig
   ln -sf ${PREFIX}/lib${LIBDIRSUFFIX}/pkgconfig/tqt-mt.pc ${PKG}/usr/lib${LIBDIRSUFFIX}/pkgconfig/tqt-mt.pc
   
   # Fix some bad links
   if [[ -d ${PKG}/${PREFIX}/lib${LIBDIRSUFFIX}/${PRGNAM}/mkspecs/linux-g++ ]]; then
      if [[ -L ${PKG}/${PREFIX}/lib${LIBDIRSUFFIX}/${PRGNAM}/mkspecs/linux-g++/linux-g++ ]]; then
         unlink ${PKG}/${PREFIX}/lib${LIBDIRSUFFIX}/${PRGNAM}/mkspecs/linux-g++/linux-g++
      fi
      ln -sf ${PREFIX}/lib${LIBDIRSUFFIX}/${PRGNAM}/mkspecs/linux-g++ ${PKG}/${PREFIX}/lib${LIBDIRSUFFIX}/${PRGNAM}/mkspecs/linux-g++/linux-g++
      if [[ -L ${PKG}/${PREFIX}/lib${LIBDIRSUFFIX}/${PRGNAM}/mkspecs/default ]]; then
         unlink ${PKG}/${PREFIX}/lib${LIBDIRSUFFIX}/${PRGNAM}/mkspecs/default
      fi
      ln -sf ${PREFIX}/lib${LIBDIRSUFFIX}/${PRGNAM}/mkspecs/linux-g++ ${PKG}/${PREFIX}/lib${LIBDIRSUFFIX}/${PRGNAM}/mkspecs/default
   elif [[ -d ${PKG}/${PREFIX}/mkspecs/linux-g++ ]]; then
      if [[ -L ${PKG}/${PREFIX}/mkspecs/linux-g++/linux-g++ ]]; then
         unlink ${PKG}/${PREFIX}/mkspecs/linux-g++/linux-g++
      fi
      ln -sf ${PREFIX}/mkspecs/linux-g++ ${PKG}${PREFIX}/mkspecs/linux-g++/linux-g++
      if [[ -L ${PKG}/${PREFIX}/mkspecs/default ]]; then
         unlink ${PKG}/${PREFIX}/mkspecs/default
      fi
      ln -sf ${PREFIX}/mkspecs/linux-g++ ${PKG}/${PREFIX}/mkspecs/default
   fi
   
   # Create and populate the profile.d directory
   mkdir -p ${PKG}/etc/profile.d
   # Put profile.d scripts in package TQT installation path.
   cat ${SRCDIR}/profile.d/tqt3.sh  | sed -e "s:TDE_PREFIX:${PREFIX}:" > ${PKG}/etc/profile.d/tqt3.sh
   cat ${SRCDIR}/profile.d/tqt3.csh | sed -e "s:TDE_PREFIX:${PREFIX}:" > ${PKG}/etc/profile.d/tqt3.csh
   
   chmod 755 ${PKG}/etc/profile.d/*

As usual a compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following link.

TQTINTERFACE

The Trinity Qt Interface is a library that abstracts Qt from Trinity. The abstraction layer allows to use both applications linked to TQt and Qt4 in a transparent way permitting both environments to coexist. To work correctly TQtinterface should be installed in directory /usr. To build the package set some environment variables:

   PREFIX="/usr"
   MANDIR="/usr/man"

Then run cmake passing it some configuration options of which -DQT_VERSION=3 is worth mentioning:

   cmake ${TMP}/tmp-${PRGNAM}/${DIR_SRC} \
      -DCMAKE_C_FLAGS:STRING="${SLKCFLAGS}" \
      -DCMAKE_CXX_FLAGS:STRING="${SLKCFLAGS} $DEBUG_CMAKE_OPT" \
      -DCMAKE_INSTALL_PREFIX=${PREFIX} \
      -DLIB_SUFFIX=${LIBDIRSUFFIX} \
      -DMAN_INSTALL_DIR=${MANDIR} \
      -DQT_VERSION=3 \
      -DSYSCONF_INSTALL_DIR=${SYSCONFDIR} \
      -DBUILD_ALL=ON

A compressed archive containing the SlackBuild script and the related configuration files can be downloaded from the following link.

Conclusions

The present paper presented and discussed the procedure to build Prerequisites packages for the Trinity Desktop Environment. Some general rules common to the whole project were described along with options specific to packages. Finally links for all of the used SlackBuild scripts were provided in the hope for them to be useful to Slackware Linux users wishing to give a try at building the desktop environment from scratch.


For any feedback, questions, errors and such, please e-mail me at studiosg [at] giustetti [dot] net


External links





Languages: English - Italiano