summaryrefslogtreecommitdiff
blob: 5d1e41f3e99422018702f1bf21a66e4e284eecca (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
# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/x11-misc/xscreensaver/xscreensaver-5.04.ebuild,v 1.2 2007/12/30 20:06:21 drac Exp $

inherit autotools eutils fixheadtails flag-o-matic pam

DESCRIPTION="A modular screen saver and locker for the X Window System"
SRC_URI="http://www.jwz.org/xscreensaver/${P}.tar.gz"
HOMEPAGE="http://www.jwz.org/xscreensaver"

LICENSE="BSD"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc ~x86 ~x86-fbsd"
IUSE="jpeg new-login offensive opengl pam suid xinerama"

RDEPEND="x11-libs/libXxf86misc
	x11-apps/xwininfo
	x11-apps/appres
	media-libs/netpbm
	>=sys-libs/zlib-1.1.4
	>=dev-libs/libxml2-2.5
	>=x11-libs/gtk+-2
	>=gnome-base/libglade-1.99
	>=dev-libs/glib-2
	pam? ( virtual/pam )
	jpeg? ( media-libs/jpeg )
	opengl? ( virtual/opengl )
	xinerama? ( x11-libs/libXinerama )
	new-login? ( gnome-base/gdm )"
DEPEND="${RDEPEND}
	x11-proto/xf86vidmodeproto
	x11-proto/xextproto
	x11-proto/scrnsaverproto
	x11-proto/recordproto
	x11-proto/xf86miscproto
	sys-devel/bc
	dev-util/pkgconfig
	sys-devel/gettext
	dev-util/intltool
	xinerama? ( x11-proto/xineramaproto )"

src_unpack() {
	unpack ${A}
	cd "${S}"

	# Gentoo specific hacks and settings.
	epatch "${FILESDIR}"/${P}-gentoo.patch
	use offensive || epatch "${FILESDIR}"/${P}-nsfw.patch

	# TODO. Get this fixed upstream.
	epatch "${FILESDIR}"/${P}-desktop-entry.patch

	eautoreconf

	# TODO. Get this fixed upstream.
	ht_fix_all
}

src_compile() {
	# Simple workaround for the flurry screensaver.
	# TODO. Figure out if this is still needed?
	filter-flags -mabi=altivec
	filter-flags -maltivec
	append-flags -U__VEC__

	unset BC_ENV_ARGS

	econf \
		--with-x-app-defaults=/usr/share/X11/app-defaults \
		--with-hackdir=/usr/lib/misc/xscreensaver \
		--with-configdir=/usr/share/xscreensaver/config \
		--x-libraries=/usr/$(get_libdir) \
		--x-includes=/usr/include \
		--with-dpms-ext \
		--with-xf86vmode-ext \
		--with-xf86gamma-ext \
		--with-proc-interrupts \
		--with-xpm \
		--with-xshm-ext \
		--with-xdbe-ext \
		--enable-locking \
		--with-gtk \
		--without-kerberos \
		--without-gle \
		$(use_with suid setuid-hacks) \
		$(use_with new-login login-manager) \
		$(use_with xinerama xinerama-ext) \
		$(use_with pam) \
		$(use_with opengl gl) \
		$(use_with jpeg)

	# Bug 155049.
	emake -j1 || die "emake failed."
}

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

	dodoc README*

	use pam && fperms 755 /usr/bin/xscreensaver
	pamd_mimic_system xscreensaver auth

	# Bug 135549.
	rm -f "${D}"/usr/share/xscreensaver/config/electricsheep.xml
	rm -f "${D}"/usr/share/xscreensaver/config/fireflies.xml
	dodir /usr/share/man/man6x
	mv "${D}"/usr/share/man/man6/worm.6 \
		"${D}"/usr/share/man/man6x/worm.6x
}

pkg_postinst() {
	if ! use new-login; then
		elog
		elog "You have chosen to not use the new-login USE flag."
		elog "This is a new USE flag which enables individuals to"
		elog "create new logins when the screensaver is active,"
		elog "allowing others to use their account, even though the"
		elog "screen is locked to another account. If you want this"
		elog "feature, please recompile with USE=\"new-login\"."
		elog
	fi
}