blob: 34db0763737e26d33f41ba3218ea8978b3a4ba3f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-lisp/clisp/clisp-2.33.2-r2.ebuild,v 1.6 2005/06/21 20:32:50 blubb Exp $
inherit flag-o-matic common-lisp-common-2 eutils
DEB_PV=7
DESCRIPTION="A portable, bytecode-compiled implementation of Common Lisp"
HOMEPAGE="http://clisp.sourceforge.net/"
SRC_URI="mirror://sourceforge/clisp/${P}.tar.bz2"
LICENSE="GPL-2"
SLOT="2"
KEYWORDS="x86 ppc ~ppc-macos ~amd64 ~sparc"
IUSE="X fastcgi nls pcre postgres readline"
DEPEND="dev-libs/libsigsegv
dev-lisp/common-lisp-controller
fastcgi? ( dev-libs/fcgi )
postgres? ( dev-db/postgresql )
X? ( virtual/x11 )
readline? ( sys-libs/readline )
nls? ( sys-devel/gettext )
pcre? ( dev-libs/libpcre )"
PROVIDE="virtual/commonlisp"
src_unpack() {
unpack ${A}
epatch ${FILESDIR}/${PV}/fastcgi-Makefile.in-gentoo.patch || die
epatch ${FILESDIR}/${PV}/glibc-linux.lisp-sigpause-gentoo.patch || die
epatch ${FILESDIR}/${PV}/compilefix.patch || die
}
src_compile() {
# Handle the case where the user has some other -falign-functions
# option set. Bug 34630.
if ! is-flag '-falign-functions=4' \
&& expr "$CFLAGS" : '.*\(-falign-functions=[[:digit:]]\+\)' >/dev/null; then
CFLAGS=${CFLAGS/\
$(expr "$CFLAGS" : '.*\(-falign-functions=[[:digit:]]\+\)')/\
-falign-functions=4}
fi
# Fails to compile without -falign-functions=4 when -march=pentium4
# (or -march=pentium3, sometimes??) is defined. Bugs 33425 and 34630.
if (is-flag '-march=pentium4' || is-flag '-march=pentium3') \
&& ! is-flag '-falign-functions=4'; then
append-flags '-falign-functions=4'
fi
# Athlon XP users report problems with -O3 optimization. In this
# block, we remove any optimization flag. Depending on bug 34497. we
# may be able to reduce optimization to -O2.
if is-flag '-march=athlon-xp'; then
filter-flags '-O*'
fi
# The previous stanza might not be necessary. Bug 39830.
if is-flag '-march=athlon-xp'; then
replace-flags '-march=athlon-xp' '-mcpu=athlon-xp'
fi
# einfo "Using CFLAGS: ${CFLAGS}"
# export CC="$(gcc-getCC) ${CFLAGS}"
# Let CLISP use its own set of optimizations
unset CFLAGS CXXFLAGS
local myconf="--with-dynamic-ffi
--with-unicode
--with-module=regexp
--with-module=syscalls
--with-module=wildcard"
use ppc-macos || myconf="${myconf} --with-module=bindings/glibc"
use readline || myconf="${myconf} --with-noreadline"
use nls || myconf="${myconf} --with-nogettext"
use X && myconf="${myconf} --with-module=clx/new-clx"
if use postgres; then
myconf="${myconf} --with-module=postgresql"
CC="${CC} -I $(pg_config --includedir)"
fi
use fastcgi && myconf="${myconf} --with-module=fastcgi"
use pcre && myconf="${myconf} --with-module=pcre"
./configure --prefix=/usr ${myconf} build || die "./configure failed"
cd build
./makemake ${myconf} >Makefile
emake -j1 config.lisp
sed -i 's,"vi","nano",g' config.lisp
sed -i 's,http://www.lisp.org/HyperSpec/,http://www.lispworks.com/reference/HyperSpec/,g' config.lisp
emake -j1 || die
}
src_install() {
pushd build
make DESTDIR=${D} prefix=/usr install-bin || die
doman clisp.1
dodoc SUMMARY README* NEWS MAGIC.add GNU-GPL COPYRIGHT \
ANNOUNCE clisp.dvi clisp.html
rm -f ${D}/usr/lib/clisp/base/*
(cd ${D}/usr/lib/clisp/base && ln -s ../full/* .)
chmod a+x ${D}/usr/lib/clisp/clisp-link
popd
# install common-lisp-controller profile
exeinto /usr/lib/common-lisp/bin
doexe ${FILESDIR}/${PV}/clisp.sh
insinto /usr/lib/clisp
doins ${FILESDIR}/${PV}/install-clc.lisp
dodoc ${FILESDIR}/${PV}/README.Gentoo
keepdir /usr/lib/common-lisp/clisp
}
pkg_preinst() {
local clisp_dir=/usr/lib/clisp
local old_mem=$clisp_dir/full/lispinit.mem
local new_mem=$clisp_dir/full/lispinit-new.mem
local clean_mem=$clisp_dir/full/lispinit-clean.mem
local lisp_run=$clisp_dir/full/lisp.run
rm -f $old_mem $new_mem $clean_mem $lisp_run
}
pkg_postinst() {
standard-impl-postinst clisp
}
pkg_postrm() {
standard-impl-postrm clisp /usr/bin/clisp
}
pkg_postrm() {
if [ ! -x /usr/bin/clisp ]; then
rm -rf /usr/lib/clisp/ || die
fi
}
|