• Diese Seite verwendet Cookies. Indem du diese Website weiterhin nutzt, erklärst du dich mit der Verwendung von Cookies einverstanden. Erfahre mehr

Wie mit diff File patchen? ... erklärt für Nicht-Informatiker

holgerw

Well-Known Member
Themenstarter #1
Hallo,

bezogen auf diesen Thread hier https://www.bsdforen.de/threads/xfburn-broken.34645/ hat mich der Committer von sysutils/xfburn gebeten, einen Patch zu probieren, xfburn damit neu zu bauen und zu testen. Er selber hat es getestet, dier bei ihm nun noch auftretenden Schwierigkeiten vermutet er bei seinem schon alten Brenner und nicht mehr bei xfburn.

Ich habe also /usr/ports/sysutils/xfburn und ich habe von ihm ein xfburn.diff File.

Kann mir jemand bitte kurz anschaulich erklären, welche Schritte ich nun unternehmen muss? Zu diff finde ich im Netz Berge an Info, die mich nicht weiter bringen.

Viele Grüße
Holger
 

holgerw

Well-Known Member
Themenstarter #4
Okay, also ist das xfburn.diff schon das Resultat aus
Code:
diff originalfile updatedfile
Soll ich xfburn.diff dann in xfburn.patch umbenennen?

Dann das Patchen:
Code:
patch originalfile -i patchfile.patch -o updatedfile
Ist in meinem Fall <originalfile> das Makefile von xfburn? Und <patchfile> ist das xfburn.patch?

Dann müsste es ja so sein:
Code:
patch Makefile -i xfburn.patch -o Makefile.new
cp Makefile.new /usr/ports/sysutils/xfburn
cd /usr/ports/sysutils/xfburn && mv Makefile Makefile.old
mv Makefile.new Makefile
Habe ich das so richtig verstanden?
 

holgerw

Well-Known Member
Themenstarter #5
Hallo,

da es ja kein Geheimnis ist, hier noch xfburn.diff:
Code:
Index: Makefile
===================================================================
--- Makefile    (revision 484299)
+++ Makefile    (working copy)
@@ -3,6 +3,7 @@
 
 PORTNAME=    xfburn
 PORTVERSION=    0.5.5
+PORTREVISION=    1
 CATEGORIES=    sysutils
 MASTER_SITES=    XFCE/src/apps/${PORTNAME}/${PORTVERSION:R}
 DIST_SUBDIR=    xfce4
Index: files/patch-xfburn_xfburn-transcoder-gst.c
===================================================================
--- files/patch-xfburn_xfburn-transcoder-gst.c    (nonexistent)
+++ files/patch-xfburn_xfburn-transcoder-gst.c    (working copy)
@@ -0,0 +1,50 @@
+--- xfburn/xfburn-transcoder-gst.c.orig    2017-12-14 12:34:57 UTC
++++ xfburn/xfburn-transcoder-gst.c
+@@ -221,8 +221,8 @@ xfburn_transcoder_gst_init (XfburnTranscoderGst * obj)
+
+   /* if the mutex is locked, then we're not currently seeking
+    * information from gst */
++  /* Actual locking in prepare and finish */
+   g_mutex_init (&priv->gst_mutex);
+-  g_mutex_lock (&priv->gst_mutex);
+
+   priv->discoverer = gst_discoverer_new(GST_SECOND, NULL);
+ }
+@@ -492,19 +492,9 @@ bus_call (GstBus *bus, GstMessage *msg, gpointer data)
+
+           if (strcmp (GST_OBJECT_NAME (GST_MESSAGE_SRC (msg)), "decoder") != 0)
+             break;
+-         
+-          if (!g_mutex_trylock (&priv->gst_mutex)) {
+-            g_critical ("Lock held by another thread, can't signal transcoding start!");
+-            break;
+-          } else {
+-#if DEBUG_GST > 0
+-            DBG ("Locked mutex to signal transcoding start");
+-#endif
+-          }
+
+           priv->gst_done = TRUE;
+           g_cond_signal (&priv->gst_cond);
+-          g_mutex_unlock (&priv->gst_mutex);
+           break;
+       } /* switch of priv->state */
+
+@@ -835,6 +825,8 @@ prepare (XfburnTranscoder *trans, GError **error)
+   gboolean ret;
+   gint64 end_time;
+
++  g_mutex_lock(&priv->gst_mutex);
++
+   priv->tracks = g_slist_reverse (priv->tracks);
+
+   priv->state = XFBURN_TRANSCODER_GST_STATE_TRANSCODE_START;
+@@ -933,6 +925,8 @@ finish (XfburnTranscoder *trans)
+   }
+   */
+   recreate_pipeline (gst);
++
++  g_mutex_unlock (&priv->gst_mutex);
+ }
+
+

Property changes on: files/patch-xfburn_xfburn-transcoder-gst.c
___________________________________________________________________
Added: fbsd:nokeywords
## -0,0 +1 ##
+yes
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Viele Grüße
Holger
 

Yamagi

Possessed With Psi Powers
Mitarbeiter
#6
Also... Der Patch - oder je nach Geschmack auch das Diff - ist relativ zu sysutils/xfburn. Das sieht man an den Pfadangaben:
Code:
--- files/patch-xfburn_xfburn-transcoder-gst.c
Also ab in das Portverzeichnis:
Code:
cd /usr/ports/sysutils/xfburn
Nun sollte sich der Patch einfach anwenden lassen, sofern du die gleiche Version des Ports hast, gegen die der Patch erstellt wurde. Groß was angeben muss man nicht, patch fummelt sich in den meisten Fällen von alleine heraus, was es wissen muss. Daher einfach:

Code:
patch < /pfad/zur/patch/datei
Danach noch einmal in der Ausgabe schauen, ob alle Schritte ("Hunks") wirklich "succeded" sind und keiner "failed".
 

KobRheTilla

used register
#7
Soll ich xfburn.diff dann in xfburn.patch umbenennen?
Das hat zwar nicht so viel mit dem Thema zu tun, aber ein gutgemeinter Hinweis: Dateinamen, die man Programmen auf der Kommandozeile mitgibt, haben in der Regel keine Bedeutung. Ob die Datei .diff/.patch oder .exe heißt, ist dem Programm egal - es interessiert sich nur für den Inhalt.

Da man patch, wie Yamagi sehr gut zusammengefasst hat, in der Regel eh über die Standardeingabe füttert, verliert die Datei letztendlich sowieso ihre Identität.

Rob
 

holgerw

Well-Known Member
Themenstarter #8
Hallo,

danke, dann werde ich es Morgen ausprobieren, berichten und dem Committer Rückmeldung geben.
Hatte heute sehr viel um die Ohren ...
Viele Grüße
Holger
 

holgerw

Well-Known Member
Themenstarter #9
Hallo,

wollte nur mitteilen, dass ich xfburn erfolgreich patchen konnte, und gerade dem Committer Rückmeldung gegeben habe.

Danke für Euer Interesse und die hilfreichen Hinweise.

Viele Grüße
Holger