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.

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

though in such a particular case there is also the following predesigned fix which may work:

USES=   shebangfix
SHEBANG_FILES=  ./scripts/logwatch.pl

this can easily handle multiple files in a port too and has some additional options described in the porter's handbook.

Thanks in advance and regards,
Michael


Reply via email to