Skip to content

Commit

Permalink
Sources from my private svn repo, revision 552.
Browse files Browse the repository at this point in the history
  • Loading branch information
gigamonkey committed Mar 6, 2007
0 parents commit 9c100b6
Show file tree
Hide file tree
Showing 45 changed files with 3,525 additions and 0 deletions.
43 changes: 43 additions & 0 deletions COPYING
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
The components that make up the bulk of Lispbox (Emacs,
SLIME, and the various Common Lisp implementions) are
each distributed according to their own license. The
Lispbox code itself may be redistributed according to
the following, BSD-sans-advertising-clause, license:

Copyright (c) 2005, Peter Seibel All rights reserved.

Redistribution and use in source and binary forms, with
or without modification, are permitted provided that
the following conditions are met:

* Redistributions of source code must retain the
above copyright notice, this list of conditions
and the following disclaimer.

* Redistributions in binary form must reproduce the
above copyright notice, this list of conditions
and the following disclaimer in the documentation
and/or other materials provided with the
distribution.

* Neither the name of Peter Seibel nor the names of
its contributors may be used to endorse or
promote products derived from this software
without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

5 changes: 5 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
2005-04-06 Peter Seibel <peter@gigamonkeys.com>

* write-lispbox.sh: Changed way we compute LISPBOX_HOME in order
to work when script run as ./lispbox.sh

286 changes: 286 additions & 0 deletions GNUmakefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,286 @@
#
# GNUmakefile to build Practical Common Lisp Lispbox distro.
# Copyright 2005 Peter Seibel.
#

# N.B. I know about the z flag to tar. However, on OS X gzip complains
# about trailing garbage if not passed the -q flag. And tar doesn't
# seem to pay attention to the GZIP environment variable.

include GNUmakefile.vars

LISPBOX_LISP := sbcl
GNU_LINUX_EMACS_VERSION := 21.4
WINDOWS_EMACS_VERSION := 21.3
CLISP_VERSION := 2.41
ALLEGRO_VERSION := 70_trial
SBCL_VERSION := 1.0.3
OPENMCL_VERSION := 1.0
SLIME_VERSION := 20070306.205402
PRACTICALS_VERSION := 1.0.3
PORTABLEASERVE_VERSION := 1.2.35

ifeq ($(os),Linux)
emacs := emacs-$(GNU_LINUX_EMACS_VERSION)
endif
ifeq ($(os),Darwin)
emacs := Emacs.app
endif
ifeq ($(os),Windows)
emacs := emacs-$(WINDOWS_EMACS_VERSION)
endif

clisp := clisp-$(CLISP_VERSION)
allegro := acl$(ALLEGRO_VERSION)
sbcl := sbcl-$(SBCL_VERSION)
openmcl := openmcl-$(OPENMCL_VERSION)

lisp := $($(LISPBOX_LISP))
slime := slime-$(SLIME_VERSION)
practicals := practicals-$(PRACTICALS_VERSION)

ifeq ($(os),Darwin)
lispbox_script_dir := $(prefix)/Emacs.app/Contents/MacOS
emacs_site_lisp := $(prefix)/Emacs.app/Contents/Resources/site-lisp
export LISPBOX_HOME_RELATIVE := /../../..
export EMACS_EXE := Emacs.app/Contents/MacOS/Emacs
endif
ifeq ($(os),Linux)
lispbox_script_dir := $(prefix)
emacs_site_lisp := $(prefix)/$(emacs)/share/emacs/site-lisp
export LISPBOX_HOME_RELATIVE :=
export EMACS_EXE := $(emacs)/bin/emacs
export LINUX=yes
endif
ifeq ($(os),Windows)
lispbox_script_dir := $(prefix)
emacs_site_lisp := $(prefix)/$(emacs)/site-lisp
export LISPBOX_HOME_RELATIVE :=
export EMACS_EXE := $(emacs)/bin/runemacs.exe
endif

export EMACS := $(emacs)

lispbox_elisp_dir := $(if $(NO_EMACS),$(prefix),$(emacs_site_lisp))

all: distro

distros:
$(MAKE) -f GNUmakefile.distros

clean:
rm -rf staging
rm -rf $(prefix)

source-dist: $(LISPBOX_HOME)-source.tar.gz

$(LISPBOX_HOME)-source.tar.gz:
mkdir $(prefix)
mkdir -p $(prefix)/binary-archives
cp binary-archives/$(practicals).tar.gz $(prefix)/binary-archives/
mkdir -p $(prefix)/source-archives
mkdir -p $(prefix)/staging-archives
cp asdf-extensions.lisp $(prefix)
cp asdf.lisp $(prefix)
cp COPYING $(prefix)
cp ChangeLog $(prefix)
cp GNUmakefile $(prefix)
cp GNUmakefile.allegro $(prefix)
cp GNUmakefile.base $(prefix)
cp GNUmakefile.clisp $(prefix)
cp GNUmakefile.emacs $(prefix)
cp GNUmakefile.portableaserve $(prefix)
cp GNUmakefile.practicals $(prefix)
cp GNUmakefile.sbcl $(prefix)
cp GNUmakefile.slime $(prefix)
cp GNUmakefile.vars $(prefix)
cp Info.plist $(prefix)
cp OSXpackage.mk $(prefix)
cp README $(prefix)
cp README.source $(prefix)
cp write-lispbox-el.sh $(prefix)
cp write-lispbox.sh $(prefix)
cp lispbox.bat $(prefix)
cp write-site-init-lisp.sh $(prefix)
(cd $(TOP); tar czf - $(LISPBOX_HOME)) > $@

$(prefix) staging:
mkdir -p $@

staging/%: source-archives/%.tar.gz staging
cat $< | (cd staging; gzip -cdq | tar xf -)
find $@ -exec touch {} \;

staging/%: source-archives/%.tar.bz2 staging
cat $< | (cd staging; tar xjf -)
find $@ -exec touch {} \;

######################################################################
# Installer

ifeq ($(os),Linux)
distro_no_emacs := lispbox-$(LISPBOX_VERSION)-no-emacs-with-$(lisp).tar.gz
distro_with_emacs := lispbox-$(LISPBOX_VERSION)-$(lisp).tar.gz
distro_just_lisp := lispbox-$(LISPBOX_VERSION)-just-lisp-$(lisp).tar.gz

distro := $(if $(JUST_LISP),$(distro_just_lisp),$(if $(NO_EMACS),$(distro_no_emacs),$(distro_with_emacs)))

distro: $(distro)

$(distro): lispbox
(cd $(TOP); tar czf - $(LISPBOX_HOME)) > $@
endif

ifeq ($(os),Darwin)
distro_with_emacs := LispboxInstaller-$(LISPBOX_VERSION)-with-$(lisp).dmg
distro_no_emacs := LispboxInstallerNoEmacs-$(LISPBOX_VERSION)-with-$(lisp).dmg
distro_just_lisp := LispboxInstallerJustLisp-$(LISPBOX_VERSION)-$(lisp).dmg

distro := $(if $(JUST_LISP),$(distro_just_lisp),$(if $(NO_EMACS),$(distro_no_emacs),$(distro_with_emacs)))

distro: $(distro)

$(distro): lispbox
$(MAKE) -f OSXpackage.mk clean all NAME=$(distro) LISPBOX_VERSION=$(LISPBOX_VERSION) LISPBOX_LISP=$(lisp)

endif

ifeq ($(os),Windows)
distro_no_emacs := lispbox-$(LISPBOX_VERSION)-no-emacs-with-$(lisp).zip
distro_with_emacs := lispbox-$(LISPBOX_VERSION)-$(lisp).zip
distro_just_lisp := lispbox-$(LISPBOX_VERSION)-just-lisp-$(lisp).zip

distro := $(if $(JUST_LISP),$(distro_just_lisp),$(if $(NO_EMACS),$(distro_no_emacs),$(distro_with_emacs)))

distro: $(distro)

$(distro): lispbox
(cd $(TOP); tar czf - $(LISPBOX_HOME)) > $@
endif


######################################################################
# Lispbox

lispbox: staging

ifndef JUST_LISP
ifndef NO_EMACS
lispbox: $(emacs)
ifeq ($(os),Windows)
lispbox: $(lispbox_script_dir)/lispbox.bat
endif
ifneq ($(os),Windows)
lispbox: $(lispbox_script_dir)/lispbox.sh
endif
ifeq ($(os),Darwin)
lispbox: $(prefix)/Emacs.app/Contents/Info.plist
endif # Darwin
endif # not NO_EMACS

lispbox: $(slime)
lispbox: $(practicals)
lispbox: $(prefix)/$(slime)/site-init.lisp
lispbox: $(lispbox_elisp_dir)/lispbox.el
lispbox: $(prefix)/asdf.lisp
lispbox: $(prefix)/asdf-extensions.lisp
ifneq ($(LISPBOX_LISP),allegro)
portableaserve := portableaserve-$(PORTABLEASERVE_VERSION)
lispbox: $(portableaserve)
endif # not allegro
endif # not JUST_LISP

lispbox: $(lisp)
lispbox: $(prefix)/$(lisp)/lispbox-register.el

$(lispbox_script_dir)/lispbox.bat: lispbox.bat
cp $< $@

$(lispbox_script_dir)/lispbox.sh: write-lispbox.sh $(prefix)
SBCL_DIR=$(sbcl) OPENMCL_DIR=$(openmcl) $(SH) $< > $@
chmod +x $@

foo: $(lispbox_elisp_dir)/lispbox.el

$(lispbox_elisp_dir)/lispbox.el: write-lispbox-el.sh $(if $(NO_EMACS),$(prefix),$(emacs))
SLIME_DIR=$(slime) SBCL_DIR=$(sbcl) OPENMCL_DIR=$(openmcl) $(SH) $< > $@

$(prefix)/$(slime)/site-init.lisp: write-site-init-lisp.sh $(prefix)/$(slime)
PRACTICALS=$(practicals) PORTABLEASERVE=$(portableaserve) $(SH) $< > $@
chmod 0644 $@

$(prefix)/asdf.lisp: asdf.lisp
cp $< $@
chmod 0644 $@

$(prefix)/asdf-extensions.lisp: asdf-extensions.lisp
cp $< $@
chmod 0644 $@

$(prefix)/$(allegro)/lispbox-register.el: lisppath := (lispbox-list-to-filename (list (file-name-directory load-file-name) \"alisp\"))
$(prefix)/$(allegro)/lispbox-register.el: license := \"devel.lic\"

ifneq ($(os),Windows)
$(prefix)/$(clisp)/lispbox-register.el: lisppath := (lispbox-list-to-filename (list (file-name-directory load-file-name) \"bin\" \"clisp\")) \"-ansi\" \"-K\" \"full\" \"-B\" (lispbox-list-to-filename (list (file-name-directory load-file-name) \"lib\" \"clisp\"))
endif

ifeq ($(os),Windows)
$(prefix)/$(clisp)/lispbox-register.el: lisppath := \
(lispbox-list-to-filename (list (file-name-directory load-file-name) \"full\" \"lisp.exe\")) \"-ansi\" \
\"-M\" (lispbox-list-to-filename (list (file-name-directory load-file-name) \"full\" \"lispinit.mem\")) \
\"-B\" (lispbox-list-to-filename (list (file-name-directory load-file-name) \"full/\"))
endif



$(prefix)/$(sbcl)/lispbox-register.el: lisppath := (lispbox-list-to-filename (list (file-name-directory load-file-name) \"bin\" \"sbcl\"))
$(prefix)/$(openmcl)/lispbox-register.el: lisppath := (lispbox-list-to-filename (list (file-name-directory load-file-name) \"scripts\" \"openmcl\"))

$(prefix)/%/lispbox-register.el: $(lisp)
echo "(push (list '$(lisp) (list $(lisppath))) slime-lisp-implementations)" > $@
if [ ! -z "$(license)" ]; \
then echo "(lispbox-install-lisp-license (list $(license)) \"$(*)\")" >> $@; \
fi

ifeq ($(os),Darwin)
$(prefix)/Emacs.app/Contents/Info.plist: Info.plist $(emacs)
cp Info.plist $(prefix)/Emacs.app/Contents/
endif

# Unpacking pre-built staging archives into prefix.

components := $(emacs) $(allegro) $(clisp) $(sbcl) $(slime) $(practicals) $(portableaserve)
ifeq ($(os),Darwin)
components += $(openmcl)
endif


$(components): %: staging-archives/%.tar.gz $(prefix)
cat $< | (cd $(prefix); gzip -cdq | tar xf -)

$(sbcl): staging-archives/$(sbcl).tar.gz $(prefix)
cat $< | (cd $(prefix); gzip -cdq | tar xf -)

# Building staging archives if necessary

staging-archives/$(emacs).tar.gz: makefile := GNUmakefile.emacs
staging-archives/$(allegro).tar.gz: makefile := GNUmakefile.allegro
staging-archives/$(clisp).tar.gz: makefile := GNUmakefile.clisp
staging-archives/$(openmcl).tar.gz: makefile := GNUmakefile.openmcl
staging-archives/$(sbcl).tar.gz: makefile := GNUmakefile.sbcl
staging-archives/$(slime).tar.gz: makefile := GNUmakefile.slime
staging-archives/$(practicals).tar.gz: makefile := GNUmakefile.practicals
staging-archives/$(portableaserve).tar.gz: makefile := GNUmakefile.portableaserve

staging-archives/%.tar.gz:
$(MAKE) -f $(makefile) THING=$*

### EMACS ###

emacs: $(emacs)

slime-docs: emacs
cd $(prefix)/$(slime)/doc; \
$(MAKE) infodir=$(prefix)/$(emacs)/info install-info


8 changes: 8 additions & 0 deletions GNUmakefile.allegro
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
all: staging-archives/$(THING).tar.gz

include GNUmakefile.base

staging-archives/$(THING).tar.gz: binary-archives/$(THING).bz2 $(prefix)
cat $< | (cd $(prefix); tar xjf -)
chmod 0777 $(prefix)/$(THING)
(cd $(prefix); tar czf - $(THING)) > $@
9 changes: 9 additions & 0 deletions GNUmakefile.base
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#
# Common bits needed by various component make files.
#

include GNUmakefile.vars

$(prefix) staging:
mkdir -p $@

34 changes: 34 additions & 0 deletions GNUmakefile.clisp
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@

all: staging-archives/$(THING).tar.gz

include GNUmakefile.base

ifneq (,$(findstring $(os),Linux Darwin))

staging-archives/$(THING).tar.gz: $(prefix)/$(THING)
(cd $(prefix); tar czf - $(THING)) > $@

$(prefix)/$(THING): staging/$(THING)/src/clisp
cd staging/$(THING)/src; $(MAKE) install

staging/$(THING)/src/clisp: staging/$(THING)
cd staging/$(THING); ./configure --prefix=$(prefix)/$(THING) --build --without-readline

# For 2.36
# cd staging/$(THING); ./configure --prefix=$(prefix)/$(THING) --build --without-readline --ignore-absence-of-libsigsegv

staging/$(THING): source-archives/$(THING).tar.gz staging
cat $< | (cd staging; tar xzf -)

endif

ifeq ($(os),Windows)

staging-archives/$(THING).tar.gz: staging/$(THING)
(cd staging; tar czf - $(THING)) > $@

staging/$(THING): binary-archives/$(THING)-win32-no-pg.zip staging
unzip $< -d staging/
chmod +x $@/full/lisp.exe

endif
Loading

0 comments on commit 9c100b6

Please sign in to comment.