[MacPorts] #71869: When new sqlite dependency was added, it was not properly added to postflight

MacPorts noreply at macports.org
Sat Jan 18 03:24:55 UTC 2025


#71869: When new sqlite dependency was added, it was not properly added to
postflight
----------------------------+-----------------------------
  Reporter:  jordanhubbard  |      Owner:  (none)
      Type:  defect         |     Status:  new
  Priority:  Normal         |  Milestone:  MacPorts Future
 Component:  base           |    Version:  2.10.99
Resolution:                 |   Keywords:
      Port:                 |
----------------------------+-----------------------------
Changes (by jmroot):

 * component:  ports => base


Old description:

> The end result is that macports build and installs properly, but if you
> are updating an older version of /opt/local from a checked out source and
> ports tree, you will get a backtrace:
>
> /opt/local/libexec/macports/bin/tclsh8.6 ./src/images_to_archives.tcl
> dlopen(/opt/local/libexec/macports/lib/pextlib1.0/Pextlib.dylib, 0x0006):
> Library not loaded:
> /opt/local/libexec/macports/lib/sqlite3.45.3/libsqlite3.45.3.dylib
>   Referenced from: <98D3107B-C4AE-3952-BB87-41FD6375C2C2>
> /opt/local/libexec/macports/lib/registry2.0/registry.dylib
>   Reason: tried:
> '/opt/local/libexec/macports/lib/sqlite3.45.3/libsqlite3.45.3.dylib' (no
> such file),
> '/System/Volumes/Preboot/Cryptexes/OS/opt/local/libexec/macports/lib/sqlite3.45.3/libsqlite3.45.3.dylib'
> (no such file),
> '/opt/local/libexec/macports/lib/sqlite3.45.3/libsqlite3.45.3.dylib' (no
> such file)
>     while executing
> "load /opt/local/libexec/macports/lib/pextlib1.0/Pextlib.dylib"
>     ("package ifneeded Pextlib 1.0" script)
>     invoked from within
> "package require Pextlib 1.0"
>     (file "/opt/local/libexec/macports/lib/registry2.0/receipt_flat.tcl"
> line 37)
>     invoked from within
> "source /opt/local/libexec/macports/lib/registry2.0/receipt_flat.tcl"
>     ("package ifneeded receipt_flat 1.0" script)
>     invoked from within
> "package require receipt_flat 1.0"
>     (file "/opt/local/libexec/macports/lib/registry2.0/registry.tcl" line
> 36)
>     invoked from within
> "source /opt/local/libexec/macports/lib/registry2.0/registry.tcl"
>     ("package ifneeded registry 1.0" script)
>     invoked from within
> "package require registry 1.0"
>     (file "/opt/local/libexec/macports/lib/registry2.0/portuninstall.tcl"
> line 35)
>     invoked from within
> "source /opt/local/libexec/macports/lib/registry2.0/portuninstall.tcl"
>     ("package ifneeded registry_uninstall 2.0" script)
>     invoked from within
> "package require registry_uninstall 2.0"
>     (file "/opt/local/libexec/macports/lib/macports1.0/reclaim.tcl" line
> 52)
>     invoked from within
> "source /opt/local/libexec/macports/lib/macports1.0/reclaim.tcl"
>     ("package ifneeded reclaim 1.0" script)
>     invoked from within
> "package require reclaim 1.0"
>     (file "/opt/local/libexec/macports/lib/macports1.0/diagnose.tcl" line
> 67)
>     invoked from within
> "source /opt/local/libexec/macports/lib/macports1.0/diagnose.tcl"
>     ("package ifneeded diagnose 1.0" script)
>     invoked from within
> "package require diagnose 1.0"
>     (file "/opt/local/libexec/macports/lib/macports1.0/macports.tcl" line
> 38)
>     invoked from within
> "source /opt/local/libexec/macports/lib/macports1.0/macports.tcl"
>     ("package ifneeded macports 1.0" script)
>     invoked from within
> "package require macports 1.0"
>     (file "./src/images_to_archives.tcl" line 6)
> make: *** [install] Error 1
>
> Here's the fix:
>
> diff --git a/portmgr/dmg/postflight.in b/portmgr/dmg/postflight.in
> index 7dc89c473..8bfa9d060 100755
> --- a/portmgr/dmg/postflight.in
> +++ b/portmgr/dmg/postflight.in
> @@ -70,7 +70,7 @@ OLD_VENDOR_DIRS="thread2.7.0 thread2.7.2 thread2.7.3
> thread2.8.7 \
>  thread2.8.8 thread2.8.9 thread2.8.10 \
>  tcllib1.15 tcllib1.17 tcllib1.18 tclx8.4 tcl8.5 \
>  itcl4.2.2 itcl4.2.3 itcl4.2.4 itcl4.3.0 \
> -sqlite3.36.0 sqlite3.40.0 sqlite3.44.2 sqlite3.45.3 \
> +sqlite3.47.2 sqlite3.36.0 sqlite3.40.0 sqlite3.44.2 sqlite3.45.3 \
>  tdbc1.1.3 tdbcmysql1.1.3 tdbcodbc1.1.3 tdbcpostgres1.1.3 \
>  tdbc1.1.5 tdbcmysql1.1.5 tdbcodbc1.1.5 tdbcpostgres1.1.5 \
>  tdbc1.1.7 tdbcmysql1.1.7 tdbcodbc1.1.7 tdbcpostgres1.1.7 \

New description:

 The end result is that macports build and installs properly, but if you
 are updating an older version of /opt/local from a checked out source and
 ports tree, you will get a backtrace:
 {{{
 /opt/local/libexec/macports/bin/tclsh8.6 ./src/images_to_archives.tcl
 dlopen(/opt/local/libexec/macports/lib/pextlib1.0/Pextlib.dylib, 0x0006):
 Library not loaded:
 /opt/local/libexec/macports/lib/sqlite3.45.3/libsqlite3.45.3.dylib
   Referenced from: <98D3107B-C4AE-3952-BB87-41FD6375C2C2>
 /opt/local/libexec/macports/lib/registry2.0/registry.dylib
   Reason: tried:
 '/opt/local/libexec/macports/lib/sqlite3.45.3/libsqlite3.45.3.dylib' (no
 such file),
 '/System/Volumes/Preboot/Cryptexes/OS/opt/local/libexec/macports/lib/sqlite3.45.3/libsqlite3.45.3.dylib'
 (no such file),
 '/opt/local/libexec/macports/lib/sqlite3.45.3/libsqlite3.45.3.dylib' (no
 such file)
     while executing
 "load /opt/local/libexec/macports/lib/pextlib1.0/Pextlib.dylib"
     ("package ifneeded Pextlib 1.0" script)
     invoked from within
 "package require Pextlib 1.0"
     (file "/opt/local/libexec/macports/lib/registry2.0/receipt_flat.tcl"
 line 37)
     invoked from within
 "source /opt/local/libexec/macports/lib/registry2.0/receipt_flat.tcl"
     ("package ifneeded receipt_flat 1.0" script)
     invoked from within
 "package require receipt_flat 1.0"
     (file "/opt/local/libexec/macports/lib/registry2.0/registry.tcl" line
 36)
     invoked from within
 "source /opt/local/libexec/macports/lib/registry2.0/registry.tcl"
     ("package ifneeded registry 1.0" script)
     invoked from within
 "package require registry 1.0"
     (file "/opt/local/libexec/macports/lib/registry2.0/portuninstall.tcl"
 line 35)
     invoked from within
 "source /opt/local/libexec/macports/lib/registry2.0/portuninstall.tcl"
     ("package ifneeded registry_uninstall 2.0" script)
     invoked from within
 "package require registry_uninstall 2.0"
     (file "/opt/local/libexec/macports/lib/macports1.0/reclaim.tcl" line
 52)
     invoked from within
 "source /opt/local/libexec/macports/lib/macports1.0/reclaim.tcl"
     ("package ifneeded reclaim 1.0" script)
     invoked from within
 "package require reclaim 1.0"
     (file "/opt/local/libexec/macports/lib/macports1.0/diagnose.tcl" line
 67)
     invoked from within
 "source /opt/local/libexec/macports/lib/macports1.0/diagnose.tcl"
     ("package ifneeded diagnose 1.0" script)
     invoked from within
 "package require diagnose 1.0"
     (file "/opt/local/libexec/macports/lib/macports1.0/macports.tcl" line
 38)
     invoked from within
 "source /opt/local/libexec/macports/lib/macports1.0/macports.tcl"
     ("package ifneeded macports 1.0" script)
     invoked from within
 "package require macports 1.0"
     (file "./src/images_to_archives.tcl" line 6)
 make: *** [install] Error 1
 }}}
 Here's the fix:
 {{{
 diff --git a/portmgr/dmg/postflight.in b/portmgr/dmg/postflight.in
 index 7dc89c473..8bfa9d060 100755
 --- a/portmgr/dmg/postflight.in
 +++ b/portmgr/dmg/postflight.in
 @@ -70,7 +70,7 @@ OLD_VENDOR_DIRS="thread2.7.0 thread2.7.2 thread2.7.3
 thread2.8.7 \
  thread2.8.8 thread2.8.9 thread2.8.10 \
  tcllib1.15 tcllib1.17 tcllib1.18 tclx8.4 tcl8.5 \
  itcl4.2.2 itcl4.2.3 itcl4.2.4 itcl4.3.0 \
 -sqlite3.36.0 sqlite3.40.0 sqlite3.44.2 sqlite3.45.3 \
 +sqlite3.47.2 sqlite3.36.0 sqlite3.40.0 sqlite3.44.2 sqlite3.45.3 \
  tdbc1.1.3 tdbcmysql1.1.3 tdbcodbc1.1.3 tdbcpostgres1.1.3 \
  tdbc1.1.5 tdbcmysql1.1.5 tdbcodbc1.1.5 tdbcpostgres1.1.5 \
  tdbc1.1.7 tdbcmysql1.1.7 tdbcodbc1.1.7 tdbcpostgres1.1.7 \
 }}}

--

Comment:

 Hey Jordan. Odd that I've never seen this. I don't think your patch is
 correct because it would delete the newly installed sqlite3.47.2 directory
 which is needed. Also, postflight is only run from the .pkg installer and
 so wouldn't affect `make install`.

-- 
Ticket URL: <https://trac.macports.org/ticket/71869#comment:1>
MacPorts <https://www.macports.org/>
Ports system for macOS


More information about the macports-tickets mailing list