mirror of
https://github.com/void-linux/void-packages.git
synced 2025-06-14 11:03:49 +02:00
sbcl: update to 1.4.11.
This commit is contained in:
parent
50434f4a66
commit
c4a2434623
2 changed files with 9 additions and 117 deletions
|
@ -1,108 +0,0 @@
|
||||||
From 77e4b86a0393fa408f9ca0a337e63617ff9e5c73 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Stas Boukarev <stassats@gmail.com>
|
|
||||||
Date: Thu, 2 Aug 2018 17:47:45 +0300
|
|
||||||
Subject: [PATCH] Fix PRIMITIVE-TYPE on type intersections.
|
|
||||||
|
|
||||||
FUNCTION can intersect with many type intersections, don't use
|
|
||||||
TYPES-EQUAL-OR-INTERSECT but check individual types for being subtypes
|
|
||||||
of FUNCTION.
|
|
||||||
|
|
||||||
## (Void Linux Notes from knusbaum)
|
|
||||||
sbcl-1.4.10 has a fairly bad regression, breaking pretty much all
|
|
||||||
clim-based gui applications on sbcl (every one I've tried anyway).
|
|
||||||
There's already a fix on master, which is where this patch came from,
|
|
||||||
so this patch can be discarded whenever sbcl does their next release.
|
|
||||||
|
|
||||||
diff --git src/compiler/generic/primtype.lisp src/compiler/generic/primtype.lisp
|
|
||||||
index 6ab742dee..d56b37157 100644
|
|
||||||
--- src/compiler/generic/primtype.lisp
|
|
||||||
+++ src/compiler/generic/primtype.lisp
|
|
||||||
@@ -320,37 +320,37 @@
|
|
||||||
(setq res new-ptype)
|
|
||||||
(return (any)))))))))))
|
|
||||||
(intersection-type
|
|
||||||
- (if (types-equal-or-intersect (specifier-type 'function) type)
|
|
||||||
- ;; Things like (AND STANDARD-OBJECT FUNCTION) are callable as functions.
|
|
||||||
- (part-of function)
|
|
||||||
- (let ((types (intersection-type-types type))
|
|
||||||
- (res (any)))
|
|
||||||
- ;; why NIL for the exact? Well, we assume that the
|
|
||||||
- ;; intersection type is in fact doing something for us:
|
|
||||||
- ;; that is, that each of the types in the intersection is
|
|
||||||
- ;; in fact cutting off some of the type lattice. Since no
|
|
||||||
- ;; intersection type is represented by a primitive type and
|
|
||||||
- ;; primitive types are mutually exclusive, it follows that
|
|
||||||
- ;; no intersection type can represent the entirety of the
|
|
||||||
- ;; primitive type. (And NIL is the conservative answer,
|
|
||||||
- ;; anyway). -- CSR, 2006-09-14
|
|
||||||
- (dolist (type types (values res nil))
|
|
||||||
- (multiple-value-bind (ptype)
|
|
||||||
- (primitive-type type)
|
|
||||||
- (cond
|
|
||||||
- ;; if the result so far is (any), any improvement on
|
|
||||||
- ;; the specificity of the primitive type is valid.
|
|
||||||
- ((eq res (any))
|
|
||||||
- (setq res ptype))
|
|
||||||
- ;; if the primitive type returned is (any), the
|
|
||||||
- ;; result so far is valid. Likewise, if the
|
|
||||||
- ;; primitive type is the same as the result so far,
|
|
||||||
- ;; everything is fine.
|
|
||||||
- ((or (eq ptype (any)) (eq ptype res)))
|
|
||||||
- ;; otherwise, we have something hairy and confusing,
|
|
||||||
- ;; such as (and condition funcallable-instance).
|
|
||||||
- ;; Punt.
|
|
||||||
- (t (return (any)))))))))
|
|
||||||
+ (let ((types (intersection-type-types type))
|
|
||||||
+ (res (any)))
|
|
||||||
+ ;; why NIL for the exact? Well, we assume that the
|
|
||||||
+ ;; intersection type is in fact doing something for us:
|
|
||||||
+ ;; that is, that each of the types in the intersection is
|
|
||||||
+ ;; in fact cutting off some of the type lattice. Since no
|
|
||||||
+ ;; intersection type is represented by a primitive type and
|
|
||||||
+ ;; primitive types are mutually exclusive, it follows that
|
|
||||||
+ ;; no intersection type can represent the entirety of the
|
|
||||||
+ ;; primitive type. (And NIL is the conservative answer,
|
|
||||||
+ ;; anyway). -- CSR, 2006-09-14
|
|
||||||
+ (dolist (type types (values res nil))
|
|
||||||
+ (when (csubtypep type (specifier-type 'function))
|
|
||||||
+ ;; Things like (AND STANDARD-OBJECT FUNCTION) are callable as functions.
|
|
||||||
+ (part-of function))
|
|
||||||
+ (multiple-value-bind (ptype)
|
|
||||||
+ (primitive-type type)
|
|
||||||
+ (cond
|
|
||||||
+ ;; if the result so far is (any), any improvement on
|
|
||||||
+ ;; the specificity of the primitive type is valid.
|
|
||||||
+ ((eq res (any))
|
|
||||||
+ (setq res ptype))
|
|
||||||
+ ;; if the primitive type returned is (any), the
|
|
||||||
+ ;; result so far is valid. Likewise, if the
|
|
||||||
+ ;; primitive type is the same as the result so far,
|
|
||||||
+ ;; everything is fine.
|
|
||||||
+ ((or (eq ptype (any)) (eq ptype res)))
|
|
||||||
+ ;; otherwise, we have something hairy and confusing,
|
|
||||||
+ ;; such as (and condition funcallable-instance).
|
|
||||||
+ ;; Punt.
|
|
||||||
+ (t (return (any))))))))
|
|
||||||
(member-type
|
|
||||||
(let (res)
|
|
||||||
(block nil
|
|
||||||
diff --git tests/compiler-2.pure.lisp tests/compiler-2.pure.lisp
|
|
||||||
index a89e07d4b..4ba87d65e 100644
|
|
||||||
--- tests/compiler-2.pure.lisp
|
|
||||||
+++ tests/compiler-2.pure.lisp
|
|
||||||
@@ -1524,3 +1524,12 @@
|
|
||||||
(declare (type (string 1) s))
|
|
||||||
(the (or simple-array (member 1/2 "ba" 0 #\3)) s))
|
|
||||||
((#1="a") #1#)))
|
|
||||||
+
|
|
||||||
+(with-test (:name :primitive-type-function)
|
|
||||||
+ (checked-compile-and-assert
|
|
||||||
+ ()
|
|
||||||
+ `(lambda (x)
|
|
||||||
+ (funcall (the (and atom (not null)) x))
|
|
||||||
+ )
|
|
||||||
+ ((#'list) nil)
|
|
||||||
+ (('list) nil)))
|
|
||||||
--
|
|
||||||
2.18.0
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# Template file for 'sbcl'
|
# Template file for 'sbcl'
|
||||||
pkgname=sbcl
|
pkgname=sbcl
|
||||||
version=1.4.10
|
version=1.4.11
|
||||||
revision=2
|
revision=1
|
||||||
only_for_archs="i686 x86_64 x86_64-musl armv7l aarch64"
|
only_for_archs="i686 x86_64 x86_64-musl armv7l aarch64"
|
||||||
|
|
||||||
hostmakedepends="iana-etc"
|
hostmakedepends="iana-etc"
|
||||||
|
@ -11,27 +11,27 @@ short_desc="Steel Bank Common Lisp"
|
||||||
maintainer="Leah Neukirchen <leah@vuxu.org>"
|
maintainer="Leah Neukirchen <leah@vuxu.org>"
|
||||||
license="custom"
|
license="custom"
|
||||||
homepage="http://www.sbcl.org/"
|
homepage="http://www.sbcl.org/"
|
||||||
distfiles="${SOURCEFORGE_SITE}/${pkgname}/${version}/${pkgname}-${version}-source.tar.bz2"
|
distfiles="${SOURCEFORGE_SITE}/${pkgname}/${pkgname}-${version}-source.tar.bz2"
|
||||||
checksum=904ee7e90fd6d66dfb4da578ec9e3dab1a2a49b61b13fa1fbf30ce8b80593cc9
|
checksum=f4b82e95ed1b1d973901442fb9e609c1446bc50a4e554ca8b94b8e8c281c4eb5
|
||||||
nocross=yes
|
nocross=yes
|
||||||
nopie=yes
|
nopie=yes
|
||||||
|
|
||||||
_bootstrap_lisp="bash ../sbcl-*-linux/run-sbcl.sh --no-sysinit --no-userinit --disable-debugger"
|
_bootstrap_lisp="bash ../sbcl-*-linux/run-sbcl.sh --no-sysinit --no-userinit --disable-debugger"
|
||||||
case "$XBPS_TARGET_MACHINE" in
|
case "$XBPS_TARGET_MACHINE" in
|
||||||
x86_64)
|
x86_64)
|
||||||
distfiles+=" ${SOURCEFORGE_SITE}/${pkgname}/${version}/${pkgname}-${version}-x86-64-linux-binary.tar.bz2"
|
distfiles+=" ${SOURCEFORGE_SITE}/${pkgname}/${pkgname}-${version}-x86-64-linux-binary.tar.bz2"
|
||||||
checksum+=" b773c40a1fa49d3c31fb9b520112674733409871422ec1d694bc37797b6dddb2"
|
checksum+=" b40ba286bf24647dd6241927ec0679080a1a3dd4c2895a3ff398f93b1ca0e464"
|
||||||
;;
|
;;
|
||||||
i686)
|
i686)
|
||||||
distfiles+=" ${SOURCEFORGE_SITE}/${pkgname}/${version}/${pkgname}-1.4.3-x86-linux-binary.tar.bz2"
|
distfiles+=" ${SOURCEFORGE_SITE}/${pkgname}/${pkgname}-1.4.3-x86-linux-binary.tar.bz2"
|
||||||
checksum+=" 6bed7e31bb28e841da7bfc48c75adb8bef19e5e07d1d6f0fc7487f022c32f92c"
|
checksum+=" 6bed7e31bb28e841da7bfc48c75adb8bef19e5e07d1d6f0fc7487f022c32f92c"
|
||||||
;;
|
;;
|
||||||
arm*)
|
arm*)
|
||||||
distfiles+=" ${SOURCEFORGE_SITE}/${pkgname}/${version}/${pkgname}-1.2.14-armhf-linux-binary.tar.bz2"
|
distfiles+=" ${SOURCEFORGE_SITE}/${pkgname}/${pkgname}-1.2.14-armhf-linux-binary.tar.bz2"
|
||||||
checksum+=" a5fbf1d596a909a7719bc4a958f00e8537bf399fa051f83736baee950b21e56a"
|
checksum+=" a5fbf1d596a909a7719bc4a958f00e8537bf399fa051f83736baee950b21e56a"
|
||||||
;;
|
;;
|
||||||
aarch64)
|
aarch64)
|
||||||
distfiles+=" ${SOURCEFORGE_SITE}/${pkgname}/${version}/${pkgname}-1.3.9-arm64-linux-binary.tar.bz2"
|
distfiles+=" ${SOURCEFORGE_SITE}/${pkgname}/${pkgname}-1.3.9-arm64-linux-binary.tar.bz2"
|
||||||
checksum+=" 494829f8e3ea7eb1c308b343cc390daf94a6215030a5f2b9ee0cded67511e918"
|
checksum+=" 494829f8e3ea7eb1c308b343cc390daf94a6215030a5f2b9ee0cded67511e918"
|
||||||
;;
|
;;
|
||||||
*-musl)
|
*-musl)
|
||||||
|
|
Loading…
Add table
Reference in a new issue