Portfile for a DMG that displays license before mounting

Ryan Schmidt ryandesign at macports.org
Mon Jun 3 19:19:21 UTC 2019



On Jun 3, 2019, at 13:03, Andrew Udvare wrote:

> I got really confused on the use of the `copy` command when it comes to copying a complete directory tree to another place when it involves the DMG contents, with the name of the directory.
> 
> If I do these (where x and y are both directories):
> 
> copy x y/
> copy x y
> copy x/ y
> 
> Assuming x/file exists and is a file, this creates y/file and not y/x/file.
> 
> My workaround is to copy two items even if I do not use all the arguments later. https://github.com/Tatsh/ports/blob/master/multimedia/makemkv/Portfile#L42 note the MakeMKV.url argument. This makes the copy command create MakeMKV.app in ${worksrcpath} instead of skipping it for the content.
> 
> The Tcl documentation says file copy is affected by cross-file system transactions, which may explain why the destroot {} copy works as expected.

I'm not sure what you mean.

You wrote:

    copy ${mountpoint}/MakeMKV.app ${mountpoint}/MakeMKV.url ${worksrcpath}/

This works fine and copies the directory MakeMKV.app and the file MakeMKV.url into the directory ${worksrcpath}.

But since you don't need MakeMKV.url it also works fine to just write:

    copy ${mountpoint}/MakeMKV.app ${worksrcpath}

The copy procedure does not behave differently depending on how many source items there are, and it does not be have differently depending on whether or not you put a slash at the end of directory entries. It does not behave differently in destroot than it does in other cases, and the only thing I could find in the Tcl documentation about copying across filesystems is that symlinks are only preserved when copying within a single filesystem, which isn't applicable here since you're not copying symlinks.


More information about the macports-users mailing list