Etoys RPM and XO bundle

Jump to: navigation, search

The Etoys activity comes as an Etoys XO bundle containing the Sugar glue code, an Etoys RPM containing the image and essential projects, and the Squeak RPM containing the Squeak virtual machine. The "image" contains the basic Squeak libraries plus the actual Etoys layer. The VM and image are separated out as RPMs so that multiple Squeak-based activities can share these, rather than including their own copy.


For building RPMs you will need need to use sugar-jhbuild on Fedora 7.

Squeak VM

In sugar-jhbuild:

./sugar-jhbuild buildone squeak

This will checkout the squeak VM sources from SVN to sugar-jhbuild/source/squeak, then configure and build. Afterwards you can also simply do it by hand:

cd sugar-jhbuild/source/squeak
make install

which installs into the sugar-jhbuild/build directory (was given as --prefix to which passed it to configure).

Squeak RPM

You will first need to edit the "squeak-vm.spec" RPM spec file. At least update the release number and add a changelog entry. Then to build the rpm do this:

cd sugar-jhbuild/source/squeak

Building RPMs requires sudo, it will aks for your user password. When asked to upload press Ctrl-C to abort, this wants to upload built rpms to the release directory.

The RPM will be in /usr/src/redhat/rpms/i386


In sugar-jhbuild:

./sugar-jhbuild buildone etoys

This will checkout the etoys activity sources from GIT to sugar-jhbuild/source/etoys, then configure and build. The make step will checkout the Content directory as given in the Content.revision text file. Afterwards you can also simply do it by hand:

cd sugar-jhbuild/source/squeak
make install

which installs into the sugar-jhbuild/build directory (was given as --prefix to which passed it to configure).

Preparing a release

  • Check the new image and projects into SVN.
  • "svn update" in the Content folder. "svn info" to note the SVN version
  • edit "Content.revision" to reflect the new SVN version
  • do "make ChangeLog" to update the change log, this will download all the latest changesets and extract the preambles.
  • verify the top ChangeLog entry matches the latest update in the image.
  • edit "etoys.spec": change the version number at top to reflect the latest update number, add a new entry to the changelog section (this is essential, XO bundles are numbered by the count of changelog section in the spec). Use the formatting as the other entries, add a line for each new changeset.
  • do "make NEWS" which extracts the changelog entries from etoys.spec and puts it into the NEWS file to be included in XO bundle

Now everything should be in place. Use "git diff" to verify all the changes are sensible. To make the new version available to other jhbuild users, do "git commit -a", put in a nice changelog entry (I copyedit the one from etoys.spec), and then "git push" to upload.

For pushing you will have to edit .git/config, the remote must be git+ssh://

Etoys RPM

make etoys-src
../../sugar-jhbuild shell
sudo make etoys-rpm

to create the source tarball, to setup environment variables and create the etoys rpm.

I then do "make etoys-release" which copies the rpm to tinlizzie using scp.

Etoys XO bundle

../../sugar-jhbuild shell
make xo

to setup environment variables and make the xo bundle.

After that, "make xo-release" which uploads the bundle to tinlizzie using scp.

Getting the release into the build

Once everything has been uploaded to tinlizzie, I login to and copy the rpms and xo file over:

newgrp etoys
cd /var/www/etoys

cd /var/www/sugar/sources/etoys
cd /var/www/sugar/sources/etoys-activity/

RPMs are pulled automatically into the Joyride builds. You need to place source and binary .rpm and .xo files in ~/public_rpms/joyride and then edit the ChangeLog:

mkdir -p ~/public_rpms/joyride
cd ~/public_rpms/joyride
ln /var/www/etoys/rpms/etoys-??.noarch.rpm .
ln /var/www/etoys/srpm/etoys-??.src.rpm .
ln /var/www/etoys/rpms/Etoys-??.xo .
nano ChangeLog

The ChangeLog must list the new files, the changelog entry, and a signature line, e.g.:


  * changed activity launch to match new Sugar
  * words in tiles separated by spaces not camelCase
  * adds "distance to" and "bearing to" tiles
  * better .pot sort order
  -- Name <name@host.domain>  Thu, 11 Oct 2007 00:48:59 -0400

If you did all right, the new rpms should be included in the next joyride build. See Update.1 process for how to get a release from joyride into a stable build.

The XO bundle declares as its update_url, which is used by the Activity updater. That page should have been updated automatically if you ran the mirror script above.

You might also want to edit the page Activities/Etoys (latest) just for completeness.