Opened 10 years ago

Closed 8 years ago

Last modified 8 years ago

#46533 closed defect (fixed)

Making docs silently fails on first compilation

Reported by: jeremyhu (Jeremy Huddleston Sequoia) Owned by: macports-tickets@…
Priority: Normal Milestone:
Component: base Version: 2.3.3
Keywords: Cc:
Port:

Description

If base has not yet been installed, doc building will fail due to the inability to find libtcl8.5.dylib

We should set DYLD_LIBRARY_FALLBACK_PATH appropriately to find the *built* libtcl8.5.dylib since the file has not yet been installed.

===> making all in doc
/Users/jeremy/src/macports/base/vendor/tcl8.5.15/unix/tclsh ./asciidoc-deps.tcl *.txt > .dep
dyld: Library not loaded: /opt/localppc/libexec/macports/lib/libtcl8.5.dylib
  Referenced from: /Users/jeremy/src/macports/base/vendor/tcl8.5.15/unix/tclsh
  Reason: image not found
/bin/sh: line 1: 15974 Trace/BPT trap          /Users/jeremy/src/macports/base/vendor/tcl8.5.15/unix/tclsh ./asciidoc-deps.tcl *.txt > .dep

Change History (3)

comment:1 Changed 8 years ago by raimue (Rainer Müller)

I could not reproduce the exact output. Even when deleting /opt/local/libexec/macports/lib/libtcl8.5.dylib, it is then falling back to /usr/lib/libtcl8.5.dylib, which happens to be compatible:

$ DYLD_PRINT_LIBRARIES=1 /Users/raimue/src/macports/base/vendor/tcl8.5.18/unix/tclsh
dyld: loaded: /Users/raimue/src/macports/base/vendor/tcl8.5.18/unix/tclsh
dyld: loaded: /usr/lib/libtcl8.5.dylib
...

However, I agree we should not rely on this and use DYLD_FALLBACK_LIBRARY_PATH.

comment:2 Changed 8 years ago by raimue (Rainer Müller)

Resolution: fixed
Status: newclosed

In b480d79/macports-base:

Use wrapper with library paths for $INTREE_TCLSH

The wrapper script at vendor/tclsh ensures we can run helper scripts
even before MacPorts is installed, by using libraries from the source
directory. Previously, tclsh would erroneously have used
/usr/lib/libtcl8.5.dylib.

Closes: #46533

comment:3 Changed 8 years ago by raimue (Rainer Müller)

In 2e5996c/macports-base:

Avoid library from target prefix for INTREE_TCLSH

The libtcl library in the target location might be broken due to wrong
architecture, or missing other libraries. We should not rely on this
library to be robust. Override the library search path with
DYLD_LIBRARY_PATH.

See: #46533

Note: See TracTickets for help on using tickets.