ok after rereading your emails more carefully i realised that you meant
that BaselineOf should go to its own package, so I moved the class to
BaselineOfNireas package and now it does not report the same error but now
it complain that project,baseline or configuration not specified.

Is it mandatory to specify a configuration for my project , I though the
baseline class was enough. Would love to hear more info on the subject, I
am looking also at the Metacello chapter which by the way is in Deep Into
Pharo and not PBE , I see loads of info on the subject but does not seem to
mention anything about the BaselineOf class .

Will love it if we can gave a simple way to load git repos to pharo 4.

On Sat, Nov 15, 2014 at 12:53 PM, kilon alios <[email protected]> wrote:

> small typo in my paste
>
> the actual code i used is
>
> Metacello new
> baseline:'Nireas';
> repository:'github://kilon/Nireas:master';
> get;
> load.
>
> any help is appreciated :)
>
> On Sat, Nov 15, 2014 at 12:50 PM, kilon alios <[email protected]>
> wrote:
>
>> hello Dale I tried your approach with a new project I created called
>> Nireas, its a theme manager for pharo 4. I followed your instructions and
>> it complains that it cannot find the BaselineOfNireas
>>
>> This is the code I used
>>
>> Metacello new
>> baseline:'Nireas';
>> repository:'github://kilon/nireas:master';
>> get;
>> load.
>>
>> here is the repo
>>
>> https://github.com/kilon/Nireas
>>
>> and here is the error
>>
>>
>> MetacelloFetchingMCSpecLoader(MetacelloCommonMCSpecLoader)>>retryingResolvePackageSpecReferences:gofer:
>> linearLoadPackageSpec: packageSpec gofer: gofer
>> MetacelloPlatform current
>> do: [
>> | references nearestReference cachedReference externalReference mcVersion
>> loadedVersionInfos |
>> "check to see if mcz file is already in cacheRepository"
>> cachedReference := self resolvePackageSpec: packageSpec cachedGofer: self
>> loaderPolicy cacheGofer.
>> (cachedReference ~~ nil and: [ packageSpec getFile ~~ nil ])
>> ifTrue: [
>> cachedReference name = packageSpec file
>> ifTrue: [
>> "exact match between packageSpec file and cache"
>> ^ self scheduleFetchFor: packageSpec cachedReference: cachedReference ] ]. 
>> "look
>> up mcz file"
>> references := self retryingResolvePackageSpecReferences: packageSpec
>> gofer: gofer.
>> nearestReference := references last asMetacelloCachingResolvedReference. "If
>> the mcz is already in the cacheRepository, no need to copy"
>> (cachedReference ~~ nil and: [ cachedReference name = nearestReference
>> name ])
>> ifTrue: [
>> "latest reference in repository matches cachedReference ... "
>> ^ self scheduleFetchFor: packageSpec nearestReference: nearestReference ]. 
>> "If
>> the mcz is already loaded into the image, no need to copy"
>> (self ignoreImage not and: [ (loadedVersionInfos := self ancestorsFor:
>> packageSpec) ~~ nil ])
>> ifTrue: [
>> loadedVersionInfos
>> do: [ :info |
>> info name = nearestReference name
>> ifTrue: [ ^ self ] ] ].
>> externalReference := (references select: [ :ref | ref name =
>> nearestReference name ]) first
>> asMetacelloCachingResolvedReference.
>> self repositoryMap at: externalReference name put: externalReference
>> repository.
>> (self
>> resolveDependencies: externalReference
>> nearest: nearestReference
>> into: (OrderedCollection with: nearestReference))
>> do: [ :reference |
>> | pSpec l |
>> mcVersion := reference version.
>> (l := (GoferVersionReference name: reference name) resolveAllWith: self
>> loaderPolicy cacheGofer) isEmpty
>> ifTrue: [
>> self cacheRepository storeVersion: mcVersion.
>> reference == nearestReference
>> ifTrue: [ pSpec := packageSpec ]
>> ifFalse: [
>> pSpec := packageSpec project packageSpec.
>> pSpec name: mcVersion package name ].
>> self loadData
>> addVersion: mcVersion
>> versionInfo: mcVersion info
>> resolvedReference: reference
>> packageSpec: pSpec ] ].
>> self scheduleFetchFor: packageSpec externalReference: externalReference ]
>> displaying: 'Fetching ' , packageSpec file in
>> MetacelloFetchingMCSpecLoader>>linearLoadPackageSpec:gofer: in Block:
>> linearLoadPackageSpec: packageSpec gofer: gofer...
>> MetacelloPharo30Platform(MetacelloPlatform)>>do:displaying:
>> MetacelloFetchingMCSpecLoader>>linearLoadPackageSpec:gofer:
>> MetacelloPackageSpec>>loadUsing:gofer:
>> [ :pkg | pkg loadUsing: self gofer: gofer ] in
>> MetacelloFetchingMCSpecLoader(MetacelloCommonMCSpecLoader)>>linearLoadPackageSpecs:repositories:
>> in Block: [ :pkg | pkg loadUsing: self gofer: gofer ]
>> Array(SequenceableCollection)>>do:
>>
>> MetacelloFetchingMCSpecLoader(MetacelloCommonMCSpecLoader)>>linearLoadPackageSpecs:repositories:
>> [ super linearLoadPackageSpecs: packageSpecs repositories: repositories ]
>> in MetacelloFetchingMCSpecLoader>>explicitLoadPackageSpecs:repositories: in
>> Block: [ super linearLoadPackageSpecs: packageSpecs repos...etc...
>> BlockClosure>>ensure:
>> MetacelloLoaderPolicy>>pushLoadDirective:during:
>> MetacelloLoaderPolicy>>pushExplicitLoadDirectivesDuring:for:
>> MetacelloFetchingMCSpecLoader>>explicitLoadPackageSpecs:repositories:
>> MetacelloPackageSpec>>explicitLoadUsing:
>> MetacelloPackageSpec>>load
>> [
>> self setDefaultsAndValidateProjectSpec.
>> spec := self projectSpec.
>> projectPackage := spec projectPackage.
>> projectPackage repositorySpecs do: [ :repoSpec | repoSpec
>> createRepository flushForScriptGet ].
>> projectPackage load.
>> self root: (Smalltalk at: spec className asSymbol) project.
>> MetacelloProjectRegistration
>> registrationForProjectSpec: spec
>> ifAbsent: [ :new | new registerProject ]
>> ifPresent: [ :existing :new |
>> existing
>> copyOnWrite: [ :existingCopy |
>> spec
>> copyForRegistration: existingCopy
>> onWrite: [ :specCopy | specCopy ifNil: [ existingCopy merge: new ]
>> ifNotNil: [ specCopy mergeScriptRepository: spec ] ] ] ] ] in
>> MetacelloScriptEngine>>get in Block: [ ...
>> BlockClosure>>ensure:
>> MetacelloProjectRegistration class>>copyRegistryRestoreOnErrorWhile:
>> MetacelloScriptEngine>>get
>> [ :projectSpec |
>> | engine |
>> engine := MetacelloScriptEngine new
>> options: self options copy;
>> projectSpec: projectSpec;
>> yourself.
>> engine perform: actionArg key withArguments: actionArg value.
>> engine root ifNotNil: [ :root | self roots add: root ] ] in
>> MetacelloScriptApiExecutor(MetacelloScriptExecutor)>>execute: in Block: [
>> :projectSpec | ...
>> [ :projectSpec | projectSpec ifNotNil: [ projectSpecBlock value: (self
>> applyArgsToProjectSpec: projectSpec copy) ] ] in
>> MetacelloScriptApiExecutor>>executeString:do: in Block: [ :projectSpec |
>> projectSpec ifNotNil: [ projectSp...etc...
>> Array(SequenceableCollection)>>do:
>> MetacelloScriptApiExecutor>>executeString:do:
>> ByteString(String)>>execute:against:
>> MetacelloScriptApiExecutor(MetacelloScriptExecutor)>>execute:
>> Metacello>>execute
>> Metacello>>get
>> UndefinedObject>>DoIt
>> OpalCompiler>>evaluate
>> RubSmalltalkEditor>>evaluateSelectionAndDo:
>>
>>
>> On Tue, Oct 21, 2014 at 10:55 PM, kilon alios <[email protected]>
>> wrote:
>>
>>> Thank you Dale very much , this is very clear :)
>>>
>>> On Tue, Oct 21, 2014 at 10:53 PM, Dale Henrichs <
>>> [email protected]> wrote:
>>>
>>>>
>>>>
>>>> On Tue, Oct 21, 2014 at 12:04 PM, kilon alios <[email protected]>
>>>> wrote:
>>>>
>>>>> Thank you Dale, this is more simple than I expected.
>>>>>
>>>>> From what you linked it looks like by [:comitish] you mean the git
>>>>> branch .Which in my case is master so it should be
>>>>>
>>>>>   Metacello new
>>>>>     baseline: 'BaselineOfXXX';
>>>>>     repository: 'github://kilon/phEphestos:master/'
>>>>>     get;
>>>>>     load.
>>>>>
>>>>> https://github.com/kilon/phEphestos
>>>>>
>>>>
>>>> From looking at your repo on githug, the expression would be:
>>>>
>>>>    Metacello new
>>>>       baseline: 'Ephestos';
>>>>       repository: 'github://kilon/phEphestos:master'
>>>>     get;
>>>>     load.
>>>>
>>>> A commitish is a branch, SHA or tag. Note also, that my example was
>>>> wrong ... the 'BaselineOf' shouldn't  be used in the baseline: argument,
>>>> just the base name of the project.
>>>>
>>>> You also need to create a BaselineOfEphestos which specifies package
>>>> load order. BaselineOfEphestos would be created as a subclass of BaselineOf
>>>> and have a single method:
>>>>
>>>>   baseline: spec
>>>>     <baseline>
>>>>     spec
>>>>       for: #pharo
>>>>       do: [
>>>>         spec package: 'Ephestos' ].
>>>>
>>>> Then the above expression would load the Epestos package.
>>>>
>>>> If you were to add another package, say EphestosTests, then you'd
>>>> update the baseline to declare that EphestosTests requires Ephestos to be
>>>> loaded first you'd edit the baseline: method:
>>>>
>>>> baseline: spec
>>>>     <baseline>
>>>>     spec
>>>>       for: #pharo
>>>>       do: [
>>>>         spec
>>>>           package: 'Ephestos';
>>>>           package: 'EphestosTests' with: [ spec requires: #( 'Ephestos'
>>>> ) ] ].
>>>>
>>>> You commit the BaselineOf along with the rest of the packages for your
>>>> project ...
>>>>
>>>> For more information see the Metacello chapter in Pharo by Example...
>>>>
>>>> Dale
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>
>

Reply via email to