Hi Kilon, I think you can simply do: baseline: spec <baseline> spec for: #pharo do: [ spec baseline: 'SmaCC' with: [ spec repository: 'github://ThierryGoubier/SmaCC' ]. spec package: 'Ephestos' with: [ spec requires: #('SmaCC') ] ] You can also restrict what you load from SmaCC in this way: baseline: spec <baseline> spec for: #pharo do: [ spec baseline: 'SmaCC' with: [ spec repository: 'github://ThierryGoubier/SmaCC' ]. spec import: 'SmaCC'. spec package: 'Ephestos' with: [ spec requires: #('SmaCC-Python') ] ] (i.e. by importing the baseline of SmaCC, you can choose among the groups or the packages of SmaCC...)
From what Dale told me, you can only import one baseline this way. But you can add from more than one baseline with import: provides:
baseline: spec <baseline> spec for: #pharo do: [ spec baseline: 'SmaCC' with: [ spec repository: 'github://ThierryGoubier/SmaCC' ]. spec import: 'SmaCC' provides: #('SmaCC-Python'). spec package: 'Ephestos' with: [ spec requires: #('SmaCC-Python') ] ] Dale, is that correct? I haven't tested those, so... Note that any kind of repository can host a baseline this way, smalltalkhub, squeaksource, etc... version05: spec <version: '0.5'> spec for: #'pharo4.x' do: [ spec baseline: 'GitFileTree' with: [ spec repository: ' http://smalltalkhub.com/mc/ThierryGoubier/GitFileTreePharo40/main' ]; import: 'GitFileTree' ] And of course a baseline can require a configuration... I'm still exploring all the possibilities this allows (and, more important, how configurations may be simplified to defer effective loading to a baseline inside the master repository, so that the configuration very rarely has to be updated). Thierry 2015-03-17 12:11 GMT+01:00 kilon alios <kilon.alios@gmail.com>:
I have this very simple baseline for Ephestos
baseline: spec <baseline> spec for: #pharo do: [ spec package: 'Ephestos' with: [Metacello new baseline: 'SmaCC'; repository: 'github://ThierryGoubier/SmaCC'; load] ].
The above code works fine for me. The user can install Ephestos from configuration browser that has a configuration that loads this baseline which in turn not only loads the latest code for the project but also runs this block to make sure Smacc is installed for Ephestos to use.
The question however how else I can do this and what are the advantages and disadvantages for those other approaches ?