summaryrefslogtreecommitdiff
blob: ec65558c15c438a9664790ec0c54e99a5bc70639 (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
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
181
182
183
184
185
186
187
188
189
190
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-libs/gtk-vnc/gtk-vnc-0.5.2.ebuild,v 1.7 2013/08/18 13:44:35 ago Exp $

EAPI="5"
PYTHON_COMPAT=( python2_{6,7} )
VALA_MIN_API_VERSION="0.16"
VALA_USE_DEPEND="vapigen"

inherit eutils gnome.org python-r1 vala

DESCRIPTION="VNC viewer widget for GTK"
HOMEPAGE="https://live.gnome.org/gtk-vnc"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~alpha amd64 ~arm ~ia64 ~ppc ~ppc64 ~sparc x86 ~x86-fbsd"
IUSE="examples +gtk3 +introspection pulseaudio python sasl vala"
REQUIRED_USE="
	python? ( ${PYTHON_REQUIRED_USE} )
	vala? ( gtk3 introspection )
"

# libview is used in examples/gvncviewer -- no need
# glib-2.30.1 needed to avoid linking failure due to .la files (bug #399129)
COMMON_DEPEND="
	>=dev-libs/glib-2.30.1:2
	>=dev-libs/libgcrypt-1.4.2
	dev-libs/libgpg-error
	>=net-libs/gnutls-1.4
	>=x11-libs/cairo-1.2
	>=x11-libs/gtk+-2.18:2
	x11-libs/libX11
	gtk3? ( >=x11-libs/gtk+-2.91.3:3 )
	introspection? ( >=dev-libs/gobject-introspection-0.9.4 )
	pulseaudio? ( media-sound/pulseaudio )
	python? (
		${PYTHON_DEPS}
		>=dev-python/pygtk-2:2[${PYTHON_USEDEP}] )
	sasl? ( dev-libs/cyrus-sasl )
"
RDEPEND="${COMMON_DEPEND}"
DEPEND="${COMMON_DEPEND}
	>=dev-lang/perl-5
	>=dev-util/intltool-0.40
	sys-devel/gettext
	virtual/pkgconfig
	vala? (
		$(vala_depend)
		>=dev-libs/gobject-introspection-0.9.4 )
"
# eautoreconf requires gnome-common

GTK2_BUILDDIR="${WORKDIR}/${P}_gtk2"
GTK3_BUILDDIR="${WORKDIR}/${P}_gtk3"

src_prepare() {
	mkdir -p "${GTK2_BUILDDIR}" || die
	mkdir -p "${GTK3_BUILDDIR}" || die
	prepare_python() {
		mkdir -p "${BUILD_DIR}" || die
	}
	if use python; then
		python_foreach_impl prepare_python
	fi

	# Remove a few files that were autogenerated during distcheck.
	# Having these around in srcdir breaks out of tree build since they're
	# expected to be in builddir, which is correct for trunk builds since
	# they're generated files, not source files. Funny false dichotomy.
	rm -vf "${S}"/src/{vncconnectionenums.[ch],vncdisplayenums.[ch]}

	# Fix incorrect codegendir check: h2def.py is in pygobject, not pygtk, upstream bug#????
	sed -e 's/codegendir pygtk-2.0/codegendir pygobject-2.0/g' \
		-i src/Makefile.* || die

	# libtool seems unable to find this via VPATH so help it
	sed -r "s:(gtkvnc_la_LIBADD =) libgtk-vnc-.*\.la:\1 ${GTK2_BUILDDIR}/src/libgtk-vnc-1.0.la:" \
		-i src/Makefile.{am,in} || die

	vala_src_prepare
}

src_configure() {
	local myconf
	myconf="
		$(use_with examples) \
		$(use_enable introspection) \
		$(use_with pulseaudio) \
		$(use_with sasl) \
		--with-coroutine=gthread \
		--without-libview \
		--disable-static \
		--disable-vala"

	cd "${GTK2_BUILDDIR}" || die
	einfo "Running configure in ${GTK2_BUILDDIR}"
	ECONF_SOURCE="${S}" econf ${myconf} \
		--with-python=no \
		--with-gtk=2.0

	configure_python() {
		ECONF_SOURCE="${S}" econf ${myconf} \
			$(use_with python) \
			--with-gtk=2.0
	}
	if use python; then
		python_foreach_impl run_in_build_dir configure_python
	fi

	if use gtk3; then
		cd "${GTK3_BUILDDIR}" || die
		einfo "Running configure in ${GTK3_BUILDDIR}"
		# Python support is via gobject-introspection
		# Ex: from gi.repository import GtkVnc
		ECONF_SOURCE="${S}" econf ${myconf} \
			$(use_enable vala) \
			--with-python=no \
			--with-gtk=3.0
	fi
}

src_compile() {
	cd "${GTK2_BUILDDIR}" || die
	einfo "Running make in ${GTK2_BUILDDIR}"
	emake

	compile_python() {
		cd "${BUILD_DIR}"/src || die
		# CPPFLAGS set to help find includes for gvnc.override
		emake gtkvnc.la \
			VPATH="${S}/src:${GTK2_BUILDDIR}/src:${BUILD_DIR}/src" \
			CPPFLAGS="${CPPFLAGS} -I${GTK2_BUILDDIR}/src"
	}
	if use python; then
		python_foreach_impl run_in_build_dir compile_python
	fi

	if use gtk3; then
		cd "${GTK3_BUILDDIR}" || die
		einfo "Running make in ${GTK3_BUILDDIR}"
		emake
	fi
}

src_test() {
	cd "${GTK2_BUILDDIR}" || die
	einfo "Running make check in ${GTK2_BUILDDIR}"
	default

	if use gtk3; then
		cd "${GTK3_BUILDDIR}" || die
		einfo "Running make check in ${GTK3_BUILDDIR}"
		default
	fi
}

src_install() {
	# Parallel installation fails sometimes, bug #328273, upstream bug #651923

	dodoc AUTHORS ChangeLog NEWS README

	cd "${GTK2_BUILDDIR}" || die
	einfo "Running make install in ${GTK2_BUILDDIR}"
	MAKEOPTS="${MAKEOPTS} -j1" default

	install_python() {
		cd "${BUILD_DIR}"/src || die
		emake install-pyexecLTLIBRARIES DESTDIR="${D}" \
			VPATH="${S}/src:${GTK2_BUILDDIR}/src:${BUILD_DIR}/src" \
			CPPFLAGS="${CPPFLAGS} -I${GTK2_BUILDDIR}/src"
	}
	if use python; then
		python_foreach_impl run_in_build_dir install_python
	fi

	if use gtk3; then
		cd "${GTK3_BUILDDIR}" || die
		einfo "Running make install in ${GTK3_BUILDDIR}"
		MAKEOPTS="${MAKEOPTS} -j1" default
	fi

	prune_libtool_files
}

run_in_build_dir() {
	pushd "${BUILD_DIR}" > /dev/null || die
	"$@"
	popd > /dev/null
}