Hi Dale,
Is Issue_260 still current? I have time over the next few weeks to help make progress in something - would this be a good place to spend it? Cheers, J _______________________________________________ Glass mailing list [hidden email] https://lists.gemtalksystems.com/mailman/listinfo/glass |
On Mar 11 2021, at 9:06 pm, Jupiter Jones via Glass <[hidden email]> wrote:
Hello Jupiter, I think it is pretty timely that you have time to work on issue #260[1] now, because about a month ago, I started thinking along the same lines ... It's been a year or so since I kicked off issue_260 and not much has happened there ... I assume that most folks (including myself) had better things to do :) ... The initial plan for issue_260 was to use st_launcher-based[2] scripts to drive topaz solo scripts to replace all of the 32-bit Pharo-based script. The topaz solo extent would have Rowan pre-loaded and I had created an extent based on 3.5.0 (IIRC) that's still available on github[3]. In the last year, I have written several st_launcher scripts in support of various development tasks for Rowan and I have not been happy with the utility of basing scripts on tonel class files. My basic problem is that while tonel class files ARE human readable, the format is a bit too verbose for my taste ... Don't get me wrong I really do love the fact that I can add support methods and instance variables to a script so that it is possible to refactor the mainline doit into a compact chunk of smalltalk code, but the extra structure that comes with the tonel class format adds extra noise to the file that gets in my way when reading code. Here is a simple error producing script from stlauncher[4] and a similar script in superdoit[5] and to my eyes the superdoit is easier to read. If you forego options and a usage section, the script[6] is much simpler than anything possible with st_launcher... Here's a sample[7] that illustrates the planned format/structure of a superdoit script. Soooo I am thinking that moving forward the new scripts should be written using superdoit and separate classes in Rowan packages that are dynamically loaded into a solo extent that just contains Rowan pre-loaded. I've got the basics of superdoit implemented, but not all of the sections are implemented yet ... but with the prospect of help on the horizon, I am close enough to be able to get the missing pieces functional. At this point, we would want superdoit to work with 3.6.0 (the Rowan extent just needs a standard 3.6.0 product tree to run topaz solo). I've been doing development with 3.7.0 ... 3.6.0 is using an older version of Rowan and probably doesn't have all of things I'm using now (3.6.1 is using the same version of Rowan as 3.7.0, but it hasn't made it out the door yet), but I can supply you with an extent0.rowan.dbf for 3.6.0 that would work in the short term ... You are already on the issue_260 team[8] so we can take this conversation to discussion list[9] on github to work out any additional details ... off the top of my head I will need to get the following things done before you are cleared for take off:
If you're interested drop me a quick line and I will get busy getting things ready ... In order to get you up to speed, once I've finished my work, it might make sense to use vnc/slack/cell(?) to do a bit of pair programming? In the mean time you could bring up the devKitCommandLine pharo image ( devKitCommandLine -D , then use the Pharo>>Pharo World Menu item on the tODE menu to browse the Pharo source) and browse the classes in the GsDevKit-CommandLIne, GsDevKit-SmalltalkCI-CommandLine, and GsDevKit-Tode-CommandLine packages to get an idea of what classes we'll need to port to GemStone ...Dale [3] https://github.com/GsDevKit/GsDevKit_home/releases/tag/v0.10.0 [4] https://github.com/dalehenrich/st_launcher/blob/masterV0.1/rowan/src/st_launcher-Scripts/StLauncher_Error.class.st [5] https://github.com/dalehenrich/superDoit/blob/master/examples/simple/errorWithDebug.doit [6] https://github.com/dalehenrich/superDoit/blob/master/examples/simple/error.doit [7] https://github.com/dalehenrich/superDoit#executable-doit-with-methods-and-specs [8] https://github.com/orgs/GsDevKit/teams/issue_260 [9] https://github.com/orgs/GsDevKit/teams/issue_260/discussions [10] https://github.com/GsDevKit/GsDevKit_home/tree/issue_260_2021 [11] https://github.com/GsDevKit/GsDevKit_home/tree/issue_260 [12] https://github.com/GsDevKit/GsDevKit_home/tree/issue_260/shared/repos/GsDevKit_launcher _______________________________________________ Glass mailing list [hidden email] https://lists.gemtalksystems.com/mailman/listinfo/glass |
Hi Dale,
Sounds/looks good.
Perfect. When you say “new mac installation scripts” do you mean updating the GsDevKit/bin shell scripts to support the M1? Is there a version of GS that will run on the M1 yet? Or do you mean the bootstrap_launcher scripts? I have a new MacMini M1, and an intel laptop which is still running OSX10.14 so it can run 32bit Pharo.
I’ve been attempting to set this up today, but encountered a couple of errors during install. One simple error was resolved (no pull request yet) on https://github.com/JupiterSmalltalk/GsDevKit_home/tree/issue_260_JJ_MacOS The next one I haven’t investigated yet (just saw it before replying to this email). I’ve attached the stack at the end of this email. Let me know if this is worth pursuing, or if I should leave it and start work with your new extent.
That would be great.
I’ve been browsing these this morning to work out what I’d start one. Was going to start with something simple like “stones” to get my template right. But will wait now to make superdoit versions instead. Let me know how you’d like me to proceed. Cheers, J Error during source import from bootstrap_launcher [Info]: User ID: SystemUser [Info]: Repository: gsdevkit_launcher_350 [Info]: Session ID: 6 login at 13/03/2021 09:59:52.792 AEDT [Info]: GCI Client Host: <Linked> [Info]: Page server PID: -1 [13/03/2021 09:59:52.794 AEDT] gci login: currSession 1 linked session successful login topaz 1> topaz 1> # Install FileSystem, Rowan, Cypress, STON, and Tonel using Rowan to adopt the existing classes and extension topaz 1> # methods into the correct package structure topaz 1> run "install_3.tpz" | projectSetDefinition gitRepoPath packageCreateTool loadedProjectInfo auditFailures readTool reAudit gitRoot | SessionTemps current at: #ROWAN_TRACE put: #gciLogServer . "log to topaz output file" projectSetDefinition := RwProjectSetDefinition new. loadedProjectInfo := Dictionary new. gitRepoPath := '$ROWAN_PROJECTS_HOME/Rowan'. readTool := Rowan projectTools read. { { 'file:$ROWAN_PROJECTS_HOME/Rowan/platforms/gemstone/topaz/3.5.0/specs/FileSystemGs_component.ston'. '$ROWAN_PROJECTS_HOME/Rowan/platforms/gemstone/projects' }. { 'file:$ROWAN_PROJECTS_HOME/Rowan/rowan/specs/RowanV2.ston'. '$ROWAN_PROJECTS_HOME' }. { 'file:$ROWAN_PROJECTS_HOME/Rowan/platforms/gemstone/topaz/3.5.0/specs/Cypress_component.ston'. '$ROWAN_PROJECTS_HOME/Rowan/platforms/gemstone/projects' }. { 'file:$ROWAN_PROJECTS_HOME/Rowan/platforms/gemstone/topaz/3.5.0/specs/STON_component.ston'. '$ROWAN_PROJECTS_HOME/Rowan/platforms/gemstone/projects' }. { 'file:$ROWAN_PROJECTS_HOME/Rowan/platforms/gemstone/topaz/3.5.0/specs/Tonel_component.ston'. '$ROWAN_PROJECTS_HOME/Rowan/platforms/gemstone/projects' }. } do: [:ar | "Read project and packages from disk, creating a projectSetDefinition with all 5 projects" | configNames groupNames projectDefinition theProjectSetDefinition specUrl projectHome | specUrl := ar at: 1. projectHome := ar at: 2. gitRoot := '$ROWAN_PROJECTS_HOME/Rowan'. projectDefinition := (RwComponentProjectDefinition newForUrl: specUrl) projectHome: projectHome; gitRoot: gitRoot; yourself. theProjectSetDefinition := readTool readProjectSetForComponentProjectDefinition: projectDefinition withConfigurations: projectDefinition defaultConfigurationNames groupNames: projectDefinition defaultGroupNames. loadedProjectInfo at: projectDefinition name put: ((theProjectSetDefinition properties at: 'loadedProjectInfo') at: projectDefinition name). theProjectSetDefinition do: [:projectDefinition | GsFile stdout nextPutAll: 'Project: ', projectDefinition name; lf. projectDefinition packageNames do: [:pkgName | GsFile stdout nextPutAll: ' ', pkgName; lf ]. projectSetDefinition addProject: projectDefinition ] ]. loadedProjectInfo keysAndValuesDo: [:projectName :projectInfo | "install the packageMapSpecs for this load into the specification prior to the load" | projectDefinition thePackageMapSpecs | projectDefinition := projectSetDefinition projectNamed: projectName ifAbsent: []. thePackageMapSpecs := projectInfo at: 'packageMapSpecs' . (thePackageMapSpecs at: #defaultSymbolDictName otherwise: nil) ifNotNil: [:name | projectDefinition defaultSymbolDictName: name ]. (thePackageMapSpecs at: #defaultUseSessionMethodsForExtensions otherwise: nil) ifNotNil: [:boolean | projectDefinition defaultUseSessionMethodsForExtensions: boolean ]. (thePackageMapSpecs at: #packageNameToPlatformPropertiesMap otherwise: nil) ifNotNil: [:map | projectDefinition packageNameToPlatformPropertiesMap: map ] ]. packageCreateTool := Rowan packageTools create. projectSetDefinition projects do: [:projectDefinition | "Create loaded project (if needed), traverse the package definitions and create loaded packages for each" | projectName | projectDefinition register. "make sure that the project is created" projectName := projectDefinition name. projectDefinition packageNames do: [:packageName | packageCreateTool createLoadedPackageNamed: packageName inProjectNamed: projectName ] ]. "Adopt the project set definition ... Log and ignore any missing method or missing classes encountered as they may not be present in the .gs bootstrap file for the proejct ... The will be created when we reload the project a little bit later on." [ Rowan projectTools adopt adoptProjectSetDefinition: projectSetDefinition ] on: RwAdoptMissingMethodErrorNotification, RwAdoptMissingClassErrorNotification do: [:ex | ex methodErrorDo: [ GsFile gciLogServer: 'Missing loaded method ', ex methodPrintString, ' encountered during adopt ... IGNORED' ] classErrorDo: [ GsFile gciLogServer: 'Missing loaded class ', ex className, ' encountered during adopt ... IGNORED' ]. ex resume: nil ]. projectSetDefinition projects do: [:projectDefinition | "make sure that the loaded SHA is set for each project" projectDefinition updateLoadedCommitId. (loadedProjectInfo at: projectDefinition name ifAbsent: []) ifNotNil: [:map | projectDefinition specification imageSpec loadedConfigurationNames: (map at: 'loadedConfigurationNames'); loadedGroupNames: (map at: 'loadedGroupNames') ] ]. projectSetDefinition deriveLoadedThings do: [:loadedProject | "mark projects and packages not dirty" loadedProject markNotDirty. loadedProject loadedPackages valuesDo: [:loadedPackage | loadedPackage markNotDirty ] ]. reAudit := true. "kick off the first audit" [ reAudit ] whileTrue: [ auditFailures := {}. reAudit := false. projectSetDefinition projects do: [:projectDefinition | | audit projectName | projectName := projectDefinition name. [audit := Rowan projectTools audit auditForProjectNamed: projectName ] on: RwAuditMethodErrorNotification do: [:ex | | beh | GsFile gciLogServer: 'extra unpackaged method ', ex methodPrintString, ' encountered during audit ... REMOVED (audit will be rerun)'. "method is not present in the current package structure, so it should be removed" beh := Rowan globalNamed: ex className. ex isMetaclass ifTrue: [ beh := beh class ]. beh removeSelector: ex selector. "don't record as an audit error, but make sure that we rerun the audit" reAudit := true. ex resume: false ]. GsFile gciLogServer: ' -- audit finished '. audit isEmpty ifFalse: [ reAudit := false. "we must have had an audit failure that was not handled" GsFile gciLogServer: 'FAILED AUDIT: ', projectName. auditFailures add: projectName ] ]. reAudit ifTrue: [ GsFile gciLogServer: 'RERUN AUDIT' ] ]. auditFailures isEmpty ifFalse: [ self error: 'Post load Rowan audit failed for projects ', auditFailures printString ] . true % ERROR 2059 , a AlmostOutOfStack occurred (notification 2059), Smalltalk execution stack error, 'overflow during execution' (AlmostOutOfStack) Stack overflow, Stack depth 4090 topaz > exec iferr 1 : stk ==> 1 AlmostOutOfStack (AbstractException) >> _signalFromPrimitive: @24 line 26 2 DiskStore class >> current @1 line 1 3 DiskStore class >> delimiter @2 line 2 4 DiskStore (FileSystemStore) >> delimiter @3 line 2 5 DiskStore class >> delimiter @3 line 2 6 DiskStore (FileSystemStore) >> delimiter @3 line 2 7 DiskStore class >> delimiter @3 line 2 ... 4077 DiskStore class >> delimiter @3 line 2 4078 DiskStore (FileSystemStore) >> delimiter @3 line 2 4079 DiskStore (FileSystemStore) >> pathFromString: @2 line 4 4080 FileSystem >> pathFromString: @2 line 2 4081 Unicode7 (CharacterCollection) >> asPathWith: @2 line 2 4082 FileSystem >> pathFromObject: @2 line 2 4083 FileSystem >> referenceTo: @2 line 7 4084 Unicode7 (CharacterCollection) >> asFileReference @3 line 3 4085 RwProjectReferenceDefinition >> projectHome: @8 line 6 4086 RwComponentProjectDefinition >> projectHome: @3 line 3 4087 [] in Executed Code @48 line 38 4088 Array (Collection) >> do: @6 line 10 4089 Executed Code @13 line 31 4090 GsNMethod class >> _gsReturnToC @1 line 1 topaz > exec iferr 2 : stack ==> 1 AlmostOutOfStack (AbstractException) >> _signalFromPrimitive: @24 line 26 receiver a AlmostOutOfStack occurred (notification 2059), Smalltalk execution stack error, 'overflow during e ...(9 more bytes) inCextensionArg nil res nil num 2059 (skipped 1 evaluationTemps) 2 DiskStore class >> current @1 line 1 receiver DiskStore 3 DiskStore class >> delimiter @2 line 2 receiver DiskStore (skipped 1 evaluationTemps) ... 4077 DiskStore class >> delimiter @3 line 2 receiver DiskStore (skipped 1 evaluationTemps) 4078 DiskStore (FileSystemStore) >> delimiter @3 line 2 receiver aDiskStore (skipped 1 evaluationTemps) 4079 DiskStore (FileSystemStore) >> pathFromString: @2 line 4 receiver aDiskStore aString $ROWAN_PROJECTS_HOME/Rowan/platforms/gemstone/projects (skipped 3 evaluationTemps) 4080 FileSystem >> pathFromString: @2 line 2 receiver aFileSystem aString $ROWAN_PROJECTS_HOME/Rowan/platforms/gemstone/projects (skipped 2 evaluationTemps) 4081 Unicode7 (CharacterCollection) >> asPathWith: @2 line 2 receiver $ROWAN_PROJECTS_HOME/Rowan/platforms/gemstone/projects anObject aFileSystem (skipped 2 evaluationTemps) 4082 FileSystem >> pathFromObject: @2 line 2 receiver aFileSystem anObject $ROWAN_PROJECTS_HOME/Rowan/platforms/gemstone/projects (skipped 2 evaluationTemps) 4083 FileSystem >> referenceTo: @2 line 7 receiver aFileSystem aResolvable $ROWAN_PROJECTS_HOME/Rowan/platforms/gemstone/projects (skipped 4 evaluationTemps) 4084 Unicode7 (CharacterCollection) >> asFileReference @3 line 3 receiver $ROWAN_PROJECTS_HOME/Rowan/platforms/gemstone/projects (skipped 2 evaluationTemps) 4085 RwProjectReferenceDefinition >> projectHome: @8 line 6 receiver aRwProjectReferenceDefinition projectHomeFileReferenceOrString $ROWAN_PROJECTS_HOME/Rowan/platforms/gemstone/projects (skipped 3 evaluationTemps) 4086 RwComponentProjectDefinition >> projectHome: @3 line 3 receiver aRwComponentProjectDefinition aProjectHomeReferenceOrString $ROWAN_PROJECTS_HOME/Rowan/platforms/gemstone/projects (skipped 2 evaluationTemps) 4087 [] in Executed Code @48 line 38 self nil receiver anExecBlock1 ar anArray projectDefinition nil theProjectSetDefinition nil specUrl file:$ROWAN_PROJECTS_HOME/Rowan/platforms/gemstone/topaz/3.5.0/specs/FileSystemGs_component.ston projectHome $ROWAN_PROJECTS_HOME/Rowan/platforms/gemstone/projects loadedProjectInfo aDictionary readTool aRwPrjReadTool gitRoot $ROWAN_PROJECTS_HOME/Rowan (skipped 3 evaluationTemps) 4088 Array (Collection) >> do: @6 line 10 receiver anArray aBlock anExecBlock1 i 1 (skipped 4 evaluationTemps) 4089 Executed Code @13 line 31 receiver nil projectSetDefinition aRwProjectSetDefinition gitRepoPath $ROWAN_PROJECTS_HOME/Rowan packageCreateTool nil loadedProjectInfo aDictionary auditFailures nil readTool aRwPrjReadTool reAudit nil gitRoot $ROWAN_PROJECTS_HOME/Rowan (skipped 2 evaluationTemps) 4090 GsNMethod class >> _gsReturnToC @1 line 1 receiver GsNMethod topaz 1> commit Successful commit _______________________________________________ Glass mailing list [hidden email] https://lists.gemtalksystems.com/mailman/listinfo/glass |
On Mar 12 2021, at 4:41 pm, Jupiter Jones <[hidden email]> wrote:
No I'm referring to your comment in the "Darwin Downloads > 3.5.2" mail I noticed that after version 3.5.2, the Darwin downloads are in .dmg format so are not working with GsDevKit I haven't done development on a Mac for several years now, so I didn't relaize that the changes for Darwin were that dramatic, but I'm assuming that there is a programmatic (read `bash shell`) what to install a .dmg file ... if there is a programmatic way to install a .dmg file then the $GS_HOME/bin/downloadGemStone could be modified unpack the .dmg file in the right spot ... if it has to be done manually, then at a minimum the instructions for unpacking manually could be posted to the stdout ...
The current code in the GsDevKit_launcher needs to be looked at by me ... I think ... I expect that it will change a fair amount with the use of superDoit instead of st_launcher ...
Leave the rest to me, since much of the installation will be changing quite a bit ... Rowan has changed in the last year or so and superdoit makes things quite a bit simpler ... BTW, I looked at the error stack, and I'll guess that the FileSystem code used by Rowan might not be up-to-snuff ... I'll make a point of checking that out on our development macs before I release things to you ... SNIP
Yes I think that is a good first choice ... it was what I was planning on doing a month ago, but along the way I got sidetracked by switching gears towards superdoit :)
Will do... Im motivated to get you up to speed as quickly as possible before you run out of time :) I really appreciate you stepping up to the task ... Dale _______________________________________________ Glass mailing list [hidden email] https://lists.gemtalksystems.com/mailman/listinfo/glass |
Hi Dale,
Ah, cool. Will do. I will create a new issue for this if I can’t find an existing one. I will browse through the issues first to make sure I don’t double up. Leave the rest to me, since much of the installation will be changing quite a bit ... Rowan has changed in the last year or so and superdoit makes things quite a bit simpler ... Will do. Let me know when you have time to chat about it all. If you’d like to me sit in when you’re working on this, we can use slack.
My pleasure. It’s been a pretty rough couple of years for us but we’re coming out it with hope and direction :) I’m just sorry I haven’t had more time to offer as you guys have been so supportive. Chat soon. Cheers, J _______________________________________________ Glass mailing list [hidden email] https://lists.gemtalksystems.com/mailman/listinfo/glass |
Free forum by Nabble | Edit this page |