The source package is easy.
% svn export PATH-TO-REPOSITORY larceny-VERSION-src % tar czf larceny-VERSION-src.tar.gz larceny-VERSION-src % zip -r larceny-VERSION-src.zip larceny-VERSION-src
The binary packages are a bit harder.
Lets simplify things by assuming you're starting with a nightly build from the autobuild scripts.
- Make a copy of the larceny_src/ autobuilt directory, naming it according to the following pattern: larceny-VERSION-bin-VARIANT-ARCH-OS
- VARIANT is one of common | native | petit
- ARCH is one of cls | ia32 | sparc | stdc
- OS is one of win32 | linux86 | macosx | win32 | solaris
- Examples:
- larceny-0.93-bin-common-cls-win32/
- larceny-0.93-bin-native-ia32-macosx/
- larceny-0.93-bin-petit-stdc-linux86/
- Here are the hosts and paths for the autobuilds (see also MoreAboutDart)
- artichoke (Linux IA32 native, Linux Petit): /home/henchman/larcenytest/
- CCIS (Solaris Sparc native, Solaris Petit): /proj/will/pnkfelix/larcenytest/
- poblano (Mac OS X IA32 native): /home/henchman/larcenytest/
- Rasputin (Win32 IA32 native): C:\Henchman\larcenytest\
- Hercules (Mac OS X PowerPC Petit): /home/pnkfelix/larcenytest/
- (not that it matters since only Felix can get to this machine...)
- It might be good to find a CCIS owned PowerPC Macintosh to do these autobuilds on, so that we'd all be able to log into the machine.
- Felix is trying to mechanize the steps below; see package-bin-release.sh
- The above script currently does steps that are not completely documented below (particularly with respect to CommonLarceny).
- In any case, the intention is that you copy the script somewhere else (like /tmp/), and then run the script while your working directory is the copy of larceny_src/ that you made above.
Having done that, just
- replace README-FIRST.txt (FIXME)
- remove larceny-np, which isn't documented and doesn't work with Petit Larceny anyway (FIXME)
- run the script
- tar/gzip the directory
The script will do the following:
- Right now, the nightly builds use svn checkout instead of svn export. This means you need to remove the .svn directories that are littered in the tree. Here is a command that should do the trick:
% find . -name .svn -type d | xargs rm -r
- Remove the src directory, since that's not part of the binary distribution.
- There is some weirdness here on CommonLarceny; consult the package-bin-release.sh script to see what files and directory structures need to be preserved.
- Remove the test directory, since that's not part of the binary distribution.
- Remove the include directory from the non-Petit distributions.
- Remove README-COMMON-LARCENY.txt from the non Common Larceny distributions
- For Petit:
- remove the .o files
- remove the generated .c files (but currently distinquishing these is actually difficult...)
- For Non-petit systems with FFI support, we want to compile certain libraries that use the foreign-ctools library ahead of time.
- (Felix is not going to do this for Petit systems for v0.94 because it is not clear if we can safely distribute the .so files that compile-file on Petit Larceny generates.)
- (In the future, we should compile as many files as possible in the lib directory tree. Felix started work on a Scheme script for this, compile-standard-libraries.sch, but that is not ready for prime time in the v0.94 release.)
- You can get an over-estimated list of such libraries with the following command:
% grep -l define-c- lib/*/*.sch
- The important files for the v0.94 release is lib/Experimental/socket.sch, lib/Experimental/unix.sch, and lib/Standard/file-system.sch, because Snow relies on them for directory listing and tcpip support.
- These files tend to assume that their syntax dependencies will be handled automagically by require, so the safest way to compile them is to first load the file (so that the syntactic environment will be extended with any necessary dependencies) and then compile the file.
(for-each (lambda (f) (load f) (compile-file f)) (list "lib/Experimental/socket.sch" "lib/Experimental/unix.sch" "lib/Standard/file-system.sch"))
Common Larceny Notes
Larceny.fasl depends on several source files at load time:
- src/Build/nbuild-param.sch
- src/Lib/Common/toplevel.sch
- src/Lib/Arch/IL/toplevel-target.sch
If it can't find these files, it will fail to load, so we can't just blow away src/.
