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 > > > >
