# [Solved]Rainlendar -> ebuild

## Ampheus

In der neuen version ist der Rainlendar nun endlich auch für Linux verfügbar. Ich wollte mich eigentlich schon daran machen, ein ebuild zu schreiben, aber ich habe ihn bisher nicht zum Laufen bekommen. Das Problem dabei ist, er braucht libexpat.so.0 und libexpat.so.1. Dadurch konnte ich ihn bisher nicht starten, da er immer mit dieser Fehlermeldung abgebrochen ist.

Ein Bekannter von mit verwendet allerdings Kubuntu und bei ihm funktioniert dasselbe package. Hat jemand eine Idee, wie man das Problem lösen könnte?Last edited by Ampheus on Tue Nov 07, 2006 8:20 pm; edited 2 times in total

----------

## ConiKost

```

emerge expat

```

Hilft das?

----------

## Finswimmer

Sicher, dass er beide Dateien braucht?

Könnte schwer werden, denn dann bräuchtest du expat 2.0 und 1.95.8. Das geht aber gleichzeitig nicht.

Tobi

----------

## Ampheus

Das war mir auch schon aufgefallen, dass er beide bräuchte. Habe auch schon versuchsweise die 2.0 installiert, aber dann wollte er die alte haben.

----------

## Mr.Big

ein

```
ln -s /usr/lib/libexpat.so.0.5.0 /usr/lib/libexpat.so.1
```

 könnte eventuell helfen

----------

## Ampheus

Dabei bekam ich eine Fehlermeldung, dass etwas mit xinerama nicht geladen werden konnte. Das liegt meiner Meinung nach daran, dass es eine binary ist und es keinen Quelltext gibt, den ich selbst kompilieren könnte. Ich habe auch schon versucht, die lib vond er Kubuntu Installation zu nehmen. Das hat auch nicht weitergeholfen.

----------

## Mr.Big

was sagt denn ein "ldd" auf das binary?

----------

## Ampheus

```
amp@gentoo ~/rainlendar2 $ ldd rainlendar2

        linux-gate.so.1 =>  (0xffffe000)

        libgtk-x11-2.0.so.0 => /usr/lib/libgtk-x11-2.0.so.0 (0xb7c70000)

        libgdk-x11-2.0.so.0 => /usr/lib/libgdk-x11-2.0.so.0 (0xb7bf2000)

        libatk-1.0.so.0 => /usr/lib/libatk-1.0.so.0 (0xb7bd9000)

        libgdk_pixbuf-2.0.so.0 => /usr/lib/libgdk_pixbuf-2.0.so.0 (0xb7bc3000)

        libpangoxft-1.0.so.0 => /usr/lib/libpangoxft-1.0.so.0 (0xb7bbb000)

        libpangox-1.0.so.0 => /usr/lib/libpangox-1.0.so.0 (0xb7baf000)

        libpango-1.0.so.0 => /usr/lib/libpango-1.0.so.0 (0xb7b74000)

        libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0xb7b38000)

        libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0xb7b35000)

        libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0xb7b31000)

        libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0xb7a9c000)

        libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb7a7e000)

        libz.so.1 => /lib/libz.so.1 (0xb7a6a000)

        libdl.so.2 => /lib/libdl.so.2 (0xb7a66000)

        libstdc++.so.5 => /usr/lib/libstdc++-v3/libstdc++.so.5 (0xb79ad000)

        libm.so.6 => /lib/libm.so.6 (0xb7988000)

        libgcc_s.so.1 => /usr/lib/gcc/i686-pc-linux-gnu/4.1.1/libgcc_s.so.1 (0xb797c000)

        libpthread.so.0 => /lib/libpthread.so.0 (0xb7969000)

        libc.so.6 => /lib/libc.so.6 (0xb784b000)

        libX11.so.6 => /usr/lib/libX11.so.6 (0xb774f000)

        libXext.so.6 => /usr/lib/libXext.so.6 (0xb773f000)

        libpangocairo-1.0.so.0 => /usr/lib/libpangocairo-1.0.so.0 (0xb7737000)

        libcairo.so.2 => /usr/lib/libcairo.so.2 (0xb76df000)

        libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0xb765f000)

        libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0xb762b000)

        libexpat.so.0 => /usr/lib/libexpat.so.0 (0xb7602000)

        libXrender.so.1 => /usr/lib/libXrender.so.1 (0xb75fa000)

        libXi.so.6 => /usr/lib/libXi.so.6 (0xb75f2000)

        libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0xb75ed000)

        libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0xb75e3000)

        libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0xb75de000)

        libpangoft2-1.0.so.0 => /usr/lib/libpangoft2-1.0.so.0 (0xb75b6000)

        libXft.so.2 => /usr/lib/libXft.so.2 (0xb75a1000)

        /lib/ld-linux.so.2 (0xb7f58000)

        libXau.so.6 => /usr/lib/libXau.so.6 (0xb759d000)

        libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xb7598000)

        libpng12.so.0 => /usr/lib/libpng12.so.0 (0xb7573000)

        libglitz.so.1 => /usr/lib/libglitz.so.1 (0xb7551000)
```

----------

## Mr.Big

 *Ampheus wrote:*   

> Dabei bekam ich eine Fehlermeldung, dass etwas mit xinerama nicht geladen werden konnte. 

 

poste mal den genauen Fehler!?

und mal die ausgabe von "emerge info"

----------

## Ampheus

Fehlermeldung:

```
amp@gentoo ~/rainlendar2 $ ./rainlendar2

./rainlendar2: symbol lookup error: ./rainlendar2: undefined symbol: XineramaIsActive
```

emerge --info:

```
gentoo linux # emerge --info

Portage 2.1.1-r1 (default-linux/x86/2006.1/desktop, gcc-4.1.1, glibc-2.4-r3, 2.6.18-gentoo-r1 i686)

=================================================================

System uname: 2.6.18-gentoo-r1 i686 Intel(R) Pentium(R) M processor 1.60GHz

Gentoo Base System version 1.12.5

Last Sync: Tue, 07 Nov 2006 10:30:01 +0000

app-admin/eselect-compiler: [Not Present]

dev-java/java-config: [Not Present]

dev-lang/python:     2.4.3-r4

dev-python/pycrypto: 2.0.1-r5

dev-util/ccache:     [Not Present]

dev-util/confcache:  [Not Present]

sys-apps/sandbox:    1.2.17

sys-devel/autoconf:  2.13, 2.60

sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2

sys-devel/binutils:  2.16.1-r3

sys-devel/gcc-config: 1.3.13-r4

sys-devel/libtool:   1.5.22

virtual/os-headers:  2.6.17-r1

ACCEPT_KEYWORDS="x86"

AUTOCLEAN="yes"

CBUILD="i686-pc-linux-gnu"

CFLAGS="-O3 -march=pentium-m -pipe -fomit-frame-pointer"

CHOST="i686-pc-linux-gnu"

CONFIG_PROTECT="/etc /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/X11/xkb /usr/share/config"

CONFIG_PROTECT_MASK="/etc/env.d /etc/gconf /etc/init.d /etc/revdep-rebuild /etc/terminfo"

CXXFLAGS="-O3 -march=pentium-m -pipe -fomit-frame-pointer"

DISTDIR="/usr/portage/distfiles"

FEATURES="autoconfig candy distlocks metadata-transfer parallel-fetch sandbox sfperms strict"

GENTOO_MIRRORS="ftp://ftp.uni-muenster.de/pub/linux/distributions/gentoo"

LINGUAS="de"

MAKEOPTS="-j2"

PKGDIR="/usr/portage/packages"

PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --delete-after --stats --timeout=180 --exclude='/distfiles' --exclude='/local' --exclude='/packages'"

PORTAGE_TMPDIR="/var/tmp"

PORTDIR="/usr/portage"

PORTDIR_OVERLAY="/usr/local/overlays/personal"

SYNC="rsync://rsync.gentoo.org/gentoo-portage"

USE="x86 3dnow 3dnowext X a52 aac acpi aiglx alsa apache2 berkdb bitmap-fonts bzip2 cairo calendar cdr cli cracklib crypt dbus dlloader dri dvd dvdr dvdread eds elibc_glibc emboss encode esd fam firefox fortran gdbm gif glitz gstreamer hal i8x0 iconv input_devices_keyboard input_devices_mouse input_devices_synaptics isdnlog jpeg kde kdehiddenvisibility kernel_linux ldap libg++ linguas_de mad mikmod mmx mp3 mpeg mssql mysql ncurses nls nowin nptl nptlonly ogg opengl oss pam pcre pdf perl png ppds pppd python qt3 quicktime readline real reflection sdl session spell spl sse sse2 ssl tcpd truetype truetype-fonts type1-fonts udev unicode userland_GNU vcd video_cards_i810 video_cards_vesa vorbis win32codecs xml xorg xv xvid zlib"

Unset:  CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LANG, LC_ALL, LDFLAGS, PORTAGE_RSYNC_EXTRA_OPTS

```

----------

## Mr.Big

baue mal gtk+ mit xinerama unterstützung

```
USE="xinerama" emerge gtk+
```

wenn es dann klappt 

```
echo "USE="xinerama" emerge gtk+" >>/etc/portage/package.use
```

oder halt generell "xinerama" in die USE-Flags rein.

----------

## Ampheus

Du meinst 

```
echo "x11-libs/gtk+ xinerama" >> /etc/portage/package.use
```

 :Very Happy: 

----------

## Mr.Big

 *Ampheus wrote:*   

> Du meinst 
> 
> ```
> echo "x11-libs/gtk+ xinerama" >> /etc/portage/package.use
> ```
> ...

 

so isses natürlich richtig.  :Wink: 

----------

## Ampheus

Aber es muss doch auch möglich sein, die libexpat.so.1 ohne auf eine andere Distribution zurückgreifen zu müssen, zu bekommen, oder?

----------

## Mr.Big

 *Ampheus wrote:*   

> Aber es muss doch auch möglich sein, die libexpat.so.1 ohne auf eine andere Distribution zurückgreifen zu müssen, zu bekommen, oder?

 ich dachte eigentlich das Du ein:

```
emerge expat 
```

 durchgeführt hast?

Damit bekommst Du die doch:

```
* dev-libs/expat 

     Available versions:  1.95.7 ~1.95.7-r1 1.95.8 ~2.0.0

     Installed:           1.95.8

     Homepage:            http://expat.sourceforge.net/

     Description:         XML parsing libraries

```

mußt halt nur noch den Link setzen, da Rainleander nach einer "libexpat.so.1" sucht die durch das ebuild so nicht angelegt wird.

Habe Rainleander jetzt auch mal spaßenhalber installiert. 

Klappt ganz gut, ist nur schade das man es nur als Binary bekommt!

----------

## Ampheus

Ah danke! Jetzt funktioniert es.

----------

## Ampheus

Dupdidu....

Hier mal ein ebuild dazu:

```
# Copyright 1999-2005 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header: $

inherit eutils autotools

DESCRIPTION="A very useful x11 calendar"

HOMEPAGE="http://www.rainlendar.net"

SRC_URI="http://www.ipi.fi/~rainy/download/Rainlendar-Lite-2.0.tar.bz2"

IUSE=""

SLOT="0"

LICENSE="Own (not OSS)"

KEYWORDS="~x86"

DEPEND="x11-libs/gtk+

        <dev-libs/expat-2*"

RDEPEND=${DEPEND}

RESTRICT="nomirror"

pkg_setup() {

        if ! built_with_use x11-libs/gtk+ xinerama ; then

                einfo "Please re-emerge x11-libs/gtk+ with the xinerama USE flag set"

                die "rainlendar needs the xinerama use flag set"

        fi

}

src_unpack() {

        unpack ${A}

}

pkg_postinst() {

        cp -R ${WORKDIR}/${PN}2 /opt/

        ln -s /usr/lib/libexpat.so.0 /usr/lib/libexpat.so.1

        ln -s /opt/rainlendar2/rainlendar2 /usr/bin/rainlendar

}

pkg_postrm() {

        rm /usr/bin/rainlendar

        rm /usr/lib/libexpat.so.1

        rm -rf /opt/rainlendar2

}
```

Eventuelle Fehler wollte ich hier nochmal versuchen zu finden. Danach kommt das auf den bugtracker.

----------

## Mr.Big

Hast Du mal das deutsche Sprachpaket ausprobiert?

Ich bekomme hier beim Umstellen auf Deutsch ein

```
Speicherzugriffsfehler
```

  :Question: 

----------

## Ampheus

Hm irgendwie bekomm ich das nichtmal installiert. Wie hast du das Paket installiert?

----------

## Mr.Big

in der "lite" Version noch das Unterverzeichnis /locale erzeugen.

Dann das German.r2lang einfach per Maus ins "Rainlender-Fenster" reinziehen und loslassen.

Unter "options" dann einfach "deutsch" auswählen und gucken ob's knallt!  :Crying or Very sad: 

Oder halt manuell German.r2lang entpacken und alles ins ../rainlender/locale kopieren.

----------

## Ampheus

Jap mir dem manuellen Entpacken hats geklappt. Ist auch bei mir abgestürzt.

----------

## Finswimmer

Hey,

Mein Problem ist nun, dass Beryl expat-2 braucht, rainlendar aber 1.x

Was mache ich da?

Und warum brauche ich Xinerama? Ich dachte, das wäre nur für mehrere Bildschirme?

Danke

Tobi

----------

## Ampheus

Rainlendar gibts nur als binary und das wurde mit xinerama-support kompiliert.

Dass Beryl expat-2 benötigt, wäre mit neu. Ich verwende hier auch Beryl und es läuft auf expat-1.9 einwandrei. Vielleicht eine andere Abhängigkeit dabei? Versuch mal

```
equery d expat
```

----------

## Ampheus

Nochmal zum ebuild: Findet ihr da noch irgendwelche Fehler? Also das mit der Lizenz muss noch geändert werden und auf dauer wird die SRC_URI auch geändert, wenn es auf die mirrors geladen wird. Aber sonst noch irgendwas?

----------

## Finswimmer

```
>>> Unpacking source...

>>> Unpacking Rainlendar-Lite-2.0.tar.bz2 to /var/tmp/portage/kde-misc/rainlendar-0.1/work

>>> Source unpacked.

>>> Compiling source in /var/tmp/portage/kde-misc/rainlendar-0.1 ...

>>> Source compiled.

>>> Test phase [not enabled]: kde-misc/rainlendar-0.1

>>> Install rainlendar-0.1 into /var/tmp/portage/kde-misc/rainlendar-0.1/image/ category kde-misc

>>> Completed installing rainlendar-0.1 into /var/tmp/portage/kde-misc/rainlendar-0.1/image/

man:

>>> Merging kde-misc/rainlendar-0.1 to /

>>> Regenerating /etc/ld.so.cache...

>>> kde-misc/rainlendar-0.1 merged.

>>> Recording kde-misc/rainlendar in "world" favorites file...

>>> No packages selected for removal by clean.
```

Der Output gefällt mir noch nicht 100%ig. Normalerweise sieht man, welche Dateien wohin installiert werden.

Also zwischen den beiden Zeilen:

```
>>> Merging kde-misc/rainlendar-0.1 to /

>>> Regenerating /etc/ld.so.cache...
```

Ginge das evtl?

Tobi

----------

## Mr.Big

 *Finswimmer wrote:*   

> [
> 
> Der Output gefällt mir noch nicht 100%ig. Normalerweise sieht man, welche Dateien wohin installiert werden.
> 
> Also zwischen den beiden Zeilen:
> ...

 

Sicher geht das!

Geht mit den entsprechenden Kommandos im .ebuild, zB. insinto, doins, dosym etc.

Einfach mal in fertigen Ebuilds stöbern oder aber auch einen Blick auf http://devmanual.gentoo.org/ebuild-writing/index.html werfen.

J.

----------

## Ampheus

Hier mal mit Richtigem output:

```
# Copyright 1999-2005 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header: $

inherit eutils autotools

DESCRIPTION="A very useful x11 calendar"

HOMEPAGE="http://www.rainlendar.net"

SRC_URI="http://www.ipi.fi/~rainy/download/Rainlendar-Lite-2.0.tar.bz2"

IUSE=""

SLOT="0"

LICENSE="Own (not OSS)"

KEYWORDS="~x86"

DEPEND="x11-libs/gtk+

        <dev-libs/expat-2*"

RDEPEND=${DEPEND}

RESTRICT="nomirror"

pkg_setup() {

        if ! built_with_use x11-libs/gtk+ xinerama ; then

                einfo "Please re-emerge x11-libs/gtk+ with the xinerama USE flag set"

                die "rainlendar needs the xinerama use flag set"

        fi

}

src_unpack() {

        unpack ${A}

}

src_install() {

        declare RAIN_HOME=/opt/rainlendar2/

        dodir ${RAIN_HOME%/*}

        cp -R ${WORKDIR}/${PN}2 ${D}/opt || die "Install failed!"

        dosym "/usr/lib/libexpat.so.0" "/usr/lib/libexpat.so.1"

        dosym "/opt/rainlendar2/rainlendar2" "/usr/bin/rainlendar"

        fperms +x "/usr/bin/rainlendar"

}
```

----------

## Ampheus

Update: Hier ist der Bugreport dazu:

https://bugs.gentoo.org/show_bug.cgi?id=154664

Hoffe auf Resonanz und das Einbinden in Portage.

----------

