summaryrefslogtreecommitdiff
blob: 59b5dbce93a530e41f0588c87a64d6dac1359e9d (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
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-www/gnash/gnash-0.8.3.ebuild,v 1.7 2008/10/19 11:49:10 loki_val Exp $

EAPI=1

inherit autotools nsplugins kde-functions qt3 multilib

set-kdedir 3.5

DESCRIPTION="Gnash is a GNU Flash movie player that supports many SWF v7 features"
HOMEPAGE="http://www.gnu.org/software/gnash"
SRC_URI="mirror://gnu/${PN}/${PV}/${P}.tar.bz2"

LICENSE="GPL-3"
SLOT="0"
KEYWORDS="~amd64 ~ppc ~x86"
IUSE="+agg -cairo dbus -fbcon -ffmpeg +gstreamer +gtk +kde +nsplugin -opengl -qt3 -sdl test video_cards_i810"

RDEPEND="
	agg? ( >=x11-libs/agg-2.5 )
	opengl? (
		!agg? (
			virtual/opengl
			gtk? ( x11-libs/gtkglext )
		)
	)
	cairo? (
		!opengl? (
			!agg? (
				x11-libs/cairo
			)
		)
	)

	!agg? ( !cairo? ( !opengl? ( >=x11-libs/agg-2.5 ) ) )
	gtk? (
		x11-libs/gtk+:2
		x11-libs/pango
		dev-libs/glib
		dev-libs/atk
	)
	kde? ( kde-base/kdelibs:3.5 )
	qt3? ( x11-libs/qt:3 )
	sdl? ( media-libs/libsdl )
	!gtk? ( !kde? ( !qt3? ( !sdl? ( !fbcon? (
		x11-libs/gtk+:2
		x11-libs/pango
		dev-libs/glib
		dev-libs/atk
		kde-base/kdelibs:3.5
	) ) ) ) )
	dev-libs/libxml2
	sys-libs/zlib
	media-libs/jpeg
	media-libs/libpng
	net-misc/curl

	ffmpeg? (
		!gstreamer? (
			media-libs/libsdl
			=media-video/ffmpeg-0.4.9_p20080326
		)
	)

	gstreamer? (
		media-plugins/gst-plugins-ffmpeg
		media-plugins/gst-plugins-mad
	)
	>=dev-libs/boost-1.35.0
	x11-libs/libX11
	x11-libs/libXi
	x11-libs/libXmu
	x11-libs/libXt
	x11-proto/xproto
	dbus? ( sys-apps/dbus )
	sys-devel/libtool
	"
DEPEND="${RDEPEND}
	dev-util/pkgconfig
	test? ( dev-util/dejagnu
		media-gfx/swftools
		>=media-libs/ming-0.4.0_beta5 )"

pkg_setup() {
	if use !gtk && use !kde && use !fbcon && use !qt3
	then
		einfo "No Graphical User Interface selected. Enabling kde and gtk"
		einfo "since they are the defaults."
		export defaultguis=1
	fi

	if use !agg && use !opengl && use cairo && use kde
	then
		eerror "The cairo renderer and the kde gui were selected"
		eerror "They are incompatible with each other"
		eerror "Disable one of them through the respective USE flag"
		die "cairo and kde USE flags enabled at the same time"
	fi

	if use !agg && use opengl && use fbcon
	then
		eerror "The opengl renderer and the fbcon gui were selected"
		eerror "They are incompatible with each other"
		eerror "Disable one of them through the respective USE flag"
		die "opengl and fbcon USE flags enabled at the same time"
	fi

	if use nsplugin && use !gtk && [ -z ${defaultguis} ]
	then
		eerror "The Firefox plugin was selected but not the GTK frontend."
		eerror "Disable the nsplugin USE flag or enable the gtk USE flag"
		die "nsplugin USE flag enabled with required gtk USE flag disabled"
	fi

	if use ffmpeg && use gstreamer
	then
		einfo "Only 1 audio output source can be compiled into ${PN}."
		einfo "Selecting gstreamer, since that's upstream default."
		einfo "To enable ffmpeg you must also disable gstreamer."
	fi

	if use agg
	then
		if use opengl || use cairo
		then
			einfo "Only 1 renderer can be activated at any one time."
			einfo "If more than one renderer is activated, the order of preference is:"
			einfo "agg > opengl > cairo"
		fi
	else
		if use !opengl && use !cairo
		then
			einfo "No renderer selected from agg, opengl, cairo"
			einfo "Default renderer agg selected."
		fi
	fi

	if use !ffmpeg && use !gstreamer
	then
		ewarn "You did not select any media: ffmpeg gstreamer"
		ewarn "You will not have sound!"
	fi

}

src_unpack() {
	unpack ${A}
	cd "${S}"
	sed -i \
		-e 's,config.h,gnashconfig.h,' \
		./extensions/dbus/dbus_ext.h || die
	epatch "${FILESDIR}"/${P}-boost-dynamic-link.patch
	epatch "${FILESDIR}"/${P}-libtool-2.2.patch
	eautoreconf
}

src_compile() {
	local myconf

	if use nsplugin ; then
		myconf="${myconf} --enable-nsapi --with-npapi-plugindir=/opt/netscape/plugins"
	else
		myconf="${myconf} --disable-nsapi"
	fi

#Select renderer.
	if use agg ; then
		myconf="${myconf} --enable-renderer=agg"
	elif use opengl ; then
		myconf="${myconf} --enable-renderer=ogl"
	elif use cairo ; then
		myconf="${myconf} --enable-renderer=cairo"
	else
		myconf="${myconf} --enable-renderer=agg"
	fi

#Select which Graphical User Interfaces to build.
	local	guis="" \
		gui=""
	for gui in fbcon-FB gtk-GTK2 kde-KDE qt3-QT sdl-SDL
	do
		use ${gui/-*} && guis="${guis},${gui/*-}"
	done
	guis=${guis#,}
	if [ -z "${guis}" ]
	then
		guis="GTK2,KDE"
	fi

#Select which extensions to build.
	local	extensions="FILEIO" \
		extension=""
	for extension in dbus-DBUS gtk-GTK2 test-DEJAGNU
	do
		use ${extension%-*} && extensions="${extensions},${extension#*-}"
	done

#Select audio output extension.
	if use gstreamer
	then
		myconf="${myconf} --enable-media=gst"
	elif use ffmpeg
	then
		myconf="${myconf} --enable-media=ffmpeg"
	else
		myconf="${myconf} --enable-media=none"
	fi

	econf \
		$(use_enable video_cards_i810 i810-lod-bias) \
		--enable-gui=${guis} \
		--with-extensions=${extensions} \
		--with-ffmpeg-incl=/usr/include \
		--with-kde-pluginprefix=${KDEDIR} \
		--without-included-ltdl \
		--with-ltdl-include=/usr/include \
		--with-ltdl-lib=/usr/lib \
		${myconf} \
		|| die "econf failed"
	emake || die "emake failed"
}

src_test() {
	cd testsuite
	make check || die  "make check failed"
	./anaylse-results.sh > TESTRESULTS.txt
	cat TESTRESULTS.txt
}

src_install() {
	emake DESTDIR="${D}" install || die "emake install failed"

	if use nsplugin
	then
		emake DESTDIR="${D}" install-plugin \
			|| die "emake install-plugin failed"
		inst_plugin /opt/netscape/plugins/libgnashplugin.so
	else
		rm -rf "${D}/opt"
	fi

	if use kde
	then
		pushd plugin/klash &> /dev/null
		make DESTDIR="${D}" install-plugin
		popd &> /dev/null
	fi

	use test && dodoc testsuite/TESTRESULTS.txt

	dodoc AUTHORS ChangeLog* NEWS README
}

pkg_postinst() {
	ewarn "BETA"
	ewarn "gnash is still in heavy development"
	ewarn "please report gnash bugs upstream to the gnash devs"
	if use test
	then
		ewarn	"Test results can be found in /usr/share/doc/${PF}/TESTRESULTS.txt"
		ewarn	"Currently \"acceptable\" failing tests:"
		ewarn	"Unexpected failures follow:"
		ewarn	" --=[ ./actionscript.all ]=--"
		ewarn	"FAIL: astests-v5-Runner: expected: 584 obtained: 64 [./Date.as:549]"
		ewarn	"FAIL: astests-v5-Runner: expected: 0 obtained: 8 [./Date.as:550]"
		ewarn	"FAIL: astests-v5-Runner: expected: 4 obtained: 45 [./Date.as:551]"
		ewarn	"FAIL: astests-v6-Runner: expected: 584 obtained: 64 [./Date.as:549]"
		ewarn	"FAIL: astests-v6-Runner: expected: 0 obtained: 8 [./Date.as:550]"
		ewarn	"FAIL: astests-v6-Runner: expected: 4 obtained: 45 [./Date.as:551]"
		ewarn	"FAIL: astests-v7-Runner: expected: 584 obtained: 64 [./Date.as:549]"
		ewarn	"FAIL: astests-v7-Runner: expected: 0 obtained: 8 [./Date.as:550]"
		ewarn	"FAIL: astests-v7-Runner: expected: 4 obtained: 45 [./Date.as:551]"
		ewarn	"FAIL: astests-v8-Runner: expected: 584 obtained: 64 [./Date.as:549]"
		ewarn	"FAIL: astests-v8-Runner: expected: 0 obtained: 8 [./Date.as:550]"
		ewarn	"FAIL: astests-v8-Runner: expected: 4 obtained: 45 [./Date.as:551]"
	fi
}