Hi Andrew, I'd say you got almost everything right. Let me try to guide you to fix what's not so well and see if you can make it work.
On Sun, Jul 8, 2018 at 4:19 PM Andrew P. Black <apbl...@pdx.edu> wrote: > I have a baselineOfGrace that has been working fine for some time: > > baseline: spec > <baseline> > > spec for: #'common' do: [ > spec > baseline: 'SmaCC' > with: [ spec repository: 'github://apblack/SmaCC:working' ]. > spec > baseline: 'FileDialog' > with: [ spec repository: 'github://peteruhnak/file-dialog/repository' ]. > spec package: 'Grace-Scope'. > spec package: 'Grace-Names' with: [ spec requires: {'Grace-Parser' . > 'Grace-Scope'} ]. > spec package: 'Grace-Parser' with: [ > spec requires: {'SmaCC' . 'Grace-Scope'} ]. > spec package: 'Grace-HValidator' with: [ spec requires: {'SmaCC' } ]. > spec package: 'Grace-IDE' with: [ > spec requires: {'FileDialog' . 'Grace-Compiler'} ]. > spec package: 'Grace-Compiler' with: [ > spec requires: {'Grace-Parser' . 'Grace-Names'} ]. > spec package: 'Grace-Tests' with: [ > spec requires: {'Grace-Parser' . 'Grace-Names' . 'Grace-HValidator'} ]. > spec package: 'Grace-Types' with: [ > spec requires: {'Grace-Parser' . 'Grace-Names' . 'Grace-Scope'} ]. > spec package: 'Grace-TypeTests' with: [ > spec requires: {'Grace-Tests' . 'Grace-Types' } ]. > spec package: 'Grace-Ast' with: [ > spec requires: {'Grace-Parser' . 'Grace-Names' . 'Grace-Scope' . > 'Grace-Types'} ]. > spec package: 'Grace-AstTests' with: [ > spec requires: {'Grace-Tests' . 'Grace-Ast'} ]. > ] > > > Now I have added a dependency from the package ‘Grace-Parser’ on the > package 'SmaCC-Reification’. The latter exists *only* within the branch > SmaCC called ‘fglr’. So I have changed my > baseline to the following: > > baseline: spec > <baseline> > > spec for: #'common' do: [ > spec > baseline: 'SmaCC' > with: [ spec repository: 'github://apblack/SmaCC:fglr' ]. > > 1) This is perfect. > spec > baseline: 'FileDialog' > with: [ spec repository: 'github://peteruhnak/file-dialog/repository' ]. > spec package: 'Grace-Scope'. > spec package: 'Grace-Names' with: [ spec requires: {'Grace-Parser' . > 'Grace-Scope'} ]. > spec package: 'Grace-Parser' with: [ > spec requires: {'SmaCC' . 'SmaCC-Reification'. 'Grace-Scope'} ]. > > 2) This... It depends: Does the BaselineOfSmaCC export a package/group with that name? When you import another project, you should think a baseline as a kind of black box, where the only things you can import are those declared in the baseline. If that baseline loads other stuff you don't care. In other words, this means that the BaselineOfSmaCC that lives in the `fglr` branch needs to have a `spec package: 'SmaCC-Reification'` expression to work. > spec package: 'Grace-HValidator' with: [ spec requires: {'SmaCC' } ]. > spec package: 'Grace-IDE' with: [ > spec requires: {'FileDialog' . 'Grace-Compiler'} ]. > spec package: 'Grace-Compiler' with: [ > spec requires: {'Grace-Parser' . 'Grace-Names'} ]. > spec package: 'Grace-Tests' with: [ > spec requires: {'Grace-Parser' . 'Grace-Names' . 'Grace-HValidator'} ]. > spec package: 'Grace-Types' with: [ > spec requires: {'Grace-Parser' . 'Grace-Names' . 'Grace-Scope'} ]. > spec package: 'Grace-TypeTests' with: [ > spec requires: {'Grace-Tests' . 'Grace-Types' } ]. > spec package: 'Grace-Ast' with: [ > spec requires: {'Grace-Parser' . 'Grace-Names' . 'Grace-Scope' . > 'Grace-Types'} ]. > spec package: 'Grace-AstTests' with: [ > spec requires: {'Grace-Tests' . 'Grace-Ast'} ]. > spec package: 'SmaCC-Reification'. > > 3) And this is wrong :). You don't need to specify external packages like this. It's not up to your baseline to load SmaCC stuff. Your baseline describes things in your grace repository. It's up to SmaCC's baseline to describe every loadable unit (package, group...) that you can depend on. So in summary, you should do 1) and 2) in BaselineOfGrace and make sure that 3) is done in BaselineOfSmacc. Keep us posted! Guille