summaryrefslogtreecommitdiff
path: root/extra/sbcl
diff options
context:
space:
mode:
authorParabola <dev@list.parabolagnulinux.org>2011-04-05 14:26:38 +0000
committerParabola <dev@list.parabolagnulinux.org>2011-04-05 14:26:38 +0000
commit415856bdd4f48ab4f2732996f0bae58595092bbe (patch)
treeede2018b591f6dfb477fe9341ba17b9bc000fab9 /extra/sbcl
Tue Apr 5 14:26:38 UTC 2011
Diffstat (limited to 'extra/sbcl')
-rw-r--r--extra/sbcl/PKGBUILD73
-rw-r--r--extra/sbcl/arch-fixes.lisp21
-rw-r--r--extra/sbcl/sbcl.install18
3 files changed, 112 insertions, 0 deletions
diff --git a/extra/sbcl/PKGBUILD b/extra/sbcl/PKGBUILD
new file mode 100644
index 000000000..c54bc6df9
--- /dev/null
+++ b/extra/sbcl/PKGBUILD
@@ -0,0 +1,73 @@
+# $Id: PKGBUILD 117231 2011-03-30 10:39:06Z juergen $
+# Contributor: John Proctor <jproctor@prium.net>
+# Contributor: Daniel White <daniel@whitehouse.id.au>
+# Maintainer: Juergen Hoetzel <juergen@archlinux.org>
+# Contributor: Leslie Polzer (skypher)
+
+pkgname=sbcl
+pkgver=1.0.47
+pkgrel=1
+pkgdesc="Steel Bank Common Lisp"
+arch=('i686' 'x86_64')
+license=('custom')
+depends=('glibc')
+provides=('common-lisp' 'cl-asdf')
+makedepends=('sbcl' 'texinfo')
+source=("http://downloads.sourceforge.net/project/sbcl/sbcl/$pkgver/$pkgname-$pkgver-source.tar.bz2" "arch-fixes.lisp")
+md5sums=('2e90fca5ffec9ce19ed232b24f09cd0a'
+ '7ac0c1936547f4278198b8bf7725204d')
+url="http://www.sbcl.org/"
+install=sbcl.install
+
+build() {
+ export CFLAGS="${CFLAGS} -DSBCL_HOME=\\\"/usr/lib/sbcl\\\""
+ export GNUMAKE="make -e"
+
+ # build system uses LINKFLAGS and OS_LIBS to build LDFLAGS
+ export LINKFLAGS="$LD_FLAGS"
+ unset LDFLAGS
+ cd ${startdir}/src/${pkgname}-${pkgver}
+ # Make a multi-threaded SBCL, disable LARGEFILE
+ cat >customize-target-features.lisp <<EOF
+(lambda (features)
+ (flet ((enable (x) (pushnew x features))
+ (disable (x) (setf features (remove x features))))
+ (enable :sb-thread)
+ (disable :largefile)))
+EOF
+
+ sh make.sh sbcl
+ mkdir -p ${startdir}/pkg/usr
+ pushd doc/manual
+ make info || return 1
+ popd
+ INSTALL_ROOT=${startdir}/pkg/usr sh install.sh
+
+ src/runtime/sbcl --core output/sbcl.core --script ${startdir}/src/arch-fixes.lisp
+ mv sbcl-new.core ${startdir}/pkg/usr/lib/sbcl/sbcl.core
+
+# sources
+ mkdir -p ${startdir}/pkg/usr/share/sbcl-source
+ cp -R -t ${startdir}/pkg/usr/share/sbcl-source \
+ ${startdir}/src/${pkgname}-${pkgver}/{src,contrib}
+
+# drop unwanted files
+ find ${startdir}/pkg/usr/share/sbcl-source -type f \
+ -name \*.fasl -or \
+ -name \*.o -or \
+ -name \*.log -or \
+ -name \*.so -or \
+ -name a.out -delete
+
+ rm ${startdir}/pkg/usr/share/sbcl-source/src/runtime/sbcl
+ rm ${startdir}/pkg/usr/share/sbcl-source/src/runtime/sbcl.nm
+
+ find ${startdir}/pkg \( -name Makefile -o -name .cvsignore \) -delete
+
+ rm $startdir/pkg/usr/share/info/dir
+ gzip -9nf $startdir/pkg/usr/share/info/*
+
+ # license
+ install -D -m644 ${startdir}/src/${pkgname}-${pkgver}/COPYING \
+ ${startdir}/pkg/usr/share/licenses/${pkgname}/license.txt
+}
diff --git a/extra/sbcl/arch-fixes.lisp b/extra/sbcl/arch-fixes.lisp
new file mode 100644
index 000000000..bdc631331
--- /dev/null
+++ b/extra/sbcl/arch-fixes.lisp
@@ -0,0 +1,21 @@
+(in-package "COMMON-LISP-USER")
+
+(let* ((parent (make-pathname :directory '(:absolute "usr" "share" "sbcl-source")))
+ (src
+ (merge-pathnames
+ (make-pathname :directory '(:relative "src" :wild-inferiors)
+ :name :wild :type :wild)
+ parent))
+ (contrib
+ (merge-pathnames
+ (make-pathname :directory '(:relative "contrib" :wild-inferiors)
+ :name :wild :type :wild)
+ parent)))
+ (setf (logical-pathname-translations "SYS")
+ `(("SYS:SRC;**;*.*.*" ,src)
+ ("SYS:CONTRIB;**;*.*.*" ,contrib))))
+
+(ignore-errors
+ (sb-ext:gc :full t)
+ (sb-ext:enable-debugger)
+ (sb-ext:save-lisp-and-die "sbcl-new.core"))
diff --git a/extra/sbcl/sbcl.install b/extra/sbcl/sbcl.install
new file mode 100644
index 000000000..83ee3c00c
--- /dev/null
+++ b/extra/sbcl/sbcl.install
@@ -0,0 +1,18 @@
+info_dir=/usr/share/info
+info_files=(asdf.info sbcl.info)
+
+post_install() {
+ for f in ${info_files[@]}; do
+ install-info ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ for f in ${info_files[@]}; do
+ install-info --delete ${info_dir}/$f.gz ${info_dir}/dir 2> /dev/null
+ done
+}