# Hilfe beim Patchen von Kitchensync/Wie patcht man ein Ebuild

## ScytheMan

Hallo allerseits,

Ich nutze kitchensync um mein Handy zu synchronisieren. Dabei gibt es jedoch Probleme wenn ich einen Datenkonflikt habe, leider bleibt bei diesem die Konfliktanzeige leer und raten was man klicken soll ist nervig.

Den entsprechenden Bug gibts auch gleich dazu:

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

Ich habe einen Patch gefunden der das Problem lösen soll, bin aber beim letzten Lösungsversuch das im lokalem Overlay zu Patchen verzweifelt (habe mich bei den Patches immer an epatch orientiert nur wollte das hier irgendwie nicht).

Wäre cool wenn mir jemand das Ebuild so umschreiben kann dass der Patch läuft.  :Smile: 

Um nicht allzuviel Arbeit zu machen hier das Ebuild:

```

# Copyright 1999-2008 Gentoo Foundation

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

# $Header: /var/cvsroot/gentoo-x86/kde-base/kitchensync/kitchensync-3.5.9.ebuild,v 1.8 2008/07/05 22:06:58 loki_val Exp $

KMNAME=kdepim

EAPI="1"

inherit kde-meta eutils

DESCRIPTION="Synchronize Data with KDE"

KEYWORDS="alpha amd64 hppa ia64 ppc ppc64 sparc x86"

IUSE=""

DEPEND="<=app-pda/libopensync-0.30

        >=kde-base/kontact-${PV}:${SLOT}

        >=kde-base/libkcal-${PV}:${SLOT}"

RDEPEND="${DEPEND}"

KMCOPYLIB="

        libkcal libkcal

        libkdepim libkdepim

        libkpinterfaces kontact/interfaces"

KMEXTRACTONLY="

        libkcal/

        libkdepim/

        libkdenetwork/

        kontact/interfaces"

# Disabled by default in kontact/plugins/Makefile.am, so check before enabling - 3.4.0_beta1 -- danarmak

# KMEXTRA="kontact/plugins/kitchensync"

KMEXTRA="kontact/plugins/multisynk"

#src_unpack() {

#       kde-meta_src_unpack

        # disabling tests, see bug #164097

#       sed -e "s:SUBDIRS = . plugins test:SUBDIRS = . plugins:" \

#               -i kitchensync/libkonnector2/Makefile.am || die "sed failed"

#       sed -e "s:SUBDIRS = . tests test:SUBDIRS = .:" \

#               -i kitchensync/libksync/Makefile.am || die "sed failed"

#}

```

Der Patch:

http://nopaste.info/51159cdabb.html

Danke euch für die Hilfe  :Smile: 

Am Besten wäre es natürlich wenn hier zufällig ein Dev drüber schaut und das Intree fixed.

Was ich noch nicht verstehe: Weshalb wurde die 4.x Version von Kitchensync einfach (aus Versehen?) aus dem Tree gelöscht?

Changelog:

```

  17 Feb 2009; Alexey Shvetsov <alexxy@gentoo.org>

  -kitchensync-4.1.4.ebuild:

  Drop KDE 4.1.4

```

 Hat da jemand eine Idee? Will keinen Bugspam deswegen produzieren. 

grüße

ScytheMan[/code]

----------

## Josef.95

Schau mal hier ist eine prima Info wie man sowas machen kann

http://www.gentooforum.de/artikel/16303/wie-man-einen-patch-einspielt.html

viel Erfolg

----------

## ChrisJumper

Servus ScytheMan,

ich kann dir leider grade nicht helfen wie du das Ebuild modifizieren musst damit der Patch mit eimem normalen emerge installiert wird.

Aber wie du das Programm "manuell auf deinem Rechner" Patchen und installieren kannst. Die Schritte sollten die selben sein wie z. B. bei Wine.

Allerdings brauchst du ein .diff-Patch-File.. und ich habe grade auf die schnelle unter deinem Link nichts gesehen wo wie man an ein typisches Patchfile kommt...

Hier der Link, welcher beschreibt wie du beim Patchen von  wine verfährst.

Grüße

Chris

Edit: Oh Josef war schneller.. oh und den Link kannte ich ja noch gar nicht.. *sofort Bookmark*

----------

## ScytheMan

Danke für eure Links. Wie man in src_unpack reinpatcht ist mir soweit bekannt. Da das aber ein KDE Programm ist nutzt es vermutlich andere eclasses und damit steht da gar kein src_unpack ausser das auskommentierte.

Und damit steh ich wieder vor dem Problem: Wie patche ich das richtig? Einfach ein src_unpack() { epatch $file } dazufügen?

gruß ScytheMan

----------

## Necoro

```
src_unpack() {

    kde-meta_src_unpack

    epatch "${FILESDIR}"/dein_patch.patch

}
```

Dazu muss der Patch noch in das files/ Verzeichnis beim ebuild geschmissen werden ... und oben der Name vom patch angepasst  :Wink: 

Wenns so net klappt - bitte mal die zuständige Fehlermeldungen und Logs posten

----------

## ScytheMan

mh also der patch wird akzeptiert danke necoro

leider is er wohl für kitchensync von kde 3.5.7 geschrieben und gibt daher folgenden fehler aus:

```

.libs/xmldiffalgo.o: In function `KSync::XmlDiffAlgo::compareNode(QDomElement&, QDomElement&)':

xmldiffalgo.cpp:(.text+0xfa4): undefined reference to `KPIM::DiffAlgo::matchingField(QString const&, QString const&, QString const&)'

collect2: ld gab 1 als Ende-Status zurück

make[4]: *** [libkitchensync.la] Fehler 1

make[4]: Leaving directory `/var/tmp/portage/kde-base/kitchensync-3.5.9/work/kitchensync-3.5.9/kitchensync/src'

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

make[3]: Leaving directory `/var/tmp/portage/kde-base/kitchensync-3.5.9/work/kitchensync-3.5.9/kitchensync/src'

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

make[2]: Leaving directory `/var/tmp/portage/kde-base/kitchensync-3.5.9/work/kitchensync-3.5.9/kitchensync'

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

make[1]: Leaving directory `/var/tmp/portage/kde-base/kitchensync-3.5.9/work/kitchensync-3.5.9'

make: *** [all] Fehler 2

 *

 * ERROR: kde-base/kitchensync-3.5.9 failed.

 * Call stack:

 *               ebuild.sh, line   48:  Called src_compile

 *             environment, line 4488:  Called kde-meta_src_compile

 *             environment, line 3123:  Called kde_src_compile

 *             environment, line 3288:  Called kde_src_compile 'all'

 *             environment, line 3413:  Called kde_src_compile 'myconf' 'configure' 'make'

 *             environment, line 3409:  Called die

 * The specific snippet of code:

 *                   emake || die "died running emake, $FUNCNAME:make"

 *  The die message:

 *   died running emake, kde_src_compile:make

 *

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

 * A complete build log is located at '/var/tmp/portage/kde-base/kitchensync-3.5.9/temp/build.log'.

 * The ebuild environment file is located at '/var/tmp/portage/kde-base/kitchensync-3.5.9/temp/environment'.

 *

```

da meine programmierkenntnisse eher mangelhaft sind werd ich daraus nicht wirklich schlau.

kitchensync wurde unter kde4 scheinbar völlig gedropt, deswegen gab es auch keine kde4 version davon mehr in portage :/

----------

