Sun, 12 Aug 2007 (00:02 -0500 UTC) Ryan Schmidt wrote:
I'm not sure I like that mtree violations are fatal errors. The ports that are now failing to install because of mtree violations installed just fine in MacPorts 1.5.0. Why should they now fail to install? Their content has not changed. Sure, they may be installing things in places they shouldn't, but why should we make the user suffer? We have a -t switch which informs us about forgotten dependencies in the port -- but this does not issue a fatal error. It's just a message which portfile authors can use to improve their portfiles. Maybe mtree violations could be handled similarly.
I'm also concerned about needing to specify in the portfile that the port intends to violate the mtree. For example, I'm going to have to add that to the php5 port, because it wants to install an apache2 module and the apache2 layout is considered nonstandard. So just because I want to install one item in a weird place, I have to turn off the mtree violation checks in the entire php5 portfile. It would be nicer if port would just issue nonfatal debug messages letting us know exactly which files were violating the mtree. This way I could assure myself that my port is installing the apache2 module in a weird place, yes, but that everything else is being installed in sane locations.
What if you were to add a directive for port file such as add_to_mtree_exceptions(portname|portgroup, [exception-paths, ...]) Then each exceptional port could be registered when it installs. The database could be seeded with ports in certain groups such as aqua. When a port lists a dependency on one of the exceptionals, and that port tries to install something outside ${prefix}, the install path could be checked against the exceptions stored for the dependency and any new ones added by the port. If the directory is not in the list, then a warning gets issued. -- Dr. Robert Delius Royar Associate Professor of English Morehead State University Morehead, Kentucky