Regression in [63442] trunk/base/src
Jeremy Huddleston
jeremyhu at macports.org
Fri Feb 5 11:28:05 PST 2010
DEBUG: Backtrace: can't read "registry.format": no such variable
while executing
"string equal ${registry.format} "receipt_sqlite""
(procedure "portinstall::install_main" line 4)
invoked from within
"$procedure $targetname"
Warning: the following items did not execute (for xorg-util-macros): org.macports.activate org.macports.install
Log for xorg-util-macros is at: /opt/local/var/macports/logs/_Users_jeremy_src_macports-trunk_dports_x11_xorg-util-macros/main.log
But shouldn't you be using ${macports::registry.format} ?
Index: src/port1.0/portinstall.tcl
===================================================================
--- src/port1.0/portinstall.tcl (revision 63463)
+++ src/port1.0/portinstall.tcl (working copy)
@@ -136,7 +136,8 @@
global name version portpath categories description long_description \
homepage depends_run installPlist package-install uninstall workdir \
worksrcdir UI_PREFIX destroot revision maintainers ports_force \
- portvariants targets depends_lib PortInfo epoch license registry.installtype registry.path
+ portvariants targets depends_lib PortInfo epoch license registry.installtype registry.path \
+ registry.format
if {[string equal ${registry.format} "receipt_sqlite"]} {
# registry2.0
On Feb 4, 2010, at 20:49, jmr at macports.org wrote:
> Revision: 63442
> http://trac.macports.org/changeset/63442
> Author: jmr at macports.org
> Date: 2010-02-04 20:49:23 -0800 (Thu, 04 Feb 2010)
> Log Message:
> -----------
> more reg2 wiring up
>
> Modified Paths:
> --------------
> trunk/base/src/port1.0/portinstall.tcl
> trunk/base/src/registry2.0/entryobj.c
> trunk/base/src/registry2.0/portimage.tcl
> trunk/base/src/registry2.0/portuninstall.tcl
>
> Modified: trunk/base/src/port1.0/portinstall.tcl
> ===================================================================
> --- trunk/base/src/port1.0/portinstall.tcl 2010-02-05 03:54:43 UTC (rev 63441)
> +++ trunk/base/src/port1.0/portinstall.tcl 2010-02-05 04:49:23 UTC (rev 63442)
> @@ -56,7 +56,7 @@
> set_ui_prefix
>
> proc portinstall::install_start {args} {
> - global UI_PREFIX name version revision variations portvariants
> + global UI_PREFIX name version revision portvariants
> global prefix
> ui_msg "$UI_PREFIX [format [msgcat::mc "Installing %s @%s_%s%s"] $name $version $revision $portvariants]"
>
> @@ -92,26 +92,18 @@
> }
> }
>
> -proc portinstall::directory_dig {rootdir workdir regref {cwd ""}} {
> +proc portinstall::directory_dig {rootdir workdir imagedir {cwd ""} {prepend 1}} {
> global installPlist
> set pwd [pwd]
> if {[catch {_cd $workdir} err]} {
> puts $err
> return
> }
> -
> +
> + set root [file join [file separator] $imagedir]
> foreach name [readdir .] {
> set element [file join $cwd $name]
> -
> - if {![info exists root]} {
> - set root [file separator]
> - }
> -
> - if { [registry_prop_retr $regref installtype] == "image" } {
> - set imagedir [registry_prop_retr $regref imagedir]
> - set root [file join $root $imagedir]
> - }
> -
> +
> set dst_element [file join $root $element]
> set src_element [file join $rootdir $element]
> # overwrites files but not directories
> @@ -126,65 +118,115 @@
> install_element $src_element $dst_element
> # only track files/links for registry, not directories
> if {[file type $dst_element] != "directory"} {
> - lappend installPlist $dst_element
> + if {$prepend} {
> + lappend installPlist $dst_element
> + } else {
> + lappend installPlist [file join [file separator] $element]
> + }
> }
> }
> if {[file isdirectory $name] && [file type $name] != "link"} {
> - directory_dig $rootdir $name $regref [file join $cwd $name]
> + directory_dig $rootdir $name $imagedir [file join $cwd $name]
> }
> }
> _cd $pwd
> }
>
> proc portinstall::install_main {args} {
> - global name version portpath categories description long_description homepage depends_run installPlist package-install uninstall workdir worksrcdir pregrefix UI_PREFIX destroot revision maintainers ports_force portvariants targets depends_lib PortInfo epoch license
> -
> - # Begin the registry entry
> - set regref [registry_new $name $version $revision $portvariants $epoch]
> -
> - # Install the files
> - directory_dig ${destroot} ${destroot} ${regref}
> -
> - registry_prop_store $regref categories $categories
> -
> - if {[info exists description]} {
> - registry_prop_store $regref description [string map {\n \\n} ${description}]
> - }
> - if {[info exists long_description]} {
> - registry_prop_store $regref long_description [string map {\n \\n} ${long_description}]
> - }
> - if {[info exists license]} {
> - registry_prop_store $regref license ${license}
> - }
> - if {[info exists homepage]} {
> - registry_prop_store $regref homepage ${homepage}
> - }
> - if {[info exists maintainers]} {
> - registry_prop_store $regref maintainers ${maintainers}
> - }
> - if {[info exists depends_run]} {
> - registry_prop_store $regref depends_run $depends_run
> - registry_register_deps $depends_run $name
> - }
> - if {[info exists depends_lib]} {
> - registry_prop_store $regref depends_lib $depends_lib
> - registry_register_deps $depends_lib $name
> - }
> - if {[info exists installPlist]} {
> - registry_prop_store $regref contents [registry_fileinfo_for_index $installPlist]
> - if { [registry_prop_retr $regref installtype] != "image" } {
> - registry_bulk_register_files [registry_fileinfo_for_index $installPlist] $name
> + global name version portpath categories description long_description \
> + homepage depends_run installPlist package-install uninstall workdir \
> + worksrcdir UI_PREFIX destroot revision maintainers ports_force \
> + portvariants targets depends_lib PortInfo epoch license registry.installtype registry.path
> +
> + if {[string equal ${registry.format} "receipt_sqlite"]} {
> + # registry2.0
> + registry::write {
> +
> + set regref [registry::entry create $name $version $revision $portvariants $epoch]
> +
> + # XXX this fails to describe path deps
> + if {[info exists depends_run]} {
> + foreach dep $depends_run {
> + $regref depends [lindex [split $dep :] end]
> + }
> + }
> + if {[info exists depends_lib]} {
> + foreach dep $depends_lib {
> + $regref depends [lindex [split $dep :] end]
> + }
> + }
> +
> + if {${registry.installtype} == "image"} {
> + $regref installtype image
> + $regref state imaged
> + set imagedir [file join ${registry.path} software ${name} ${version}_${revision}${portvariants}]
> + $regref location $imagedir
> + } else {
> + $regref installtype direct
> + $regref state installed
> + set imagedir ""
> + }
> +
> + # Install the files, requesting that the list not have the image dir prepended
> + directory_dig ${destroot} ${destroot} ${imagedir} "" 0
> +
> + if {[info exists installPlist]} {
> + # register files
> + $regref map $installPlist
> + }
> }
> + } else {
> + # Begin the registry entry
> + set regref [registry_new $name $version $revision $portvariants $epoch]
> +
> + set imagedir ""
> + if { [registry_prop_retr $regref installtype] == "image" } {
> + set imagedir [registry_prop_retr $regref imagedir]
> + }
> + # Install the files
> + directory_dig ${destroot} ${destroot} ${imagedir}
> +
> + registry_prop_store $regref categories $categories
> +
> + if {[info exists description]} {
> + registry_prop_store $regref description [string map {\n \\n} ${description}]
> + }
> + if {[info exists long_description]} {
> + registry_prop_store $regref long_description [string map {\n \\n} ${long_description}]
> + }
> + if {[info exists license]} {
> + registry_prop_store $regref license ${license}
> + }
> + if {[info exists homepage]} {
> + registry_prop_store $regref homepage ${homepage}
> + }
> + if {[info exists maintainers]} {
> + registry_prop_store $regref maintainers ${maintainers}
> + }
> + if {[info exists depends_run]} {
> + registry_prop_store $regref depends_run $depends_run
> + registry_register_deps $depends_run $name
> + }
> + if {[info exists depends_lib]} {
> + registry_prop_store $regref depends_lib $depends_lib
> + registry_register_deps $depends_lib $name
> + }
> + if {[info exists installPlist]} {
> + registry_prop_store $regref contents [registry_fileinfo_for_index $installPlist]
> + if { [registry_prop_retr $regref installtype] != "image" } {
> + registry_bulk_register_files [registry_fileinfo_for_index $installPlist] $name
> + }
> + }
> + if {[info exists package-install]} {
> + registry_prop_store $regref package-install ${package-install}
> + }
> + if {[info proc pkg_uninstall] == "pkg_uninstall"} {
> + registry_prop_store $regref uninstall [proc_disasm pkg_uninstall]
> + }
> +
> + registry_write $regref
> }
> - if {[info exists package-install]} {
> - registry_prop_store $regref package-install ${package-install}
> - }
> - if {[info proc pkg_uninstall] == "pkg_uninstall"} {
> - registry_prop_store $regref uninstall [proc_disasm pkg_uninstall]
> - }
> -
> - registry_write $regref
> -
> +
> return 0
> }
>
>
> Modified: trunk/base/src/registry2.0/entryobj.c
> ===================================================================
> --- trunk/base/src/registry2.0/entryobj.c 2010-02-05 03:54:43 UTC (rev 63441)
> +++ trunk/base/src/registry2.0/entryobj.c 2010-02-05 04:49:23 UTC (rev 63442)
> @@ -189,7 +189,7 @@
> Tcl_Obj* CONST objv[]) {
> reg_registry* reg = registry_for(interp, reg_attached);
> if (objc != 2) {
> - Tcl_WrongNumArgs(interp, 1, objv, "files");
> + Tcl_WrongNumArgs(interp, 1, objv, "imagefiles");
> return TCL_ERROR;
> } else if (reg == NULL) {
> return TCL_ERROR;
>
> Modified: trunk/base/src/registry2.0/portimage.tcl
> ===================================================================
> --- trunk/base/src/registry2.0/portimage.tcl 2010-02-05 03:54:43 UTC (rev 63441)
> +++ trunk/base/src/registry2.0/portimage.tcl 2010-02-05 04:49:23 UTC (rev 63442)
> @@ -159,7 +159,7 @@
> }
>
> if {$use_reg2} {
> - _activate_contents $port
> + _activate_contents $requested
> $requested state active
> } else {
> set imagedir [registry::property_retrieve $ref imagedir]
>
> Modified: trunk/base/src/registry2.0/portuninstall.tcl
> ===================================================================
> --- trunk/base/src/registry2.0/portuninstall.tcl 2010-02-05 03:54:43 UTC (rev 63441)
> +++ trunk/base/src/registry2.0/portuninstall.tcl 2010-02-05 04:49:23 UTC (rev 63442)
> @@ -235,7 +235,8 @@
>
> # Now look for a contents list
> if {$use_reg2} {
> - set contents [$port files]
> + # imagefiles gives the actual installed files in direct mode
> + set contents [$port imagefiles]
> } else {
> set contents [registry::property_retrieve $ref contents]
> if { $contents == "" } {
> _______________________________________________
> macports-changes mailing list
> macports-changes at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo.cgi/macports-changes
More information about the macports-dev
mailing list