On Sep 21, 2018, at 23:30, Ryan Schmidt wrote:

> On Sep 21, 2018, at 21:46, Mark Brethen wrote:
> 
>> I’m trying to install a list of files into directory:
>> 
>>   foreach app {reduce.app bootstrapreduce.app csl} {
>>       xinstall -p -W ${cslbuilddir}/csl/${app} ${libexecdir}/csl
>>       ln -s ${destroot}${applications_dir}/${name}/${app} 
>> ${libexecdir}/csl/${app}
>>   }
>> 
>> however I get an error:
>> 
>> :error:destroot Failed to destroot reduce: xinstall usage: xinstall 
>> [-bCcpSsv] [-B suffix] [-W dir] [-f flags] [-g group] [-m mode]
>> :error:destroot                [-o owner] file1 file2
>> :error:destroot        xinstall [-bCcpSsv] [-B suffix] [-W dir] [-f flags] 
>> [-g group] [-m mode]
>> :error:destroot                [-o owner] file1 ... fileN directory
>> :error:destroot        xinstall -d [-v] [-g group] [-m mode] [-o owner] 
>> directory ...
> 
> Right. You need to tell xinstall what to copy from, and where to copy to. 
> You've only listed a single thing: ${libexecdir}/csl.
> 
> The arguments "-W ${cslbuilddir}/csl/${app}" mean "change to the directory 
> ${cslbuilddir}/csl/${app} before doing anything". I think perhaps that's not 
> what you meant, and you just didn't mean to use "-W" and should remove it.

Also, xinstall is only for creating directories or copying individual files. If 
reduce.app and bootstrapreduce.app are macOS apps, then they aren't files; 
they're directories. To copy directories (or files), use copy.

You also need ${destroot} preceding the destination. I am presuming that the 
value of the variable ${libexecdir} is something like ${prefix}/libexec and 
does not already begin with ${destroot}.

You also transposed the source and target of the symlink command.

The fixed loop is probably:

  foreach app {reduce.app bootstrapreduce.app csl} {
      copy ${cslbuilddir}/csl/${app} ${destroot}${libexecdir}/csl
      ln -s ${libexecdir}/csl/${app} 
${destroot}${applications_dir}/${name}/${app}
  }

Reply via email to