Any chance someone can take a poke at this one? I'm trying to have a
running port by wekkends end.
I know there is a lot in there but I'm stumped.
Thanks.
--
Scott
Iphone says hello.
On Nov 7, 2008, at 6:49 PM, Scott Haneda <[EMAIL PROTECTED]> wrote:
Is there a long standing debate on this list that a normal reply
does not go back to the list? I am sorry to all of you who I have
replied to direct, I did intend for it to go to the list for the
benefit of the archives.
On Nov 6, 2008, at 1:06 AM, Bryan Blackburn wrote:
What goes in there of course depends on how you actually install
this port;
since you've done this by hand you should have a pretty good idea.
Though
note everything should go into things starting with ${destroot}$
{prefix} as
that is a staging area, so port can then scan it to find all files to
install.
For a manual install, see as an example the destroot phase of
<http://trac.macports.org/browser/trunk/dports/math/ent/Portfile>
to at least get you started. If you have to install a number of
files
matching various patterns, see the last part of the post-destroot
phase in
<http://trac.macports.org/browser/trunk/dports/archivers/lzo2/Portfile
>
which uses glob to match multiple files.
Yes, these are just files, which is the part in the script that I am
at now.
First, there is the issue of needing to do things to the files while
they are freshly unpacked. I am yet to find a good way to
recursively act on a set of files in TCL.
The idea is, I have a set of files, and directories, and who knows
how deep they go, or what the developer will do to the arrangement
later.
Sure, I can do the foreach file1 file2 file3 dir1/file1 dir1/file2
with a glob, but that is then something I have to maintain. I can
stuff the files and directories into a list, which makes it a little
easier...
At the end of the day, I think it would be best to simply say, "I
want to perform an action on all files below 'directory', using a
file extension filter.
It can be a whitelist, or a blacklist, that is trivial, though a non
extension file may have to have some though put into it.
How does one do this in tcl? I have a test case, and this is my
first ever step into tcl, and further, my first recursive function
that deals with recursion. Never called the function itself in a
function before...
proc recursiveDirList { dir } {
set tmp_list {}
# Traverse top directory
set contents [glob -nocomplain -directory $dir *]
foreach item $contents {
lappend tmp_list $item
# Recurse - go into the sub directory
if { [file isdirectory $item] } {
lappend tmp_list [recursiveDirList $item]
}
}
# Final result, a list of all files and directories in $dir
return $tmp_list
}
# Iterate the results,
foreach line [recursiveDirList $worksrcpath] {
if { [regexp {((.*\.txt)|(.*\.dat)|(.*\.pl)|(.*\.sh))} $line] } {
puts "-"
puts $line
puts "-"
}
}
So the first one just makes a list of all directories and files.
First bad thing is that I do not want the directory in there, there
is no action I will ever take on a directory. Second, when I print
out the list, it is not a clean list, but a nested one, and some
items have "{" and "}" wrapping the path items, which makes no sense
to me. Stumped.
I then made the second chunk of code, in order to filter the files I
want. I suspect there is a better regex I can use to make sure it
ends with, and does not contain the pattern, and it should be case
insensitive.
In reality, it would be much more ideal to simply supply a file
extension list to the first function, and return a nice clean list
of the files.
I gave up on this, and did it in a less future proof way, for the
sake of having less code in the port. If someone can help me with
this to make it worthwhile, I would rather go this route. It would
be an nice way to remove DOS lines endings, or do basic find and
replace across a bunch of files. I never have to worry if the
developer changes things.
-------
How does one decide where to put the final set of files? Currently,
it looks like the old assp puts it in /opt/local/var but how was
that decided? Do I hard code that path, or is there a built in I am
missing?
The old assp port file did some user and group adding, and I have
never done that in the past to make this run. Is this a requirement
to do so, or at least a good practice? I will check with the
developer, but I think the permissions are best set to the user that
installed it. Or in the OS X case, the logged in user I would
assume. I can not see why this set of files needs to run as anything
else, it has it's own http server, so permissions and user/group, as
long as the same as the http server, would be fine.
In the old assp port I also see basically, once line of xinstall for
every file that needs dealing with. Is there not a way to simply
tell it to take a directory, and move it where it needs to go? if
not, what about the subdirectories, I have to move the individual
files one at a time, and then how do I create those files parent
directory?
Finally, after all that, I will get to the dependencies, for which,
about 25% of them do not seem to have port files. From looking over
many of the p5-* ports, is it really as simple as that, sort of like
CPAN does it, MacPorts does that as well, so I simply make this bare
minimum port file, and it runs with it? What happens if this newly
made port file has dependencies, and those dependencies have
dependencies? Do I have to traverse the entire dependency tree to
get them to work? I could be in those for 20 or so port files if
that is true :)
Thanks again.
--
Scott
_______________________________________________
macports-users mailing list
macports-users@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macports-users