Hi, the more I read this thread, the more I find it all confusing.
Can someone suggest the best solution in case of this concrete example? https://trac.macports.org/browser/users/mojca/ports/science/geant/Portfile The variable ${geant.data_versions} works ok (but probably some nicer code), but ${geant.datadir}, particularly inside destroot of geant4-${geant.version}-data is problematic. Thank you, Mojca On Wed, Jul 10, 2013 at 12:25 AM, Lawrence Velázquez wrote: > On Jul 9, 2013, at 5:19 PM, Joshua Root wrote: > >> On 2013-7-10 03:56 , Clemens Lang wrote: >>> On Tue, Jul 09, 2013 at 07:32:03PM +0200, Gustaf Neumann wrote: >>>> foreach {foo.version foo.string} ${foo.versions} { >>>> subport foo-${foo.version} [subst { >>>> pre-fetch { >>>> system "echo ${foo.version}" >>>> } >>>> fetch {} >>>> extract {} >>>> use_configure no >>>> build {} >>>> destroot {} >>>> }] >>>> } >>> >>> I assume there is no sane way to guess what the user wants and somehow >>> integrate this into the subport (and pre-fetch, etc.) procs, is there? >>> >>> We could have a -subst switch, though: >>> subport -subst { >>> code >>> } >> >> No need for that; using quotes instead of braces will achieve the same >> thing. The trouble comes of course if you want to substitute some >> variables at definition time and others at runtime (or at the top level >> of the subport but not inside the pre-fetch or other internal >> brace-wrapped string). I guess you could use 'format' on the body. > > For selective definition-time substitution, you could use string map > (http://wiki.tcl.tk/37332#pagetoc04c6ab3f): > > foreach {foo.version foo.string} ${foo.versions} { > set script { > subport foo-${foo.version} { > pre-fetch { > system "echo ${foo.version}" > } > fetch {} > extract {} > use_configure no > build {} > destroot {} > } > } > set script [string map [list \${foo.version} [list ${foo.version}]] > $script] > eval $script > } _______________________________________________ macports-dev mailing list [email protected] https://lists.macosforge.org/mailman/listinfo/macports-dev
