GsDevKit_home has been made more modular with separate git projects for the tODE client and GemStone servers. With a new, modular directory structure, project-specific (private) files like session descriptions, tODE scripts and customized system.conf
files are co-located in a separate git project (GsDevKit_local_sys) that can be managed in a private repository (i.e., BitBucket) keeping your team's private shared data private.
Modules for development clients like Jade and GemTools can be added to GsDevKit_home, as well as modules for production tools like Daemon Tools, Monit, Apache, nginx, lightppd, etc.
By default, git-based repositories used by GsDevKit_home are cloned thus reducing the reliance on network and making for more reliable builds. The ultimate goal is to move all projects used by GsDevKit to git so that builds can be done without a network connection.
It is no longer necessary to fork the GsDevKit_home project as part of the installation process.
Better support for Windows users. The installation process for the Windows, Linux and OSX platforms is the same.
No.
If you have a stone that was created with gsDevKitHome (either dev or master branches), you can use the attachOldDevKitStone
script to put the old stone under GsDevKit_home management.
For example the following command attaches to a stone named dev_329
that was created using the dev branch of GsDevKitHome (-d
option) where the old $GS_HOME
is /export/foos1/users/dhenrich/dev/dev_gsDevKitHome
:
attachOldDevKitStone -d -t dev_329 3.2.9 /export/foos1/users/dhenrich/dev/dev_gsDevKitHome
attachOldDevKitStone
creates a symbolic link to the original stone directory and copies the original session description to the new $GS_HOME/sys/local/sessions
directory.
If the -t
option is specified, the script:
- copies the tODE scripts and projects associated with the stone into the new location:
$GS_HOME/sys/stones/<stone-name>
. With the-m
option, only the home directory is copied. - makes
pre-rebuild
backups
andsnapshots
of the stone and then rebuilds the in-image tODE structures to match the new GsDevKit_home directory structure. With the-m
option nosnapshot
is made. - mounts the old
$GS_HOME/tode
as/oldTodeRoot
so that the old directory structure is accessible from within tODE.
As you can see in the output of the status
command, the stone is tucked neatly into the new GsDevKit_home system:
foos:_home>status
Installed Products:
3.1.0.6
3.2.9
Installed Clients:
tode tODE client
todeClient.image
Available Sessions:
dev_329
gs_329
Installed Stones:
3.2.9 dev_329
3.2.9 gs_329
Yes.
In general all tODE clients should be able to connect to older stones.
Once you have run the $GS_HOME/bin/installClient
or $GS_HOME/bin/installServerClient
scripts, all you need to do is copy the session description into your $GS_HOME/sys/local/sessions
directory.
For a master branch checkout of gsDevKitHome, the session descriptions are found in the old $GS_HOME/tode/client/descriptions
directory.
For a dev branch checkout of gsDevKitHome, the session descriptions are found in the the old $GS_HOME/tode/sys/local/client/descriptions
directory.
When a new version is published I send an email announcement to the GLASS mailing list, where I will reference a specific pull request that was used to create the release like the following:
Each of my pull requests has an Update Scripts section where I will describe the script or scripts that should be run to update your GsDevKit_home checkout.
Typically the Update Scripts will involve running the $GS_HOME/bin/updateGsDevScript
with a combination of the -g
, -t
and -i
options (when in doubt run $GS_HOME/bin/updateGsDevScript -g -t -i
).
When the -g
option is specified, the clones for the GsDevKit_* modules (GsDevKit_home, GsDevKit_gs_client_dev, GsDevKit_todeClient, GsDevKit_gs_server, and GsDevKit_sys_local) that are currently being used are updated by doing a git pull
from the appropriate remote.
When the -t
option is specified, the clone of the tODE project is updated ($GS_HOME/shared/repos/tode
).
When the -i
option is specied the command line Pharo image (when -g
option is specified) and/or the tode client images (when the -t
option is specified) are rebuilt.
If you are curious about any pull requests that you might have missed, you can take note of the commit SHA in your current checkout using the git log -1
command:
foos:GsDevKit_home>git log -1
commit d4fde700cddc2356815aac684ccc340e2384d6a7
Merge: 1876b7a 6c9c685
Author: Dale Henrichs <[email protected]>
Date: Sat Oct 17 08:02:57 2015 -0700
Merge pull request #3 from GsDevKit/dev
todeUpdate customization ... another FAQ
and follow the Previous Pull Request link:
comparing the SHA of the merge commit:
until you find a match.
To update your checkout, run the $GS_HOME/bin/updateGsDevKit
with the -t
option:
updateGsDevKit -t
To update the version of tODE used in a stone, run the $GS_HOME/bin/todeUpdate
command:
todeUpdate <stone-name>
No; you can create a stone based on a existing extent file.
When you create a stone you can specify a path to a pre-built extent file, so if you want to avoid bootstrapping GLASS1 and tODE every time you create a stone you should first create a stone that you will use to manage your pre-built extent file. The following creates a tODE stone based on GemStone 3.2.9:
$GS_HOME/bin/createStone prebuilt_329 3.2.9
During the createStone
for a tODE stone, a snapshot extent named extent0.tode.dbf
is created.
This snapshot can be used as the starting point for another createStone
thus bypassing the bootstrapping process:
$GS_HOME/bin/createStone -t $GS_HOME/server/stones/prebuilt_329/snapshots/extent0.tode.dbf new_329 3.2.9
When a new version of tODE is announced, you can update the prebuilt stone with the following:
$GS_HOME/bin/todeUpdate prebuilt_329
which also saves a new snapshot.
If you want to prebuild an extent file that does not contain tODE, start by creating a stone using $GEMSTONE/bin/extent0.seaside.dbf
:
$GS_HOME/bin/createStone -g prebuilt_329 3.2.9
and then load the rest of the code that you need bootstrapped.
You can then create the snapshot extent by following the instructions in How to make an extent snapshot backup. Thereafter you use the -s
option and specify the path to the custom extent when you create a new stone:
$GS_HOME/bin/createStone -s <path-to-custom-snapshot> new_329 3.2.9