!lheuhImcToQZYTQTuI:nixos.org

Nix on macOS

1136 Members
“There are still many issues with the Darwin platform but most of it is quite usable.” — http://yves.gnu-darwin.org180 Servers

Load older messages


SenderMessageTime
24 Oct 2025
@reckenrode:matrix.orgRandy Eckenrodehttps://github.com/nix-community/home-manager/pull/8031 was merged!00:46:51
@reckenrode:matrix.orgRandy Eckenrode emily, I made the requested changes except for the AvailabilityVersions one. Given the goal of eventually creating an internal SDK, which would include the headers from AvailabilityVersions, I’d rather not hack up system_cmds even more in the meantime. 01:09:16
@emilazy:matrix.orgemilyit makes me a bit uneasy to be generating a bunch of availability headers that aren't necessarily the same ones as the main SDK01:09:45
@emilazy:matrix.orgemily I'm okay just adding the /usr/bin/env fix though 01:09:59
@emilazy:matrix.orgemily I'd rather not use darwin.AvailabilityVersions but it's not a blocker 01:10:20
@emilazy:matrix.orgemily (I think even with an internal SDK we'd just want to do the equivalent #define) 01:10:31
@reckenrode:matrix.orgRandy Eckenrode It generates the headers for ${lib.getVersion apple-sdk}. There shouldn’t be any defines newer than what apple-sdk provides. 01:13:08
@reckenrode:matrix.orgRandy EckenrodeTime to see how extremely broken building the macOS 26 source releases is.01:14:04
@emilazy:matrix.orgemily

they have non-trivial differences

shion:/v/f/1/j/T/tmp.VBURbW5OAW
❭ nix run nixpkgs/nixpkgs-unstable#darwin.AvailabilityVersions 14.4 test

shion:/v/f/1/j/T/tmp.VBURbW5OAW
❭ diff -u test/include/AvailabilityInternal.h result/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.4.sdk/usr/include/AvailabilityInternal.h 
--- test/include/AvailabilityInternal.h	2025-10-24 02:13:47
+++ result/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.4.sdk/usr/include/AvailabilityInternal.h	1970-01-01 01:00:01
@@ -30,17 +30,19 @@
 #ifndef __AVAILABILITY_INTERNAL__
 #define __AVAILABILITY_INTERNAL__
 
-#include <AvailabilityVersions.h>
+#if __has_include(<AvailabilityInternalPrivate.h>)
+  #include <AvailabilityInternalPrivate.h>
+#endif
 
 #ifndef __MAC_OS_X_VERSION_MIN_REQUIRED
     #if defined(__has_builtin) && __has_builtin(__is_target_os)
         #if __is_target_os(macos)
             #define __MAC_OS_X_VERSION_MIN_REQUIRED __ENVIRONMENT_OS_VERSION_MIN_REQUIRED__
-            #define __MAC_OS_X_VERSION_MAX_ALLOWED __MAC_14_3
+            #define __MAC_OS_X_VERSION_MAX_ALLOWED __MAC_14_4
         #endif
     #elif  __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ 
         #define __MAC_OS_X_VERSION_MIN_REQUIRED __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
-        #define __MAC_OS_X_VERSION_MAX_ALLOWED __MAC_14_3
+        #define __MAC_OS_X_VERSION_MAX_ALLOWED __MAC_14_4
     #endif /*  __has_builtin(__is_target_os) && __is_target_os(macos) */
 #endif /* __MAC_OS_X_VERSION_MIN_REQUIRED */
 
@@ -48,11 +50,11 @@
     #if defined(__has_builtin) && __has_builtin(__is_target_os)
         #if __is_target_os(ios)
             #define __IPHONE_OS_VERSION_MIN_REQUIRED __ENVIRONMENT_OS_VERSION_MIN_REQUIRED__
-            #define __IPHONE_OS_VERSION_MAX_ALLOWED __IPHONE_14_4
+            #define __IPHONE_OS_VERSION_MAX_ALLOWED __IPHONE_17_4
         #endif
     #elif  __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ 
         #define __IPHONE_OS_VERSION_MIN_REQUIRED __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__
-        #define __IPHONE_OS_VERSION_MAX_ALLOWED __IPHONE_14_4
+        #define __IPHONE_OS_VERSION_MAX_ALLOWED __IPHONE_17_4
     #endif /*  __has_builtin(__is_target_os) && __is_target_os(ios) */
 #endif /* __IPHONE_OS_VERSION_MIN_REQUIRED */
 
@@ -60,13 +62,13 @@
     #if defined(__has_builtin) && __has_builtin(__is_target_os)
         #if __is_target_os(watchos)
             #define __WATCH_OS_VERSION_MIN_REQUIRED __ENVIRONMENT_OS_VERSION_MIN_REQUIRED__
-            #define __WATCH_OS_VERSION_MAX_ALLOWED __WATCHOS_10_3
+            #define __WATCH_OS_VERSION_MAX_ALLOWED __WATCHOS_10_4
             /* for compatibility with existing code.  New code should use platform specific checks */
             #define __IPHONE_OS_VERSION_MIN_REQUIRED __IPHONE_9_0
         #endif
     #elif  __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ 
         #define __WATCH_OS_VERSION_MIN_REQUIRED __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__
-        #define __WATCH_OS_VERSION_MAX_ALLOWED __WATCHOS_10_3
+        #define __WATCH_OS_VERSION_MAX_ALLOWED __WATCHOS_10_4
         /* for compatibility with existing code.  New code should use platform specific checks */
         #define __IPHONE_OS_VERSION_MIN_REQUIRED __IPHONE_9_0
     #endif /*  __has_builtin(__is_target_os) && __is_target_os(watchos) */
@@ -76,13 +78,13 @@
     #if defined(__has_builtin) && __has_builtin(__is_target_os)
         #if __is_target_os(tvos)
             #define __TV_OS_VERSION_MIN_REQUIRED __ENVIRONMENT_OS_VERSION_MIN_REQUIRED__
-            #define __TV_OS_VERSION_MAX_ALLOWED __TVOS_14_3
+            #define __TV_OS_VERSION_MAX_ALLOWED __TVOS_17_4
             /* for compatibility with existing code.  New code should use platform specific checks */
             #define __IPHONE_OS_VERSION_MIN_REQUIRED __IPHONE_9_0
         #endif
     #elif  __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ 
         #define __TV_OS_VERSION_MIN_REQUIRED __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__
-        #define __TV_OS_VERSION_MAX_ALLOWED __TVOS_14_3
+        #define __TV_OS_VERSION_MAX_ALLOWED __TVOS_17_4
         /* for compatibility with existing code.  New code should use platform specific checks */
         #define __IPHONE_OS_VERSION_MIN_REQUIRED __IPHONE_9_0
     #endif /*  __has_builtin(__is_target_os) && __is_target_os(tvos) */
@@ -92,18 +94,27 @@
     #if defined(__has_builtin) && __has_builtin(__is_target_os)
         #if __is_target_os(bridgeos)
             #define __BRIDGE_OS_VERSION_MIN_REQUIRED __ENVIRONMENT_OS_VERSION_MIN_REQUIRED__
-            #define __BRIDGE_OS_VERSION_MAX_ALLOWED __BRIDGEOS_8_3
+            #define __BRIDGE_OS_VERSION_MAX_ALLOWED __BRIDGEOS_8_4
             /* for compatibility with existing code.  New code should use platform specific checks */
             #define __IPHONE_OS_VERSION_MIN_REQUIRED __IPHONE_11_0
         #endif
-    #endif /*  __has_builtin(__is_target_os) && __is_target_os(bridgeos) */
+    #endif 
 #endif /* __BRIDGE_OS_VERSION_MIN_REQUIRED */
 
+#ifndef __DRIVERKIT_VERSION_MIN_REQUIRED
+    #if defined(__has_builtin) && __has_builtin(__is_target_os)
+        #if __is_target_os(driverkit)
+            #define __DRIVERKIT_VERSION_MIN_REQUIRED __ENVIRONMENT_OS_VERSION_MIN_REQUIRED__
+            #define __DRIVERKIT_VERSION_MAX_ALLOWED __DRIVERKIT_23_4
+        #endif
+    #endif /*  __has_builtin(__is_target_os) && __is_target_os(driverkit) */
+#endif /* __DRIVERKIT_VERSION_MIN_REQUIRED */
+
 #ifndef __VISION_OS_VERSION_MIN_REQUIRED
     #if defined(__has_builtin) && __has_builtin(__is_target_os)
         #if __is_target_os(visionos)
             #define __VISION_OS_VERSION_MIN_REQUIRED __ENVIRONMENT_OS_VERSION_MIN_REQUIRED__
-            #define __VISION_OS_VERSION_MAX_ALLOWED __VISIONOS_1_0
+            #define __VISION_OS_VERSION_MAX_ALLOWED __VISIONOS_1_1
             /* for compatibility with existing code.  New code should use platform specific checks */
             #define __IPHONE_OS_VERSION_MIN_REQUIRED __IPHONE_17_1
         #endif
@@ -130,7 +141,10 @@
     #endif /*  __has_builtin(__is_target_os) && __is_target_os(visionos) */
 #endif /* __VISION_OS_VERSION_MIN_REQUIRED */
 
+#ifndef __OPEN_SOURCE__
 
+#endif /* __OPEN_SOURCE__ */
+
 #ifdef __IPHONE_OS_VERSION_MIN_REQUIRED
     /* make sure a default max version is set */
     #ifndef __IPHONE_OS_VERSION_MAX_ALLOWED
@@ -159,6 +173,8 @@
 #define __AVAILABILITY_INTERNAL_WEAK_IMPORT           __attribute__((weak_import))
 #define __AVAILABILITY_INTERNAL_REGULAR            
 
+#include <AvailabilityInternalLegacy.h>
+
 #if defined(__has_feature) && defined(__has_attribute)
  #if __has_attribute(availability)
    #define __API_AVAILABLE_PLATFORM_macos(x) macos,introduced=x
@@ -170,21 +186,21 @@
    #define __API_AVAILABLE_PLATFORM_ios(x) ios,introduced=x
    #define __API_DEPRECATED_PLATFORM_ios(x,y) ios,introduced=x,deprecated=y
    #define __API_UNAVAILABLE_PLATFORM_ios ios,unavailable
-   #define __API_AVAILABLE_PLATFORM_iosmac(x) iosmac,introduced=x
-   #define __API_DEPRECATED_PLATFORM_iosmac(x,y) iosmac,introduced=x,deprecated=y
-   #define __API_UNAVAILABLE_PLATFORM_iosmac iosmac,unavailable
-   #define __API_AVAILABLE_PLATFORM_macCatalyst(x) iosmac,introduced=x
-   #define __API_DEPRECATED_PLATFORM_macCatalyst(x,y) iosmac,introduced=x,deprecated=y
-   #define __API_UNAVAILABLE_PLATFORM_macCatalyst iosmac,unavailable
+   #define __API_AVAILABLE_PLATFORM_macCatalyst(x) macCatalyst,introduced=x
+   #define __API_DEPRECATED_PLATFORM_macCatalyst(x,y) macCatalyst,introduced=x,deprecated=y
+   #define __API_UNAVAILABLE_PLATFORM_macCatalyst macCatalyst,unavailable
+   #define __API_AVAILABLE_PLATFORM_macCatalyst(x) macCatalyst,introduced=x
+   #define __API_DEPRECATED_PLATFORM_macCatalyst(x,y) macCatalyst,introduced=x,deprecated=y
+   #define __API_UNAVAILABLE_PLATFORM_macCatalyst macCatalyst,unavailable
    #define __API_AVAILABLE_PLATFORM_watchos(x) watchos,introduced=x
    #define __API_DEPRECATED_PLATFORM_watchos(x,y) watchos,introduced=x,deprecated=y
    #define __API_UNAVAILABLE_PLATFORM_watchos watchos,unavailable
    #define __API_AVAILABLE_PLATFORM_tvos(x) tvos,introduced=x
    #define __API_DEPRECATED_PLATFORM_tvos(x,y) tvos,introduced=x,deprecated=y
    #define __API_UNAVAILABLE_PLATFORM_tvos tvos,unavailable
-   #define __API_AVAILABLE_PLATFORM_bridgeos(x) bridgeos,introduced=x
-   #define __API_DEPRECATED_PLATFORM_bridgeos(x,y) bridgeos,introduced=x,deprecated=y
-   #define __API_UNAVAILABLE_PLATFORM_bridgeos bridgeos,unavailable
+   
+   
+   
    #define __API_AVAILABLE_PLATFORM_driverkit(x) driverkit,introduced=x
    #define __API_DEPRECATED_PLATFORM_driverkit(x,y) driverkit,introduced=x,deprecated=y
    #define __API_UNAVAILABLE_PLATFORM_driverkit driverkit,unavailable
@@ -194,6 +210,7 @@
    #define __API_AVAILABLE_PLATFORM_xros(x) visionos,introduced=x
    #define __API_DEPRECATED_PLATFORM_xros(x,y) visionos,introduced=x,deprecated=y
    #define __API_UNAVAILABLE_PLATFORM_xros visionos,unavailable
+   
  #endif /* __has_attribute(availability) */
 #endif /* defined(__has_feature) && defined(__has_attribute) */
 
@@ -213,20 +230,7 @@
 #if defined(__has_feature) && defined(__has_attribute)
  #if __has_attribute(availability)
 
-    /*
-     * API Introductions
-     *
-     * Use to specify the release that a particular API became available.
-     *
-     * Platform names:
-     *   macos, ios, tvos, watchos, bridgeos
-     *
-     * Examples:
-     *    __API_AVAILABLE(macos(10.10))
-     *    __API_AVAILABLE(macos(10.9), ios(10.0))
-     *    __API_AVAILABLE(macos(10.4), ios(8.0), watchos(2.0), tvos(10.0))
-     *    __API_AVAILABLE(macos(10.4), ios(8.0), watchos(2.0), tvos(10.0), bridgeos(2.0))
-     */
+    
 
     #define __API_A(x) __attribute__((availability(__API_AVAILABLE_PLATFORM_##x)))
     
@@ -238,7 +242,8 @@
     #define __API_AVAILABLE5(arg0,arg1,arg2,arg3,arg4,arg5) __API_A(arg0) __API_A(arg1) __API_A(arg2) __API_A(arg3) __API_A(arg4) __API_A(arg5)
     #define __API_AVAILABLE6(arg0,arg1,arg2,arg3,arg4,arg5,arg6) __API_A(arg0) __API_A(arg1) __API_A(arg2) __API_A(arg3) __API_A(arg4) __API_A(arg5) __API_A(arg6)
     #define __API_AVAILABLE7(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7) __API_A(arg0) __API_A(arg1) __API_A(arg2) __API_A(arg3) __API_A(arg4) __API_A(arg5) __API_A(arg6) __API_A(arg7)
-    #define __API_AVAILABLE_GET_MACRO(_0,_1,_2,_3,_4,_5,_6,_7,NAME,...) NAME
+    #define __API_AVAILABLE8(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) __API_A(arg0) __API_A(arg1) __API_A(arg2) __API_A(arg3) __API_A(arg4) __API_A(arg5) __API_A(arg6) __API_A(arg7) __API_A(arg8)
+    #define __API_AVAILABLE_GET_MACRO(_0,_1,_2,_3,_4,_5,_6,_7,_8,NAME,...) NAME
     
     #define __API_A_BEGIN(x) _Pragma(__API_RANGE_STRINGIFY (clang attribute (__attribute__((availability(__API_AVAILABLE_PLATFORM_##x))), apply_to = __API_APPLY_TO)))
     
@@ -250,24 +255,10 @@
     #define __API_AVAILABLE_BEGIN5(arg0,arg1,arg2,arg3,arg4,arg5) __API_A_BEGIN(arg0) __API_A_BEGIN(arg1) __API_A_BEGIN(arg2) __API_A_BEGIN(arg3) __API_A_BEGIN(arg4) __API_A_BEGIN(arg5)
     #define __API_AVAILABLE_BEGIN6(arg0,arg1,arg2,arg3,arg4,arg5,arg6) __API_A_BEGIN(arg0) __API_A_BEGIN(arg1) __API_A_BEGIN(arg2) __API_A_BEGIN(arg3) __API_A_BEGIN(arg4) __API_A_BEGIN(arg5) __API_A_BEGIN(arg6)
     #define __API_AVAILABLE_BEGIN7(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7) __API_A_BEGIN(arg0) __API_A_BEGIN(arg1) __API_A_BEGIN(arg2) __API_A_BEGIN(arg3) __API_A_BEGIN(arg4) __API_A_BEGIN(arg5) __API_A_BEGIN(arg6) __API_A_BEGIN(arg7)
-    #define __API_AVAILABLE_BEGIN_GET_MACRO(_0,_1,_2,_3,_4,_5,_6,_7,NAME,...) NAME
+    #define __API_AVAILABLE_BEGIN8(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) __API_A_BEGIN(arg0) __API_A_BEGIN(arg1) __API_A_BEGIN(arg2) __API_A_BEGIN(arg3) __API_A_BEGIN(arg4) __API_A_BEGIN(arg5) __API_A_BEGIN(arg6) __API_A_BEGIN(arg7) __API_A_BEGIN(arg8)
+    #define __API_AVAILABLE_BEGIN_GET_MACRO(_0,_1,_2,_3,_4,_5,_6,_7,_8,NAME,...) NAME
 
-    /*
-     * API Deprecations
-     *
-     * Use to specify the release that a particular API became unavailable.
-     *
-     * Platform names:
-     *   macos, ios, tvos, watchos, bridgeos
-     *
-     * Examples:
-     *
-     *    __API_DEPRECATED("No longer supported", macos(10.4, 10.8))
-     *    __API_DEPRECATED("No longer supported", macos(10.4, 10.8), ios(2.0, 3.0), watchos(2.0, 3.0), tvos(9.0, 10.0))
-     *
-     *    __API_DEPRECATED_WITH_REPLACEMENT("-setName:", tvos(10.0, 10.4), ios(9.0, 10.0))
-     *    __API_DEPRECATED_WITH_REPLACEMENT("SomeClassName", macos(10.4, 10.6), watchos(2.0, 3.0))
-     */
+    
 
     #define __API_D(msg,x) __attribute__((availability(__API_DEPRECATED_PLATFORM_##x,message=msg)))
   
@@ -279,7 +270,8 @@
     #define __API_DEPRECATED_MSG5(msg,arg0,arg1,arg2,arg3,arg4,arg5) __API_D(msg,arg0) __API_D(msg,arg1) __API_D(msg,arg2) __API_D(msg,arg3) __API_D(msg,arg4) __API_D(msg,arg5)
     #define __API_DEPRECATED_MSG6(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6) __API_D(msg,arg0) __API_D(msg,arg1) __API_D(msg,arg2) __API_D(msg,arg3) __API_D(msg,arg4) __API_D(msg,arg5) __API_D(msg,arg6)
     #define __API_DEPRECATED_MSG7(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7) __API_D(msg,arg0) __API_D(msg,arg1) __API_D(msg,arg2) __API_D(msg,arg3) __API_D(msg,arg4) __API_D(msg,arg5) __API_D(msg,arg6) __API_D(msg,arg7)
-    #define __API_DEPRECATED_MSG_GET_MACRO(_0,_1,_2,_3,_4,_5,_6,_7,_8,NAME,...) NAME
+    #define __API_DEPRECATED_MSG8(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) __API_D(msg,arg0) __API_D(msg,arg1) __API_D(msg,arg2) __API_D(msg,arg3) __API_D(msg,arg4) __API_D(msg,arg5) __API_D(msg,arg6) __API_D(msg,arg7) __API_D(msg,arg8)
+    #define __API_DEPRECATED_MSG_GET_MACRO(_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,NAME,...) NAME
 
     #define __API_D_BEGIN(msg, x) _Pragma(__API_RANGE_STRINGIFY (clang attribute (__attribute__((availability(__API_DEPRECATED_PLATFORM_##x,message=msg))), apply_to = __API_APPLY_TO)))
 
@@ -291,7 +283,8 @@
     #define __API_DEPRECATED_BEGIN5(msg,arg0,arg1,arg2,arg3,arg4,arg5) __API_D_BEGIN(msg,arg0) __API_D_BEGIN(msg,arg1) __API_D_BEGIN(msg,arg2) __API_D_BEGIN(msg,arg3) __API_D_BEGIN(msg,arg4) __API_D_BEGIN(msg,arg5)
     #define __API_DEPRECATED_BEGIN6(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6) __API_D_BEGIN(msg,arg0) __API_D_BEGIN(msg,arg1) __API_D_BEGIN(msg,arg2) __API_D_BEGIN(msg,arg3) __API_D_BEGIN(msg,arg4) __API_D_BEGIN(msg,arg5) __API_D_BEGIN(msg,arg6)
     #define __API_DEPRECATED_BEGIN7(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7) __API_D_BEGIN(msg,arg0) __API_D_BEGIN(msg,arg1) __API_D_BEGIN(msg,arg2) __API_D_BEGIN(msg,arg3) __API_D_BEGIN(msg,arg4) __API_D_BEGIN(msg,arg5) __API_D_BEGIN(msg,arg6) __API_D_BEGIN(msg,arg7)
-    #define __API_DEPRECATED_BEGIN_GET_MACRO(_0,_1,_2,_3,_4,_5,_6,_7,_8,NAME,...) NAME
+    #define __API_DEPRECATED_BEGIN8(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) __API_D_BEGIN(msg,arg0) __API_D_BEGIN(msg,arg1) __API_D_BEGIN(msg,arg2) __API_D_BEGIN(msg,arg3) __API_D_BEGIN(msg,arg4) __API_D_BEGIN(msg,arg5) __API_D_BEGIN(msg,arg6) __API_D_BEGIN(msg,arg7) __API_D_BEGIN(msg,arg8)
+    #define __API_DEPRECATED_BEGIN_GET_MACRO(_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,NAME,...) NAME
 
     #if __has_feature(attribute_availability_with_replacement)
         #define __API_R(rep,x) __attribute__((availability(__API_DEPRECATED_PLATFORM_##x,replacement=rep)))
@@ -307,7 +300,8 @@
     #define __API_DEPRECATED_REP5(msg,arg0,arg1,arg2,arg3,arg4,arg5) __API_R(msg,arg0) __API_R(msg,arg1) __API_R(msg,arg2) __API_R(msg,arg3) __API_R(msg,arg4) __API_R(msg,arg5)
     #define __API_DEPRECATED_REP6(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6) __API_R(msg,arg0) __API_R(msg,arg1) __API_R(msg,arg2) __API_R(msg,arg3) __API_R(msg,arg4) __API_R(msg,arg5) __API_R(msg,arg6)
     #define __API_DEPRECATED_REP7(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7) __API_R(msg,arg0) __API_R(msg,arg1) __API_R(msg,arg2) __API_R(msg,arg3) __API_R(msg,arg4) __API_R(msg,arg5) __API_R(msg,arg6) __API_R(msg,arg7)
-    #define __API_DEPRECATED_REP_GET_MACRO(_0,_1,_2,_3,_4,_5,_6,_7,_8,NAME,...) NAME
+    #define __API_DEPRECATED_REP8(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) __API_R(msg,arg0) __API_R(msg,arg1) __API_R(msg,arg2) __API_R(msg,arg3) __API_R(msg,arg4) __API_R(msg,arg5) __API_R(msg,arg6) __API_R(msg,arg7) __API_R(msg,arg8)
+    #define __API_DEPRECATED_REP_GET_MACRO(_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,NAME,...) NAME
 
     #if __has_feature(attribute_availability_with_replacement)
         #define __API_R_BEGIN(rep,x) _Pragma(__API_RANGE_STRINGIFY (clang attribute (__attribute__((availability(__API_DEPRECATED_PLATFORM_##x,replacement=rep))), apply_to = __API_APPLY_TO)))    
@@ -315,15 +309,16 @@
         #define __API_R_BEGIN(rep,x) _Pragma(__API_RANGE_STRINGIFY (clang attribute (__attribute__((availability(__API_DEPRECATED_PLATFORM_##x))), apply_to = __API_APPLY_TO)))    
     #endif
 
-    #define __API_DEPRECATED_WITH_REPLACEMENT_BEGIN0(msg,arg0) __API_R_BEGIN(msg,arg0)
-    #define __API_DEPRECATED_WITH_REPLACEMENT_BEGIN1(msg,arg0,arg1) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1)
-    #define __API_DEPRECATED_WITH_REPLACEMENT_BEGIN2(msg,arg0,arg1,arg2) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) __API_R_BEGIN(msg,arg2)
-    #define __API_DEPRECATED_WITH_REPLACEMENT_BEGIN3(msg,arg0,arg1,arg2,arg3) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) __API_R_BEGIN(msg,arg2) __API_R_BEGIN(msg,arg3)
-    #define __API_DEPRECATED_WITH_REPLACEMENT_BEGIN4(msg,arg0,arg1,arg2,arg3,arg4) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) __API_R_BEGIN(msg,arg2) __API_R_BEGIN(msg,arg3) __API_R_BEGIN(msg,arg4)
-    #define __API_DEPRECATED_WITH_REPLACEMENT_BEGIN5(msg,arg0,arg1,arg2,arg3,arg4,arg5) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) __API_R_BEGIN(msg,arg2) __API_R_BEGIN(msg,arg3) __API_R_BEGIN(msg,arg4) __API_R_BEGIN(msg,arg5)
-    #define __API_DEPRECATED_WITH_REPLACEMENT_BEGIN6(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) __API_R_BEGIN(msg,arg2) __API_R_BEGIN(msg,arg3) __API_R_BEGIN(msg,arg4) __API_R_BEGIN(msg,arg5) __API_R_BEGIN(msg,arg6)
-    #define __API_DEPRECATED_WITH_REPLACEMENT_BEGIN7(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) __API_R_BEGIN(msg,arg2) __API_R_BEGIN(msg,arg3) __API_R_BEGIN(msg,arg4) __API_R_BEGIN(msg,arg5) __API_R_BEGIN(msg,arg6) __API_R_BEGIN(msg,arg7)
-    #define __API_DEPRECATED_WITH_REPLACEMENT_BEGIN_GET_MACRO(_0,_1,_2,_3,_4,_5,_6,_7,_8,NAME,...) NAME
+    #define __API_DEPRECATED_BEGIN_REP0(msg,arg0) __API_R_BEGIN(msg,arg0)
+    #define __API_DEPRECATED_BEGIN_REP1(msg,arg0,arg1) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1)
+    #define __API_DEPRECATED_BEGIN_REP2(msg,arg0,arg1,arg2) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) __API_R_BEGIN(msg,arg2)
+    #define __API_DEPRECATED_BEGIN_REP3(msg,arg0,arg1,arg2,arg3) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) __API_R_BEGIN(msg,arg2) __API_R_BEGIN(msg,arg3)
+    #define __API_DEPRECATED_BEGIN_REP4(msg,arg0,arg1,arg2,arg3,arg4) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) __API_R_BEGIN(msg,arg2) __API_R_BEGIN(msg,arg3) __API_R_BEGIN(msg,arg4)
+    #define __API_DEPRECATED_BEGIN_REP5(msg,arg0,arg1,arg2,arg3,arg4,arg5) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) __API_R_BEGIN(msg,arg2) __API_R_BEGIN(msg,arg3) __API_R_BEGIN(msg,arg4) __API_R_BEGIN(msg,arg5)
+    #define __API_DEPRECATED_BEGIN_REP6(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) __API_R_BEGIN(msg,arg2) __API_R_BEGIN(msg,arg3) __API_R_BEGIN(msg,arg4) __API_R_BEGIN(msg,arg5) __API_R_BEGIN(msg,arg6)
+    #define __API_DEPRECATED_BEGIN_REP7(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) __API_R_BEGIN(msg,arg2) __API_R_BEGIN(msg,arg3) __API_R_BEGIN(msg,arg4) __API_R_BEGIN(msg,arg5) __API_R_BEGIN(msg,arg6) __API_R_BEGIN(msg,arg7)
+    #define __API_DEPRECATED_BEGIN_REP8(msg,arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) __API_R_BEGIN(msg,arg0) __API_R_BEGIN(msg,arg1) __API_R_BEGIN(msg,arg2) __API_R_BEGIN(msg,arg3) __API_R_BEGIN(msg,arg4) __API_R_BEGIN(msg,arg5) __API_R_BEGIN(msg,arg6) __API_R_BEGIN(msg,arg7) __API_R_BEGIN(msg,arg8)
+    #define __API_DEPRECATED_BEGIN_REP_GET_MACRO(_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,NAME,...) NAME
 
     /*
      * API Unavailability
@@ -344,7 +339,8 @@
     #define __API_UNAVAILABLE5(arg0,arg1,arg2,arg3,arg4,arg5) __API_U(arg0) __API_U(arg1) __API_U(arg2) __API_U(arg3) __API_U(arg4) __API_U(arg5)
     #define __API_UNAVAILABLE6(arg0,arg1,arg2,arg3,arg4,arg5,arg6) __API_U(arg0) __API_U(arg1) __API_U(arg2) __API_U(arg3) __API_U(arg4) __API_U(arg5) __API_U(arg6)
     #define __API_UNAVAILABLE7(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7) __API_U(arg0) __API_U(arg1) __API_U(arg2) __API_U(arg3) __API_U(arg4) __API_U(arg5) __API_U(arg6) __API_U(arg7)
-    #define __API_UNAVAILABLE_GET_MACRO(_0,_1,_2,_3,_4,_5,_6,_7,NAME,...) NAME
+    #define __API_UNAVAILABLE8(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) __API_U(arg0) __API_U(arg1) __API_U(arg2) __API_U(arg3) __API_U(arg4) __API_U(arg5) __API_U(arg6) __API_U(arg7) __API_U(arg8)
+    #define __API_UNAVAILABLE_GET_MACRO(_0,_1,_2,_3,_4,_5,_6,_7,_8,NAME,...) NAME
 
     #define __API_U_BEGIN(x) _Pragma(__API_RANGE_STRINGIFY (clang attribute (__attribute__((availability(__API_UNAVAILABLE_PLATFORM_##x))), apply_to = __API_APPLY_TO)))
 
@@ -356,7 +352,8 @@
     #define __API_UNAVAILABLE_BEGIN5(arg0,arg1,arg2,arg3,arg4,arg5) __API_U_BEGIN(arg0) __API_U_BEGIN(arg1) __API_U_BEGIN(arg2) __API_U_BEGIN(arg3) __API_U_BEGIN(arg4) __API_U_BEGIN(arg5)
     #define __API_UNAVAILABLE_BEGIN6(arg0,arg1,arg2,arg3,arg4,arg5,arg6) __API_U_BEGIN(arg0) __API_U_BEGIN(arg1) __API_U_BEGIN(arg2) __API_U_BEGIN(arg3) __API_U_BEGIN(arg4) __API_U_BEGIN(arg5) __API_U_BEGIN(arg6)
     #define __API_UNAVAILABLE_BEGIN7(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7) __API_U_BEGIN(arg0) __API_U_BEGIN(arg1) __API_U_BEGIN(arg2) __API_U_BEGIN(arg3) __API_U_BEGIN(arg4) __API_U_BEGIN(arg5) __API_U_BEGIN(arg6) __API_U_BEGIN(arg7)
-    #define __API_UNAVAILABLE_BEGIN_GET_MACRO(_0,_1,_2,_3,_4,_5,_6,_7,NAME,...) NAME
+    #define __API_UNAVAILABLE_BEGIN8(arg0,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) __API_U_BEGIN(arg0) __API_U_BEGIN(arg1) __API_U_BEGIN(arg2) __API_U_BEGIN(arg3) __API_U_BEGIN(arg4) __API_U_BEGIN(arg5) __API_U_BEGIN(arg6) __API_U_BEGIN(arg7) __API_U_BEGIN(arg8)
+    #define __API_UNAVAILABLE_BEGIN_GET_MACRO(_0,_1,_2,_3,_4,_5,_6,_7,_8,NAME,...) NAME
 
  #endif /* __has_attribute(availability) */
 #endif /* #if defined(__has_feature) && defined(__has_attribute) */
@@ -381,4 +378,20 @@
     #define __swift_compiler_version_at_least(...) 1
 #endif
 
+/*
+ * If __SPI_AVAILABLE has not been defined elsewhere, disable it.
+ */
+ 
+#ifndef __SPI_AVAILABLE
+  #define __SPI_AVAILABLE(...)
+#endif
+
+#ifndef __SPI_AVAILABLE_BEGIN
+  #define __SPI_AVAILABLE_BEGIN(...)
+#endif
+
+#ifndef __SPI_AVAILABLE_END
+  #define __SPI_AVAILABLE_END(...)
+#endif
+
 #endif /* __AVAILABILITY_INTERNAL__ */

01:16:47
@emilazy:matrix.orgemily er, result there is apple-sdk_14 of course 01:16:57
@reckenrode:matrix.orgRandy Eckenrode The iOS/etc stuff isn’t expected to match due to the way filtering is done. Building source releases for iOS isn’t intended to work. The only thing I really find surprising is that the 14.4 SDK has a __MAC_OS_X_VERSION_MAX_ALLOWED of 14.3 not 14.4. 01:20:28
@emilazy:matrix.orgemily for internal SDK purposes I think #define __SPI_AVAILABLE(...) API_AVAILABLE(__VA_ARGS__) and the same for the other macros are a complete implementation of AvailabilityInternalPrivate.h that doesn't have the weird divergences from the public SDK availability header stuff, but if you don't like just touch "$out/include/AvailabilityInternalPrivate.h" or dropping the include I'm okay with merging it as-is as long as the broken shebang is fixed 01:20:31
@reckenrode:matrix.orgRandy EckenrodeThe broken shebang should be fixed.01:20:47
@reckenrode:matrix.orgRandy Eckenrode I would like to avoid hacking up the private headers stuff any more than I already do. Ideally, we would have functioning availability checks for SPIs. That’s going to be particularly useful for if/when we have only one SDK. 01:22:05
@emilazy:matrix.orgemilyother way around: the SDK has 14.401:23:52
@emilazy:matrix.orgemily but darwin.AvailabilityVersions only generates for 14.3 01:23:59
@emilazy:matrix.orgemily

the include of AvailabilityInternalPrivate.h seems like a non-trivial difference, and relevantly they differ in terms of handling of the __SPI_AVAILABLE stuff…

darwin.AvailabilityVersions also creates an AvailabilityMacros.h that doesn't pull in TargetConditionals.h, while the SDK one does

01:24:06
@reckenrode:matrix.orgRandy Eckenrodeadv_cmds gets rid of colldef. That’s not helpful.01:24:21
@emilazy:matrix.orgemilyanyway, like I said we can have functioning availability checks just by forwarding to the non-private ones (that's what the generated headers do in effect)01:24:26
@reckenrode:matrix.orgRandy EckenrodeAh. That could be a bug in my script changes.01:24:33
@emilazy:matrix.orgemilywithout shadowing all the other availability header stuff from the SDK01:24:36
@emilazy:matrix.orgemily this is on nixpkgs-unstable, I could check your PR though 01:24:47
@emilazy:matrix.orgemilyI'm just saying there are a fair few differences01:24:57
@emilazy:matrix.orgemily AFAICT, the __SPI_AVAILABLE stuff is just identical to __API_AVAILABLE for internal stuff and defined away for external stuff 01:25:44
@emilazy:matrix.orgemilynot sure why they do it in such a convoluted way given that but I guess it's what their scripts make convenient01:25:58
@emilazy:matrix.orgemilyalso not sure why they define away the availability for internal stuff01:26:17
@emilazy:matrix.orgemily* also not sure why they define away the availability for external stuff01:26:19
@emilazy:matrix.orgemilynot like it hides the definitions01:26:23
@reckenrode:matrix.orgRandy Eckenrodehttps://github.com/freebsd/freebsd-src/commit/c844ab67178719d956f1571f70bae84edc49cf7201:29:08
@reckenrode:matrix.orgRandy EckenrodeI guess Apple is catching up changes from FreeBSD 11 ….01:29:15

Show newer messages


Back to Room ListRoom Version: 6