Re: Manuelles Patchen bei emerge?

David Haller <[email protected]> Wed, 12 Jun 2019 16:56:52 +0200
Newsgroups gmane.linux.gentoo.user.german
Organization Nah, not today!
Message-ID <[email protected]>
--vqjif7avo6nhoqyw
Content-Type: text/plain; charset=iso-8859-15
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

Hallo,

Am Wed, 12 Jun 2019, Felix Kuperjans schrieb:
>Am 12.06.19 um 15:09 schrieb Matthias Hanft:
>>  * Applying vdr-epgsearch-2.2.0-no_erase_of_iterator_inside_loop.patch .=
=2E.
>> 2 out of 2 hunks FAILED -- saving rejects to file conflictcheck.c.rej=20
>
>Du kannst in dieser Datei mal nachgucken, was mit deinem Patch nicht
>funktionierte. Aus irgendeinem Grund l=E4sst er sich nicht auf den
>Quelltext anwenden.
>
>Der Workspace m=FCsste noch in /var/tmp/portage/ liegen, ansonsten noch
>ein cooler Trick, um den Workspace zu bekommen:
>
>ebuild filepath.ebuild prepare
>
>erstellt dir in /var/tmp/portage (oder was du als PORTAGE_TMPDIR
>konfiguriert hast) den Workspace, so dass du selber darauf rumpatchen
>kannst (prepare im Gegensatz zu unpack wendet auch Gentoo Patches
>bereits an sowie deine Patches aus /etc/portage/patches).
>Um dann einen neuen Patch zu erstellen, ist git sehr hilfreich, wie in
>diesem Howto erkl=E4rt:
>
>https://wiki.gentoo.org/wiki/Patches
>
>Damit solltest du deinen Patch ins korrekte Format bringen k=F6nnen, so
>dass er sich auch anwenden l=E4sst.

Als Erg=E4nzung: nach dem 'ebuild foo.ebuild prepare' kann man dann noch

# ebuild foo.ebuild compile
# ebuild foo.ebuild package
# emerge -k foo

folgen lassen... ;) 'ebuild foo.ebuild merge' funktioniert auch, macht
aber irgendwas anders, jedenfalls taucht z.B. ein per 'ebuild .. merge'=20
installiertes Paket nicht in 'qlop -l' auf (und/oder genlop)...

Jedenfalls: der patch passt einfach nicht mehr zu den Sourcen...

Ich hab den mal angepasst ("rebased"), siehe Anhang ;)

HTH,
-dnh

--=20
[PHP ist ein] total inkonsistenter Moloch, der mehr Funktionen als Funktion=
a-
lit=E4t hat, bei dem aber nichts anst=E4ndig designt respektive implementie=
rt ist
und bei dessen Benutzung man st=E4ndlich auf der Suche nach dem Workaround =
zum
Workaround f=FCr den Fehler im Workaround zum Designfehler ist.   -- E. Sch=
wenk

--vqjif7avo6nhoqyw
Content-Type: text/x-patch; charset=iso-8859-15
Content-Description: vdr-epgsearch-2.2.0-no_erase_of_iterator_inside_loop_rebased.patch
Content-Disposition: attachment; filename="vdr-epgsearch-2.2.0-no_erase_of_iterator_inside_loop.patch"

From: David Haller <[email protected]>
Subject: [PATCH adjusted] avoid erase of iterator inside of a loop

see commit 49ba796fe6298abf0ebba68a25ddfc92d3d70aad at
<https://projects.vdr-developer.org/git/vdr-plugin-epgsearch.git/patch/?id=49ba796fe6298abf0ebba68a25ddfc92d3d70aad>

diff -ub -purN -x '*~' a/conflictcheck.c b/conflictcheck.c
--- a/conflictcheck.c	2017-05-01 21:40:19.000000000 +0200
+++ b/conflictcheck.c	2019-06-12 16:42:37.187803757 +0200
@@ -498,8 +498,8 @@ int cConflictCheck::ProcessCheckTime(cCo
     {
 	if ((*it) && (*it)->stop > checkTime->evaltime)
 	    checkTime->startingTimers.insert(*it);
-	pendingTimers.erase(*it);
     }
+    pendingTimers.clear();
 
     LogFile.Log(3,"attach starting timers");
     // handle starting timers
@@ -518,9 +518,9 @@ int cConflictCheck::ProcessCheckTime(cCo
 		{
 		    LogFile.Log(3,"stopping timer '%s' (%s, channel %s) at %s on device %d because of higher priority", (*it2)->timer->File(), DAYDATETIME((*it2)->start), CHANNELNAME((*it2)->timer->Channel()), DAYDATETIME(checkTime->evaltime), device+1);
 		    AddConflict((*it2), checkTime, pendingTimers);
-		    devices[device].recTimers.erase(*it2);
 		    Conflicts++;
 		}
+		devices[device].recTimers.clear();
 	    }
 	    devices[device].recTimers.insert(*it);
 	    (*it)->device = device;

--vqjif7avo6nhoqyw--