svn commit: r1935199 - httpd/docs-build/trunk

[email protected] Thu, 11 Jun 2026 13:33:20 -0000
Newsgroups gmane.comp.apache.cvs
Message-ID <178118480022.809488.10084011244496441916@svn03-he-fi>
Author: rbowen
Date: Thu Jun 11 13:33:19 2026
New Revision: 1935199

Log:
Add automatic vnu.jar fetch/update to build.sh

The Nu Html Checker (vnu.jar) is now a build dependency for validating
the generated HTML5 documentation output. This change adds a step to
build.sh that ensures vnu.jar is present and current before invoking
Ant:

  - Queries the GitHub releases API for validator/validator to obtain
    the SHA-256 digest of the latest vnu.jar asset.
  - Computes the SHA-256 of the local vnu.jar (if present) and
    compares against the remote digest.
  - If the jar is missing or outdated, downloads the latest directly
    from https://github.com/validator/validator/releases/download/latest/vnu.jar
  - Degrades gracefully if the network is unavailable: warns and
    continues with the existing jar (or skips validation if absent).

The check runs before the Ant exec, after the JDK version gate.

Motivation: https://lists.apache.org/thread/g4gfvgzqqxf1qdbkcjfjy79jl66tntoy

Modified:
   httpd/docs-build/trunk/build.sh

Modified: httpd/docs-build/trunk/build.sh
==============================================================================
--- httpd/docs-build/trunk/build.sh	Thu Jun 11 13:28:11 2026	(r1935198)
+++ httpd/docs-build/trunk/build.sh	Thu Jun 11 13:33:19 2026	(r1935199)
@@ -138,6 +138,42 @@ if ! java -fullversion 2>&1 | egrep -e '
      exit 1
 fi
 
+# --- Ensure vnu.jar is present and up-to-date ---
+VNU_JAR="${ANT_HOME}/vnu.jar"
+VNU_URL="https://github.com/validator/validator/releases/download/latest/vnu.jar"
+
+# Get the expected SHA-256 from the GitHub release metadata
+VNU_REMOTE_SHA=$(curl -sfL "https://api.github.com/repos/validator/validator/releases/latest" \
+    | grep -A2 '"name":"vnu.jar"' | grep '"digest"' \
+    | sed 's/.*"sha256:\([a-f0-9]*\)".*/\1/')
+
+if [ -z "$VNU_REMOTE_SHA" ]; then
+    echo "Warning: could not determine latest vnu.jar checksum from GitHub."
+    if [ ! -f "$VNU_JAR" ]; then
+        echo "  vnu.jar is missing and cannot be fetched. HTML validation will be skipped."
+    else
+        echo "  Continuing with existing vnu.jar."
+    fi
+else
+    # Compute local SHA-256 (if file exists)
+    VNU_LOCAL_SHA=""
+    if [ -f "$VNU_JAR" ]; then
+        VNU_LOCAL_SHA=$(shasum -a 256 "$VNU_JAR" | cut -d' ' -f1)
+    fi
+
+    if [ "$VNU_LOCAL_SHA" = "$VNU_REMOTE_SHA" ]; then
+        echo "vnu.jar is up-to-date."
+    else
+        echo "Fetching latest vnu.jar ..."
+        curl -sfL -o "$VNU_JAR" "$VNU_URL"
+        if [ $? -eq 0 ] && [ -f "$VNU_JAR" ]; then
+            echo "vnu.jar updated successfully."
+        else
+            echo "Warning: failed to download vnu.jar. HTML validation may not work."
+        fi
+    fi
+fi
+
 if [ -n "$CYGHOME" ]; then
     exec "$JAVACMD" $ANT_OPTS -classpath "$LOCALCLASSPATH" -Dant.home="${ANT_HOME}" -Dcygwin.user.home="$CYGHOME" org.apache.tools.ant.Main $ANT_ARGS "$@"
 else