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

Reply via email to