Projects/KDE on Solaris/Status: Difference between revisions

    From KDE TechBase
    (KDEkonversation notes)
    m (Text replace - "</code>" to "</syntaxhighlight>")
     
    (4 intermediate revisions by 2 users not shown)
    Line 4: Line 4:


    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.  
    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 ==
    [http://techbase.kde.org/Projects/KDE_on_Solaris/FOSS_specfiles 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  ==
    == Dependencies TO-DO List  ==
    Line 21: Line 25:
    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.  
    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.  
    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)  
    *expat-2.0.1 (upgraded from 2.0.0)  
    Line 63: Line 67:
    **mit-kerberos (temp), cyrus-sasl (temp), openldap (temp), mit-kerberos5 (real), cyrus-sasl (real), openldap (real)  
    **mit-kerberos (temp), cyrus-sasl (temp), openldap (temp), mit-kerberos5 (real), cyrus-sasl (real), openldap (real)  
    *a52dec-0.7.4  
    *a52dec-0.7.4  
    *amrnb-26104-610, amrwb-26204-700  
    *amrnb-26104-610, amrwb-26204-700
    *audiofile-0.2.6 (added extra patches from the F12 repo)  
    *audiofile-0.2.6 (added extra patches from the F12 repo)  
    *sdl-1.2.11  
    *sdl-1.2.11  
    Line 90: Line 94:
    *imlib2-1.4.0  
    *imlib2-1.4.0  
    *cups-1.4.2 (upgrade from 1.1.12)  
    *cups-1.4.2 (upgrade from 1.1.12)  
    *boost-1.36  
    *boost-1.42 (upgrade from boost-1.36, thanks Mark)
    *qt-4.6.1 (automoc issue tracked down to issues with iconv, for now no gnu iconv)
    *qt-4.6.2 (automoc issue tracked down to issues with iconv, for now no gnu iconv)
    *libgphoto-2.4.2  
    *libgphoto-2.4.2  
    *sane-backends-1.0.20  
    *sane-backends-1.0.20  
    *libexif-0.6.19
    *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
    <br>
    == KDE-4.4.1 Module Changes  ==
    *KDEgraphics - add support for S10 ghostscript and libspectre


    <br>  
    <br>  
    Line 138: Line 172:
    *start konsole  
    *start konsole  
    *start a new tab for convenience  
    *start a new tab for convenience  
    *<code>cd /tmp</code><code>/usr/ucb/echo -n "#include <math.h>" > t.c</code><code>cc t.c</code>  
    *<syntaxhighlight lang="text">cd /tmp</syntaxhighlight><syntaxhighlight lang="text">/usr/ucb/echo -n "#include <math.h>" > t.c</syntaxhighlight><syntaxhighlight lang="text">cc t.c</syntaxhighlight>  
    *notice how the shell prompt does not come back after the warnings printed by the C compiler  
    *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
    *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.
    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.

    Latest revision as of 20:57, 29 June 2011

    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.