mtree violations should be debug info,
should not be fatal errors
Weissmann Markus
mww at macports.org
Sun Aug 12 15:08:19 PDT 2007
On 12 Aug 2007, at 22:14, Weissmann Markus wrote:
> On 12 Aug 2007, at 07:25, markd at macports.org wrote:
>
>> Ryan Schmidt <ryandesign at macports.org> writes:
>>> 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.
>>
>> +1 And I still don't know exactly what an mtree violation is.
>>
>
> we've documented the should-be state of the layout of the ports-
> filesystems years ago already - see porthier(7); if ports fail
> because of this right now, it is most likely either because our
> implementation is faulty or the port is buggy.
>
> The deal is, that port(1) should really protect a user from having
> files installed "somewhere", e.g. in /System; if a port really has
> to install files in a non-standard location, it should indicate
> this. Installing files e.g. in /usr can be fatal for a system and
> can render it unusable. A port might overwrite system files,
> install some kernel extension, etc.
> I do not see a reason to not protect a user from an accident like
> this. (The trace mode will not protect you here, it keeps ports
> from writing to wrong locations before the install phase.)
>
> For the rare occasion that it is necessary to install e.g. a kext,
> an indication by the port author is not a big deal. I assume that
> only a few ports require this right now while we might find some
> dozen ports which are just buggy and no one noticed so far.
>
> There is a bug in the current implementation that incorrectly
> complains about files in e.g. "/Applications" which has been fixed
> in trunk already. (but is in 1.5.1!)
>
Just before this one gets a stopper for a lot of ports:
Juan will look into doing a 1.5.2 (or whatever) release which
includes the fix for the "/Applications" bug and also turns the
violation errors into non-fatal warnings (for now). I should have
done it this way from the start, to let us do some cleaning before
the fist of quality assurance hits our ports.
If someone comes up with a better name for 'mtree violation' please
let me know - obviously it is not very self-explanatory...
-Markus
---
Markus W. Weissmann
http://www.mweissmann.de/
More information about the macports-dev
mailing list