On Dec 2, 2007, at 2:06 PM, James Berry wrote:

Hi Juan,

On Dec 2, 2007, at 9:50 AM, Juan Manuel Palacios wrote:
So, has any conclusion been reached for this issue? I'm inclined to backing this feature out of the release_1_6 branch until a working consensus is reached, and only release it to the public at that time (in 1.6.x (x > 0)). Until now we've only been modifying the user "profile" for a range of bourne based shells and the "cshrc" file for equivalent C based shells, which has worked fairly well, I believe; anyone experienced enough to create something like ~/.bash_profile or anything else very shell specific would be savvy enough to setup his/her own environment to their content, I'm sure. I'd strongly favor sticking to this approach in 1.6.0 until something better is found, unless it explicitly breaks expected behavior on Leopard. Does it?

Well, given that man pages are broken at present with a standard MacPorts install under Leopard, something has to be done. A few choices:

(1) Use this scheme, as implemented. (Downsides: affects /etc, MacPorts paths are added at the end of PATH and MANPATH).

(2) Supplement this scheme by munging PATH inside the MacPorts code to ensure that $prefix is always at the head of the path during builds, and to guard against the sort of build problems suggested by kvv.

(3) Modify existing path modification code to also add MacPorts paths to MANPATH. (This might break other man pages on Tiger where the system provides no meaningful default for MANPATH—maybe we do it only if MANPATH is already defined?)

I've been mulling over this situation for the last week or so, but haven't done anything because I'm not very happy with any of the solutions.... I think (3), however is the lowest risk approach.

James


So, using approach number 3) to add our settings to the MANPATH variable on both Tiger and Leopard only if it the latter exists, James and I have two suggestions that we believe work equally well, either one to be added to the base/portmgr/dmg/postflight script:

1) A conditional that would be added to each of the two important cases of the "case $USHELL in" clause:

 *csh)
if $SHELL -lc "/usr/bin/env | grep -q MANPATH" && ! $SHELL -lc "/usr/ bin/printenv MANPATH" | grep -q /opt/local/share/man; then
                echo "set manpath=(/opt/local/share/man" '$path'")" >> 
$HOME/.cshrc
        fi

 *sh)
if $SHELL -lc "/usr/bin/env | grep -q MANPATH" && ! $SHELL -lc "/usr/ bin/printenv MANPATH" | grep -q /opt/local/share/man; then
                echo "export MANPATH=/opt/local/share/man:\$PATH" >> 
$HOME/.profile
        fi


With this approach, a static setting is added to the proper files if the conditional matches.


2) No conditional what-so-ever is added to either of the cases, but rather code to test for manpath at shell runtime is output to both cshrc and profile files:

 *csh)
echo "[ -n \"\$MANPATH\" ] && echo \$MANPATH | grep "/opt/local/" > /dev/null && set manpath=(/opt/local/share/man '$path')" >> $HOME/.cshrc

 *sh)
echo "[ -n \"\$MANPATH\" ] && \$(echo \$MANPATH | grep "/opt/local/" >& /dev/null) && export MANPATH=/opt/local/share/man:\$MANPATH" >> $HOME/.profile


With this approach, a dynamic check for the variable would be performed upon each shell invocation, but I wouldn't be too sure about the proper escaping needed to get everything through to the files appropriately.

So, opinions? Option 1? Option 2? Corrections to either? Something completely different?

        Regards,...


-jmpp

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

Reply via email to