Hi folks, here's a diff to correct sbcl's assumptions about struct timeval on OpenBSD i386. The second build just ended, quick testing shows no regression. I've refreshed the existing patches while here.
ok? Questions: - is someone here already dealing with upstream? If no one steps up I'll send them the patch soon (if they fix their DNS problems...) - I see subdirectories in the source code, named like "mips" or "alpha". Has anyone analyzed the work that should be done to make this port available on more architectures? Index: Makefile =================================================================== RCS file: /cvs/ports/lang/sbcl/Makefile,v retrieving revision 1.19 diff -u -p -r1.19 Makefile --- Makefile 6 Sep 2013 22:16:24 -0000 1.19 +++ Makefile 15 Sep 2013 11:06:08 -0000 @@ -2,12 +2,11 @@ # not yet ported to other arches ONLY_FOR_ARCHS = amd64 i386 powerpc -BROKEN-i386= build fails post-64-bit time_t -# ^^ logs: http://rhaalovely.net/build-failures/i386/20130901/lang/sbcl.log COMMENT= compiler and runtime system for ANSI Common Lisp V = 1.1.8 +REVISION= 0 DISTNAME= sbcl-${V}-source PKGNAME= sbcl-${V} WRKDIST= ${WRKDIR}/sbcl-${V} Index: patches/patch-contrib_asdf-module_mk =================================================================== RCS file: /cvs/ports/lang/sbcl/patches/patch-contrib_asdf-module_mk,v retrieving revision 1.1 diff -u -p -r1.1 patch-contrib_asdf-module_mk --- patches/patch-contrib_asdf-module_mk 8 Jul 2011 11:42:09 -0000 1.1 +++ patches/patch-contrib_asdf-module_mk 15 Sep 2013 12:11:41 -0000 @@ -5,9 +5,9 @@ Fix 'all' target to allow building witho 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 Mon May 9 04:49:39 2011 -+++ contrib/asdf-module.mk Fri Jul 8 13:39:44 2011 -@@ -25,7 +25,8 @@ endif +--- contrib/asdf-module.mk.orig Sun Jun 2 15:12:39 2013 ++++ contrib/asdf-module.mk Sun Sep 15 14:11:33 2013 +@@ -27,7 +27,8 @@ endif export CC SBCL EXTRA_CFLAGS EXTRA_LDFLAGS @@ -15,9 +15,9 @@ ones that are actually needed to load th +all: $(EXTRA_ALL_TARGETS) $(SYSTEM).fasl +$(SYSTEM).fasl: $(MAKE) -C ../asdf - $(SBCL) --eval '(defvar *system* "$(SYSTEM)")' --load ../asdf-stub.lisp --eval '(quit)' + $(SBCL) --eval '(defvar *system* "$(SYSTEM)")' --load ../asdf-stub.lisp --eval '(exit)' -@@ -37,5 +38,4 @@ test: all +@@ -40,5 +41,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) Index: patches/patch-make-target-contrib_sh =================================================================== RCS file: /cvs/ports/lang/sbcl/patches/patch-make-target-contrib_sh,v retrieving revision 1.2 diff -u -p -r1.2 patch-make-target-contrib_sh --- patches/patch-make-target-contrib_sh 11 Aug 2012 23:02:23 -0000 1.2 +++ patches/patch-make-target-contrib_sh 15 Sep 2013 01:47:04 -0000 @@ -4,9 +4,9 @@ Only run the contrib tests if $RUN_CONTR 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 Dec 5 00:09:01 2011 -+++ make-target-contrib.sh Sat Aug 11 16:55:34 2012 -@@ -43,6 +43,7 @@ export SBCL SBCL_BUILDING_CONTRIB +--- make-target-contrib.sh.orig Sun Jun 2 15:12:40 2013 ++++ make-target-contrib.sh Sun Sep 15 03:26:47 2013 +@@ -44,6 +44,7 @@ export SBCL SBCL_BUILDING_CONTRIB # as SB-RT and SB-GROVEL, but FIXME: there's probably a better # solution. -- CSR, 2003-05-30 @@ -14,7 +14,7 @@ to be run later in do-regress. find contrib/ \( -name '*.fasl' -o \ -name '*.FASL' -o \ -name 'foo.c' -o \ -@@ -57,6 +58,11 @@ find contrib/ \( -name '*.fasl' -o \ +@@ -58,6 +59,11 @@ find contrib/ \( -name '*.fasl' -o \ find output -name 'building-contrib.*' -print | xargs rm -f @@ -26,7 +26,7 @@ to be run later in do-regress. # Ignore all source registries. CL_SOURCE_REGISTRY='(:source-registry :ignore-inherited-configuration)' export CL_SOURCE_REGISTRY -@@ -74,7 +80,7 @@ for i in $contribs_to_build; do +@@ -75,7 +81,7 @@ for i in $contribs_to_build; do # export INSTALL_DIR=$SBCL_HOME/`basename $i ` test -f $i/test-passed && rm $i/test-passed # hack to get exit codes right. Index: patches/patch-src_code_unix_lisp =================================================================== RCS file: patches/patch-src_code_unix_lisp diff -N patches/patch-src_code_unix_lisp --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-src_code_unix_lisp 15 Sep 2013 12:18:20 -0000 @@ -0,0 +1,40 @@ +$OpenBSD$ + +Cope with 64-bit time_t. + +--- src/code/unix.lisp.orig Sun Jun 2 15:12:40 2013 ++++ src/code/unix.lisp Sun Sep 15 14:17:59 2013 +@@ -215,16 +215,19 @@ corresponds to NAME, or NIL if there is none." + (tv-sec time-t) ; seconds + (tv-usec suseconds-t))) ; and microseconds + +-;; The above definition doesn't work on 64-bit OpenBSD platforms. +-;; Both tv_sec and tv_usec are declared as long instead of time_t, and +-;; time_t is a typedef for int. +-#!+(or openbsd netbsd) ++;; The following definition was used on OpenBSD pre-5.5. ++;; Both tv_sec and tv_usec were declared as long instead of time_t, and ++;; time_t was a typedef for int. ++;; Note: time_t is 64-bit on all architectures, starting from OpenBSD 5.5. ++;; FIXME: it seems recent NetBSD releases use a 64-bit time_t too. ++#!+netbsd + (define-alien-type nil + (struct timeval + (tv-sec long) ; seconds + (tv-usec long))) ; and microseconds + +-#!+win32 ++;; OpenBSD 5.5 uses this struct layout. ++#!+(or win32 openbsd) + (define-alien-type nil + (struct timeval + (tv-sec time-t) ; seconds +@@ -948,6 +951,8 @@ avoiding atexit(3) hooks, etc. Otherwise exit(2) is ca + ;; Just as with struct timeval, 64-bit OpenBSD has problems with the + ;; above definition. tv_sec is declared as time_t instead of long, + ;; and time_t is a typedef for int. ++;; Note: time_t is 64-bit on all architectures, starting from OpenBSD 5.5 ++;; FIXME: it seems recent NetBSD releases use a 64-bit time_t too. + #!+(or openbsd netbsd) + (define-alien-type nil + (struct timespec