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

Reply via email to