DESTDIR support is broken (patch)
Ivan Shmakov
oneingray at gmail.com
Fri Jun 6 07:40:35 UTC 2008
>>>>> Julien ÉLIE <julien at trigofacile.com> writes:
>>> + if [ -r $D$(MAN5)/../man8 ] ; then \
>> I'd rather use [ $D$(MAN5)/../man8 -ef $D$(MAN8) ] here, but
>> unfortunately `-ef' isn't required by POSIX.
>> Also, it might be something like:
>> if [ $(dir $(MAN5))/$(notdir $(MAN8)) = $(MAN8) ] ; then ...
>> though I don't know whether these Make functions are portable.
> Well, I can do:
> if [ "$D$(MAN5)/../man8" = "$D$(MAN8)" ] && [ -d $D$(MAN5)/../man8 ] ; then \
> It will be like your suggested "-ef"
But it won't! The `-ef' operator tests whether the strings
/name/ the same file. On the other hand, the `=' operator tests
whether the /strings/ are the same, and it doesn't consider any
filesystem objects at all. Consider, e. g.:
test /usr/share -ef /usr/share # => TRUE
test /usr/share = /usr/share # => TRUE
test /usr/share/.. -ef /usr # => TRUE (most probably)
test /usr/share/.. = /usr # => FALSE
(Assuming that both /usr and /usr/share name existing
directories and /usr/share isn't a symbolic link.)
There's an example ``mirroring'' the last one:
test /foo/bar/baz -ef /foo/bar/baz # => FALSE (most probably)
test /foo/bar/baz = /foo/bar/baz # => TRUE
(Assuming that /foo/bar/baz name no existing file.)
> (less efficient but still).
[...]
More information about the inn-workers
mailing list