Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
cmucl
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Carl Shapiro
cmucl
Commits
d5daca9f
Commit
d5daca9f
authored
30 years ago
by
ram
Browse files
Options
Downloads
Patches
Plain Diff
Initial revision
parent
80941823
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
tools/build-and-install
+304
-0
304 additions, 0 deletions
tools/build-and-install
tools/variant-lisp
+82
-0
82 additions, 0 deletions
tools/variant-lisp
with
386 additions
and
0 deletions
tools/build-and-install
0 → 100755
+
304
−
0
View file @
d5daca9f
#!/bin/sh
# Install/build cmucl cores.
# David Axmark (davida@isil.detron.se)
# Rewritten 940501.
# This script was suppled by David Axmark. It rebuilds CMU CL from sources.
# It uses his build-and-install script, and may contain sun dependencies.
#
# Try to avoid depending on locally installed stuff.
PATH
=
/bin:
$PATH
export
PATH
sed_fix
()
{
(
file
=
$1
;
shift
if
test
!
-f
$file
.before-sed
then
sedscript
=
/tmp/sedscript-
$$
>
$sedscript
while
test
-n
"
$1
"
do
# Dont fail for args begginging with -n
/usr/5bin/echo
"
$1
"
>>
$sedscript
shift
done
mv
$file
$file
.before-sed
echo
"Applying sed fixes to
$file
"
sed
-f
$sedscript
$file
.before-sed
>
$file
rm
-f
$sedscript
fi
)
}
mkdir_if_needed
()
{
if
test
!
-d
"
$1
"
;
then
mkdir
"
$1
"
;
fi
}
usage
()
{
echo
"Usage:
$0
cmucl_version [build_options]"
echo
"Example:
$0
17e -all"
exit
1
}
if
test
-z
"
$1
"
;
then
usage
;
fi
ver
=
$1
;
shift
if
expr
"
$ver
"
:
"[0-9]
\{
1,3
\}
[a-z]
\{
1,
\}
"
>
/dev/null
then
dummy
=
t
else
echo
"The version
$ver
seems funny to me. Expected somthing like 17e."
exit
1
fi
# Set a lot of variables.
sys
=
sunos
base
=
${
MY_BASEDIR
:-
/my
}
/cmucl
local_dir
=
$base
/own-builds
CMUCL_ROOT
=
$base
CMUCL_EMPTYFILE
=
/var/tmp/empty
subdir
=
$ver
src
=
$base
/src/
$ver
tooldir
=
$src
/tools
build_dir
=
$base
/build
dest
=
$build_dir
/
$sys
/
$subdir
lisp
=
variant-lisp
safe_lisp
=
"variant-lisp -version
$ver
"
logfile
=
$build_dir
/build-
$ver
-log-
`
date
+%H%M%S
`
report_memory_layout
=
\
'(format t "read-only ~X~%static ~X~%dynamic ~X~%"
sparc:target-read-only-space-start sparc:target-static-space-start
sparc:target-dynamic-space-start)'
export
ver tooldir build_dir CMUCL_ROOT CMUCL_EMPTYFILE sys subdir dest src lisp
if
test
-z
"
$1
"
;
then
usage
;
fi
# We need this for the log file
mkdir_if_needed
$build_dir
(
while
test
-n
"
$1
"
do
echo
"Doing:
$1
"
case
"
$1
"
in
-all-build-steps
)
# All steps
echo
"Doing all steps nesessariy to build a cmucl core."
set
-
-all
\
-setup
-genesis
-compile-c-code
-compile-lisp-code
-worldbuild
-mk-lisp
;;
-remove-old-installation
)
rm
-rf
$base
/release-
$ver
;;
-remove-build-directory
)
# We leave $base/build since we want to keep the log files.
rm
-rf
$dest
;;
-install-distribution
)
cd
$base
if
test
-d
release-
$ver
then
echo
"Release
$ver
already installed"
exit
1
fi
vername
=
sunos
mkdir
release-
$ver
cd
release-
$ver
any_cat
$base
/distributions/
$ver
-
$vername
.tar
*
| gtar xf -
any_cat
$base
/distributions/
$ver
-extra-
$vername
.tar
*
| gtar xf -
mkdir
src
;
cd
src
any_cat
$base
/distributions/
$ver
-source
.tar.
*
| gtar xf -
cd
$base
/src
ln
-s
../release-
$ver
/src
$ver
;;
-config
)
# Configure a default kernel with CLX
cd
$base
/release-
$ver
/lib
conf
=
`
/usr/5bin/echo
-e
"4
\n
6
\n
"
`
echo
"
$conf
"
|
CMUCL_VERSION
=
$ver
./config
;;
-clean-up
)
# Remove or compress some files that are not strictly needed
rm
-rf
*
.BAK subsystems
cd
../doc
gzip
--best
*
.ps
*
.doc
*
.txt
echo
"Done"
;;
-apply-patch
)
name
=
$2
;
shift
echo
"Applying patch:
$name
"
if
test
!
-f
$src
/patch-
$name
-applied
then
patch
--directory
$src
--strip
=
1 <
$local_dir
/
$ver
-
$name
-patch
touch
$src
/patch-
$name
-applied
fi
;;
-add-local-c-code
)
# Make sure that we link again
rm
-f
$dest
/lisp/lisp
ml
=
$MY_BASEDIR_VERSION
/lib
clm_lib
=
$MY_BASEDIR_VERSION
/wlisp/gina/clm/lib.sun4
local_src
=
17e-extra-c-code.c
local_libs
=
"-L
$ml
-lreg -lpisam -lhash -lmisam
\
-lmerge -lnisam -lheap -linput -lmycurses -lpcurses -lmysys
\
-ldbug -lstrings
$ml
/rx.o
$ml
/replace-many.o
\
$clm_lib
/unixsocket.o
$clm_lib
/io.o"
;;
-clean-c-code
)
cd
$dest
/lisp
gmake
-f
$src
/lisp/GNUmakefile clean
;;
-setup
)
# Fix makefile so we can use the VPATH feature.
if
test
!
-f
$src
/lisp/patch-GNUmakefile-applied
then
patch
--directory
$src
/lisp
\
<
$local_dir
/
$ver
-GNUmakefile-patch
touch
$src
/lisp/patch-GNUmakefile-applied
fi
# Create build directory stucture
mkdir_if_needed
$build_dir
/
$sys
mkdir_if_needed
$build_dir
/
$sys
/
$subdir
# Create directory structure if needed.
if
test
!
-d
$build_dir
/
$sys
/
$subdir
/lisp
then
cd
$src
# Suns find will not do a $var/{} substitution.
# So we do this instead.
find
.
-type
d
-print
|
while
read dir
;
do
mkdir
$dest
/
$dir
;
done
fi
# Create Config & Depends
cd
$dest
/lisp
# Create Config file.
cat
>
Config
<<
EOF
CPPFLAGS = -I. -I/usr/include/X11 -DSUNOS # -DDEBUG
CC = gcc # -Wall -Wstrict-prototypes -Wmissing-prototypes
CPP = /lib/cpp
CFLAGS = -O
ASFLAGS = -O
NM = nm -gp
ASSEM_SRC = sparc-assem.S
ARCH_SRC = sparc-arch.c
OS_SRC = sunos-os.c os-common.c
$local_src
OS_LINK_FLAGS=-static
OS_LIBS=
$local_libs
VPATH=
$src
/lisp:
$local_dir
EOF
# Create a Depends file
if
test
!
-f
Depends
then
>
Depends
# Create fake internals.h so make depend works.
>
internals.h
gmake
-f
$src
/lisp/GNUmakefile depend
rm
-f
internals.h
fi
;;
-genesis
)
echo
"Map file for ldb version 0"
>
$dest
/lisp/lisp.map
$safe_lisp
-noinit
<<
EOF
(setf (ext:search-list "target:") '("
$dest
/"))
(setf (ext:search-list "src:") '("
$base
/src/
$ver
/"))
(load "src:compiler/sparc/parms")
(load "src:compiler/generic/new-genesis")
$report_memory_layout
(in-package :lisp)
(setf *genesis-core-name* "target:lisp/kernel.core")
(setf *genesis-c-header-name* t)
(setf *genesis-symbol-table* "target:lisp/lisp.map")
(setf *genesis-map-name* t)
(setf *target-page-size* 8192)
(genesis nil)
(ext:quit)
EOF
;;
-compile-c-code
)
cd
$dest
/lisp
gmake
-f
$src
/lisp/GNUmakefile all
;;
-compile-lisp-code
)
sed_fix
$tooldir
/compile-all
\
"s;/afs/cs/project/clisp/build/;
$base
/build/;"
\
"s;/afs/cs/project/clisp/;
$base
/;"
chmod
a+x
$tooldir
/compile-all
cd
$build_dir
echo
"Starting compile of all lisp code. This takes a long time."
LISP
=
$safe_lisp
\
$tooldir
/compile-all
-target
sunos
-release
$ver
-lisp
$base
/release-
$ver
\
-noupdate
-nocompile
hemlock
;;
-worldbuild
)
cd
$build
$safe_lisp
-noinit
<<
EOF
(setf (search-list "target:") '("
$dest
/" "
$src
/"))
(load "target:compiler/sparc/parms")
$report_memory_layout
(load "target:bootstrap" :if-does-not-exist nil)
(load "target:tools/setup")
(load "target:compiler/generic/new-genesis" :if-source-newer :compile)
(load "target:tools/worldbuild" :if-source-newer :compile)
$report_memory_layout
(quit)
EOF
;;
-mk-lisp
)
sed_fix
$tooldir
/mk-lisp
"s;/@sys/;/
\$
sys/;"
chmod
a+x
$tooldir
/mk-lisp
cd
$dest
$tooldir
/mk-lisp
-now
$ver
:no-hemlock
;;
-install-as
)
new_ver
=
$2
;
shift
if
test
"
$ver
"
=
"
$new_ver
"
then
echo
"buildver
$ver
can not be equal to installver
$new_ver
"
exit
1
fi
echo
"Inststalling new core as version
$new_ver
"
mkdir_if_needed
$base
/release-
$new_ver
mkdir_if_needed
$base
/release-
$new_ver
/bin
mkdir_if_needed
$base
/release-
$new_ver
/lib
# Make symlinks to original version.
cd
$base
/release-
$new_ver
rm
-f
doc man src
ln
-s
../release-
$ver
/doc ../release-
$ver
/man ../release-
$ver
/src
.
cd
$base
/release-
$new_ver
/lib
for
file
in
`
echo
../../release-
$ver
/lib/
*
`
do
rm
-f
./
`
basename
$file
`
;
ln
-s
$file
.
done
rm
-f
$base
/release-
$new_ver
/bin/lisp
$base
/release-
$new_ver
/lib/lisp.core
cp
$dest
/lisp/lisp
$base
/release-
$new_ver
/bin/lisp
cp
$dest
/lisp.core
$base
/release-
$new_ver
/lib/lisp.core
;;
-make-default
)
# Change symlink so this becomes the default version
new_ver
=
$2
;
shift
cd
$base
rm
-f
release
;
ln
-s
release-
$new_ver
release
;;
*
)
echo
"No such function:
$1
"
exit
1
;;
esac
shift
done
)
2>&1 |
tee
$logfile
This diff is collapsed.
Click to expand it.
tools/variant-lisp
0 → 100755
+
82
−
0
View file @
d5daca9f
#!/bin/sh
# Start a CMU CL lisp.
# This script was suppled by David Axmark. It supports starting various
# different versions of CMU CL, and is used by his build-and-install script.
# It may contain Sun dependencies.
MY_BASEDIR
=
${
MY_BASEDIR
:-
/my
}
BASE_DIR
=
$MY_BASEDIR
/cmucl
# We require all arguments to this script to come before other
# arguments. This is so we dont have to try to pass on arguments
# with spaces, quotes and so on in them.
VERSION
=
VARIANT
=
# Default version/variant may be changed in the environment.
if
test
-n
"
$CMUCL_VERSION
"
;
then
VERSION
=
-
$CMUCL_VERSION
;
fi
if
test
-n
"
$CMUCL_VARIANT
"
;
then
VARIANT
=
-
$CMUCL_VARIANT
;
fi
while
test
-n
"
$1
"
-a
-z
"
$END_LOOP
"
do
case
$1
in
-version
)
VERSION
=
-
$2
;
shift
;
shift
;;
-variant
)
VARIANT
=
-
$2
;
shift
;
shift
;;
-prod
)
PROD
=
t
;
shift
;;
*
)
END_LOOP
=
t
;;
esac
done
if
test
-n
"
$VERSION
"
-a
!
-d
"
$BASE_DIR
/release
$VERSION
"
then
echo
"Could not find lisp version
$VERSION
."
if
test
-n
"LISP_MUST_HAVE_RIGHT_CORE"
then
exit
1
fi
echo
"Trying to use default version"
VERSION
=
fi
if
test
-n
"
$PROD
"
then
BASE
=
$MY_BASEDIR
/production/interview
else
BASE
=
$BASE_DIR
/release
$VERSION
fi
LISP
=
$BASE
/bin/lisp
CORE
=
$BASE
/lib/lisp.core
CMUCLLIB
=
$BASE
/lib
PATH
=
$BASE
/bin:
$PATH
# Avoid tmpfs filesystems for CMUCL_EMPTYFILE
CMUCL_EMPTYFILE
=
/var/tmp/empty
export
PATH CMUCLLIB CMUCL_EMPTYFILE
# Use this systems version as default if it exists. Ex if we are running
# under /my/ok we will use the -ok core.
MY_VERSION
=
`
basename
${
MY_BASEDIR_VERSION
:-
/
}
`
if
test
-n
"
$MY_VERSION
"
-a
-f
$CORE$VARIANT
-
$MY_VERSION
then
VARIANT
=
"
$VARIANT
-
$MY_VERSION
"
fi
if
test
-n
"
$VARIANT
"
-a
!
-f
$CORE$VARIANT
then
echo
"Could not find lisp variant
$CORE$VARIANT
."
if
test
-n
"LISP_MUST_HAVE_RIGHT_CORE"
then
exit
1
fi
echo
"Trying to use default variant"
VARIANT
=
else
CORE
=
"
$CORE$VARIANT
"
fi
exec
$LISP
-core
$CORE
"
$@
"
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment