Proper syntax for recursive copying during destroot

Ryan Schmidt ryandesign at macports.org
Tue Jan 31 02:29:03 UTC 2017


> On Jan 30, 2017, at 08:39, Mojca Miklavec <mojca at macports.org> wrote:
> 
> Hi,
> 
> What's the proper syntax to copy from a bunch of files recursively
> during installation?
> I like "xinstall" because it's safe to call "port destroot" twice. If
> I use "move", this is probably not the case.
> 
> I have something like the following structure (three folders, two of
> them contain plain files, the third one contains arbitrary folders and
> arbitrary files inside those folders). I would like to copy these to
> destroot.
> 
> foo/A/fileA_1
>     /...
>     /fileA_N
> foo/B/fileB_1
>     /...
>     /fileB_N
> foo/C/dirC_1/fileC1_1
>            /...
>            /fileC1_N
>     /dirC_2/fileC2_1
>            /...
>            /fileC1_N
>     /...
>     /dirC_N/fileCN_1
>            /...
>            /fileCN_N
> 
> The following code worked as long as C contained just files, but
> stopped working when subfolders were introduced:
> 
>    set foo_share ${prefix}/share/foo
>    set src       ${workpath}/.home/foo
> 
>    foreach d {A B C} {
>        xinstall -d -m 0755 ${destroot}/${foo_share}/${d}
>        foreach f [glob -type f ${src}/${d}/*] {
>            xinstall -W ${src}/${d} ${f} ${destroot}/${foo_share}/${d}
>        }
>    }
> 
> I was playing a bit with various options and ended up with two nested
> glob-s plus some super ugly code to remove the prefix etc. The code
> doesn't quite work yet, but it's already so super ugly that I bet
> there must be a better solution. (I can probably always fall back to
> using "move".)
> 
> Any suggestions?
> 
> Thank you,
>    Mojca
> 
> (PS: It's not really relevant, but the port in question is "panda" & #53397.)

If "move" works, why doesn't "copy" work?



More information about the macports-dev mailing list