diff options
author | Parabola <dev@list.parabolagnulinux.org> | 2011-04-05 14:26:38 +0000 |
---|---|---|
committer | Parabola <dev@list.parabolagnulinux.org> | 2011-04-05 14:26:38 +0000 |
commit | 415856bdd4f48ab4f2732996f0bae58595092bbe (patch) | |
tree | ede2018b591f6dfb477fe9341ba17b9bc000fab9 /extra/sbcl |
Tue Apr 5 14:26:38 UTC 2011
Diffstat (limited to 'extra/sbcl')
-rw-r--r-- | extra/sbcl/PKGBUILD | 73 | ||||
-rw-r--r-- | extra/sbcl/arch-fixes.lisp | 21 | ||||
-rw-r--r-- | extra/sbcl/sbcl.install | 18 |
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 +} |