--- /home/ssuominen/gentoo-x86/sys-fs/udev/udev-9999.ebuild 2013-04-05 00:04:27.433237460 +0300 +++ udev-9999.ebuild 2013-04-04 21:14:31.829054566 +0300 @@ -11,7 +11,7 @@ KV_min=2.6.32 fi -inherit autotools eutils linux-info multilib toolchain-funcs versionator +inherit autotools eutils linux-info multilib pam toolchain-funcs versionator if [[ ${PV} = 9999* ]]; then EGIT_REPO_URI="git://anongit.freedesktop.org/systemd/systemd" @@ -32,7 +32,7 @@ LICENSE="LGPL-2.1 MIT GPL-2" SLOT="0" -IUSE="acl doc +firmware-loader gudev hwdb introspection keymap +kmod +openrc selinux static-libs" +IUSE="acl doc +firmware-loader gudev hwdb logind introspection keymap +kmod +openrc pam selinux static-libs" RESTRICT="test" @@ -40,6 +40,10 @@ acl? ( sys-apps/acl ) gudev? ( >=dev-libs/glib-2 ) introspection? ( >=dev-libs/gobject-introspection-1.31.1 ) + logind? ( + sys-apps/dbus sys-libs/libcap + pam? ( virtual/pam ) + ) kmod? ( >=sys-apps/kmod-12 ) selinux? ( >=sys-libs/libselinux-2.1.9 ) !=dev-util/gtk-doc-1.18 ) + logind? ( dev-util/gperf ) keymap? ( dev-util/gperf )" if [[ ${PV} = 9999* ]]; then @@ -76,7 +81,7 @@ S=${WORKDIR}/systemd-${PV} -#QA_MULTILIB_PATHS="lib/systemd/systemd-udevd" +QA_MULTILIB_PATHS="usr/lib/systemd/.*" udev_check_KV() { if kernel_is lt ${KV_min//./ }; then @@ -191,16 +196,9 @@ src_configure() { tc-export CC #463846 - use keymap || export ac_cv_path_GPERF=true #452760 local econf_args - econf_args=( - ac_cv_search_cap_init= - ac_cv_header_sys_capability_h=yes - DBUS_CFLAGS=' ' - DBUS_LIBS=' ' - --bindir=/bin --docdir=/usr/share/doc/${PF} --libdir=/usr/$(get_libdir) --with-html-dir=/usr/share/doc/${PF}/html @@ -214,7 +212,6 @@ --disable-ima --disable-libcryptsetup --disable-localed - --disable-logind --disable-myhostname --disable-nls --disable-pam @@ -228,6 +225,7 @@ $(use_enable acl) $(use_enable doc gtk-doc) $(use_enable gudev) + $(use_enable logind) $(use_enable keymap) $(use_enable kmod) $(use_enable selinux) @@ -243,18 +241,34 @@ --with-firmware-path="/lib/firmware/updates:/lib/firmware" ) fi + if ! use logind; then + if ! use keymap; then + econf_args+=( + ac_cv_path_GPERF=true + ) + fi + econf_args+=( + ac_cv_search_cap_init= + ac_cv_header_sys_capability_h=yes + DBUS_CFLAGS=' ' + DBUS_LIBS=' ' + ) + else + if use pam; then + econf_args+=( + --enable-pam + --with-pamlibdir="$(getpam_mod_dir)" + ) + fi + fi econf "${econf_args[@]}" } src_compile() { echo 'BUILT_SOURCES: $(BUILT_SOURCES)' > "${T}"/Makefile.extra emake -f Makefile -f "${T}"/Makefile.extra BUILT_SOURCES - local pretargets=( - libsystemd-shared.la - libudev-private.la - libudev.la - ) local targets=( + libudev.la systemd-udevd udevadm ata_id @@ -271,9 +285,52 @@ ) use keymap && targets+=( keymap ) use gudev && targets+=( libgudev-1.0.la ) + if use logind; then + targets+=( + libsystemd-login.la + systemd-logind + loginctl + man/loginctl.1 + man/sd-login.3 + man/sd_get_seats.3 + man/sd_login_monitor_new.3 + man/sd_pid_get_session.3 + man/sd_seat_get_active.3 + man/sd_session_is_active.3 + man/sd_uid_get_state.3 + man/systemd-user-sessions.service.8 + man/sd_get_sessions.3 + man/sd_get_uids.3 + man/sd_login_monitor.3 + man/sd_login_monitor_flush.3 + man/sd_login_monitor_get_fd.3 + man/sd_login_monitor_unref.3 + man/sd_pid_get_owner_uid.3 + man/sd_pid_get_unit.3 + man/sd_seat_can_multi_session.3 + man/sd_seat_get_sessions.3 + man/sd_session_get_class.3 + man/sd_session_get_display.3 + man/sd_session_get_seat.3 + man/sd_session_get_service.3 + man/sd_session_get_state.3 + man/sd_session_get_tty.3 + man/sd_session_get_type.3 + man/sd_session_get_uid.3 + man/sd_uid_get_seats.3 + man/sd_uid_get_sessions.3 + man/sd_uid_is_on_seat.3 + man/systemd-user-sessions.8 + ) + if use pam; then + targets+=( + pam_systemd.la + man/pam_systemd.8 + ) + fi + fi - emake "${pretargets[@]}" - emake "${targets[@]}" + emake -j1 "${targets[@]}" if use doc; then emake -C docs/libudev use gudev && emake -C docs/gudev @@ -282,13 +339,20 @@ src_install() { local lib_LTLIBRARIES="libudev.la" \ - pkgconfiglib_DATA="src/libudev/libudev.pc" + pkgconfiglib_DATA="src/libudev/libudev.pc" \ + rootlibexec_PROGRAMS="systemd-udevd" \ + dist_bashcompletion_DATA="shell-completion/bash/udevadm" \ + rootbin_PROGRAMS="udevadm" \ + dist_pkgsysconf_DATA="" \ + MANPAGES="man/udev.7 man/udevadm.8 man/systemd-udevd.service.8" \ + pamlib_LTLIBRARIES="" local targets=( install-libLTLIBRARIES install-includeHEADERS install-libgudev_includeHEADERS install-binPROGRAMS + install-rootbinPROGRAMS install-rootlibexecPROGRAMS install-udevlibexecPROGRAMS install-dist_udevconfDATA @@ -297,6 +361,7 @@ install-dist_udevkeymapforcerelDATA install-dist_udevrulesDATA install-girDATA + install-man3 install-man7 install-man8 install-pkgconfiglibDATA @@ -306,6 +371,8 @@ libudev-install-hook install-directories-hook install-dist_bashcompletionDATA + install-dist_pkgsysconfDATA + install-pamlibLTLIBRARIES ) if use gudev; then @@ -313,19 +380,35 @@ pkgconfiglib_DATA+=" src/gudev/gudev-1.0.pc" fi + if use logind; then + dist_bashcompletion_DATA+=" shell-completion/bash/loginctl" + lib_LTLIBRARIES+=" libsystemd-login.la" + rootlibexec_PROGRAMS+=" systemd-logind systemd-user-sessions" + rootbin_PROGRAMS+=" loginctl" + pkgconfiglib_DATA+=" src/login/libsystemd-login.pc" + dist_pkgsysconf_DATA+=" src/login/logind.conf" +# MANPAGES+=" man/loginctl.1 man/sd-login.3 man/sd_get_seats.3 man/sd_login_monitor_new.3 man/sd_pid_get_session.3 man/sd_seat_get_active.3 man/sd_session_is_active.3 man/sd_uid_get_state.3 man/systemd-user-sessions.service.8 man/sd_get_sessions.3 man/sd_get_uids.3 man/sd_login_monitor.3 man/sd_login_monitor_flush.3 man/sd_login_monitor_get_fd.3 man/sd_login_monitor_unref.3 man/sd_pid_get_owner_uid.3 man/sd_pid_get_unit.3 man/sd_seat_can_multi_session.3 man/sd_seat_get_sessions.3 man/sd_session_get_class.3 man/sd_session_get_display.3 man/sd_session_get_seat.3 man/sd_session_get_service.3 man/sd_session_get_state.3 man/sd_session_get_tty.3 man/sd_session_get_type.3 man/sd_session_get_uid.3 man/sd_uid_get_seats.3 man/sd_uid_get_sessions.3 man/sd_uid_is_on_seat.3 man/systemd-user-sessions.8" + if use pam; then + MANPAGES+=" man/pam_systemd.8" + pamlib_LTLIBRARIES+=" pam_systemd.la" + fi + fi + # add final values of variables: targets+=( - rootlibexec_PROGRAMS=systemd-udevd - bin_PROGRAMS=udevadm + pamlib_LTLIBRARIES="${pamlib_LTLIBRARIES}" + rootlibexec_PROGRAMS="${rootlibexec_PROGRAMS}" + rootbin_PROGRAMS="${rootbin_PROGRAMS}" lib_LTLIBRARIES="${lib_LTLIBRARIES}" - MANPAGES="man/udev.7 man/udevadm.8 \ - man/systemd-udevd.service.8" + MANPAGES="${MANPAGES}" MANPAGES_ALIAS="man/systemd-udevd.8" pkgconfiglib_DATA="${pkgconfiglib_DATA}" INSTALL_DIRS='$(sysconfdir)/udev/rules.d \ $(sysconfdir)/udev/hwdb.d' - dist_bashcompletion_DATA="shell-completion/bash/udevadm" + dist_bashcompletion_DATA="${dist_bashcompletion_DATA}" + dist_pkgsysconf_DATA="${dist_pkgsysconf_DATA}" ) + emake -j1 DESTDIR="${D}" "${targets[@]}" if use doc; then emake -C docs/libudev DESTDIR="${D}" install @@ -349,7 +432,11 @@ # install udevd to /sbin and remove empty and redudant directory # /lib/systemd because systemd is installed to /usr wrt #462750 mv "${D}"/{lib/systemd/systemd-,sbin/}udevd || die - rm -r "${D}"/lib/systemd + if use logind; then + mv "${D}"/{lib,usr/lib}/systemd + else + rm -r "${D}"/lib/systemd + fi } pkg_preinst() {