This works well for me, needed an updated ddclient for porkbun support.

ok bcook@

On Thu, Jan 15, 2026 at 3:32 PM Stuart Henderson <[email protected]>
wrote:

> nobody reported any problems. only positive report was from Morgan
> so I think it would make sense to commit this to get more testing,
> we can always backout if there's a problem. ok?
>
> On 2026/01/07 10:58, Stuart Henderson wrote:
> > On 2026/01/06 17:44, Morgan Aldridge wrote:
> > > Updated to latest version 4.0.0. Tested with Gandi protocol.
> > >
> > > I've attached to prevent my MUA breaking the diff.
> > >
> > > It looks like Pascal's 3.11.2 patch[0] from 2024-03-01 (attached for
> > > reference; see questions below) never got any feedback and the 3.10.0
> > > patch[1] (not attached) was never committed (only one OK from sdk@?)
> > >
> > > The 3.11.2 patch still applies and builds for me, but I didn't run-test
> > > it as I need 4.0.0 for some auth changes in the Gandi protocol. I did
> > > notice that it restores the use of daemon class in PLIST's @newuser,
> > > which ajacoutot@'s commit in r1.29 explicitly removed.
> > >
> > > The daemon class was also restored in the PLIST in my 4.0.0 patch
> > > when I ran `make plist`. The order of some of the samples also
> > > differs from Pascal's 3.11.2 patch, which looks to result in slightly
> > > different file permissions for installed examples.
> > >
> > > Should I manually re-order the PLIST and remove the daemon class?
> >
> > update-plist shouldn't touch the class, so not sure what happened there.
> > it should be removed.
> >
> > > +CONFIGURE_STYLE=gnu autoreconf
> >
> > just autoreconf is enough
> >
> > > +AUTOMAKE_VERSION=  1.12
> > > +AUTOCONF_VERSION=  2.63
> >
> > hardly any ports use those old versions - probably only when upstream
> > already provided configure scripts and we're patching the input files,
> > so we want the same version for comparison. that doesn't apply here so
> > use versions which are more likely to be installed already (easier for
> > manual builds, less churn in bulks).
> >
> > > +SYSCONFDIR=        ${BASESYSCONFDIR}/ddclient
> >
> > upstream changed things in 4.0 so that doesn't work properly (looks in
> > /etc/ddclient/ddclient), just drop it
> >
> > > +MAKE_ENV=  runstatedir=/var/run/ddclient
> >
> > doesn't seem to do anything. set it via CONFIGURE_ARGS instead.
> >
> > > +FAKE_FLAGS=        sysconfdir=${PREFIX}/share/examples
> > > +
> > > +BUILD_DEPENDS=     net/curl
> >
> > no need for the BDEP, just pass in the path via CONFIGURE_ARGS
> >
> > > +RUN_DEPENDS=       net/curl \
> > >             net/p5-IO-Socket-INET6 \
> > >             security/p5-IO-Socket-SSL
> >
> > it uses curl instead of the other deps (see changelog), so drop them
> >
> > > -NO_BUILD=  Yes
> > > -NO_TEST=   Yes
> >
> > missing some test deps (there's one that we don't have in ports,
> > HTTP::Daemon::SSL, but most tests don't need it)
> >
> > >  post-extract:
> > > -   @sed -i -e "s,/var/cache/ddclient/,/var/db/ddclient/,g;" \
> > > -           -e "s,/etc/ddclient/,${SYSCONFDIR}/ddclient/,g" \
> > > -           ${WRKSRC}/ddclient
> > ..
> > > +   @sed -i -e "s,/cache/ddclient,/db/ddclient,g" \
> > > +           ${WRKSRC}/{ddclient.in,Makefile.am}
> >
> > better use a standard patch rather than sed here.
> >
> > how's this diff instead? I don't have any ddns stuff for runtime tests
> > but 'make test' looks promising.
> >
> > Index: Makefile
> > ===================================================================
> > RCS file: /cvs/ports/net/ddclient/Makefile,v
> > diff -u -p -r1.29 Makefile
> > --- Makefile  8 Nov 2022 11:14:54 -0000       1.29
> > +++ Makefile  7 Jan 2026 10:54:35 -0000
> > @@ -2,8 +2,7 @@ COMMENT=      update client for dynamic DNS s
> >
> >  GH_ACCOUNT=  ddclient
> >  GH_PROJECT=  ddclient
> > -GH_TAGNAME=  v3.9.1
> > -REVISION=    0
> > +GH_TAGNAME=  v4.0.0
> >
> >  CATEGORIES=  net
> >
> > @@ -12,30 +11,25 @@ HOMEPAGE= https://ddclient.net/
> >  # GPLv2+
> >  PERMIT_PACKAGE=      Yes
> >
> > -RUN_DEPENDS= devel/p5-Data-Validate-IP \
> > -             net/p5-IO-Socket-INET6 \
> > -             security/p5-IO-Socket-SSL
> > +CONFIGURE_STYLE= autoreconf
> > +AUTOCONF_VERSION= 2.71
> > +AUTOMAKE_VERSION= 1.16
> > +
> > +CONFIGURE_ARGS=      --with-curl=${LOCALBASE}/bin/curl \
> > +             --runstatedir=/var/run/ddclient
> > +
> > +FAKE_FLAGS=  sysconfdir=${PREFIX}/share/examples
> > +
> > +RUN_DEPENDS= net/curl
> > +TEST_DEPENDS=        ${RUN_DEPENDS} \
> > +             devel/p5-Test-MockModule \
> > +             devel/p5-Test-Warnings \
> > +             net/p5-Test-TCP \
> > +             www/p5-HTTP-Daemon \
> > +             www/p5-HTTP-Message \
> > +             www/p5-Plack \
> > +             www/p5-URI
> >
> > -NO_BUILD=    Yes
> > -NO_TEST=     Yes
> >  PKG_ARCH=    *
> > -
> > -SAMPLES=     sample-etc_cron.d_ddclient sample-etc_ddclient.conf \
> > -             sample-etc_dhclient-exit-hooks
> sample-etc_dhcpc_dhcpcd-eth0.exe \
> > -             sample-etc_ppp_ip-up.local sample-ddclient-wrapper.sh
> > -
> > -post-extract:
> > -     @sed -i -e "s,/var/cache/ddclient/,/var/db/ddclient/,g;" \
> > -             -e "s,/etc/ddclient/,${SYSCONFDIR}/ddclient/,g" \
> > -             ${WRKSRC}/ddclient
> > -
> > -do-install:
> > -     ${INSTALL_SCRIPT} ${WRKSRC}/ddclient ${PREFIX}/sbin/
> > -     ${INSTALL_DATA_DIR} ${PREFIX}/share/examples/ddclient
> > -     ${INSTALL_DATA_DIR} ${PREFIX}/share/doc/ddclient
> > -     ${INSTALL_DATA} ${WRKSRC}/README* ${PREFIX}/share/doc/ddclient
> > -.for i in ${SAMPLES}
> > -     ${INSTALL_DATA} ${WRKSRC}/${i} ${PREFIX}/share/examples/ddclient
> > -.endfor
> >
> >  .include <bsd.port.mk>
> > Index: distinfo
> > ===================================================================
> > RCS file: /cvs/ports/net/ddclient/distinfo,v
> > diff -u -p -r1.12 distinfo
> > --- distinfo  17 Jan 2021 15:46:53 -0000      1.12
> > +++ distinfo  7 Jan 2026 10:54:35 -0000
> > @@ -1,2 +1,2 @@
> > -SHA256 (ddclient-3.9.1.tar.gz) =
> 5JaeFcxJH8Ur3NZJ1MKw5LG/DJ+duiNHHGNIcazFJHA=
> > -SIZE (ddclient-3.9.1.tar.gz) = 63469
> > +SHA256 (ddclient-4.0.0.tar.gz) =
> SzfJmsABEQLX22Lx7Of/iZsG3z1LFy4xJwOTGjxZPJM=
> > +SIZE (ddclient-4.0.0.tar.gz) = 301499
> > Index: patches/patch-Makefile_am
> > ===================================================================
> > RCS file: patches/patch-Makefile_am
> > diff -N patches/patch-Makefile_am
> > --- /dev/null 1 Jan 1970 00:00:00 -0000
> > +++ patches/patch-Makefile_am 7 Jan 2026 10:54:35 -0000
> > @@ -0,0 +1,13 @@
> > +Index: Makefile.am
> > +--- Makefile.am.orig
> > ++++ Makefile.am
> > +@@ -42,9 +42,6 @@ bin_SCRIPTS = ddclient
> > +
> > + conf_DATA = ddclient.conf
> > +
> > +-install-data-local:
> > +-    $(MKDIR_P) '$(DESTDIR)$(localstatedir)'/cache/ddclient
> > +-
> > + AM_TESTS_ENVIRONMENT = \
> > +     abs_top_srcdir='$(abs_top_srcdir)'; export abs_top_srcdir;
> > + LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) \
> > Index: patches/patch-ddclient
> > ===================================================================
> > RCS file: patches/patch-ddclient
> > diff -N patches/patch-ddclient
> > --- patches/patch-ddclient    11 Mar 2022 19:45:52 -0000      1.4
> > +++ /dev/null 1 Jan 1970 00:00:00 -0000
> > @@ -1,20 +0,0 @@
> > -Index: ddclient
> > ---- ddclient.orig
> > -+++ ddclient
> > -@@ -1163,16 +1163,6 @@ sub _read_config {
> > -     # fatal("Cannot open file '%s'. ($!)", $file);
> > -     warning("Cannot open file '%s'. ($!)", $file);
> > -     }
> > --    # Check for only owner has any access to config file
> > --    my ($dev, $ino, $mode, @statrest) = stat(FD);
> > --    if ($mode & 077) {
> > --    if (-f FD && (chmod 0600, $file)) {
> > --        warning("file $file must be accessible only by its owner
> (fixed).");
> > --    } else {
> > --        # fatal("file $file must be accessible only by its owner.");
> > --        warning("file $file must be accessible only by its owner.");
> > --    }
> > --    }
> > -
> > -     local $lineno       = 0;
> > -     my    $continuation = '';
> > Index: patches/patch-ddclient_in
> > ===================================================================
> > RCS file: patches/patch-ddclient_in
> > diff -N patches/patch-ddclient_in
> > --- /dev/null 1 Jan 1970 00:00:00 -0000
> > +++ patches/patch-ddclient_in 7 Jan 2026 10:54:35 -0000
> > @@ -0,0 +1,12 @@
> > +Index: ddclient.in
> > +--- ddclient.in.orig
> > ++++ ddclient.in
> > +@@ -133,7 +133,7 @@ sub subst_var {
> > + }
> > +
> > + my $etc = subst_var('@confdir@', '/etc/ddclient');
> > +-my $cachedir = subst_var('@localstatedir@', '/var') .
> '/cache/ddclient';
> > ++my $cachedir = subst_var('@localstatedir@', '/var') . '/db/ddclient';
> > + our @curl = (subst_var('@CURL@', 'curl'));
> > +
> > + our $emailbody = '';
> > Index: patches/patch-sample-etc_ddclient_conf
> > ===================================================================
> > RCS file: patches/patch-sample-etc_ddclient_conf
> > diff -N patches/patch-sample-etc_ddclient_conf
> > --- patches/patch-sample-etc_ddclient_conf    11 Mar 2022 19:45:52
> -0000      1.3
> > +++ /dev/null 1 Jan 1970 00:00:00 -0000
> > @@ -1,12 +0,0 @@
> > -Index: sample-etc_ddclient.conf
> > ---- sample-etc_ddclient.conf.orig
> > -+++ sample-etc_ddclient.conf
> > -@@ -20,7 +20,7 @@ daemon=300                         # check every 300
> seconds
> > - syslog=yes                          # log update msgs to syslog
> > - mail=root                           # mail all msgs to root
> > - mail-failure=root                   # mail failed update msgs to root
> > --pid=/var/run/ddclient.pid           # record PID in file.
> > -+pid=/var/run/ddclient/ddclient.pid  # record PID in file.
> > - ssl=yes                                     # use ssl-support.  Works
> with
> > -                                     # ssl-library
> > - # postscript=script                 # run script after updating.  The
> > Index: pkg/PLIST
> > ===================================================================
> > RCS file: /cvs/ports/net/ddclient/pkg/PLIST,v
> > diff -u -p -r1.15 PLIST
> > --- pkg/PLIST 8 Nov 2022 11:14:54 -0000       1.15
> > +++ pkg/PLIST 7 Jan 2026 10:54:35 -0000
> > @@ -1,24 +1,13 @@
> >  @newgroup _ddclient:750
> >  @newuser _ddclient:750:_ddclient::DynDNS
> Client:/nonexistent:/sbin/nologin
> > -sbin/ddclient
> > -share/doc/ddclient/
> > -share/doc/ddclient/README.cisco
> > -share/doc/ddclient/README.md
> > -share/doc/ddclient/README.ssl
> > +@rcscript ${RCDIR}/ddclient
> > +bin/ddclient
> >  share/examples/ddclient/
> >  @sample ${SYSCONFDIR}/ddclient/
> > -share/examples/ddclient/sample-ddclient-wrapper.sh
> > -share/examples/ddclient/sample-etc_cron.d_ddclient
> > -share/examples/ddclient/sample-etc_ddclient.conf
> > -@mode 0640
> > +share/examples/ddclient/ddclient.conf
> > +@mode 640
> >  @group _ddclient
> >  @sample ${SYSCONFDIR}/ddclient/ddclient.conf
> >  @mode
> > -@group
> > -share/examples/ddclient/sample-etc_dhclient-exit-hooks
> > -share/examples/ddclient/sample-etc_dhcpc_dhcpcd-eth0.exe
> > -share/examples/ddclient/sample-etc_ppp_ip-up.local
> >  @owner _ddclient
> >  @sample /var/db/ddclient/
> > -@owner
> > -@rcscript ${RCDIR}/ddclient
> > Index: pkg/ddclient.rc
> > ===================================================================
> > RCS file: /cvs/ports/net/ddclient/pkg/ddclient.rc,v
> > diff -u -p -r1.7 ddclient.rc
> > --- pkg/ddclient.rc   11 Mar 2022 19:45:52 -0000      1.7
> > +++ pkg/ddclient.rc   7 Jan 2026 10:54:35 -0000
> > @@ -1,6 +1,6 @@
> >  #!/bin/ksh
> >
> > -daemon="${TRUEPREFIX}/sbin/ddclient"
> > +daemon="${TRUEPREFIX}/bin/ddclient"
> >  daemon_user="_ddclient"
> >
> >  . /etc/rc.d/rc.subr
> >
>
>

Reply via email to