#68292 closed defect (fixed)

gcc12/libgcc12 12.3.0_1 +stdlib_flag missing libgccjit.0.dylib

Reported by: vallon (Justin) Owned by:
Priority: Normal Milestone:
Component: ports Version: 2.8.1
Keywords: Cc:
Port: gcc12 libgcc12

Description

Did a port upgrade yesterday. Today I found emacs doesn't launch:

$ emacs
dyld[13763]: Library not loaded: @rpath/libgccjit.0.dylib
  Referenced from: <830528A4-22BE-31B3-9504-6F4423092F0E> /opt/local/bin/emacs-29.1
  Reason: tried: '/opt/local/lib/gcc12/libgccjit.0.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/opt/local/lib/gcc12/libgccjit.0

/opt/local/lib/gcc12/libgccjit.0.dylib is a broken symlink to /opt/local/lib/libgcc/libgccjit.0.dylib:

$ ls -l /opt/local/lib/gcc12/libgccjit.0.dylib 
lrwxr-xr-x 1 root admin 39 Sep 29 01:10 /opt/local/lib/gcc12/libgccjit.0.dylib -> /opt/local/lib/libgcc/libgccjit.0.dylib

$ ls -l /opt/local/lib/libgcc
total 1284
-rwxr-xr-x 1 root admin   71872 Sep 28 13:53 libatomic.1.dylib
lrwxr-xr-x 1 root admin      17 Sep 28 13:53 libatomic.dylib -> libatomic.1.dylib
# no gccjit
# all files recently created

The /libgcc/ files are owned by libgcc12:

$ port contents libgcc12 | grep /opt/local/lib/libgcc/libatomic
  /opt/local/lib/libgcc/libatomic.1.dylib
  /opt/local/lib/libgcc/libatomic.dylib

My logs show libgcc12 was upgraded recently:

$ grep libgcc12 2023092[89]/dump-port-state
20230928/dump-port-state:  libgcc12 @12.3.0_0+stdlib_flag (active) requested_variants='' platform='darwin 22' archs='arm64' date='2023-05-15T10:54:51-0400'
20230929/dump-port-state:  libgcc12 @12.3.0_0+stdlib_flag requested_variants='' platform='darwin 22' archs='arm64' date='2023-05-15T10:54:51-0400'
20230929/dump-port-state:  libgcc12 @12.3.0_1+stdlib_flag (active) requested_variants='' platform='darwin 22' archs='arm64' date='2023-09-28T13:53:39-0400'

Try to reactivate old libgcc12:

$ sudo port activate libgcc12 @12.3.0_0+stdlib_flag
--->  Computing dependencies for libgcc12
--->  Deactivating libgcc12 @12.3.0_1+stdlib_flag
--->  Cleaning libgcc12
--->  Activating libgcc12 @12.3.0_0+stdlib_flag
--->  Cleaning libgcc12

$ ls -l /opt/local/lib/libgcc | grep gccjit
# not there

Maybe the symlink:

$ port contents gcc12 | grep /opt/local/lib/gcc12/libgccjit.0.dylib
  /opt/local/lib/gcc12/libgccjit.0.dylib

$ grep ' gcc12 ' 2023092[89]/dump-port-state
20230928/dump-port-state:  gcc12 @12.3.0_0+stdlib_flag (active) requested_variants='' platform='darwin 22' archs='arm64' date='2023-05-15T13:04:27-0400'
20230929/dump-port-state:  gcc12 @12.3.0_0+stdlib_flag requested_variants='' platform='darwin 22' archs='arm64' date='2023-05-15T13:04:27-0400'
20230929/dump-port-state:  gcc12 @12.3.0_1+stdlib_flag (active) requested_variants='' platform='darwin 22' archs='arm64' date='2023-09-29T01:10:50-0400'

$ sudo port activate gcc12 @12.3.0_0+stdlib_flag
--->  Computing dependencies for gcc12
--->  Deactivating gcc12 @12.3.0_1+stdlib_flag
--->  Cleaning gcc12
--->  Activating gcc12 @12.3.0_0+stdlib_flag
--->  Cleaning gcc12

$ ls -l /opt/local/lib/gcc12/libgccjit.0.dylib
-rwxr-xr-x 1 root admin 37112256 May 15 13:04 /opt/local/lib/gcc12/libgccjit.0.dylib

Then:

$ emacs
# happy

It appears:

  • 12.3.0_0 had a file $p/lib/gcc12/libgccjit.0.dylib
  • 12.3.0_1 turned that into a symlink to $p/lib/libgcc/libgccjit.0.dylib, but libgcc12 doesn't create that file.

Change History (1)

comment:1 Changed 14 months ago by cjones051073 (Chris Jones)

Resolution: fixed
Status: newclosed

This is already fixed in a subsequent port update. Please make sure you are completely up tomdate.

Note: See TracTickets for help on using tickets.