From: Stuart Henderson Subject: Re: [update] net/ddclient 4.0.0 To: Morgan Aldridge Cc: ports@openbsd.org, Pascal Stumpf Date: Wed, 7 Jan 2026 10:58:23 +0000 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