-
Notifications
You must be signed in to change notification settings - Fork 32
ReleasePackaging
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 ofcommon
|native
|petit
-
ARCH
is one ofcls
|ia32
|sparc
|stdc
-
OS
is one ofwin32
|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):
/Users/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.
- artichoke (Linux IA32 native, Linux Petit):
- Felix is trying to mechanize the steps below; see [source:trunk/larceny_src/test/Scripts/package-bin-release.sh 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 oflarceny_src/
that you made above.
Having done that, just
- run the script
- remove
doc/UserManual/*.txt
(FIXME: the script should do this) - copy the appropriate user manuals into
doc/UserManual
(FIXME: the script should do this) - tar/gzip the directory
- when all binary versions have been made and tested, make a TaggedVersion of the source
The script will do the following:
-
Right now, the nightly builds use
svn checkout
instead ofsvn 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 [source:trunk/larceny_src/test/Scripts/package-bin-release.sh 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...)
- remove the
-
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 thatcompile-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, [source:trunk/larceny_src/src/Build/compile-standard-libraries.sch 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:
- (Felix is not going to do this for Petit systems for v0.94 because it is not clear if we can safely distribute the
% grep -l define-c- lib/*/*.sch
- The important files for the v0.94 release is
lib/Experimental/socket.sch
,lib/Experimental/unix.sch
, andlib/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"))
- Will pointed out to PnkFelix today (August 5th 2008) that on Win32, we have never distributed compiled fasl files in
lib/Standard
. Felix did not expect that but is not surprised. Felix does think that this should be fixed; perhaps in time for 0.97; programmers using native Larceny should be able to expectlib/Standard/file-system
to work, even if they do not have a C compiler installed.
h3. 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 awaysrc/
.