Repository: conan-io/conan

Issue:
[feature] Support for Xcode 13.3 (currently in beta)
Xcode 13.3 (still in beta) reports clang version as 13.1.6, so equivalent of #9642 is needed.

- [x] I've read the [CONTRIBUTING guide](https://github.com/conan-io/conan/blob/develop/.github/CONTRIBUTING.md).


Discussion:
czoido: Checking the Xcode 13.3 release notes: https://developer.apple.com/documentation/xcode-release-notes/xcode-13_3-release-notes
```
Xcode no longer passes -stdlib=libstdc++ to Clang, because Clang no longer supports that library on Apple platforms. 
If your project defines the CLANG_CXX_LIBRARY build setting, remove it because it no longer does anything. (83768231)
```



Patch:
diff --git a/conans/client/conf/__init__.py b/conans/client/conf/__init__.py
index a0c5bb8c6..94d7075cb 100644
--- a/conans/client/conf/__init__.py
+++ b/conans/client/conf/__init__.py
@@ -37,7 +37,7 @@ _t_default_settings_yml = Template(textwrap.dedent("""
         Macos:
             version: [None, "10.6", "10.7", "10.8", "10.9", "10.10", "10.11", "10.12", "10.13", "10.14", "10.15", "11.0", "12.0", "13.0"]
             sdk: [None, "macosx"]
-            sdk_version: [None, "10.13", "10.14", "10.15", "11.0", "11.1", "11.3", "12.0", "12.1"]
+            sdk_version: [None, "10.13", "10.14", "10.15", "11.0", "11.1", "11.3", "12.0", "12.1", "12.3"]
             subsystem: [None, catalyst]
         Android:
             api_level: ANY
@@ -45,24 +45,25 @@ _t_default_settings_yml = Template(textwrap.dedent("""
             version: ["7.0", "7.1", "8.0", "8.1", "8.2", "8.3", "9.0", "9.1", "9.2", "9.3", "10.0", "10.1", "10.2", "10.3",
                       "11.0", "11.1", "11.2", "11.3", "11.4", "12.0", "12.1", "12.2", "12.3", "12.4",
                       "13.0", "13.1", "13.2", "13.3", "13.4", "13.5", "13.6", "13.7",
-                      "14.0", "14.1", "14.2", "14.3", "14.4", "14.5", "14.6", "14.7", "14.8", "15.0", "15.1"]
+                      "14.0", "14.1", "14.2", "14.3", "14.4", "14.5", "14.6", "14.7", "14.8",
+                      "15.0", "15.1", "15.2", "15.3", "15.4"]
             sdk: [None, "iphoneos", "iphonesimulator"]
             sdk_version: [None, "11.3", "11.4", "12.0", "12.1", "12.2", "12.4",
                           "13.0", "13.1", "13.2", "13.4", "13.5", "13.6", "13.7",
-                          "14.0", "14.1", "14.2", "14.3", "14.4", "14.5", "15.0", "15.2"]
+                          "14.0", "14.1", "14.2", "14.3", "14.4", "14.5", "15.0", "15.2", "15.4"]
         watchOS:
             version: ["4.0", "4.1", "4.2", "4.3", "5.0", "5.1", "5.2", "5.3", "6.0", "6.1", "6.2",
-                      "7.0", "7.1", "7.2", "7.3", "7.4", "7.5", "7.6", "8.0", "8.1"]
+                      "7.0", "7.1", "7.2", "7.3", "7.4", "7.5", "7.6", "8.0", "8.1", "8.3", "8.4", "8.5"]
             sdk: [None, "watchos", "watchsimulator"]
             sdk_version: [None, "4.3", "5.0", "5.1", "5.2", "5.3", "6.0", "6.1", "6.2",
-                          "7.0", "7.1", "7.2", "7.4", "8.0", "8.0.1", "8.3"]
+                          "7.0", "7.1", "7.2", "7.4", "8.0", "8.0.1", "8.3", "8.5"]
         tvOS:
             version: ["11.0", "11.1", "11.2", "11.3", "11.4", "12.0", "12.1", "12.2", "12.3", "12.4",
                       "13.0", "13.2", "13.3", "13.4", "14.0", "14.2", "14.3", "14.4", "14.5", "14.6", "14.7",
-                      "15.0", "15.1"]
+                      "15.0", "15.1", "15.2", "15.3", "15.4"]
             sdk: [None, "appletvos", "appletvsimulator"]
             sdk_version: [None, "11.3", "11.4", "12.0", "12.1", "12.2", "12.4",
-                          "13.0", "13.1", "13.2", "13.4", "14.0", "14.2", "14.3", "14.5", "15.0", "15.2"]
+                          "13.0", "13.1", "13.2", "13.4", "14.0", "14.2", "14.3", "14.5", "15.0", "15.2", "15.4"]
         FreeBSD:
         SunOS:
         AIX:
@@ -117,7 +118,7 @@ _t_default_settings_yml = Template(textwrap.dedent("""
             cppstd: [None, 98, gnu98, 11, gnu11, 14, gnu14, 17, gnu17, 20, gnu20, 23, gnu23]
             runtime: [None, MD, MT, MTd, MDd]
         apple-clang: &apple_clang
-            version: ["5.0", "5.1", "6.0", "6.1", "7.0", "7.3", "8.0", "8.1", "9.0", "9.1", "10.0", "11.0", "12.0", "13.0"]
+            version: ["5.0", "5.1", "6.0", "6.1", "7.0", "7.3", "8.0", "8.1", "9.0", "9.1", "10.0", "11.0", "12.0", "13.0", "13.1"]
             libcxx: [libstdc++, libc++]
             cppstd: [None, 98, gnu98, 11, gnu11, 14, gnu14, 17, gnu17, 20, gnu20]
         intel:
diff --git a/conans/client/manager.py b/conans/client/manager.py
index e2aea0d62..2a5b4df8c 100644
--- a/conans/client/manager.py
+++ b/conans/client/manager.py
@@ -108,6 +108,11 @@ def deps_install(app, ref_or_path, install_folder, base_folder, graph_info, remo
 
     output = conanfile.output if root_node.recipe != RECIPE_VIRTUAL else out
 
+    if conanfile.info.invalid:
+        msg = "Invalid ID: {}. ".format(conanfile.info.invalid)
+        msg += "Trying to install dependencies, but this configuration will fail to build a package"
+        output.error(msg)
+
     if install_folder:
         # Write generators
         tmp = list(conanfile.generators)  # Add the command line specified generators
diff --git a/conans/client/migrations_settings.py b/conans/client/migrations_settings.py
index cded91a8f..5c21c5be7 100644
--- a/conans/client/migrations_settings.py
+++ b/conans/client/migrations_settings.py
@@ -3278,7 +3278,7 @@ os:
     Macos:
         version: [None, "10.6", "10.7", "10.8", "10.9", "10.10", "10.11", "10.12", "10.13", "10.14", "10.15", "11.0", "12.0", "13.0"]
         sdk: [None, "macosx"]
-        sdk_version: [None, "10.13", "10.14", "10.15", "11.0", "11.1", "11.3", "12.0", "12.1"]
+        sdk_version: [None, "10.13", "10.14", "10.15", "11.0", "11.1", "11.3", "12.0", "12.1", "12.3"]
         subsystem: [None, catalyst]
     Android:
         api_level: ANY
@@ -3286,24 +3286,25 @@ os:
         version: ["7.0", "7.1", "8.0", "8.1", "8.2", "8.3", "9.0", "9.1", "9.2", "9.3", "10.0", "10.1", "10.2", "10.3",
                   "11.0", "11.1", "11.2", "11.3", "11.4", "12.0", "12.1", "12.2", "12.3", "12.4",
                   "13.0", "13.1", "13.2", "13.3", "13.4", "13.5", "13.6", "13.7",
-                  "14.0", "14.1", "14.2", "14.3", "14.4", "14.5", "14.6", "14.7", "14.8", "15.0", "15.1"]
+                  "14.0", "14.1", "14.2", "14.3", "14.4", "14.5", "14.6", "14.7", "14.8",
+                  "15.0", "15.1", "15.2", "15.3", "15.4"]
         sdk: [None, "iphoneos", "iphonesimulator"]
         sdk_version: [None, "11.3", "11.4", "12.0", "12.1", "12.2", "12.4",
                       "13.0", "13.1", "13.2", "13.4", "13.5", "13.6", "13.7",
-                      "14.0", "14.1", "14.2", "14.3", "14.4", "14.5", "15.0", "15.2"]
+                      "14.0", "14.1", "14.2", "14.3", "14.4", "14.5", "15.0", "15.2", "15.4"]
     watchOS:
         version: ["4.0", "4.1", "4.2", "4.3", "5.0", "5.1", "5.2", "5.3", "6.0", "6.1", "6.2",
-                  "7.0", "7.1", "7.2", "7.3", "7.4", "7.5", "7.6", "8.0", "8.1"]
+                  "7.0", "7.1", "7.2", "7.3", "7.4", "7.5", "7.6", "8.0", "8.1", "8.3", "8.4", "8.5"]
         sdk: [None, "watchos", "watchsimulator"]
         sdk_version: [None, "4.3", "5.0", "5.1", "5.2", "5.3", "6.0", "6.1", "6.2",
-                      "7.0", "7.1", "7.2", "7.4", "8.0", "8.0.1", "8.3"]
+                      "7.0", "7.1", "7.2", "7.4", "8.0", "8.0.1", "8.3", "8.5"]
     tvOS:
         version: ["11.0", "11.1", "11.2", "11.3", "11.4", "12.0", "12.1", "12.2", "12.3", "12.4",
                   "13.0", "13.2", "13.3", "13.4", "14.0", "14.2", "14.3", "14.4", "14.5", "14.6", "14.7",
-                  "15.0", "15.1"]
+                  "15.0", "15.1", "15.2", "15.3", "15.4"]
         sdk: [None, "appletvos", "appletvsimulator"]
         sdk_version: [None, "11.3", "11.4", "12.0", "12.1", "12.2", "12.4",
-                      "13.0", "13.1", "13.2", "13.4", "14.0", "14.2", "14.3", "14.5", "15.0", "15.2"]
+                      "13.0", "13.1", "13.2", "13.4", "14.0", "14.2", "14.3", "14.5", "15.0", "15.2", "15.4"]
     FreeBSD:
     SunOS:
     AIX:
@@ -3358,7 +3359,7 @@ compiler:
         cppstd: [None, 98, gnu98, 11, gnu11, 14, gnu14, 17, gnu17, 20, gnu20, 23, gnu23]
         runtime: [None, MD, MT, MTd, MDd]
     apple-clang: &apple_clang
-        version: ["5.0", "5.1", "6.0", "6.1", "7.0", "7.3", "8.0", "8.1", "9.0", "9.1", "10.0", "11.0", "12.0", "13.0"]
+        version: ["5.0", "5.1", "6.0", "6.1", "7.0", "7.3", "8.0", "8.1", "9.0", "9.1", "10.0", "11.0", "12.0", "13.0", "13.1"]
         libcxx: [libstdc++, libc++]
         cppstd: [None, 98, gnu98, 11, gnu11, 14, gnu14, 17, gnu17, 20, gnu20]
     intel:


Test patch:
diff --git a/conans/test/integration/package_id/test_validate.py b/conans/test/integration/package_id/test_validate.py
index 71cdb2601..d273fe335 100644
--- a/conans/test/integration/package_id/test_validate.py
+++ b/conans/test/integration/package_id/test_validate.py
@@ -248,7 +248,7 @@ class TestValidate(unittest.TestCase):
         self.assertIn("dep/0.1: Invalid ID: Windows not supported", client.out)
         self.assertIn("pkg/0.1: Invalid ID: Invalid transitive dependencies", client.out)
 
-    def test_validate_export(self):
+    def test_validate_export_pkg(self):
         # https://github.com/conan-io/conan/issues/9797
         c = TestClient()
         conanfile = textwrap.dedent("""
@@ -262,3 +262,20 @@ class TestValidate(unittest.TestCase):
         c.save({"conanfile.py": conanfile})
         c.run("export-pkg . test/1.0@", assert_error=True)
         assert "Invalid ID: never ever" in c.out
+
+    def test_validate_install(self):
+        # https://github.com/conan-io/conan/issues/10602
+        c = TestClient()
+        conanfile = textwrap.dedent("""
+            from conan import ConanFile
+            from conan.errors import ConanInvalidConfiguration
+
+            class TestConan(ConanFile):
+                def validate(self):
+                    raise ConanInvalidConfiguration("never ever")
+            """)
+        c.save({"conanfile.py": conanfile})
+        c.run("install .")
+        assert "conanfile.py: ERROR: Invalid ID: never ever" in c.out
+        assert "Trying to install dependencies, but this configuration will fail to build a package"\
+               in c.out