Projects/KDE on Solaris/Status

From KDE TechBase

This page lists the status of KDE4 on Solaris; for KDE on Solaris instructions on getting KDE4 on Solaris see the other Techbase page.

Philosophy

While Solaris 10 is getting a bit dated, there is one nice thing about building current software on it. Almost nothing conflicts. If it does, then it's something that's done once, and it doesn't pop up again. Unlike SXCE/Nevada/OSOL, where the list of dependencies is changing bi-weekly. I find that just too annoying for words. Another reason, is that for the most part, stuff from Sun's JDS project or the Spec Files Extra project can be prototyped in very quickly, so the benefit of the initial port work is already done. Solaris 10U8 has 64-bit libraries for libssl and libcrypto, which has been a bit of a blocker, and with the addition of a 64-bit libusb library, there shouldn't be much that can't be built.

Spec files, and WTF is a DUDE tarball

Spec files are the mechanism that drives building one of the component software packages. In there, a discussion is made that examines how the former model of an all-inclusive secret handshake DUDE tarball can be decomposed to the really important pieces which are the patches, configuration, build and install instructions. For packages without DUDE tarballs, there's enough there to get you started. We can rely on the internet to download current and possibly obsolete sources to build a package. What this really means is that while you are starting out, you don't have to download 7GB of stuff just to get started. You get mercurial, a checkout of the spec files, tweak some stuff on your Solaris system with Studio 12.2 compiler and start building. Having a decent internet connection is probably a good thing, and if not, figure out a way to get stdcxx, current qt source (4.7.1 now), and a few others to your SOURCES directory. Overnight downloads or a USB Key/USB Disk at work to transport home always can make a slow internet connection less *painful*.

Dependencies TO-DO List

Due to a year of neglect, there are some new dependencies that are going to need to be done for Solaris 10. In the short term, we are going to use mysql-5.1 from webstack, until we decide whether we back port the mysql-5.1.37 which is in the opensolaris SFW tree. We are using this version because the 4.x version in Solaris is old, and only has the 32-bit libraries.

Ruby18 is also part of Webstack, so we'll use that until we decide that we'll backport the ruby18 that is also in the opensolaris SFW tree.


Dependencies

The following list is the growing set of dependencies that is being migrated from the old DUDE tarball structure, to complete spec files. Any upgraded spec files can be easily recompiled to the original by just changing the Version or src_ver variable. This is done to retain compatibility with the original 4.1.4 release that was done.

There are several sets of modules which require a circular dependency build to effect all the functionality. gettext requires libiconv, but libiconv requires gettext. So we build gettext, then libiconv, then remove gettext and rebuild it again with libiconv support, then rebuild libiconv support with the real gettext support. Why do we do this? Cause a really smart and dedicated guy figured out the dependencies to make them work the way they were really intended to work. Just slogging some code together eventually results in someone having to figure out why something breaks.

  • expat-2.0.1 (upgraded from 2.0.0)
  • lcms-1.18a (upgraded from 1.17)
  • libmng-1.0.10
  • gettext-0.17, libiconv-1.11
    • gettextwo (temp), libiconvwo (temp), gettext (real), libiconv (real)
  • stdcxx-4.2.1 (Dude svn co r.3072, change -lstdcxx to -lstdcxx4)
  • ncurses-5.7 (upgrade from ncurses-5.6 ,working with updated stdcxx4, 1/16/2010)
  • freetype2-2.3.9 (upgraded from 2.3.6)
  • fontconfig-2.5.0 (upgrade to 2.7.0 caused build failures in KDEedu, so reverted, 1/15/2010)
  • popt-1.15 (upgraded from 1.7)
  • pkg-config-0.23 (new, to support glib2/gstreamer >= 0.10.22)
  • libcddb 1.3.2(new, to support libcdio and vddimager, and others)
  • libcdio 0.82 (upgraded from 0.78.2)
  • vcdimager-0.7.23
    • libcddbwo (temp), libcdiowo (temp), vcdimagerwo (temp), libcdio, vcdimager, libcddb (depends on libcdio...)
  • pcre-7.4
  • readline-5.2
  • sqlite-3.6.20 (upgraded from 3.3.8)
  • glib2-2.22.3 (Thanks MarkW, upgraded from 2.14.6 and 2.12.12)
  • libdvdcss-1.2.10 (upgraded from 1.2.9)
  • libdvdread-4.1.3 (upgrade from 0.9.4)
  • libdvdplay-1.0.1
  • libdvdnav-4.1.3 (upgrade from 0.1.10)
  • gstreamer-0.10.22 (upgrade from 0.10.17)
  • libogg-1.1.4 (upgrade from 1.1.3)
  • dbus-1.1.20
  • libgcrypt-1.4.0
  • lzo-2.02
  • libtasn1-1.2
  • libgpg-error-1.7 (upgrade from 1.5)
  • opencdk-2.3.2
  • libfstyp-1.0 (backport from opensolaris)
  • endian-1.0 (port of glibc endian.h portability macros)
  • texinfo-4.2
  • gnutls-1.4.5
  • tcpwrappers-7.6-IPV6.4
  • gnupth-2.0.7
  • mit-kerberos5-1.6.3, cyrus-sasl-2.1.21, openldap-2.3.2
    • mit-kerberos (temp), cyrus-sasl (temp), openldap (temp), mit-kerberos5 (real), cyrus-sasl (real), openldap (real)
  • a52dec-0.7.4
  • amrnb-26104-610, amrwb-26204-700
  • audiofile-0.2.6 (added extra patches from the F12 repo)
  • sdl-1.2.11
  • libsndfile-1.0.17
  • faac-1.25
  • faad-2.6.1
  • nas-1.9.1
  • flac-1.1.2
  • libtheora-1.0
  • fftw-3.1.2
  • libassuan-1.0.4
  • curl-7.15.5
  • speex-1.1.2
  • lidmad-0.15.1b
  • libidn-0.6.8
  • esound-0.2.38
  • libvorbis-1.1.2
  • capseo-0.3.0-158
  • dbus-glib-0.74
  • net-snmp-4.5.1
  • libraw1394-1.2.0
  • capseo-0.3.0-158
  • libcaptury-0.3.0-158
  • libdv-1.0
  • chlib-0.39
  • imlib2-1.4.0
  • cups-1.4.2 (upgrade from 1.1.12)
  • boost-1.42 (upgrade from boost-1.36, thanks Mark)
  • qt-4.6.2 (automoc issue tracked down to issues with iconv, for now no gnu iconv)
  • libgphoto-2.4.2
  • sane-backends-1.0.20
  • libexif-0.6.19
  • pycups-1.9.48 (port from sfw, use webstack python2.6)
  • virtuoso-0.6.1 (thanks Jan)
  • intltool-0.4.6 (new, ideas from sfw)
  • pyxml-0.8.4
  • cairo-1.8.8 (new, port from sfw, thanks Mark)
  • pango-1.26.1 (new, port from sfw, thanks Mark)
  • atk-1.28 (new, port from sfw, thanks Mark)
  • gtk2-2.18.5 (new, port from sfw, thanks Mark)
  • ghostscript-8.64 (new, port from sfw, thanks Mark)
  • libspectre-0.2.4 (new, port from sfw, thanks Mark)

Upcoming:

  • libglade
  • pygtk
  • PyQT
  • PyKDE
  • system-config-printer

TODO: Upgrade gstreamer, gst-plugins-{base,good,bad,ffmpeg,etc) Upgrade hal and dbus to current JDS levels

Port (not necessary, but should remove an external dependency): mysql5.1, ruby18, Apache Portable Runtime and Python2.6 to remove dependency from webstack


KDE-4.4.1 Module Changes

  • KDEgraphics - add support for S10 ghostscript and libspectre


KDE-4.4.0 Module Changes

  • KDEwebdev - Added support for libtidy from Webstack 1.5
  • KDEbase-workspace - Modified startkde patch to include Webstack paths for S10
  • KDEmultimedia-kmix - Add 4Front's OpenSound System package as a dependency
  • KDEbindings - Added Webstack 1.5's ruby 1.8 to the path
  • KDEsdk - Added Webstack's 1.5 apache22 bin to the path for Apache Portable Runtime support
  • KDEplasma-addons - Add Webstack's 1.5 python2.6 to the path
  • KDEwebdev - Adjust packages for S10 since ruby 1.8 is in /opt/webstack
  • KDEwebdev - Added Webstack 1.5's ruby 1.8 to the path
  • KDEkonversation - Make sure to use S10's FOSSgettext tools instead of native.


Informational

  • If the system locale is C, then every Qt application will spit out an iconv warning on startup; this is annoying but harmless. Setting LANG to something else (e.g. LANG=646, even) will help. Long term solution: add encoding or system workaround.

Showstoppers

The intention of this showstopper list is to provide more detail and context for what we consider showstoppers for getting KDE4 on Solaris shipped. It doesn't correspond to the Release Team's list, at least not until we get a lot more Solaris mindshare. Each showstopper should have a name, a KDE Bugzilla entry and a long(er) description.

Konsole

no bugs.kde.org entry yet

In a konsole tab, you can break the link between the shell / session / tab output and konsole itself, so that nothing gets printed anymore. To reproduce this problem, you need to either hit ^C at an inopportune time (there's plenty of that) or produce an unusual output pattern. Here's a long-winded way of looking at the ^C issue:

  • start konsole
  • start a new tab for convenience
  • check that the shell is working, for instance by running ls
  • tail -f /var/log/messages
  • hit ^C; notice that tail is interrupted and the shell returns
  • ls again, to see the shell still works
  • at the shell prompt itself, hit ^C; you would expect a new shell prompt to be printed, but it is not
  • type "date > /tmp/foo ; exit" and it enter (without the quotes)
  • notice that /tmp/foo now exists with the right time and that the shell / session / tab closes

Here is a way of breaking the link without ^C but by producing a not-very-special output pattern. You need to have the C compiler installed:

  • start konsole
  • start a new tab for convenience
  • cd /tmp
    
    /usr/ucb/echo -n "#include <math.h>" > t.c
    
    cc t.c
    
  • notice how the shell prompt does not come back after the warnings printed by the C compiler
  • type exit to close the shell / session / tab

You cannot keep typing indefinitely in a session that is not reading output; it seems like eventually the output from the shell hangs as well. Also, you can hang konsole completely by doing this.