# [solved] Bug#:   	 269659 - wie Patch anwenden?

## uhai

Hilfe,

wieder ein "Hänger":

Beim 

```
emerge -puD world
```

 bin ich auf diesen https://bugs.gentoo.org/show_bug.cgi?id=269659 gestoßen. Im letzten Beitrag wird ein Patch angeboten, der das Problem zu lösen scheint.

Allerdings konnte ich der Diskussion nicht wirklich folgen. Wie wende ich den Patch denn richtig an? Wird ICU oder Xerces gepatcht? Welche Datei auf welche Weise?

Könnte mir bitte jemand die richtige Anwendung dieses Patches erklären?

uhaiLast edited by uhai on Sun Oct 18, 2009 4:44 pm; edited 1 time in total

----------

## firefly

es wird xerces gepatched. im bug report gibt es neben dem patch auch ein passendes ebuild für xerces  :Smile: 

du packst dir einfach das ebuild und den patch in dein lokales overlay:

```
mkdir -p /usr/local/portage/dev-libs/xerces/files

cp <downloadir>/xerces-c-3.0.1-r1.ebuild /usr/local/portage/dev-libs/xerces/

cp <downloadir>/ICU_4.2.patch /usr/local/portage/dev-libs/xerces/files

ebuild /usr/local/portage/dev-libs/xerces/xerces-c-3.0.1-r1.ebuild manifest
```

das lokale overlay musst du dann noch in der make.conf mit angeben:

 */etc/make.conf wrote:*   

> PORTDIR_OVERLAY="/usr/local/portage"

 

----------

## uhai

ok firefly, das habe ich vor lauter patch gar nicht gesehen.

Installiert ist bei mir xerces-c-3.0.0.-r1, d.h. xerces-c-3.0.0-r2.ebuild wäre mein Kandidat. Also download und nach 

```
/var/db/pkg/dev-libs/xerces-c-3.0.0-r1/xerces-c-3.0.0-r1.ebuild
```

 oder 

```
/usr/portage/dev-libs/xerces-c/xerces-c-3.0.0-r1.ebuild
```

 speichern?

Oder habe ich das noch nciht kapiert?

uhai

----------

## firefly

auf jedenfall nicht nach /var/db/pkg

in diesem verzeichnis speichert portage informationen über installierte Pakete.

wenn du es in /usr/portage kopierst ist das ebuild nach dem nächsten sync wieder weg. Da ist es besser das ebuild in ein lokales overlay zu packen. Ich habe es kurz in meinem letzten post beschrieben.

Für mehr infos über overlays liest du dir am besten die doku darüber durch:

http://www.gentoo.org/proj/en/overlays/userguide.xml

http://gentoo-wiki.stefreak.de/de.gentoo-wiki.com/Portage_Overlay.html

----------

## uhai

 :Wink:  Man sollte doch aufhören, bevor man am Bildschirm einschläft.

Jetzt habe ich hier die Patches eingespielt, aber xerces-c lässt sich immer noch nicht emergen.

Wofür brauche ich dass eigentlich?

Zum Thema Overlay - gibt es eine Übersicht, was in welchem Overlay enthalten ist?

uhai

----------

## Max Steel

Bei vielen Overlays (per Layman), lässt es sich am Name erraten was drin ist (themen, bzw. Programmbezogene) es gibt die "Developer-"Overlays, dafür gibt es unter gentoo.org etwas. Und meistens gibt es zu den Overlays irgendwo eine Projektseite mit deren Inhalt.

Für sunrise z.B. http://overlays.gentoo.org/proj/sunrise/

Und um darin zu browsen: http://overlays.gentoo.org/proj/sunrise/browser

Aber ansonsten hilft nur ausprobieren.

Und meistens ist es viel einfacher das Ebuild auf bgo zu suchen und danach ins eigene Overlay zu integrieren.

So als Leitfaden:

```
mkdir -p /usr/local/portage/eigen/profiles

echo "Eigenes" >> /usr/local/portage/eigen/profiles/repo_name

echo 'PORTDIR_OVERLAY="${PORTDIR_OVERLAY} /usr/local/portage/eigen' >> /etc/make.conf
```

Und jetzt je nach Ebuild die passenden Ordner für die Category und das Programm erstellen.

```
mkdir -p /usr/local/portage/eigen/dev-libs/xerces-c/files
```

Das Ebuild in das eben erstellte Verzeichnis xerces-c

Und die Patches nach files.

Danach noch ein ebuild /usr/local/portage/eigen/dev-libs/xerces-c/xerces-c-*.ebuild manifest und das Ebuild ist einsatzbereit.

Zum Thema, Was ist Xerces:

```
* dev-libs/xerces-c

     Homepage:            http://xerces.apache.org/xerces-c/

     Description:         A validating XML parser written in a portable subset of C++.
```

----------

## Finswimmer

eix-remote bietet dir eine Liste von allen Inhalten aus den Overlays.

Dadurch findest du diese Programme bei der Suche, auch wenn das Overlay nicht installiert ist:

```
$eix xerces

[I] dev-java/xerces

     Available versions:

        (1.3)   1.3.1-r2 ~1.4.4[1]

        (2.6)   2.6.2-r4[1]

        (2)     2.9.1!t

        {doc elibc_FreeBSD examples source}

     Installed versions:  2.9.1(2)!t(18:07:26 11/24/08)(-doc -elibc_FreeBSD -examples -source)

     Homepage:            http://xml.apache.org/xerces2-j/index.html

     Description:         The next generation of high performance, fully compliant XML parsers in the Apache Xerces family

[I] dev-libs/xerces-c

     Available versions:  2.7.0-r1 ~2.8.0-r1 ~3.0.0 3.0.0-r1 ~3.0.1 ~3.0.1-r1 {curl debug doc elibc_Darwin elibc_FreeBSD iconv icu libwww threads xqilla}

     Installed versions:  3.0.0-r1(14:33:18 08/01/09)(curl iconv threads -debug -doc -elibc_Darwin -elibc_FreeBSD -icu -libwww)

     Homepage:            http://xerces.apache.org/xerces-c/

     Description:         A validating XML parser written in a portable subset of C++.

[1] layman/java-overlay

```

----------

## uhai

Danke für die ausführliche Einführung in die Overlays. Das werde ich mir nochmal genauer ansehen.

Xerces-c allerdings widersetzt sich beharrlich...

```
/usr/bin/pkgdata --name xercesc_messages_3_0 --mode dll -d . -M '"CC=i686-pc-linux-gnu-gcc" "CXX=i686-pc-linux-gnu-g++" "AR=i686-pc-linux-gnu-ar" "RANLIB=i686-pc-linux-gnu-ranlib" "CPPFLAGS=" "CFLAGS=-O2 -march=athlon -pipe" "CXXFLAGS=-O2 -march=athlon -pipe " "LDFLAGS=-Wl,-O1"' ./res-file-list.txt

/usr/bin/pkgdata: error in command line argument "-M"

Run '/usr/bin/pkgdata --help' for help.

make[3]: *** [xercesc_messages.lo] Fehler 1

make[3]: Leaving directory `/home/uhai/Fotos/portage/dev-libs/xerces-c-3.0.0-r1/work/xerces-c-3.0.0/src/xercesc/util/MsgLoaders/ICU/resources'

make[2]: *** [all-recursive] Fehler 1

make[2]: Leaving directory `/home/uhai/Fotos/portage/dev-libs/xerces-c-3.0.0-r1/work/xerces-c-3.0.0/src'

make[1]: *** [all-recursive] Fehler 1

make[1]: Leaving directory `/home/uhai/Fotos/portage/dev-libs/xerces-c-3.0.0-r1/work/xerces-c-3.0.0'

make: *** [all] Fehler 2

 *

 * ERROR: dev-libs/xerces-c-3.0.0-r1 failed.

 * Call stack:

 *               ebuild.sh, line   49:  Called src_compile

 *             environment, line 2251:  Called die

 * The specific snippet of code:

 *       emake || die "emake failed";

 *  The die message:

 *   emake failed

 *

 * If you need support, post the topmost build error, and the call stack if relevant.

 * A complete build log is located at '/home/uhai/Fotos/portage/dev-libs/xerces-c-3.0.0-r1/temp/build.log'.

 * The ebuild environment file is located at '/home/uhai/Fotos/portage/dev-libs/xerces-c-3.0.0-r1/temp/environment'.

```

Ich habe den patch in meinem overlay, ebuild erstellt (mit "digest") einmal mit 3.0.1und einmal mit 3.0.0 probiert - alles ergibt diesen Fehler...

uhai

----------

## uhai

Mit dem patchen von xerces-c habe ich noch immer Schwierigkeiten. So bin ich vorgegangen:

1. Layman ist installiert und holt hier 3 Overlays rein (openstreetmap/pro-audio/sunrise) ohne Probleme. Also ist das ok.

2. In der make.conf ist 

```
PORTDIR_OVERLAY="/usr/local/portage/layman/local-overlay"
```

 und 

```
source /usr/local/portage/layman/make.conf
```

 gesetzt.

3. So sieht die source /usr/local/portage/layman/make.conf aus:

```
PORTDIR_OVERLAY="

/usr/local/portage/layman/openstreetmap

/usr/local/portage/layman/pro-audio

/usr/local/portage/layman/sunrise

$PORTDIR_OVERLAY

"

```

4. Verzeichnisse habe ich so angelegt:

/usr/local/portage/layman/local-overlay/dev-libs/xerces-c

/usr/local/portage/layman/local-overlay/dev-libs/xerces-c/files

5. ICU_4.2.patch nach /usr/local/portage/layman/local-overlay/dev-libs/xerces-c/files kopiert

xerces-c-3.0.1-r1.ebuild nach /usr/local/portage/layman/local-overlay/dev-libs/xerces-c kopiert

6. ebuild /usr/local/portage/layman/local-overlay/dev-libs/xerces-c/xerces-c-3.0.1-r1.ebuild manifest (ohne Fehler)

7. emerge -vt xerces-c -> dieser Fehler:

```
/usr/bin/pkgdata --name xercesc_messages_3_0 --mode dll -d . -M '"CC=i686-pc-linux-gnu-gcc" "CXX=i686-pc-linux-gnu-g++" "AR=i686-pc-linux-gnu-ar" "RANLIB=i686-pc-linux-gnu-ranlib" "CPPFLAGS=" "CFLAGS=-O2 -march=athlon -pipe" "CXXFLAGS=-O2 -march=athlon -pipe " "LDFLAGS=-Wl,-O1"' ./res-file-list.txt

/usr/bin/pkgdata: error in command line argument "-M"

Run '/usr/bin/pkgdata --help' for help.

make[3]: *** [xercesc_messages.lo] Fehler 1

make[3]: Leaving directory `/home/uhai/Fotos/portage/dev-libs/xerces-c-3.0.0-r1/work/xerces-c-3.0.0/src/xercesc/util/MsgLoaders/ICU/resources'

make[2]: *** [all-recursive] Fehler 1

make[2]: Leaving directory `/home/uhai/Fotos/portage/dev-libs/xerces-c-3.0.0-r1/work/xerces-c-3.0.0/src'

make[1]: *** [all-recursive] Fehler 1

make[1]: Leaving directory `/home/uhai/Fotos/portage/dev-libs/xerces-c-3.0.0-r1/work/xerces-c-3.0.0'

make: *** [all] Fehler 2

 *

 * ERROR: dev-libs/xerces-c-3.0.0-r1 failed.

 * Call stack:

 *               ebuild.sh, line   49:  Called src_compile

 *             environment, line 2268:  Called die

 * The specific snippet of code:

 *       emake || die "emake failed";

 *  The die message:

 *   emake failed

 *

 * If you need support, post the topmost build error, and the call stack if relevant.

 * A complete build log is located at '/home/uhai/Fotos/portage/dev-libs/xerces-c-3.0.0-r1/temp/build.log'.

 * The ebuild environment file is located at '/home/uhai/Fotos/portage/dev-libs/xerces-c-3.0.0-r1/temp/environment'.

 *

>>> Failed to emerge dev-libs/xerces-c-3.0.0-r1, Log file:

>>>  '/home/uhai/Fotos/portage/dev-libs/xerces-c-3.0.0-r1/temp/build.log'
```

Anscheinend greift emerge nicht auf mein patch (wäre 3.0.1 statt 3.0.0!) sondern auf die ebuilds in /usr/portage zu:

```
/usr/portage/dev-libs/xerces-c:

ChangeLog     xerces-c-2.7.0-r1.ebuild  xerces-c-3.0.1.ebuild

files         xerces-c-2.8.0-r1.ebuild  xerces-c-3.0.1-r1.ebuild

Manifest      xerces-c-3.0.0.ebuild

metadata.xml  xerces-c-3.0.0-r1.ebuild

```

Was habe ich denn noch versemmelt? Warum nimmt er nicht xerces-c-3.0.1-r1, das in /usr/portage/dev-libs/xerces-c ja auch als ebuild vorliegt? <edit> guck mal da in /etc/portage/Package.mask - manchmal verliert man den Überblick ...   :Embarassed:  Jetzt läuft's!</edit>

Das habe ich auch immer noch nicht verstanden:

```
DeskTux uhai # equery depends xerces-c

[ Searching for packages depending on xerces-c... ]

games-puzzle/enigma-1.01 (>=dev-libs/xerces-c-3[-icu,-iconv])

                         (>=dev-libs/xerces-c-3[icu])
```

Ich brauche Xerces-c wegen enigma in der Version >=3 - mit oder ohne icu? Oder heißt das, wenn "ohne icu" dann auch "ohne iconv"?

in enigma/enigma-1.01.ebuild:

```
....RDEPEND="media-libs/sdl-ttf

        media-libs/libsdl

        media-libs/sdl-mixer

        media-libs/sdl-image[png]

        media-libs/libpng

        || ( >=dev-libs/xerces-c-3[icu] >=dev-libs/xerces-c-3[-icu,-iconv] ).....

```

Hier verstehe ich die "Xercex-c"-Zeile gar nicht. Könnte mir das bitte jemand übersetzen? Ich bin trotz meines Alters halt noch neugierig...

----------

## franzf

 *uhai wrote:*   

> In enigma/enigma-1.01.ebuild:
> 
> ```
> ....RDEPEND="media-libs/sdl-ttf
> 
> ...

 

Diese beiden "||" leitet einen "Oder"-Ausdruck ein. Und du hast das oben schon richtig gedeutet:

Entweder xerces-c mit icu gebaut, oder xerces-c ohne icu und ohne iconv.

Was die einzelnen Flags bedeuten?

```
$ quse -D icu

 global:icu: Enable ICU (Internationalization Components for Unicode) support, using dev-libs/icu

$ quse -D iconv

 global:iconv: Enable support for the iconv character set conversion library

 local:iconv:dev-libs/xerces-c: Use iconv (virtual/libiconv) as message loader and transcoder (in general it would be possible to use iconv only as message loader and something else like icu or the native method as transcoder and vice-versa, but this is a less common case and hard to handle)
```

// edit

ARGH ganz vergessen warum ich eigentlich antworten wollte  :Very Happy: 

Woher kommt bei dir dieses komische Builddir?

/home/uhai/Fotos/portage/dev-libs/xerces-c-3.0.0-r1/work/xerces-c-3.0.0

Ist das Absicht, dass du in deinem privaten home-Verzeichnis im Fotos-Ordner kompilierst? Hat das eine spezielle Bewandnis?

----------

## uhai

 :Smile:  Fotos ist ein 320 GB-USB-Laufwerk, da sind nur ein paar Digi-Bilder und jede Menge Platz für portage. auf meinen 2regulären" Festplatten habe ich für OpenOffice zu wenig freien Raum übrig, daher diese "Umleitung".

Danke für die Erklärung. Du verwendest 

```
quse
```

 ist das vergleichbar mit 

```
euse -i
```

?

uhai

----------

## franzf

 *uhai wrote:*   

>  Fotos ist ein 320 GB-USB-Laufwerk, da sind nur ein paar Digi-Bilder und jede Menge Platz für portage. auf meinen 2regulären" Festplatten habe ich für OpenOffice zu wenig freien Raum übrig, daher diese "Umleitung".

 

Ich würde echt schauen, auf der Platte bissl Platz zu schaffen. Denn die Übertragungsgeschwindigkeit deines USB-Laufwerks bremst das Kompilieren erheblich aus. Und nur wg. openoffice... Kannst das ja dann temporär so einrichten, und ansonsten auf einer internen Platte kompilieren.

Und ja, quse und euse sind ähnlich. quse ist hier nur deutlich schneller. Kommt mit portage-utils.

----------

## uhai

Danke für den Tip, aber Geschwindigkeit spielt keine Rolle. Meistens lasse ich diese Dinge über Nacht laufen....

uhai

----------

