<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>