public inbox for gentoo-user-de@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-user-de] Manuelles Patchen bei emerge?
@ 2019-06-12 10:24 Matthias Hanft
  2019-06-12 10:29 ` Khaosgrille
  0 siblings, 1 reply; 7+ messages in thread
From: Matthias Hanft @ 2019-06-12 10:24 UTC (permalink / raw
  To: gentoo-user-de

Hallo,

ich würde gerne beim emerge-Vorgang gelegentlich noch schnell manuell
etwas im Sourcecode ändern (zwischen Holen der Sourcefiles und dem
Compilieren) - ist das möglich, und wenn ja, wie? Ich habe zwar schon
"emerge -f" gefunden, was das Zeug angeblich nur holt statt gleich zu
compilieren, aber die Sources finde ich trotzdem nirgendwo, und ich
wüsste auch nicht, wie ich dann weitermachen sollte.

Konkret würde ich gerne in media-plugins/vdr-epgsearch die zwei winzigen
Änderungen von der Seite
https://projects.vdr-developer.org/git/vdr-plugin-epgsearch.git/commit/?id=49ba796fe6298abf0ebba68a25ddfc92d3d70aad
einbauen (die den Segfault seit letzter Woche ausmerzen sollen). Wäre
im Source mit vi ja ganz simpel zu korrigieren, aber wo, wann und wie?

(Ich bin nicht der große Patch-Freak. Ich kann Apache, Postfix & Co.
installieren und - auch sehr komplex - konfigurieren, aber was Compi-
lieren, Patchen & Co. anbelangt, bin ich der totale Noob; da verlasse
ich mich bisher immer auf emerge...)

Danke & Gruß Matthias.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [gentoo-user-de] Manuelles Patchen bei emerge?
  2019-06-12 10:24 [gentoo-user-de] Manuelles Patchen bei emerge? Matthias Hanft
@ 2019-06-12 10:29 ` Khaosgrille
  2019-06-12 11:19   ` David Haller
  0 siblings, 1 reply; 7+ messages in thread
From: Khaosgrille @ 2019-06-12 10:29 UTC (permalink / raw
  To: gentoo-user-de@lists.gentoo.org


[-- Attachment #1.1: Type: text/plain, Size: 1475 bytes --]

Hi,

das geht wie hier beschrieben: https://wiki.gentoo.org/wiki//etc/portage/patches

Also im Prinzip muss der Patch da als /etc/portage/patches/${CATEGORY}/${P} liegen. 




Liebe Grüße
Khaosgrille




‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Wednesday, June 12, 2019 12:24 PM, Matthias Hanft <mh@hanft.de> wrote:

> Hallo,
> 

> ich würde gerne beim emerge-Vorgang gelegentlich noch schnell manuell
> etwas im Sourcecode ändern (zwischen Holen der Sourcefiles und dem
> Compilieren) - ist das möglich, und wenn ja, wie? Ich habe zwar schon
> "emerge -f" gefunden, was das Zeug angeblich nur holt statt gleich zu
> compilieren, aber die Sources finde ich trotzdem nirgendwo, und ich
> wüsste auch nicht, wie ich dann weitermachen sollte.
> 

> Konkret würde ich gerne in media-plugins/vdr-epgsearch die zwei winzigen
> Änderungen von der Seite
> https://projects.vdr-developer.org/git/vdr-plugin-epgsearch.git/commit/?id=49ba796fe6298abf0ebba68a25ddfc92d3d70aad
> einbauen (die den Segfault seit letzter Woche ausmerzen sollen). Wäre
> im Source mit vi ja ganz simpel zu korrigieren, aber wo, wann und wie?
> 

> (Ich bin nicht der große Patch-Freak. Ich kann Apache, Postfix & Co.
> installieren und - auch sehr komplex - konfigurieren, aber was Compi-
> lieren, Patchen & Co. anbelangt, bin ich der totale Noob; da verlasse
> ich mich bisher immer auf emerge...)
> 

> Danke & Gruß Matthias.


[-- Attachment #1.2: publickey - Khaosgrille@protonmail.com - 0xE78BC986.asc --]
[-- Type: application/pgp-keys, Size: 1831 bytes --]

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 509 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [gentoo-user-de] Manuelles Patchen bei emerge?
  2019-06-12 10:29 ` Khaosgrille
@ 2019-06-12 11:19   ` David Haller
  2019-06-12 13:09     ` Matthias Hanft
  0 siblings, 1 reply; 7+ messages in thread
From: David Haller @ 2019-06-12 11:19 UTC (permalink / raw
  To: gentoo-user-de

Hallo,

Am Wed, 12 Jun 2019, Khaosgrille schrieb:
>das geht wie hier beschrieben: https://wiki.gentoo.org/wiki//etc/portage/patches
>
>Also im Prinzip muss der Patch da als /etc/portage/patches/${CATEGORY}/${P} liegen. 
>> Konkret würde ich gerne in media-plugins/vdr-epgsearch die zwei winzigen
>> Änderungen von der Seite
>> https://projects.vdr-developer.org/git/vdr-plugin-epgsearch.git/commit/?id=49ba796fe6298abf0ebba68a25ddfc92d3d70aad
>> einbauen (die den Segfault seit letzter Woche ausmerzen sollen). Wäre
>> im Source mit vi ja ganz simpel zu korrigieren, aber wo, wann und wie?
[..]

Also konkret, ich nehme mal an, du beziehst dich auf die ~amd Version
media-plugins/vdr-epgsearch-2.2.0...:

# mkdir -p /etc/portage/patches/media-plugins/vdr-epgsearch-2.2.0
# chmod -cR a+rX /etc/portage/patches/media-plugins/
# cd /etc/portage/patches/media-plugins/vdr-epgsearch-2.2.0
# wget -O vdr-epgsearch-2.2.0-no_erase_of_iterator_inside_loop.patch \
 'https://projects.vdr-developer.org/git/vdr-plugin-epgsearch.git/patch/?id=49ba796fe6298abf0ebba68a25ddfc92d3d70aad'
# chmod -c a+r vdr-epgsearch-2.2.0-no_erase_of_iterator_inside_loop.patch

Und das war's schon.

Achso, ggfs. statt "-2.2.0" eben "-1.0.1" verwenden wenn es um die
stable-Version geht.

Durch die Version im Verzeichnisnamen -2.2.0 wird der Patch nur
bei dieser angewendet, wenn dann 2.2.1 _mit_ dem Patch rauskommt
fliegt emerge nicht auf die Nase, weil der Patch nicht zweimal
angewendet werden kann. Andererseits: wenn man das öfter macht kann
sich "Müll" in /etc/portage/patches ansammeln, ohne die Version würde
emerge eben wg. zweifach anwenden des patches meckern und man könnte
sich erinnern und den Patch löschen... Muß man eben überlegen was wann
geeigneter ist...

HTH,
-dnh

-- 
Optimization matters *only* when it matters. When it matters, it matters a
lot, but until you know that it matters, don't waste a lot of time doing it.
Even if you know it matters, you need to know *where* it matters.
                                                      -- Joseph M. Newcomer


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [gentoo-user-de] Manuelles Patchen bei emerge?
  2019-06-12 11:19   ` David Haller
@ 2019-06-12 13:09     ` Matthias Hanft
  2019-06-12 14:25       ` Felix Kuperjans
  0 siblings, 1 reply; 7+ messages in thread
From: Matthias Hanft @ 2019-06-12 13:09 UTC (permalink / raw
  To: gentoo-user-de

David Haller schrieb:
> 
> Also konkret, ich nehme mal an, du beziehst dich auf die ~amd Version
> media-plugins/vdr-epgsearch-2.2.0...:

Richtich!

> # mkdir [...]
> Und das war's schon.

Das ist ja einfach :-) Allerdings bringt emerge (oder ebuild clean prepare)
jetzt die Fehlermeldung

 * vdr-epgsearch-2.2.0.tgz BLAKE2B SHA512 size ;-) ...                                                            [ ok ]
 * Compiling against
 *      vdr-2.2.0 [API version 2.2.0]
>>> Unpacking source...
>>> Unpacking vdr-epgsearch-2.2.0.tgz to /var/tmp/portage/media-plugins/vdr-epgsearch-2.2.0/work
>>> Source unpacked in /var/tmp/portage/media-plugins/vdr-epgsearch-2.2.0/work
>>> Preparing source in /var/tmp/portage/media-plugins/vdr-epgsearch-2.2.0/work/vdr-plugin-epgsearch-2.2.0 ...
 * Applying vdr-epgsearch-2.2.0_makefile.diff ...                                                                 [ ok ]
 * Applying vdr-epgsearch-2.2.0-no_erase_of_iterator_inside_loop.patch ...
2 out of 2 hunks FAILED -- saving rejects to file conflictcheck.c.rej                                             [ !! ]
 * ERROR: media-plugins/vdr-epgsearch-2.2.0::gentoo failed (prepare phase):
 *   patch -p1  failed with /etc/portage/patches/media-plugins/vdr-epgsearch-2.2.0/vdr-epgsearch-2.2.0-no_erase_of_iterator_inside_loop.patch
 *
 * Call stack:
 *               ebuild.sh, line  124:  Called src_prepare
 *             environment, line 1647:  Called vdr-plugin-2_src_prepare
 *             environment, line 2875:  Called vdr-plugin-2_src_util 'prepare'
 *             environment, line 2900:  Called vdr-plugin-2_src_util 'add_local_patch' 'patchmakefile' 'linguas_patch' 'i18n'
 *             environment, line 2908:  Called eapply_user
 *             environment, line  691:  Called eapply '/etc/portage/patches/media-plugins/vdr-epgsearch-2.2.0/vdr-epgsearch-2.2.0-no_erase_of_iterator_inside_loop.patch'
 *             environment, line  661:  Called _eapply_patch '/etc/portage/patches/media-plugins/vdr-epgsearch-2.2.0/vdr-epgsearch-2.2.0-no_erase_of_iterator_inside_loop.patch'
 *             environment, line  599:  Called __helpers_die 'patch -p1  failed with /etc/portage/patches/media-plugins/vdr-epgsearch-2.2.0/vdr-epgsearch-2.2.0-no_erase_of_iterator_inside_loop.patch'
 *   isolated-functions.sh, line  119:  Called die
 * The specific snippet of code:
 *              die "$@"

Ich bin nicht sicher, ob und welcher Header-Zeilen man im dem Patchfile
drinlassen muss.... oder liegts an ganz was anderem?

Gruß Matthias.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [gentoo-user-de] Manuelles Patchen bei emerge?
  2019-06-12 13:09     ` Matthias Hanft
@ 2019-06-12 14:25       ` Felix Kuperjans
  2019-06-12 14:56         ` David Haller
  2019-06-12 15:16         ` Matthias Hanft
  0 siblings, 2 replies; 7+ messages in thread
From: Felix Kuperjans @ 2019-06-12 14:25 UTC (permalink / raw
  To: gentoo-user-de

Hallo Matthias,

Am 12.06.19 um 15:09 schrieb Matthias Hanft:
>  * Applying vdr-epgsearch-2.2.0-no_erase_of_iterator_inside_loop.patch ...
> 2 out of 2 hunks FAILED -- saving rejects to file conflictcheck.c.rej 

Du kannst in dieser Datei mal nachgucken, was mit deinem Patch nicht
funktionierte. Aus irgendeinem Grund lässt er sich nicht auf den
Quelltext anwenden.

Der Workspace müsste 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ärt:

https://wiki.gentoo.org/wiki/Patches

Damit solltest du deinen Patch ins korrekte Format bringen können, so
dass er sich auch anwenden lässt.

Viele Grüße
Felix



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [gentoo-user-de] Manuelles Patchen bei emerge?
  2019-06-12 14:25       ` Felix Kuperjans
@ 2019-06-12 14:56         ` David Haller
  2019-06-12 15:16         ` Matthias Hanft
  1 sibling, 0 replies; 7+ messages in thread
From: David Haller @ 2019-06-12 14:56 UTC (permalink / raw
  To: gentoo-user-de

[-- Attachment #1: Type: text/plain, Size: 1928 bytes --]

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 ...
>> 2 out of 2 hunks FAILED -- saving rejects to file conflictcheck.c.rej 
>
>Du kannst in dieser Datei mal nachgucken, was mit deinem Patch nicht
>funktionierte. Aus irgendeinem Grund lässt er sich nicht auf den
>Quelltext anwenden.
>
>Der Workspace müsste 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ärt:
>
>https://wiki.gentoo.org/wiki/Patches
>
>Damit solltest du deinen Patch ins korrekte Format bringen können, so
>dass er sich auch anwenden lässt.

Als Ergänzung: 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' 
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

-- 
[PHP ist ein] total inkonsistenter Moloch, der mehr Funktionen als Funktiona-
lität hat, bei dem aber nichts anständig designt respektive implementiert ist
und bei dessen Benutzung man ständlich auf der Suche nach dem Workaround zum
Workaround für den Fehler im Workaround zum Designfehler ist.   -- E. Schwenk

[-- Attachment #2: vdr-epgsearch-2.2.0-no_erase_of_iterator_inside_loop_rebased.patch --]
[-- Type: text/x-patch, Size: 1314 bytes --]

From: David Haller <gentoo@dhaller.de>
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;

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [gentoo-user-de] Manuelles Patchen bei emerge?
  2019-06-12 14:25       ` Felix Kuperjans
  2019-06-12 14:56         ` David Haller
@ 2019-06-12 15:16         ` Matthias Hanft
  1 sibling, 0 replies; 7+ messages in thread
From: Matthias Hanft @ 2019-06-12 15:16 UTC (permalink / raw
  To: gentoo-user-de

Felix Kuperjans schrieb:
> 
>>  * Applying vdr-epgsearch-2.2.0-no_erase_of_iterator_inside_loop.patch ...
>> 2 out of 2 hunks FAILED -- saving rejects to file conflictcheck.c.rej 
> Du kannst in dieser Datei mal nachgucken, was mit deinem Patch nicht
> funktionierte. Aus irgendeinem Grund lässt er sich nicht auf den
> Quelltext anwenden.

In dieser Datei stand einfach nochmal der originale Quelltext
aus der .patch-Datei, das hat mir also nicht weitergeholfen.

Aber...

> Der Workspace müsste noch in /var/tmp/portage/ liegen, ansonsten noch
> ein cooler Trick, um den Workspace zu bekommen: [...]

...bei Fehlern bleibt .../work mit den Sourcefiles eh stehen.
Ich bin dann da reingegangen, hab das fragliche File in zwei
Subdirectories a und b kopiert, in b die zwei Zeilen schnell
mitm vi korrigiert und dann "diff -Nub a/conflictcheck.c
b/conflictcheck.c > /etc/patches.../mein.patch" gemacht. Das
hatte dann wohl das richtige Format, denn damit hats nun
funktioniert.

Herzlichen Dank an alle Beteiligten - ich habe viel dazu-
gelernt! :-)

Gruß Matthias.


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2019-06-12 15:16 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-06-12 10:24 [gentoo-user-de] Manuelles Patchen bei emerge? Matthias Hanft
2019-06-12 10:29 ` Khaosgrille
2019-06-12 11:19   ` David Haller
2019-06-12 13:09     ` Matthias Hanft
2019-06-12 14:25       ` Felix Kuperjans
2019-06-12 14:56         ` David Haller
2019-06-12 15:16         ` Matthias Hanft

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox