En/Trinity desktop environment 14.1.0

Welcome to Simone Giustetti's wiki pages.


Languages: English - Italiano


TDE 14.1.0 and Slackware 15.0

30th April 2023 marked the end of the 14.0.x branch of the Trinity Desktop Environment. It took more than 8 years, but finally the team of developers announced the availability of the 14.1.x branch of the graphical environment and the first public release of the series. There will be no more releases in the R14.0.x series.

The new release of the desktop environment comes with a lot of upgrades, regarding both source code and performances, and the usual fixes to all the issues opened during the previous 6 months since the older stable release was announced. Some among the many improvements introduced are:

  • Added support for encrypted disks through the LUKS interface of the Linux kernel.
  • Added a new notification interface for storage devices and related plug / unplug events.
  • Initial basic support for PulseAudio.
  • Added support for the PKI interface which should ease the adoption and management of x.509 certificates, Smart Card Readers and other cryptographic devices and their integration with TDE applications.
  • A new application to manage Bluetooth functionality (tdebluez).
  • A new multimedia player: kplayer based on Mplayer. The need for this was felt, given the rapid aging of some of the Tdemultimedia included applications.
  • Some new themes based on Icewm, a window manager for the X Window System.
  • Added support for the lzip / lzma compression algorithm in Ark. A very nice touch given the increasing importance that this format is assuming with users.
  • A new session panel for Kate.
  • The complete removal of Python 2 in favor of Python 3 throughout TDE.
  • A lot of improvements to the configuration programs and their GUIs.

Many more improvements, some of which are not immediately evident, were introduced to the services the desktop environment relies on. For a full list of changes to the Trinity Desktop Environment, please consult the release notes:

Or the related change log:

I'll detail the changes introduced in the scripts I use to build working packages of TDE for Slackware Linux 15.0 for the amd64, arm and x86 architectures in the following article.

Code Cleanup

A new development branch is the perfect time for refactoring code, removing from scripts all of the code, variables, functions, which, now useless, were introduced to build very old releases. The 14.1.x series is not meant to be backward compatible with previous ones and allows you to start from scratch. This time I removed the SOURCE_SUBDIR variable form every and each SlackBuild script. The variable was unused anyway and has been for a long time. Its removal does not affect the build procedure in any noticeable way.


New Build Options

Something that impacted a great number of the build scripts is the list of options passed to the compiler and linker through the SLKCFLAGS variable. For reasons still unknown, cmake seems not to read or the environment variable LD_LIBRARY_PATH and consequently cannot set the correct path for libraries. As a result almost all of the SlackBuild scripts for TDE exit almost immediately returning an error and complaining about missing tqt3 libraries. I've been building TDE packages for more than a decade now and this is the first time I stumble onto a change affecting so many. Something similar occurred in the past, from time to time, but was usually limited to the lone stray package. The issue was quickly fixed adding the following line of code when invoking cmake:

   # Add some include paths to the standard compiler flags otherwise the build
   # process will fail with an error
   SLKCFLAGS="${SLKCFLAGS} -L ${QTDIR}/lib${LIBDIRSUFFIX}"

As anticipated, many scripts are affected. The full list is available below:

  • Prerequisite / Dependencies
    • Arts
    • Avahi-tqt
    • Dbus-1-tqt
    • Dbus-tqt
    • Polkit-tqt
    • Pytqt
    • Tqca
    • Tqscintilla
    • Tqtinterface
  • Library / Libraries
    • Libkdcraw
    • Libkexiv2
    • Libkipi
    • Libtdeldap
    • Pytdeextensions
  • Base / Core
    • Tdeaccessibility
    • Tdeaddons
    • Tdeadmin
    • Tdeartwork
    • Tdebase
    • Tdeedu
    • Tdegames
    • Tdegraphics
    • Tdelibs
    • Tdemultimedia
    • Tdenetwork
    • Tdepim
    • Tdeutils
    • Tdesdk
    • Tdetoys
    • Tdewebdev

Python

Removing Python 2 support from the whole infrastructure of the Trinity Desktop Environment should be an easy task. Slackware Linux, as many other distros, introduced Python 3 support a long time ago. Actually the replacement has consequences and some cannot be ignored when building packages. In spite of Slackware Linux supporting Python 3, it includes the Python 2 series as well and Python 2 remains the default choice due mainly to the huge number of libraries that, in spite of the 15 year that passed since Python 3 was first introduced, have not been ported yet. The python command defaults to the Python 2 interpreter in Slackware. To run Python 3, you use the python3 command, that loads the interpreter and sets the environment variables, system paths, libraries and extensions for version 3. All of the Python related scripts require, as a direct consequence, some work to:

  • Invoke Python 3 instead of Python 2, which is not supported anymore.
  • Update the Python code using a Python 3 compliant syntax. Python 3 is not backward compatible with Python 2.

A list of packages which underwent some upgrade work follow.

Pytde

The python-trinity package was renamed into pytde, using the name introduced upstream by the project developers. The same name was chosen for the SlackBuild script and the directory containing it. To configure and build the code, every reference to Python 2 was removed from the script and replaced with Python 3 lines of code. The lines of code setting the system paths were updated from:

   # Define some python related variables.
   export PYTHON_VER=$( python -V 2>&1 | cut -f 2 -d' ' | cut -f 1-2 -d. )
   export PYTHON_LIB=$( python -c 'from distutils.sysconfig import get_python_lib; print get_python_lib()' )

to:

   # Define some python related variables.
   export PYTHON_VER=$( python3 -V 2>&1 | cut -f 2 -d' ' | cut -f 1-2 -d. )
   # Add a couple of parentheses to comply with python 3 new syntax
   export PYTHON_LIB=$( python3 -c 'from distutils.sysconfig import get_python_lib; print( get_python_lib())' )

Likewise the lines of code invoking the configuration script:

   CFLAGS="${SLKCFLAGS}" \
   CXXFLAGS="${SLKCFLAGS}" \
   python ./configure.py \
      -d "${PYTHON_LIB}" \

were updated to:

   CFLAGS="${SLKCFLAGS}" \
   CXXFLAGS="${SLKCFLAGS}" \
   python3 ./configure.py \
      -d "${PYTHON_LIB}" \

Pytdeextensions

Pytdeextensions is a library of Python bindings for the Trinity toolkit making hundreds of classes available to Python programmers. The lines of code of the script responsible for building and packaging the source code are written in Python 3 thus the script invoking command was updated, replacing:

   # Configure, build and install the package
   python ./setup.py install --verbose --root=${PKG} \
      2>&1 | tee ${OUTPUT}/${PRGNAM}_build.log

with:

   # Configure, build and install the package
   python3 ./setup.py install --verbose --root=${PKG} \
      2>&1 | tee ${OUTPUT}/${PRGNAM}_build.log

in order to avoid errors triggered by incompatibility between programming language versions.

Pytqt

The python-tqt package was renamed into pytde and so was the SlackBuild script and the directory where it is located. All of this to comply to the new name adopted with Trinity Desktop Environment 14.1.0. Some other parts of the script underwent significant changes:

The tqt3 path is now passed to the linker. This required changing the line:

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

into:

   SLKCFLAGS="${SLKCFLAGS} -I/usr/include/tqt -I${PREFIX_TDE}/include -L ${QTDIR}/lib${LIBDIRSUFFIX}"

The script invoking code was likewise changed from:

   python configure.py -z \

to:

   python3 configure.py -z \
      -q ${QTDIR} \

setting Python 3 as default, to ensure all of the modules will be built for the latest language version and later installed in the proper directory. Moreover the tqt3 library path is now passed to the script through the -q option. An addition required to prevent the script from searching it in the default /usr directory, just to fail.

Sip4-tqt

The package name remains unchanged despite its internal module being renamed in sip_tqt. The script was migrated to Python 3 updating line:

   python configure.py \

with:

   python3 configure.py \

thus making certain that all compiled modules will be TDE compatible and installed in Python 3 specific directories instead of Python 2 ones. Otherwise, sip-tqt modules won't be correctly detected by other parts of the desktop environment.


Some More Package Specific Changes

Some more scripts required adjustments to work properly with the latest TDE release. A list of updated packages and details about the rewritten code follow:

Cmake

The cmake package was renamed into tde-cmake and its SlackBuild script and related directory likewise. All of this to comply with the new naming convention adopted by the TDE development team and to not incur in chaos and mistakes.

Libtdeldap

The libtdeldap library introduced a new dependency: Heimdal 7.7.0. Heimdal is a free and libre implementation of the Kerberos 5 protocol. Kerberos is a network authentication protocol that uses tickets to allow people to prove their identity over a non secure network. Heimdal is meant to replace the standard Kerberos implementation included in Slackware Linux 15.0. Slackware does not include an official Heimdal package, luckily a build script is provided through the www.slackbuilds.org web site. The package built using the script can coexist with the standard one and both can be installed on the same Linux box with no drawback whatsoever.

Install Heimdal before you run the libtdeldap build script. The SlackBuild script requires some retouching to set the proper paths where to look for the Heimdal include files and libraries. With no update, the script exits almost immediately lamenting the libraries are unavailable even when they are correctly installed.

The first change consists of adding the proper paths to the SLKCFLAGS variable, which includes a list of options to pass to cmake, the compiler and the linker:

   # Add some include paths to the standard compiler flags otherwise the build
   # process will fail with an error
   SLKCFLAGS="${SLKCFLAGS} -I /usr/heimdal/include -L ${QTDIR}/lib${LIBDIRSUFFIX} -L /usr/heimdal/lib${LIBDIRSUFFIX}"

The second and last change consists of setting the proper values for the variables DHEIMDAL_INCLUDEDIR and DHEIMDAL_LIBDIR, later used by cmake when configuring the 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} \
      -DCMAKE_SKIP_RPATH="OFF" \
      -DLIB_SUFFIX=${LIBDIRSUFFIX} \
      -DMAN_INSTALL_DIR=${MANDIR} \
      -DSYSCONF_INSTALL_DIR=${SYSCONFDIR} \
      -DHEIMDAL_INCLUDEDIR=/usr/heimdal/include \
      -DHEIMDAL_LIBDIR=/usr/heimdal/lib${LIBDIRSUFFIX} \
      -DBUILD_ALL=ON \
      2>&1 | tee -a ${OUTPUT}/${PRGNAM}_configure.log

The updated script will build properly a package for the library enabling the LDAP protocol in TDE.

Libtqt-perl

The latest library release comes with updates to the configuration script therefore the lines of code invoking it required to be updated accordingly:

   CFLAGS="${SLKCFLAGS}" \
   CXXFLAGS="${SLKCFLAGS}" \
   ./configure \
      ${DEBUG_AUTOTOOL_OPT} \
      --prefix=${PREFIX} \
      --with-qt-dir=${PREFIX} \

mutated in:

   CFLAGS="${SLKCFLAGS}" \
   CXXFLAGS="${SLKCFLAGS}" \
   ./configure \
      ${DEBUG_AUTOTOOL_OPT} \
      --prefix=${PREFIX} \
      --with-tqt-dir=${PREFIX} \

The old deprecated parameter --with-qt-dir was replaced with the new --with-tqt-dir one.

Tdebase

Some deprecated options, already commented out, were definitively removed from the cmake command line. The options presence could crash the script on Amd64 systems. The aforementioned options were unused for a long time, the update does not affect the resulting binary files in any way.



UPDATED BUILD TREE

The list of changes scattered throughout the scripts is concluded and here is the link pointing to the build scripts packaged into a conveniently compressed archive: tde_build_tree_sg-14.1.0.tar.bz2. Basic instructions to use the build tree to its fullest and build the whole desktop environment are provided in the following lines of text:

  • Download and decompress the archive in a directory of your Linux box. Usually /tmp or /usr/src/tde-14.1.0 are used.
  • Download and decompress the tar archive which includes the source code for all packages.
  • Distribute the many compressed archives containing the source code among the proper directories. One archive with tar.xz extension for each directory with the same name.
  • Enter runlevel 3 and authenticate as root.
   init 3
  • If a previous version of TDE is installed, you must remove all installed packages before you run the main build script, to avoid any mismatch while building. For release 14.0.13 for example, the command is:
   removepkg /var/log/packages/*trinity-14.0.13*

or a more generic command:

   removepkg /var/log/packages/*trinity-14.0.*
  • Delete configuration scripts left over by the removepkg command.
   rm /etc/profile.d/tqt3.*
   rm /etc/profile.d/trinity.*
  • Logout, then login again to ensure that all references pointing to TDE are removed from the environment configuration.
  • If you wish to build all of the localization packages together with the base ones, update the main build script tde_build_script/bin/TDE.SlackBuild turning lines
      # Build package
   #   bash ./${PKG}.SlackBuild

into

      # Build package
      bash ./${PKG}.SlackBuild
  • Set the configuration options for the desired architecture. For a computer with a 64 bit Amd CPU inside, for example, use the following command:
   rm TDE.options
   ln -s TDE.options.x86_64 TDE.options
  • Move to directory tde_build_script/bin and run script TDE.SlackBuild.
   cd ./tde_build_script/bin
   sh ./TDE.SlackBuild
  • Wait patiently for the script to conclude. The time needed can vary a lot based on your processor and computer architecture, but many hours are anyway required for a Trinity Desktop Environment full build. The amount of time usually doubles when localization files are built along the base packages. The script will build and install automatically all of the GUI packages.
  • Remove unwanted packages.
  • Run the startx command to check the desktop environment installation and configuration to work.
  • Close the TDE session and change back the runlevel to 4.
   init 4


CONCLUSIONS

The previous paragraphs provide a summary for the updates introduced in release 14.1.0 of the Trinity Desktop Environment. The build scripts were updated, tested and collected in a compressed archive in order to ease their adoption and use. For more in depth instructions on the use of the scripts, please refer to the other articles available in this web site. The build procedure is very stable and moving from the 14.0.x to the 14.1.x series should prove an easy task. Compiling, installing, configuration and testing were preformed on a desktop PC running Slackware Linux 15.0 for 64 and 32 bit Amd platforms. In conclusion, the usual tanks to the Trinity Desktop Environment developers and maintainers for their hard work and passion. We'll see again in 6 months: when a new TDE release is scheduled to happen.


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


External links





Languages: English - Italiano