Monday, December 1, 2008

KDE 4.1.3 na OpenSolarisu

OpenSolaris se poslední dobou hodně zlepšil, při instalaci už přestal ignorovat cizí oddíly a bez keců do grubu přidal položku Windows. Snad brzo dojde i na Linux a ostatní. Ve 2008.11 RC2 je skoro všechno co potřebuju, ale co mu chybí je KDE. Balíčky KDE3 se sice dají stáhnout z Blastwave, ale protože je to už mrtvý projekt, nemá cenu se tím zabývat. KDE4 se musí ručně zkompilovat. Když už zjistíte jak na to, není to nic těžkého:



Překladač:



To je asi nejbolavější místo. Použití gcc nebo Sun Studio Express (který je v opensolarisích repozitářích) vede k bizarním chybám, které ale lidi z kde-solaris projektu nezajímají, protože používají Sun Studio 12. Kdo chce s vlky býti ..., takže je nutno sehnat SS12. Aby to nebylo tak jednoduché, je bezpodmínečně nutné použít SS12 se všemi dostupnými patchi. Já jsem to vyřešil tak, že jsem si ve VirtualBoxu nainstaloval Solaris 10 10/08 a v něm potom Sun Studio 12 (pozor, je nutné použít "Download Package Installer", aby šly aplikovat patche).


Zazáplatování překladače:


Menu - Applications - Utilities - Update Manager
Je k tomu potřeba použít jméno a heslo - stačí to co bylo použito ke stažení Solarisu nebo SS.
Pak zmáčknout na Check for Updates a jít se projít.
Potom vybrat aktualizace a zmáčknout Install Updates a jít se projít.
(já jsem pro sichr zaktualizoval úplně všechno, takže jsem se šel projít dvakrát)


(dobrá sranda je, že okno pro registraci Update Managera se v rozlišení 1024x768 nevejde na obrazovku :-) Dá se to obejít tak, že si spodní panel přesunete na levou hranu obrazovky)



Jakmile bylo všechno hotovo, zataroval jsem celý adresář /opt/SUNWspro, přenesl jej do OpenSolarisu a tam zase rozbalil.





Dále uvedený postup je v podstatě uveden na stránce KDE on Solaris, kde by měly být vždycky uvedeny aktuální informace.



Nejprve stažení Common Build Environment, což je sada nástrojů, používaných při kompilaci GNOME a podobných molochů:


cd ~ ; mkdir CBE1.7 ; cd CBE1.7
wget http://dlc.sun.com/osol/jds/downloads/cbe/test/desktop-cbe-1.7.0-rc1-x86.tar.bz2
tar xjf desktop-cbe-1.7.0-rc1-x86.tar.bz2
desktop-cbe-1.7.0-rc1/cbe-install

Na všechny otázky by měla stačit výchozí odpověď.

Potom je potřeba nainstalovat pár balíčků, které jsou při překladu nezbytné a bez nich to vyhučí s (často) poměrně záhadnými hláškami:


pkg install SUNWarc (kvůli podpoře -xc99=lib)

pkg install SUNWj6dev (kvůli FOSSberkeley-db)

pkg install SUNWgnome-common-devel (kvůli pkg-config)

pkg install SUNWcups (FOSScups se mi prostě nedařilo přeložit)

pkg install SUNWmercurial (abych mohl stáhnout zdrojáky)

pkg install SUNWperl-xml-parser (kvůli FOSSsharedmimeinfo)


Pro překlad FOSSnas je díky chybě potřeba workaround:

/usr/sfw/bin/wget http://xorg.freedesktop.org/archive/individual/util/xorg-cf-files-1.0.2.tar.bz2
/usr/bin/bunzip2 -cd xorg-cf-files-1.0.2.tar.bz2 | tar -xvf -
cd xorg-cf-files-1.0.2
pfexec cp X11.rules /usr/X11/lib/X11/config/
pfexec cp X11.tmpl /usr/X11/lib/X11/config/
pfexec cp xorg.cf /usr/X11/lib/X11/config/
pfexec cp xorgsite.def /usr/X11/lib/X11/config/
pfexec cp xorgversion.def /usr/X11/lib/X11/config/
pfexec cp xf86.rules /usr/X11/lib/X11/config/
pfexec cp xfree86.cf /usr/X11/lib/X11/config/
pfexec touch /usr/X11/lib/X11/config/date.def
pfexec touch /usr/X11/lib/X11/config/host.def
pfexec cp Imake.tmpl /usr/X11/lib/X11/config/



Na PC s 1.5GB RAM a 512 MB swapu mi překlad některých balíčků vyhučel na nedostatku místa, takže jsem musel přidat swap. Na zfs se nedá použít swap do souboru, je potřeba změnit velikost svazku:

swap -d /dev/zvol/dsk/rpool/swap
zfs set volsize=2G rpool/swap
swap -a /dev/zvol/dsk/rpool/swap

(originál návod zde)


Stažení spec souborů KDE4:

cd ~ ; mkdir KDE4.X.x ; cd KDE4.X.x/
hg clone https://solaris.bionicmutton.org/hg/kde4-specs-dev
cd kde4-specs-dev/specs

A sestavení:
. /opt/dtbld/bin/env.sh
make


Přidání KDE do menu gdm:


Je třeba vytvořit soubor /usr/share/xsessions/kde.desktop, s následujícím obsahem:
[Desktop Entry]
Encoding=UTF-8
Name=KDE
Comment[en]=This session logs you into KDE
Exec=/opt/kde-4.1/bin/startkde
Icon=
Type=Application

KDE 4.1.3 na OpenSolarisu, obrázek 0

Následující problémy budou doufám brzo opraveny:



FOSSlibcdiowo a FOSSlibcdio selžou, v logu se objeví " ube: error: Illegal option to UBE: zla "
Řešením je ručně upravit configure.sh v ~/packages/SOURCES/Solaris-LIBCDIOWO-0.78.2.tar.gz a ~/packages/SOURCES/Solaris-LIBCDIO-0.78.2.tar.gz a odstranit nepodporovanou volbu zla (zero length arrays):

--- Solaris.orig/configure.sh 2008-11-29 10:41:16.819618183 +0100
+++ Solaris/configure.sh 2008-11-29 12:17:22.334741748 +0100
@@ -12,11 +12,6 @@
export CFLAGS="-xc99=%all ${CFLAGS}"
fi
-good_cflags=`echo ${CFLAGS} | grep -- "-Wu,-zla"`
-if [ "x${good_cflags}" = "x" ] ; then
-    export CFLAGS="${CFLAGS} -Wu,-zla"
-fi
-
good_cflags=`echo ${CFLAGS} | grep -- "-Xc"`
if [ "x${good_cflags}" != "x" ] ; then
export CFLAGS=`echo ${CFLAGS} | sed -e "s/-Xc//g"`



FOSSxine-lib selže, v logu se objeví pkgbuild: "pp.c", line 26: error: cannot find include file: <postproc/postproces
s.h>
.
Je nutno upravit planar.61.diff z ~/packages/SOURCES/Solaris-XINE-LIB-1.1.10.tar.gz, aby vypadal takto:

Index: src/post/planar/pp.c
===================================================================
--- old/src/post/planar/pp.c    (revision 2848)
+++ new/src/post/planar/pp.c    (working copy)
@@ -23,7 +23,7 @@
#include "xine_internal.h"
#include "post.h"
#include "xineutils.h"
-#include "postprocess.h"
+#include <ffmpeg/postproc/postprocess.h>
#include <pthread.h>
#define PP_STRING_SIZE 256 /* size of pp mode string (including all options) */

FOSSxine-lib selže i poté, ale trochu jinak. Tentokrát je v logu
pkgbuild: pkgbuild: File not found by glob: /var/tmp/pkgbuild-kdebuild/FOSSxine-lib-1.1.10-build/opt/foss/lib/xine/plugins/1.1.10/xineplug_vo_out_pgx32.so
pkgbuild: pkgbuild: File not found by glob: /var/tmp/pkgbuild-kdebuild/FOSSxine-lib-1.1.10-build/opt/foss/lib/xine/plugins/1.1.10/xineplug_vo_out_pgx64.so

PGX32 a PGX64 by měly být prehistorické grafické karty od Sunu, takže jsem dlouho nezkoumal, kde je problém a rovnou jsem ze souboru FOSSxine-libs.spec smazal řádky
%{_libdir}/xine/plugins/1.1.10/xineplug_vo_out_pgx32.so
%{_libdir}/xine/plugins/1.1.10/xineplug_vo_out_pgx64.so



FOSSboost selže, protože balíček s patchi pro solaris se jmenuje jinak než balíček se zdrojáky. Je potřeba jej přejmenovat:

wget http://solaris.bionicmutton.org/SRC/Solaris-BOOST-1.36.0.tar.gz -O ~/packages/SOURCES/Solaris-BOOST-1_36_0.tar.gz