Coder Social home page Coder Social logo

gsdevkithome's Introduction

GsDevKitBuild Status

Work in Progress eventual replacement for glassdb/glass project

Installation

Gofer new
  package: 'GsUpgrader-Core';
  repository: (MCGitHubRepository location: 'github://GsDevKit/gsUpgrader:dev/repository');
  load.
(Smalltalk at: #GsUpgrader) upgradeGsDevKit.

gsdevkithome's People

Contributors

dalehenrich avatar jbrichau avatar lisaalmarode avatar rjsargent avatar seandenigris avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gsdevkithome's Issues

Error during `installServer gs_246 2.4.6`

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

unique username/password for each stone (from Mariano)

  • All my scripts (not only those stone-creation-startup-related) are prepared to:
    1. Run with a particular (specified) OS user
    2. 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.

`/sys/stone/dirs` and `/sys/stone/repos` should be based on loaded projects only?

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

More definitive `script is finished` needed for installServer and friends

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

windows tODE Client installation fails

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.

/sys/default/client/scripts/installServerTode2/ should be split out

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

The IP address tODE is using to communicate with the netldi process is outdated

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.1 to 1.0.0 todo items

  • make a 0.0.2 release, where the version of tODE uses tag 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.0
  • release notes
    • project loading theme
  • scripts to support new /sys structure
  • tode/sys/default/home/ contents
  • load tode project script based on loadProject script
    • bin/createTodeProjectStone and bin/installTodeProjectStone
    • projects/magritte3/bin/installMagritte3Stone, etc.
  • /sys/default/bin/validateStoneSysNodes man page updated to include dirs, packages and repos, etc.
  • install README edits
    • move tODE details to separate doc
      • review tODE Getting Started doc (new home) and make sure links are clean
    • include ubunutu system requirements (Issue #22)
    • include fix for Issue #48 in readme
    • web client license blurb (note about free email version of license)
    • Development Kit projects cleanup
      • projects readme
      • tODE project ... just to hook up the tode directory ...
        • cp /sys/stone/dirs/Tode/tode /sys/local/home/tode
        • mount @/sys/stone/dirs/Tode/tode /sys/local/home tode
      • pier3.0.0 (Seaside3.0 and swazoo)
      • magritte (Seaside3.1 and gem server)
      • seaside3.1 (zinc and gem server)
      • zinc 2.4.3.1
      • magritte3 (Seaside3.1, zinc and gem server)
    • tests/ ... alternate tode boottstrap and pe pointing at dev for tests (better alternative than -branch arg to scripts
    • include Mariano's X11 forwarding trick in os orereqs docs ... along with install instructions if needed

break out stone dir creation as separate script/step (feedback from Mariano)

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

nginx FastCGI support

Should write documentation and hook in pre-defined configuration files for nginx FastCGI support:

  • Ubuntu 12.04 install instructions
  • nginx install instructions
  • nginx configuration artifacts

todeClientImage install fails: faulty filetree package validation logic

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:

`Do not clone as root` ...

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

feature request: available-env

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

ubuntu system requirements

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

tODE Server installation not working

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

netldi ports per stone (feedback from Mariano)

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

GsFile class>>_exists:onClient: can return nil

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

add waitstone option to startstone

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

1.0.0 to 2.0.0 compat ideas

  • symbolic link from tode/sys/default/clients to tode/clients (similar link for server(?))
  • composition that includes tode/home for home directories
  • directory map of tode/sys documenting the directory structure
  • anything else that preserves changes users made in the old tode structure
  • tag 1.0.0 before merge ... next release 2.0.0
  • script for building /sys structure for exsiting stones

pstack not installed or enabled on ubuntu12.04?

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.

what's up with the `logs` entries in the `/sys` structure?

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

pid files needed for all executables (feedback from Mariano)

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.