diff --git a/configure b/configure index e9c08f18..ac2852a5 100755 --- a/configure +++ b/configure @@ -39,6 +39,9 @@ SMALL= SANITIZE=no STATUSARG= OPENSSL= +NTPD= +CHRONYD= +TIMESYNCD= DHCPCD_DEFS=dhcpcd-definitions.conf @@ -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;; @@ -1696,43 +1703,83 @@ if [ -z "$STATUSARG" ]; then fi echo "STATUSARG= $STATUSARG" >>config.mk +if [ "$NTPD" = "yes" ] && [ "$TIMESYNCD" = "yes" ]; then + echo "Warning: --enable-ntpd and --enable-timesyncd are both set" >&2 + exit 1 +fi + 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 + # Explicit service selection should disable autodetect of the other service. + if [ "$TIMESYNCD" = "yes" ] && [ -z "$NTPD" ]; then + NTPD=no + fi + if [ "$NTPD" = "yes" ] && [ -z "$TIMESYNCD" ]; then + TIMESYNCD=no + 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 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" + fi + + 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 + done + if [ "$TIMESYNCD" = "yes" ]; then + echo "$TIMESYNCD_PATH (Selecting 50-timesyncd.conf)" + else + echo "not found" + fi + elif [ "$TIMESYNCD" = "no" ]; then + echo "skipped" + fi + + # Warn if both ntpd/chronyd and timesyncd are detected + if [ "$NTPD" = "yes" ] && [ -n "$TIMESYNCD_PATH" ]; then + echo "Both ntpd/chronyd and timesyncd detected; NTP will default to ntpd" + fi + + # Choose hook based on enabled time service + if [ "$NTPD" = "yes" ]; then + HOOKS="$HOOKS${HOOKS:+ }50-ntp.conf" + elif [ "$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 ... " @@ -1790,9 +1837,26 @@ 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 + printf "Enabling NTP support for ... " + if [ "$NTPD" = "yes" ]; then + echo "ntpd" + elif [ "$TIMESYNCD" = "yes" ]; then + echo "timesyncd" + else + echo "user defined time service via HOOKSCRIPTS" + fi echo "UNCOMMENT_NTP= yes" >>$CONFIG_MK +else + # --disable-ntp + echo "NTP support is disabled" fi echo >>$CONFIG_H