Hi,

Here's another one of my  probably rhetorical questions...

It's not that uncommon that one includes a PortGroup that adds build settings 
(e.g. to depends_lib) in a port where those settings are irrelevant and even 
unwanted. For instance, a port providing translation files for a KDE port would 
probably need to include a KDE PortGroup but doesn't need to depend on Qt.

If one wants to filter out all those settings that were added automatically one 
currently needs to do that by hand, by keeping track of what gets added oneself 
or via a code snippet like this

{{{
        if {[info exists depends_lib]} {
            set curdeps ${depends_lib}
        } else {
            set curdeps ""
        }
        # include PortGroup(s)
        if {${curdeps} eq "" || [string first ${curdeps} ${depends_lib}] >= 0} {
            depends_lib-delete [string map {${curdeps} ""} ${depends_lib}]
        }
}}}

which obviously only handles simple changes.

I never looked into this in detail but I presume that all those "variables" 
which support the -append, -delete, -replace, &c functions are based on common 
code. How complicated (and justified) would it be to add code that keeps track 
of changes made by those functions through convenience functions like below?

        foo-snapshot # start recording differences

        foo-diff # return the difference and stop recording

or more likely

        foo-added # return appended and/or prepended and/or replaced-(new) 
elements and stop recording
        foo-deleted # return deleted and/or replaced-(old) elements and stop 
recording

The snippet above would become

{{{
        depends_lib.snapshot
        # include PortGroup(s)
        # we don't need any new dependencies that may have been added, so:
        depends_lib-delete ${depends_lib-added}
}}}

Not that I think this would see very frequent use, but it could be worth the 
effort if the implementation isn't too complicated and allows for cleaner 
portfiles and (esp.) dependency relationships, no?

R.
_______________________________________________
macports-dev mailing list
[email protected]
https://lists.macosforge.org/mailman/listinfo/macports-dev

Reply via email to