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 >>>> >>>> >>>> >>>> >>>> >>> >> >
