aboutsummaryrefslogtreecommitdiff
blob: 4706440db7cfa1f84932a18361ebc6d5e15a6ab5 (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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

EAPI=5
inherit eutils autotools flag-o-matic elisp-common multilib-minimal

DESCRIPTION="Scheme interpreter"
HOMEPAGE="http://www.gnu.org/software/guile/"
SRC_URI="mirror://gnu/guile/${P}.tar.gz"

LICENSE="LGPL-2.1"
KEYWORDS="~amd64"
IUSE="networking +regex discouraged +deprecated emacs nls debug-freelist debug-malloc debug +threads"
RESTRICT="!regex? ( test )"

DEPEND="
	>=dev-libs/gmp-4.1[${MULTILIB_USEDEP}]
	>=sys-devel/libtool-1.5.6[${MULTILIB_USEDEP}]
	sys-devel/gettext[${MULTILIB_USEDEP}]
	emacs? ( virtual/emacs )"
RDEPEND="${DEPEND}"

# Guile seems to contain some slotting support, /usr/share/guile/ is slotted,
# but there are lots of collisions. Most in /usr/share/libguile. Therefore
# I'm slotting this in the same slot as guile-1.6* for now.
SLOT="12"
MAJOR="1.8"

MULTILIB_WRAPPED_HEADERS=(/usr/include/libguile/scmconfig.h)
MULTILIB_WRAPPED_EXECUTABLES=(@/usr/bin/guile-config /usr/bin/guile)

pkg_setup() {
	declare -a abis=( $(multilib_get_enabled_abis) )
	if [[ ${#abis[@]} -gt 1 ]] ; then
		multiple_abis=yes
	fi
}

src_prepare() {
	epatch "${FILESDIR}/${P}-fix_guile-config.patch" \
		"${FILESDIR}/${P}-gcc46.patch" \
		"${FILESDIR}/${P}-makeinfo-5.patch" \
		"${FILESDIR}/${P}-dont-delete-my-binaries-please.patch" \
		"${FILESDIR}/${P}-at-least-_try_-to-test.patch" # <- still wont pass but... gx86 bug
	sed \
		-e "s/AM_CONFIG_HEADER/AC_CONFIG_HEADERS/g" \
		-e "/AM_PROG_CC_STDC/d" \
		-i guile-readline/configure.in
	eautoreconf
}

multilib_src_configure() {
	# see bug #178499
	filter-flags -ftree-vectorize

	#will fail for me if posix is disabled or without modules -- hkBst
	ECONF_SOURCE="${S}" econf \
		--disable-error-on-warning \
		--disable-static \
		--enable-posix \
		$(use_enable networking) \
		$(use_enable regex) \
		$(use deprecated || use_enable discouraged) \
		$(use_enable deprecated) \
		$(use_enable emacs elisp) \
		$(use_enable nls) \
		--disable-rpath \
		$(use_enable debug-freelist) \
		$(use_enable debug-malloc) \
		$(use_enable debug guile-debug) \
		$(use_with threads) \
		--with-modules \
		EMACS=no

	# prevent doc building for non-best abis
	if ! multilib_is_best_abi; then
		sed -e '/^SUBDIRS/,/^[^[:space:]]/ s/\([[:space:]]\)\(doc\|examples\)\([[:space:]]\|$\)/\1/g' \
			-i Makefile || die
		sed -e 's|^\(schemelib_DATA[[:space:]]*=\).*$|\1|' \
			-e '/^[^[:space:]]*\.\(texi\|txt\|doc\):\([[:space:]]\|$\)/,/^\([^[:space:]]\|$\)/ s/^/# (doc) &/' \
			-i libguile/Makefile || die
	fi
}

multilib_src_compile()  {
	default

	# Above we have disabled the build system's Emacs support;
	# for USE=emacs we compile (and install) the files manually
	if use emacs; then
		cd emacs
		elisp-compile *.el || die
	fi
}

src_test() {
	failed_abis=()
	multilib-minimal_src_test
	if (( ${#failed_abis[@]} )); then
		eerror
		eerror "NOTE: The following ABIs failed testing: ${failed_abis[*]}"
		eerror "Since these are known not to work, proceeding anyhow."
		eerror
	fi
}

multilib_src_test() {
	nonfatal emake check || failed_abis+=("${ABI}")
}

multilib_src_install() {
	default
	if [[ ${multiple_abis} ]] ; then
		# fix shebang in guile-config to run wrapped guile
		sed -e "1s|bin/guile|bin/guile-${MULTILIB_BUILD_ABI}|" \
			-i "${ED}"/usr/bin/guile-config || die
	fi
}

multilib_src_install_all() {
	dodoc AUTHORS ChangeLog GUILE-VERSION HACKING NEWS README THANKS || die

	# texmacs needs this, closing bug #23493
	dodir /etc/env.d
	echo "GUILE_LOAD_PATH=\"${EPREFIX}/usr/share/guile/${MAJOR}\"" > "${ED}"/etc/env.d/50guile

	# necessary for registering slib, see bug 206896
	keepdir /usr/share/guile/site

	if use emacs; then
		elisp-install ${PN} emacs/*.{el,elc} || die
		elisp-site-file-install "${FILESDIR}/50${PN}-gentoo.el" || die
	fi
}

pkg_postinst() {
	[ "${EROOT}" == "/" ] && pkg_config
	use emacs && elisp-site-regen
}

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

pkg_config() {
	if has_version dev-scheme/slib; then
		einfo "Registering slib with guile"
		install_slib_for_guile
	fi
}

_pkg_prerm() {
	rm -f "${EROOT}"/usr/share/guile/site/slibcat
}