[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