Josh Elsasser <j...@elsasser.org> writes: > Sorry for slacking on this, this has been fixed upstream for a short > while now, and just needs a version bump. The only wrinkle is there's > now an "optional" dependency on gmp at build time, and at runtime if > one wishes to use the sb-gmp contrib module.
Grmpf, I hadn't noticed this. > On Sun, Sep 15, 2013 at 04:54:19PM +0200, Jérémie Courrèges-Anglas wrote: >> >> 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...) > > Fixed upstream already, and in a fairly portable and futureproof way > that avoids those hardcoded struct definitions. Yup, it was nice to see it fixed cleanly. >> - 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? > > It will be a bit of work, I think. The easiest port to start with > would be hppa, *NoooOOooOOoooo* (disclaimer, if someone is smar^Wcrazy enough to fix emacs-24.3 on hppa, be my guest). > I think. Possibly sparc if you can squeeze sbcl into > the virtual address space there. The alpha port of is somewhat > special, and I think would be more work to bring up on openbsd. The > mips port is 32-bit, so it's out unless we get a 32-bit mips platform. Hmm, ok. :) >> 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 > -- jca | PGP: 0x06A11494 / 61DB D9A0 00A4 67CF 2A90 8961 6191 8FBF 06A1 1494