Work in Progress eventual replacement for glassdb/glass project
Gofer new
package: 'GsUpgrader-Core';
repository: (MCGitHubRepository location: 'github://GsDevKit/gsUpgrader:dev/repository');
load.
(Smalltalk at: #GsUpgrader) upgradeGsDevKit.
Open Source Development Kit for GemStone/S 64 Bit
Home Page: https://gemtalksystems.com/
License: MIT License
Suggested by Dario ... it's a good idea ... add an option for defining which topazini file to use would allow you to switch users easily .... add option for scripts to run ...
The Websocket handshake is in the need for the SH1 cryptography functionality. There is a Cryptography package [1] but it is not included into the load process.
I've got some old stones lying around (3.1.0.5, 3.2.1, 3.2.2). IT'd be nice to be able to remove them by name from the disk and from the tODE menus
The file libgcirpc.so
already exists and is read only ...
Saving to: `GemStone64Bit2.4.6-x86_64.Linux.zip'
100%[=========================================================================>] 119,200,662 5.72M/s in 20s
2014-12-03 13:24:21 (5.58 MB/s) - `GemStone64Bit2.4.6-x86_64.Linux.zip' saved [119200662/119200662]
[Info] Creating /opt/gemstone directory
[Warning] /opt/gemstone directory already exists
to replace it, remove or rename it and rerun this script
[Info] Uncompressing GemStone archive into /home/dhenrich/gsDevKitHome/gemstone/products/
[Info] Copying initial system.conf to data directory
[Warning] /home/dhenrich/gsDevKitHome/gemstone/products/GemStone64Bit2.4.6-x86_64.Linux/seaside/data/system.conf already exists
to replace it, remove or rename it and rerun this script
[Info] Copying initial Seaside repository to data directory
copy gci libraries
cp: cannot create regular file `/home/dhenrich/gsDevKitHome/pharo/pharo-vm/libgcirpc.so': Permission denied
Install scripts GsDevKit instead of GLASS1
Save disk space and more importantly download times ... github cache should be safe to share .... if you mount a tode dir and then make changes, those changes would be then shared ... surprisingly so ... perhaps when you mount something in github-cache it should be read only?
- All my scripts (not only those stone-creation-startup-related) are prepared to:
- Run with a particular (specified) OS user
- Have a particular Gemstone user (I don't use DataCurator anywhere). Each stone has a similar DataCurator user + password.
Why this? Mostly because of security. I have each stone running with its own OS user, with the >> folders, logs, pids, locks, etc created with that OS user. I mean...all unix permission marking >> stuff tried to be for that user.
Right now both of these nodes are based on project entries in the /projects
node, whether or not the project is actually loaded in the image ... this means that the github repos are all downloaded upon the first login into a stone ... which can be quite long ... I don't think that there is value to being able to look at the directory structure of projects that are not yet loaded ... perhaps if you've done something like Browse>baseline
in the project list
there might be value ...
Here's the current end of processing:
Bulk migrate of 0 candidate classes
No instance migrations performed.[12/12/2014 19:09:10.134 UTC]
gci login: currSession 1 rpc gem processId 2424 OOB keep-alive interval 0
---Starting backup to '/home/notroot/gsDevKitHome/gemstone/stones/Dario/backups//tode.dbf' (12/12/2014 11:09:10)
---Finished backup to 12/12/2014 11:09:11 -- tode.dbf
---Starting backup to '/home/notroot/gsDevKitHome/gemstone/stones/Dario/backups//home.dbf' (12/12/2014 11:09:11)
---Finished backup to 12/12/2014 11:09:18 -- home.dbf
a Text for '[176463617 sz:9 TDObjectGatewayNode] /home/'
no newline. A pretty wimpy way to end a script...
Hi!
http://gemtalksystems.com/news/version3-2/ returns a 404.
it is referenced in the readme.md
The remoteInstallation of tODE on a windows client fails due to the fact that Gembuilder related libs are not found and Pharo.exe is already present in the /gsDevKitHome/pharo...
createtODEImage fails on error that is not further logged.
for folks with existing stone structures, the code between the backups in /sys/default/client/scripts/installServerTode2/ needs to be run ... would be convenient to split that out ahead of time so that a single command can be documented as the conversion method:
jUst for grins here's the code of interest:
# Set up /sys node structure
mount --todeRoot sys/default /sys default
mount --todeRoot sys/local /sys local
mount --todeRoot sys/stones /sys stones
# ensure that --stoneRoot directory structure is present
/sys/default/bin/validateStoneSysNodes --files --repair
mount --stoneRoot / /sys stone
# Define /home and /projects based on a composition of the /sys nodes
mount --stoneRoot homeComposition.ston / home
mount --stoneRoot projectComposition.ston / projects
I left my house (yay!) and am in a coffee shop on their wifi. So my computer has a different IP address and I'm getting this error in the todeClient when attempting to connect to a running stone:
Topez ERROR: Error: Unable to create a GemStone session, check netldi log file.
service not found, on a.local getaddrinfo(host '192.168.2.7', service 'cms_ldi') failed
; service cms_ldi not found For further information about login failures, check the gem log file
Restarting the stone and netldi process doesn't help.
0.0.?
that way I can easily patch gsDevKit and or tODE for users who continue to work with 0.0.2 and old version of tODE ... new version of tODE will be 0.1.x so I can use tag 0.?
with 1.0.0tode/sys/default/home/
contentsbin/createTodeProjectStone
and bin/installTodeProjectStone
/sys/default/bin/validateStoneSysNodes
man page updated to include dirs
, packages
and repos
, etc.cp /sys/stone/dirs/Tode/tode /sys/local/home/tode
mount @/sys/stone/dirs/Tode/tode /sys/local/home tode
-branch
arg to scriptsOf course with all of the mucking about that wen into fixing the recently appearing hangs and then the need to include the patch in GsUpgrader ... now I've had a build hang during the download of GsUpgrader ... will wonders never cease!
Mariano's point:
Is there a way to specify the "stones" folder? Because for example in my case I don't want to have them inside gsDevKit.
My response:
regarding the stones folder, I was thinking that symbolic links would be used ... I am getting to the point where I think that I need to break up the scripts a bit more and allow for the separate creation of the stone directory template (I am finding that I want to be able to customize how the stone gets created and that may involve some additional directory structure ) ... I guess the scripts could depend upon a little "data base of stone locations" implemented as a STON file with a dictionary of paths.... and with the stone template directory broken out separately a directory path could be an argument ...
Should write documentation and hook in pre-defined configuration files for nginx FastCGI support:
What is the command to stop netldi processes?
I just installed a new gsDevKitHome and during install process I get the following error even though all prereques are installed.
ster/repository [00a7df6:master] --- github://GsDevKit/Grease:master/repository
Fetched -> Grease-GemStone300-Core-JohanBrichau.5 --- github://GsDevKit/Grease:master/repository [00a7df6:master] --- github://GsDevKit/Grease:master/repository
Project: Metacello baseline
Project: FileTree baseline
Project: Gofer stable
Fetched -> GemStone-Interactions-dkh.12 --- github://glassdb/glass:master/repository [c27f75c:master] --- github://glassdb/glass:master/repository
...RETRY
...RETRYError: Error while installing tODEa UserDefinedError occurred (error 2318), reason:halt, Class category name 'Core-Squeak' for the class 'SystemOrganizer' is inconsistent with the package name 'Core.v3'
TDTopezGemStoneClient(Object)>>error:
TDTopezGemStoneClient>>installTode:forceGLASSInstall: in Block: [ :ex | self error: 'Error while installing tODE' ...etc...
BlockClosure>>cull:
MethodContext(ContextPart)>>handleSignal: in Block: [ self exceptionHandlerBlock cull: exception ]
BlockClosure>>ensure:
It is worth mentioning that when the initial clone is made there is no need to run the clone as root and that it should be cloned such that the normal user has write permissions ... sudo
is used where and when root
operations are performed
H!
I have a feature request. I would like to add gem start scripts to my gsDevKitHome installation. Those are in the need of own environment variables. Usually the best way to add these would be to exend the stone.env file provided by gsDevKit. I wonder if it would make sense to extend the bin/startStone file by reading a $GEMSTONE_ENV_DIR and starting all "available-env" files.
I am thinking of a functionality like the one availabe at apache server's "available-sites"/"enabled-sites" functionality.
That might make an update of gsDevKitHome easier once one might have extended it by such things like own scripts and environment variables.
Sebastian
Obviously the internet is needed to get the initial copies for all artifacts, but for the basic GsDevKitHome, all code needs to be cached on local disk, so builds/rebuilds can all be done without requiring an internet connection
so that I can maintain parallel releases for a while (see Issue #58)
14.04:
sudo apt-get -y install git
sudo apt-get -y install curl
sudo apt-get install pstack
sudo apt-get -y install libpam0g:i386
sudo apt-get -y install libssl1.0.0:386
sudo apt-get -y install libssl1.0.0:i386
sudo apt-get -y install -qq gcc-multilib libstdc++6:i386
sudo apt-get -y install gdb
sudo ln -s /usr/lib/i386-lin-gnu/libstdc++.so.6 /usr/lib/i386-linux-gnu/libstdc++.so
sudo apt-get -y install libx11-6:i386
sudo apt-get -y install libgl1-mesa-dev:i386
sudo apt-get -y install libxcb-dri2-0:i386
12.04:
sudo apt-get -y update
sudo apt-get -y install git
sudo apt-get install pstack
sudo apt-get -y install unzip
sudo apt-get -y install libpam0g:i386
sudo apt-get -y install libssl1.0.0
sudo apt-get -y install libssl1.0.0:i386
sudo ln -s /lib/i386-linux-gnu/libpam.so.0 /lib/libpam.so.0
sudo apt-get -y install -qq gcc-multilib libstdc++6:i386
sudo apt-get -y install gdb
sudo ln -s /usr/lib/i386-lin-gnu/libstdc++.so.6 /usr/lib/i386-linux-gnu/libstdc++.so
sudo apt-get -y install xorg
sudo apt-get -y install openbox
sudo apt-get -y install libx11-6:i386
sudo apt-get -y install libgl1-mesa-dev:i386
sudo apt-get -y install libxcb-dri2-0:i386
When a todeCommand error occurs during:
$GS_HOME/bin/tode todeIt travis_2 < $GS_HOME/projects/magritte3/tests/todeCmds
it would be nice to get a gemstone stack ... now we dump the client stack which is pretty useless most times ....
Hi!
I've tried to install tODE on our server, but I always get an the folowing error-message:
a UserDefinedError occurred (error 2318), reason:halt, Name not found: Base
any idea whats going wrong, or what I'm missing?
We are running on gemstone 3.2.0, when I connect from tODE-Client to the server everything seam to be ok -> except the last message line: TODE not installed"...
if you need further informations, please let me know!
thank you
Marc
Here is the stack-trace:
UserDefinedError (AbstractException) >> _signalWith: @5 line 25
UserDefinedError (AbstractException) >> signal @2 line 47
MetacelloMCVersionSpec (Object) >> error: @6 line 7
[] in ExecBlock0 (MetacelloVersionSpec) >> resolveToLoadableSpec:forLoad:forMap:packages: @3 line 7
[] in ExecBlock0 (MetacelloVersionSpec) >> packageNamed:forLoad:forMap:ifAbsent: @26 line 22
Dictionary >> at:ifAbsent: @7 line 10
MetacelloMCVersionSpec (MetacelloVersionSpec) >> packageNamed:forLoad:forMap:ifAbsent: @2 line 4
MetacelloMCVersionSpec (MetacelloVersionSpec) >> resolveToLoadableSpec:forLoad:forMap:packages: @2 line 4
[] in ExecBlock1 (MetacelloVersionSpec) >> resolveToLoadableSpecs:forLoad:map: @2 line 12
[] in ExecBlock1 (Set) >> do: @2 line 11
[] in ExecBlock2 (KeyValueDictionary) >> keysDo: @2 line 7
KeyValueDictionary >> keysAndValuesDo: @18 line 15
KeyValueDictionary >> keysDo: @2 line 6
Set >> do: @3 line 11
MetacelloMCVersionSpec (MetacelloVersionSpec) >> resolveToLoadableSpecs:forLoad:map: @13 line 10
MetacelloMCVersionSpecLoader >> resolveToLoadableSpecs @3 line 2
MetacelloMCVersionSpecLoader >> load @4 line 4
MetacelloMCVersion >> executeLoadFromArray: @9 line 7
[] in ExecBlock1 (MetacelloMCVersion) >> fetchRequiredFromArray: @2 line 11
[] in ExecBlock0 (MetacelloPlatform) >> useStackCacheDuring:defaultDictionary: @2 line 9
ExecBlock0 (ExecBlock) >> on:do: @3 line 42
MetacelloGemStonePlatform (MetacelloPlatform) >> useStackCacheDuring:defaultDictionary: @9 line 10
[] in ExecBlock0 (MetacelloMCVersion) >> fetchRequiredFromArray: @6 line 11
ExecBlock0 (ExecBlock) >> ensure: @2 line 12
[] in ExecBlock0 (MetacelloMCVersion) >> fetchRequiredFromArray: @2 line 12
MetacelloGemStonePlatform (MetacelloPlatform) >> do:displaying: @2 line 3
MetacelloMCVersion >> fetchRequiredFromArray: @17 line 7
[] in ExecBlock1 (MetacelloMCProjectSpec) >> loadVersion: @26 line 38
[] in ExecBlock0 (MetacelloPlatform) >> useStackCacheDuring:defaultDictionary: @2 line 9
ExecBlock0 (ExecBlock) >> on:do: @3 line 42
MetacelloGemStonePlatform (MetacelloPlatform) >> useStackCacheDuring:defaultDictionary: @9 line 10
MetacelloMCBaselineOfProjectSpec (MetacelloMCProjectSpec) >> loadVersion: @21 line 24
MetacelloProjectSpecForLoad >> performLoad @26 line 18
MetacelloMCBaselineOfProjectSpec (MetacelloGenericProjectSpec) >> load @6 line 4
MetacelloProjectReferenceSpec >> loadUsing:gofer: @5 line 6
[] in ExecBlock1 (MetacelloCommonMCSpecLoader) >> linearLoadPackageSpecs:repositories: @2 line 6
OrderedCollection (Collection) >> do: @5 line 10
MetacelloFetchingMCSpecLoader (MetacelloCommonMCSpecLoader) >> linearLoadPackageSpecs:repositories: @5 line 6
[] in ExecBlock0 (MetacelloFetchingMCSpecLoader) >> linearLoadPackageSpecs:repositories: @2 line 4
ExecBlock0 (ExecBlock) >> ensure: @2 line 12
MetacelloLoaderPolicy >> pushLoadDirective:during: @6 line 7
MetacelloLoaderPolicy >> pushLinearLoadDirectivesDuring:for: @3 line 3
MetacelloFetchingMCSpecLoader >> linearLoadPackageSpecs:repositories: @3 line 4
MetacelloFetchingMCSpecLoader (MetacelloCommonMCSpecLoader) >> load @15 line 7
MetacelloMCVersionSpecLoader >> load @13 line 16
MetacelloMCVersion >> executeLoadFromArray: @9 line 7
[] in ExecBlock1 (MetacelloMCVersion) >> fetchRequiredFromArray: @2 line 11
[] in ExecBlock0 (MetacelloPlatform) >> useStackCacheDuring:defaultDictionary: @2 line 9
ExecBlock0 (ExecBlock) >> on:do: @3 line 42
MetacelloGemStonePlatform (MetacelloPlatform) >> useStackCacheDuring:defaultDictionary: @9 line 10
[] in ExecBlock0 (MetacelloMCVersion) >> fetchRequiredFromArray: @6 line 11
ExecBlock0 (ExecBlock) >> ensure: @2 line 12
[] in ExecBlock0 (MetacelloMCVersion) >> fetchRequiredFromArray: @2 line 12
MetacelloGemStonePlatform (MetacelloPlatform) >> do:displaying: @2 line 3
MetacelloMCVersion >> fetchRequiredFromArray: @17 line 7
[] in ExecBlock0 (MetacelloMCVersion) >> doLoadRequiredFromArray: @3 line 10
ExecBlock0 (ExecBlock) >> ensure: @2 line 12
MetacelloMCVersion >> doLoadRequiredFromArray: @22 line 16
String >> loadRequiredForMetacelloMCVersion: @3 line 3
MetacelloMCVersion >> load: @2 line 3
[] in ExecBlock0 (MetacelloScriptEngine) >> load:onProjectDownGrade:onProjectUpgrade: @10 line 16
ExecBlock0 (ExecBlock) >> on:do: @3 line 42
[] in ExecBlock0 (MetacelloScriptEngine) >> handleNotificationsForAction: @6 line 4
ExecBlock0 (ExecBlock) >> on:do: @3 line 42
MetacelloScriptEngine >> handleNotificationsForAction: @4 line 10
[] in ExecBlock0 (MetacelloScriptEngine) >> load:onProjectDownGrade:onProjectUpgrade: @2 line 5
ExecBlock0 (ExecBlock) >> ensure: @2 line 12
MetacelloProjectRegistration class >> copyRegistryRestoreOnErrorWhile: @8 line 14
MetacelloScriptEngine >> load:onProjectDownGrade:onProjectUpgrade: @2 line 3
MetacelloScriptEngine >> load: @2 line 3
[] in ExecBlock1 (MetacelloScriptExecutor) >> execute: @11 line 12
[] in ExecBlock1 (MetacelloScriptApiExecutor) >> executeString:do: @5 line 4
Array (Collection) >> do: @5 line 10
MetacelloScriptApiExecutor >> executeString:do: @5 line 4
String >> execute:against: @2 line 2
MetacelloScriptApiExecutor (MetacelloScriptExecutor) >> execute: @6 line 6
Metacello >> execute @6 line 5
Metacello >> load: @3 line 3
[] in Executed Code @10 line 11
[] in ExecBlock0 (GsDeployer) >> deploy: @8 line 8
ExecBlock0 (ExecBlock) >> on:do: @3 line 42
[] in ExecBlock0 (GsDeployer) >> deploy: @2 line 9
[] in ExecBlock0 (MCPlatformSupport class) >> commitOnAlmostOutOfMemoryDuring: @3 line 7
ExecBlock0 (ExecBlock) >> ensure: @2 line 12
MCPlatformSupport class >> commitOnAlmostOutOfMemoryDuring: @6 line 8
[] in ExecBlock0 (GsDeployer) >> mcPlatformSupportDo: @2 line 10
ExecBlock0 (ExecBlock) >> ensure: @2 line 12
GsDeployer >> mcPlatformSupportDo: @10 line 10
GsDeployer >> deploy: @2 line 3
GsDeployer class >> bulkMigrate: @4 line 14
Executed Code @2 line 1
UndefinedObject (GsNMethod class) >> _gsReturnToC @1 line 1
See http://forum.world.st/Glass-script-startStone-td4791031.html for details
In my case, I want to control which port does the netldi for each stone use. So, upon stone creation, I specify: OS user and netldi port. Then, I store this port also in stone.env and I do creat a .topazini with that info. Why this? Well, because I want to know and control which port the netldi for each stone. Second, because I could never connect to gemstone either from topaz or gemtools or tode via the service name. I have to ALWAYS specify the netldi port rather than the name.
BTW...I think your generated .topazini is incomplete as is know. I tried to connect and it fails trying to search /opt/gemstone/locks/gs64ldi..LCK (of course, because you are not specifying netldi stuff in the .topazini so it is searching the default).
Here's a diff for the changes to the method to handle a nil
or Boolean
result:
----- Method: FileDirectory>>readOnlyFileNamed: (in category 'stream creation') -----readOnlyFileNamed: localFileName
"Open the existing file with the given name in this directory for read-only access."
+ | fullName res |
- | fullName |
fullName := self fullNameFor: localFileName.
+ res := GsFile _exists: fullName onClient: self onClient.
+ (res == false or: [ res isNil ])
+ ifTrue: [ ^ self error: 'File named: ' , localFileName printString , ' does not exist.' ].
- (GsFile _exists: fullName onClient: self onClient)
- ifFalse: [ ^ self error: 'File named: ' , localFileName printString , ' does not exist.' ].
^ BinaryOrTextFile open: fullName mode: 'rb' onClient: self onClient
see https://github.com/GsDevKit/gsDevKitHome#remote-tode-client-installation ... at the end of the day, the todeClient image is a bit overloaded and it would make sense to have a todeClient image and a gsdevkit image ... then things are very clear...
On tavis I've hit a string of bad luck where, the stone hasn't had a chance to start before logins start happening, so in self defense I had to add a waitstone for travis ... might as well include an option for users too, since it is worth having on loaded systems
In support of tode Issues: dalehenrich/tode#106 and dalehenrich/tode#110... better, more integrated handling for external projects with tode ... see the tode issues for more details ... for gsDevKitHome, that means to support a ./tode/sys directory structure with provisions for local and stone-specific home and project directories to be saved in git structure ...
Should write documentation and hook in pre-defined configuration files for lighttd FastCGI support:
Got this doing a kill -USR1
on a stuck gem (3.2.4):
Sun Mar 22 09:25:10 PDT 2015
Could not attach to process. If your uid matches the uid of the target
process, check the setting of /proc/sys/kernel/yama/ptrace_scope, or try
again as the root user. For more details, see /etc/sysctl.d/10-ptrace.conf
ptrace: Operation not permitted.
/home/dhenrich/gsDevKitHome/gemstone/stones/sample/product/bin/pstack.gdb:18: Error in sourced command file:
No symbol table is loaded. Use the "file" command.
Pharo3.0 does not come with mono-spaced fonts out of the box, otherwise, I'd have that set by default ...
See Metacello Issue https://github.com/dalehenrich/metacello-work/issues/301 for more details, but in a nutshell in order to have good error messages during tODE installation we need to use gsUpgrader to orchestrate the transition from GLASS to GLASS1 and the Metacello Preview
Write the scripts to use one or the other ...
I don't think that I'm doing anything specifically with these directories so they should be dropped:
$GS_HOME/tode/sys/default/logs
$GS_HOME/tode/sys/local/logs
$GS_HOME/tode/sys/stones/templates/logs
While we're here, the $GS_HOME/tode/sys/stones/templates/client
and $GS_HOME/tode/sys/stones/templates/server
dirs should be moved up the $GS_HOME/tode/sys/stones
... if there is a real use for them...
log files for all of the scripts would be useful to have for debugging after the fact problems
The workaround is to rerun the $GS_HOME/bin/installGemStone script using an already installed product ... the system setting will be performed but a new download will not
e.g. setEnvironmentVariables
export GS_HOME=pwd
export PATH=$GS_HOME/bin:$PATH
In my case, the start/stop stone has the init.d characteristic. So it COULD be used directly in /etc/init.d if desired.
From what I can see you are not storing stone pids in pid files, and this is needed (at least for mine) monit scripts.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.