jgfoster / PharoGs

PharoGs is an open-source project to host Pharo Smalltalk in GemStone.
MIT License
10 stars 5 forks source link

A dependency error when boostrapping #4

Open tukanos opened 2 days ago

tukanos commented 2 days ago

I tried to bootstrap the PharoGs and it failed. How do I debug the bootstrap process?

What class is missing? I the list of missing classes, but how do I know which is actually missing? Do I have to go through them? If yes, how do I do that within the failed bootstrap process?

Here is the error output.

MetacelloNotification: Loaded -> NewTools-Debugger-Breakpoints-Tools --- github://pharo-spec/NewTools:Pharo12/src
Error: Package NewTools-DebugPointsBrowser depends on the following classes:
  OnceBehavior
  ConditionBehavior
  ChainBehavior
  DebugPointNodeTarget
  DebugPointObjectTarget
  DebugPoint
  TranscriptBehavior
  WatchDebugPoint
  CountBehavior
  TestEnvironmentBehavior
  DebugPointTarget
  DebugPointIconStyler
  ScriptBehavior
  DebugPointInstanceVariableTarget
  ClyDebuggingPointsCommand
  DebugPointBehavior
  BreakDebugPoint
You must resolve these dependencies before you will be able to load these definitions: 
  BreakDebugPoint>>#uiElement
  ChainBehavior>>#uiElement
  ClyAddAndConfigureBreakPointCommand
  ClyAddAndConfigureBreakPointCommand>>#defaultMenuIconName
  ClyAddAndConfigureBreakPointCommand>>#defaultMenuItemName
  ClyAddAndConfigureBreakPointCommand>>#execute
  ConditionBehavior>>#uiElement
  CountBehavior>>#uiElement
  DebugPoint>>#uiElement
  DebugPoint>>#updateDebugPointUIManager:
  DebugPointBehavior>>#uiElement
  DebugPointIconStyler>>#iconBlock:
  DebugPointInstanceVariableTarget>>#updateDebugPointUIManager:
  DebugPointNodeTarget>>#updateDebugPointUIManager:
  DebugPointObjectTarget>>#updateDebugPointUIManager:
  DebugPointTarget>>#updateDebugPointUIManager:
  OnceBehavior>>#uiElement
  ScriptBehavior>>#uiElement
  TestEnvironmentBehavior>>#uiElement
  TranscriptBehavior>>#uiElement
  WatchDebugPoint>>#uiElement

MCPackageLoader(Object)>>notify:
MCPackageLoader>>warnAboutDependencies
MCPackageLoader>>validate
MCPackageLoader>>load
MCVersionLoader>>basicLoad
[ self basicLoad ] in MCVersionLoader>>loadWithNameLike: in Block: [ self basicLoad ]
[ aBlock value ] in MCVersionLoader>>announceLoad:do: in Block: [ aBlock value ]
FullBlockClosure(BlockClosure)>>ensure:
MCVersionLoader>>announceLoad:do:
MCVersionLoader>>loadWithNameLike:
[ self ensurePackage: version package.
          self loadWithNameLike: version info name ] in [   
        | version |
        version := versions first. 
        [ self ensurePackage: version package.
          self loadWithNameLike: version info name ] asJob
                title: 'Loading ', version info name asString;
                run ] in MCVersionLoader>>load in Block: [ self ensurePackage: version package....
FullBlockClosure(BlockClosure)>>cull:
[ ^ block cull: self ] in [ self prepareForRunning.
      CurrentJob value: self during: [ ^ block cull: self ] ] in Job>>run in Block: [ ^ block cull: self ]
[ activeProcess
            psValueAt: index
            put: anObject.
        aBlock value ] in CurrentJob(DynamicVariable)>>value:during: in Block: [ activeProcess...
FullBlockClosure(BlockClosure)>>ensure:
CurrentJob(DynamicVariable)>>value:during:
CurrentJob class(DynamicVariable class)>>value:during:
[ self prepareForRunning.
      CurrentJob value: self during: [ ^ block cull: self ] ] in Job>>run in Block: [ self prepareForRunning....
FullBlockClosure(BlockClosure)>>ensure:
Job>>run
[   
        | version |
        version := versions first. 
        [ self ensurePackage: version package.
          self loadWithNameLike: version info name ] asJob
                title: 'Loading ', version info name asString;
                run ] in MCVersionLoader>>load in Block: [   ...
FullBlockClosure(BlockClosure)>>ensure:
RPackageSet class>>withCacheDo:
MCVersionLoader>>load
MetacelloMonticelloLoader>>loadAtomicPackageDirectives:
MetacelloMonticelloLoader>>loadPackageDirective:
MetacelloLoadTarget>>visitPackageLoadDirective:
MetacelloPackageLoadDirective>>acceptVisitor:
[ :dir |
        dir acceptVisitor: self ] in MetacelloLoadTarget>>visitLinearLoadDirective: in Block: [ :dir |...
OrderedCollection>>do:

real    18m55,747s
user    18m15,108s
sys 0m22,829s
Wed 20. November 2024, 10:34:52 CET
jgfoster commented 1 day ago

This tends to be very dependent on the version of GemStone and the version of Pharo. I've been meaning to update this and will try to do so next week. Your interest in the project is appreciated!

tukanos commented 1 day ago

This tends to be very dependent on the version of GemStone and the version of Pharo. I've been meaning to update this and will try to do so next week. Your interest in the project is appreciated!

Thank you for your answer. In my eyes, this is very useful project. I would think many companies using GemStone would like to use at least some part of the Pharo's codebase.

I thought it might be really picky on the versions of GS together with Pharo. I'm would like to get it to working for GS 3.7.1 & GS 3.7.2 (when it comes out) & Pharo12.

I see you are making exports from Pharo, then doing diff, that I could do, but the GS part is a mystery to me.

However, the GS part with the ByteArrays (in file PharoGs.md5 are connected to GS internals which I do not have a clue about.