From: Stuart Henderson Subject: Re: [update] net/ddclient 4.0.0 To: Morgan Aldridge , ports@openbsd.org, Pascal Stumpf Date: Thu, 15 Jan 2026 18:51:44 +0000 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 > 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 >