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
>