On Jul 10, 2013, at 3:00 PM, [email protected] wrote:
> Revision: 108008
> https://trac.macports.org/changeset/108008
> Author: [email protected]
> Date: 2013-07-10 12:00:20 -0700 (Wed, 10 Jul 2013)
> Log Message:
> -----------
> geant: better geant4data.sh for initializing the data, move examples to
> libexec, evaluate destroot, add gccxml-devel, iAIDA now works
> Modified: users/mojca/ports/science/geant/Portfile
> ===================================================================
> --- users/mojca/ports/science/geant/Portfile 2013-07-10 18:51:46 UTC (rev
> 108007)
> +++ users/mojca/ports/science/geant/Portfile 2013-07-10 19:00:20 UTC (rev
> 108008)
> @@ -105,18 +105,28 @@
> }
> use_configure no
> build {}
> - destroot {
> - xinstall -m 755 -d ${destroot}${geant.datadir}
> - # TODO: maybe a better name or a better location
> - # in any case the filename of this file needs to be known in the
> portgroup
> - set filename ${destroot}${geant.datadir}/setup-geant4data.sh
> - system "echo export G4DATADIR=${geant.datadir} > ${filename}"
> - foreach {data.name data.version data.filename data.envvariable
> data.md5 data.rmd160 data.sha256} ${geant.data_versions} {
> - move ${workpath}/${data.name}${data.version}
> ${destroot}${geant.datadir}
> - # one option is also to install this as part of geant4 core
> installation
> - system "echo export
> ${data.envvariable}=\\\$G4DATADIR/${data.name}${data.version} >> ${filename}"
> +
> + set dr {
> + destroot {
> + xinstall -m 755 -d ${destroot}${geant.datadir}
> + # TODO: maybe a better name or a better location, possibly
> including version, possibly symlinked in bin
> + # the filename of this file should probably come frome the
> portgroup
> + xinstall -m 755 -d
> ${destroot}${prefix}/libexec/Geant4/Geant${geant.version_simple}
> + set filename
> ${destroot}${prefix}/libexec/Geant4/Geant${geant.version_simple}/geant4data
> + system "echo #!/bin/sh > ${filename}.sh"
> + system "echo #!/bin/csh > ${filename}.csh"
> + system "echo export G4DATADIR=\\\"${geant.datadir}\\\" >>
> ${filename}.sh"
> + system "echo setenv G4DATADIR=\\\"${geant.datadir}\\\" >>
> ${filename}.csh"
> + foreach {data.name data.version data.filename
> data.envvariable data.md5 data.rmd160 data.sha256} ${geant.data_versions} {
> + move ${workpath}/${data.name}${data.version}
> ${destroot}${geant.datadir}
> + # one option is also to install this as part of geant4
> core installation
> + system "echo export
> ${data.envvariable}=\\\"\\\$G4DATADIR/${data.name}${data.version}\\\" >>
> ${filename}.sh"
> + system "echo setenv ${data.envvariable}
> \\\"\\\$G4DATADIR/${data.name}${data.version}\\\" >> ${filename}.csh"
> + }
> }
> }
> + eval [string map [list \${geant.datadir} [list ${geant.datadir}]]
> $dr]
> + eval [string map [list \${geant.version_simple} [list
> ${geant.version_simple}]] $dr]
> }
This probably won't work, as you're defining destroot twice. If you want to
substitute multiple variables, you can extend the first argument of "string
map" to have arbitrarily many pairs[1]:
eval [string map [list \${geant.datadir} [list ${geant.datadir}]
\${geant.version_simple} [list ${geant.version_simple}]] $dr]
…or you can build up the substituted script gradually. This is probably easier
to read and extend.
set dr [string map [list \${geant.datadir} [list ${geant.datadir}]] $dr]
set dr [string map [list \${geant.version_simple} [list
${geant.version_simple}]] $dr]
eval $dr
vq
[1] http://www.tcl.tk/man/tcl8.4/TclCmd/string.htm#M33
_______________________________________________
macports-dev mailing list
[email protected]
https://lists.macosforge.org/mailman/listinfo/macports-dev