Patching within RPM spec file not working (previously applied patch detected)

I would like to know what the best way is to create a custom patch and apply it in a spec file.

I created the following patch.

--- neofetch.orig	2020-08-02 20:37:41.000000000 +0200
+++ neofetch	2021-10-06 21:42:20.251855166 +0200
@@ -6943,25 +6943,27 @@
         "Fedora"* | "RFRemix"*)
-            set_colors 4 7 1
+            set_colors 12 7
             read -rd '' ascii_data <<'EOF'
-${c1}          /:-------------:\\
-       :-------------------::
-     :-----------${c2}/shhOHbmp${c1}---:\\
-   /-----------${c2}omMMMNNNMMD  ${c1}---:
-  :-----------${c2}sMMMMNMNMP${c1}.    ---:
- :-----------${c2}:MMMdP${c1}-------    ---\\
-,------------${c2}:MMMd${c1}--------    ---:
-:------------${c2}:MMMd${c1}-------    .---:
-:----    ${c2}oNMMMMMMMMMNho${c1}     .----:
-:--     .${c2}+shhhMMMmhhy++${c1}   .------/
-:-    -------${c2}:MMMd${c1}--------------:
-:-   --------${c2}/MMMd${c1}-------------;
-:-    ------${c2}/hMMMy${c1}------------:
-:--${c2} :dMNdhhdNMMNo${c1}------------;
+${c1}             .',;::::;,'.
+         .';:cccccccccccc:;,.
+      .;cccccccccccccccccccccc;.
+    .:cccccccccccccccccccccccccc:.
+  .;ccccccccccccc;${c2}.:dddl:.${c1};ccccccc;.
+ .:ccccccccccccc;${c2}OWMKOOXMWd${c1};ccccccc:.
+  '::cccccccccccccc::;,.

I simply want to substitute the Fedora logo in this, with the new logo. But when I run this in the spec file, I get:

+ echo 'Patch #0 (fedora_logo.patch):'
Patch #0 (fedora_logo.patch):
+ /usr/bin/patch --no-backup-if-mismatch -p0 --fuzz=0
patching file neofetch
Reversed (or previously applied) patch detected!  Assume -R? [n] 
Apply anyway? [n] 
Skipping patch.
1 out of 1 hunk ignored -- saving rejects to file neofetch.rej
error: Bad exit status from /var/tmp/rpm-tmp.ZiaIC7 (%prep)

So obviously I’m doing something wrong here. Maybe I create the patch not correctly? Any pointers are welcome.

What I did was:

  • Make a copy of the original neofetch file
  • Add the changes in the original file
  • Then I ran of the original file and the patched one diff -u neofetch.orig neofetch > fedora_logo.patch

Then in the spec file I have:
Patch0: fedora_logo.patch

And in %prep I have:
%patch0 -p0

Hello @keesdejong and welcome to the community.

It could be that the spec file has the %autosetup macro.
%autosetup is a replacement for %setup that handles patches directly without having to manually list them one by one.
So, try to remove the %patch0 -p0 line.

1 Like

Ah, of course. I should know that, thanks! :nerd_face:

1 Like