[Git][NTPsec/ntpsec][test_bin] 14 commits: Assorted typo and grammar corrections.

Matt Selsky gitlab at mg.gitlab.com
Fri Oct 12 06:28:13 UTC 2018


Matt Selsky pushed to branch test_bin at NTPsec / ntpsec


Commits:
08d27239 by Paul Theodoropoulos at 2018-10-01T23:09:56Z
Assorted typo and grammar corrections.

- - - - -
fe4738b8 by James Browning at 2018-10-02T01:16:15Z
green bar

- - - - -
42d9e067 by Paul Theodoropoulos at 2018-10-02T02:57:35Z
Small wording and formatting adjustments for clarity.

- - - - -
7fe54aa3 by Paul Theodoropoulos at 2018-10-02T03:11:06Z
Typos, grammar.

- - - - -
9ea65432 by James Browning at 2018-10-02T03:25:16Z
issue #500 shorten status line

- - - - -
03adfbe2 by Gary E. Miller at 2018-10-02T18:09:46Z
ntpleapfetch: do not continue with no leapfile specified.

- - - - -
e75ee04e by Paul Theodoropoulos at 2018-10-02T18:16:04Z
 Grammar, some formatting for clarity

- - - - -
4310c0bb by Paul Theodoropoulos at 2018-10-02T18:43:25Z
WIP significant rewording and reworking of examples

- - - - -
f3acfd2a by Gary E. Miller at 2018-10-02T19:45:20Z
pylintrc: Add a pylint config file.  Advisory only.

Don't take pylint religiously, but it is usefull.

- - - - -
72d4ee30 by Gary E. Miller at 2018-10-09T22:03:23Z
INSTALL: Tell users the default installs no refclocks.

A very common problem for newbies.

- - - - -
53520eee by Gary E. Miller at 2018-10-09T22:57:38Z
ntpleapfetch: change bash to sh.

As devel/hacking.txt says:

"The only scripting language allowed and supported other than Python is
POSIX sh (this is more restricted than bash!)."

- - - - -
faa798fa by Gary E. Miller at 2018-10-09T23:37:36Z
tests/python3-tester.sh: remove bash-isms

Many OS do not use bash.  Sometimes do to license issues.

- - - - -
a75366dc by Gary E. Miller at 2018-10-09T23:38:22Z
tests/option-tester.sh: remove bash-isms

Many OS do not use bash.  Sometimes do to license issues.

- - - - -
c8794e74 by Ian Bruene at 2018-10-12T06:28:05Z
Added bin_test to waf check.

- - - - -


12 changed files:

- INSTALL
- NEWS
- docs/assoc.txt
- docs/authentic.txt
- docs/index.txt
- ntpclients/ntpleapfetch
- ntpclients/ntpmon.py
- ntpclients/ntpviz.py
- + pylintrc
- tests/option-tester.sh
- tests/python3-tester.sh
- wscript


Changes:

=====================================
INSTALL
=====================================
@@ -106,7 +106,9 @@ Under Unix, the simplest way to compile this package is:
 
   3. Run `./waf configure' to configure the package for your system.
   You may want to add configuration options after the verb 'configure';
-  see below.
+  see below. NOTE: if you will be using any local reference clocks (GPS,
+  PTP, SHM, etc.) then you need to configure for them by running the
+  command: `./waf configure --refclock=all`.
 
   4. Run `./waf build' to compile the package.
 


=====================================
NEWS
=====================================
@@ -53,7 +53,7 @@ The following NTP Classic CVEs announced in February 2018 do not affect NTPsec:
 
 We have dropped support for Broadcast servers.  We had kept it for
 older desktop operating systems listening on the local network
-broadcast domain, a use case that is now no longer in use at sane
+broadcast domain, a use case that is no longer employed in sane
 environments, and no longer necessary for modern desktop OSs.
 
 It is now possible to unpeer refclocks using a type/unit specification
@@ -108,8 +108,8 @@ It prepares your system for an NTPsec source build by installing all required
 dependencies on the build host.
 
 Extra digits of precision are now output in numerous places.  The
-driftfile now output 6 digits past the decimal point instead of 3.  The
-stats files now output 9 digits past the decimal point instead of 6 for
+driftfile now stores 6 digits past the decimal point instead of 3.  The
+stats files now stores 9 digits past the decimal point instead of 6 for
 some fields. ntpq and ntpmon also report extra digits of precision in
 multiple places.  These changes may break simple parsing scripts.
 
@@ -153,7 +153,7 @@ functional changes.  Obsolete options have been dropped, logging is
 done a bit differently, and the synchronization-distance computation has
 been brought up to date with ntpd's. Also, this version can be told to
 collect multiple samples and use whichever has the lowest combination
-of stratum and synch distance.
+of stratum and synchronization distance.
 
 A new tool for time-service operators, ntpmon, supports real-time
 monitoring of your NTP installation's status.
@@ -293,9 +293,12 @@ forward-ported from Classic:
 [Bug 2965] Local clock didn't work since 4.2.8p4.
 [Bug 2969] Segfault from ntpq/mrulist when looking at server with lots of clients
 
-We regard NTP Classic's [Bug 3012] (CVE-2016-1549) Sybil
-vulnerability: ephemeral association attack (Credit: Matthew van Gundy
-of Cisco ASIG) as a duplicate of CVE-2015-7974 (see 0.9.1 release
+We regard the following NTP Classic bug -
+
+[Bug 3012] (CVE-2016-1549) Sybil vulnerability: ephemeral association attack
+(Credit: Matthew van Gundy of Cisco ASIG)
+
+as a duplicate of CVE-2015-7974 (see 0.9.1 release
 notes) and it is WONTFIX for the time being: it is
 correct-but-unfortunate behavior consequent to confusing and
 inflexible semantics of ntp.conf's access control language, and we


=====================================
docs/assoc.txt
=====================================
@@ -36,7 +36,7 @@ _preemptable_ and _ephemeral_. Persistent associations are mobilized by
 a configuration command and never demobilized. Preemptable associations
 are mobilized by a configuration command which
 includes the +preempt+ option or upon arrival of an automatic server
-discovery packet. They are are demobilized by timeout or when preempted
+discovery packet. They are demobilized by timeout or when preempted
 by a "better" server, as described on the link:discover.html[Automatic
 Server Discovery Schemes] page.
 
@@ -83,7 +83,7 @@ options should not be used with reference clock drivers.
 Symmetric active/passive mode is intended for configurations where a
 clique of low-stratum peers operate as mutual backups for each other.
 Each peer operates with one or more primary reference sources, such as a
-reference clock, or a set of secondary (stratum, 2) servers known to be
+reference clock, or a set of secondary (stratum 2) servers known to be
 reliable and authentic. Should one of the peers lose all reference
 sources or simply cease operation, the other peers will automatically
 reconfigure so that time and related values can flow from the surviving
@@ -95,7 +95,7 @@ configuration.
 A symmetric active peer sends a symmetric active (mode 1) message to a
 designated peer. If a matching configured symmetric active association
 is found, the designated peer returns a symmetric active message. If no
-matching association is found, the designated peer mobilizes a ephemeral
+matching association is found, the designated peer mobilizes an ephemeral
 symmetric passive association and returns a symmetric passive (mode 2)
 message. Since an intruder can impersonate a symmetric active peer and
 cause a spurious symmetric passive association to be mobilized,
@@ -107,7 +107,7 @@ which formerly set up a symmetric active association is now a synonym
 for +server+. Servers which receive symmetric active messages will
 immediately reply with symmetric passive responses without setting up
 any new association; essentially they treat such messages exactly
-like client-mode messages aside from putting a different mode number
+like client-mode messages, aside from putting a different mode number
 into the response.
 
 [[broad]]
@@ -200,7 +200,7 @@ hr), respectively.
 Occasionally it is necessary to send packets temporarily at intervals
 less than the poll interval. For instance, with the +burst+ and +iburst+
 options of the link:confopt.html[+server+] command, the poll program
-sends a burst of several packets at 2-sec intervals. In either case the
+sends a burst of several packets at 2 second intervals. In either case the
 poll program avoids sending needless packets if the server is not
 responding. The client begins a burst with a single packet. When the
 first packet is received from the server, the client continues with the


=====================================
docs/authentic.txt
=====================================
@@ -30,8 +30,8 @@ include::includes/authopt.txt[]
 == Introduction ==
 
 Authentication support allows the NTP client to verify that the server
-is in fact known and trusted and not an intruder intending
-accidentally or on purpose to masquerade as that server.  NTP performs
+is in fact known and trusted and not an intruder accidentally
+or intentionally masquerading as that server.  NTP performs
 authentication via message digests. It computes a one-way hash, which
 verifies that the server has the correct private key and key identifier.
 
@@ -45,7 +45,7 @@ options described below specify the locations of the key files and
 which symmetric keys are trusted.
 
 Authentication is always enabled, although ineffective if not configured
-as described below. If a NTP packet arrives including a message
+as described below. If an NTP packet arrives including a message
 authentication code (MAC), it is accepted only if it passes all
 cryptographic checks. The checks require correct key ID, key value and
 message digest. If the packet has been modified in any way
@@ -55,9 +55,9 @@ discarded.  Authentication doesn't prevent replays.
 [[symm]]
 === Symmetric-Key Cryptography ===
 
-NTP allows any one of possibly 65,535 keys, each distinguished by a
-32-bit key identifier, to authenticate an association. The servers and
-clients involved must agree on the key and key identifier to
+NTP allows use of any one of possibly 65,535 keys, each distinguished by a
+32-bit key identifier, to authenticate an association. Both server and
+client must agree on the key and key identifier in order to
 authenticate NTP packets. Keys and related information are specified
 in a key file. More info in {ntpkeysman}. It must be distributed
 and stored using secure means beyond the scope of the NTP protocol
@@ -81,31 +81,34 @@ A server receiving an unauthenticated packet will respond with an
 unauthenticated packet, while the same server receiving a packet of a
 cryptotype it supports will respond with packets of that cryptotype.
 
-Some examples may help to reduce confusion. Client Alice has no
-keys file. Server Bob has a symmetric key file.
-Alice's unauthenticated messages arrive at Bob,
-who replies with unauthenticated messages. Cathy has a copy of Bob's
-symmetric key file and has selected key ID 4 in messages to Bob. Bob
-verifies the message with his key ID 4. If it's the same key and the
-message is verified, Bob sends Cathy a reply authenticated with that
-key. If verification fails, Bob sends Cathy a crypto-NAK,
-which tells her something broke. She can see the evidence using the
-{ntpqman} program.
-
-It should be clear from the above that Bob can support all the girls at
-the same time, as long as he has compatible authentication and identity
-credentials. Now, Bob can act just like the girls in his own choice of
-servers; he can run multiple configured associations with multiple
-different servers (or the same server, although that might not be
-useful). But, wise security policy might preclude some combinations;
-for instance, running authentication with one server
-and no authentication with another might not be wise.
+Some examples may help to reduce confusion.
+
+Client Alice has no key file. Server Bob has a symmetric key file.
+Alice sends an unauthenticated message to Bob. Bob therefore replies
+also with an unauthenticated message.
+
+Client Carol does have a copy of Bob's symmetric key file. Carol selects
+key ID 4, and sends a message to Bob. Bob verifies the message with his
+key ID 4. If the key matches and the message verifies, Bob replies to
+Carol with a message authenticated with his key ID 4. If verification fails,
+Bob sends Carol a crypto-NAK, which tells her that something is broken.
+She can see the evidence using the {ntpqman} program.
+
+It should be clear from the above that Bob can support both unauthenticated
+Alice and authenticated Carol alike. Unauthenticated messages will 
+receive unauthenticated replies. Authenticated messages will receive
+authenticated replies, assuming the authentication method and credentials
+are valid and compatible.
+
+Bob also can act just like Alice and Carol in his own choice of connections
+to other servers; he can run multiple configured associations with multiple
+different servers (or the same server, although that might not be useful).
 
 [[keys]]
 == Key Management ==
 
 Shared keys used for authentication are incorporated
-keys files generated by the {ntpkeygenman} utility
+into the keys files generated by the {ntpkeygenman} utility
 program.
 
 [[algorithms]]
@@ -115,10 +118,9 @@ The NTP standards include symmetric (private-key) authentication using
 any message digest algorithm supported by the OpenSSL package.
 Digests longer than 20 bytes will be truncated.
 This algorithm computes a message digest or one-way hash
-which can be used to verify the client has the same message digest as
+which can be used to verify that the client has the same message digest as
 the server.
 
-
 Authentication is configured separately for each association using the
 +key+ option of the +server+ configuration command, as
 described in the link:confopt.html[Server Options] page. The
@@ -165,7 +167,6 @@ AES needs a 16 byte key.  Longer keys are truncated.  Shorter
 keys are padded with 0s.  AES MACs are 16 bytes long.  MACs longer
 than 20 bytes will be truncated.
 
-
 Keys and related information are specified in a keys file, which must be
 distributed and stored using secure means beyond the scope of the NTP
 protocol itself. Besides the keys used for ordinary NTP associations,


=====================================
docs/index.txt
=====================================
@@ -47,7 +47,7 @@ For background on the problems NTP solves, see
 http://www.catb.org/gpsd/time-service-intro.html[Introduction to
 Time Service].  This white paper discusses time source types, relative
 accuracy, relative cost, and how those figures of merit have changed
-in recent decades
+in recent decades.
 
 The link:ntpspeak.html[Glossary of NTP-speak] might also be a helpful
 guide for the perplexed.
@@ -66,7 +66,7 @@ link:ntpsec.html[this summary].
 
 NTPsec supports all operating systems conforming to POSIX.1-2001 and
 ISO/IEC 9899:1999 (aka C99).  The POSIX.1-2008 clock calls
-clock_gettime(2) and clock_settime(2) musy also be present.  Primary
+clock_gettime(2) and clock_settime(2) must also be present.  Primary
 platforms include Linux and the *BSD family; any reasonably modern
 proprietary Unix will also serve.  The OS must have either a
 Linux-like adjtimex(2) call or a BSD-like ntp_adjtime(2) call.
@@ -87,7 +87,7 @@ redistributable as open source.
 [[hand]]
 == The Handbook ==
 
-A good deal of tutorial and directive information is available on the
+A good deal of tutorial and directive information is available in the
 handbook pages. These should be read in conjunction with the command and
 option information available on the pages listed on the
 link:sitemap.html[Site Map] page.
@@ -115,15 +115,15 @@ link:refclock.html[Reference Clock Support]::
 link:warp.html[How NTP Works]::
   Gives an overview of the NTP daemon architecture and how it works.
 link:outside-tools.html[Outside Tools]::
-  A variety of tools not directly maintained along with NTP can be
-  useful for administering and monitoring it. This page collects some
-  references and links.
+  A variety of tools not directly maintained by the NTPsec project
+  that can be useful for administering and monitoring NTP. This page
+  collects some references and links.
 
 [[build]]
 == Building and Installing NTP ==
 
 The link:build.html[Building and Installing the Distribution] page
-gives and overview of the procedures for building and installing
+gives an overview of the procedures for building and installing NTPsec
 on a typical system.  For more details, see the INSTALL file in the
 distribution root.
 
@@ -135,7 +135,7 @@ include::includes/manual.txt[]
 
 Like other things in modern Internet life, NTP problems can be
 devilishly intricate. This distribution includes a number of utilities
-designed to identify and repair problems using an integrated management
+designed to identify and resolve problems using an integrated management
 protocol supported by the link:ntpq.html[+ntpq+] utility program.
 
 The link:debug.html[NTP Debugging Techniques] page contains useful


=====================================
ntpclients/ntpleapfetch
=====================================
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
 
 # Copyright (C) 2014 Timothe Litt litt at acm dot org
 # Modified 20180105 Sanjeev Gupta ghane0 at gmail.com
@@ -358,6 +358,10 @@ if [ -n "$1" ]; then
     fi
     LEAPFILE="$1"
 fi
+if [ -z "$LEAPFILE" ]; then
+    log "error" "No leapfile in ntp.conf or on the command line."
+    exit 1
+fi
 
 # Verify the current file
 # If it is missing, doesn't validate or expired


=====================================
ntpclients/ntpmon.py
=====================================
@@ -28,6 +28,7 @@ Any keystroke causes a poll and update. Keystroke commands:
 from __future__ import print_function, division
 
 import getopt
+import re
 import sys
 import time
 
@@ -76,9 +77,10 @@ def statline(_peerlist, _mrulist, nyquist):
     "Generate a status line"
     # We don't use stdversion here because the presence of a date is confusing
     leader = sysvars['version'][0]
+    leader = re.sub(r" \([^\)]*\)" , "", leader)
     if span.entries:
         trailer = "Updated: %s (%s)" \
-                  % (iso8601(span.entries[0].last),
+                  % (iso8601(span.entries[0].last).split("T")[1],
                      ntp.util.PeerSummary.prettyinterval(nyquist))
     else:
         trailer = ""


=====================================
ntpclients/ntpviz.py
=====================================
@@ -1707,6 +1707,11 @@ thead {
 tbody tr {
     vertical-align: top;
 }
+tbody tr:nth-child(6n+4),
+tbody tr:nth-child(6n+5),
+tbody tr:nth-child(6n+6) {
+    background-color: rgba(0,255,0,0.2);
+}
 .section {
     color: #000000;
     text-decoration: none;


=====================================
pylintrc
=====================================
@@ -0,0 +1,25 @@
+# NTPsec configuration for pylintrc
+
+# NTPsec does not try to conform to pylint, but pylint can be useful
+# to find things like unused variables, missing docstrings, undefined
+# variables, unused imports, etc.
+# 
+# The whitespace checker in pylint conflicts with that in pycodestyle.
+# pycodestyle replaces pep8 for checking PEP8 conformity.
+# 
+# Use pylint as an advisory tool, not as a blunt instrument.
+
+[MESSAGES CONTROL]
+
+# Disable warnings that are silly
+disable=bad-continuation,
+        invalid-name,
+        misplaced-comparison-constant,
+        no-self-use,
+        too-many-branches,
+        too-many-lines,
+        too-many-locals,
+        too-many-nested-blocks,
+        too-many-public-methods,
+        too-many-statements
+


=====================================
tests/option-tester.sh
=====================================
@@ -1,6 +1,6 @@
-#!/usr/bin/env bash
-# sh on NetBSD and FreeBSD says:
-#   sh: ${PIPESTATUS[...}: Bad substitution
+#!/bin/sh
+# keep this POSIX sh compatible. No bash-isms!
+# replace |& with 2>&1 |
 
 # This is a hack to build with various configuration options.
 # The intent is to check building combinations that normal testing doesn't use.
@@ -8,6 +8,11 @@
 # Stuff goes into various test-* directories.
 # Running again starts by deleting everything in the directory.
 
+# set pipefail to catch pipeline failures
+set -o pipefail
+# crash on unset shell variables
+set -u
+
 LINUX=""
 if [ `uname -s` = "Linux" -a -f /usr/include/seccomp.h ]
 then
@@ -20,47 +25,47 @@ doit ()
   DIR=test-$1
   [ ! -d $DIR ] && mkdir $DIR
   rm -rf $DIR/*
-  ./waf configure --out=$DIR $2          |& tee    $DIR/test.log
-  WAF1=${PIPESTATUS[0]}
+  ./waf configure --out=$DIR $2 2>&1 | tee    $DIR/test.log
+  WAF1=$?
   WAF2=0
   WAF3=0
   if [ "$WAF1" = 0 ]
   then
-  echo                                   |& tee -a $DIR/test.log
-  ./waf build                            |& tee -a $DIR/test.log
-  WAF2=${PIPESTATUS[0]}
+  echo                           2>&1    | tee -a $DIR/test.log
+  ./waf build                    2>&1    | tee -a $DIR/test.log
+  WAF2=$?
   if [ "$WAF2" = 0 ]
   then
-  echo                                   |& tee -a $DIR/test.log
-  ./waf check                            |& tee -a $DIR/test.log
-  WAF3=${PIPESTATUS[0]}
+  echo                           2>&1    | tee -a $DIR/test.log
+  ./waf check                    2>&1    | tee -a $DIR/test.log
+  WAF3=$?
   fi
   fi
   if [ "$WAF1" != 0 -o "$WAF2" != 0 -o "$WAF3" != 0 ] 
   then
-    echo                                         |& tee -a $DIR/test.log
-    echo "Trouble with $DIR"                     |& tee -a $DIR/test.log
+    echo                                  2>&1   | tee -a $DIR/test.log
+    echo "Trouble with $DIR"              2>&1   | tee -a $DIR/test.log
   else
-    echo -n "VERSION: "                          |& tee -a $DIR/test.log
-    ./$DIR/main/ntpd/ntpd --version              |& tee -a $DIR/test.log
-    echo -n "VERSION: "                          |& tee -a $DIR/test.log
-    ./$DIR/main/ntpclients/ntpq --version        |& tee -a $DIR/test.log
-    echo -n "VERSION: "                          |& tee -a $DIR/test.log
-    ./$DIR/main/ntpclients/ntpdig --version      |& tee -a $DIR/test.log
+    echo -n "VERSION: "                   2>&1   | tee -a $DIR/test.log
+    ./$DIR/main/ntpd/ntpd --version       2>&1   | tee -a $DIR/test.log
+    echo -n "VERSION: "                   2>&1   | tee -a $DIR/test.log
+    ./$DIR/main/ntpclients/ntpq --version 2>&1   | tee -a $DIR/test.log
+    echo -n "VERSION: "                   2>&1   | tee -a $DIR/test.log
+    ./$DIR/main/ntpclients/ntpdig --version 2>&1 | tee -a $DIR/test.log
     if [ `uname -s` != "NetBSD" ]
     then
       # no Python/curses on NetBSD
-      echo -n "VERSION: "                        |& tee -a $DIR/test.log
-      ./$DIR/main/ntpclients/ntpmon --version    |& tee -a $DIR/test.log
+      echo -n "VERSION: "                 2>&1   | tee -a $DIR/test.log
+      ./$DIR/main/ntpclients/ntpmon --version 2>&1 | tee -a $DIR/test.log
     fi
 if [ "`which gpsmon 2>/dev/null`" != "" ]
 then
     # needs GPSD library
-    echo -n "VERSION: "                          |& tee -a $DIR/test.log
-    ./$DIR/main/ntpclients/ntploggps --version   |& tee -a $DIR/test.log
+    echo -n "VERSION: "                         2>&1 | tee -a $DIR/test.log
+    ./$DIR/main/ntpclients/ntploggps --version  2>&1 | tee -a $DIR/test.log
 fi
-    echo -n "VERSION: "                          |& tee -a $DIR/test.log
-    ./$DIR/main/ntpclients/ntplogtemp --version  |& tee -a $DIR/test.log
+    echo -n "VERSION: "                         2>&1 | tee -a $DIR/test.log
+    ./$DIR/main/ntpclients/ntplogtemp --version 2>&1 | tee -a $DIR/test.log
   fi
   echo
   echo


=====================================
tests/python3-tester.sh
=====================================
@@ -1,10 +1,15 @@
-#!/usr/bin/env bash
-# sh on NetBSD and FreeBSD says:
-#   sh: ${PIPESTATUS[...}: Bad substitution
+#!/bin/sh
+# keep this POSIX sh compatible.  No bash-isms!
+# replace |& with 2>&1 |
 
 # This is a clone of option-tester.sh
 # to build with python3 and do minimal (version) testing.
 
+# set pipefail to catch pipeline failures
+set -o pipefail
+# crash on unset shell variables
+set -u
+
 if [ "`which python3 2>/dev/null`" = "" ]
 then
   echo "# Error: No python3 on this system."
@@ -16,47 +21,47 @@ doit ()
   DIR=test-$1
   [ ! -d $DIR ] && mkdir $DIR
   rm -rf $DIR/*
-  python3 ./waf configure --out=$DIR $2  |& tee    $DIR/test.log
-  WAF1=${PIPESTATUS[0]}
+  python3 ./waf configure --out=$DIR $2 2>&1 | tee    $DIR/test.log
+  WAF1=$?
   WAF2=0
   WAF3=0
   if [ "$WAF1" = 0 ]
   then
-  echo                                   |& tee -a $DIR/test.log
-  python3 ./waf build                    |& tee -a $DIR/test.log
-  WAF2=${PIPESTATUS[0]}
+  echo                            2>&1   | tee -a $DIR/test.log
+  python3 ./waf build             2>&1   | tee -a $DIR/test.log
+  WAF2=$?
   if [ "$WAF2" = 0 ]
   then
-  echo                                   |& tee -a $DIR/test.log
-  python3 ./waf check                    |& tee -a $DIR/test.log
-  WAF3=${PIPESTATUS[0]}
+  echo                            2>&1   | tee -a $DIR/test.log
+  python3 ./waf check             2>&1   | tee -a $DIR/test.log
+  WAF3=$?
   fi
   fi
   if [ "$WAF1" != 0 -o "$WAF2" != 0 -o "$WAF3" != 0 ] 
   then
-    echo                                 |& tee -a $DIR/test.log
-    echo "Trouble with $DIR"             |& tee -a $DIR/test.log
+    echo                          2>&1   | tee -a $DIR/test.log
+    echo "Trouble with $DIR"      2>&1   | tee -a $DIR/test.log
   else
-    echo -n "VERSION: "                                  |& tee -a $DIR/test.log
-    ./$DIR/main/ntpd/ntpd --version                      |& tee -a $DIR/test.log
-    echo -n "VERSION: "                                  |& tee -a $DIR/test.log
-    python3 ./$DIR/main/ntpclients/ntpq --version        |& tee -a $DIR/test.log
-    echo -n "VERSION: "                                  |& tee -a $DIR/test.log
-    python3 ./$DIR/main/ntpclients/ntpdig --version      |& tee -a $DIR/test.log
+    echo -n "VERSION: "                             2>&1 | tee -a $DIR/test.log
+    ./$DIR/main/ntpd/ntpd --version                 2>&1 | tee -a $DIR/test.log
+    echo -n "VERSION: "                             2>&1 | tee -a $DIR/test.log
+    python3 ./$DIR/main/ntpclients/ntpq --version   2>&1 | tee -a $DIR/test.log
+    echo -n "VERSION: "                             2>&1 | tee -a $DIR/test.log
+    python3 ./$DIR/main/ntpclients/ntpdig --version 2>&1 | tee -a $DIR/test.log
     if [ `uname -s` != "NetBSD" ]
     then
       # no Python/curses on NetBSD
-      echo -n "VERSION: "                                |& tee -a $DIR/test.log
-      python3 ./$DIR/main/ntpclients/ntpmon --version    |& tee -a $DIR/test.log
+      echo -n "VERSION: "                           2>&1 | tee -a $DIR/test.log
+      python3 ./$DIR/main/ntpclients/ntpmon --version 2>&1 | tee -a $DIR/test.log
     fi
     # if [ "`which gpsmon 2>/dev/null`" != "" ]
     # then
     # needs GPSD library - don't know how to test for python3 version
-    # echo -n "VERSION: "                                |& tee -a $DIR/test.log
-    # python3 ./$DIR/main/ntpclients/ntploggps --version |& tee -a $DIR/test.log
+    # echo -n "VERSION: "                                2>&1 | tee -a $DIR/test.log
+    # python3 ./$DIR/main/ntpclients/ntploggps --version 2>&1 | tee -a $DIR/test.log
     # fi
-    echo -n "VERSION: "                                  |& tee -a $DIR/test.log
-    python3 ./$DIR/main/ntpclients/ntplogtemp --version  |& tee -a $DIR/test.log
+    echo -n "VERSION: "                                 2>&1 | tee -a $DIR/test.log
+    python3 ./$DIR/main/ntpclients/ntplogtemp --version 2>&1 | tee -a $DIR/test.log
   fi
   echo
   echo


=====================================
wscript
=====================================
@@ -1082,6 +1082,9 @@ def build(ctx):
             if verbose > 0:
                 ctx.add_post_fun(test_print_log)
 
+            # Test binaries
+            ctx.add_post_fun(bin_test)
+
         # Write test log to a file
         ctx.add_post_fun(test_write_log)
 



View it on GitLab: https://gitlab.com/NTPsec/ntpsec/compare/2f5c74ca2e33bf25ecec3d4ba03174792a2c89db...c8794e7422cb6340bbe31d39366d011571e71e7a

-- 
View it on GitLab: https://gitlab.com/NTPsec/ntpsec/compare/2f5c74ca2e33bf25ecec3d4ba03174792a2c89db...c8794e7422cb6340bbe31d39366d011571e71e7a
You're receiving this email because of your account on gitlab.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ntpsec.org/pipermail/vc/attachments/20181012/877f6aba/attachment-0001.html>


More information about the vc mailing list