111N/AWe start with all actions in a manifest.
111N/AWe apply each element in the filter chain in order. For each element, we
111N/Aeliminate all remaining actions which don't match the element.
111N/ASimple elements have a single filter:
111N/Ameans eliminate all actions which have an "arch" attribute that isn't
111N/AMore complicated elements can represent an intersection of filters:
111N/Ameans eliminate all actions which have both "arch" and "debug" attributes,
111N/Abut whose values, respectively, aren't "i386" and "true" (
e.g., eliminate
111N/Aall non-debug i386 actions and all sparc actions, debug and non-debug);
111N/Ameans eliminate all actions which have both "doc" and "locale" attributes
111N/Aand which aren't "true" and "fr", respectively (no, I'm not sure what
111N/A"doc=false" means, other than a reason to refactor). That is, strip out
111N/Aall documentation that isn't French (but keep other localized actions, such
111N/Aas message files, images, etc.).
111N/AElements can also represent a union of filters:
111N/Ameans eliminate all actions which have a "locale" attribute that isn't
111N/AWe'll probably want to mix intersection and union, too:
111N/A doc=true & (locale=fr | locale=sv)
111N/AAnd we want a fallback mechanism, allowing us to get the "best of" a
111N/Aparticular attribute. Four examples:
111N/A platform=SUNW,Sun-Fire-V240;sun4u
111N/AAny actions that haven't been eliminated by the end of the chain remain to
111N/Abe installed. At that point in time, if more than one action exists for
111N/Aany given object, the evaluation fails (can't have two copies of