summaryrefslogtreecommitdiff
blob: c439c04a60459d3b27ab8429543eb2591c3b2dcc (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
138
139
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-lisp/gcl/gcl-2.6.8_pre20090419.ebuild,v 1.3 2012/06/07 18:59:25 zmedico Exp $

EAPI=1

#removing flag-o-matic results in make install failing due to a segfault
inherit elisp-common eutils flag-o-matic

DESCRIPTION="GNU Common Lisp"
HOMEPAGE="http://www.gnu.org/software/gcl/gcl.html"
SRC_URI="mirror://gentoo/${P}.tar.bz2"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~ppc ~sparc x86"
IUSE="+ansi debug doc emacs +readline tk X"

# See bug #205803
RESTRICT="strip"

RDEPEND="emacs? ( virtual/emacs )
	readline? ( sys-libs/readline )
	>=dev-libs/gmp-4.1
	tk? ( dev-lang/tk )
	X? ( x11-libs/libXt x11-libs/libXext x11-libs/libXmu x11-libs/libXaw )
	virtual/latex-base"
DEPEND="${RDEPEND}
	doc? ( virtual/texi2dvi )
	>=app-text/texi2html-1.64
	>=sys-devel/autoconf-2.52"

src_unpack() {
	unpack ${A}
	cd "${S}"

	# The LANG vars aren't reset early enough so when sed tries to use [a-zA-Z] in
	# option parsing, it may break.
	epatch "${FILESDIR}"/${P}-configure.patch
}

src_compile() {
	local myconfig=""
	if use tk; then
		myconfig="${myconfig} --enable-tkconfig=/usr/lib --enable-tclconfig=/usr/lib"
	fi
	myconfig="${myconfig} \
		--enable-emacsdir=/usr/share/emacs/site-lisp/gcl \
		--enable-dynsysgmp \
		--disable-xdr
		$(use_enable readline) \
		$(use_with X x) \
		$(use_enable debug) \
		$(use_enable ansi)"

	einfo "Configuring with the following:
${myconfig}"
	econf ${myconfig}
	make || die "make failed"
	sed -e 's,@EXT@,,g' debian/in.gcl.1 >gcl.1
}

src_test() {
	local make_ansi_tests_clean="rm -f test.out *.fasl *.o \
	*.so *~ *.fn *.x86f *.fasl *.ufsl"
	if use ansi; then
		cd ansi-tests

		( make clean && make test-unixport ) \
		|| die "make ansi-tests failed!"

		cat "${FILESDIR}/bootstrap-gcl" \
		| ../unixport/saved_ansi_gcl

		cat "${FILESDIR}/bootstrap-gcl" \
		|sed s/bootstrapped_ansi_gcl/bootstrapped_r_ansi_gcl/g \
		| ./bootstrapped_ansi_gcl

		( ${make_ansi_tests_clean} && \
		echo "(load \"gclload.lsp\")" \
		| ./bootstrapped_r_ansi_gcl ) \
		|| die "Phase 2, bootstraped compiler failed in tests"

	else

		ewarn "Upstream provides tests only for ansi-gcl."
		ewarn "Please emerge with ansi USE flag enabled"
		ewarn "if you wnat to run the ansi tests."

		cat "${FILESDIR}/bootstrap-gcl" \
		| sed s/bootstrapped_ansi_gcl/bootstrapped_gcl/g \
		| unixport/saved_gcl

		cat "${FILESDIR}/bootstrap-gcl" \
		| sed s/bootstrapped_ansi_gcl/bootstrapped_r_gcl/g \
		| ./bootstrapped_gcl

		for x in "./bootstrapped_r_gcl" "unixport/saved_gcl" ; do
			echo "(compiler::emit-fn t)" \
				| ${x} \
				|| die "Phase 2, bootstraped compiler failed in tests"
		done
	fi
}

src_install() {
	make DESTDIR="${D}" install || die "make install failed"
	rm -rf "${D}"usr/share/doc/${PN}-si "${D}"usr/share/doc/${PN}-tk

	dosed /usr/bin/gcl
	fperms 0755 /usr/bin/gcl

	dodoc readme* RELEASE* ChangeLog* doc/*
	doman gcl.1
	doinfo info/*.info*

	if use emacs; then
		mv "${D}"usr/share/emacs/site-lisp/${PN}/add-default.el "${T}"/50${PN}-gentoo.el
		elisp-site-file-install "${T}"/50${PN}-gentoo.el
		elisp-install ${PN} elisp/*
		fperms 0644 /usr/share/emacs/site-lisp/gcl/*
	else
		rm -rf "${D}"usr/share/emacs
	fi

	if use doc; then
		mv "${D}"usr/share/doc/*.dvi "${D}"usr/share/doc/dwdoc* "${D}"usr/share/doc/${PF}/
	else
		rm -rf "${D}"usr/share/doc/*.dvi "${D}"usr/share/doc/dwdoc*
	fi
}

pkg_postinst() {
	use emacs && elisp-site-regen
}

pkg_postrm() {
	use emacs && elisp-site-regen
}