[MacPorts] #71245: legacysupport does not relink libSystem.B.dylib to libMacportsLegacySystem.B.dylib
MacPorts
noreply at macports.org
Tue Nov 5 21:44:11 UTC 2024
#71245: legacysupport does not relink libSystem.B.dylib to
libMacportsLegacySystem.B.dylib
-----------------------------+--------------------
Reporter: barracuda156 | Owner: (none)
Type: defect | Status: new
Priority: Normal | Milestone:
Component: ports | Version: 2.10.4
Resolution: | Keywords:
Port: legacy-support |
-----------------------------+--------------------
Description changed by barracuda156:
Old description:
> It looks like legacysupport is supposed to relink libSystem to its own
> wrapper:
> {{{
> proc legacysupport::relink_libSystem { exe } {
> global os.major prefix
> if { ${os.major} <= [option
> legacysupport.newest_darwin_requires_legacy] } {
> set sLib /usr/lib/libSystem.B.dylib
> set lLib ${prefix}/lib/libMacportsLegacySystem.B.dylib
> ui_debug "legacysupport: Relinking ${exe} against ${lLib}"
> system "install_name_tool -change ${sLib} ${lLib} ${exe}"
> }
> }
> }}}
>
> However in practice it does not do that.
>
> For example, I build `fastfetch`, which sets
> `legacysupport.newest_darwin_requires_legacy 15`, on 10.6. And here is
> what it gets linked to:
>
> ```
> 36-87% otool -L /opt/local/bin/fastfetch-orig
> /opt/local/bin/fastfetch-orig:
> /opt/local/lib/libMacportsLegacySupport.dylib (compatibility
> version 1.0.0, current version 1.3.99)
> /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa
> (compatibility version 1.0.0, current version 14.0.0)
> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
> (compatibility version 150.0.0, current version 511.1.0)
> /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio
> (compatibility version 1.0.0, current version 1.0.0)
> /System/Library/PrivateFrameworks/CoreMedia.framework/Versions/A/CoreMedia
> (compatibility version 1.0.0, current version 1.0.0)
> /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo
> (compatibility version 1.2.0, current version 1.5.0)
> /System/Library/Frameworks/IOBluetooth.framework/Versions/A/IOBluetooth
> (compatibility version 1.0.0, current version 1.0.0)
> /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
> (compatibility version 1.0.0, current version 275.0.0)
> /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
> (compatibility version 1.0.0, current version 1.0.0)
> /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration
> (compatibility version 1.0.0, current version 246.0.0)
> /System/Library/PrivateFrameworks/DisplayServices.framework/Versions/A/DisplayServices
> (compatibility version 1.0.0, current version 1.0.0)
> /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current
> version 117.0.0)
> /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current
> version 227.0.0)
> /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
> (compatibility version 45.0.0, current version 988.3.0)
> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices
> (compatibility version 1.0.0, current version 36.0.0)
> /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
> (compatibility version 300.0.0, current version 711.1.0)
> ```
>
> There is no `libMacportsLegacySystem.B.dylib`, but there is
> `libSystem.B.dylib`.
New description:
It looks like legacysupport is supposed to relink libSystem to its own
wrapper:
{{{
proc legacysupport::relink_libSystem { exe } {
global os.major prefix
if { ${os.major} <= [option
legacysupport.newest_darwin_requires_legacy] } {
set sLib /usr/lib/libSystem.B.dylib
set lLib ${prefix}/lib/libMacportsLegacySystem.B.dylib
ui_debug "legacysupport: Relinking ${exe} against ${lLib}"
system "install_name_tool -change ${sLib} ${lLib} ${exe}"
}
}
}}}
However in practice it does not do that.
For example, I build `fastfetch`, which sets
`legacysupport.newest_darwin_requires_legacy 15`, on 10.6. And here is
what it gets linked to:
{{{
36-87% otool -L /opt/local/bin/fastfetch-orig
/opt/local/bin/fastfetch-orig:
/opt/local/lib/libMacportsLegacySupport.dylib (compatibility
version 1.0.0, current version 1.3.99)
/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa
(compatibility version 1.0.0, current version 14.0.0)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
(compatibility version 150.0.0, current version 511.1.0)
/System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio
(compatibility version 1.0.0, current version 1.0.0)
/System/Library/PrivateFrameworks/CoreMedia.framework/Versions/A/CoreMedia
(compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo
(compatibility version 1.2.0, current version 1.5.0)
/System/Library/Frameworks/IOBluetooth.framework/Versions/A/IOBluetooth
(compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
(compatibility version 1.0.0, current version 275.0.0)
/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
(compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration
(compatibility version 1.0.0, current version 246.0.0)
/System/Library/PrivateFrameworks/DisplayServices.framework/Versions/A/DisplayServices
(compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current
version 117.0.0)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current
version 227.0.0)
/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
(compatibility version 45.0.0, current version 988.3.0)
/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices
(compatibility version 1.0.0, current version 36.0.0)
/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
(compatibility version 300.0.0, current version 711.1.0)
}}}
There is no `libMacportsLegacySystem.B.dylib`, but there is
`libSystem.B.dylib`.
--
--
Ticket URL: <https://trac.macports.org/ticket/71245#comment:1>
MacPorts <https://www.macports.org/>
Ports system for macOS
More information about the macports-tickets
mailing list