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

Reply via email to