Re: sysutils/logwatch: Need to patch very first line of a script fails, dunno why
Michael Grimm <[email protected]>
| Newsgroups | gmane.os.freebsd.devel.ports |
|---|---|
| Message-ID | <[email protected]> |
Edward Sanford Sutton, III <[email protected]> wrote: > On 7/18/25 11:48, Michael Grimm wrote: >> Hi, >> I am preparing for the upcoming logwatch-7.13 release, and ran into an issue I can't understand. >> I do want to patch the logwatch.pl script by providing a 'files/patch-scripts_logwatch.pl' which starts as follows: >> --- scripts/logwatch.pl.orig 2025-07-18 18:21:47 UTC >> +++ scripts/logwatch.pl >> @@ -1,4 +1,4 @@ >> -#!/usr/bin/perl -w >> +#!/usr/local/bin/perl -w >> use strict; >> ########################################################################## >> ########################################################################## >> [followed by 17 other hunks] >> Using "poudriere testport … sysutils/logwatch" I get: >> =======================<phase: patch >============================ >> ===== env: DEVELOPER_MODE=yes DEVELOPER=1 STRICT_DEPENDS=yes USER=root UID=0 GID=0 >> ===> Patching for logwatch-7.13 >> ===> Applying FreeBSD patches for logwatch-7.13 from /usr/ports/sysutils/logwatch/files >> Ignoring previously applied (or reversed) patch. >> 18 out of 18 hunks ignored--saving rejects to scripts/logwatch.pl.rej >> ===> FAILED Applying FreeBSD patch-scripts_logwatch.pl >> ===> FAILED to apply cleanly FreeBSD patch(es) patch-scripts_logwatch.pl >> *** Error code 1 >> Stop. >> But: If I do apply that very same patch by 'patch < files/patch-scripts_logwatch.pl' at the appropriate location, all 18 hunks are applied successfully. >> Can you help me to understand how to fix this? > > As a workflow, I copy the file to file.orig, manually patch it, and then run `make makepatch` in the port's folder to create the patches under files/ appropriately. You can also use this to compare the result to your current work. That is how I produced that patch (also to please portlint). Errors see above. > For this case you should consider replacing a static patch replacement with a more dynamic replacement if possible (modify as needed): > > post-patch: > @${REINPLACE_CMD} -e 's|/usr/bin|${PREFIX}/bin|g' ${WRKSRC}/scripts/logwatch.pl After failing with the first hunk, I removed it and placed it into the Makefile: pre-configure: ${REINPLACE_CMD} -E \ -e "s,/usr/bin/perl -w,/usr/local/bin/perl -w," \ ${WRKSRC}/scripts/logwatch.pl After that the port compiles successfully. > though in such a particular case there is also the following predesigned fix which may work: > > USES= shebangfix > SHEBANG_FILES= ./scripts/logwatch.pl That's already been in the Makefile. But: Bingo! After reading Miroslav's answer, I do understand why the first hunk fails because there is no need to patch it. And I can get rid of the last remaining ${REINPLACE_CMD} as well. Thanks for your help, highly appreciated, Michael