Re: [PATCH 1/1] Fix detection of pwritev support for OSX. - Mailing list pgsql-hackers
From | Sergey Shinderuk |
---|---|
Subject | Re: [PATCH 1/1] Fix detection of pwritev support for OSX. |
Date | |
Msg-id | 9ae3cf4f-895d-685f-333e-2c14a0e62b0a@postgrespro.ru Whole thread Raw |
In response to | Re: [PATCH 1/1] Fix detection of pwritev support for OSX. (Tom Lane <tgl@sss.pgh.pa.us>) |
List | pgsql-hackers |
On 21.01.2021 02:07, Tom Lane wrote: > I now believe what is actually happening with the short command is > that it's iterating through the available SDKs (according to some not > very clear search path) and picking the first one it finds that > matches the host system version. That matches the ktrace evidence > that shows it reading the SDKSettings.plist file in each SDK > directory. Yes, you are right. After some more digging... It searches the DEVELOPER_DIR first and then /Library/Developer/CommandLineTools, which is hardcoded. My DEVELOPER_DIR is % xcode-select -p /Applications/Xcode.app/Contents/Developer (For more detail try "otool -tV /usr/lib/libxcselect.dylib -p _xcselect_get_developer_dir_path".) It reads ProductVersion from /System/Library/CoreServices/SystemVersion.plist % plutil -p /System/Library/CoreServices/SystemVersion.plist | grep ProductVersion "ProductVersion" => "10.15.7" Strips anything after the second dot, and prepends "macosx" to it, which gives "macosx10.15". Then it scans through SDK dirs looking up CanonicalName from SDKSettings.plist until it finds a match with "macosx10.15". The overall callstack: % sudo dtrace -n 'syscall::getdirentries64:entry { ustack() }' -c 'xcrun --show-sdk-path' dtrace: description 'syscall::getdirentries64:entry ' matched 1 probe /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk dtrace: pid 20183 has exited CPU ID FUNCTION:NAME 0 846 getdirentries64:entry libsystem_kernel.dylib`__getdirentries64+0xa libsystem_c.dylib`readdir$INODE64+0x23 libsystem_c.dylib`scandir$INODE64+0x6c libxcrun.dylib`cltools_lookup_sdk_by_key+0x5f libxcrun.dylib`cltools_lookup_boot_system_sdk+0xda libxcrun.dylib`xcinfocache_resolve_sdkroot+0xc0 libxcrun.dylib`xcrun_main2+0x57a libxcrun.dylib`xcrun_main+0x9 libxcselect.dylib`xcselect_invoke_xcrun_via_library+0xc8 libxcselect.dylib`xcselect_invoke_xcrun+0x25a xcrun`DYLD-STUB$$getprogname libdyld.dylib`start+0x1 xcrun`0x2 0 846 getdirentries64:entry libsystem_kernel.dylib`__getdirentries64+0xa libsystem_c.dylib`readdir$INODE64+0x23 libsystem_c.dylib`scandir$INODE64+0x6c libxcrun.dylib`cltools_lookup_sdk_by_key+0x5f libxcrun.dylib`cltools_lookup_boot_system_sdk+0xf3 libxcrun.dylib`xcinfocache_resolve_sdkroot+0xc0 libxcrun.dylib`xcrun_main2+0x57a libxcrun.dylib`xcrun_main+0x9 libxcselect.dylib`xcselect_invoke_xcrun_via_library+0xc8 libxcselect.dylib`xcselect_invoke_xcrun+0x25a xcrun`DYLD-STUB$$getprogname libdyld.dylib`start+0x1 xcrun`0x2 The SDK search path: % sudo dtrace -n 'pid$target:::entry /probefunc=="cltools_lookup_sdk_by_key"/ { trace(copyinstr(arg0)); trace(copyinstr(arg1)) }' -c 'xcrun --show-sdk-path' dtrace: description 'pid$target:::entry ' matched 17293 probes /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk dtrace: pid 20191 has exited CPU ID FUNCTION:NAME 8 398290 cltools_lookup_sdk_by_key:entry /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer macosx10.15 9 398290 cltools_lookup_sdk_by_key:entry /Library/Developer/CommandLineTools macosx10.15 The properties read from SDKSettings.plist: % sudo dtrace -n 'pid$target:::entry /probefunc=="_cltools_lookup_property_in_path"/ { trace(copyinstr(arg0)); trace(copyinstr(arg1)); trace(copyinstr(arg2)) }' -c 'xcrun --show-sdk-path' dtrace: description 'pid$target:::entry ' matched 17293 probes /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk dtrace: pid 20195 has exited CPU ID FUNCTION:NAME 8 398288 _cltools_lookup_property_in_path:entry / System/Library/CoreServices/SystemVersion.plist ProductVersion 8 398288 _cltools_lookup_property_in_path:entry /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/DriverKit20.2.sdk SDKSettings.plist IsBaseSDK 8 398288 _cltools_lookup_property_in_path:entry /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/DriverKit20.2.sdk SDKSettings.plist CanonicalName 4 398288 _cltools_lookup_property_in_path:entry /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/DriverKit20.2.sdk SDKSettings.plist CanonicalNameForBuildSettings 4 398288 _cltools_lookup_property_in_path:entry /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk SDKSettings.plist IsBaseSDK 4 398288 _cltools_lookup_property_in_path:entry /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk SDKSettings.plist CanonicalName 4 398288 _cltools_lookup_property_in_path:entry /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk SDKSettings.plist CanonicalNameForBuildSettings 4 398288 _cltools_lookup_property_in_path:entry /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk SDKSettings.plist PLATFORM_NAME 4 398288 _cltools_lookup_property_in_path:entry /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk SDKSettings.plist IsBaseSDK 2 398288 _cltools_lookup_property_in_path:entry /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk SDKSettings.plist CanonicalName 2 398288 _cltools_lookup_property_in_path:entry /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk SDKSettings.plist CanonicalNameForBuildSettings 2 398288 _cltools_lookup_property_in_path:entry /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk SDKSettings.plist PLATFORM_NAME 2 398288 _cltools_lookup_property_in_path:entry /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk SDKSettings.plist IsBaseSDK 2 398288 _cltools_lookup_property_in_path:entry /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk SDKSettings.plist CanonicalName 2 398288 _cltools_lookup_property_in_path:entry /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk SDKSettings.plist CanonicalNameForBuildSettings 0 398288 _cltools_lookup_property_in_path:entry /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk SDKSettings.plist PLATFORM_NAME 0 398288 _cltools_lookup_property_in_path:entry /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk SDKSettings.plist IsBaseSDK 0 398288 _cltools_lookup_property_in_path:entry /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk SDKSettings.plist CanonicalName BTW, on my machine /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk is skipped because it points to 11.0: % ls -l /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk lrwxr-xr-x 1 root wheel 14 Nov 17 02:21 /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -> MacOSX11.0.sdk For more detail try % otool -tV /Applications/Xcode.app/Contents/Developer/usr/lib/libxcrun.dylib -p _cltools_lookup_boot_system_sdk
pgsql-hackers by date: