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