#33551 closed defect (fixed)
levmar: uses lassign which is incompatible with Tiger's Tcl 8.4
Reported by: | nonstop.server@… | Owned by: | lockhart (Thomas Lockhart) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.0.4 |
Keywords: | tiger | Cc: | ryandesign (Ryan Carsten Schmidt), pixilla (Bradley Giesbrecht) |
Port: | levmar |
Description
Port levmar returns an error after issuing the port info command.
% port info levmar Error: Unable to open port: invalid command name "lassign"
On another system it presents a likewise error during the port sync command.
% sudo port -d sync 2>&1 |tee -a macports_sync.log DEBUG: Synchronizing ports tree(s) <snip output for brevity> Failed to parse file devel/levmar/Portfile: invalid command name "lassign" Total number of ports parsed: 24 Ports successfully parsed: 23 Ports failed: 1 Up-to-date ports skipped: 13667
Attachments (1)
Change History (11)
comment:1 Changed 13 years ago by lockhart (Thomas Lockhart)
comment:2 follow-ups: 3 4 6 Changed 13 years ago by ryandesign (Ryan Carsten Schmidt)
Cc: | ryandesign@… added; lockhart@… removed |
---|---|
Keywords: | tiger added |
Owner: | changed from macports-tickets@… to lockhart@… |
Summary: | levmar @2.6 Error: Unable to open port → levmar: uses lassign which is incompatible with Tiger's Tcl 8.4 |
According to this page, lassign was not part of Tcl until version 8.5. Tiger has Tcl 8.4, and I am able to reproduce the problem on Tiger. So MacPorts should not use lassign. lassign is the only port doing so; since we've gotten by for years with thousands of ports without lassign, I imagine levmar can get along without it too.
comment:3 Changed 13 years ago by ryandesign (Ryan Carsten Schmidt)
comment:4 follow-up: 5 Changed 13 years ago by lockhart (Thomas Lockhart)
Replying to ryandesign@…:
According to this page, lassign was not part of Tcl until version 8.5. Tiger has Tcl 8.4, and I am able to reproduce the problem on Tiger. So MacPorts should not use lassign. lassign is the only port doing so; since we've gotten by for years with thousands of ports without lassign, I imagine levmar can get along without it too.
OK, will submit patches asap. I'm also working on fixing a failure mode in "port test levmar". The levmar library is not found by lmdemo since it has an @rpath in the linker information so runs when the port is installed but does not run out of a temporary installation such as test uses.
comment:5 Changed 13 years ago by ryandesign (Ryan Carsten Schmidt)
Replying to lockhart@…:
I'm also working on fixing a failure mode in "port test levmar". The levmar library is not found by lmdemo since it has an @rpath in the linker information so runs when the port is installed but does not run out of a temporary installation such as test uses.
In the ImageMagick port, I handle a similar situation by adding this line:
test.env DYLD_LIBRARY_PATH=${worksrcpath}/magick/.libs
Perhaps something like that will help you with levmar.
Changed 13 years ago by lockhart (Thomas Lockhart)
Attachment: | Portfile.lassign.patch added |
---|
Patch for current Portfile to replace lassign with set .. [lindex..] commands
comment:6 Changed 13 years ago by lockhart (Thomas Lockhart)
Replying to ryandesign@…:
According to this page, lassign was not part of Tcl until version 8.5. Tiger has Tcl 8.4, and I am able to reproduce the problem on Tiger. So MacPorts should not use lassign. lassign is the only port doing so; since we've gotten by for years with thousands of ports without lassign, I imagine levmar can get along without it too.
I've posted a patch which replaces lassign with explicit "set x [lindex...]" commands. Tested successfully on Lion.
comment:8 Changed 13 years ago by ryandesign (Ryan Carsten Schmidt)
Resolution: | → fixed |
---|---|
Status: | new → closed |
Replying to lockhart@…:
I've posted a patch which replaces lassign with explicit "set x [lindex...]" commands. Tested successfully on Lion.
Thanks; committed in r90595.
Replying to ryandesign@…:
test.env DYLD_LIBRARY_PATH=${worksrcpath}/magick/.libs
I see now that you already have a similar line in the levmar portfile.
I'm not familiar with rpath. Is its use necessary? I can't recall another port using it. Would it work if you don't use it?
This matter should probably be discussed elsewhere however; this ticket is now resolved.
comment:9 follow-up: 10 Changed 13 years ago by pixilla (Bradley Giesbrecht)
Tom, sorry for the bad advice with regard to "lassign".
MacPorts prefers unified diff patches. development.patches.portfile
I will have your fix committed momentarily.
comment:10 Changed 13 years ago by lockhart (Thomas Lockhart)
Replying to pixilla@…:
Tom, sorry for the bad advice with regard to "lassign".
MacPorts prefers unified diff patches. development.patches.portfile
I will have your fix committed momentarily.
Thanks. I'll open a separate ticket for the rpath issue (I have a fix).
Replying to nonstop.server@… ... Neither of these symptoms are reproducible on my Lion system. Do you have more details on your OS and version of MacPorts? What tcl installation would be missing the lassign command?