To give a bit more of insight (and fill some holes in my explanation because I couldn't finish my coffee yet :)), actually, your baseline does not work because in the metacello spec you're saying that 'SmaCC-Reification' resides in Grace's repository, which is wrong I assume.
So metacello will try to load that dependency (and fail) and so, it will fail to load Grace-Parser (transitivity...).

And now that I think it better, even putting

spec package: 'Grace-Parser' with: [��
spec requires: {'SmaCC' . 'SmaCC-Reification'. 'Grace-Scope'} ].

Is wrong.
- First thing is to see if SmaCC exports SmaCC-Reification by default or in a separate group.
- If��SmaCC-Reification is downloaded by default, you just need

spec package: 'Grace-Parser' with: [��
spec requires: {'SmaCC' . 'Grace-Scope'} ].

- If SmaCC-Reification is in a non-default group, you probably want to add��

spec
�� �� baseline: 'SmaCC-Reification'
�� �� with: [ spec repository: 'github://apblack/SmaCC:working'; loads: #( 'NAME-OF-YOUR-REIFICATION-GROUP' )��].

And then your packages can depend on it.

- IF SmaCC-Reification is not in the SmaCC baseline, then, there is nothing you can do, but to add it :)


On Mon, Jul 9, 2018 at 9:29 AM Guillermo Polito <guillermopolito@gmail.com> wrote:
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 <apblack@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


--

������

Guille Polito

Research Engineer

Centre de Recherche en Informatique, Signal et Automatique de Lille

CRIStAL - UMR 9189

French National Center for Scientific Research - http://www.cnrs.fr


Web: http://guillep.github.io

Phone: +33 06 52 70 66 13