En/Trinity desktop environment 14.0.7

Revision as of 18:00, 25 July 2020 by Wikiuser (talk | contribs) (Removed sentence wrongly stating that Kipi Plug-ins were migrated to CMake)

Welcome to Simone Giustetti's wiki pages.


Languages: English - Italiano


TDE 14.0.7

On December 31, 2019, after 8 months of hard work, Trinity Desktop Environment version 14.0.7 was released. TDE is a graphical environment that supports the Linux operating system and partially FreeBSD. The new release aims at correcting the bugs discovered since the previous one, but the developers have included numerous improvements to both the base system and the accompanying programs. For an exhaustive list of changes and additions, please refer to the release notes.

One change impacting package builders the most is the build system migration: the original system autotools is being gradually replaced with cmake. This is a major update and still a work in progress, which began with the very first released version of TDE and continued over the years with many interruptions based on the priorities of the development group. The ultimate goal is to configure and compile all TDE packages with cmake. The list is still a partial one, but it is still nice that the number of packages managed through the new system has grown significantly compared to the past.

I have been maintaining a set of scripts to compile Trinity Desktop Environment for Slackware Linux for the past years and, thanks to the availability of a new Raspberry Pi 4 for testing purposes and the lock down forced by the Covid-19 virus, I finally found enough time to update and align them with version 14.0.7. Below is a list of the changes introduced since version 14.0.6, each with a brief description. For the impatient ones: an archive containing an updated copy of the scripts can be downloaded from a link at the bottom of the page.

Common Changes to the Build Tree

Some of the introduced changes affect the entire build tree or, in other words, all the scripts that configure and compile the source code of the TDE packages. Obviously, since the release number was incremented, all the environment variables have been updated accordingly to the new numbering and other small changes introduced by the developers. All of it while keeping the project guidelines. In particular, the installation directory of choice still is / opt. A SHA512 checksum was added in each script. The checksum is useful when distributing the compiled packages to check their integrity. The scripts still provide the classic MD5 checksum too even if the algorithm is gradually being replaced as it is susceptible to vulnerabilities that mark it as not secure.

As mentioned in the previous paragraph, the most substantial change introduced in TDE 14.0.7 consists in the migration of many packages to the cmake build system. The migration makes impossible to build working packages unless updating the related scripts. Old scripts that worked fine with TDE 14.0.6 or earlier versions will now fail because they are not written for the right build system. The packages affected by the change will be listed below. The related scripts have undergone two substantial updates: first some code lines were added to clean the cmake cache and create the build folder used to compile sources:

   # Clean cmake cache
   find . -name CMakeCache.txt -exec rm {} \;
   
   # Create a directory where to build source (cmake wants the name to be build).
   cd ${TMP}/tmp-${PRGNAM}
   mkdir build
   cd build

and, second but not any less important, update the command invoked to configure the source code. For example:

   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 \
      2>&1 | tee -a ${OUTPUT}/${PRGNAM}_configure.log

replaced the classic:

   CFLAGS="${SLKCFLAGS}" \
   CXXFLAGS="${SLKCFLAGS}" \
   ./configure \
      --prefix=${PREFIX} \
      --libdir=${LIBDIR} \
      --build=$ARCH-slackware-linux \
       2>&1 | tee ${OUTPUT}/${PRGNAM}_configure.log

a list of packages and their specific updates are detailed below.

Changes Introduced in the Prerequisites Package Set

The set of prerequisites includes all of the software tools and libraries required to build a basic graphic environment. One big change involved the order package are built: Akode and Libr, two packages added in the previous 14.0.6 version of TDE, are now compiled first. The move due to the fact that some other package could require them as dependencies. Certainly, given their function, tdemultimedia and potentially arts, although I'm not really sure about the latter. Changing the compilation order did not raise any issue in subsequent tests thus I'm positive the update works fine.

AVAHI-TQT

Avahi is an implementation of the Zeroconf (zero configuration) service allowing you to assemble a network based on TCP / IP protocols with little or no configuration work. The daemon / service, once installed and running, periodically scans the network looking for available services and caches the results to minimize network traffic. The avahi-tqt package integrates Avahi functionality into the Trinity Desktop Environment. It is an optional addiction that I usually don't bother with. I admit I totally forgot about it when I updated the 14.0.6 scripts, but recently I put a lot of effort in tying to build LibreOffice for Slackware ARM 14.2 current. Since avahi is a candidate even if useless dependency for both projects I decided to compile and install the package anyway. Instructions for building an usable avahi package can be found in the LibreOffice dedicated page. Avahi-tqt has undergone a remarkable update in TDE 14.0.7: it was migrated to cmake and the old build script no longer works. The new one included in build tree 14.0.7 was updated to invoke cmake in order to build a working avahi-tqt package.

LIBART-LGPL

Libart-lgpl, a fast and lightweight library for 2-dimensional graphics, was migrated to cmake too. Fortunately, it is the only newly introduced change.

LIBCALDAV

Libcaldav is a software library used to include support for the CalDAV protocol in TDE and was migrated to cmake thus, like many of the other prerequisites, its script required updating. Moreover file rfc4791.pdf was removed from the DOCS variable, used while copying the documentation to the appropriate directory. The document in question was moved to the ./doc directory in the source code archive and the copy to the documentation folder is now managed by the MakeFile. The manual copy is no longer required.

LIBCARDDAV

Libcarddav underwent the same updates as its twin library libcaldav. The introduction of cmake as preferred build system and the removal of file rfc4791.pdf from the DOCS variable. The latter is managed directly by the MakeFile script.

TQCA

The only relevant update regarding the build script consists of the replacement of a deprecated configure option qtdir with tqtdir:

   CFLAGS="${SLKCFLAGS}" \
   CXXFLAGS="${SLKCFLAGS}" \
   ./configure \
      --prefix=${PREFIX} \
      --tqtdir=${QTDIR} \
      2>&1 | tee ${OUTPUT}/${PRGNAM}_configure.log

TQCA-TLS

The build script is almost untouched except for replacing the deprecated configure option qtdir with tqtdir:

   CFLAGS="${SLKCFLAGS}" \
   CXXFLAGS="${SLKCFLAGS}" \
   ./configure \
      --tqtdir=${QTDIR} \
      2>&1 | tee ${OUTPUT}/${PRGNAM}_configure.log

Changes Introduced in the Library Package Set

The Trinity Desktop Environment includes many third party libraries to enhance its functionality. TDE developers are working hard to port all optional libraries to cmake. The transition is a work in progress brought forth with every release and cmake was newly introduced into many packages with 14.0.7 as well, increasing the total count and progressing toward the final goal. Packages whose compilation script was updated are listed below together with some notes about the introduced changes.

LIBKDCRAW

The developers team started porting the build system to cmake and introduced the options required to perform an out of tree build, a feature unsupported with previous TDE releases. Sadly the migration hasn't concluded yet and the old autotools based script is still required. Optimistically, given the actual state of the source code, the migration will be concluded by next release and you'll only have to wait for it to use cmake.

LIBKEXIV2

The libkexiv2 library was ported to cmake. No other changes were introduced apart from the usual bug fixes and enhancements.

LIBKIPI

The libkipi library was ported to cmake. This is the only relevant update introduced with 14.0.7 into the package.

LIBKSQUIRREL

The migration work was started on the libksquirrel library and this is not the only change introduced. TDE developers added support for an out of tree build with release 14.0.7 providing a long awaited feature. Work on both options is still in progress and as such the old autotools based script remains your only option to build a working package. We are all waiting for the port to be concluded.

LIBTDELDAP

The last of the libraries interested by the port to cmake is libtdeldap, which adds support to the LDAP protocol to the Trinity Desktop Environment. The SlackBuild script to build a Slackware package was updated introducing the changes required to support the new build system.


Changes Introduced in the Base Package Set

A graphical environment as big as TDE is organized in many packages to better manage its development. Some of the packages in the base set were ported to cmake and introduced changes, bug fixes and enhancements since their previous versions. The following paragraphs discusses all of the significant changes with some detail.

TDEACCESSIBILITY

The tdeaccessbility package port is a work in progress. It is not yet time to update the related SlackBuild script to cmake. Autotools will hopefully be around for one more release only.

TDEADMIN

The source code for tdeadmin, the package including the configuration and administration tools for the environment was finally ported to cmake. Praise the Trinity Desktop Environment developers for the excellent work done. The build script was updated to use the commands of the new development system.

TDEBINDINGS

Work is in progress to port tdebindings: a package including language bindings required to write programs able to run in TDE in a language other than C++, to the the new build system, but it is far from over. As a consequence the autotools based SlackBuild script is still your only option to build a working tdebindings package for Slackware Linux.

TDEEDU

Tdeedu, the package including educational software for TDE, was migrated to cmake. The porting work is over thus I updated the related build script to use the new system.

TDEGAMES

The package including games written to run inside of the Trinity Desktop Environment now fully supports cmake ad as such was fattening the ranks of those whose compilation script required an update. On the occasion I also added the option DWITH_ARTS=ON to the source code configuration command. Some of the included games require it explicitly:

   # Configure the package
   cmake ${TMP}/tmp-${PRGNAM}/${DIR_SRC} \
      -DCMAKE_C_FLAGS:STRING="${SLKCFLAGS}" \
      -DCMAKE_CXX_FLAGS:STRING="${SLKCFLAGS} $DEBUGwas ported_CMAKE_OPT" \
      -DCMAKE_INSTALL_PREFIX=${PREFIX} \
      -DLIB_SUFFIX=${LIBDIRSUFFIX} \
      -DMAN_INSTALL_DIR=${MANDIR} \
      -DSYSCONF_INSTALL_DIR=${SYSCONFDIR} \
      -DWITH_ARTS=ON \
      -DBUILD_ALL=ON \
      2>&1 | tee -a ${OUTPUT}/${PRGNAM}_configure.log

TDELIBS

The libraries on which TDE is based were migrated to cmake years ago. With the new release I added the option WITH_GCC_VISIBILITY to the configuration command:

   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} \
      -DWITH_GCC_VISIBILITY="ON" \
      -DBUILD_ALL="ON" \
      2>&1 | tee ${OUTPUT}/${PRGNAM}_configure.log

Visibility seems to be a good idea bringing along many benefits as explained in the GCC wiki pages. Its support is explicitly required by some of the applications supplied with TDE such as: kiosk-tools.

TDEMULTIMEDIA

With release 14.0.7 tdemultimedia, the package including the multimedia playback programs integrated in TDE, has fattened the ranks of those which use cmake to configure the source code and drive the building procedure. The related build script was updated and adapted accordingly.

TDEWBDEV

The last Trinity Desktop Environment package ported to cmake with release 14.0.7 is tdewebdev, the package including web development tools as an editor for the HTML language, an image map editor, and so on. The build script for it was updated accordingly too.

TDE-I18N

I forgot to update the build script for package tde-i18n in addition to the one for avahi-tqt for release 14.0.6 of TDE. The i18n packages are required to add localization support to the desktop environment. I feel sorry for the oversight, but not using any of them I didn't notice they went missing. However I'll try to make amend by including all the necessary updates in version 14.0.7. I introduced:

  • Some lines of code to manage the archive naming convention and I sincerely hope the project developers to have exhausted all of the archive compression algorithms and that they were finally able to agree on the tree structure for files and directories.
  • Code to manage the name of the directory in which archives are unpacked.
  • Code to manage the extraction flag to pass to the tar command when decompressing the source code.
  • The armv7l option to manage the ARM architecture and the Hard Float option useful for Raspberry Pi 2, 3 and 4.

The package was also successfully tested. I can affirm with some satisfaction that building localization packages takes significantly less time on a Raspberry Pi 4 than on previous models.



THE BUILD TREE

I promised it when introducing the article and here it is: a link pointing to the build scripts saved into a single compressed archive: tde_build_tree_sg-14.0.7.tar.bz2. Download and decompress it, copy the source archive to the target directory bearing the same name then run the TDE.SlackBuild script to start building the desktop environment from scratch. I strongly suggest to remove any installed version of TDE to avoid conflicts with the newly installed packages.


CONCLUSIONS

This paper provides an insight for the many new features introduced in the Trinity Desktop Environment build system with release 14.0.7. 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 changes introduced by the developers affected the source code, but not the compilation procedure as a whole. The compilation, installation, configuration and all following tests were conducted on a Raspberry Pi model 4 on which runs a version of Slackware Linux for the ARM platform. TDE confirmed itself as the best graphical environment for architectures with limited resources. In conclusion, all that remains to do is to thank the TDE developers and contributors for the excellent work done and to invite you to visit the site again for updates and new articles.


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


External links






Languages: English - Italiano