summaryrefslogtreecommitdiff
blob: 3e26fc93407e43d726bd04cffa2580dfcc261def (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
# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sys-apps/dbus/dbus-0.60-r4.ebuild,v 1.14 2006/04/09 16:56:28 steev Exp $

inherit eutils mono python multilib debug qt3 autotools toolchain-funcs

DESCRIPTION="A message bus system, a simple way for applications to talk to each other"
HOMEPAGE="http://dbus.freedesktop.org/"
SRC_URI="http://dbus.freedesktop.org/releases/${P}.tar.gz"

LICENSE="|| ( GPL-2 AFL-2.1 )"
SLOT="0"
KEYWORDS="alpha amd64 arm hppa ia64 ~mips ppc ppc64 s390 sh sparc x86"
IUSE="doc gcj gtk mono python qt selinux X xml"

RDEPEND=">=dev-libs/glib-2.6
	X? ( || ( ( x11-libs/libXt x11-libs/libX11 ) virtual/x11 ) )
	gtk? ( >=x11-libs/gtk+-2.6 )
	mono? ( >=dev-lang/mono-0.95 )
	python? ( >=dev-lang/python-2.4 >=dev-python/pyrex-0.9.3-r2 )
	qt? ( $(qt_min_version 3.3) )
	selinux? ( sys-libs/libselinux )
	xml? ( >=dev-libs/libxml2-2.6.21 )
	!xml? ( dev-libs/expat )"

DEPEND="${RDEPEND}
	dev-util/pkgconfig
	doc? (	app-doc/doxygen
		app-text/xmlto
		mono? ( >=dev-util/monodoc-0.16
		>=dev-util/mono-tools-1.1.9 ) )"

pkg_setup() {
	if use gcj && ! built_with_use "=sys-devel/gcc-$(gcc-fullversion)*" gcj; then
		eerror "To build the Java bindings for dbus, you must re-build gcc"
		eerror "with the 'gcj' USE flag. Add 'gcj' to USE and re-emerge gcc."
		die "gcc needs gcj support to use the java bindings"
	fi

	PKG_CONFIG_PATH="${QTDIR}/lib/pkgconfig"
}

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

	# Fix gcj now with gcc4 support
	epatch "${FILESDIR}"/${PN}-0.60-gcj-2.patch
	# Fix QT
	epatch "${FILESDIR}"/${PN}-0.60-qt.patch
	# Fix .pc file for QT
	epatch "${FILESDIR}"/${PN}-0.60-qt-pc.patch
	# Fix Mono Docs
	epatch "${FILESDIR}"/${PN}-0.60-mono-docs.patch
	# Fix longlong on AMD64
	epatch "${FILESDIR}"/${PN}-0.60-qdbusmarshall.patch
	# Fix sizeof() on AMD64
	epatch "${FILESDIR}"/${PN}-0.60-mono-arguments.patch

	eautoreconf
}

src_compile() {
	local myconf=""

	# Choose which xml library to use
	if use xml; then
		myconf="${myconf} --with-xml=libxml"
	else
		myconf="${myconf} --with-xml=expat"
	fi

	# Only enable mono-docs if both mono and doc is defined
	use mono && myconf="${myconf} $(use_enable doc mono-docs)"

	if use qt; then
		myconf="${myconf} --enable-qt3=${QTDIR} QT_MOC=/usr/bin/moc QT3_MOC=${QTDIR}/bin/moc"
	else
		myconf="${myconf} --disable-qt --disable-qt3"
	fi

	econf \
		$(use_with X x) \
		$(use_enable gtk) \
		$(use_enable python) \
		$(use_enable mono) \
		$(use_enable kernel_linux dnotify) \
		$(use_enable gcj) \
		$(use_enable selinux) \
		$(use_enable debug verbose-mode) \
		$(use_enable debug checks) \
		$(use_enable debug asserts) \
		--enable-glib \
		--with-system-pid-file=/var/run/dbus.pid \
		--with-system-socket=/var/run/dbus/system_bus_socket \
		--with-session-socket-dir=/tmp \
		--with-dbus-user=messagebus \
		$(use_enable doc doxygen-docs) \
		--disable-xml-docs \
		${myconf} \
		|| die "econf failed"

	# Don't build the mono examples, they require gtk-sharp
	touch "${S}"/mono/example/{bus-listener,echo-{server,client}}.exe

	# after the compile, it uses a selinuxfs interface to
	# check if the SELinux policy has the right support
	use selinux && addwrite /selinux/access

	# for gcj support
	emake -j1 || die "make failed"
}

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

	# initscript
	newinitd "${FILESDIR}"/dbus.init-0.60 dbus

	# dbus X session script (#77504)
	# FIXME : turns out to only work for GDM, better solution needed
	exeinto /etc/X11/xinit/xinitrc.d/
	doexe "${FILESDIR}"/30-dbus

	# needs to exist for the system socket
	keepdir /var/run/dbus

	keepdir /usr/lib/dbus-1.0/services
	keepdir /usr/share/dbus-1/services

	dodoc AUTHORS ChangeLog HACKING NEWS README doc/TODO
	if use doc; then
		dohtml doc/*html
	fi
}

pkg_preinst() {
	enewgroup messagebus || die "Problem adding messagebus group"
	enewuser messagebus -1 "-1" -1 messagebus || die "Problem adding messagebus user"
}

pkg_postrm() {
	python_mod_cleanup "${ROOT}"/usr/lib/python*/site-packages/dbus
}

pkg_postinst() {
	python_mod_optimize "${ROOT}"/usr/lib/python*/site-packages/dbus

	einfo "To start the DBUS system-wide messagebus by default"
	einfo "you should add it to the default runlevel :"
	einfo "\`rc-update add dbus default\`"

	ewarn
	ewarn "There have been major ABI/API changes.  This version will not"
	ewarn "work with other packages.  We are not responsible for a broken"
	ewarn "system. The sonames have changed, so you must run a revdep-rebuild"
	ewarn "afterwards to ensure that the packages dont die."
	ewarn
}