Update SBCL to version 1.0.31 from MAINTAINER (Josh Elsasser).
Highlights: - amd64 support - bootstraping works with clisp
This commit is contained in:
parent
8c1eea771b
commit
b49caa5621
@ -1,11 +1,11 @@
|
||||
# $OpenBSD: Makefile,v 1.2 2008/04/15 12:07:31 deanna Exp $
|
||||
# $OpenBSD: Makefile,v 1.3 2009/11/17 10:44:59 pirofti Exp $
|
||||
|
||||
# not yet ported to other arches
|
||||
ONLY_FOR_ARCHS= i386
|
||||
ONLY_FOR_ARCHS = amd64 i386
|
||||
|
||||
COMMENT= compiler and runtime system for ANSI Common Lisp
|
||||
|
||||
V= 1.0.15
|
||||
V = 1.0.31
|
||||
DISTNAME= sbcl-${V}-source
|
||||
PKGNAME= sbcl-${V}
|
||||
WRKDIST= ${WRKDIR}/sbcl-${V}
|
||||
@ -13,7 +13,7 @@ EXTRACT_SUFX= .tar.bz2
|
||||
|
||||
CATEGORIES= lang
|
||||
HOMEPAGE= http://www.sbcl.org/
|
||||
MAINTAINER= Josh Elsasser <josh@elsasser.org>
|
||||
MAINTAINER = Joshua Elsasser <joshua@elsasser.org>
|
||||
|
||||
# Public domain and BSD
|
||||
PERMIT_PACKAGE_CDROM= Yes
|
||||
@ -24,42 +24,25 @@ PERMIT_DISTFILES_FTP= Yes
|
||||
WANTLIB= c m util
|
||||
|
||||
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=sbcl/}
|
||||
MASTER_SITES0= http://www.elsasser.org/openbsd/
|
||||
DISTFILES= ${DISTNAME}${EXTRACT_SUFX}
|
||||
SUPDISTFILES= ${SBCL_BOOTSTRAP_I386}.tar.bz2:0
|
||||
|
||||
SBCL_BOOTSTRAP_I386= sbcl-1.0.14-openbsd-i386-static-1
|
||||
SBCL_BOOTSTRAP= ${SBCL_BOOTSTRAP_${MACHINE_ARCH:U}}
|
||||
|
||||
# To build a new bootstrap tarball, do "make patch" then edit the
|
||||
# following files:
|
||||
# ${WRKSRC}/make.sh
|
||||
# comment out "time sh make-target-contrib.sh" near the end
|
||||
# ${WRKSRC}/src/runtime/Config.x86-openbsd
|
||||
# change the -export-dynamic flags to -static
|
||||
# You should also edit the do-build target in this Makefile, comment
|
||||
# out the second line to avoid trying to build the manual. Finally, do
|
||||
# "make build" and go get some coffee. When it's finished you can grab
|
||||
# ${WRKSRC}/src/runtime/sbcl and ${WRKSRC}/output/sbcl.core to make
|
||||
# the bootstrap tarball.
|
||||
|
||||
PSEUDO_FLAVORS= native_bootstrap
|
||||
FLAVOR?=
|
||||
|
||||
BUILD_DEPENDS= ::print/texlive/base
|
||||
|
||||
# it's not actually interactive, it just needs /proc and higher resource limits
|
||||
REGRESS_IS_INTERACTIVE=Yes
|
||||
|
||||
.if ${FLAVOR:L:Mnative_bootstrap}
|
||||
BUILD_DEPENDS+= ::lang/sbcl
|
||||
BOOTSTRAP_CMD= ${LOCALBASE}/bin/sbcl \
|
||||
--disable-debugger --no-sysinit --no-userinit
|
||||
.elif !empty(SBCL_BOOTSTRAP)
|
||||
DISTFILES+= ${SBCL_BOOTSTRAP}.tar.bz2:0
|
||||
BOOTSTRAP_CMD= ${WRKDIR}/${SBCL_BOOTSTRAP}/sbcl \
|
||||
--core ${WRKDIR}/${SBCL_BOOTSTRAP}/sbcl.core \
|
||||
--disable-debugger --no-sysinit --no-userinit
|
||||
.else
|
||||
BUILD_DEPENDS += ::lang/clisp
|
||||
BOOTSTRAP_CMD = ${LOCALBASE}/bin/clisp -q -norc
|
||||
.endif
|
||||
|
||||
.if ${MACHINE_ARCH} == "i386"
|
||||
PKG_ARGS += -Di386=1
|
||||
.else
|
||||
PKG_ARGS += -Di386=0
|
||||
.endif
|
||||
|
||||
USE_GMAKE= Yes
|
||||
@ -67,6 +50,9 @@ PORTHOME= ${TMPDIR}
|
||||
MAKE_ENV= GNUMAKE=${GMAKE} INSTALL_ROOT=${PREFIX} \
|
||||
MAN_DIR=${PREFIX}/man INFO_DIR=${PREFIX}/info
|
||||
|
||||
pre-configure:
|
||||
@${SUBST_CMD} ${WRKSRC}/src/runtime/runtime.c
|
||||
|
||||
do-build:
|
||||
cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} /bin/sh make.sh "${BOOTSTRAP_CMD}"
|
||||
cd ${WRKSRC}/doc/manual && ${SETENV} ${MAKE_ENV} ${GMAKE}
|
||||
@ -78,13 +64,6 @@ post-install:
|
||||
${CHOWN} -R 0:0 ${PREFIX}/lib/sbcl
|
||||
|
||||
do-regress:
|
||||
@echo "These tests must be run with a data size resource limit of at least"
|
||||
@echo "768 MB, for example by a user in the staff or daemon login classes."
|
||||
@echo
|
||||
@echo "The /proc filesystem must also be mounted for the core.test.sh test:"
|
||||
@echo " mkdir -p /proc && mount -t procfs proc /proc"
|
||||
@echo
|
||||
@sleep 5
|
||||
cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} RUN_CONTRIB_TESTS=1 \
|
||||
/bin/sh make-target-contrib.sh
|
||||
cd ${WRKSRC}/tests && ${SETENV} ${MAKE_ENV} /bin/sh run-tests.sh
|
||||
|
@ -1,10 +1,5 @@
|
||||
MD5 (sbcl-1.0.14-openbsd-i386-static-1.tar.bz2) = LLiuQhzlqTgixZV4yZ5j7Q==
|
||||
MD5 (sbcl-1.0.15-source.tar.bz2) = 09la4QaEo8/FnkJ+xTPuaA==
|
||||
RMD160 (sbcl-1.0.14-openbsd-i386-static-1.tar.bz2) = cx9B6lgyN7hg2alpXHXu54diiBM=
|
||||
RMD160 (sbcl-1.0.15-source.tar.bz2) = WNputGy3LQ6IzbXtWhvAHVklz6I=
|
||||
SHA1 (sbcl-1.0.14-openbsd-i386-static-1.tar.bz2) = 8UjrJjR7PPKBrjz+7qvdvKMF/XA=
|
||||
SHA1 (sbcl-1.0.15-source.tar.bz2) = TTNX9W5vYAyuCsP3gRH8zVrrdHM=
|
||||
SHA256 (sbcl-1.0.14-openbsd-i386-static-1.tar.bz2) = fn++aMwD+62CKaXAuqPgFi1EztAD2GI5Pxas9iGQwG4=
|
||||
SHA256 (sbcl-1.0.15-source.tar.bz2) = XeSYVZpr4AAZ/QzgkHV+dch12J6FR1k9ehCvttqXC+k=
|
||||
SIZE (sbcl-1.0.14-openbsd-i386-static-1.tar.bz2) = 7636859
|
||||
SIZE (sbcl-1.0.15-source.tar.bz2) = 3205556
|
||||
MD5 (sbcl-1.0.31-source.tar.bz2) = ph/QmacsLT+hClcpjzyb9g==
|
||||
RMD160 (sbcl-1.0.31-source.tar.bz2) = 6UyQl/9BOEccF5v+Hx4sM+by4Wk=
|
||||
SHA1 (sbcl-1.0.31-source.tar.bz2) = Skt03hdPlwUKJ4WsRVmqbdSKPQk=
|
||||
SHA256 (sbcl-1.0.31-source.tar.bz2) = 0CZNbkpJ5tGBwnNI8H3nM8CYYMnNdKH76Objy3yiidw=
|
||||
SIZE (sbcl-1.0.31-source.tar.bz2) = 3354506
|
||||
|
@ -1,7 +1,13 @@
|
||||
$OpenBSD: patch-contrib_asdf-module.mk,v 1.1.1.1 2008/04/14 12:29:40 deanna Exp $
|
||||
--- contrib/asdf-module.mk.orig Wed Sep 6 17:56:59 2006
|
||||
+++ contrib/asdf-module.mk Thu Apr 10 14:37:27 2008
|
||||
@@ -18,7 +18,8 @@ endif
|
||||
$OpenBSD: patch-contrib_asdf-module.mk,v 1.2 2009/11/17 10:45:00 pirofti Exp $
|
||||
|
||||
Fix 'all' target to allow building without running tests.
|
||||
|
||||
Don't copy every single file when installing the contribs, only the
|
||||
ones that are actually needed to load the system.
|
||||
|
||||
--- contrib/asdf-module.mk.orig Tue Apr 28 09:02:13 2009
|
||||
+++ contrib/asdf-module.mk Tue Jul 7 17:57:02 2009
|
||||
@@ -22,7 +22,8 @@ endif
|
||||
|
||||
export CC SBCL EXTRA_CFLAGS EXTRA_LDFLAGS
|
||||
|
||||
@ -11,9 +17,10 @@ $OpenBSD: patch-contrib_asdf-module.mk,v 1.1.1.1 2008/04/14 12:29:40 deanna Exp
|
||||
$(MAKE) -C ../asdf
|
||||
$(SBCL) --eval '(defvar *system* "$(SYSTEM)")' --load ../asdf-stub.lisp --eval '(quit)'
|
||||
|
||||
@@ -29,4 +30,4 @@ test: all
|
||||
|
||||
|
||||
@@ -34,5 +35,4 @@ test: all
|
||||
# KLUDGE: There seems to be no portable way to tell tar to not to
|
||||
# preserve owner, so chown after installing for the current user.
|
||||
install: $(EXTRA_INSTALL_TARGETS)
|
||||
- tar cf - . | ( cd "$(BUILD_ROOT)$(INSTALL_DIR)" && tar xpvf - )
|
||||
- find "$(BUILD_ROOT)$(INSTALL_DIR)" -type f -exec chown `id -u`:`id -g` {} \;
|
||||
+ cp -p $(SYSTEM).asd *.lisp *.fasl "$(BUILD_ROOT)$(INSTALL_DIR)"
|
||||
|
@ -1,4 +1,7 @@
|
||||
$OpenBSD: patch-contrib_vanilla-module.mk,v 1.1.1.1 2008/04/14 12:29:40 deanna Exp $
|
||||
$OpenBSD: patch-contrib_vanilla-module.mk,v 1.2 2009/11/17 10:45:00 pirofti Exp $
|
||||
|
||||
Add an 'all' target to allow building without running tests.
|
||||
|
||||
--- contrib/vanilla-module.mk.orig Wed Sep 6 17:56:59 2006
|
||||
+++ contrib/vanilla-module.mk Thu Apr 10 14:13:34 2008
|
||||
@@ -1,3 +1,4 @@
|
||||
|
@ -1,7 +1,12 @@
|
||||
$OpenBSD: patch-make-target-contrib.sh,v 1.1.1.1 2008/04/14 12:29:40 deanna Exp $
|
||||
--- make-target-contrib.sh.orig Mon Oct 8 04:02:52 2007
|
||||
+++ make-target-contrib.sh Thu Apr 10 14:13:34 2008
|
||||
@@ -42,6 +42,7 @@ export SBCL SBCL_BUILDING_CONTRIB
|
||||
$OpenBSD: patch-make-target-contrib.sh,v 1.2 2009/11/17 10:45:00 pirofti Exp $
|
||||
|
||||
Only run the contrib tests if $RUN_CONTRIB_TESTS is not empty. This
|
||||
allows the contribs to be build when USE_SYSTRACE=Yes, and the tests
|
||||
to be run later in do-regress.
|
||||
|
||||
--- make-target-contrib.sh.orig Mon Feb 16 13:36:13 2009
|
||||
+++ make-target-contrib.sh Tue Jul 7 17:57:02 2009
|
||||
@@ -43,6 +43,7 @@ export SBCL SBCL_BUILDING_CONTRIB
|
||||
# as SB-RT and SB-GROVEL, but FIXME: there's probably a better
|
||||
# solution. -- CSR, 2003-05-30
|
||||
|
||||
@ -9,7 +14,7 @@ $OpenBSD: patch-make-target-contrib.sh,v 1.1.1.1 2008/04/14 12:29:40 deanna Exp
|
||||
find contrib/ \( -name '*.fasl' -o \
|
||||
-name '*.FASL' -o \
|
||||
-name 'foo.c' -o \
|
||||
@@ -55,13 +56,17 @@ find contrib/ \( -name '*.fasl' -o \
|
||||
@@ -56,13 +57,17 @@ find contrib/ \( -name '*.fasl' -o \
|
||||
-print | xargs rm -f
|
||||
|
||||
find output -name 'building-contrib.*' -print | xargs rm -f
|
||||
|
30
lang/sbcl/patches/patch-src_code_common-os_lisp
Normal file
30
lang/sbcl/patches/patch-src_code_common-os_lisp
Normal file
@ -0,0 +1,30 @@
|
||||
$OpenBSD: patch-src_code_common-os_lisp,v 1.1 2009/11/17 10:45:00 pirofti Exp $
|
||||
|
||||
If os_get_runtime_executable_path(1) returns NULL then try to use
|
||||
saved_runtime_path, which fixes the shebang line in fasls.
|
||||
|
||||
--- src/code/common-os.lisp.orig Wed Jun 24 07:33:19 2009
|
||||
+++ src/code/common-os.lisp Mon Jun 29 07:53:42 2009
|
||||
@@ -15,7 +15,10 @@
|
||||
|
||||
(sb!alien:define-alien-variable ("posix_argv" *native-posix-argv*) (* (* char)))
|
||||
(sb!alien:define-alien-variable ("core_string" *native-core-string*) (* char))
|
||||
-(sb!alien:define-alien-routine os-get-runtime-executable-path sb!alien:c-string)
|
||||
+(sb!alien:define-alien-routine
|
||||
+ os-get-runtime-executable-path sb!alien:c-string (external-path boolean))
|
||||
+(sb!alien:define-alien-variable
|
||||
+ ("saved_runtime_path" *native-saved-runtime-path*) (* char))
|
||||
|
||||
;;; if something ever needs to be done differently for one OS, then
|
||||
;;; split out the different part into per-os functions.
|
||||
@@ -43,6 +46,8 @@
|
||||
(setf *core-pathname*
|
||||
(merge-pathnames (native-pathname *core-string*)))
|
||||
(/show0 "setting *RUNTIME-PATHNAME*")
|
||||
- (let ((exe (os-get-runtime-executable-path)))
|
||||
- (setf *runtime-pathname* (when exe (native-pathname exe))))
|
||||
+ (let ((exe (os-get-runtime-executable-path t))
|
||||
+ (saved (sb!alien:cast *native-saved-runtime-path* sb!alien:c-string)))
|
||||
+ (setf *runtime-pathname*
|
||||
+ (when (or exe saved) (native-pathname (or exe saved)))))
|
||||
(/show0 "leaving OS-COLD-INIT-OR-REINIT"))
|
15
lang/sbcl/patches/patch-src_compiler_ir1util_lisp
Normal file
15
lang/sbcl/patches/patch-src_compiler_ir1util_lisp
Normal file
@ -0,0 +1,15 @@
|
||||
$OpenBSD: patch-src_compiler_ir1util_lisp,v 1.1 2009/11/17 10:45:00 pirofti Exp $
|
||||
|
||||
Clisp 2.43 chokes on this declaration.
|
||||
|
||||
--- src/compiler/ir1util.lisp.orig Wed Jun 17 13:03:36 2009
|
||||
+++ src/compiler/ir1util.lisp Mon Jun 29 08:22:24 2009
|
||||
@@ -429,7 +429,7 @@
|
||||
(lvar-dynamic-extent it)))
|
||||
|
||||
(defun flushable-combination-p (call)
|
||||
- (declare (combination call))
|
||||
+ (declare (type combination call))
|
||||
(let ((kind (combination-kind call))
|
||||
(info (combination-fun-info call)))
|
||||
(when (and (eq kind :known) (fun-info-p info))
|
@ -1,9 +1,9 @@
|
||||
$OpenBSD: patch-src_runtime_Config.x86-openbsd,v 1.1.1.1 2008/04/14 12:29:40 deanna Exp $
|
||||
--- src/runtime/Config.x86-openbsd.orig Wed Jan 9 11:12:23 2008
|
||||
+++ src/runtime/Config.x86-openbsd Thu Apr 10 14:13:34 2008
|
||||
@@ -25,4 +25,4 @@ OS_LIBS += -lutil
|
||||
$OpenBSD: patch-src_runtime_Config.x86-openbsd,v 1.2 2009/11/17 10:45:00 pirofti Exp $
|
||||
--- src/runtime/Config.x86-openbsd.orig Sun Feb 3 10:34:58 2008
|
||||
+++ src/runtime/Config.x86-openbsd Thu Feb 5 08:41:33 2009
|
||||
@@ -24,5 +24,3 @@ OS_LIBS += -lutil
|
||||
|
||||
LINKFLAGS += -export-dynamic
|
||||
LDFLAGS += -export-dynamic
|
||||
|
||||
-
|
||||
-CFLAGS = -g -Wall -O2
|
||||
+CFLAGS += -g -Wall -O2 -DSBCL_HOME='"${PREFIX}/lib/sbcl/"'
|
||||
|
@ -1,4 +1,4 @@
|
||||
$OpenBSD: patch-src_runtime_GNUmakefile,v 1.1.1.1 2008/04/14 12:29:40 deanna Exp $
|
||||
$OpenBSD: patch-src_runtime_GNUmakefile,v 1.2 2009/11/17 10:45:00 pirofti Exp $
|
||||
--- src/runtime/GNUmakefile.orig Wed Feb 20 09:55:26 2008
|
||||
+++ src/runtime/GNUmakefile Thu Apr 10 14:13:34 2008
|
||||
@@ -23,7 +23,7 @@ NM = nm -gp
|
||||
@ -6,7 +6,7 @@ $OpenBSD: patch-src_runtime_GNUmakefile,v 1.1.1.1 2008/04/14 12:29:40 deanna Exp
|
||||
GREP = grep
|
||||
|
||||
-CFLAGS = -g -Wall -Wsign-compare -O3
|
||||
+CFLAGS += -Wsign-compare
|
||||
+CFLAGS += -Wall -Wsign-compare
|
||||
ASFLAGS = $(CFLAGS)
|
||||
CPPFLAGS = -I.
|
||||
|
||||
|
29
lang/sbcl/patches/patch-src_runtime_bsd-os_c
Normal file
29
lang/sbcl/patches/patch-src_runtime_bsd-os_c
Normal file
@ -0,0 +1,29 @@
|
||||
$OpenBSD: patch-src_runtime_bsd-os_c,v 1.1 2009/11/17 10:45:00 pirofti Exp $
|
||||
|
||||
Add a flag to os_get_runtime_executable_path() indicating if an
|
||||
externally usable path is required, which means we can't use
|
||||
/proc/curproc/file even if procfs happens to be mounted.
|
||||
|
||||
--- src/runtime/bsd-os.c.orig Wed May 13 11:13:48 2009
|
||||
+++ src/runtime/bsd-os.c Mon Jun 29 07:53:42 2009
|
||||
@@ -465,16 +465,12 @@ os_get_runtime_executable_path()
|
||||
}
|
||||
#elif defined(LISP_FEATURE_NETBSD) || defined(LISP_FEATURE_OPENBSD)
|
||||
char *
|
||||
-os_get_runtime_executable_path()
|
||||
+os_get_runtime_executable_path(int external)
|
||||
{
|
||||
struct stat sb;
|
||||
- char *path = strdup("/proc/curproc/file");
|
||||
- if (path && ((stat(path, &sb)) == 0))
|
||||
- return path;
|
||||
- else {
|
||||
- fprintf(stderr, "Couldn't stat /proc/curproc/file; is /proc mounted?\n");
|
||||
- return NULL;
|
||||
- }
|
||||
+ if (!external && stat("/proc/curproc/file", &sb) == 0)
|
||||
+ return copied_string("/proc/curproc/file");
|
||||
+ return NULL;
|
||||
}
|
||||
#else /* Not DARWIN or FREEBSD or NETBSD or OPENBSD */
|
||||
char *
|
@ -1,20 +0,0 @@
|
||||
$OpenBSD: patch-src_runtime_gc-common.c,v 1.1.1.1 2008/04/14 12:29:40 deanna Exp $
|
||||
--- src/runtime/gc-common.c.orig Wed Feb 20 09:55:27 2008
|
||||
+++ src/runtime/gc-common.c Thu Apr 10 14:13:34 2008
|
||||
@@ -25,6 +25,7 @@
|
||||
* <ftp://ftp.cs.utexas.edu/pub/garbage/bigsurv.ps>.
|
||||
*/
|
||||
|
||||
+#include <sys/param.h>
|
||||
#include <stdio.h>
|
||||
#include <signal.h>
|
||||
#include <string.h>
|
||||
@@ -53,7 +54,7 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
-size_t dynamic_space_size = DEFAULT_DYNAMIC_SPACE_SIZE;
|
||||
+size_t dynamic_space_size = MIN(DEFAULT_DYNAMIC_SPACE_SIZE, 400 * 1024 * 1024);
|
||||
|
||||
inline static boolean
|
||||
forwarding_pointer_p(lispobj *pointer) {
|
11
lang/sbcl/patches/patch-src_runtime_os_h
Normal file
11
lang/sbcl/patches/patch-src_runtime_os_h
Normal file
@ -0,0 +1,11 @@
|
||||
$OpenBSD: patch-src_runtime_os_h,v 1.1 2009/11/17 10:45:00 pirofti Exp $
|
||||
--- src/runtime/os.h.orig Wed Jul 25 14:37:31 2007
|
||||
+++ src/runtime/os.h Mon Jun 29 07:53:42 2009
|
||||
@@ -175,6 +175,6 @@ int os_get_errno(void);
|
||||
/* Return an absolute path to the runtime executable, or NULL if this
|
||||
* information is unavailable. If a non-null pathname is returned, it
|
||||
* must be 'free'd. */
|
||||
-extern char *os_get_runtime_executable_path(void);
|
||||
+extern char *os_get_runtime_executable_path(int external_path);
|
||||
|
||||
#endif
|
@ -1,12 +1,147 @@
|
||||
$OpenBSD: patch-src_runtime_runtime.c,v 1.1.1.1 2008/04/14 12:29:40 deanna Exp $
|
||||
--- src/runtime/runtime.c.orig Thu Oct 25 21:33:34 2007
|
||||
+++ src/runtime/runtime.c Thu Apr 10 14:13:34 2008
|
||||
@@ -279,6 +279,8 @@ main(int argc, char *argv[], char *envp[])
|
||||
dynamic_space_size = strtol(argv[argi++], 0, 0) << 20;
|
||||
if (errno)
|
||||
lose("argument to --dynamic-space-size is not a number");
|
||||
+ if (dynamic_space_size > DEFAULT_DYNAMIC_SPACE_SIZE)
|
||||
+ lose("argument to --dynamic-space-size is too large");
|
||||
} else if (0 == strcmp(arg, "--debug-environment")) {
|
||||
int n = 0;
|
||||
printf("; Commandline arguments:\n");
|
||||
$OpenBSD: patch-src_runtime_runtime.c,v 1.2 2009/11/17 10:45:00 pirofti Exp $
|
||||
|
||||
Don't hardcode /usr/local, patch and use SUBST_COMMAND.
|
||||
|
||||
Try to guess the path to the current executable from argv[0] and stash
|
||||
it in saved_runtime_path for later. It's needed to check for an
|
||||
embedded core, to save an executable core, and to write a shebang line
|
||||
in fasls.
|
||||
|
||||
Check saved_runtime_path if os_get_runtime_executable_path(0) returns
|
||||
NULL, which it always will on OpenBSD unless /proc is mounted.
|
||||
|
||||
--- src/runtime/runtime.c.orig Thu May 21 09:22:55 2009
|
||||
+++ src/runtime/runtime.c Mon Jun 29 07:53:42 2009
|
||||
@@ -67,7 +67,7 @@
|
||||
#endif
|
||||
|
||||
#ifndef SBCL_HOME
|
||||
-#define SBCL_HOME "/usr/local/lib/sbcl/"
|
||||
+#define SBCL_HOME "${PREFIX}/lib/sbcl/"
|
||||
#endif
|
||||
|
||||
#ifdef LISP_FEATURE_HPUX
|
||||
@@ -127,6 +127,37 @@ copied_existing_filename_or_null(char *filename)
|
||||
return copied_string(filename);
|
||||
}
|
||||
}
|
||||
+
|
||||
+#ifndef LISP_FEATURE_WIN32
|
||||
+char *
|
||||
+copied_realpath(const char *pathname)
|
||||
+{
|
||||
+ char *messy, *tidy;
|
||||
+ size_t len;
|
||||
+
|
||||
+ /* realpath() supposedly can't be counted on to always return
|
||||
+ * an absolute path, so we prepend the cwd to relative paths */
|
||||
+ messy = NULL;
|
||||
+ if (pathname[0] != '/') {
|
||||
+ messy = successful_malloc(PATH_MAX + 1);
|
||||
+ if (getcwd(messy, PATH_MAX + 1) == NULL) {
|
||||
+ free(messy);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+ len = strlen(messy);
|
||||
+ snprintf(messy + len, PATH_MAX + 1 - len, "/%s", pathname);
|
||||
+ }
|
||||
+
|
||||
+ tidy = successful_malloc(PATH_MAX + 1);
|
||||
+ if (realpath((messy ? messy : pathname), tidy) == NULL) {
|
||||
+ free(messy);
|
||||
+ free(tidy);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+
|
||||
+ return tidy;
|
||||
+}
|
||||
+#endif /* LISP_FEATURE_WIN32 */
|
||||
|
||||
/* miscellaneous chattiness */
|
||||
|
||||
@@ -205,11 +236,58 @@ search_for_core ()
|
||||
return core;
|
||||
}
|
||||
|
||||
+/* Try to find the path to an executable from argv[0], this is only
|
||||
+ * used when os_get_runtime_executable_path() returns NULL */
|
||||
+#ifdef LISP_FEATURE_WIN32
|
||||
+char *
|
||||
+search_for_executable(const char *argv0)
|
||||
+{
|
||||
+ return NULL;
|
||||
+}
|
||||
+#else /* LISP_FEATURE_WIN32 */
|
||||
+char *
|
||||
+search_for_executable(const char *argv0)
|
||||
+{
|
||||
+ char *search, *start, *end, *buf;
|
||||
+
|
||||
+ /* If argv[0] contains a slash then it's probably an absolute path
|
||||
+ * or relative to the current directory, so check if it exists. */
|
||||
+ if (strchr(argv0, '/') != NULL && access(argv0, F_OK) == 0)
|
||||
+ return copied_realpath(argv0);
|
||||
+
|
||||
+ /* Bail on an absolute path which doesn't exist */
|
||||
+ if (argv0[0] == '/')
|
||||
+ return NULL;
|
||||
+
|
||||
+ /* Otherwise check if argv[0] exists relative to any directory in PATH */
|
||||
+ search = getenv("PATH");
|
||||
+ if (search == NULL)
|
||||
+ return NULL;
|
||||
+ search = copied_string(search);
|
||||
+ buf = successful_malloc(PATH_MAX + 1);
|
||||
+ for (start = search; (end = strchr(start, ':')) != NULL; start = end + 1) {
|
||||
+ *end = '\0';
|
||||
+ snprintf(buf, PATH_MAX + 1, "%s/%s", start, argv0);
|
||||
+ if (access(buf, F_OK) == 0) {
|
||||
+ free(search);
|
||||
+ search = copied_realpath(buf);
|
||||
+ free(buf);
|
||||
+ return search;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ free(search);
|
||||
+ free(buf);
|
||||
+ return NULL;
|
||||
+}
|
||||
+#endif /* LISP_FEATURE_WIN32 */
|
||||
+
|
||||
char **posix_argv;
|
||||
char *core_string;
|
||||
|
||||
struct runtime_options *runtime_options;
|
||||
|
||||
+char *saved_runtime_path = NULL;
|
||||
|
||||
int
|
||||
main(int argc, char *argv[], char *envp[])
|
||||
@@ -241,15 +319,22 @@ main(int argc, char *argv[], char *envp[])
|
||||
|
||||
runtime_options = NULL;
|
||||
|
||||
+ /* Save the argv[0] derived runtime path in case
|
||||
+ * os_get_runtime_executable_path(1) isn't able to get an
|
||||
+ * externally-usable path later on. */
|
||||
+ saved_runtime_path = search_for_executable(argv[0]);
|
||||
+
|
||||
/* Check early to see if this executable has an embedded core,
|
||||
* which also populates runtime_options if the core has runtime
|
||||
* options */
|
||||
- runtime_path = os_get_runtime_executable_path();
|
||||
- if (runtime_path) {
|
||||
- os_vm_offset_t offset = search_for_embedded_core(runtime_path);
|
||||
+ runtime_path = os_get_runtime_executable_path(0);
|
||||
+ if (runtime_path || saved_runtime_path) {
|
||||
+ os_vm_offset_t offset = search_for_embedded_core(
|
||||
+ runtime_path ? runtime_path : saved_runtime_path);
|
||||
if (offset != -1) {
|
||||
embedded_core_offset = offset;
|
||||
- core = runtime_path;
|
||||
+ core = (runtime_path ? runtime_path :
|
||||
+ copied_string(saved_runtime_path));
|
||||
} else {
|
||||
free(runtime_path);
|
||||
}
|
||||
|
11
lang/sbcl/patches/patch-src_runtime_runtime_h
Normal file
11
lang/sbcl/patches/patch-src_runtime_runtime_h
Normal file
@ -0,0 +1,11 @@
|
||||
$OpenBSD: patch-src_runtime_runtime_h,v 1.1 2009/11/17 10:45:00 pirofti Exp $
|
||||
--- src/runtime/runtime.h.orig Mon Jun 22 06:00:14 2009
|
||||
+++ src/runtime/runtime.h Mon Jun 29 07:53:42 2009
|
||||
@@ -254,4 +254,7 @@ struct runtime_options {
|
||||
size_t thread_control_stack_size;
|
||||
};
|
||||
|
||||
+/* saved runtime path computed from argv[0] */
|
||||
+extern char *saved_runtime_path;
|
||||
+
|
||||
#endif /* _SBCL_RUNTIME_H_ */
|
75
lang/sbcl/patches/patch-src_runtime_save_c
Normal file
75
lang/sbcl/patches/patch-src_runtime_save_c
Normal file
@ -0,0 +1,75 @@
|
||||
$OpenBSD: patch-src_runtime_save_c,v 1.1 2009/11/17 10:45:00 pirofti Exp $
|
||||
|
||||
Fall back to saved_runtime_path if os_get_runtime_executable_path(0)
|
||||
returns NULL.
|
||||
|
||||
Search for the current build_id when loading the runtime from disk to
|
||||
save an executable core. This provided some protection against
|
||||
accidentally embedding a core in the wrong runtime, which may be more
|
||||
likely when using saved_runtime_path.
|
||||
|
||||
--- src/runtime/save.c.orig Sat Jan 17 02:43:57 2009
|
||||
+++ src/runtime/save.c Mon Jun 29 07:53:42 2009
|
||||
@@ -376,6 +376,25 @@ save_to_filehandle(FILE *file, char *filename, lispobj
|
||||
exit(0);
|
||||
}
|
||||
|
||||
+/* Check if the build_id for the current runtime is present in a
|
||||
+ * buffer. */
|
||||
+int
|
||||
+check_runtime_build_id(void *buf, size_t size)
|
||||
+{
|
||||
+ size_t idlen;
|
||||
+ char *pos;
|
||||
+
|
||||
+ idlen = strlen(build_id) - 1;
|
||||
+ while ((pos = memchr(buf, build_id[0], size)) != NULL) {
|
||||
+ size -= (pos + 1) - (char *)buf;
|
||||
+ buf = (pos + 1);
|
||||
+ if (idlen <= size && memcmp(buf, build_id + 1, idlen) == 0)
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
/* Slurp the executable portion of the runtime into a malloced buffer
|
||||
* and return it. Places the size in bytes of the runtime into
|
||||
* 'size_out'. Returns NULL if the runtime cannot be loaded from
|
||||
@@ -407,6 +426,12 @@ load_runtime(char *runtime_path, size_t *size_out)
|
||||
goto lose;
|
||||
}
|
||||
|
||||
+ if (!check_runtime_build_id(buf, size)) {
|
||||
+ fprintf(stderr, "Failed to locate current build_id in runtime: %s\n",
|
||||
+ runtime_path);
|
||||
+ goto lose;
|
||||
+ }
|
||||
+
|
||||
fclose(input);
|
||||
*size_out = size;
|
||||
return buf;
|
||||
@@ -453,15 +478,19 @@ prepare_to_save(char *filename, boolean prepend_runtim
|
||||
char *runtime_path;
|
||||
|
||||
if (prepend_runtime) {
|
||||
- runtime_path = os_get_runtime_executable_path();
|
||||
+ runtime_path = os_get_runtime_executable_path(0);
|
||||
|
||||
- if (runtime_path == NULL) {
|
||||
+ if (runtime_path == NULL && saved_runtime_path == NULL) {
|
||||
fprintf(stderr, "Unable to get default runtime path.\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
- *runtime_bytes = load_runtime(runtime_path, runtime_size);
|
||||
- free(runtime_path);
|
||||
+ if (runtime_path == NULL)
|
||||
+ *runtime_bytes = load_runtime(saved_runtime_path, runtime_size);
|
||||
+ else {
|
||||
+ *runtime_bytes = load_runtime(runtime_path, runtime_size);
|
||||
+ free(runtime_path);
|
||||
+ }
|
||||
|
||||
if (*runtime_bytes == NULL)
|
||||
return 0;
|
@ -1,12 +0,0 @@
|
||||
$OpenBSD: patch-tests_subr.sh,v 1.1.1.1 2008/04/14 12:29:40 deanna Exp $
|
||||
--- tests/subr.sh.orig Fri Dec 28 11:46:57 2007
|
||||
+++ tests/subr.sh Thu Apr 10 14:13:34 2008
|
||||
@@ -29,7 +29,7 @@ set -a # export all variables at assignment-time.
|
||||
SBCL_HOME="$SBCL_PWD/../contrib"
|
||||
SBCL_CORE="$SBCL_PWD/../output/sbcl.core"
|
||||
SBCL_RUNTIME="$SBCL_PWD/../src/runtime/sbcl"
|
||||
-SBCL_ARGS="--noinform --no-sysinit --no-userinit --noprint --disable-debugger"
|
||||
+SBCL_ARGS="--noinform --dynamic-space-size 600 --no-sysinit --no-userinit --noprint --disable-debugger"
|
||||
|
||||
# Scripts that use these variables should quote them.
|
||||
TEST_BASENAME="$(basename $0)"
|
17
lang/sbcl/patches/patch-tests_timer_impure_lisp
Normal file
17
lang/sbcl/patches/patch-tests_timer_impure_lisp
Normal file
@ -0,0 +1,17 @@
|
||||
$OpenBSD: patch-tests_timer_impure_lisp,v 1.1 2009/11/17 10:45:00 pirofti Exp $
|
||||
|
||||
The timer scheduler seems to only run one timer per SIGALRM and
|
||||
OpenBSD only delivers ~50 SIGALRMs per second, so it takes ~5 secs to
|
||||
trigger 200 timers.
|
||||
|
||||
--- tests/timer.impure.lisp.orig Mon Apr 6 01:54:27 2009
|
||||
+++ tests/timer.impure.lisp Thu Jun 4 07:31:02 2009
|
||||
@@ -159,7 +159,7 @@
|
||||
(let ((time (1+ (get-universal-time))))
|
||||
(loop repeat 200 do
|
||||
(schedule-timer (make-timer (lambda ())) time :absolute-p t))
|
||||
- (sleep 2)
|
||||
+ (sleep 6)
|
||||
(assert (zerop (length (sb-impl::%pqueue-contents sb-impl::*schedule*))))))
|
||||
|
||||
(with-test (:name (:with-timeout :timeout))
|
2
lang/sbcl/pkg/PFRAG.i386
Normal file
2
lang/sbcl/pkg/PFRAG.i386
Normal file
@ -0,0 +1,2 @@
|
||||
@comment $OpenBSD: PFRAG.i386,v 1.1 2009/11/17 10:45:00 pirofti Exp $
|
||||
lib/sbcl/sb-rotate-byte/x86-vm.fasl
|
@ -1,5 +1,6 @@
|
||||
@comment $OpenBSD: PLIST,v 1.1.1.1 2008/04/14 12:29:40 deanna Exp $
|
||||
bin/sbcl
|
||||
@comment $OpenBSD: PLIST,v 1.2 2009/11/17 10:45:00 pirofti Exp $
|
||||
%%i386%%
|
||||
@bin bin/sbcl
|
||||
@info info/asdf.info
|
||||
@info info/sbcl.info
|
||||
lib/sbcl/
|
||||
@ -83,7 +84,14 @@ lib/sbcl/sb-grovel/foreign-glue.lisp
|
||||
lib/sbcl/sb-grovel/sb-grovel.asd
|
||||
lib/sbcl/sb-grovel/sb-grovel.fasl
|
||||
lib/sbcl/sb-introspect/
|
||||
lib/sbcl/sb-introspect/introspect.fasl
|
||||
lib/sbcl/sb-introspect/introspect.lisp
|
||||
lib/sbcl/sb-introspect/sb-introspect.asd
|
||||
lib/sbcl/sb-introspect/sb-introspect.fasl
|
||||
lib/sbcl/sb-introspect/test-driver.lisp
|
||||
lib/sbcl/sb-introspect/test.lisp
|
||||
lib/sbcl/sb-introspect/xref-test-data.lisp
|
||||
lib/sbcl/sb-introspect/xref-test.lisp
|
||||
lib/sbcl/sb-md5/
|
||||
lib/sbcl/sb-md5/md5-tests.lisp
|
||||
lib/sbcl/sb-md5/md5.fasl
|
||||
@ -104,6 +112,8 @@ lib/sbcl/sb-posix/macros.lisp
|
||||
lib/sbcl/sb-posix/posix-tests.lisp
|
||||
lib/sbcl/sb-posix/sb-posix.asd
|
||||
lib/sbcl/sb-posix/sb-posix.fasl
|
||||
lib/sbcl/sb-queue/
|
||||
lib/sbcl/sb-queue/sb-queue.fasl
|
||||
lib/sbcl/sb-rotate-byte/
|
||||
lib/sbcl/sb-rotate-byte/compiler.fasl
|
||||
lib/sbcl/sb-rotate-byte/compiler.lisp
|
||||
@ -115,7 +125,6 @@ lib/sbcl/sb-rotate-byte/rotate-byte.fasl
|
||||
lib/sbcl/sb-rotate-byte/rotate-byte.lisp
|
||||
lib/sbcl/sb-rotate-byte/sb-rotate-byte.asd
|
||||
lib/sbcl/sb-rotate-byte/sb-rotate-byte.fasl
|
||||
lib/sbcl/sb-rotate-byte/x86-vm.fasl
|
||||
lib/sbcl/sb-rotate-byte/x86-vm.lisp
|
||||
lib/sbcl/sb-rt/
|
||||
lib/sbcl/sb-rt/rt.fasl
|
||||
@ -162,7 +171,6 @@ share/doc/sbcl/BUGS
|
||||
share/doc/sbcl/COPYING
|
||||
share/doc/sbcl/CREDITS
|
||||
share/doc/sbcl/NEWS
|
||||
share/doc/sbcl/SUPPORT
|
||||
share/doc/sbcl/asdf.pdf
|
||||
share/doc/sbcl/html/
|
||||
share/doc/sbcl/html/asdf/
|
||||
@ -192,8 +200,7 @@ share/doc/sbcl/html/asdf/missing-bits-in-implementation.html
|
||||
share/doc/sbcl/html/sbcl/
|
||||
share/doc/sbcl/html/sbcl/ANSI-Conformance.html
|
||||
share/doc/sbcl/html/sbcl/Accessing-Foreign-Values.html
|
||||
share/doc/sbcl/html/sbcl/Additional-Distributed-Documentation.html
|
||||
share/doc/sbcl/html/sbcl/Automatic-Recompilation-of-Stale-Fasls.html
|
||||
share/doc/sbcl/html/sbcl/Additional-Documentation-Files.html
|
||||
share/doc/sbcl/html/sbcl/Beyond-the-ANSI-Standard.html
|
||||
share/doc/sbcl/html/sbcl/Binary-stream-methods.html
|
||||
share/doc/sbcl/html/sbcl/Bivalent-Streams.html
|
||||
@ -214,6 +221,7 @@ share/doc/sbcl/html/sbcl/Class-sb_002dgray_003afundamental_002dcharacter_002dstr
|
||||
share/doc/sbcl/html/sbcl/Class-sb_002dgray_003afundamental_002dinput_002dstream.html
|
||||
share/doc/sbcl/html/sbcl/Class-sb_002dgray_003afundamental_002doutput_002dstream.html
|
||||
share/doc/sbcl/html/sbcl/Class-sb_002dgray_003afundamental_002dstream.html
|
||||
share/doc/sbcl/html/sbcl/Class-sb_002dposix_003aflock.html
|
||||
share/doc/sbcl/html/sbcl/Class-sb_002dposix_003apasswd.html
|
||||
share/doc/sbcl/html/sbcl/Class-sb_002dposix_003astat.html
|
||||
share/doc/sbcl/html/sbcl/Class-sb_002dposix_003atermios.html
|
||||
@ -222,6 +230,7 @@ share/doc/sbcl/html/sbcl/Coercing-Foreign-Values.html
|
||||
share/doc/sbcl/html/sbcl/Colophon.html
|
||||
share/doc/sbcl/html/sbcl/Command-Line-Options.html
|
||||
share/doc/sbcl/html/sbcl/Command_002dline-arguments.html
|
||||
share/doc/sbcl/html/sbcl/Commercial-Support.html
|
||||
share/doc/sbcl/html/sbcl/Common-Lisp-Books.html
|
||||
share/doc/sbcl/html/sbcl/Compiler-Errors.html
|
||||
share/doc/sbcl/html/sbcl/Compiler-Policy.html
|
||||
@ -235,6 +244,7 @@ share/doc/sbcl/html/sbcl/Condition-sb_002dext_003apackage_002dlocked_002derror.h
|
||||
share/doc/sbcl/html/sbcl/Condition-sb_002dext_003asymbol_002dpackage_002dlocked_002derror.html
|
||||
share/doc/sbcl/html/sbcl/Condition-sb_002dthread_003ainterrupt_002dthread_002derror.html
|
||||
share/doc/sbcl/html/sbcl/Condition-sb_002dthread_003ajoin_002dthread_002derror.html
|
||||
share/doc/sbcl/html/sbcl/Condition-sb_002dthread_003athread_002derror.html
|
||||
share/doc/sbcl/html/sbcl/Contributed-Modules.html
|
||||
share/doc/sbcl/html/sbcl/Controlling-Verbosity.html
|
||||
share/doc/sbcl/html/sbcl/Customization-Hooks-for-Users.html
|
||||
@ -265,6 +275,7 @@ share/doc/sbcl/html/sbcl/Exiting-Commands.html
|
||||
share/doc/sbcl/html/sbcl/Extensible-Streams.html
|
||||
share/doc/sbcl/html/sbcl/Extensions.html
|
||||
share/doc/sbcl/html/sbcl/External-Foreign-Variables.html
|
||||
share/doc/sbcl/html/sbcl/FASL-Format.html
|
||||
share/doc/sbcl/html/sbcl/File_002ddescriptors.html
|
||||
share/doc/sbcl/html/sbcl/Filenames.html
|
||||
share/doc/sbcl/html/sbcl/Foreign-Data-Structure-Examples.html
|
||||
@ -275,12 +286,14 @@ share/doc/sbcl/html/sbcl/Foreign-Type-Specifiers.html
|
||||
share/doc/sbcl/html/sbcl/Foreign-Types-and-Lisp-Types.html
|
||||
share/doc/sbcl/html/sbcl/Foreign-Types.html
|
||||
share/doc/sbcl/html/sbcl/Foreign-Variables.html
|
||||
share/doc/sbcl/html/sbcl/Foreign-threads.html
|
||||
share/doc/sbcl/html/sbcl/Function-Index.html
|
||||
share/doc/sbcl/html/sbcl/Function-Names.html
|
||||
share/doc/sbcl/html/sbcl/Function-Parameters.html
|
||||
share/doc/sbcl/html/sbcl/Function-Return-Values.html
|
||||
share/doc/sbcl/html/sbcl/Function-Tracing.html
|
||||
share/doc/sbcl/html/sbcl/Function-common_002dlisp_003aed.html
|
||||
share/doc/sbcl/html/sbcl/Function-common_002dlisp_003amake_002dhash_002dtable.html
|
||||
share/doc/sbcl/html/sbcl/Function-common_002dlisp_003arequire.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dalien_003aload_002dshared_002dobject.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dbsd_002dsockets_003aget_002dhost_002dby_002daddress.html
|
||||
@ -305,8 +318,11 @@ share/doc/sbcl/html/sbcl/Function-sb_002dcover_003arestore_002dcoverage_002dfrom
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dcover_003asave_002dcoverage.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dcover_003asave_002dcoverage_002din_002dfile.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dext_003aadd_002dimplementation_002dpackage.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dext_003aarray_002dstorage_002dvector.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dext_003acancel_002dfinalization.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dext_003afinalize.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dext_003ahash_002dtable_002dsynchronized_002dp.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dext_003ahash_002dtable_002dweakness.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dext_003alist_002dall_002dtimers.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dext_003alock_002dpackage.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dext_003amake_002dtimer.html
|
||||
@ -344,11 +360,21 @@ share/doc/sbcl/html/sbcl/Function-sb_002dmd5_003amd5sum_002dfile.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dmd5_003amd5sum_002dsequence.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dmd5_003amd5sum_002dstream.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dmd5_003amd5sum_002dstring.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dposix_003afile_002ddescriptor.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dposix_003afilename.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dposix_003agetcwd.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dposix_003areadlink.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dposix_003asyslog.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dprofile_003areport.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dprofile_003areset.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dqueue_003adequeue.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dqueue_003aenqueue.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dqueue_003alist_002dqueue_002dcontents.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dqueue_003amake_002dqueue.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dqueue_003aqueue_002dcount.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dqueue_003aqueue_002dempty_002dp.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dqueue_003aqueue_002dname.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dqueue_003aqueuep.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002drotate_002dbyte_003arotate_002dbyte.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dsprof_003aprofile_002dcall_002dcounts.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dsprof_003areport.html
|
||||
@ -361,9 +387,7 @@ share/doc/sbcl/html/sbcl/Function-sb_002dthread_003acondition_002dnotify.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003acondition_002dwait.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003aget_002dmutex.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003ainterrupt_002dthread.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003ainterrupt_002dthread_002derror_002dthread.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003ajoin_002dthread.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003ajoin_002dthread_002derror_002dthread.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003alist_002dall_002dthreads.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003amake_002dmutex.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003amake_002dsemaphore.html
|
||||
@ -375,8 +399,11 @@ share/doc/sbcl/html/sbcl/Function-sb_002dthread_003arelease_002dmutex.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003asemaphore_002dcount.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003asemaphore_002dname.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003asignal_002dsemaphore.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003asymbol_002dvalue_002din_002dthread.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003aterminate_002dthread.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003athread_002dalive_002dp.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003athread_002derror_002dthread.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003athread_002dname.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003athread_002dyield.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003await_002don_002dsemaphore.html
|
||||
share/doc/sbcl/html/sbcl/Function-sb_002dthread_003awaitqueue_002dname.html
|
||||
@ -423,10 +450,13 @@ share/doc/sbcl/html/sbcl/Generic_002dFunction-sb_002dgray_003astream_002dwrite_0
|
||||
share/doc/sbcl/html/sbcl/Generic_002dFunction-sb_002dgray_003astream_002dwrite_002dsequence.html
|
||||
share/doc/sbcl/html/sbcl/Generic_002dFunction-sb_002dgray_003astream_002dwrite_002dstring.html
|
||||
share/doc/sbcl/html/sbcl/Getting-Existing-Programs-to-Run.html
|
||||
share/doc/sbcl/html/sbcl/Getting-Support-and-Reporting-Bugs.html
|
||||
share/doc/sbcl/html/sbcl/Global-and-Always_002dBound-variables.html
|
||||
share/doc/sbcl/html/sbcl/Gray-Streams-classes.html
|
||||
share/doc/sbcl/html/sbcl/Gray-Streams-examples.html
|
||||
share/doc/sbcl/html/sbcl/Gray-Streams.html
|
||||
share/doc/sbcl/html/sbcl/Handling-of-Types.html
|
||||
share/doc/sbcl/html/sbcl/Hash-Table-Extensions.html
|
||||
share/doc/sbcl/html/sbcl/History-and-Implementation-of-SBCL.html
|
||||
share/doc/sbcl/html/sbcl/How-Arguments-are-Printed.html
|
||||
share/doc/sbcl/html/sbcl/How-the-Source-is-Found.html
|
||||
@ -434,10 +464,8 @@ share/doc/sbcl/html/sbcl/INET-Domain-Sockets.html
|
||||
share/doc/sbcl/html/sbcl/Idiosyncrasies.html
|
||||
share/doc/sbcl/html/sbcl/Implementation-Limitations.html
|
||||
share/doc/sbcl/html/sbcl/Implementation-Packages.html
|
||||
share/doc/sbcl/html/sbcl/Implementation-_0028Linux-x86_0029.html
|
||||
share/doc/sbcl/html/sbcl/Implementation-_0028Linux-x86_002fx86_002d64_0029.html
|
||||
share/doc/sbcl/html/sbcl/Information-Commands.html
|
||||
share/doc/sbcl/html/sbcl/Initialization-Examples.html
|
||||
share/doc/sbcl/html/sbcl/Initialization-File-Semantics.html
|
||||
share/doc/sbcl/html/sbcl/Initialization-Files.html
|
||||
share/doc/sbcl/html/sbcl/Initialization-and-Exit-Hooks.html
|
||||
share/doc/sbcl/html/sbcl/Input-stream-methods.html
|
||||
@ -456,6 +484,9 @@ share/doc/sbcl/html/sbcl/Local-_0028Unix_0029-Domain-Sockets.html
|
||||
share/doc/sbcl/html/sbcl/Macro-common_002dlisp_003astep.html
|
||||
share/doc/sbcl/html/sbcl/Macro-common_002dlisp_003atrace.html
|
||||
share/doc/sbcl/html/sbcl/Macro-common_002dlisp_003auntrace.html
|
||||
share/doc/sbcl/html/sbcl/Macro-sb_002dext_003adefglobal.html
|
||||
share/doc/sbcl/html/sbcl/Macro-sb_002dext_003adefine_002dhash_002dtable_002dtest.html
|
||||
share/doc/sbcl/html/sbcl/Macro-sb_002dext_003awith_002dlocked_002dhash_002dtable.html
|
||||
share/doc/sbcl/html/sbcl/Macro-sb_002dext_003awith_002dunlocked_002dpackages.html
|
||||
share/doc/sbcl/html/sbcl/Macro-sb_002dext_003awithout_002dpackage_002dlocks.html
|
||||
share/doc/sbcl/html/sbcl/Macro-sb_002dprofile_003aprofile.html
|
||||
@ -465,7 +496,10 @@ share/doc/sbcl/html/sbcl/Macro-sb_002dsprof_003awith_002dsampling.html
|
||||
share/doc/sbcl/html/sbcl/Macro-sb_002dthread_003awith_002dmutex.html
|
||||
share/doc/sbcl/html/sbcl/Macro-sb_002dthread_003awith_002drecursive_002dlock.html
|
||||
share/doc/sbcl/html/sbcl/Metaobject-Protocol.html
|
||||
share/doc/sbcl/html/sbcl/Method-sb_002dbsd_002dsockets_003asocket_002dmake_002dstream-_0028_0028socket-socket_0029-_0026key-input-output-_0028element_002dtype-_0027character_0029-_0028buffering-full_0029-_0028external_002dformat-default_0029-timeout_0029.html
|
||||
share/doc/sbcl/html/sbcl/Methods-common-to-all-streams.html
|
||||
share/doc/sbcl/html/sbcl/Miscellaneous-Efficiency-Issues.html
|
||||
share/doc/sbcl/html/sbcl/Miscellaneous-Extensions.html
|
||||
share/doc/sbcl/html/sbcl/Modular-arithmetic.html
|
||||
share/doc/sbcl/html/sbcl/More-Common-Lisp-Information.html
|
||||
share/doc/sbcl/html/sbcl/More-SBCL-Information.html
|
||||
@ -492,6 +526,7 @@ share/doc/sbcl/html/sbcl/Profiling.html
|
||||
share/doc/sbcl/html/sbcl/Querying-the-process-environment.html
|
||||
share/doc/sbcl/html/sbcl/Quit.html
|
||||
share/doc/sbcl/html/sbcl/Read-Errors.html
|
||||
share/doc/sbcl/html/sbcl/Reporting-Bugs.html
|
||||
share/doc/sbcl/html/sbcl/Resolution-of-Name-Conflicts.html
|
||||
share/doc/sbcl/html/sbcl/Running-external-programs.html
|
||||
share/doc/sbcl/html/sbcl/Running-from-Emacs.html
|
||||
@ -504,6 +539,7 @@ share/doc/sbcl/html/sbcl/Sessions_002fDebugging.html
|
||||
share/doc/sbcl/html/sbcl/Shebang-Scripts.html
|
||||
share/doc/sbcl/html/sbcl/Simple-Streams.html
|
||||
share/doc/sbcl/html/sbcl/Single-Stepping.html
|
||||
share/doc/sbcl/html/sbcl/Slot-access.html
|
||||
share/doc/sbcl/html/sbcl/Socket-Options.html
|
||||
share/doc/sbcl/html/sbcl/Sockets-Overview.html
|
||||
share/doc/sbcl/html/sbcl/Source-Location-Availability.html
|
||||
@ -519,13 +555,13 @@ share/doc/sbcl/html/sbcl/Statistical-Profiler.html
|
||||
share/doc/sbcl/html/sbcl/Step_002dBy_002dStep-Example-of-the-Foreign-Function-Interface.html
|
||||
share/doc/sbcl/html/sbcl/Stopping-SBCL.html
|
||||
share/doc/sbcl/html/sbcl/Structure-sb_002dext_003atimer.html
|
||||
share/doc/sbcl/html/sbcl/Structure-sb_002dqueue_003aqueue.html
|
||||
share/doc/sbcl/html/sbcl/Structure-sb_002dthread_003amutex.html
|
||||
share/doc/sbcl/html/sbcl/Structure-sb_002dthread_003asemaphore.html
|
||||
share/doc/sbcl/html/sbcl/Structure-sb_002dthread_003athread.html
|
||||
share/doc/sbcl/html/sbcl/Structure-sb_002dthread_003awaitqueue.html
|
||||
share/doc/sbcl/html/sbcl/Style-Warnings.html
|
||||
share/doc/sbcl/html/sbcl/Support-For-Unix.html
|
||||
share/doc/sbcl/html/sbcl/System-Initialization-File.html
|
||||
share/doc/sbcl/html/sbcl/The-Original-and-Actual-Source.html
|
||||
share/doc/sbcl/html/sbcl/The-Parts-of-a-Compiler-Diagnostic.html
|
||||
share/doc/sbcl/html/sbcl/The-Processing-Path.html
|
||||
@ -539,12 +575,13 @@ share/doc/sbcl/html/sbcl/Tools-To-Help-Developers.html
|
||||
share/doc/sbcl/html/sbcl/Toplevel-Options.html
|
||||
share/doc/sbcl/html/sbcl/Type-Errors-at-Compile-Time.html
|
||||
share/doc/sbcl/html/sbcl/Type-Index.html
|
||||
share/doc/sbcl/html/sbcl/Type-conversion-functions.html
|
||||
share/doc/sbcl/html/sbcl/Type-sb_002dposix_003afile_002ddescriptor.html
|
||||
share/doc/sbcl/html/sbcl/Type-sb_002dposix_003afile_002ddescriptor_002ddesignator.html
|
||||
share/doc/sbcl/html/sbcl/Type-sb_002dposix_003afilename.html
|
||||
share/doc/sbcl/html/sbcl/Type-sb_002dposix_003afilename_002ddesignator.html
|
||||
share/doc/sbcl/html/sbcl/Types.html
|
||||
share/doc/sbcl/html/sbcl/Understanding-Compiler-Diagnostics.html
|
||||
share/doc/sbcl/html/sbcl/Unix_002dstyle-Command-Line-Protocol.html
|
||||
share/doc/sbcl/html/sbcl/Unknown-Locations-and-Interrupts.html
|
||||
share/doc/sbcl/html/sbcl/User-Initialization-File.html
|
||||
share/doc/sbcl/html/sbcl/Variable-Access.html
|
||||
share/doc/sbcl/html/sbcl/Variable-Index.html
|
||||
share/doc/sbcl/html/sbcl/Variable-Value-Availability.html
|
||||
@ -561,10 +598,13 @@ share/doc/sbcl/html/sbcl/Variable-sb_002dext_003a_002aexit_002dhooks_002a.html
|
||||
share/doc/sbcl/html/sbcl/Variable-sb_002dext_003a_002ainit_002dhooks_002a.html
|
||||
share/doc/sbcl/html/sbcl/Variable-sb_002dext_003a_002ainvoke_002ddebugger_002dhook_002a.html
|
||||
share/doc/sbcl/html/sbcl/Variable-sb_002dext_003a_002amodule_002dprovider_002dfunctions_002a.html
|
||||
share/doc/sbcl/html/sbcl/Variable-sb_002dext_003a_002amuffled_002dwarnings_002a.html
|
||||
share/doc/sbcl/html/sbcl/Variable-sb_002dext_003a_002asave_002dhooks_002a.html
|
||||
share/doc/sbcl/html/sbcl/Variable-sb_002dext_003a_002astack_002dallocate_002ddynamic_002dextent_002a.html
|
||||
share/doc/sbcl/html/sbcl/Variable-sb_002dsprof_003a_002amax_002dsamples_002a.html
|
||||
share/doc/sbcl/html/sbcl/Variable-sb_002dsprof_003a_002asample_002dinterval_002a.html
|
||||
share/doc/sbcl/html/sbcl/Variable-sb_002dthread_003a_002acurrent_002dthread_002a.html
|
||||
share/doc/sbcl/html/sbcl/Volunteer-Support.html
|
||||
share/doc/sbcl/html/sbcl/Waitqueue_002fcondition-variables.html
|
||||
share/doc/sbcl/html/sbcl/define_002dalien_002droutine-Example.html
|
||||
share/doc/sbcl/html/sbcl/index.html
|
||||
@ -573,5 +613,6 @@ share/doc/sbcl/html/sbcl/sb_002dcover.html
|
||||
share/doc/sbcl/html/sbcl/sb_002dgrovel.html
|
||||
share/doc/sbcl/html/sbcl/sb_002dmd5.html
|
||||
share/doc/sbcl/html/sbcl/sb_002dposix.html
|
||||
share/doc/sbcl/html/sbcl/sb_002dqueue.html
|
||||
share/doc/sbcl/html/sbcl/sb_002drotate_002dbyte.html
|
||||
share/doc/sbcl/sbcl.pdf
|
||||
|
Loading…
Reference in New Issue
Block a user