Final steps for 1.6
Juan Manuel Palacios
jmpp at macports.org
Fri Dec 7 09:38:26 PST 2007
On Dec 7, 2007, at 4:53 AM, Vincent Lefevre wrote:
> On 2007-12-07 00:17:04 -0400, Juan Manuel Palacios wrote:
>> My list of outstanding TODOs for the 1.6 release is almost empty
>> after
>> finishing what I committed in r31774, directly to the release
>> branch: a
>> rethought and rewritten postflight script to add PATH and MANPATH
>> settings as appropriate to the user's shell configuration file.
>> Please
>> read the commit log and test the script, reporting any findings
>> you have.
>
> When will this be modified exactly? There's should be a confirmation
> from the user in any case.
The script is run by Installer.app after the bundled package is
installed (hence "postflight"). We don't currently add an explicit
warning sheet with an "OK" dismissal button alerting users as to what
we're about to do, but we do certainly explain it as openly as
possible in both our website and in the ReadMe.rtf file that
introduces you to the Installer.app package. I agree such sheet would
be a good addition, though, so pointers on how to do it are welcome.
Anders, any idea on how to get something akin to the "this package
needs to run a program" warning sheets that we see in some
Installer.app packages?
>
> FYI, modifying the .profile will not necessarily work with zsh
> (this is
> quite complex, see its man page).
Thanks for bringing this up! The original intent of the postflight
script was only to make life easier for non-savvy users who didn't
have much of an idea on how to adapt their shell files to work with
MacPorts. The key aspect to that statement is "non-savvy users", and
personally I believe that anyone savvy enough to change his/her shell
to zsh is also savvy enough to manually adapt his/her environment as
needed. Since our target audience for this postflight script is
likely to stick to default settings, I wouldn't have a problem with
limiting the scope of this script to the bash shell, as that's what's
default from Panther onward. We could by extension include tcsh, who
knows, but the point I'm trying to make is that I'm personally not
that comfortable either with the *sh glob that matches zsh and many
others at $CONF_FILE selection time:
USHELL=$(basename $SHELL)
case $USHELL in
*csh)
CONF_FILE=.cshrc
;;
*sh)
CONF_FILE=.profile
;;
*)
echo "Unknown shell! Please set your MacPorts compatible
environment manually."
;;
esac
Thoughts?
>
> Also, it's a bad idea to modify $MANPATH as this may break things in
> particular if the user usually has an empty $MANPATH (in which case
> the man path is automatically built from $PATH -- this is much better
> to get consistent paths).
Adding our setting to MANPATH *only-if-it-already-exists* *and* if
we're not already in there was agreed here to be the "lesser evil"
for the time being, so that's what we're doing. If MANPATH does not
exist at all (different from existing but being empty, or otherwise
not containing our path), we don't add anything there and instead let
alternative methods to their work (manpath(1), path_helper(8),
whatever). If MANPATH exists (thus probably overriding the work of
those alternate methods), and does not contain our path, then (and
only then) we add it. If I'm not mistaken, having an *existing*
MANPATH variable that does not contain our path is precisely the
situation that breaks our man pages and what we're trying to remedy.
Needless to say, I'm more than open to any other better approach
going forward (yes, most probably meaning that what we now have for
1.6 will be frozen to substantial changes -- that is, anything other
than bug fixes).
Regards,....
-jmpp
More information about the macports-dev
mailing list