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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.