The following patch updates lang/sbcl to 1.0.31. Notable changes include amd64 support, switching the host lisp from a static binary to clisp, removal of the /proc requirement for embedded cores, and default memory allocation sizes that are compatible with the default resource limits.
Note that this patch add and deletes a few files. Index: Makefile =================================================================== RCS file: /home/cvsync/openbsd/ports/lang/sbcl/Makefile,v retrieving revision 1.2 diff -u -N Makefile --- Makefile 15 Apr 2008 12:07:31 -0000 1.2 +++ Makefile 1 Sep 2009 22:49:45 -0000 @@ -1,11 +1,11 @@ # $OpenBSD: Makefile,v 1.2 2008/04/15 12:07:31 deanna 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 @@ CATEGORIES= lang HOMEPAGE= http://www.sbcl.org/ -MAINTAINER= Josh Elsasser <j...@elsasser.org> +MAINTAINER = Joshua Elsasser <jos...@elsasser.org> # Public domain and BSD PERMIT_PACKAGE_CDROM= Yes @@ -24,49 +24,35 @@ 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 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 @@ ${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 Index: distinfo =================================================================== RCS file: /home/cvsync/openbsd/ports/lang/sbcl/distinfo,v retrieving revision 1.1.1.1 diff -u -N distinfo --- distinfo 14 Apr 2008 12:29:40 -0000 1.1.1.1 +++ distinfo 27 Aug 2009 20:41:06 -0000 @@ -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 Index: patches/patch-contrib_asdf-module.mk =================================================================== RCS file: /home/cvsync/openbsd/ports/lang/sbcl/patches/patch-contrib_asdf-module.mk,v retrieving revision 1.1.1.1 diff -u -N patches/patch-contrib_asdf-module.mk --- patches/patch-contrib_asdf-module.mk 14 Apr 2008 12:29:40 -0000 1.1.1.1 +++ patches/patch-contrib_asdf-module.mk 8 Jul 2009 01:03:47 -0000 @@ -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 + +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 @@ $(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)" Index: patches/patch-contrib_vanilla-module.mk =================================================================== RCS file: /home/cvsync/openbsd/ports/lang/sbcl/patches/patch-contrib_vanilla-module.mk,v retrieving revision 1.1.1.1 diff -u -N patches/patch-contrib_vanilla-module.mk --- patches/patch-contrib_vanilla-module.mk 14 Apr 2008 12:29:40 -0000 1.1.1.1 +++ patches/patch-contrib_vanilla-module.mk 8 Jul 2009 00:47:16 -0000 @@ -1,4 +1,7 @@ $OpenBSD: patch-contrib_vanilla-module.mk,v 1.1.1.1 2008/04/14 12:29:40 deanna 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 @@ Index: patches/patch-make-target-contrib.sh =================================================================== RCS file: /home/cvsync/openbsd/ports/lang/sbcl/patches/patch-make-target-contrib.sh,v retrieving revision 1.1.1.1 diff -u -N patches/patch-make-target-contrib.sh --- patches/patch-make-target-contrib.sh 14 Apr 2008 12:29:40 -0000 1.1.1.1 +++ patches/patch-make-target-contrib.sh 8 Jul 2009 01:03:48 -0000 @@ -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 + +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 @@ 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 Index: patches/patch-src_code_common-os_lisp =================================================================== RCS file: patches/patch-src_code_common-os_lisp diff -u -N patches/patch-src_code_common-os_lisp --- /dev/null 1 Sep 2009 15:57:41 -0000 +++ patches/patch-src_code_common-os_lisp 8 Jul 2009 01:57:43 -0000 @@ -0,0 +1,30 @@ +$OpenBSD$ + +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")) Index: patches/patch-src_compiler_ir1util_lisp =================================================================== RCS file: patches/patch-src_compiler_ir1util_lisp diff -u -N patches/patch-src_compiler_ir1util_lisp --- /dev/null 1 Sep 2009 15:57:41 -0000 +++ patches/patch-src_compiler_ir1util_lisp 8 Jul 2009 01:09:23 -0000 @@ -0,0 +1,15 @@ +$OpenBSD$ + +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)) Index: patches/patch-src_runtime_Config.x86-openbsd =================================================================== RCS file: /home/cvsync/openbsd/ports/lang/sbcl/patches/patch-src_runtime_Config.x86-openbsd,v retrieving revision 1.1.1.1 diff -u -N patches/patch-src_runtime_Config.x86-openbsd --- patches/patch-src_runtime_Config.x86-openbsd 14 Apr 2008 12:29:40 -0000 1.1.1.1 +++ patches/patch-src_runtime_Config.x86-openbsd 8 Jul 2009 01:28:42 -0000 @@ -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 +--- 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/"' Index: patches/patch-src_runtime_GNUmakefile =================================================================== RCS file: /home/cvsync/openbsd/ports/lang/sbcl/patches/patch-src_runtime_GNUmakefile,v retrieving revision 1.1.1.1 diff -u -N patches/patch-src_runtime_GNUmakefile --- patches/patch-src_runtime_GNUmakefile 14 Apr 2008 12:29:40 -0000 1.1.1.1 +++ patches/patch-src_runtime_GNUmakefile 3 Apr 2009 04:24:52 -0000 @@ -6,7 +6,7 @@ GREP = grep -CFLAGS = -g -Wall -Wsign-compare -O3 -+CFLAGS += -Wsign-compare ++CFLAGS += -Wall -Wsign-compare ASFLAGS = $(CFLAGS) CPPFLAGS = -I. Index: patches/patch-src_runtime_bsd-os_c =================================================================== RCS file: patches/patch-src_runtime_bsd-os_c diff -u -N patches/patch-src_runtime_bsd-os_c --- /dev/null 1 Sep 2009 15:57:41 -0000 +++ patches/patch-src_runtime_bsd-os_c 8 Jul 2009 01:52:32 -0000 @@ -0,0 +1,29 @@ +$OpenBSD$ + +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 * Index: patches/patch-src_runtime_gc-common.c =================================================================== RCS file: /home/cvsync/openbsd/ports/lang/sbcl/patches/patch-src_runtime_gc-common.c,v retrieving revision 1.1.1.1 diff -u -N patches/patch-src_runtime_gc-common.c --- patches/patch-src_runtime_gc-common.c 14 Apr 2008 12:29:40 -0000 1.1.1.1 +++ /dev/null 1 Sep 2009 21:13:22 -0000 @@ -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) { Index: patches/patch-src_runtime_os_h =================================================================== RCS file: patches/patch-src_runtime_os_h diff -u -N patches/patch-src_runtime_os_h --- /dev/null 1 Sep 2009 15:57:41 -0000 +++ patches/patch-src_runtime_os_h 29 Jun 2009 14:54:29 -0000 @@ -0,0 +1,11 @@ +$OpenBSD$ +--- 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 Index: patches/patch-src_runtime_runtime.c =================================================================== RCS file: /home/cvsync/openbsd/ports/lang/sbcl/patches/patch-src_runtime_runtime.c,v retrieving revision 1.1.1.1 diff -u -N patches/patch-src_runtime_runtime.c --- patches/patch-src_runtime_runtime.c 14 Apr 2008 12:29:40 -0000 1.1.1.1 +++ patches/patch-src_runtime_runtime.c 8 Jul 2009 01:51:04 -0000 @@ -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"); + +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); + } Index: patches/patch-src_runtime_runtime_h =================================================================== RCS file: patches/patch-src_runtime_runtime_h diff -u -N patches/patch-src_runtime_runtime_h --- /dev/null 1 Sep 2009 15:57:41 -0000 +++ patches/patch-src_runtime_runtime_h 29 Jun 2009 14:54:29 -0000 @@ -0,0 +1,11 @@ +$OpenBSD$ +--- 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_ */ Index: patches/patch-src_runtime_save_c =================================================================== RCS file: patches/patch-src_runtime_save_c diff -u -N patches/patch-src_runtime_save_c --- /dev/null 1 Sep 2009 15:57:41 -0000 +++ patches/patch-src_runtime_save_c 8 Jul 2009 02:09:49 -0000 @@ -0,0 +1,75 @@ +$OpenBSD$ + +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; Index: patches/patch-tests_subr.sh =================================================================== RCS file: /home/cvsync/openbsd/ports/lang/sbcl/patches/patch-tests_subr.sh,v retrieving revision 1.1.1.1 diff -u -N patches/patch-tests_subr.sh --- patches/patch-tests_subr.sh 14 Apr 2008 12:29:40 -0000 1.1.1.1 +++ /dev/null 1 Sep 2009 21:13:22 -0000 @@ -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)" Index: patches/patch-tests_timer_impure_lisp =================================================================== RCS file: patches/patch-tests_timer_impure_lisp diff -u -N patches/patch-tests_timer_impure_lisp --- /dev/null 1 Sep 2009 15:57:41 -0000 +++ patches/patch-tests_timer_impure_lisp 8 Jul 2009 01:16:30 -0000 @@ -0,0 +1,17 @@ +$OpenBSD$ + +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)) Index: pkg/MESSAGE =================================================================== RCS file: /home/cvsync/openbsd/ports/lang/sbcl/pkg/MESSAGE,v retrieving revision 1.1.1.1 diff -u -N pkg/MESSAGE --- pkg/MESSAGE 14 Apr 2008 12:29:40 -0000 1.1.1.1 +++ /dev/null 1 Sep 2009 21:13:22 -0000 @@ -1,2 +0,0 @@ -To run or dump a copy of the SBCL runtime with an embedded core, /proc -must be mounted. Index: pkg/PFRAG.i386 =================================================================== RCS file: pkg/PFRAG.i386 diff -u -N pkg/PFRAG.i386 --- /dev/null 1 Sep 2009 15:57:41 -0000 +++ pkg/PFRAG.i386 12 Feb 2009 02:43:08 -0000 @@ -0,0 +1,2 @@ +...@comment $OpenBSD$ +lib/sbcl/sb-rotate-byte/x86-vm.fasl Index: pkg/PLIST =================================================================== RCS file: /home/cvsync/openbsd/ports/lang/sbcl/pkg/PLIST,v retrieving revision 1.1.1.1 diff -u -N pkg/PLIST --- pkg/PLIST 14 Apr 2008 12:29:40 -0000 1.1.1.1 +++ pkg/PLIST 27 Aug 2009 21:04:17 -0000 @@ -1,5 +1,6 @@ @comment $OpenBSD: PLIST,v 1.1.1.1 2008/04/14 12:29:40 deanna Exp $ -bin/sbcl +%%i386%% +...@bin bin/sbcl @info info/asdf.info @info info/sbcl.info lib/sbcl/ @@ -83,7 +84,14 @@ 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/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.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/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/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_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/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_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/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-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_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_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_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_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_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/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/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_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/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/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/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/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_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_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