• [gentoo-user-de] Manuelles Patchen bei emerge?

    From Matthias Hanft@21:1/5 to All on Wed Jun 12 12:30:02 2019
    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.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Khaosgrille@21:1/5 to Matthias Hanft on Wed Jun 12 12:30:01 2019
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) -----------------------5ddc9b61564e33d3b747c06532d8672f Content-Transfer-Encoding: quoted-printable
    Content-Type: text/plain;charset=utf-8

    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.


    -----------------------5ddc9b61564e33d3b747c06532d8672f
    Content-Type: application/pgp-keys; filename="publickey - Khaosgrille@protonmail.com - 0xE78BC986.asc"; name="publickey - Khaosgrille@protonmail.com - 0xE78BC986.asc"
    Content-Transfer-Encoding: base64
    Content-Disposition: attachment; filename="publickey - Khaosgrille@protonmail.com - 0xE78BC986.asc"; name="publickey - Khaosgrille@protonmail.com - 0xE78BC986.asc"

    LS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tDQpWZXJzaW9uOiBPcGVuUEdQLmpz IHY0LjUuMQ0KQ29tbWVudDogaHR0cHM6Ly9vcGVucGdwanMub3JnDQoNCnhzQk5CRmtBN0NvQkNB REZ1c0wzaGsvK1AwNFFGbHNENkVKeXI5dmRGZnBkWXBKczRHdXgyemg2dzdXeA0KQ0FkaHp1N3J1 Z0RXYXlrQk9KYUJZL01pWGYxNXNWS2crSUp2NHFHNllaOXk4a2hLUTIrYXZ4cyt2YnNCDQord05v SzlGbmJzdTN5eVpIeGJrZmpTLzdqRER0WmpNWHB0N2Q2K2pYQjk1elBCK3lIZ3cvVWtGVC9MR24N ClZGdFBMck53RlZBRXZuRk1kRkZzNXh5bHZBWjliM09GaWJKNmpybHJ0UHNyQkZIL29tb0F4UkJB VjFSTw0KWU01a3NyOFoxQ3B2VmFVUHBIdng0WnVZZzBFL1B2c3AwZFJucmUwYU1XenFyUzd4SnEz T0lkMTFVZTFrDQpHcFlOY0xtY0J6YkRVTmhUZDlUdUhFMjlJRXpNTFgrZFhmU3JrRFZNSEhTTmdX dUlQOG9DTGlyZkFCRUINCkFBSE5OMHRvWVc5elozSnBiR3hsUUhCeWIzUnZibTFoYVd3dVkyOXRJ RHhMYUdGdmMyZHlhV3hzWlVCdw0KY205MGIyNXRZV2xzTG1OdmJUN0N3SDhFRUFFSUFDa0ZBbGtB N0NvR0N3a0hDQU1DQ1JCM2I4bHlaVDlIDQo1Z1FWQ0FvQ0F4WUNBUUlaQVFJYkF3SWVBUUFLQ1JC M2I4bHlaVDlINXE0L0NBQ1NrazVPMERkQ0l6b2wNCjV1Tnp3MEJoTGlhNTZ4Tlo2TVBKRWM5b0lC RlRwcjNiYXZYLzhhUERKWllWSFpuNnJ3WnJWc1hGL3NuRA0KME1QSVgxdjdOUFlaVm9CV0tKQzVa b0twa0VBS0ZmNGhleHBiWXd5U21BM2NPUmV6U1hESERyYXRmdHBIDQpidENxVnl6bVlPbFFGMFdF SkUvRDBYejN4WWFIa0xEVHlTRG5RcmVRYXFYL21TOTBPQ0VPWndZSEEvMGUNCjVjL1lZMHBGRjc2 RE92Vyt1K29zeDE2SUdCYVRCd2JscGY1TlVqa3FTWkNLRkRtUGVRWVdxa2l1SW03NQ0KZG9zOVNm ZjZsVWV1MlYwRUNFcTZVdXdoZVZCR011ZDl0SEMvZDFudC9kQW9iYTdneGhLTUZVZTVWZjQvDQph SFZOQnNLVEY3UkY0M2JWbGhnRE52ZEJ5U21LenNCTkJGa0E3Q29CQ0FEVVZSNjNhVmV3QXJwcDN4 bjgNCjZXRVRPeHg5d2RveU5waWxkK0pJdGk0NHV2K25NcStaV3hTWkQzYis1WUVZUTRiUGdpM0w5 OEtDVjVYdA0KVlZjWkJ2czlqY055blhXL21OY2NpL3lnczJUcUV6U21wbkpVU2lQa3ZNWXBrLzBC YUFzdUtOS3RJbWVtDQplYnloZWE0MmVIZlU5SGlsYnozZlk0dCtnbGZvS1FIUlljVzZoNnUrdnlY c3oycVVzS3BKZ1Zqc2UwaHMNCjQwNFNJRTBvK29JY0NIYVdENDl5d3dIaDhYVUhOVlFPMDcxcHVi WHpMT09XWWdST3RWVzJpQ0pYN3NJTg0KQ2hMV1V2N2RqQzAvTmdNNURWS3B4ditPd1htN1VQNG5z N1ZvY2I1Q0YycVZrc28vQkdDODZTaW0vSFBBDQptUHBWanJ6OVlWdFMyVU92OTZLc2xwWnRBQkVC QUFIQ3dHa0VHQUVJQUJNRkFsa0E3Q3NKRUhkdnlYSmwNClAwZm1BaHNNQUFvSkVIZHZ5WEpsUDBm bW1Fc0lBTE9rSUhkTDlWNnprdFdnMW9YNnBkRE1XL3ZxM3NzTA0KMC9kNE9iaXpFc3RvbVlCWmdp RFA2T3grQlEyYWphMVdiVHlxQVh5eXBDaEczcFJwTWpEc2FXWU1ldXJCDQpUakN2OUJmM0g4K0p0 MUcyays5SzdLcXBtbEttU052S2x6M2N6dG5jMlZsQk51SFBrUGhnR2VYNTZueGcNCmpud2dzaUYy K3FWam5YWlAwb2Vkcmk5KzBvbG9DbG5HU05aS21Ha253SWEwNzVSMUNNcjRzbmRUMnBVdQ0KcnNQ R0VSclp2cUlQSFRyR0FjMkw2d3QxeStUU3d2a1RrbWlaRGo5VU5XcHpaNzFyTUZnb29ublNjdzRa DQpwTTBaai9pazNUeTlUYkFBYmZCTEo5TnZMeWVVd2dpVnRQTnJJNW5CaUxGYmdnMHRkYkxtbnV2 MGtRcTcNCi9VN3pJOVFSN3dBPQ0KPTBmMHoNCi0tLS0tRU5EIFBHUCBQVUJMSUMgS0VZIEJMT0NL LS0tLS0NCg==
    -----------------------5ddc9b61564e33d3b747c06532d8672f--

    -----BEGIN PGP SIGNATURE-----
    Version: ProtonMail
    Comment: https://protonmail.com

    wsBcBAEBCAAGBQJdANQNAAoJEHdvyXJlP0fmMZwH/3oMLxAUiI0lqLxttNwG OpJREuwhtTCTHfLo56LYcqNLUcyET7JzjSJBCuhLDWzhg/Yb3Bq8nnQlJk1g rCU+IrWnG012neJOkOymd7E6FQvdHWXrrcj4ggVOzIuS+MjTfOzKQ2gPij4r Ju/JTN2x6h04RghO3ongJKWa+hwdMk6CKIVVbGBpAVN0/9OXX3q3SuiLCMQ0 l9SvxEIn4B+jBx6EkpqU+SNSwaOUCj8bDxx+AAGvPP1xlIS+FQH+42wc4XU5 mOzT9GWTOkFgR2pXlEU3p9oFpqk5QSeV4YqNG/uEWvFt8hnYNTJloe2d8jpZ nqz6+QmNR/SBb2N2tygkjbY=
    =0Fiv
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Haller@21:1/5 to Khaosgrille on Wed Jun 12 13:20:02 2019
    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 wrde 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). Wre
    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 "Mll" in /etc/portage/patches ansammeln, ohne die Version wrde
    emerge eben wg. zweifach anwenden des patches meckern und man knnte
    sich erinnern und den Patch lschen... 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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Matthias Hanft@21:1/5 to David Haller on Wed Jun 12 15:10:01 2019
    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.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From David Haller@21:1/5 to Felix Kuperjans on Wed Jun 12 17:00:02 2019
    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 lsst er sich nicht auf den
    Quelltext anwenden.

    Der Workspace msste 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 erklrt:

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

    Damit solltest du deinen Patch ins korrekte Format bringen knnen, so
    dass er sich auch anwenden lsst.

    Als Ergnzung: 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- litt hat, bei dem aber nichts anstndig designt respektive implementiert ist und bei dessen Benutzung man stndlich auf der Suche nach dem Workaround zum Workaround fr den Fehler im Workaround zum Designfehler ist. -- E. Schwenk

    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();
  • From Felix Kuperjans@21:1/5 to All on Wed Jun 12 16:30:01 2019
    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 lsst er sich nicht auf den
    Quelltext anwenden.

    Der Workspace msste 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 erklrt:

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

    Damit solltest du deinen Patch ins korrekte Format bringen knnen, so
    dass er sich auch anwenden lsst.

    Viele Gre
    Felix

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Matthias Hanft@21:1/5 to Felix Kuperjans on Wed Jun 12 17:20:02 2019
    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 lsst 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 msste 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.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)