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 <guillermopol...@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 <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
>


-- 



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
<http://www.cnrs.fr>*


*Web:* *http://guillep.github.io* <http://guillep.github.io>

*Phone: *+33 06 52 70 66 13

Reply via email to