#70107 closed defect (fixed)
fastfetch: dyld[----]: Symbol not found : (_AVCaptureDeviceTypeExternal)
Reported by: | TopHatProductions115new (TopHatProductions115) | Owned by: | herbygillot (Herby Gillot) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.9.3 |
Keywords: | Cc: | ||
Port: | fastfetch |
Description
The fastfetch package recently stopped working recently. Whenever I attempt to run it, I receive an error that looks like this:
dyld[----]: Symbol not found : (_AVCaptureDeviceTypeExternal) Referenced from: '/opt/local/bin/fastfetch' Expected in: '/System/Library/Frameworks/AVFoundation.framework/Versions/A/AVFoundation' [1] ---- abort fastfetch
I've tried updating packages and reinstalling fastfetch, but the error still appears.
I'm running macOS 12.7.5, in a VM. Please let me know if you want more information attached to this ticket.
Change History (6)
comment:1 Changed 6 months ago by TopHatProductions115new (TopHatProductions115)
comment:2 Changed 6 months ago by ryandesign (Ryan Carsten Schmidt)
Cc: | herbygillot removed |
---|---|
Owner: | set to herbygillot |
Status: | new → assigned |
Summary: | Unable to Run fastfetch → fastfetch: dyld[----]: Symbol not found : (_AVCaptureDeviceTypeExternal) |
Would this potentially be related to the issue?
Perhaps, to the extent that you are on macOS 12, and the error message says it cannot find AVCaptureDeviceTypeExternal
, and AVCaptureDeviceTypeExternal
seems to have been introduced in macOS 14.
The only place AVCaptureDeviceTypeExternal
is used in the code is here:
#ifdef MAC_OS_VERSION_14_0 if (@available(macOS 14.0, *)) { deviceType = AVCaptureDeviceTypeExternal; } else #endif { deviceType = AVCaptureDeviceTypeExternalUnknown; }
I can't explain why code guarded by checks (both compile-time and runtime) for macOS 14 would ever be used on macOS versions earlier than 14.
The code was just changed two weeks ago specifically for the purpose of better supporting older macOS versions; the author of this PR said it worked for them on macOS 10.13:
https://github.com/fastfetch-cli/fastfetch/pull/936
On macOS 12 the newest macOS SDK provided by your Xcode and/or command line tools should be 13. MAC_OS_VERSION_14_0
is only defined in the macOS 14 and later SDKs. So the code that references AVCaptureDeviceTypeExternal
should have been hidden by that #ifdef
and should not have been seen by your compiler. What version of Xcode and the command line tools do you have installed? Have you done anything unusual with them, like manually added the macOS 14 SDK or made any modifications to the SDKs? Do you recall whether the port compiled from source on your system or whether you received a binary from our servers?
comment:3 Changed 6 months ago by ryandesign (Ryan Carsten Schmidt)
Ah, I see: The Portfile contains the line platforms any
. This means the Portfile author believes the port installs the same exact files regardless of which version of which OS the user is using. This is evidently incorrect and needs to be removed. You must have received a binary built on our macOS 14 build machine. The revision should be increased when this line is removed so that users are prompted to upgrade to the fixed version.
comment:4 Changed 6 months ago by ryandesign (Ryan Carsten Schmidt)
Any Portfile setting platforms any
and not setting supported_archs
is potentially suspicious. The list of those Portfiles:
port file all|sort -u|xargs grep -El '^[[:space:]]*platforms.*[[:space:]]any'|xargs grep -EL '^[[:space:]]*supported_archs'
comment:5 Changed 5 months ago by ryandesign (Ryan Carsten Schmidt)
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
comment:6 Changed 5 months ago by ryandesign (Ryan Carsten Schmidt)
I filed #70240 to track enhancing port lint
to notice this type of problem.
Would this potentially be related to the issue?
https://developer.apple.com/documentation/avfoundation/avcapturedevicetypeexternal