Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
114 changes: 79 additions & 35 deletions configure
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@ SMALL=
SANITIZE=no
STATUSARG=
OPENSSL=
NTPD=
CHRONYD=
TIMESYNCD=

DHCPCD_DEFS=dhcpcd-definitions.conf

Expand Down Expand Up @@ -77,6 +80,10 @@ for x do
--enable-seccomp) SECCOMP=yes;;
--disable-ntp) NTP=no;;
--enable-ntp) NTP=yes;;
--disable-ntpd) NTPD=no;;
--enable-ntpd) NTPD=yes; NTP=yes;;
--disable-timesyncd) TIMESYNCD=no;;
--enable-timesyncd) TIMESYNCD=yes; NTP=yes;;
--privsepuser) PRIVSEP_USER=$var;;
--prefix) PREFIX=$var;prefix=$var;; # prefix is set for autotools compat
--sysconfdir) SYSCONFDIR=$var;;
Expand Down Expand Up @@ -1698,41 +1705,68 @@ echo "STATUSARG= $STATUSARG" >>config.mk

HOOKS=
if ! $HOOKSET; then
printf "Checking for ntpd ... "
NTPD=$(_which ntpd)
if [ -n "$NTPD" ]; then
echo "$NTPD (50-ntp.conf)"
else
echo "not found"
fi
printf "Checking for chronyd ... "
CHRONYD=$(_which chronyd)
if [ -n "$CHRONYD" ]; then
echo "$CHRONYD (50-ntp.conf)"
else
echo "not found"
fi
if [ -n "$NTPD" ] || [ -n "$CHRONYD" ]; then
HOOKS="$HOOKS${HOOKS:+ }50-ntp.conf"
fi
# Warn if both are detected
if [ -n "$NTPD" ] && [ -n "$CHRONYD" ]; then
echo "NTP will default to $NTPD"
fi
if ! [ "$NTP" = "no" ]; then
printf "Checking for ntpd ... "
if [ -z "$NTPD" ]; then
# if not explicitly set enable/disable, try to autodetect

NTPD_PATH=$(_which ntpd)
if [ -n "$NTPD_PATH" ]; then
NTPD=yes
NTP=yes
echo "$NTPD_PATH (Selecting 50-ntp.conf)"
else
echo "not found"
fi
printf "Checking for chronyd ... "
CHRONYD_PATH=$(_which chronyd)
if [ -n "$CHRONYD_PATH" ]; then
NTPD=yes
NTP=yes
echo "$CHRONYD_PATH (Selecting 50-ntp.conf)"
else
echo "not found"
fi

# Warn if both are detected
if [ -n "$NTPD_PATH" ] && [ -n "$CHRONYD_PATH" ]; then
echo "NTP will default to $NTPD_PATH"
fi
elif [ "$NTPD" = "no" ]; then
echo "skipped"
else
echo "selected via --enable-ntpd (Selecting 50-ntp.conf)"
fi

printf "Checking for timesyncd ... "
TIMESYNCD=
for x in /usr/lib/systemd/systemd-timesyncd; do
if [ -x "$x" ]; then
TIMESYNCD=$x
break
printf "Checking for timesyncd ... "
if [ -z "$TIMESYNCD" ]; then
TIMESYNCD_PATH=
for x in /usr/lib/systemd/systemd-timesyncd; do
if [ -x "$x" ]; then
TIMESYNCD=yes
TIMESYNCD_PATH=$x
NTP=yes
break
fi
Comment on lines +1742 to +1750
Copy link
Copy Markdown

@coderabbitai coderabbitai bot Apr 13, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Check the same timesyncd path that the shipped hook uses.

The autodetect loop only probes /usr/lib/systemd/systemd-timesyncd, but hooks/50-timesyncd.conf checks /lib/systemd/systemd-timesyncd at runtime. On systems that only expose the /lib/... path, configure will miss timesyncd and skip installing the hook even though the runtime hook would work.

Proposed fix
-			for x in /usr/lib/systemd/systemd-timesyncd; do
+			for x in /lib/systemd/systemd-timesyncd \
+				 /usr/lib/systemd/systemd-timesyncd; do
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@configure` around lines 1742 - 1750, The configure script only checks
/usr/lib/systemd/systemd-timesyncd when setting TIMESYNCD/TIMESYNCD_PATH/NTP,
but the runtime hook hooks/50-timesyncd.conf expects
/lib/systemd/systemd-timesyncd; update the autodetect loop in the configure
logic that sets TIMESYNCD and TIMESYNCD_PATH to probe both paths (at least
/usr/lib/systemd/systemd-timesyncd and /lib/systemd/systemd-timesyncd) and set
NTP=yes when one is executable so the hook installation decision matches the
runtime hook path check.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should update the timesyncd.conf as well, have it check both paths.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧩 Analysis chain

Good idea! Let me check the current content of 50-timesyncd.conf to propose the right fix.


🏁 Script executed:

#!/bin/bash
fd -i "timesyncd" --type f
fd -i "timesyncd" --type f | xargs cat

Length of output: 1505


@ColinMcInnes — agreed, both sides need updating. Here are the two changes:

1. configure — add /lib/systemd/systemd-timesyncd to the autodetect loop

-			for x in /usr/lib/systemd/systemd-timesyncd; do
+			for x in /lib/systemd/systemd-timesyncd \
+				 /usr/lib/systemd/systemd-timesyncd; do

2. hooks/50-timesyncd.conf — guard against both paths being absent

-if [ ! -x /lib/systemd/systemd-timesyncd ]; then
-	return
-fi
+if [ ! -x /lib/systemd/systemd-timesyncd ] && \
+   [ ! -x /usr/lib/systemd/systemd-timesyncd ]; then
+	return
+fi

This keeps configure's detection and the hook's runtime guard in sync — both will accept either installation path. On systems that merge /lib into /usr/lib (e.g. via a symlink), the loop in configure will naturally find it under whichever path exists first, and the hook will do the same.

done
if [ "$TIMESYNCD" = "yes" ]; then
echo "$TIMESYNCD_PATH (Selecting 50-timesyncd.conf)"
else
echo "not found"
fi
elif [ "$TIMESYNCD" = "no" ]; then
echo "skipped"
else
echo "selected via --enable-timesyncd (Selecting 50-timesyncd.conf)"
fi

# Choose hook based on enabled time service
if [ "$NTPD" = "yes" ]; then
HOOKS="$HOOKS${HOOKS:+ }50-ntp.conf"
fi
if [ "$TIMESYNCD" = "yes" ]; then
HOOKS="$HOOKS${HOOKS:+ }50-timesyncd.conf"
fi
done
if [ -n "$TIMESYNCD" ]; then
echo "$TIMESYNCD"
HOOKS="$HOOKS${HOOKS:+ }50-timesyncd.conf"
else
echo "not found"
fi

printf "Checking for ypbind ... "
Expand Down Expand Up @@ -1790,9 +1824,19 @@ if ! $HOOKSET; then
fi
fi
fi
if [ "$NTP" = yes ]; then
# --enable-ntp

if [ -z "$NTP" ]; then
if [ "$NTPD" = "yes" ] || [ "$TIMESYNCD" = "yes" ]; then
NTP=yes
fi
fi
if [ "$NTP" = "yes" ]; then
# --enable-ntp or ntp/timesyncd service was autodetected
echo "Enabling NTP support"
echo "UNCOMMENT_NTP= yes" >>$CONFIG_MK
else
# --disable-ntp
echo "NTP support is disabled"
fi

echo >>$CONFIG_H
Expand Down
Loading