On 04/22/10 06:20 PM, Jack Schwartz wrote:
Hi Joe and Keith.

Thanks for your comments. I've finally had time to go back and work on this. Below is IMHO a solution which addresses all of your concerns:

On 04/ 5/10 07:44 AM, Keith Mitchell wrote:
On 04/ 5/10 05:16 AM, joseph.vl...@oracle.com wrote:
On 04/ 4/10 11:41 PM, Jack Schwartz wrote:
Hi everyone.

This easy webrev is for a fix to the DC finalizer script which copies files into the boot_archive. It fixes how whole-directories are excluded.

I have tested this fix by having built several images during Driver Update testing.

Webrev:
http://cr.opensolaris.org/~schwartz/100404.1/webrev/index.html

Bug:
http://defect.opensolaris.org/bz/show_bug.cgi?id=15290

   Thanks,
   Jack

_______________________________________________
caiman-discuss mailing list
caiman-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/caiman-discuss

Hey Jack,

I see what I think might be a problem with your solution. What if the item you are attempting to match is a substring match and not the full match?

For example:

>>> excitem="AAAA/BBB/CCC"
>>> excitem.find("AA")
0

This matches "AA" even though I think you only want to match "AAAA"

I think this proposed solution might be safer:

>>> EXCLUDES = "one "
>>> for i in excitem.split('/'):
...    if "AAA" == i:
...       EXCLUDES = EXCLUDES + "more excludes"
...
>>> print EXCLUDES
one
>>>


Correctly does not match "AAA"


>>> for i in excitem.split('/'):
...    if "AAAA" == i:
...       EXCLUDES = EXCLUDES + "more excludes"
...
>>> print EXCLUDES
one more excludes
>>>

but does correcly match "AAAA"


What do you think?
If I append a / to the end of excitem and to the end of item if it doesn't already end in /, then it all works nicely. The trailing / of item properly "terminates" strings which would otherwise incorrectly match. For example,
/var/pk will incorrectly show as an ancestor to /var/pkg/123,
but
/var/pk/ won't.

I tested using a test program with a pretty extensive list of test cases, and then tested by running a build and checking added output. If you are curious, test program and output is attached.

Please bless.

    Thanks,
    Jack


I'm not sure that'll work in all cases Joe? Such as if "foo/bar" were included, and "bar" were excluded, it would match? But it's early on a Monday and maybe I'm not thinking it through.

Another point to consider is, it doesn't *seem* like there would be ill effects in the scenario you bring up. For example, consider the following set of dirs:

foo
foo/bar
foo/bartwo

Suppose you wanted to include foo, include foo/bartwo, and exclude foo/bar. Based on the code, "foo/bar" would 'match' against both foo/bar and foo/bartwo as it looped, but at line 163 all that's added is a "grep -v foo/bar" - so no harm done, in this case, in being overzealous.

That said:

Jack, please use "if excitem.startswith(item):" instead of parsing for "...find(..) == 0".

- Keith



Joe
_______________________________________________
caiman-discuss mailing list
caiman-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/caiman-discuss




Great idea Jack!

I'm good with this solution, other than the comment Keith made regarding line 169.

Joe
_______________________________________________
caiman-discuss mailing list
caiman-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/caiman-discuss

Reply via email to