Etoys RPM and XO bundle
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.
Prerequisites
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 autogen.sh 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 ./makerpm
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
Etoys
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 autogen.sh 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://dev.laptop.org/git/projects/etoys
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 dev.laptop.org and copy the rpms and xo file over:
ssh dev.laptop.org newgrp etoys cd /var/www/etoys ./mirror cd /var/www/sugar/sources/etoys ./rpms2tar cd /var/www/sugar/sources/etoys-activity/ ./xo2tar
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.:
Etoys-61.xo etoys-2.2.1710-1.noarch.rpm etoys-2.2.1710-1.src.rpm * 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 http://etoys.laptop.org/xo 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.