[87310] trunk/dports/_resources/port1.0/group/php5pear-1.0.tcl

Bradley Giesbrecht pixilla at macports.org
Wed Nov 16 17:31:52 PST 2011


On Nov 16, 2011, at 5:20 PM, Ryan Schmidt wrote:

> 
> On Nov 16, 2011, at 19:06, Bradley Giesbrecht wrote:
> 
>> On Nov 16, 2011, at 4:42 PM, Ryan Schmidt wrote:
>> 
>>> On Nov 16, 2011, at 16:54, pixilla at macports.org wrote:
>>> 
>>>> +    system "${php5pear.cmd-pre} ${php5pear.cmd-pear} ${php5pear.cmd-post} config-show"
>>> 
>>> This kind of stuff looks like you *may* want to investigate the MacPorts base "command" system. configure, build, destroot, etc. are all "commands" in MacPorts, each of which has pre_args, args, post_args, env, as you know. You can probably create your own commands and run them with "command_exec". That *might* clean up some of this code, at least reduce some of the redundancy. (Or it might introduce its own complications. :)) An example of running commands with command_exec (though not creating entire new commands) is in the current php5 port (though it will go away in the New PHP Order, coming soon to a MacPorts near you).
>> 
>> Sounds interesting. It would be nice to make the PortGroup file easier to read. I suspect there are some unused vars and I am not really clear on tcl variable scope.
>> For instance, does a dot in a name have special meaning?
> 
> Right, you asked me that privately and I forgot to respond. I don't actually know. Conceptually, it creates a namespace; we think of e.g. "php5pear.channel" as belonging to the php5pear namespace. This is to avoid collisions with variables that might be defined in ports or in other portgroups. We have an informal agreement that only the php5pear portgroup would define variables or procedures beginning with "php5pear." But whether the "." in the name has any special significance to the Tcl language I don't know.

Ok, so inside a proc "php5pear.name" and "name" would have no effect on each other?

What I have struggled with is the declared "options" before the proc block, "option php5pear.channel", vars declared or passed into the:
proc php5pear.setup {php5pear.package version {php5pear.channel "pear.php.net"} {php5pear.packagexml "package.xml"}} {

Seems like some but not all vars need to be declared "global" inside a proc to be used:
global worksrcpath distname extract.suffix master_sites prefix destroot distpath
global php5pear.cmd-pre php5pear.cmd-pear php5pear.cmd-phar php5pear.cmd-php php5pear.cmd-post

> I would think glob would work fine, though, as in the shell, expanding "*" will not include dot files. If you want them, you have no explicitly say so, by using ".*"
> 
> It should just be (untested):
> 
>    fs-traverse -ignoreErrors item "${destroot}${php5pear.instpath}" {
>      if {[string first . [file tail ${item}] 0] == 0} {
>        if {[file tail ${item}] != "." && [file tail ${item}] != ".."} {
>          delete ${item}
>        }
>      }
> 
> Though [delete] and [file delete] probably only delete files, not directories. If there are dot directories you're trying to delete, then....... I don't know if we have a recursive delete proc somewhere in base already.


In this case many of the dot files are directories.


Regards,
Bradley Giesbrecht (pixilla)






More information about the macports-dev mailing list