# Template file for 'dbus'
#
_systemd_version=208

pkgname=dbus
version=1.8.0
revision=2
short_desc="Message bus system"
maintainer="Juan RP <xtraeme@gmail.com>"
license="GPL-2"
homepage="http://dbus.freedesktop.org/"
distfiles="
 ${homepage}/releases/dbus/dbus-${version}.tar.gz
 http://www.freedesktop.org/software/systemd/systemd-${_systemd_version}.tar.xz"
checksum="
 769f8c7282b535ccbe610f63a5f14137a5549834b0b0c8a783e90891b8d70b13
 aa64fa864466fd5727005c55d61c092828b94b4f857272c0b503695022146390"

create_wrksrc=yes
hostmakedepends="pkg-config intltool gperf xmlto"
makedepends="expat-devel libX11-devel libcap-devel"
conf_files="/etc/dbus-1/session.conf /etc/dbus-1/system.conf"

# Package build options
build_options="systemd"
desc_option_systemd="Enable support for systemd"

# Disable systemd option for *-musl.
case "$XBPS_TARGET_MACHINE" in
	*-musl) ;;
	*) build_options_default="systemd";;
esac

if [ "$build_option_systemd" ]; then
	if [ "$CROSS_BUILD" ]; then
		_systemddir="$XBPS_CROSS_BASE"
		_confargs="--host=$XBPS_CROSS_TRIPLET --with-sysroot=$XBPS_CROSS_BASE"
		hostmakedepends+=" libtool automake gettext-devel libgcrypt-devel"
	else
		_systemddir="/usr"
	fi
fi

_dbus_bootstrap() {
	# Build a temporary dbus; we are only interested in libdbus.
	mkdir ${wrksrc}/dbus-bootstrap
	cd ${wrksrc}/dbus-bootstrap

	../dbus-${version}/configure ${_confargs} \
		--prefix=${wrksrc}/tmpbuild/usr \
		--disable-systemd --without-x \
		--enable-abstract-sockets ac_cv_have_abstract_sockets=yes
	make ${makejobs}
	make install
}

_systemd_bootstrap() {
	# Build a temporary systemd; we are only interested in libsystemd-login.
	if [ ! -d ${wrksrc}/systemd-bootstrap ]; then
		if [ "$CROSS_BUILD" ]; then
			cd ${wrksrc}/systemd-${_systemd_version}
			autoreconf -fi
		fi
		mkdir ${wrksrc}/systemd-bootstrap
	fi
	cd ${wrksrc}/systemd-bootstrap

	unset PKG_CONFIG_SYSROOT_DIR PKG_CONFIG_PATH

	env PKG_CONFIG_LIBDIR=${wrksrc}/tmpbuild/usr/lib/pkgconfig \
		../systemd-${_systemd_version}/configure ${_confargs} \
		--prefix=/usr --disable-nls \
		--disable-introspection --disable-kmod --disable-blkid \
		--disable-ima --disable-chkconfig --disable-selinux \
		--disable-xz --disable-tcpwrap --disable-pam \
		--disable-acl --disable-xattr --disable-gcrypt \
		--disable-audit --disable-libcryptsetup --disable-qrencode \
		--disable-microhttpd --disable-binfmt --disable-vconsole \
		--disable-readahead --disable-bootchart --disable-quotacheck \
		--disable-randomseed --disable-hostnamed \
		--disable-timedated --disable-localed --disable-coredump \
		--disable-myhostname --disable-gudev --disable-keymap \
		--disable-manpages --without-python --with-sysvinit-path= \
		--with-sysvrcnd-path= --disable-tests

	make ${makejobs}
	make DESTDIR=${wrksrc}/systemd-install install

	# Copy libsystemd-*, headers and pkg-config files.
	cp -a ${wrksrc}/systemd-install/usr/lib/libsystemd* \
		${_systemddir}/lib/
	rm -f ${_systemddir}/lib/*.la
	cp -a ${wrksrc}/systemd-install/usr/include/* \
		${_systemddir}/include/
	cp -a ${wrksrc}/systemd-install/usr/lib/pkgconfig/libsystemd* \
		${_systemddir}/lib/pkgconfig/
}

pre_configure() {
	if [ "$build_option_systemd" ]; then
		if [ ! -f ${wrksrc}/dbus_bootstrap_done ]; then
			_dbus_bootstrap
			touch -f ${wrksrc}/dbus_bootstrap_done
		fi
		if [ ! -f ${wrksrc}/systemd_bootstrap_done ]; then
			_systemd_bootstrap
			touch -f ${wrksrc}/systemd_bootstrap_done
		fi
	fi
}

do_configure() {
	cd ${wrksrc}/dbus-${version}

	if [ "$build_option_systemd" ]; then
		if [ "$CROSS_BUILD" ]; then
			autoreconf -fi
			export PKG_CONFIG_LIBDIR="${_systemddir}/lib/pkgconfig"
		fi
	fi

	./configure ${configure_args} \
		--disable-selinux --enable-userdb-cache --with-xml=expat \
		--disable-dnotify --enable-inotify --with-dbus-user=dbus \
		--disable-doxygen-docs --enable-xml-docs --disable-static \
		--disable-tests --enable-epoll --disable-asserts \
		--with-system-socket=/run/dbus/system_bus_socket \
		--with-system-pid-file=/run/dbus/pid \
		--with-console-auth-dir=/run/console/ \
		--with-systemdsystemunitdir=/usr/lib/systemd/system \
		--enable-abstract-sockets \
		ac_cv_have_abstract_sockets=yes
}

do_build() {
	cd ${wrksrc}/dbus-${version}
	make ${makejobs}
}

do_install() {
	cd ${wrksrc}/dbus-${version}
	make DESTDIR=${DESTDIR} install

	# Remove systemd temp files from masterdir.
	if [ "$build_option_systemd" ]; then
		rm -f ${_systemddir}/lib/pkgconfig/libsystemd-*
		rm -rf ${_systemddir}/include/systemd
		rm -f ${_systemddir}/lib/libsystemd-*
	fi
}

dbus-devel_package() {
	depends="expat-devel dbus-libs>=${version}_${revision}"
	short_desc+=" - development files"
	pkg_install() {
		vmove usr/include
		vmove "usr/lib/dbus-*"
		vmove usr/lib/pkgconfig
		vmove "usr/lib/*.so"
		vmove usr/share/doc
	}
}

dbus-libs_package() {
	short_desc+=" - shared libraries"
	pkg_install() {
		vmove "usr/lib/*.so.*"
	}
}

dbus-x11_package() {
	replaces="dbus<1.4.16_2"
	short_desc+=" - X11 support"
	pkg_install() {
		vmove usr/bin/dbus-launch
		vmove usr/share/man/man1/dbus-launch.1
	}
}