[PD-dev] [ pure-data-Bugs-3525064 ] win7 / x64 plugin path issue : underlying tcl bug

SourceForge.net noreply at sourceforge.net
Wed May 9 12:25:28 CEST 2012


Bugs item #3525064, was opened at 2012-05-09 03:25
Message generated for change (Tracker Item Submitted) made by nobody
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=478070&aid=3525064&group_id=55736

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: pd-extended
Group: v0.43
Status: Open
Resolution: None
Priority: 5
Private: No
Submitted By: Nobody/Anonymous (nobody)
Assigned to: Hans-Christoph Steiner (eighthave)
Summary: win7 / x64 plugin path issue : underlying tcl bug

Initial Comment:
PD 0.43.1 extended on Win7 x64.

By default, when PD starts I get the following error reported in the main window

(Tcl) UNHANDLED ERROR: couldn't read directory "C:/Users/sxa/Application Data/*-plugin": permission denied
    while executing
"glob -directory $dir -nocomplain -types {f} --  *-plugin/*-plugin.tcl *-plugin.tcl"
    (procedure "load_startup_plugins" line 7)
    invoked from within
"load_startup_plugins"
    (procedure "pdtk_pd_startup" line 20)
    invoked from within
"pdtk_pd_startup 0 43 1 {extended-20120423} { {"standard (MMIO)" 3} {"ASIO (via portaudio)" 4} } {} {DejaVu Sans Mono} normal"
    ("uplevel" body line 53)
    invoked from within
"uplevel #0 $cmds_from_pd"Using C:/Program Files (x86)/pd/startup as startup.

It seemed to me that PD shouldnt be looking for plugins in

C:/Users/sxa/Application Data/
it should be looking for them in
C:/Users/sxa/Application Data/Pd

Because Im on Win7
C:/Users/sxa/Application Data/Pd
maps to
C:\Users\sean\AppData\Roaming\Pd
but Ive made sure that exists, so that's not the issue.

The relevant section of code starts at line 674 of pd-gui.tcl

proc load_startup_plugins {} {
    foreach pathdir [concat $::sys_searchpath $::sys_staticpath] {
        set dir [file normalize $pathdir]
        if { ! [file isdirectory $dir]} {continue}
        foreach filename [glob -directory $dir -nocomplain -types {f} -- \
                              *-plugin/*-plugin.tcl *-plugin.tcl] {
            set ::current_plugin_loadpath [file dirname $filename]
            load_plugin_script $filename
        }
    }
}

Adding some debug info

proc load_startup_plugins {} {
    foreach pathdir [concat $::sys_searchpath $::sys_staticpath] {
        set dir [file normalize $pathdir]
        if { ! [file isdirectory $dir]} {continue}
        foreach filename [glob -directory $dir -nocomplain -types {f} -- \
                              *-plugin/*-plugin.tcl *-plugin.tcl] {
            set ::current_plugin_loadpath [file dirname $filename]
            load_plugin_script $filename
        }
    }
}

Printing debug information confirmed that

set dir [file normalize $pathdir]

is stripping the lowest subdirectory [PD] off the path.

This appears to be triggered by a tcl bug in normalize which occurs with paths/permissions under win x64; 

http://sourceforge.net/tracker/index.php?func=detail&aid=3463315&group_id=10894&atid=110894



----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=478070&aid=3525064&group_id=55736



More information about the Pd-dev mailing list