-
Notifications
You must be signed in to change notification settings - Fork 32
ReleasePackaging
The source package is easy.
- On Larceny's GitHub page, click "Download ZIP".
unzip larceny-master.zip
mv larceny-master.zip 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/
-
- The Linux and OS X versions of native Larceny should be packaged automatically from the nightly autobuilds.
- The Windows version of native Larceny and the Linux version of Petit Larceny will probably have to be packaged by hand.
- The steps described below have been automated for Linux and OS X versions of native Larceny and Petit Larceny; see test/Scripts/package-bin-release.sh package-bin-release.sh
- That 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 tagged version of the source
The script will do the following:
-
Right now, the nightly builds use
git clone
orsvn checkout
. Withgit clone
, you need to remove the.git
directory. Withsvn checkout
, 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 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. - Will remains skeptical. Larceny's FFI is suffering from bit rot; in particular, the
libresolv
library is likely to be incompatible or in a different file on 64-bit systems. Until that is fixed, shipping compiled files that depend upon the FFI is asking for trouble.
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/
.