On 2016-10-11 16:38, René J.V. Bertin wrote:
> This does work though:
> 
> {{{
> proc macports::normalize { filename } {
>     # normalise the user-specified prefix. The test file under $prefix need 
> not exist for that:
>     set nprefix [file dirname [file normalize "${macports::prefix}/foo"]]
>     set file [file normalize $filename]
>     # check if the result starts with the "normalised" prefix:
>     if {$nprefix ne $macports::prefix && [string first $nprefix $file] eq 0} {
>         # obtain the part after the normalised prefix, and prepend the 
> user-specific prefix to it:
>         set file [file join $macports::prefix [string range $file [string 
> length $nprefix]+1 end]]
>     }
>     return $file
> }
> }}}

This might solve the ${prefix} being a symlink. Do we want to treat that
as a supported special case after all?

If ${prefix}/bin is a symlink, this would still not work as expected.
How do we decide when to honor a symlink put in place by a port versus
ignoring a manual replacement in normalization? At which paths do we
want to support symlinks?

We make certain assumptions about ${prefix}, such as the common check
for [file writable ${prefix}] throughout the code. We should make sure
these always follow the symlink and not report status of the symlink
itself. Symlinks have their own permission bits on HFS+, can be changed
by chmod -h and will adopt umask on creation.

Rainer
_______________________________________________
macports-dev mailing list
macports-dev@lists.macosforge.org
https://lists.macosforge.org/mailman/listinfo/macports-dev

Reply via email to