# Template file for 'systemd'
pkgname=systemd
version=208
revision=4
patch_args="-Np1"
short_desc="A system and service manager for Linux"
maintainer="Juan RP <xtraeme@gmail.com>"
homepage="http://www.freedesktop.org/wiki/Software/systemd"
license="LGPL-2.1, GPL-2, MIT"
distfiles="http://www.freedesktop.org/software/$pkgname/$pkgname-$version.tar.xz"
checksum=aa64fa864466fd5727005c55d61c092828b94b4f857272c0b503695022146390

build_style=gnu-configure
configure_args="--libexecdir=/usr/lib --with-rootprefix=/usr
 --disable-selinux --with-sysvinit-path= --with-sysvrcnd-path=
 --with-rc-local-script-path-start= --with-rc-local-script-path-stop=
 --disable-audit --disable-static --disable-ima --disable-gudev
 --disable-introspection --without-python"

configure_args+=" ac_cv_func_malloc_0_nonnull=yes ac_cv_func_realloc_0_nonnull=yes"

hostmakedepends="which pkg-config automake gettext-devel intltool gperf libxslt
 docbook-xsl libtool libgcrypt-devel"
makedepends="acl-devel dbus-devel>=1.6.10_2 libcap-devel libkmod-devel
 liblzma-devel cryptsetup-devel libblkid-devel libgcrypt-devel pam-devel"

pre_configure() {
	autoreconf -fi
}

# Package build options
build_options="efi microhttpd qrencode tcpwrappers"
desc_option_efi="Enable support for EFI"
desc_option_microhttpd="Enable support for microhttpd"
desc_option_qrencode="Enable support for qrencode"
desc_option_tcpwrappers="Enable support for tcpwrappers"

# Enable EFI by default on x86.
if [ "$XBPS_TARGET_MACHINE" = "i686" -o "$XBPS_TARGET_MACHINE" = "x86_64" ]; then
	build_options_default="efi"
fi

if [ "$build_option_efi" ]; then
	configure_args+=" --enable-efi"
else
	configure_args+=" --disable-efi"
fi

if [ "$build_option_microhttpd" ]; then
	configure_args+=" --enable-microhttpd"
	makedepends+=" libmicrohttpd-devel"
else
	configure_args+=" --disable-microhttpd"
fi

if [ "$build_option_qrencode" ]; then
	configure_args+=" --enable-qrencode"
	makedepends+=" qrencode-devel"
else
	configure_args+=" --disable-qrencode"
fi

if [ "$build_option_tcpwrappers" ]; then
	configure_args+=" --enable-tcpwrap"
	makedepends+=" tcp_wrappers-devel"
else
	configure_args+=" --disable-tcpwrap"
fi

post_install() {
	# Remove useless doc directory.
	rm -rf ${DESTDIR}/usr/share/doc

	vinstall ${FILESDIR}/hostname 644 etc
	vinstall ${FILESDIR}/vconsole.conf 644 etc
	vinstall ${FILESDIR}/os-release 644 etc
	vinstall ${FILESDIR}/locale.conf 644 etc

	printf "d /run/console 755 root root\n" > \
		${DESTDIR}/usr/lib/tmpfiles.d/console.conf
	chmod 644 ${DESTDIR}/usr/lib/tmpfiles.d/console.conf

	# Create halt, reboot, shutdown, poweroff compat symlinks. Some
	# applications expect them for "normal" use!
	vmkdir usr/sbin
	for f in halt poweroff shutdown reboot; do
		ln -sf /usr/bin/systemctl ${DESTDIR}/usr/sbin/${f}
	done
	# Create /usr/sbin/init for compatibility.
	ln -sf /usr/lib/systemd/systemd ${DESTDIR}/usr/sbin/init

	# Remove RPM stuff.
	rm -rf ${DESTDIR}/etc/rpm ${DESTDIR}/usr/lib/rpm

	# Disable units in /etc; we do this at post-install time.
	rm -rf ${DESTDIR}/etc/systemd/system/getty.target.wants

	# Create /usr/sbin/udev symlink just for compatibility.
	ln -sf /usr/lib/systemd/systemd-udevd ${DESTDIR}/usr/sbin/udevd

	# Required dirs at run time.
	vinstall ${FILESDIR}/systemd-dirs.tmpfiles 644 \
		usr/lib/tmpfiles.d systemd-dirs.conf

	# fix .so links in manpage stubs
	find ${DESTDIR}/usr/share/man -type f -name '*.[[:digit:]]' \
		-exec sed -ri '1s|^\.so (.*)\.([0-9]+)|.so man\2/\1.\2|' {} +

	# XXX We don't have pam.d/system-auth, use login pam service instead.
	sed -e 's,system-auth,login,g' -i ${DESTDIR}/etc/pam.d/systemd-user
}

libudev-devel_package() {
	depends="libudev>=${version}_${revision}"
	short_desc+=" - udev library (development files)"
	pkg_install() {
		vmove usr/include/libudev.h
		vmove usr/lib/pkgconfig/libudev.pc
		vmove "usr/lib/libudev*.so"
	}
}

libudev_package() {
	short_desc+=" - udev library"
	pkg_install() {
		vmove "usr/lib/libudev.so.*"
	}
}

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

systemd-libs_package() {
	short_desc+=" - runtime libraries"
	replaces="systemd<43_1"
	pkg_install() {
		vmove "usr/lib/libsystemd*.so.*"
	}
}

systemd_package() {
	# Create systemd-journal (gid 24) system group.
	system_groups="systemd-journal:24"
	replaces="nss-myhostname>=0 systemd-analyze>0"
	conf_files="
		/etc/hostname
		/etc/vconsole.conf
		/etc/locale.conf
		/etc/systemd/system.conf
		/etc/systemd/user.conf
		/etc/systemd/journald.conf
		/etc/systemd/logind.conf
		/etc/systemd/bootchart.conf
		/etc/udev/udev.conf"
	depends="xbps-triggers>=0.64 dbus kbd libcap-progs shadow"
	pkg_install() {
		vmove all
	}
}