diff --git a/shared/repos/GsDevKit_launcher/rowan/filetree/gsdevkit_launcher-Core.package/AbstractGsDevKitProgram.class/class/createStone.version.args..st b/shared/repos/GsDevKit_launcher/rowan/filetree/gsdevkit_launcher-Core.package/AbstractGsDevKitProgram.class/class/createStone.version.args..st new file mode 100644 index 00000000..caa85913 --- /dev/null +++ b/shared/repos/GsDevKit_launcher/rowan/filetree/gsdevkit_launcher-Core.package/AbstractGsDevKitProgram.class/class/createStone.version.args..st @@ -0,0 +1,11 @@ +gsdevkit utilities +createStone: stoneName version: gemstoneVersion args: args + | commandPath | + commandPath := '$GS_HOME/bin/createStone' asFileReference pathString. "Use asFileReference to resolve $GS_HOME in commandPath" + self + execute: commandPath , ' ' , args , ' ' stoneName , ' ' , gemstoneVersion + exitStatusBlock: [ :exitStatus :stdout :stderr | + exitStatus ~= 0 + ifTrue: [ Error signal: 'Error , ' , stderr asString ]. + self stdout nextPutAll: stdout. + ^ stdout ] \ No newline at end of file diff --git a/shared/repos/GsDevKit_launcher/rowan/filetree/gsdevkit_launcher-Core.package/AbstractGsDevKitProgram.class/class/ln..st b/shared/repos/GsDevKit_launcher/rowan/filetree/gsdevkit_launcher-Core.package/AbstractGsDevKitProgram.class/class/ln..st new file mode 100644 index 00000000..1e5b7ae8 --- /dev/null +++ b/shared/repos/GsDevKit_launcher/rowan/filetree/gsdevkit_launcher-Core.package/AbstractGsDevKitProgram.class/class/ln..st @@ -0,0 +1,10 @@ +shell utilities +ln: args + | cmd | + cmd := '/bin/ln ' , args. + self + execute: cmd + exitStatusBlock: [ :exitStatus :stdout :stderr | + exitStatus ~= 0 + ifTrue: [ Error signal: 'Error , ' , stderr asString ]. + ^ stdout ] \ No newline at end of file diff --git a/shared/repos/GsDevKit_launcher/rowan/filetree/gsdevkit_launcher-Core.package/AbstractGsDevKitProgram.class/class/startNetldi..st b/shared/repos/GsDevKit_launcher/rowan/filetree/gsdevkit_launcher-Core.package/AbstractGsDevKitProgram.class/class/startNetldi..st new file mode 100644 index 00000000..f9ee465b --- /dev/null +++ b/shared/repos/GsDevKit_launcher/rowan/filetree/gsdevkit_launcher-Core.package/AbstractGsDevKitProgram.class/class/startNetldi..st @@ -0,0 +1,3 @@ +gsdevkit utilities +startNetldi: stoneName + ^ self startNetldi: stoneName args: '' \ No newline at end of file diff --git a/shared/repos/GsDevKit_launcher/rowan/filetree/gsdevkit_launcher-Core.package/AbstractGsDevKitProgram.class/class/startNetldi.args..st b/shared/repos/GsDevKit_launcher/rowan/filetree/gsdevkit_launcher-Core.package/AbstractGsDevKitProgram.class/class/startNetldi.args..st new file mode 100644 index 00000000..0244ae93 --- /dev/null +++ b/shared/repos/GsDevKit_launcher/rowan/filetree/gsdevkit_launcher-Core.package/AbstractGsDevKitProgram.class/class/startNetldi.args..st @@ -0,0 +1,11 @@ +gsdevkit utilities +startNetldi: stoneName args: startNetldiCommandLineArgs + | commandPath | + commandPath := '$GS_HOME/bin/startNetldi' asFileReference pathString. "Use asFileReference to resolve $GS_HOME in commandPath" + self + execute: commandPath , ' ' stoneName , ' ' , startNetldiCommandLineArgs + exitStatusBlock: [ :exitStatus :stdout :stderr | + exitStatus ~= 0 + ifTrue: [ Error signal: 'Error , ' , stderr asString ]. + self stdout nextPutAll: stdout. + ^ stdout ] \ No newline at end of file diff --git a/shared/repos/GsDevKit_launcher/rowan/filetree/gsdevkit_launcher-Core.package/AbstractGsDevKitProgram.class/class/stopNetldi..st b/shared/repos/GsDevKit_launcher/rowan/filetree/gsdevkit_launcher-Core.package/AbstractGsDevKitProgram.class/class/stopNetldi..st new file mode 100644 index 00000000..23d2a9ff --- /dev/null +++ b/shared/repos/GsDevKit_launcher/rowan/filetree/gsdevkit_launcher-Core.package/AbstractGsDevKitProgram.class/class/stopNetldi..st @@ -0,0 +1,11 @@ +gsdevkit utilities +stopNetldi: stoneName + | commandPath | + commandPath := '$GS_HOME/bin/stopNetldi' asFileReference pathString. "Use asFileReference to resolve $GS_HOME in commandPath" + self + execute: commandPath , ' ' stoneName + exitStatusBlock: [ :exitStatus :stdout :stderr | + exitStatus ~= 0 + ifTrue: [ Error signal: 'Error , ' , stderr asString ]. + self stdout nextPutAll: stdout. + ^ stdout ] \ No newline at end of file diff --git a/shared/repos/GsDevKit_launcher/rowan/filetree/gsdevkit_launcher-Scripts.package/GdkL_Install_Launcher.class/instance/doCreateStone.st b/shared/repos/GsDevKit_launcher/rowan/filetree/gsdevkit_launcher-Scripts.package/GdkL_Install_Launcher.class/instance/doCreateStone.st index 0dc419b9..ba7bd8d7 100644 --- a/shared/repos/GsDevKit_launcher/rowan/filetree/gsdevkit_launcher-Scripts.package/GdkL_Install_Launcher.class/instance/doCreateStone.st +++ b/shared/repos/GsDevKit_launcher/rowan/filetree/gsdevkit_launcher-Scripts.package/GdkL_Install_Launcher.class/instance/doCreateStone.st @@ -1,4 +1,59 @@ actions doCreateStone + " + 1. create GsDevKit_home stone + 2. update custom_stone.env and restart netldi + 3. populate the stone directory with usful development scripts + 4. run the newBuild_SystemUser_gsdevkit_launcher_tode script to build initial development stone + " + + | createSummary stoneDir customEnv contents gsdevkitStoneScriptDir | self createStone - ifFalse: [ ^ self summary ] \ No newline at end of file + ifFalse: [ ^ self summary ]. + createSummary := Dictionary new. + self summary at: #'create' put: createSummary. + stoneDir := ('$GS_HOME/server/stones/' , self stoneName) asFileReference. + stoneDir exists + ifTrue: [ + createSummary + at: self stoneName + put: #'skipped' -> ('stone already exists at ' , stoneDir pathString) ] + ifFalse: [ + self class createStone: self stoneName version: '3.5.0' args: '-g'. + self createSummary + at: self stoneName + put: #'created' -> stoneDir pathString. + customEnv := stoneDir / 'custome_stone.env'. + contents := customEnv contents. + customEnv + writeStreamDo: [ :stream | + stream + nextPutAll: contents; + lf; + nextPutAll: 'export ROWAN_PROJECTS_HOME=$GS_HOME/shared/repos'; + lf ]. + self class stopNetldi: self stoneName. + self class startNetldi: self stoneName. "pick up ROWAN_PROJECTS_HOME in netldi process" + gsdevkitStoneScriptDir := '$GS_HOME/shared/repos/GsDefKit_launcher/bootstrapping/gemstone/gsdefkit_home' + asFileReference. + self + ln: + ' -s ' + , + (gsdevkitStoneScriptDir / 'newBuild_SystemUser_gsdevkit_launcher_tode') + pathString + , ' ' , stoneDir pathString. + self + ln: + ' -s ' + , + (gsdevkitStoneScriptDir / 'newBuild_SystemUser_gsdevkit_launcher_deployer') + pathString + , ' ' , stoneDir pathString. + self stdout + nextPutAll: + (System + performOnServer: + 'cd ' , stoneDir pathString , '; ./newBuild_SystemUser_gsdevkit_launcher_tode'); + lf ]. + ^ self summary \ No newline at end of file diff --git a/shared/repos/GsDevKit_launcher/rowan/tonel/gsdevkit_launcher-Scripts/GdkL_Install_Launcher.class.st b/shared/repos/GsDevKit_launcher/rowan/tonel/gsdevkit_launcher-Scripts/GdkL_Install_Launcher.class.st index 85f6ce6f..0fbf78f3 100755 --- a/shared/repos/GsDevKit_launcher/rowan/tonel/gsdevkit_launcher-Scripts/GdkL_Install_Launcher.class.st +++ b/shared/repos/GsDevKit_launcher/rowan/tonel/gsdevkit_launcher-Scripts/GdkL_Install_Launcher.class.st @@ -126,8 +126,63 @@ GdkL_Install_Launcher >> doClone [ { #category : 'actions' } GdkL_Install_Launcher >> doCreateStone [ + " + 1. create GsDevKit_home stone + 2. update custom_stone.env and restart netldi + 3. populate the stone directory with usful development scripts + 4. run the newBuild_SystemUser_gsdevkit_launcher_tode script to build initial development stone + " + + | createSummary stoneDir customEnv contents gsdevkitStoneScriptDir | self createStone - ifFalse: [ ^ self summary ] + ifFalse: [ ^ self summary ]. + createSummary := Dictionary new. + self summary at: #'create' put: createSummary. + stoneDir := ('$GS_HOME/server/stones/' , self stoneName) asFileReference. + stoneDir exists + ifTrue: [ + createSummary + at: self stoneName + put: #'skipped' -> ('stone already exists at ' , stoneDir pathString) ] + ifFalse: [ + self class createStone: self stoneName version: '3.5.0' args: '-g'. + self createSummary + at: self stoneName + put: #'created' -> stoneDir pathString. + customEnv := stoneDir / 'custome_stone.env'. + contents := customEnv contents. + customEnv + writeStreamDo: [ :stream | + stream + nextPutAll: contents; + lf; + nextPutAll: 'export ROWAN_PROJECTS_HOME=$GS_HOME/shared/repos'; + lf ]. + self class stopNetldi: self stoneName. + self class startNetldi: self stoneName. "pick up ROWAN_PROJECTS_HOME in netldi process" + gsdevkitStoneScriptDir := '$GS_HOME/shared/repos/GsDefKit_launcher/bootstrapping/gemstone/gsdefkit_home' + asFileReference. + self + ln: + ' -s ' + , + (gsdevkitStoneScriptDir / 'newBuild_SystemUser_gsdevkit_launcher_tode') + pathString + , ' ' , stoneDir pathString. + self + ln: + ' -s ' + , + (gsdevkitStoneScriptDir / 'newBuild_SystemUser_gsdevkit_launcher_deployer') + pathString + , ' ' , stoneDir pathString. + self stdout + nextPutAll: + (System + performOnServer: + 'cd ' , stoneDir pathString , '; ./newBuild_SystemUser_gsdevkit_launcher_tode'); + lf ]. + ^ self summary ] { #category : 'main' }