--- development-support/_common_definitions.py.orig	2026-01-15 09:30:12
+++ development-support/_common_definitions.py	2026-01-15 09:34:31
@@ -271,32 +271,36 @@
         setup = os.path.join(TOP_DIR, subdir, "setup.py")
 
         requires = None
-        with open(setup) as fp:
-            for ln in fp:
-                if requires is None:
-                    if ln.strip().startswith("install_requires"):
-                        requires = []
+        try:
+            with open(setup) as fp:
+                for ln in fp:
+                    if requires is None:
+                        if ln.strip().startswith("install_requires"):
+                            requires = []
 
-                        if "]" in ln:
-                            # Dependencies on a single line
-                            start = ln.find("[")
-                            deps = ln[start + 1 :].strip().split(",")
-                            for d in deps:
-                                d = d.strip()[1:]
-                                if d.startswith("pyobjc-framework-"):
-                                    d = d.split(">")[0]
-                                    requires.append(d)
-                else:
-                    if ln.strip().startswith("]"):
-                        break
+                            if "]" in ln:
+                                # Dependencies on a single line
+                                start = ln.find("[")
+                                deps = ln[start + 1 :].strip().split(",")
+                                for d in deps:
+                                    d = d.strip()[1:]
+                                    if d.startswith("pyobjc-framework-"):
+                                        d = d.split(">")[0]
+                                        requires.append(d)
+                    else:
+                        if ln.strip().startswith("]"):
+                            break
 
-                    dep = ln.strip()[1:-1]
-                    if dep.startswith("pyobjc-framework"):
-                        dep = dep.split(">")[0]
-                        requires.append(dep)
+                        dep = ln.strip()[1:-1]
+                        if dep.startswith("pyobjc-framework"):
+                            dep = dep.split(">")[0]
+                            requires.append(dep)
 
-        frameworks.append(subdir)
-        for dep in requires:
-            partial_order.append((dep, subdir))
+            frameworks.append(subdir)
+            for dep in requires:
+                partial_order.append((dep, subdir))
 
+        except:
+            print("Skipping {!r} because it has no setup.py script".format(subdir))
+
     return topological_sort(frameworks, partial_order)
