Still working well for me in production with Gandi. Morgan
On Mon, Feb 2, 2026 at 07:54 Brent Cook <[email protected]> wrote: > 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 >> > >> >>
