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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
|
# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-lang/erlang/erlang-14.2.4.ebuild,v 1.2 2011/12/07 17:44:39 ulm Exp $
EAPI=3
WX_GTK_VER="2.8"
inherit elisp-common eutils java-pkg-opt-2 multilib versionator wxwidgets
# NOTE: If you need symlinks for binaries please tell maintainers or
# open up a bug to let it be created.
# erlang uses a really weird versioning scheme which caused quite a few problems
# already. Thus we do a slight modification converting all letters to digits to
# make it more sane (see e.g. #26420)
# the next line selects the right source.
ERL_VER=($(get_version_components))
MY_PV="R$(get_major_version)B0${ERL_VER[2]}"
# ATTN!! Take care when processing the C, etc version!
MY_P=otp_src_${MY_PV}
DESCRIPTION="Erlang programming language, runtime environment, and large collection of libraries"
HOMEPAGE="http://www.erlang.org/"
SRC_URI="http://www.erlang.org/download/${MY_P}.tar.gz
http://erlang.org/download/otp_doc_man_${MY_PV}.tar.gz
doc? ( http://erlang.org/download/otp_doc_html_${MY_PV}.tar.gz )"
LICENSE="ErlPL-1.1"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd ~x86-freebsd ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos ~x64-solaris"
IUSE="doc emacs halfword hipe java kpoll odbc smp sctp ssl tk wxwidgets"
RDEPEND=">=dev-lang/perl-5.6.1
ssl? ( >=dev-libs/openssl-0.9.7d )
emacs? ( virtual/emacs )
java? ( >=virtual/jdk-1.2 )
odbc? ( dev-db/unixODBC )"
DEPEND="${RDEPEND}
wxwidgets? ( x11-libs/wxGTK:2.8[opengl] )
sctp? ( net-misc/lksctp-tools )
tk? ( dev-lang/tk )"
S="${WORKDIR}/${MY_P}"
SITEFILE=50${PN}-gentoo.el
pkg_setup() {
use wxwidgets && wxwidgets_pkg_setup
if use halfword ; then
use amd64 || die "halfword support is limited to amd64"
fi
}
src_prepare() {
use odbc || sed -i 's: odbc : :' lib/Makefile
# bug 263129, don't ignore LDFLAGS, reported upstream
sed -e 's:LDFLAGS = \$(DED_LDFLAGS):LDFLAGS += \$(DED_LDFLAGS):' -i "${S}"/lib/megaco/src/flex/Makefile.in || die
if ! use wxwidgets; then
sed -i 's: wx : :' lib/Makefile
rm -rf lib/wx
fi
# Nasty workaround, reported upstream
cp "${S}"/lib/configure.in.src "${S}"/lib/configure.in || die
# prevent configure from injecting -m32 by default on Darwin, bug #334155
# Nasty hack
sed -i -e 's/Darwin-i386/Darwin-NO/' configure.in || die
sed -i -e '/\<\(LD\|C\)FLAGS="-m32/s/-m32//' erts/configure.in || die
# bug 383697
sed -i '1i#define OF(x) x' erts/emulator/drivers/common/gzio.c || die
}
src_configure() {
use java || export JAVAC=false
econf \
--enable-threads \
--enable-shared-zlib \ \
$(use_enable sctp) \
$(use_enable halfword halfword-emulator) \
$(use_enable hipe) \
$(use_with ssl ssl "${EPREFIX}"/usr) \
$(use_enable ssl dynamic-ssl-lib) \
$(use_enable kpoll kernel-poll) \
$(use_enable smp smp-support) \
|| die
}
src_compile() {
use java || export JAVAC=false
emake -j1 || die
if use emacs ; then
pushd lib/tools/emacs
elisp-compile *.el || die
popd
fi
}
extract_version() {
sed -n -e "/^$2 = \(.*\)$/s::\1:p" "${S}/$1/vsn.mk"
}
src_install() {
local ERL_LIBDIR=/usr/$(get_libdir)/erlang
local ERL_INTERFACE_VER=$(extract_version lib/erl_interface EI_VSN)
local ERL_ERTS_VER=$(extract_version erts VSN)
emake -j1 INSTALL_PREFIX="${D}" install || die
dodoc AUTHORS README.md
dosym "${ERL_LIBDIR}/bin/erl" /usr/bin/erl
dosym "${ERL_LIBDIR}/bin/erlc" /usr/bin/erlc
dosym "${ERL_LIBDIR}/bin/escript" /usr/bin/escript
dosym \
"${ERL_LIBDIR}/lib/erl_interface-${ERL_INTERFACE_VER}/bin/erl_call" \
/usr/bin/erl_call
dosym "${ERL_LIBDIR}/erts-${ERL_ERTS_VER}/bin/beam" /usr/bin/beam
use smp && dosym "${ERL_LIBDIR}/erts-${ERL_ERTS_VER}/bin/beam.smp" /usr/bin/beam.smp
## Remove ${D} from the following files
sed -e "s:${D}::g" -i "${ED}${ERL_LIBDIR}/bin/erl" || die
sed -e "s:${D}::g" -i "${ED}${ERL_LIBDIR}/bin/start" || die
grep -rle "${D}" "${ED}/${ERL_LIBDIR}/erts-${ERL_ERTS_VER}" | xargs sed -i -e "s:${D}::g"
## Clean up the no longer needed files
rm "${ED}/${ERL_LIBDIR}/Install"||die
for i in "${WORKDIR}"/man/man* ; do
dodir "${ERL_LIBDIR}/${i##${WORKDIR}}"
done
for file in "${WORKDIR}"/man/man*/*.[1-9]; do
# doman sucks so we can't use it
cp ${file} "${ED}/${ERL_LIBDIR}"/man/man${file##*.}/
done
# extend MANPATH, so the normal man command can find it
# see bug 189639
dodir /etc/env.d/
echo "MANPATH=\"${EPREFIX}${ERL_LIBDIR}/man\"" > "${ED}/etc/env.d/90erlang"
if use doc ; then
dohtml -A README,erl,hrl,c,h,kwc,info -r \
"${WORKDIR}"/doc "${WORKDIR}"/lib "${WORKDIR}"/erts-*
fi
if use emacs ; then
pushd "${S}"
elisp-install erlang lib/tools/emacs/*.{el,elc}
sed -e "s:/usr/share:${EPREFIX}/usr/share:g" \
"${FILESDIR}"/${SITEFILE} > "${T}"/${SITEFILE}
elisp-site-file-install "${T}"/${SITEFILE}
popd
fi
# prepare erl for SMP, fixes bug #188112
use smp && sed -i -e 's:\(exec.*erlexec\):\1 -smp:' \
"${ED}/${ERL_LIBDIR}/bin/erl"
newinitd "${FILESDIR}"/epmd.init epmd || die
}
pkg_postinst() {
use emacs && elisp-site-regen
elog
elog "If you need a symlink to one of Erlang's binaries,"
elog "please open a bug on http://bugs.gentoo.org/"
elog
elog "Gentoo's versioning scheme differs from the author's, so please refer to this version as ${MY_PV}"
elog
}
pkg_postrm() {
use emacs && elisp-site-regen
}
|