Opened 12 years ago

Closed 12 years ago

Last modified 12 years ago

#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)

Portfile.lassign.patch (253 bytes) - added by lockhart (Thomas Lockhart) 12 years ago.
Patch for current Portfile to replace lassign with set .. [lindex..] commands

Download all attachments as: .zip

Change History (11)

comment:1 in reply to:  description Changed 12 years ago by lockhart (Thomas Lockhart)

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?

comment:2 Changed 12 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 portlevmar: 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 in reply to:  2 Changed 12 years ago by ryandesign (Ryan Carsten Schmidt)

Replying to ryandesign@…:

lassign is the only port doing so

*levmar is the only port doing so

comment:4 in reply to:  2 ; Changed 12 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 in reply to:  4 Changed 12 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 12 years ago by lockhart (Thomas Lockhart)

Attachment: Portfile.lassign.patch added

Patch for current Portfile to replace lassign with set .. [lindex..] commands

comment:6 in reply to:  2 Changed 12 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:7 Changed 12 years ago by pixilla (Bradley Giesbrecht)

Cc: pixilla@… added

Cc Me!

comment:8 Changed 12 years ago by ryandesign (Ryan Carsten Schmidt)

Resolution: fixed
Status: newclosed

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 Changed 12 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 in reply to:  9 Changed 12 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).

Note: See TracTickets for help on using tickets.