Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Early Access - new project support #13

Merged
merged 11 commits into from Oct 25, 2015
8 changes: 5 additions & 3 deletions README.md
Expand Up @@ -22,9 +22,10 @@ You will need to ensure that your operating system is configured with the requir
4. [When a new version of GsDevKit_home is published, how do I update my checkout?][6]
5. [When a new version of tODE is published, how do I update my checkout and my stones?][7]
6. [Do I have to bootstrap GLASS1 and tODE from scratch every time I create a stone?][9]
7. How do I share session descriptions between a local client and a remote server?
8. How do I upgrade a stone to a new version of GemStone?
9. How do I load Seaside?
7. [How do I create a new project from scratch in tODE?][10]
8. How do I share session descriptions between a local client and a remote server?
9. How do I upgrade a stone to a new version of GemStone?
10. How do I load Seaside?

[**COMMENTS**][8]

Expand All @@ -37,5 +38,6 @@ You will need to ensure that your operating system is configured with the requir
[7]: docs/FAQ/FAQ.md#5-when-a-new-version-of-tode-is-published-how-do-i-update-my-checkout-and-my-stones
[8]: https://github.com/GsDevKit/GsDevKit_home/issues/new
[9]: docs/FAQ/FAQ.md#6-do-i-have-to-bootstrap-glass1-and-tode-from-scratch-every-time-i-create-a-stone
[10]: docs/FAQ/FAQ.md#7-how-do-i-create-a-new-project-from-scratch-in-tode

[100]: docs/FAQ/FAQ.md#100-how-do-i-contribute-to-the-gsdevkit_home-project
30 changes: 24 additions & 6 deletions bin/updateGsDevKit
Expand Up @@ -10,7 +10,7 @@ echo "================="

usage() {
cat <<HELP
USAGE: $(basename $0) [-h] [-g] [-t] [-i] [-p <patch-name>]
USAGE: $(basename $0) [-h] [-g] [-t] [-i] [-s] [-p <patch-name>]

With the -g option, update the GsDevKit_home components:
update clones (if present):
Expand Down Expand Up @@ -40,13 +40,25 @@ OPTIONS
-p <patch-name>
update should include patch for given <patch-name>
-t
Update tODE components
Update tode project clone and tODE components
-s
Update the shared tODE project clones:
filetree
glass
Grease
metacello-work
PharoCompatibility
rb
ston
tode

EXAMPLES
$(basename $0) -h
$(basename $0) -g
$(basename $0) -s
$(basename $0) -t
$(basename $0) -g -t -i
$(basename $0) -g -t -i -s
$(basename $0)

HELP
Expand All @@ -64,12 +76,14 @@ todeArg=""
imageArg=""
default="true"
patchName=""
while getopts "hgtip:" OPT ; do
updateSharedClones="false"
while getopts "hgtip:s" OPT ; do
case "$OPT" in
h) usage; exit 0;;
i) imageArg="true";;
g) gsDevKitArg="true"; default="false";;
p) patchName="${OPTARG}";;
s) updateSharedClones="true";;
t) todeArg="true"; default="false";;
*) usage; exit 1;;
esac
Expand Down Expand Up @@ -142,9 +156,13 @@ if [ "$updateGsDevKitClones" = "true" ]; then
fi
fi

if [ "$updateTodeClone" = "true" ]; then
if [ -d "${GS_SHARED_REPO}/tode" ] ; then
updateClone $GS_SHARED_GIT_CHECKOUT_TODE $GS_SHARED_GIT_REMOTE_TODE ${GS_SHARED_REPO}/tode
if [ "$updateSharedClones" = "true" ] ; then
$GS_HOME/bin/utils/updateSharedTodeProjectsClone both
else
if [ "$updateTodeClone" = "true" ]; then
if [ -d "${GS_SHARED_REPO}/tode" ] ; then
updateClone $GS_SHARED_GIT_CHECKOUT_TODE $GS_SHARED_GIT_REMOTE_TODE ${GS_SHARED_REPO}/tode
fi
fi
fi

Expand Down
66 changes: 66 additions & 0 deletions docs/FAQ/FAQ.md
Expand Up @@ -179,6 +179,68 @@ $GS_HOME/bin/createStone -s <path-to-custom-snapshot> new_329 3.2.9
---
---
---

####7. *How do I create a new project from scratch in tODE?*

For a project in tODE, you need a package for managing your source code (classes and extension methods), a *BaselineOf* for specifying the load order of packages and project dependencies, a git repository to manage versions of your source code on disk, and a project entry for specifying how you want tODE to treat your project.
The `project new` command can be used to create all of these artifacts.

For example when you run the following command:

```
project new --class Foo
```

You are prompted for the attributes of a new class (by default named *Foo*):

```
Object subclass: 'Foo'
instVarNames: #()
classVars: #()
classInstVars: #()
poolDictionaries: #()
inDictionary: ''
category: 'Foo-Core'
```

The *Foo-Core* package is created and the *Foo* class is added to the package.
The *BaselineOfFoo* is created with the following specification:

```Smalltalk
baseline: spec
<baseline>
spec for: #'common' do: [ spec package: 'Foo-Core' ]
```

For a bit more information on working with the *BaselineOf*, read the [Create Baseline][40] in the [Getting Started with GitHub document][41].
The *BaselineOfFoo* package is created for storing the *BaselineOf* on disk.

The directory `$GS_HOME/shared/repos/Foo` directory is created, a git repository is created in the directory and the *BaselineOfFoo* and *Foo-Core* packages are saved in the git repository.

Finally a *project entry* is created:

```Smalltalk
^ TDProjectSpecEntryDefinition new
baseline: 'Foo'
repository: 'filetree://$GS_HOME/shared/repos/Foo/repository'
loads: #('default');
status: #( #'active' );
locked: true;
yourself
```

and saved on disk as `$GS_HOME/sys/local/server/projects`.

Now is a good time make some modifications to your application class, update the `project list` command and play with some of the `project list` menu items:

![Foo project list][42]

[**COMMENTS**][28]

---
---
---

#UNDER CONSTRUCTION
---
---
Expand Down Expand Up @@ -252,3 +314,7 @@ Then on GitHub, open a pull request from the `topicBranch` in your fork, to the
[31]: ../images/GsDevKit_home-pull-request.png
[32]: ../images/GsDevKit_home-pull-request-merge-detail.png
[33]: ../images/GsDevKit_home-pull-request-previous-pull-request-link.png

[40]: https://github.com/dalehenrich/metacello-work/blob/master/docs/GettingStartedWithGitHub.md#create-baseline
[41]: https://github.com/dalehenrich/metacello-work/blob/master/docs/GettingStartedWithGitHub.md#getting-started-with-github
[42]: ../images/todeFooProjectList.png
36 changes: 22 additions & 14 deletions docs/gettingStartedWithTode.md
Expand Up @@ -3,40 +3,48 @@

Once you have installed the server and tODE client, you can open the tODE client and start using it.

On the client node, execute:
On the client node, if you have not already done so, startup the tODE client by executing:
```
startClient <clientName>
```

Use the name of the client you created. These instructions have used the client name **tode1**, in which case you can executs
Use the name of the client you created. These instructions have used the client name **tode1**, in which case you would execute

```
startClient tode1
```

The script `clients` will list all installed clients.
Note that the script `clients` will list all installed clients.

The image looks like this:
the tODE image will come up. To get started using tODE, you'll open the tODE shell using the popup menu, and select the stone you will be using. In this example, it's `devKit_329`.

![tode image][2]

![open tode shell][2]

####Open a tODE shell
Once a tode client image is open, use the following menu to open a tode shell:

![open tode shell][1]
### Verify your connection to the server

You don't need to explicitly login to GemStone in order to use the tODE client. However, you may want to verify your login, to make sure the connection was correctly established. This is particularly important if you are using separate nodes for client and server, to verify the ports are correctly set on both nodes.

To verify login, at the tODE shell prompt, enter the command `testLogin`.
If there are errors, verify that the stone and netldi are running, and that the client's session description for this stone specifies the same netldi port that the netldi is listening on.

*If an error occurs while attempting to open the tODE shell, try a
![tODE Test Login][4]
to get more information for diagnosing the problem.*

####Open a tODE project list
###Using tODE

Open a tODE a *Project List Browser* using the `project list` tODE command:
Smalltalk browsers provide a number of panes in familiar positions within a window. tODE implements these panes by creating individual windows for each pane. You may resize, move, or close individual panes; when a pane needs to be updated, it will be reopened if necessary. The position and relative locations of the panes are computed within tODE.

![project list][3]
If you want more space than the default image allows (or less), resize the windows and use the popup menu client > window > jigsaw to recompute the pane layout.

Documentation for tODE is provided in man pages within the tODE environment (not UNIX command line man pages). At the tODE shell prompt, enter `man <topic>` to open a window with man-page style help, `man --all` for a list of man pages, or `man --find <keyword>` to search man pages for a specific word or phrase.

###Projects in tODE

Using tODE, you will be working with code in projects. To get started, open a *Project List Browser* using the `project list` tODE command:

![project list][3]

You may load an existing project, such as seaside, or create a new project based on an existing Metacello project. To create a tODE project, use the 'project entry' command.

---

Expand Down
Binary file modified docs/images/todeClient.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/todeFooProjectList.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/todeLoginFail.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/todeLoginSuccess.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/todeMan.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/todeResizeMenu.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions docs/installation/configOSForServerAndClient.md
Expand Up @@ -29,6 +29,9 @@ TBD
sudo apt-get -y install gcc-multilib libstdc++6:i386

sudo ln -f -s /usr/lib/i386-lin-gnu/libstdc++.so.6 /usr/lib/i386-linux-gnu/libstdc++.so

sudo apt-get -y install libgl1-mesa-dev:i386
sudo apt-get -y install libxcb-dri2-0:i386
```

---
Expand Down
3 changes: 3 additions & 0 deletions docs/installation/configOSForSingleNode.md
Expand Up @@ -31,6 +31,9 @@ The instructions are provided [Installation on a single desktop][2]
sudo /bin/su -c "echo 'kernel.yama.ptrace_scope = 0' >>/etc/sysctl.d/10-ptrace.conf"

sudo ln -f -s /usr/lib/i386-lin-gnu/libstdc++.so.6 /usr/lib/i386-linux-gnu/libstdc++.so

sudo apt-get -y install libgl1-mesa-dev:i386
sudo apt-get -y install libxcb-dri2-0:i386
```

---
Expand Down
5 changes: 3 additions & 2 deletions docs/installation/installDevKitClient.md
Expand Up @@ -163,16 +163,17 @@ Your shell is now ssh'ed into the server. You will need to leave this shell con

to the same path on the client node.

3. Edit this file to specify [the server NetLDI port](#determine-port-number-for-connection) in the line item for #netLDIPort :. The lines in the file, for example:
3. Edit this file to specify [the server NetLDI port](#determine-port-number-for-connection), and the gemHost localHost. The line item #netLDIPort : should be set to the port, and the line item #gemHost set to localHost or 127.0.0.1. The lines in this file may read, for example:

```
...
#gemHost : 'santiam.gemtalksystems.com',
#gemHost : 'localHost',
#netLDI : 'devKit_329_ldi',
#netLDIPort : '48334',
#gemTask : 'gemnetobject',
...
```
While your Gem will actually be hosted on the remote server, by using ssh tunnelling you have setup such that it appears to your client that the NetLDI is on the local machine at the given port; and this port is inherited by the Gem, so the Gem also appears (from the point of view of the client) to be on the local machine at the given port. By opening up this port in your firewall, your tODE client can fully communicate with the remote Gem.

4. Start your client

Expand Down