I found some unexpected behaviour within make on 6.2-RELEASE,
Not sure if it's a bug, or proper behaviour. Comment please ?

Make seems to be being too clever, evaluating where it
think the CWD (current working directory) is, whereas I think
it should better let the external per line shell discover for itself.
Make fails to realise that because of  symbolic links, it is not
acceptable to shorten
        cd /site/home/jhs/pics/.. ; rdist
to
        cd /site/home/jhs ; rdist

How I discovered the behaviour:
        I keep my data split in 2: 
                Some small enough to back up to a USB stick, eg:
                        /usra/home/jhs/._/txt/  
                & some bulky eg:
                        /usra/jhs/xtra/pics
        using symbolic links eg
                /site/home      -> /usra/home
                ~/.HOME         -> /site/home/jhs/._
                ~/txt           -> .HOME/txt
                ~/pics          -> .HOME/pics
                ~/._/pics       -> xtra/pics
                ~/._/xtra/pics  -> /usra/jhs/xtra/pics

        Some links are more complex than shown, for reasons
        beyond scope of this posting, but it's all been working fine
        for 8 years & I've had patches to 2.2.8 onward
        kernels to increase the allowed traversal count for sym
        links etc
        
http://berklix.com/~jhs/src/bsd/fixes/FreeBSD/src/gen/sys/sys/param.h.REL=ALL.diff

It's been fine while I manually ran:
        cd ; rdist `hostname -s`
        cd ~/xtra/LN  ; rdist xtra      # LN -> /usra/jhs/xtra
The make behaviour was noticed when I embeded those lines in a Makefile.

Here's some to try yourself:
# Warning cant use eg ~/pics/../Distfile
bug1:
        -cd ~/txt/.. && pwd
        @#      /usr/home/jhs
        -cd ~/txt/.. && /bin/pwd
        @#      /usra/home/jhs
        -cd ~/txt && cd .. && /bin/pwd
        @#      /usra/home/jhs
        -cd ~/._/txt/.. && /bin/pwd
        @#      /usra/home/jhs/._
bug2:
        cd ~/pics && pwd
        @#      /usr/home/jhs/pics
        cd ~/pics/.. && pwd
        @#      /usr/home/jhs
        cd ~/pics && /bin/pwd
        @#      /usra/jhs/xtra/pics
        cd ~/pics/.. && /bin/pwd
        @#      /usra/home/jhs

See from results marked @#, make is evaluating eg
        cd ~/txt/.. ; rdist
as if it's equivalent to 
        cd ~; rdist
& it's Not equivalent,
if I do eg:
        cd ~/pics/.. ; rdist 
rdist6 runs using the Distfile in my ~/Distfile, rather than different
/usra/jhs/xtra/Distfile.

I can cludge round this make behaviour, eg by in Makefile avoiding the ../ in
        cd ~/xtra/pics/.. && rdist -f /usra/jhs/xtra/Distfile pics
but seems make is trying to be too clever, & failing, & make would be better
if it did less.

(BTW, to avoid distracting answers: I know make invokes a seperate
shell per line, that's not the issue, also not the issue is /usr/obj/
or which external interactive shell I use).

Julian
--
Julian Stacey. Munich Consultant: BSD Unix Linux. http://berklix.com
        Ihr Rauch=mein allergischer Kopfschmerz. Dump cigs 4 snuff.
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to