Line 1: |
Line 1: |
− | Welcome to Simone Giustetti's wiki pages.
| + | {{header_en|title=Installing TDE 14.0.1 on SlackwareArm Linux 14.1| keyword={{Template:keyword_en_tde}}| description=Building, installing and configuring working TDE 14.0.1 packages on Slackware Linux 14.1 for the ARM architecture and the Raspberry Pi 2 | link_page=Trinity_desktop_environment_raspberry_pi_2}} |
− | | |
− | | |
− | Languages: '''English''' - [[Trinity_desktop_environment_raspberry_pi_2 |Italiano]]
| |
− | | |
− | ----
| |
| | | |
| The '''Raspberry Pi''' is a compact, credit card sized, cheap, priced around 35 Euros, computer aimed at '''teaching programming to a young audience'''. The first version was released the 29th February 2012 by the [https://www.raspberrypi.org Raspberry Pi foundation], that has been managing its development and updates to this day. In February 2015 the first model of the next generation Raspberry Pi was released: The '''Raspberry Pi 2'''. The new computer comes equipped with a Quad Core CPU, 900 MHz clock speed and 1 Gb of integrated RAM: a considerable computing power, thousand of times the specifics of servers I used to install not so many years ago. A fact proving how the Raspberry Pi is an ideal platform for large projects and that I'm growing really old >_< . | | The '''Raspberry Pi''' is a compact, credit card sized, cheap, priced around 35 Euros, computer aimed at '''teaching programming to a young audience'''. The first version was released the 29th February 2012 by the [https://www.raspberrypi.org Raspberry Pi foundation], that has been managing its development and updates to this day. In February 2015 the first model of the next generation Raspberry Pi was released: The '''Raspberry Pi 2'''. The new computer comes equipped with a Quad Core CPU, 900 MHz clock speed and 1 Gb of integrated RAM: a considerable computing power, thousand of times the specifics of servers I used to install not so many years ago. A fact proving how the Raspberry Pi is an ideal platform for large projects and that I'm growing really old >_< . |
Line 23: |
Line 18: |
| * USB mouse, USB keyboard, monitor, cables an everything else needed by the the Raspberry Pi to run. | | * USB mouse, USB keyboard, monitor, cables an everything else needed by the the Raspberry Pi to run. |
| | | |
− | === Configure the MicroSD card === | + | === Configure the MicroSD Card === |
− | '''Root''' privileges are needed to perform a successful installation. From now on, if not otherwise specified, assume to work as root user. | + | '''Root''' privileges are needed to perform a successful installation. From now on, if not otherwise specified, assume to work as user root. |
| | | |
| Connect the MicroSD card to the PC through the card reader. When correctly detected by the operating system the card will appear in the disk list returned by command '''fdisk''' like in the example below: | | Connect the MicroSD card to the PC through the card reader. When correctly detected by the operating system the card will appear in the disk list returned by command '''fdisk''' like in the example below: |
Line 35: |
Line 30: |
| Disk identifier: 0x00000000 | | Disk identifier: 0x00000000 |
| | | |
− | Device Boot Start End Blocks Id System
| + | Device Boot Start End Blocks Id System |
− | /dev/sdc1 8192 31116287 15554048 c W95 FAT32 (LBA) | + | /dev/sdc1 8192 31116287 15554048 c W95 FAT32 (LBA) |
| | | |
| Download the '''SlacwareArm''' installation image to a local directory: | | Download the '''SlacwareArm''' installation image to a local directory: |
Line 58: |
Line 53: |
| Disk identifier: 0x08dd8e65 | | Disk identifier: 0x08dd8e65 |
| | | |
− | Device Boot Start End Blocks Id System
| + | Device Boot Start End Blocks Id System |
− | /dev/sdc1 * 32 156287 78128 c W95 FAT32 (LBA) | + | /dev/sdc1 * 32 156287 78128 c W95 FAT32 (LBA) |
| | | |
| === Installation Packages === | | === Installation Packages === |
Line 67: |
Line 62: |
| We'll recur to the latter option. A list of download locations for the packages can be found [http://arm.slackware.com/getslack/ here]. Once downloaded, copy SlackwareARM packages on the USB stick. We'll connect it to the Raspberry Pi later on during the installation. | | We'll recur to the latter option. A list of download locations for the packages can be found [http://arm.slackware.com/getslack/ here]. Once downloaded, copy SlackwareARM packages on the USB stick. We'll connect it to the Raspberry Pi later on during the installation. |
| | | |
− | === Start the SlackwareARM installation === | + | === Start the SlackwareARM Installation === |
| To start the installation: | | To start the installation: |
| * Connect the MicroSD card in the Raspberry Pi integrated reader. | | * Connect the MicroSD card in the Raspberry Pi integrated reader. |
Line 77: |
Line 72: |
| If everything goes as planned the Raspberry Pi power red led will switch on briefly followed by the green one, connected to the MicroSD reader, the latter will then start blinking. On top of the monitor will appear a '''number of raspberries equal to the number of cores''' and somewhat lower the keyboard selection window will open. Were something not working: it could be a problem with the installation image that can be solved by overwriting the MicroSD card, or an issue with the card itself; then You should replace it and try with a new one. | | If everything goes as planned the Raspberry Pi power red led will switch on briefly followed by the green one, connected to the MicroSD reader, the latter will then start blinking. On top of the monitor will appear a '''number of raspberries equal to the number of cores''' and somewhat lower the keyboard selection window will open. Were something not working: it could be a problem with the installation image that can be solved by overwriting the MicroSD card, or an issue with the card itself; then You should replace it and try with a new one. |
| | | |
− | === Set Date and time === | + | === Set Date and Time === |
| The Raspberry Pi does not include a hardware clock: '''the system date resets to 1st January 1970 at every shutdown and the current date and time must be configured at each boot'''. The date and time set up must be performed during the installation too otherwise the program will refuse to install packages younger than the system thinking of a configuration error. To set date and time: | | The Raspberry Pi does not include a hardware clock: '''the system date resets to 1st January 1970 at every shutdown and the current date and time must be configured at each boot'''. The date and time set up must be performed during the installation too otherwise the program will refuse to install packages younger than the system thinking of a configuration error. To set date and time: |
| * Select a keyboard layout from the provided list. | | * Select a keyboard layout from the provided list. |
Line 146: |
Line 141: |
| | | |
| The new variable was added to the line of code invoking the '''make''' command, just after source code configuration: | | The new variable was added to the line of code invoking the '''make''' command, just after source code configuration: |
| + | <syntaxhighlight lang="bash"> |
| '''make''' VERBOSE=1 ${JOB_NUM} | | '''make''' VERBOSE=1 ${JOB_NUM} |
| + | </syntaxhighlight> |
| As a standard rule '''a concurrency level equal to 6''' was introduced in accordance to the old KDE 3 official Slackware build scripts. The added variable is assigned a null value inside scripts: the real assignment happens in the '''TDE.options''' file containing global build options for the whole environment. | | As a standard rule '''a concurrency level equal to 6''' was introduced in accordance to the old KDE 3 official Slackware build scripts. The added variable is assigned a null value inside scripts: the real assignment happens in the '''TDE.options''' file containing global build options for the whole environment. |
| + | <syntaxhighlight lang="bash"> |
| JOB_NUM=-j6 | | JOB_NUM=-j6 |
| + | </syntaxhighlight> |
| To set a greater or lesser value please modify the numeric value following the ''-j'' option. A value of ''-j1'' means using a single core '''disabling de facto concurrent building'''. | | To set a greater or lesser value please modify the numeric value following the ''-j'' option. A value of ''-j1'' means using a single core '''disabling de facto concurrent building'''. |
| | | |
| === Parallel Build Errors === | | === Parallel Build Errors === |
| Some users reported errors while building TDE packages with a parallelism level greater than 1. Many reports interest only 2 packages: '''tdebindings''' and '''tdemultimedia'''. Tests executed while writing this paper revealed no problem, anyway should issues arise it is possible to bypass them during build setting a concurrency level equal to one. This can be done updating the '''TDE.options''' file or the option file specific to any package: '''local.options'''. To build the '''tdebindings''' package without recurring to a parallel build for example You'll need to move in the root directory for the package, the one containing the source code and local.options file: /usr/src/trinity/base/tdebindings in our example. Then edit the '''local.options''' file with Your text editor of choice adding line: | | Some users reported errors while building TDE packages with a parallelism level greater than 1. Many reports interest only 2 packages: '''tdebindings''' and '''tdemultimedia'''. Tests executed while writing this paper revealed no problem, anyway should issues arise it is possible to bypass them during build setting a concurrency level equal to one. This can be done updating the '''TDE.options''' file or the option file specific to any package: '''local.options'''. To build the '''tdebindings''' package without recurring to a parallel build for example You'll need to move in the root directory for the package, the one containing the source code and local.options file: /usr/src/trinity/base/tdebindings in our example. Then edit the '''local.options''' file with Your text editor of choice adding line: |
| + | <syntaxhighlight lang="bash"> |
| JOB_NUM=-j1 | | JOB_NUM=-j1 |
| + | </syntaxhighlight> |
| Save the update and run the SlackBuild script available in the very same directory: | | Save the update and run the SlackBuild script available in the very same directory: |
| '''sh''' ./tdebindings.SlackBuild | | '''sh''' ./tdebindings.SlackBuild |
Line 166: |
Line 167: |
| ==== TDELIBS ==== | | ==== TDELIBS ==== |
| The first try at building a package for '''tdelibs''' resulted in a failure. The procedure exited with the following error: | | The first try at building a package for '''tdelibs''' resulted in a failure. The procedure exited with the following error: |
| + | <syntaxhighlight lang="cmake"> |
| [ 0%] Building C object dcop/KDE-ICE/CMakeFiles/kICE-static.dir/accept.c.o | | [ 0%] Building C object dcop/KDE-ICE/CMakeFiles/kICE-static.dir/accept.c.o |
| In file included from <command-line>:0:0: | | In file included from <command-line>:0:0: |
Line 175: |
Line 177: |
| make[1]: *** [dcop/KDE-ICE/CMakeFiles/kICE-static.dir/all] Error 2 | | make[1]: *** [dcop/KDE-ICE/CMakeFiles/kICE-static.dir/all] Error 2 |
| make: *** [all] Error 2 | | make: *** [all] Error 2 |
| + | </syntaxhighlight> |
| | | |
| Initially I thought of a problem introduced by the parallel build as release 14.0.0 of the package presents no such problem. A second try executed setting value '''-j1''' returned the same error. Parallel building was not originating the problem thus I checked for all prerequisites to be correctly installed and for the presence of a file named '''ntqglobal.h''' in the file system. The '''find''' command quickly confirmed the presence of the file: | | Initially I thought of a problem introduced by the parallel build as release 14.0.0 of the package presents no such problem. A second try executed setting value '''-j1''' returned the same error. Parallel building was not originating the problem thus I checked for all prerequisites to be correctly installed and for the presence of a file named '''ntqglobal.h''' in the file system. The '''find''' command quickly confirmed the presence of the file: |
Line 184: |
Line 187: |
| | | |
| The issue was solved '''adding a new path where to search for include files''' while building the source code. A couple of lines of code were added to to the build script: | | The issue was solved '''adding a new path where to search for include files''' while building the source code. A couple of lines of code were added to to the build script: |
| + | <syntaxhighlight lang="bash"> |
| # Add some include paths to the standard compiler flags otherwise the build | | # Add some include paths to the standard compiler flags otherwise the build |
| # process will fail with an error | | # process will fail with an error |
| SLKCFLAGS="${SLKCFLAGS} -I${PREFIX}/include" | | SLKCFLAGS="${SLKCFLAGS} -I${PREFIX}/include" |
| + | </syntaxhighlight> |
| Which concatenate '''/opt/trinity/include''' to the path list. The updated script works flawlessly. | | Which concatenate '''/opt/trinity/include''' to the path list. The updated script works flawlessly. |
| | | |
| ==== TDENETWORK ==== | | ==== TDENETWORK ==== |
| With package '''tdenetwork''' the problem did not arise soon, but later on after build: while copying files to the temporary installation directory. The specific error is: | | With package '''tdenetwork''' the problem did not arise soon, but later on after build: while copying files to the temporary installation directory. The specific error is: |
| + | <syntaxhighlight lang="cmake"> |
| [ 71%] Building CXX object krdc/vnc/CMakeFiles/vnc-static.dir/threads.cpp.o | | [ 71%] Building CXX object krdc/vnc/CMakeFiles/vnc-static.dir/threads.cpp.o |
| /tmp/build/tmp-tdenetwork/tdenetwork/krdc/vnc/threads.cpp: In function 'void output(const char*, ...)': | | /tmp/build/tmp-tdenetwork/tdenetwork/krdc/vnc/threads.cpp: In function 'void output(const char*, ...)': |
Line 199: |
Line 205: |
| make[1]: *** [krdc/vnc/CMakeFiles/vnc-static.dir/all] Error 2 | | make[1]: *** [krdc/vnc/CMakeFiles/vnc-static.dir/all] Error 2 |
| make: *** [all] Error 2 | | make: *** [all] Error 2 |
| + | </syntaxhighlight> |
| | | |
| Again my first check regarded the parallelism level set to 6 and again tests revealed the origin of the issue to be searched for somewhere else. Reading the documentation for the TQString and TQCString involved classes: | | Again my first check regarded the parallelism level set to 6 and again tests revealed the origin of the issue to be searched for somewhere else. Reading the documentation for the TQString and TQCString involved classes: |
Line 206: |
Line 213: |
| | | |
| To solve the problem once and for all a patch was introduced: | | To solve the problem once and for all a patch was introduced: |
| + | <syntaxhighlight lang="cpp"> |
| *** krdc/vnc/threads.cpp 2015-09-13 20:01:24.889992277 +0200 | | *** krdc/vnc/threads.cpp 2015-09-13 20:01:24.889992277 +0200 |
| --- krdc/vnc/threads.cpp 2015-09-13 19:59:20.899992324 +0200 | | --- krdc/vnc/threads.cpp 2015-09-13 19:59:20.899992324 +0200 |
Line 224: |
Line 232: |
| | | |
| va_end(args); | | va_end(args); |
− |
| + | </syntaxhighlight> |
| + | |
| Applied by the SlackBuild script through lines: | | Applied by the SlackBuild script through lines: |
| + | <syntaxhighlight lang="bash"> |
| # Patch the krdc/vncn/threads.cpp source file in order to solve an issue with the | | # Patch the krdc/vncn/threads.cpp source file in order to solve an issue with the |
| # output function. | | # output function. |
− | '''patch''' ''-p0 -i'' ${SRCDIR}/threads_sprintf.patch | + | patch -p0 -i ${SRCDIR}/threads_sprintf.patch |
| + | </syntaxhighlight> |
| | | |
| A couple of days later, while searching the Trinity project bug tracker, I stumbled in a bug report concerning the error above: [http://bugs.pearsoncomputing.net/show_bug.cgi?id=2525 BUG 2525]. The patch was suggested as a potential solution to the problem. | | A couple of days later, while searching the Trinity project bug tracker, I stumbled in a bug report concerning the error above: [http://bugs.pearsoncomputing.net/show_bug.cgi?id=2525 BUG 2525]. The patch was suggested as a potential solution to the problem. |
Line 236: |
Line 247: |
| # Wait for an updated archive of the tdenetwork source code. | | # Wait for an updated archive of the tdenetwork source code. |
| Either way applying the patch will probably result in an error with correct code so You need to '''comment out the lines of code added to the SlackBuild script'''. | | Either way applying the patch will probably result in an error with correct code so You need to '''comment out the lines of code added to the SlackBuild script'''. |
| + | |
| + | <font color="red">'''Update'''</font>: Updated archives for the 14.0.1 release source code were released in early October. The patch included along the '''tdenetwork''' package build script is no longer needed. The build tree was updated commenting out the lines of code invoking the patch command. Please be sure to have the latest available source archives when running the build procedure. |
| | | |
| | | |
| No update was needed by any other package included in the base, library and prerequisite TDE group. | | No update was needed by any other package included in the base, library and prerequisite TDE group. |
− |
| |
| | | |
| === Tie Everything Together === | | === Tie Everything Together === |
− | To easily build TDE I wrote a '''main script: TDE.SlackBuild''' meant to drive the whole procedure building the single packages in the correct, documentation suggested order. A copy of the script and the whole build tree can be downloaded as a compressed archive [http://www.giustetti.net/resource/slackbuild/tde/1401/tde_build_tree_sg-14.0.1.tar.bz2 here]. Download the build tree and the source code for the TDE project in a local directory like '''/tmp''' then follow the steps listed below: | + | To easily build TDE I wrote a '''main script: TDE.SlackBuild''' meant to drive the whole procedure building the single packages in the correct, documentation suggested order. A copy of the script and the whole build tree can be downloaded as a compressed archive [http://www.giustetti.net/resource/slackbuild/tde/1401/tde_build_tree_sg-14.0.1-2.tar.bz2 here]. Download the build tree and the source code for the TDE project in a local directory like '''/tmp''' then follow the steps listed below: |
| * Create directory '''/usr/src/trinity''': | | * Create directory '''/usr/src/trinity''': |
| : '''mkdir''' /usr/src/trinity | | : '''mkdir''' /usr/src/trinity |
| * Copy the build tree archive in the new directory | | * Copy the build tree archive in the new directory |
− | : '''cp''' /tmp/tde_build_tree_sg-14.0.1.tar.bz2 /usr/src/trinity | + | : '''cp''' /tmp/tde_build_tree_sg-14.0.1-2.tar.bz2 /usr/src/trinity |
| * Move to directory /usr/src/trinity | | * Move to directory /usr/src/trinity |
| : '''cd''' /usr/src/trinity | | : '''cd''' /usr/src/trinity |
| * Extract the archive using the '''tar''' command: | | * Extract the archive using the '''tar''' command: |
− | : '''tar''' ''-jxf'' tde_build_tree_sg-14.0.1.tar.bz2 | + | : '''tar''' ''-jxf'' tde_build_tree_sg-14.0.1-2.tar.bz2 |
| The /usr/src/trinity directory will be populated with files and sub-directories | | The /usr/src/trinity directory will be populated with files and sub-directories |
| '''ls''' ''-la'' | | '''ls''' ''-la'' |
Line 264: |
Line 276: |
| | | |
| * Distribute the source file archives among the sub-directories in '''base''', '''library''' and '''prerequisite'''. The '''TDE.options''' file, a synthesis follows, includes build options for the whole environment: | | * Distribute the source file archives among the sub-directories in '''base''', '''library''' and '''prerequisite'''. The '''TDE.options''' file, a synthesis follows, includes build options for the whole environment: |
| + | <syntaxhighlight lang="bash"> |
| # Global options used to build TDE. | | # Global options used to build TDE. |
| # | | # |
Line 279: |
Line 292: |
| TAG="sg" | | TAG="sg" |
| TAR_OPTION="-xjvf" | | TAR_OPTION="-xjvf" |
| + | </syntaxhighlight> |
| | | |
| * Open the options file with a text editor of choice and set the desired values for the variables therein. A minimum number of variables should be assigned a value fitting the target architecture and personal preferences: | | * Open the options file with a text editor of choice and set the desired values for the variables therein. A minimum number of variables should be assigned a value fitting the target architecture and personal preferences: |
Line 295: |
Line 309: |
| | | |
| The '''tde-i18n''' package, containing localizations for each TDE supported language, needs special mentioning. The main script contains the lines of code needed to build packages, but the procedure is a time consuming one thus the '''lines were commented out''' and localization packages are ignored. To build the localization packages the TDE.SlackBuild script should be modified removing the comment from line: | | The '''tde-i18n''' package, containing localizations for each TDE supported language, needs special mentioning. The main script contains the lines of code needed to build packages, but the procedure is a time consuming one thus the '''lines were commented out''' and localization packages are ignored. To build the localization packages the TDE.SlackBuild script should be modified removing the comment from line: |
| + | <syntaxhighlight lang="bash"> |
| # bash ./${PKG}.SlackBuild | | # bash ./${PKG}.SlackBuild |
| + | </syntaxhighlight> |
| changing it to | | changing it to |
| + | <syntaxhighlight lang="bash"> |
| bash ./${PKG}.SlackBuild | | bash ./${PKG}.SlackBuild |
| + | </syntaxhighlight> |
| | | |
| === Build time === | | === Build time === |
Line 305: |
Line 323: |
| == Conclusions == | | == Conclusions == |
| | | |
− | This paper described how to install SlackwareARM then Trinity Desktop Environment on a Raspberry Pi model2. The whole experience turned out to be rather easy and straightforward providing the Raspberry Pi with a full, light and feature rich desktop environment. Some images depicting the running desktop are available below. | + | This paper described how to install SlackwareARM then Trinity Desktop Environment on a Raspberry Pi model 2. The whole experience turned out to be rather easy and straightforward providing the Raspberry Pi with a full, light and feature rich desktop environment. Some images depicting the running desktop are available below. |
| | | |
| [[File:desktop_clean.jpeg]] | | [[File:desktop_clean.jpeg]] |
Line 340: |
Line 358: |
| ---- | | ---- |
| | | |
− | Languages: '''English''' - [[Trinity_desktop_environment_raspberry_pi_2 |Italiano]]
| + | {{footer_en | link_page=Trinity_desktop_environment_raspberry_pi_2}} |