[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