<pre style='margin:0'>
Christopher Nielsen (mascguy) pushed a commit to branch master
in repository macports-legacy-support.

</pre>
<p><a href="https://github.com/macports/macports-legacy-support/commit/d236fe0e152aa81943554c14304c6b2ac21732f9">https://github.com/macports/macports-legacy-support/commit/d236fe0e152aa81943554c14304c6b2ac21732f9</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit d236fe0e152aa81943554c14304c6b2ac21732f9
</span>Author: Fred Wright <fw@fwright.net>
AuthorDate: Mon Jun 24 18:37:55 2024 -0700

<span style='display:block; white-space:pre;color:#404040;'>    Add two manual tests for __MPLS_SDK_*.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    TESTED:
</span><span style='display:block; white-space:pre;color:#404040;'>    Tests pass normally, and fail with a manually induced error.
</span>---
 manual_tests/.gitignore          |  1 +
 manual_tests/checksdkincludes.sh | 21 ++++++++++
 manual_tests/checksdkversion.c   | 89 ++++++++++++++++++++++++++++++++++++++++
 3 files changed, 111 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/manual_tests/.gitignore b/manual_tests/.gitignore
</span><span style='display:block; white-space:pre;color:#808080;'>index fa54c02..099dc49 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/manual_tests/.gitignore
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/manual_tests/.gitignore
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -2,3 +2,4 @@
</span> !*.c
 !*.cc
 !*.cpp
<span style='display:block; white-space:pre;background:#e0ffe0;'>+!*.sh
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/manual_tests/checksdkincludes.sh b/manual_tests/checksdkincludes.sh
</span>new file mode 100755
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..663f0c5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/manual_tests/checksdkincludes.sh
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,21 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#! /bin/sh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Script to verify that files referencing __MPLS_SDK_* are including
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# _macports_extras/sdkversion.h.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# The optional argument is a git commit to apply the test to.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ID="$1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+HEADER="sdkversion.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+HEADERINC="_macports_extras/$HEADER"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+HEADERPATH="include/$HEADERINC"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+FILES="$(git grep -l '__MPLS_SDK_' $ID | grep -v ^$HEADERPATH)"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+for f in $FILES; do
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  if ! git grep -q "$HEADERINC" $ID -- "$f"; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    echo "\"#include <$HEADERINC>\" is missing from $f"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    ! break
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+done
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/manual_tests/checksdkversion.c b/manual_tests/checksdkversion.c
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..9c0a4cf
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/manual_tests/checksdkversion.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,89 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Copyright (c) 2024 Frederick H. G. Wright II <fw@fwright.net>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Permission to use, copy, modify, and distribute this software for any
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * purpose with or without fee is hereby granted, provided that the above
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * copyright notice and this permission notice appear in all copies.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * This is a manual test to check __MPLS_SDK_MAJOR against the SDK version
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * supplied via the SDKVER environment variable (defaulting to the target OS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * version), in the same format as MacOSX<version>.sdk.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Do this before everything else. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <_macports_extras/sdkversion.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <stdio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <stdlib.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#ifdef __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define TARGET_OS __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define TARGET_OS 1040
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+get_sdknum(const char *sdkver)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  long major, minor;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  char *endp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  if (!sdkver || !*sdkver) return TARGET_OS;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  major = strtol(sdkver, &endp, 10);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  if (*endp == '.') {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    minor = strtol(endp + 1, &endp, 10);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    minor = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  if (major < 10 || (major > 10 && minor != 0)) return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  if (*endp && (major != 10 || minor != 4 || *endp != 'u')) return -1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  if (major == 10 && minor <= 9) return major * 100 + minor * 10;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  return major * 10000 + minor * 100;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+main(int argc, char *argv[])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  const char *sdkver = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  int sdknum, sdkmajor;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  (void) argc; (void) argv;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  sdkver = getenv("SDKVER");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  sdknum = get_sdknum(sdkver);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  if (sdknum < 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    fprintf(stderr, "Bad SDK version: %s\n", sdkver ? sdkver : "???");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    return 20;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  sdkmajor = sdknum / 10 * 10;  /* Paranoia - not actually needed here */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  printf("Testing SDK version %s,%s numeric = %d, major = %d\n",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         sdkver ? sdkver : "<default>", sdkver ? "" : " assumed",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         sdknum, sdkmajor);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  #ifndef __MPLS_SDK_MAJOR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    printf("  __MPLS_SDK_MAJOR is undefined\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    return 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if (__MPLS_SDK_MAJOR != sdknum) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      printf("  __MPLS_SDK_MAJOR is %d, should be %d\n",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             __MPLS_SDK_MAJOR, sdkmajor);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      return 2;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+      printf("  __MPLS_SDK_MAJOR is correctly %d\n", sdkmajor);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span></pre><pre style='margin:0'>

</pre>