blob: a82663815da0681293369cb6927f1d02f18bd369 (
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
|
# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
EAPI=5
AUTOTOOLS_AUTORECONF=1
AUTOTOOLS_PRUNE_LIBTOOL_FILES=all
JAVA_PKG_IUSE="source"
PYTHON_COMPAT=( python2_7 )
DISTUTILS_OPTIONAL=1
inherit autotools-multilib eutils flag-o-matic distutils-r1 java-pkg-opt-2 elisp-common
DESCRIPTION="Google's Protocol Buffers -- an efficient method of encoding structured data"
HOMEPAGE="https://code.google.com/p/protobuf/"
SRC_URI="https://protobuf.googlecode.com/files/${P}.tar.bz2"
LICENSE="Apache-2.0"
SLOT="0/8" # subslot = soname major version
KEYWORDS="amd64 arm -hppa ~ia64 ~mips ppc ~ppc64 x86 ~amd64-linux ~arm-linux ~x86-linux ~x64-macos ~x86-macos"
IUSE="emacs examples java python static-libs vim-syntax"
CDEPEND="emacs? ( virtual/emacs )
python? ( ${PYTHON_DEPS} )"
DEPEND="${CDEPEND}
java? ( >=virtual/jdk-1.5 )
python? ( dev-python/setuptools[${PYTHON_USEDEP}] )"
RDEPEND="${CDEPEND}
java? ( >=virtual/jre-1.5 )"
src_prepare() {
append-cxxflags -DGOOGLE_PROTOBUF_NO_RTTI
epatch "${FILESDIR}"/${P}-x32.patch
# breaks Darwin, bug #472514
[[ ${CHOST} != *-darwin* ]] && epatch "${FILESDIR}"/${PN}-2.3.0-asneeded-2.patch
# fix build with emacs-24.4 (bug #524100)
epatch "${FILESDIR}"/${P}-emacs-24.4.patch
autotools-multilib_src_prepare
if use python; then
cd python && distutils-r1_src_prepare
fi
}
multilib_src_compile() {
default
if multilib_is_native_abi; then
if use python; then
einfo "Compiling Python library ..."
pushd "${S}"/python >/dev/null
PROTOC="${BUILD_DIR}"/src/protoc distutils-r1_src_compile
popd >/dev/null
fi
if use java; then
einfo "Compiling Java library ..."
pushd "${S}" >/dev/null
"${BUILD_DIR}"/src/protoc --java_out=java/src/main/java --proto_path=src src/google/protobuf/descriptor.proto
mkdir java/build
pushd java/src/main/java >/dev/null
ejavac -d ../../../build $(find . -name '*.java') || die "java compilation failed"
popd >/dev/null
jar cf ${PN}.jar -C java/build . || die "jar failed"
popd >/dev/null
fi
fi
}
src_compile() {
autotools-multilib_src_compile
if use emacs; then
elisp-compile "${S}"/editors/protobuf-mode.el
fi
}
src_test() {
autotools-multilib_src_test check
if use python; then
pushd python >/dev/null
distutils-r1_src_test
popd >/dev/null
fi
}
src_install() {
autotools-multilib_src_install
dodoc CHANGES.txt CONTRIBUTORS.txt README.txt
if use python; then
pushd python >/dev/null
distutils-r1_src_install
popd >/dev/null
fi
if use java; then
java-pkg_dojar ${PN}.jar
use source && java-pkg_dosrc java/src/main/java/*
fi
if use vim-syntax; then
insinto /usr/share/vim/vimfiles/syntax
doins editors/proto.vim
insinto /usr/share/vim/vimfiles/ftdetect/
doins "${FILESDIR}"/proto.vim
fi
if use emacs; then
elisp-install ${PN} editors/protobuf-mode.el*
elisp-site-file-install "${FILESDIR}"/70${PN}-gentoo.el
fi
if use examples; then
dodoc -r examples
docompress -x /usr/share/doc/${PF}/examples
fi
}
pkg_postinst() {
use emacs && elisp-site-regen
}
pkg_postrm() {
use emacs && elisp-site-regen
}
|