diff options
author | 2015-08-08 13:49:04 -0700 | |
---|---|---|
committer | 2015-08-08 17:38:18 -0700 | |
commit | 56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch) | |
tree | 3f91093cdb475e565ae857f1c5a7fd339e2d781e /sys-fs/eudev | |
download | gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.gz gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.bz2 gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.zip |
proj/gentoo: Initial commit
This commit represents a new era for Gentoo:
Storing the gentoo-x86 tree in Git, as converted from CVS.
This commit is the start of the NEW history.
Any historical data is intended to be grafted onto this point.
Creation process:
1. Take final CVS checkout snapshot
2. Remove ALL ChangeLog* files
3. Transform all Manifests to thin
4. Remove empty Manifests
5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$
5.1. Do not touch files with -kb/-ko keyword flags.
Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration tests
X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this project
X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo developer, wrote Git features for the migration
X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve cvs2svn
X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts
X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014 work in migration
X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging
X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed
Diffstat (limited to 'sys-fs/eudev')
-rw-r--r-- | sys-fs/eudev/Manifest | 7 | ||||
-rw-r--r-- | sys-fs/eudev/eudev-1.10-r2.ebuild | 301 | ||||
-rw-r--r-- | sys-fs/eudev/eudev-1.3.ebuild | 279 | ||||
-rw-r--r-- | sys-fs/eudev/eudev-1.5.3-r1.ebuild | 286 | ||||
-rw-r--r-- | sys-fs/eudev/eudev-1.9-r2.ebuild | 302 | ||||
-rw-r--r-- | sys-fs/eudev/eudev-2.1.1.ebuild | 296 | ||||
-rw-r--r-- | sys-fs/eudev/eudev-3.0.ebuild | 274 | ||||
-rw-r--r-- | sys-fs/eudev/eudev-3.1.2-r10.ebuild | 270 | ||||
-rw-r--r-- | sys-fs/eudev/eudev-3.1.2.ebuild | 274 | ||||
-rw-r--r-- | sys-fs/eudev/eudev-9999.ebuild | 274 | ||||
-rw-r--r-- | sys-fs/eudev/files/40-gentoo.rules | 10 | ||||
-rw-r--r-- | sys-fs/eudev/files/eudev-exclude-MD.patch | 53 | ||||
-rw-r--r-- | sys-fs/eudev/files/eudev-fix-selinux-headers.patch | 32 | ||||
-rw-r--r-- | sys-fs/eudev/files/eudev-fix-selinux-linking.patch | 30 | ||||
-rw-r--r-- | sys-fs/eudev/files/eudev-selinux-timespan.patch | 27 | ||||
-rwxr-xr-x | sys-fs/eudev/files/udev-postmount | 55 | ||||
-rw-r--r-- | sys-fs/eudev/metadata.xml | 23 |
17 files changed, 2793 insertions, 0 deletions
diff --git a/sys-fs/eudev/Manifest b/sys-fs/eudev/Manifest new file mode 100644 index 000000000000..b4fbd0bc5708 --- /dev/null +++ b/sys-fs/eudev/Manifest @@ -0,0 +1,7 @@ +DIST eudev-1.10.tar.gz 1776717 SHA256 401eeb29147d3e24d87849a8006df62eadeb369d913484d59e9e35f3f73a20d1 SHA512 76ba9e3c732a6baad448500ef72368e985e0edf45b80d920e23432b5ee2da3e841c5faf2cc281af6432625758608c31eb441c6af9e2161d4e7264348e33e086f WHIRLPOOL d3251a1ef18e46e000a0941156ca4daa33b54a6147fece4cee6d863f86c98068e88bc11bc8a90f45c578ed62338218c5c8b4b06bb6132610e3d4a30bf79fe192 +DIST eudev-1.3.tar.gz 1679385 SHA256 6f1f0b15971a53c7070a44c902c7c1303f952927aa6370dbdf4d84d8bc09fac2 SHA512 5e0016fbe15eebfa68bb04fa7b5aedd7edc7a508afdc030adb7cbec4e9eca84fe16119ca73f5724ec290ad4bba179b42d2d0bc56f3aaf2a07e3c48b18374b3b3 WHIRLPOOL db748742f9149b7a232b0d630a8734e81fb1077ed581fcde88f57f299b6746bcadec0bdd9e7ad914dae848ace9199c7d664006003dc4999af3bfa1e14099f366 +DIST eudev-1.5.3.tar.gz 1724415 SHA256 8e4362979572719562f600bfd7decd42d4e21506db5483e3d2e88f725396c57b SHA512 c00f34d76d76ebd5c2862310a2ba3d7bf2f8d348a96e0120ed02aa9014857df736e3a2280a4478e50f2537cabc9082b8f5f5e57ef7b3cf925fae6dc3a4688ddb WHIRLPOOL b3fc943f6c3eaeba92aed72dee417738a840f4176182e08f7564a1fd34baa3cf2a52787ac8e936f74f6c13b7896eb929a2f83cf087b8b09e5b8c7d7858471dd5 +DIST eudev-1.9.tar.gz 1762520 SHA256 8f17e92f1177ce9352bde00360e227a7cbb3b97ac8816174bee34be80e44cef0 SHA512 13bd7df42d686818f499856d260e5dfaf10425f06e05449bf4cc8318667b166e2ae9c5e8b519008285aeaab9284ec5fde1f9f19e536dd4bae09a5439c86336b3 WHIRLPOOL d0504f05e191e94229bf60a497cab82fe461f52072ba7ed2171654e684397e4ffa9ba47c8b18cd0cc6d0168701dcac3b7d4b6c73168382e2432c7c229b2d0293 +DIST eudev-2.1.1.tar.gz 1786403 SHA256 6aef101c5496a2dc45e669307d478dbccb0ee0462a285512edcda51ff12e0e6a SHA512 b3fb6d80ef94f124e7c23d7df61ed65c298e58f400d8df6b38fb1cea1da6cd387a17866dd54e12c8160214a496dab5d55b2e40ab1a6142a332f951cd3525d490 WHIRLPOOL 2c1ea2463ea7f1a72071866795609f75021abd81d9ab36298238dc481586de5d71864467b5da04546d0e1a1e0abf9ac1386bda2140ed1b5d277ae13baaf0a7d5 +DIST eudev-3.0.tar.gz 1835636 SHA256 74db8aaf13cc392edfb821291783ecd64d815e6f81409f57e290d3017750db29 SHA512 a0cfbbd5b1e59dafaf0ba2e321756bb7bff3d1a92e09ab0fca674adc80911e55aec29ed0b74262846516443d344cf044a0cfffb9e1d1caeb2f145da8d1a5327f WHIRLPOOL e08dcdd18bc6a8f4df2d66099e2ff90abb6bf62f75af81fb98c90261ce254eba986a6742eeca5d673818c2098d8a335ce9212aa3f1be5e1495ac05a397fe3f7a +DIST eudev-3.1.2.tar.gz 1858004 SHA256 4393b69e93dd8117defde6519b199d479f9d051f52061157a1a7a41b8fe10273 SHA512 d9aeb37a163ce4a0c116f75a927b4b99f8445d06624fbb3c28ade18f3effd8c54af5a4a52477c31a0452822a3dc0901468263195256e9dbf79d2ef08cf46f2b6 WHIRLPOOL 2249128672d2adfa968c123a2538063331348bc8e8481ad9c25bf8d9fb4d2d3c8a05417439f155d9ababe657b19a595c18c6ba60ad0d5584a8ead86220b39577 diff --git a/sys-fs/eudev/eudev-1.10-r2.ebuild b/sys-fs/eudev/eudev-1.10-r2.ebuild new file mode 100644 index 000000000000..d82d8af53123 --- /dev/null +++ b/sys-fs/eudev/eudev-1.10-r2.ebuild @@ -0,0 +1,301 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI="5" + +KV_min=2.6.39 +WANT_AUTOMAKE=1.13 + +inherit autotools eutils linux-info multilib multilib-minimal user + +if [[ ${PV} = 9999* ]]; then + EGIT_REPO_URI="git://github.com/gentoo/eudev.git" + inherit git-2 +else + SRC_URI="http://dev.gentoo.org/~blueness/${PN}/${P}.tar.gz" + KEYWORDS="amd64 arm hppa ~mips ppc ppc64 x86" +fi + +DESCRIPTION="Linux dynamic and persistent device naming support (aka userspace devfs)" +HOMEPAGE="https://github.com/gentoo/eudev" + +LICENSE="LGPL-2.1 MIT GPL-2" +SLOT="0" +IUSE="doc gudev +hwdb +kmod introspection +keymap +modutils +openrc +rule-generator selinux static-libs test" + +COMMON_DEPEND=">=sys-apps/util-linux-2.20 + gudev? ( >=dev-libs/glib-2.34.3:2[${MULTILIB_USEDEP}] ) + introspection? ( >=dev-libs/gobject-introspection-1.38 ) + kmod? ( >=sys-apps/kmod-16 ) + selinux? ( >=sys-libs/libselinux-2.1.9 ) + !<sys-libs/glibc-2.11 + !sys-apps/gentoo-systemd-integration + !sys-apps/systemd + abi_x86_32? ( + !<=app-emulation/emul-linux-x86-baselibs-20130224-r7 + !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] + )" +DEPEND="${COMMON_DEPEND} + keymap? ( dev-util/gperf ) + virtual/os-headers + virtual/pkgconfig + >=sys-devel/make-3.82-r4 + >=sys-kernel/linux-headers-${KV_min} + doc? ( >=dev-util/gtk-doc-1.18 ) + app-text/docbook-xml-dtd:4.2 + app-text/docbook-xml-dtd:4.5 + app-text/docbook-xsl-stylesheets + dev-libs/libxslt + >=dev-util/intltool-0.50 + test? ( app-text/tree dev-lang/perl )" + +RDEPEND="${COMMON_DEPEND} + !<sys-fs/lvm2-2.02.103 + !<sec-policy/selinux-base-2.20120725-r10 + !sys-fs/udev + !sys-apps/systemd + gudev? ( !dev-libs/libgudev )" + +PDEPEND="hwdb? ( >=sys-apps/hwids-20140304[udev] ) + keymap? ( >=sys-apps/hwids-20140304[udev] ) + openrc? ( >=sys-fs/udev-init-scripts-26 )" + +REQUIRED_USE="keymap? ( hwdb )" + +# The multilib-build.eclass doesn't handle situation where the installed headers +# are different in ABIs. In this case, we install libgudev headers in native +# ABI but not for non-native ABI. +multilib_check_headers() { :; } + +pkg_pretend() { + if ! use rule-generator; then + ewarn + ewarn "As of 2013-01-29, ${P} provides the new interface renaming functionality," + ewarn "as described in the URL below:" + ewarn "http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames" + ewarn + ewarn "This functionality is enabled BY DEFAULT because eudev has no means of synchronizing" + ewarn "between the default or user-modified choice of sys-fs/udev. If you wish to disable" + ewarn "this new iface naming, please be sure that /etc/udev/rules.d/80-net-name-slot.rules" + ewarn "exists:" + ewarn "\ttouch /etc/udev/rules.d/80-net-name-slot.rules" + ewarn + ewarn "We are working on a better solution for the next beta release." + ewarn + fi +} + +pkg_setup() { + CONFIG_CHECK="~BLK_DEV_BSG ~DEVTMPFS ~!IDE ~INOTIFY_USER ~!SYSFS_DEPRECATED ~!SYSFS_DEPRECATED_V2 ~SIGNALFD ~EPOLL ~FHANDLE ~NET" + linux-info_pkg_setup + get_running_version + + # These are required kernel options, but we don't error out on them + # because you can build under one kernel and run under another. + if kernel_is lt ${KV_min//./ }; then + ewarn + ewarn "Your current running kernel version ${KV_FULL} is too old to run ${P}." + ewarn "Make sure to run udev under kernel version ${KV_min} or above." + ewarn + fi +} + +src_prepare() { + # change rules back to group uucp instead of dialout for now + sed -e 's/GROUP="dialout"/GROUP="uucp"/' -i rules/*.rules \ + || die "failed to change group dialout to uucp" + + # Bug #520684 + epatch "${FILESDIR}"/${PN}-fix-selinux-headers.patch + epatch "${FILESDIR}"/${PN}-fix-selinux-linking.patch + + epatch_user + + if use doc; then + gtkdocize --docdir docs || die "gtkdocize failed" + else + echo 'EXTRA_DIST =' > docs/gtk-doc.make + fi + eautoreconf +} + +multilib_src_configure() { + tc-export CC #463846 + export cc_cv_CFLAGS__flto=no #502950 + + # Keep sorted by ./configure --help and only pass --disable flags + # when *required* to avoid external deps or unnecessary compile + local econf_args + econf_args=( + ac_cv_search_cap_init= + ac_cv_header_sys_capability_h=yes + DBUS_CFLAGS=' ' + DBUS_LIBS=' ' + --with-rootprefix= + --docdir=/usr/share/doc/${PF} + --libdir=/usr/$(get_libdir) + --with-rootlibexecdir=/lib/udev + --with-firmware-path="${EPREFIX}usr/lib/firmware/updates:${EPREFIX}usr/lib/firmware:${EPREFIX}lib/firmware/updates:${EPREFIX}lib/firmware" + --with-html-dir="/usr/share/doc/${PF}/html" + --enable-split-usr + --exec-prefix=/ + + $(use_enable gudev) + ) + + # Only build libudev for non-native_abi, and only install it to libdir, + # that means all options only apply to native_abi + if multilib_is_native_abi; then + econf_args+=( + --with-rootlibdir=/$(get_libdir) + $(use_enable doc gtk-doc) + $(use_enable introspection) + $(use_enable keymap) + $(use_enable kmod libkmod) + $(usex kmod --enable-modules $(use_enable modutils modules)) + $(use_enable static-libs static) + $(use_enable selinux) + $(use_enable rule-generator) + ) + else + econf_args+=( + --disable-static + --disable-gtk-doc + --disable-introspection + --disable-keymap + --disable-libkmod + --disable-modules + --disable-selinux + --disable-rule-generator + ) + fi + ECONF_SOURCE="${S}" econf "${econf_args[@]}" +} + +multilib_src_compile() { + if multilib_is_native_abi; then + emake + else + emake -C src/shared + emake -C src/libudev + use gudev && emake -C src/gudev + fi +} + +multilib_src_install() { + if multilib_is_native_abi; then + emake DESTDIR="${D}" install + else + emake -C src/libudev DESTDIR="${D}" install + use gudev && emake -C src/gudev DESTDIR="${D}" install + fi +} + +multilib_src_test() { + # make sandbox get out of the way + # these are safe because there is a fake root filesystem put in place, + # but sandbox seems to evaluate the paths of the test i/o instead of the + # paths of the actual i/o that results. + # also only test for native abi + if multilib_is_native_abi; then + addread /sys + addwrite /dev + addwrite /run + default_src_test + fi +} + +multilib_src_install_all() { + prune_libtool_files --all + rm -rf "${ED}"/usr/share/doc/${PF}/LICENSE.* + + use rule-generator && use openrc && doinitd "${FILESDIR}"/udev-postmount + + # drop distributed hwdb files, they override sys-apps/hwids + rm -f "${ED}"/etc/udev/hwdb.d/*.hwdb + + insinto /lib/udev/rules.d + doins "${FILESDIR}"/40-gentoo.rules + + insinto /usr/share/doc/${PF}/html/gudev + doins "${S}"/docs/gudev/html/* + + insinto /usr/share/doc/${PF}/html/libudev + doins "${S}"/docs/libudev/html/* +} + +pkg_preinst() { + local htmldir + for htmldir in gudev libudev; do + if [[ -d ${EROOT}usr/share/gtk-doc/html/${htmldir} ]]; then + rm -rf "${EROOT}"usr/share/gtk-doc/html/${htmldir} + fi + if [[ -d ${ED}/usr/share/doc/${PF}/html/${htmldir} ]]; then + dosym ../../doc/${PF}/html/${htmldir} \ + /usr/share/gtk-doc/html/${htmldir} + fi + done +} + +pkg_postinst() { + mkdir -p "${EROOT}"run + + # "losetup -f" is confused if there is an empty /dev/loop/, Bug #338766 + # So try to remove it here (will only work if empty). + rmdir "${EROOT}"dev/loop 2>/dev/null + if [[ -d ${EROOT}dev/loop ]]; then + ewarn "Please make sure your remove /dev/loop," + ewarn "else losetup may be confused when looking for unused devices." + fi + + if use hwdb && has_version 'sys-apps/hwids[udev]'; then + udevadm hwdb --update --root="${ROOT%/}" + + # http://cgit.freedesktop.org/systemd/systemd/commit/?id=1fab57c209035f7e66198343074e9cee06718bda + # reload database after it has be rebuilt, but only if we are not upgrading + # also pass if we are -9999 since who knows what hwdb related changes there might be + if [[ ${REPLACING_VERSIONS%-r*} == ${PV} || -z ${REPLACING_VERSIONS} ]] && \ + [[ ${ROOT%/} == "" ]] && [[ ${PV} != "9999" ]]; then + udevadm control --reload + fi + fi + + ewarn + ewarn "You need to restart eudev as soon as possible to make the" + ewarn "upgrade go into effect:" + ewarn "\t/etc/init.d/udev --nodeps restart" + + if use rule-generator && use openrc && \ + [[ -x $(type -P rc-update) ]] && rc-update show | grep udev-postmount | grep -qsv 'boot\|default\|sysinit'; then + ewarn + ewarn "Please add the udev-postmount init script to your default runlevel" + ewarn "to ensure the legacy rule-generator functionality works as reliably" + ewarn "as possible." + ewarn "\trc-update add udev-postmount default" + fi + + elog + elog "For more information on eudev on Gentoo, writing udev rules, and" + elog "fixing known issues visit:" + elog " http://www.gentoo.org/doc/en/udev-guide.xml" + elog + + # http://cgit.freedesktop.org/systemd/systemd/commit/rules/50-udev-default.rules?id=3dff3e00e044e2d53c76fa842b9a4759d4a50e69 + # http://bugs.gentoo.org/246847 + # http://bugs.gentoo.org/514174 + enewgroup input + + # Update hwdb database in case the format is changed by udev version. + if has_version 'sys-apps/hwids[udev]'; then + udevadm hwdb --update --root="${ROOT%/}" + # Only reload when we are not upgrading to avoid potential race w/ incompatible hwdb.bin and the running udevd + if [[ -z ${REPLACING_VERSIONS} ]]; then + # http://cgit.freedesktop.org/systemd/systemd/commit/?id=1fab57c209035f7e66198343074e9cee06718bda + if [[ ${ROOT} != "" ]] && [[ ${ROOT} != "/" ]]; then + return 0 + fi + udevadm control --reload + fi + fi +} diff --git a/sys-fs/eudev/eudev-1.3.ebuild b/sys-fs/eudev/eudev-1.3.ebuild new file mode 100644 index 000000000000..65171c52eac2 --- /dev/null +++ b/sys-fs/eudev/eudev-1.3.ebuild @@ -0,0 +1,279 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI="5" + +KV_min=2.6.31 + +inherit autotools eutils multilib linux-info multilib-minimal + +if [[ ${PV} = 9999* ]] +then + EGIT_REPO_URI="git://github.com/gentoo/eudev.git" + inherit git-2 +else + SRC_URI="http://dev.gentoo.org/~blueness/${PN}/${P}.tar.gz" + KEYWORDS="ia64" +fi + +DESCRIPTION="Linux dynamic and persistent device naming support (aka userspace devfs)" +HOMEPAGE="https://github.com/gentoo/eudev" + +LICENSE="LGPL-2.1 MIT GPL-2" +SLOT="0" +IUSE="doc gudev hwdb kmod introspection keymap +modutils +openrc +rule-generator selinux static-libs test" + +COMMON_DEPEND="gudev? ( dev-libs/glib:2 ) + kmod? ( sys-apps/kmod ) + introspection? ( >=dev-libs/gobject-introspection-1.31.1 ) + selinux? ( sys-libs/libselinux ) + >=sys-apps/util-linux-2.20 + !<sys-libs/glibc-2.11 + abi_x86_32? ( + !<=app-emulation/emul-linux-x86-baselibs-20130224-r7 + !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] + )" + +DEPEND="${COMMON_DEPEND} + keymap? ( dev-util/gperf ) + >=dev-util/intltool-0.40.0 + virtual/pkgconfig + virtual/os-headers + !<sys-kernel/linux-headers-${KV_min} + doc? ( dev-util/gtk-doc ) + app-text/docbook-xsl-stylesheets + dev-libs/libxslt + test? ( app-text/tree dev-lang/perl )" + +RDEPEND="${COMMON_DEPEND} + !sys-fs/udev + !sys-apps/coldplug + !sys-apps/systemd + !<sys-fs/lvm2-2.02.97 + !sys-fs/device-mapper + !<sys-fs/udev-init-scripts-18 + gudev? ( !dev-libs/libgudev )" + +PDEPEND="hwdb? ( >=sys-apps/hwids-20130717-r1[udev] ) + keymap? ( >=sys-apps/hwids-20130717-r1[udev] ) + openrc? ( >=sys-fs/udev-init-scripts-18 )" + +REQUIRED_USE="keymap? ( hwdb )" + +pkg_pretend() +{ + if ! use rule-generator; then + ewarn + ewarn "As of 2013-01-29, ${P} provides the new interface renaming functionality," + ewarn "as described in the URL below:" + ewarn "http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames" + ewarn + ewarn "This functionality is enabled BY DEFAULT because eudev has no means of synchronizing" + ewarn "between the default or user-modified choice of sys-fs/udev. If you wish to disable" + ewarn "this new iface naming, please be sure that /etc/udev/rules.d/80-net-name-slot.rules" + ewarn "exists:" + ewarn "\ttouch /etc/udev/rules.d/80-net-name-slot.rules" + ewarn + ewarn "We are working on a better solution for the next beta release." + ewarn + fi +} + +pkg_setup() +{ + linux-info_pkg_setup + get_running_version + + # These are required kernel options, but we don't error out on them + # because you can build under one kernel and run under another. + CONFIG_CHECK="~BLK_DEV_BSG ~DEVTMPFS ~!IDE ~INOTIFY_USER ~SIGNALFD ~!SYSFS_DEPRECATED ~!SYSFS_DEPRECATED_V2" + + if kernel_is lt ${KV_min//./ }; then + ewarn + ewarn "Your current running kernel version ${KV_FULL} is too old to run ${P}." + ewarn "Make sure to run udev under kernel version ${KV_min} or above." + ewarn + fi +} + +src_prepare() +{ + # change rules back to group uucp instead of dialout for now + sed -e 's/GROUP="dialout"/GROUP="uucp"/' -i rules/*.rules \ + || die "failed to change group dialout to uucp" + + epatch "${FILESDIR}"/${PN}-selinux-timespan.patch + + epatch_user + + if [[ ! -e configure ]] + then + if use doc + then + gtkdocize --docdir docs || die "gtkdocize failed" + else + echo 'EXTRA_DIST =' > docs/gtk-doc.make + fi + eautoreconf + else + elibtoolize + fi +} + +multilib_src_configure() +{ + local econf_args + + econf_args=( + ac_cv_search_cap_init= + ac_cv_header_sys_capability_h=yes + DBUS_CFLAGS=' ' + DBUS_LIBS=' ' + --with-rootprefix= + --docdir=/usr/share/doc/${PF} + --libdir=/usr/$(get_libdir) + --with-firmware-path="${EPREFIX}usr/lib/firmware/updates:${EPREFIX}usr/lib/firmware:${EPREFIX}lib/firmware/updates:${EPREFIX}lib/firmware" + --with-html-dir="/usr/share/doc/${PF}/html" + --enable-split-usr + --exec-prefix=/ + ) + + # Only build libudev for non-native_abi, and only install it to libdir, + # that means all options only apply to native_abi + if multilib_is_native_abi; then econf_args+=( + --with-rootlibdir=/$(get_libdir) + $(use_enable doc gtk-doc) + $(use_enable gudev) + $(use_enable introspection) + $(use_enable keymap) + $(use_enable kmod libkmod) + $(usex kmod --enable-modules $(use_enable modutils modules)) + $(use_enable static-libs static) + $(use_enable selinux) + $(use_enable rule-generator) + ) + else econf_args+=( + $(echo --disable-{gtk-doc,gudev,introspection,keymap,libkmod,modules,static,selinux,rule-generator}) + ) + fi + ECONF_SOURCE="${S}" econf "${econf_args[@]}" +} + +multilib_src_compile() +{ + if ! multilib_is_native_abi; then + cd src/libudev || die "Could not change directory" + fi + emake +} + +multilib_src_install() +{ + if ! multilib_is_native_abi; then + cd src/libudev || die "Could not change directory" + fi + emake DESTDIR="${D}" install +} + +multilib_src_test() +{ + # make sandbox get out of the way + # these are safe because there is a fake root filesystem put in place, + # but sandbox seems to evaluate the paths of the test i/o instead of the + # paths of the actual i/o that results. + # also only test for native abi + if multilib_is_native_abi; then + addread /sys + addwrite /dev + addwrite /run + default_src_test + fi +} + +# disable header checks because we only install libudev headers for non-native abi +multilib_check_headers() +{ + : +} + +multilib_src_install_all() +{ + prune_libtool_files --all + rm -rf "${ED}"/usr/share/doc/${PF}/LICENSE.* + + use rule-generator && use openrc && doinitd "${FILESDIR}"/udev-postmount + + # drop distributed hwdb files, they override sys-apps/hwids + rm -f "${ED}"/etc/udev/hwdb.d/*.hwdb +} + +pkg_preinst() +{ + local htmldir + for htmldir in gudev libudev; do + if [[ -d ${EROOT}usr/share/gtk-doc/html/${htmldir} ]] + then + rm -rf "${EROOT}"usr/share/gtk-doc/html/${htmldir} + fi + if [[ -d ${ED}/usr/share/doc/${PF}/html/${htmldir} ]] + then + dosym ../../doc/${PF}/html/${htmldir} \ + /usr/share/gtk-doc/html/${htmldir} + fi + done +} + +pkg_postinst() +{ + mkdir -p "${EROOT}"run + + # "losetup -f" is confused if there is an empty /dev/loop/, Bug #338766 + # So try to remove it here (will only work if empty). + rmdir "${EROOT}"dev/loop 2>/dev/null + if [[ -d ${EROOT}dev/loop ]] + then + ewarn "Please make sure you remove /dev/loop, else losetup" + ewarn "may be confused when looking for unused devices." + fi + + # 64-device-mapper.rules now gets installed by sys-fs/device-mapper + # remove it if user don't has sys-fs/device-mapper installed, 27 Jun 2007 + if [[ -f ${EROOT}etc/udev/rules.d/64-device-mapper.rules ]] && + ! has_version sys-fs/device-mapper + then + rm -f "${EROOT}"etc/udev/rules.d/64-device-mapper.rules + einfo "Removed unneeded file 64-device-mapper.rules" + fi + + if use hwdb && has_version 'sys-apps/hwids[udev]'; then + udevadm hwdb --update --root="${ROOT%/}" + + # http://cgit.freedesktop.org/systemd/systemd/commit/?id=1fab57c209035f7e66198343074e9cee06718bda + # reload database after it has be rebuilt, but only if we are not upgrading + # also pass if we are -9999 since who knows what hwdb related changes there might be + if [[ ${REPLACING_VERSIONS%-r*} == ${PV} || -z ${REPLACING_VERSIONS} ]] && \ + [[ ${ROOT%/} == "" ]] && [[ ${PV} != "9999" ]]; then + udevadm control --reload + fi + fi + + ewarn + ewarn "You need to restart eudev as soon as possible to make the" + ewarn "upgrade go into effect:" + ewarn "\t/etc/init.d/udev --nodeps restart" + + if use rule-generator && use openrc; then + ewarn + ewarn "Please add the udev-postmount init script to your default runlevel" + ewarn "to ensure the legacy rule-generator functionality works as reliably" + ewarn "as possible." + ewarn "\trc-update add udev-postmount default" + fi + + elog + elog "For more information on eudev on Gentoo, writing udev rules, and" + elog "fixing known issues visit:" + elog " http://www.gentoo.org/doc/en/udev-guide.xml" + elog +} diff --git a/sys-fs/eudev/eudev-1.5.3-r1.ebuild b/sys-fs/eudev/eudev-1.5.3-r1.ebuild new file mode 100644 index 000000000000..cc4d390c4572 --- /dev/null +++ b/sys-fs/eudev/eudev-1.5.3-r1.ebuild @@ -0,0 +1,286 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI="5" + +KV_min=2.6.31 + +inherit autotools eutils multilib linux-info multilib-minimal + +if [[ ${PV} = 9999* ]] +then + EGIT_REPO_URI="git://github.com/gentoo/eudev.git" + inherit git-2 +else + SRC_URI="http://dev.gentoo.org/~blueness/${PN}/${P}.tar.gz" + KEYWORDS="alpha" +fi + +DESCRIPTION="Linux dynamic and persistent device naming support (aka userspace devfs)" +HOMEPAGE="https://github.com/gentoo/eudev" + +LICENSE="LGPL-2.1 MIT GPL-2" +SLOT="0" +IUSE="doc gudev +hwdb kmod introspection +keymap +modutils +openrc +rule-generator selinux static-libs test" + +COMMON_DEPEND="gudev? ( >=dev-libs/glib-2.34.3:2[${MULTILIB_USEDEP}] ) + kmod? ( sys-apps/kmod ) + introspection? ( >=dev-libs/gobject-introspection-1.31.1 ) + selinux? ( sys-libs/libselinux ) + >=sys-apps/util-linux-2.20 + !<sys-libs/glibc-2.11 + abi_x86_32? ( + !<=app-emulation/emul-linux-x86-baselibs-20130224-r7 + !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] + )" + +DEPEND="${COMMON_DEPEND} + keymap? ( dev-util/gperf ) + >=dev-util/intltool-0.40.0 + virtual/pkgconfig + virtual/os-headers + !<sys-kernel/linux-headers-${KV_min} + doc? ( dev-util/gtk-doc ) + app-text/docbook-xsl-stylesheets + dev-libs/libxslt + test? ( app-text/tree dev-lang/perl )" + +RDEPEND="${COMMON_DEPEND} + !sys-fs/udev + !sys-apps/coldplug + !sys-apps/systemd + !<sys-fs/lvm2-2.02.97 + !sys-fs/device-mapper + !<sys-fs/udev-init-scripts-18 + gudev? ( !dev-libs/libgudev )" + +PDEPEND="hwdb? ( >=sys-apps/hwids-20130717-r1[udev] ) + keymap? ( >=sys-apps/hwids-20130717-r1[udev] ) + openrc? ( >=sys-fs/udev-init-scripts-18 )" + +REQUIRED_USE="keymap? ( hwdb )" + +pkg_pretend() +{ + if ! use rule-generator; then + ewarn + ewarn "As of 2013-01-29, ${P} provides the new interface renaming functionality," + ewarn "as described in the URL below:" + ewarn "http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames" + ewarn + ewarn "This functionality is enabled BY DEFAULT because eudev has no means of synchronizing" + ewarn "between the default or user-modified choice of sys-fs/udev. If you wish to disable" + ewarn "this new iface naming, please be sure that /etc/udev/rules.d/80-net-name-slot.rules" + ewarn "exists:" + ewarn "\ttouch /etc/udev/rules.d/80-net-name-slot.rules" + ewarn + ewarn "We are working on a better solution for the next beta release." + ewarn + fi +} + +pkg_setup() +{ + linux-info_pkg_setup + get_running_version + + # These are required kernel options, but we don't error out on them + # because you can build under one kernel and run under another. + CONFIG_CHECK="~BLK_DEV_BSG ~DEVTMPFS ~!IDE ~INOTIFY_USER ~SIGNALFD ~!SYSFS_DEPRECATED ~!SYSFS_DEPRECATED_V2" + + if kernel_is lt ${KV_min//./ }; then + ewarn + ewarn "Your current running kernel version ${KV_FULL} is too old to run ${P}." + ewarn "Make sure to run udev under kernel version ${KV_min} or above." + ewarn + fi +} + +src_prepare() +{ + # change rules back to group uucp instead of dialout for now + sed -e 's/GROUP="dialout"/GROUP="uucp"/' -i rules/*.rules \ + || die "failed to change group dialout to uucp" + + epatch_user + + if [[ ! -e configure ]] + then + if use doc + then + gtkdocize --docdir docs || die "gtkdocize failed" + else + echo 'EXTRA_DIST =' > docs/gtk-doc.make + fi + eautoreconf + else + elibtoolize + fi +} + +multilib_src_configure() +{ + local econf_args + + econf_args=( + ac_cv_search_cap_init= + ac_cv_header_sys_capability_h=yes + DBUS_CFLAGS=' ' + DBUS_LIBS=' ' + --with-rootprefix= + --docdir=/usr/share/doc/${PF} + --libdir=/usr/$(get_libdir) + --with-firmware-path="${EPREFIX}usr/lib/firmware/updates:${EPREFIX}usr/lib/firmware:${EPREFIX}lib/firmware/updates:${EPREFIX}lib/firmware" + --with-html-dir="/usr/share/doc/${PF}/html" + --enable-split-usr + --exec-prefix=/ + + $(use_enable gudev) + ) + + # Only build libudev for non-native_abi, and only install it to libdir, + # that means all options only apply to native_abi + if multilib_is_native_abi; then econf_args+=( + --with-rootlibdir=/$(get_libdir) + $(use_enable doc gtk-doc) + $(use_enable introspection) + $(use_enable keymap) + $(use_enable kmod libkmod) + $(usex kmod --enable-modules $(use_enable modutils modules)) + $(use_enable static-libs static) + $(use_enable selinux) + $(use_enable rule-generator) + ) + else econf_args+=( + $(echo --disable-{gtk-doc,introspection,keymap,libkmod,modules,static,selinux,rule-generator}) + ) + fi + ECONF_SOURCE="${S}" econf "${econf_args[@]}" +} + +multilib_src_compile() +{ + if multilib_is_native_abi; then + emake + else + emake -C src/libudev + use gudev && emake -C src/gudev + fi +} + +multilib_src_install() +{ + if multilib_is_native_abi; then + emake DESTDIR="${D}" install + else + emake -C src/libudev DESTDIR="${D}" install + use gudev && emake -C src/gudev DESTDIR="${D}" install + fi +} + +multilib_src_test() +{ + # make sandbox get out of the way + # these are safe because there is a fake root filesystem put in place, + # but sandbox seems to evaluate the paths of the test i/o instead of the + # paths of the actual i/o that results. + # also only test for native abi + if multilib_is_native_abi; then + addread /sys + addwrite /dev + addwrite /run + default_src_test + fi +} + +# disable header checks because we only install libudev headers for non-native abi +multilib_check_headers() +{ + : +} + +multilib_src_install_all() +{ + prune_libtool_files --all + rm -rf "${ED}"/usr/share/doc/${PF}/LICENSE.* + + use rule-generator && use openrc && doinitd "${FILESDIR}"/udev-postmount + + # drop distributed hwdb files, they override sys-apps/hwids + rm -f "${ED}"/etc/udev/hwdb.d/*.hwdb + + insinto /lib/udev/rules.d + doins "${FILESDIR}"/40-gentoo.rules +} + +pkg_preinst() +{ + local htmldir + for htmldir in gudev libudev; do + if [[ -d ${EROOT}usr/share/gtk-doc/html/${htmldir} ]] + then + rm -rf "${EROOT}"usr/share/gtk-doc/html/${htmldir} + fi + if [[ -d ${ED}/usr/share/doc/${PF}/html/${htmldir} ]] + then + dosym ../../doc/${PF}/html/${htmldir} \ + /usr/share/gtk-doc/html/${htmldir} + fi + done +} + +pkg_postinst() +{ + mkdir -p "${EROOT}"run + + # "losetup -f" is confused if there is an empty /dev/loop/, Bug #338766 + # So try to remove it here (will only work if empty). + rmdir "${EROOT}"dev/loop 2>/dev/null + if [[ -d ${EROOT}dev/loop ]] + then + ewarn "Please make sure you remove /dev/loop, else losetup" + ewarn "may be confused when looking for unused devices." + fi + + # 64-device-mapper.rules now gets installed by sys-fs/device-mapper + # remove it if user don't has sys-fs/device-mapper installed, 27 Jun 2007 + if [[ -f ${EROOT}etc/udev/rules.d/64-device-mapper.rules ]] && + ! has_version sys-fs/device-mapper + then + rm -f "${EROOT}"etc/udev/rules.d/64-device-mapper.rules + einfo "Removed unneeded file 64-device-mapper.rules" + fi + + if use hwdb && has_version 'sys-apps/hwids[udev]'; then + udevadm hwdb --update --root="${ROOT%/}" + + # http://cgit.freedesktop.org/systemd/systemd/commit/?id=1fab57c209035f7e66198343074e9cee06718bda + # reload database after it has be rebuilt, but only if we are not upgrading + # also pass if we are -9999 since who knows what hwdb related changes there might be + if [[ ${REPLACING_VERSIONS%-r*} == ${PV} || -z ${REPLACING_VERSIONS} ]] && \ + [[ ${ROOT%/} == "" ]] && [[ ${PV} != "9999" ]]; then + udevadm control --reload + fi + fi + + ewarn + ewarn "You need to restart eudev as soon as possible to make the" + ewarn "upgrade go into effect:" + ewarn "\t/etc/init.d/udev --nodeps restart" + + if use rule-generator && use openrc && \ + [[ -x $(type -P rc-update) ]] && rc-update show | grep udev-postmount | grep -qsv 'boot\|default\|sysinit'; then + ewarn + ewarn "Please add the udev-postmount init script to your default runlevel" + ewarn "to ensure the legacy rule-generator functionality works as reliably" + ewarn "as possible." + ewarn "\trc-update add udev-postmount default" + fi + + elog + elog "For more information on eudev on Gentoo, writing udev rules, and" + elog "fixing known issues visit:" + elog " http://www.gentoo.org/doc/en/udev-guide.xml" + elog +} diff --git a/sys-fs/eudev/eudev-1.9-r2.ebuild b/sys-fs/eudev/eudev-1.9-r2.ebuild new file mode 100644 index 000000000000..f97d5925239b --- /dev/null +++ b/sys-fs/eudev/eudev-1.9-r2.ebuild @@ -0,0 +1,302 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI="5" + +KV_min=2.6.39 + +inherit autotools eutils linux-info multilib multilib-minimal user + +if [[ ${PV} = 9999* ]]; then + EGIT_REPO_URI="git://github.com/gentoo/eudev.git" + inherit git-2 +else + SRC_URI="http://dev.gentoo.org/~blueness/${PN}/${P}.tar.gz" + KEYWORDS="amd64 arm hppa ~mips ppc ppc64 x86" +fi + +DESCRIPTION="Linux dynamic and persistent device naming support (aka userspace devfs)" +HOMEPAGE="https://github.com/gentoo/eudev" + +LICENSE="LGPL-2.1 MIT GPL-2" +SLOT="0" +IUSE="doc gudev +hwdb +kmod introspection +keymap +modutils +openrc +rule-generator selinux static-libs test" + +COMMON_DEPEND=">=sys-apps/util-linux-2.20 + gudev? ( >=dev-libs/glib-2.34.3:2[${MULTILIB_USEDEP}] ) + introspection? ( >=dev-libs/gobject-introspection-1.31.1 ) + kmod? ( >=sys-apps/kmod-16 ) + selinux? ( >=sys-libs/libselinux-2.1.9 ) + !<sys-libs/glibc-2.11 + !sys-apps/gentoo-systemd-integration + !sys-apps/systemd + abi_x86_32? ( + !<=app-emulation/emul-linux-x86-baselibs-20130224-r7 + !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] + )" +DEPEND="${COMMON_DEPEND} + keymap? ( dev-util/gperf ) + virtual/os-headers + virtual/pkgconfig + >=sys-devel/make-3.82-r4 + >=sys-kernel/linux-headers-${KV_min} + doc? ( >=dev-util/gtk-doc-1.18 ) + app-text/docbook-xml-dtd:4.2 + app-text/docbook-xml-dtd:4.5 + app-text/docbook-xsl-stylesheets + dev-libs/libxslt + >=dev-util/intltool-0.50 + test? ( app-text/tree dev-lang/perl )" + +RDEPEND="${COMMON_DEPEND} + !<sys-fs/lvm2-2.02.103 + !<sec-policy/selinux-base-2.20120725-r10 + !sys-fs/udev + !sys-apps/systemd + gudev? ( !dev-libs/libgudev )" + +PDEPEND="hwdb? ( >=sys-apps/hwids-20140304[udev] ) + keymap? ( >=sys-apps/hwids-20140304[udev] ) + openrc? ( >=sys-fs/udev-init-scripts-26 )" + +REQUIRED_USE="keymap? ( hwdb )" + +# The multilib-build.eclass doesn't handle situation where the installed headers +# are different in ABIs. In this case, we install libgudev headers in native +# ABI but not for non-native ABI. +multilib_check_headers() { :; } + +pkg_pretend() { + if ! use rule-generator; then + ewarn + ewarn "As of 2013-01-29, ${P} provides the new interface renaming functionality," + ewarn "as described in the URL below:" + ewarn "http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames" + ewarn + ewarn "This functionality is enabled BY DEFAULT because eudev has no means of synchronizing" + ewarn "between the default or user-modified choice of sys-fs/udev. If you wish to disable" + ewarn "this new iface naming, please be sure that /etc/udev/rules.d/80-net-name-slot.rules" + ewarn "exists:" + ewarn "\ttouch /etc/udev/rules.d/80-net-name-slot.rules" + ewarn + ewarn "We are working on a better solution for the next beta release." + ewarn + fi +} + +pkg_setup() { + CONFIG_CHECK="~BLK_DEV_BSG ~DEVTMPFS ~!IDE ~INOTIFY_USER ~!SYSFS_DEPRECATED ~!SYSFS_DEPRECATED_V2 ~SIGNALFD ~EPOLL ~FHANDLE ~NET" + linux-info_pkg_setup + get_running_version + + # These are required kernel options, but we don't error out on them + # because you can build under one kernel and run under another. + if kernel_is lt ${KV_min//./ }; then + ewarn + ewarn "Your current running kernel version ${KV_FULL} is too old to run ${P}." + ewarn "Make sure to run udev under kernel version ${KV_min} or above." + ewarn + fi +} + +src_prepare() { + # change rules back to group uucp instead of dialout for now + sed -e 's/GROUP="dialout"/GROUP="uucp"/' -i rules/*.rules \ + || die "failed to change group dialout to uucp" + + # Exclude MD from block device ownership event locking, bug #517986 + epatch "${FILESDIR}"/${PN}-exclude-MD.patch + + epatch_user + + if [[ ! -e configure ]]; then + if use doc; then + gtkdocize --docdir docs || die "gtkdocize failed" + else + echo 'EXTRA_DIST =' > docs/gtk-doc.make + fi + eautoreconf + else + elibtoolize + fi +} + +multilib_src_configure() { + tc-export CC #463846 + export cc_cv_CFLAGS__flto=no #502950 + + # Keep sorted by ./configure --help and only pass --disable flags + # when *required* to avoid external deps or unnecessary compile + local econf_args + econf_args=( + ac_cv_search_cap_init= + ac_cv_header_sys_capability_h=yes + DBUS_CFLAGS=' ' + DBUS_LIBS=' ' + --with-rootprefix= + --docdir=/usr/share/doc/${PF} + --libdir=/usr/$(get_libdir) + --with-rootlibexecdir=/lib/udev + --with-firmware-path="${EPREFIX}usr/lib/firmware/updates:${EPREFIX}usr/lib/firmware:${EPREFIX}lib/firmware/updates:${EPREFIX}lib/firmware" + --with-html-dir="/usr/share/doc/${PF}/html" + --enable-split-usr + --exec-prefix=/ + + $(use_enable gudev) + ) + + # Only build libudev for non-native_abi, and only install it to libdir, + # that means all options only apply to native_abi + if multilib_is_native_abi; then + econf_args+=( + --with-rootlibdir=/$(get_libdir) + $(use_enable doc gtk-doc) + $(use_enable introspection) + $(use_enable keymap) + $(use_enable kmod libkmod) + $(usex kmod --enable-modules $(use_enable modutils modules)) + $(use_enable static-libs static) + $(use_enable selinux) + $(use_enable rule-generator) + ) + else + econf_args+=( + --disable-static + --disable-gtk-doc + --disable-introspection + --disable-keymap + --disable-libkmod + --disable-modules + --disable-selinux + --disable-rule-generator + ) + fi + ECONF_SOURCE="${S}" econf "${econf_args[@]}" +} + +multilib_src_compile() { + if multilib_is_native_abi; then + emake + else + emake -C src/libudev + use gudev && emake -C src/gudev + fi +} + +multilib_src_install() { + if multilib_is_native_abi; then + emake DESTDIR="${D}" install + else + emake -C src/libudev DESTDIR="${D}" install + use gudev && emake -C src/gudev DESTDIR="${D}" install + fi +} + +multilib_src_test() { + # make sandbox get out of the way + # these are safe because there is a fake root filesystem put in place, + # but sandbox seems to evaluate the paths of the test i/o instead of the + # paths of the actual i/o that results. + # also only test for native abi + if multilib_is_native_abi; then + addread /sys + addwrite /dev + addwrite /run + default_src_test + fi +} + +multilib_src_install_all() { + prune_libtool_files --all + rm -rf "${ED}"/usr/share/doc/${PF}/LICENSE.* + + use rule-generator && use openrc && doinitd "${FILESDIR}"/udev-postmount + + # drop distributed hwdb files, they override sys-apps/hwids + rm -f "${ED}"/etc/udev/hwdb.d/*.hwdb + + insinto /lib/udev/rules.d + doins "${FILESDIR}"/40-gentoo.rules + + insinto /usr/share/doc/${PF}/html/gudev + doins "${S}"/docs/gudev/html/* + + insinto /usr/share/doc/${PF}/html/libudev + doins "${S}"/docs/libudev/html/* +} + +pkg_preinst() { + local htmldir + for htmldir in gudev libudev; do + if [[ -d ${EROOT}usr/share/gtk-doc/html/${htmldir} ]]; then + rm -rf "${EROOT}"usr/share/gtk-doc/html/${htmldir} + fi + if [[ -d ${ED}/usr/share/doc/${PF}/html/${htmldir} ]]; then + dosym ../../doc/${PF}/html/${htmldir} \ + /usr/share/gtk-doc/html/${htmldir} + fi + done +} + +pkg_postinst() { + mkdir -p "${EROOT}"run + + # "losetup -f" is confused if there is an empty /dev/loop/, Bug #338766 + # So try to remove it here (will only work if empty). + rmdir "${EROOT}"dev/loop 2>/dev/null + if [[ -d ${EROOT}dev/loop ]]; then + ewarn "Please make sure your remove /dev/loop," + ewarn "else losetup may be confused when looking for unused devices." + fi + + if use hwdb && has_version 'sys-apps/hwids[udev]'; then + udevadm hwdb --update --root="${ROOT%/}" + + # http://cgit.freedesktop.org/systemd/systemd/commit/?id=1fab57c209035f7e66198343074e9cee06718bda + # reload database after it has be rebuilt, but only if we are not upgrading + # also pass if we are -9999 since who knows what hwdb related changes there might be + if [[ ${REPLACING_VERSIONS%-r*} == ${PV} || -z ${REPLACING_VERSIONS} ]] && \ + [[ ${ROOT%/} == "" ]] && [[ ${PV} != "9999" ]]; then + udevadm control --reload + fi + fi + + ewarn + ewarn "You need to restart eudev as soon as possible to make the" + ewarn "upgrade go into effect:" + ewarn "\t/etc/init.d/udev --nodeps restart" + + if use rule-generator && use openrc && \ + [[ -x $(type -P rc-update) ]] && rc-update show | grep udev-postmount | grep -qsv 'boot\|default\|sysinit'; then + ewarn + ewarn "Please add the udev-postmount init script to your default runlevel" + ewarn "to ensure the legacy rule-generator functionality works as reliably" + ewarn "as possible." + ewarn "\trc-update add udev-postmount default" + fi + + elog + elog "For more information on eudev on Gentoo, writing udev rules, and" + elog "fixing known issues visit:" + elog " http://www.gentoo.org/doc/en/udev-guide.xml" + elog + + # http://cgit.freedesktop.org/systemd/systemd/commit/rules/50-udev-default.rules?id=3dff3e00e044e2d53c76fa842b9a4759d4a50e69 + # http://bugs.gentoo.org/246847 + # http://bugs.gentoo.org/514174 + enewgroup input + + # Update hwdb database in case the format is changed by udev version. + if has_version 'sys-apps/hwids[udev]'; then + udevadm hwdb --update --root="${ROOT%/}" + # Only reload when we are not upgrading to avoid potential race w/ incompatible hwdb.bin and the running udevd + if [[ -z ${REPLACING_VERSIONS} ]]; then + # http://cgit.freedesktop.org/systemd/systemd/commit/?id=1fab57c209035f7e66198343074e9cee06718bda + if [[ ${ROOT} != "" ]] && [[ ${ROOT} != "/" ]]; then + return 0 + fi + udevadm control --reload + fi + fi +} diff --git a/sys-fs/eudev/eudev-2.1.1.ebuild b/sys-fs/eudev/eudev-2.1.1.ebuild new file mode 100644 index 000000000000..c9d001b46bd8 --- /dev/null +++ b/sys-fs/eudev/eudev-2.1.1.ebuild @@ -0,0 +1,296 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI="5" + +KV_min=2.6.39 +WANT_AUTOMAKE=1.13 + +inherit autotools eutils linux-info multilib multilib-minimal user + +if [[ ${PV} = 9999* ]]; then + EGIT_REPO_URI="git://github.com/gentoo/eudev.git" + inherit git-2 +else + SRC_URI="http://dev.gentoo.org/~blueness/${PN}/${P}.tar.gz" + KEYWORDS="~amd64 ~arm ~hppa ~mips ~ppc ~ppc64 sparc ~x86" +fi + +DESCRIPTION="Linux dynamic and persistent device naming support (aka userspace devfs)" +HOMEPAGE="https://github.com/gentoo/eudev" + +LICENSE="LGPL-2.1 MIT GPL-2" +SLOT="0" +IUSE="doc gudev +hwdb +kmod introspection +keymap +modutils +rule-generator selinux static-libs test" + +COMMON_DEPEND=">=sys-apps/util-linux-2.20 + gudev? ( >=dev-libs/glib-2.34.3:2[${MULTILIB_USEDEP}] ) + introspection? ( >=dev-libs/gobject-introspection-1.38 ) + kmod? ( >=sys-apps/kmod-16 ) + selinux? ( >=sys-libs/libselinux-2.1.9 ) + !<sys-libs/glibc-2.11 + !sys-apps/gentoo-systemd-integration + !sys-apps/systemd + abi_x86_32? ( + !<=app-emulation/emul-linux-x86-baselibs-20130224-r7 + !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] + )" +DEPEND="${COMMON_DEPEND} + keymap? ( dev-util/gperf ) + virtual/os-headers + virtual/pkgconfig + >=sys-devel/make-3.82-r4 + >=sys-kernel/linux-headers-${KV_min} + doc? ( >=dev-util/gtk-doc-1.18 ) + app-text/docbook-xml-dtd:4.2 + app-text/docbook-xml-dtd:4.5 + app-text/docbook-xsl-stylesheets + dev-libs/libxslt + >=dev-util/intltool-0.50 + test? ( app-text/tree dev-lang/perl )" + +RDEPEND="${COMMON_DEPEND} + !<sys-fs/lvm2-2.02.103 + !<sec-policy/selinux-base-2.20120725-r10 + !sys-fs/udev + !sys-apps/systemd + gudev? ( !dev-libs/libgudev )" + +PDEPEND=">=sys-fs/udev-init-scripts-26 + hwdb? ( >=sys-apps/hwids-20140304[udev] ) + keymap? ( >=sys-apps/hwids-20140304[udev] )" + +REQUIRED_USE="keymap? ( hwdb )" + +# The multilib-build.eclass doesn't handle situation where the installed headers +# are different in ABIs. In this case, we install libgudev headers in native +# ABI but not for non-native ABI. +multilib_check_headers() { :; } + +pkg_pretend() { + if ! use rule-generator; then + ewarn + ewarn "As of 2013-01-29, ${P} provides the new interface renaming functionality," + ewarn "as described in the URL below:" + ewarn "http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames" + ewarn + ewarn "This functionality is enabled BY DEFAULT because eudev has no means of synchronizing" + ewarn "between the default or user-modified choice of sys-fs/udev. If you wish to disable" + ewarn "this new iface naming, please be sure that /etc/udev/rules.d/80-net-name-slot.rules" + ewarn "exists:" + ewarn "\ttouch /etc/udev/rules.d/80-net-name-slot.rules" + ewarn + ewarn "We are working on a better solution for the next beta release." + ewarn + fi +} + +pkg_setup() { + CONFIG_CHECK="~BLK_DEV_BSG ~DEVTMPFS ~!IDE ~INOTIFY_USER ~!SYSFS_DEPRECATED ~!SYSFS_DEPRECATED_V2 ~SIGNALFD ~EPOLL ~FHANDLE ~NET" + linux-info_pkg_setup + get_running_version + + # These are required kernel options, but we don't error out on them + # because you can build under one kernel and run under another. + if kernel_is lt ${KV_min//./ }; then + ewarn + ewarn "Your current running kernel version ${KV_FULL} is too old to run ${P}." + ewarn "Make sure to run udev under kernel version ${KV_min} or above." + ewarn + fi +} + +src_prepare() { + # change rules back to group uucp instead of dialout for now + sed -e 's/GROUP="dialout"/GROUP="uucp"/' -i rules/*.rules \ + || die "failed to change group dialout to uucp" + + epatch_user + + if use doc; then + gtkdocize --docdir docs || die "gtkdocize failed" + else + echo 'EXTRA_DIST =' > docs/gtk-doc.make + fi + eautoreconf +} + +multilib_src_configure() { + tc-export CC #463846 + export cc_cv_CFLAGS__flto=no #502950 + + # Keep sorted by ./configure --help and only pass --disable flags + # when *required* to avoid external deps or unnecessary compile + local econf_args + econf_args=( + ac_cv_search_cap_init= + ac_cv_header_sys_capability_h=yes + DBUS_CFLAGS=' ' + DBUS_LIBS=' ' + --with-rootprefix= + --docdir=/usr/share/doc/${PF} + --libdir=/usr/$(get_libdir) + --with-rootlibexecdir=/lib/udev + --with-html-dir="/usr/share/doc/${PF}/html" + --enable-split-usr + --exec-prefix=/ + + $(use_enable gudev) + ) + + # Only build libudev for non-native_abi, and only install it to libdir, + # that means all options only apply to native_abi + if multilib_is_native_abi; then + econf_args+=( + --with-rootlibdir=/$(get_libdir) + $(use_enable doc gtk-doc) + $(use_enable introspection) + $(use_enable keymap) + $(use_enable kmod libkmod) + $(usex kmod --enable-modules $(use_enable modutils modules)) + $(use_enable static-libs static) + $(use_enable selinux) + $(use_enable rule-generator) + ) + else + econf_args+=( + --disable-static + --disable-gtk-doc + --disable-introspection + --disable-keymap + --disable-libkmod + --disable-modules + --disable-selinux + --disable-rule-generator + ) + fi + ECONF_SOURCE="${S}" econf "${econf_args[@]}" +} + +multilib_src_compile() { + if multilib_is_native_abi; then + emake + else + emake -C src/shared + emake -C src/libudev + use gudev && emake -C src/gudev + fi +} + +multilib_src_install() { + if multilib_is_native_abi; then + emake DESTDIR="${D}" install + else + emake -C src/libudev DESTDIR="${D}" install + use gudev && emake -C src/gudev DESTDIR="${D}" install + fi +} + +multilib_src_test() { + # make sandbox get out of the way + # these are safe because there is a fake root filesystem put in place, + # but sandbox seems to evaluate the paths of the test i/o instead of the + # paths of the actual i/o that results. + # also only test for native abi + if multilib_is_native_abi; then + addread /sys + addwrite /dev + addwrite /run + default_src_test + fi +} + +multilib_src_install_all() { + prune_libtool_files --all + rm -rf "${ED}"/usr/share/doc/${PF}/LICENSE.* + + use rule-generator && doinitd "${FILESDIR}"/udev-postmount + + # drop distributed hwdb files, they override sys-apps/hwids + rm -f "${ED}"/etc/udev/hwdb.d/*.hwdb + + insinto /lib/udev/rules.d + doins "${FILESDIR}"/40-gentoo.rules + + insinto /usr/share/doc/${PF}/html/gudev + doins "${S}"/docs/gudev/html/* + + insinto /usr/share/doc/${PF}/html/libudev + doins "${S}"/docs/libudev/html/* +} + +pkg_preinst() { + local htmldir + for htmldir in gudev libudev; do + if [[ -d ${EROOT}usr/share/gtk-doc/html/${htmldir} ]]; then + rm -rf "${EROOT}"usr/share/gtk-doc/html/${htmldir} + fi + if [[ -d ${ED}/usr/share/doc/${PF}/html/${htmldir} ]]; then + dosym ../../doc/${PF}/html/${htmldir} \ + /usr/share/gtk-doc/html/${htmldir} + fi + done +} + +pkg_postinst() { + mkdir -p "${EROOT}"run + + # "losetup -f" is confused if there is an empty /dev/loop/, Bug #338766 + # So try to remove it here (will only work if empty). + rmdir "${EROOT}"dev/loop 2>/dev/null + if [[ -d ${EROOT}dev/loop ]]; then + ewarn "Please make sure your remove /dev/loop," + ewarn "else losetup may be confused when looking for unused devices." + fi + + if use hwdb && has_version 'sys-apps/hwids[udev]'; then + udevadm hwdb --update --root="${ROOT%/}" + + # http://cgit.freedesktop.org/systemd/systemd/commit/?id=1fab57c209035f7e66198343074e9cee06718bda + # reload database after it has be rebuilt, but only if we are not upgrading + # also pass if we are -9999 since who knows what hwdb related changes there might be + if [[ ${REPLACING_VERSIONS%-r*} == ${PV} || -z ${REPLACING_VERSIONS} ]] && \ + [[ ${ROOT%/} == "" ]] && [[ ${PV} != "9999" ]]; then + udevadm control --reload + fi + fi + + ewarn + ewarn "You need to restart eudev as soon as possible to make the" + ewarn "upgrade go into effect:" + ewarn "\t/etc/init.d/udev --nodeps restart" + + if use rule-generator && \ + [[ -x $(type -P rc-update) ]] && rc-update show | grep udev-postmount | grep -qsv 'boot\|default\|sysinit'; then + ewarn + ewarn "Please add the udev-postmount init script to your default runlevel" + ewarn "to ensure the legacy rule-generator functionality works as reliably" + ewarn "as possible." + ewarn "\trc-update add udev-postmount default" + fi + + elog + elog "For more information on eudev on Gentoo, writing udev rules, and" + elog "fixing known issues visit:" + elog " http://www.gentoo.org/doc/en/udev-guide.xml" + elog + + # http://cgit.freedesktop.org/systemd/systemd/commit/rules/50-udev-default.rules?id=3dff3e00e044e2d53c76fa842b9a4759d4a50e69 + # http://bugs.gentoo.org/246847 + # http://bugs.gentoo.org/514174 + enewgroup input + + # Update hwdb database in case the format is changed by udev version. + if has_version 'sys-apps/hwids[udev]'; then + udevadm hwdb --update --root="${ROOT%/}" + # Only reload when we are not upgrading to avoid potential race w/ incompatible hwdb.bin and the running udevd + if [[ -z ${REPLACING_VERSIONS} ]]; then + # http://cgit.freedesktop.org/systemd/systemd/commit/?id=1fab57c209035f7e66198343074e9cee06718bda + if [[ ${ROOT} != "" ]] && [[ ${ROOT} != "/" ]]; then + return 0 + fi + udevadm control --reload + fi + fi +} diff --git a/sys-fs/eudev/eudev-3.0.ebuild b/sys-fs/eudev/eudev-3.0.ebuild new file mode 100644 index 000000000000..8dade3487576 --- /dev/null +++ b/sys-fs/eudev/eudev-3.0.ebuild @@ -0,0 +1,274 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI="5" + +KV_min=2.6.39 +WANT_AUTOMAKE=1.13 + +inherit autotools eutils linux-info multilib multilib-minimal user + +if [[ ${PV} = 9999* ]]; then + EGIT_REPO_URI="git://github.com/gentoo/eudev.git" + inherit git-2 +else + SRC_URI="http://dev.gentoo.org/~blueness/${PN}/${P}.tar.gz" + KEYWORDS="~amd64 ~arm ~hppa ~mips ~ppc ~ppc64 ~sparc ~x86" +fi + +DESCRIPTION="Linux dynamic and persistent device naming support (aka userspace devfs)" +HOMEPAGE="https://github.com/gentoo/eudev" + +LICENSE="LGPL-2.1 MIT GPL-2" +SLOT="0" +IUSE="doc gudev +hwdb +kmod introspection selinux static-libs test" + +COMMON_DEPEND=">=sys-apps/util-linux-2.20 + gudev? ( >=dev-libs/glib-2.34.3:2[${MULTILIB_USEDEP}] ) + introspection? ( >=dev-libs/gobject-introspection-1.38 ) + kmod? ( >=sys-apps/kmod-16 ) + selinux? ( >=sys-libs/libselinux-2.1.9 ) + !<sys-libs/glibc-2.11 + !sys-apps/gentoo-systemd-integration + !sys-apps/systemd + abi_x86_32? ( + !<=app-emulation/emul-linux-x86-baselibs-20130224-r7 + !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] + )" +DEPEND="${COMMON_DEPEND} + dev-util/gperf + virtual/os-headers + virtual/pkgconfig + >=sys-devel/make-3.82-r4 + >=sys-kernel/linux-headers-${KV_min} + doc? ( >=dev-util/gtk-doc-1.18 + app-text/docbook-xml-dtd:4.2 + app-text/docbook-xml-dtd:4.5 + app-text/docbook-xsl-stylesheets + dev-libs/libxslt + ) + >=dev-util/intltool-0.50 + test? ( app-text/tree dev-lang/perl )" + +RDEPEND="${COMMON_DEPEND} + !<sys-fs/lvm2-2.02.103 + !<sec-policy/selinux-base-2.20120725-r10 + !sys-fs/udev + !sys-apps/systemd + gudev? ( !dev-libs/libgudev )" + +PDEPEND=">=sys-fs/udev-init-scripts-26 + hwdb? ( >=sys-apps/hwids-20140304[udev] )" + +# The multilib-build.eclass doesn't handle situation where the installed headers +# are different in ABIs. In this case, we install libgudev headers in native +# ABI but not for non-native ABI. +multilib_check_headers() { :; } + +pkg_pretend() { + ewarn + ewarn "As of 2013-01-29, ${P} provides the new interface renaming functionality," + ewarn "as described in the URL below:" + ewarn "http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames" + ewarn + ewarn "This functionality is enabled BY DEFAULT because eudev has no means of synchronizing" + ewarn "between the default or user-modified choice of sys-fs/udev. If you wish to disable" + ewarn "this new iface naming, please be sure that /etc/udev/rules.d/80-net-name-slot.rules" + ewarn "exists: touch /etc/udev/rules.d/80-net-name-slot.rules" + ewarn +} + +pkg_setup() { + CONFIG_CHECK="~BLK_DEV_BSG ~DEVTMPFS ~!IDE ~INOTIFY_USER ~!SYSFS_DEPRECATED ~!SYSFS_DEPRECATED_V2 ~SIGNALFD ~EPOLL ~FHANDLE ~NET" + linux-info_pkg_setup + get_running_version + + # These are required kernel options, but we don't error out on them + # because you can build under one kernel and run under another. + if kernel_is lt ${KV_min//./ }; then + ewarn + ewarn "Your current running kernel version ${KV_FULL} is too old to run ${P}." + ewarn "Make sure to run udev under kernel version ${KV_min} or above." + ewarn + fi +} + +src_prepare() { + # change rules back to group uucp instead of dialout for now + sed -e 's/GROUP="dialout"/GROUP="uucp"/' -i rules/*.rules \ + || die "failed to change group dialout to uucp" + + epatch_user + + if use doc; then + gtkdocize --docdir docs || die "gtkdocize failed" + else + echo 'EXTRA_DIST =' > docs/gtk-doc.make + fi + eautoreconf +} + +multilib_src_configure() { + tc-export CC #463846 + export cc_cv_CFLAGS__flto=no #502950 + + # Keep sorted by ./configure --help and only pass --disable flags + # when *required* to avoid external deps or unnecessary compile + local econf_args + econf_args=( + ac_cv_search_cap_init= + ac_cv_header_sys_capability_h=yes + DBUS_CFLAGS=' ' + DBUS_LIBS=' ' + --with-rootprefix= + --docdir=/usr/share/doc/${PF} + --libdir=/usr/$(get_libdir) + --with-rootlibexecdir=/lib/udev + --with-html-dir="/usr/share/doc/${PF}/html" + --enable-split-usr + --exec-prefix=/ + + $(use_enable gudev) + ) + + # Only build libudev for non-native_abi, and only install it to libdir, + # that means all options only apply to native_abi + if multilib_is_native_abi; then + econf_args+=( + --with-rootlibdir=/$(get_libdir) + $(use_enable doc gtk-doc) + $(use_enable introspection) + $(use_enable kmod) + $(use_enable static-libs static) + $(use_enable selinux) + ) + else + econf_args+=( + --disable-static + --disable-gtk-doc + --disable-introspection + --disable-kmod + --disable-selinux + ) + fi + ECONF_SOURCE="${S}" econf "${econf_args[@]}" +} + +multilib_src_compile() { + if multilib_is_native_abi; then + emake + else + emake -C src/shared + emake -C src/libudev + use gudev && emake -C src/gudev + fi +} + +multilib_src_install() { + if multilib_is_native_abi; then + emake DESTDIR="${D}" install + else + emake -C src/libudev DESTDIR="${D}" install + use gudev && emake -C src/gudev DESTDIR="${D}" install + fi +} + +multilib_src_test() { + # make sandbox get out of the way + # these are safe because there is a fake root filesystem put in place, + # but sandbox seems to evaluate the paths of the test i/o instead of the + # paths of the actual i/o that results. + # also only test for native abi + if multilib_is_native_abi; then + addread /sys + addwrite /dev + addwrite /run + default_src_test + fi +} + +multilib_src_install_all() { + prune_libtool_files --all + rm -rf "${ED}"/usr/share/doc/${PF}/LICENSE.* + + # drop distributed hwdb files, they override sys-apps/hwids + rm -f "${ED}"/etc/udev/hwdb.d/*.hwdb + + insinto /lib/udev/rules.d + doins "${FILESDIR}"/40-gentoo.rules + + if ! [[ ${PV} = 9999* ]]; then + insinto /usr/share/doc/${PF}/html/gudev + doins "${S}"/docs/gudev/html/* + + insinto /usr/share/doc/${PF}/html/libudev + doins "${S}"/docs/libudev/html/* + fi +} + +pkg_preinst() { + local htmldir + for htmldir in gudev libudev; do + if [[ -d ${EROOT}usr/share/gtk-doc/html/${htmldir} ]]; then + rm -rf "${EROOT}"usr/share/gtk-doc/html/${htmldir} + fi + if [[ -d ${ED}/usr/share/doc/${PF}/html/${htmldir} ]]; then + dosym ../../doc/${PF}/html/${htmldir} \ + /usr/share/gtk-doc/html/${htmldir} + fi + done +} + +pkg_postinst() { + mkdir -p "${EROOT}"run + + # "losetup -f" is confused if there is an empty /dev/loop/, Bug #338766 + # So try to remove it here (will only work if empty). + rmdir "${EROOT}"dev/loop 2>/dev/null + if [[ -d ${EROOT}dev/loop ]]; then + ewarn "Please make sure your remove /dev/loop," + ewarn "else losetup may be confused when looking for unused devices." + fi + + if use hwdb && has_version 'sys-apps/hwids[udev]'; then + udevadm hwdb --update --root="${ROOT%/}" + + # http://cgit.freedesktop.org/systemd/systemd/commit/?id=1fab57c209035f7e66198343074e9cee06718bda + # reload database after it has be rebuilt, but only if we are not upgrading + # also pass if we are -9999 since who knows what hwdb related changes there might be + if [[ ${REPLACING_VERSIONS%-r*} == ${PV} || -z ${REPLACING_VERSIONS} ]] && \ + [[ ${ROOT%/} == "" ]] && [[ ${PV} != "9999" ]]; then + udevadm control --reload + fi + fi + + ewarn + ewarn "You need to restart eudev as soon as possible to make the" + ewarn "upgrade go into effect:" + ewarn "\t/etc/init.d/udev --nodeps restart" + + elog + elog "For more information on eudev on Gentoo, writing udev rules, and" + elog "fixing known issues visit:" + elog " http://www.gentoo.org/doc/en/udev-guide.xml" + elog + + # http://cgit.freedesktop.org/systemd/systemd/commit/rules/50-udev-default.rules?id=3dff3e00e044e2d53c76fa842b9a4759d4a50e69 + # http://bugs.gentoo.org/246847 + # http://bugs.gentoo.org/514174 + enewgroup input + + # Update hwdb database in case the format is changed by udev version. + if has_version 'sys-apps/hwids[udev]'; then + udevadm hwdb --update --root="${ROOT%/}" + # Only reload when we are not upgrading to avoid potential race w/ incompatible hwdb.bin and the running udevd + if [[ -z ${REPLACING_VERSIONS} ]]; then + # http://cgit.freedesktop.org/systemd/systemd/commit/?id=1fab57c209035f7e66198343074e9cee06718bda + if [[ ${ROOT} != "" ]] && [[ ${ROOT} != "/" ]]; then + return 0 + fi + udevadm control --reload + fi + fi +} diff --git a/sys-fs/eudev/eudev-3.1.2-r10.ebuild b/sys-fs/eudev/eudev-3.1.2-r10.ebuild new file mode 100644 index 000000000000..82cfc9d87226 --- /dev/null +++ b/sys-fs/eudev/eudev-3.1.2-r10.ebuild @@ -0,0 +1,270 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI="5" + +KV_min=2.6.39 +WANT_AUTOMAKE=1.13 + +inherit autotools eutils linux-info multilib multilib-minimal user + +if [[ ${PV} = 9999* ]]; then + EGIT_REPO_URI="git://github.com/gentoo/eudev.git" + inherit git-2 +else + SRC_URI="http://dev.gentoo.org/~blueness/${PN}/${P}.tar.gz" + KEYWORDS="~amd64 ~arm ~hppa ~mips ~ppc ~ppc64 ~sparc ~x86" +fi + +DESCRIPTION="Linux dynamic and persistent device naming support (aka userspace devfs)" +HOMEPAGE="https://github.com/gentoo/eudev" + +LICENSE="LGPL-2.1 MIT GPL-2" +SLOT="0" +IUSE="doc +hwdb +kmod introspection selinux static-libs test" + +COMMON_DEPEND=">=sys-apps/util-linux-2.20 + introspection? ( >=dev-libs/gobject-introspection-1.38 ) + kmod? ( >=sys-apps/kmod-16 ) + selinux? ( >=sys-libs/libselinux-2.1.9 ) + !<sys-libs/glibc-2.11 + !sys-apps/gentoo-systemd-integration + !sys-apps/systemd + abi_x86_32? ( + !<=app-emulation/emul-linux-x86-baselibs-20130224-r7 + !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] + )" +DEPEND="${COMMON_DEPEND} + dev-util/gperf + virtual/os-headers + virtual/pkgconfig + >=sys-devel/make-3.82-r4 + >=sys-kernel/linux-headers-${KV_min} + doc? ( >=dev-util/gtk-doc-1.18 + app-text/docbook-xml-dtd:4.2 + app-text/docbook-xml-dtd:4.5 + app-text/docbook-xsl-stylesheets + dev-libs/libxslt + ) + >=dev-util/intltool-0.50 + test? ( app-text/tree dev-lang/perl )" + +RDEPEND="${COMMON_DEPEND} + !<sys-fs/lvm2-2.02.103 + !<sec-policy/selinux-base-2.20120725-r10 + !sys-fs/udev + !sys-apps/systemd" + +PDEPEND=">=sys-fs/udev-init-scripts-26 + hwdb? ( >=sys-apps/hwids-20140304[udev] )" + +# The multilib-build.eclass doesn't handle situation where the installed headers +# are different in ABIs. In this case, we install libgudev headers in native +# ABI but not for non-native ABI. +multilib_check_headers() { :; } + +pkg_pretend() { + ewarn + ewarn "As of 2013-01-29, ${P} provides the new interface renaming functionality," + ewarn "as described in the URL below:" + ewarn "http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames" + ewarn + ewarn "This functionality is enabled BY DEFAULT because eudev has no means of synchronizing" + ewarn "between the default or user-modified choice of sys-fs/udev. If you wish to disable" + ewarn "this new iface naming, please be sure that /etc/udev/rules.d/80-net-name-slot.rules" + ewarn "exists: touch /etc/udev/rules.d/80-net-name-slot.rules" + ewarn +} + +pkg_setup() { + CONFIG_CHECK="~BLK_DEV_BSG ~DEVTMPFS ~!IDE ~INOTIFY_USER ~!SYSFS_DEPRECATED ~!SYSFS_DEPRECATED_V2 ~SIGNALFD ~EPOLL ~FHANDLE ~NET" + linux-info_pkg_setup + get_running_version + + # These are required kernel options, but we don't error out on them + # because you can build under one kernel and run under another. + if kernel_is lt ${KV_min//./ }; then + ewarn + ewarn "Your current running kernel version ${KV_FULL} is too old to run ${P}." + ewarn "Make sure to run udev under kernel version ${KV_min} or above." + ewarn + fi +} + +src_prepare() { + # change rules back to group uucp instead of dialout for now + sed -e 's/GROUP="dialout"/GROUP="uucp"/' -i rules/*.rules \ + || die "failed to change group dialout to uucp" + + epatch_user + + if use doc; then + gtkdocize --docdir docs || die "gtkdocize failed" + else + echo 'EXTRA_DIST =' > docs/gtk-doc.make + fi + eautoreconf +} + +multilib_src_configure() { + tc-export CC #463846 + export cc_cv_CFLAGS__flto=no #502950 + + # Keep sorted by ./configure --help and only pass --disable flags + # when *required* to avoid external deps or unnecessary compile + local econf_args + econf_args=( + ac_cv_search_cap_init= + ac_cv_header_sys_capability_h=yes + DBUS_CFLAGS=' ' + DBUS_LIBS=' ' + --with-rootprefix= + --with-rootrundir=/run + --docdir=/usr/share/doc/${PF} + --libdir=/usr/$(get_libdir) + --with-rootlibexecdir=/lib/udev + --with-html-dir="/usr/share/doc/${PF}/html" + --enable-split-usr + --enable-manpages + --disable-hwdb + --exec-prefix=/ + + --disable-gudev + ) + + # Only build libudev for non-native_abi, and only install it to libdir, + # that means all options only apply to native_abi + if multilib_is_native_abi; then + econf_args+=( + --with-rootlibdir=/$(get_libdir) + $(use_enable doc gtk-doc) + $(use_enable introspection) + $(use_enable kmod) + $(use_enable static-libs static) + $(use_enable selinux) + ) + else + econf_args+=( + --disable-static + --disable-gtk-doc + --disable-introspection + --disable-kmod + --disable-selinux + ) + fi + ECONF_SOURCE="${S}" econf "${econf_args[@]}" +} + +multilib_src_compile() { + if multilib_is_native_abi; then + emake + else + emake -C src/shared + emake -C src/libudev + fi +} + +multilib_src_install() { + if multilib_is_native_abi; then + emake DESTDIR="${D}" install + else + emake -C src/libudev DESTDIR="${D}" install + fi +} + +multilib_src_test() { + # make sandbox get out of the way + # these are safe because there is a fake root filesystem put in place, + # but sandbox seems to evaluate the paths of the test i/o instead of the + # paths of the actual i/o that results. + # also only test for native abi + if multilib_is_native_abi; then + addread /sys + addwrite /dev + addwrite /run + default_src_test + fi +} + +multilib_src_install_all() { + prune_libtool_files --all + rm -rf "${ED}"/usr/share/doc/${PF}/LICENSE.* + + insinto /lib/udev/rules.d + doins "${FILESDIR}"/40-gentoo.rules + + if ! [[ ${PV} = 9999* ]]; then + insinto /usr/share/doc/${PF}/html/gudev + doins "${S}"/docs/gudev/html/* + + insinto /usr/share/doc/${PF}/html/libudev + doins "${S}"/docs/libudev/html/* + fi +} + +pkg_preinst() { + local htmldir + for htmldir in libudev; do + if [[ -d ${EROOT}usr/share/gtk-doc/html/${htmldir} ]]; then + rm -rf "${EROOT}"usr/share/gtk-doc/html/${htmldir} + fi + if [[ -d ${ED}/usr/share/doc/${PF}/html/${htmldir} ]]; then + dosym ../../doc/${PF}/html/${htmldir} \ + /usr/share/gtk-doc/html/${htmldir} + fi + done +} + +pkg_postinst() { + mkdir -p "${EROOT}"run + + # "losetup -f" is confused if there is an empty /dev/loop/, Bug #338766 + # So try to remove it here (will only work if empty). + rmdir "${EROOT}"dev/loop 2>/dev/null + if [[ -d ${EROOT}dev/loop ]]; then + ewarn "Please make sure your remove /dev/loop," + ewarn "else losetup may be confused when looking for unused devices." + fi + + if use hwdb && has_version 'sys-apps/hwids[udev]'; then + udevadm hwdb --update --root="${ROOT%/}" + + # http://cgit.freedesktop.org/systemd/systemd/commit/?id=1fab57c209035f7e66198343074e9cee06718bda + # reload database after it has be rebuilt, but only if we are not upgrading + # also pass if we are -9999 since who knows what hwdb related changes there might be + if [[ ${REPLACING_VERSIONS%-r*} == ${PV} || -z ${REPLACING_VERSIONS} ]] && \ + [[ ${ROOT%/} == "" ]] && [[ ${PV} != "9999" ]]; then + udevadm control --reload + fi + fi + + ewarn + ewarn "You need to restart eudev as soon as possible to make the" + ewarn "upgrade go into effect:" + ewarn "\t/etc/init.d/udev --nodeps restart" + + elog + elog "For more information on eudev on Gentoo, writing udev rules, and" + elog "fixing known issues visit:" + elog " http://www.gentoo.org/doc/en/udev-guide.xml" + elog + + # http://cgit.freedesktop.org/systemd/systemd/commit/rules/50-udev-default.rules?id=3dff3e00e044e2d53c76fa842b9a4759d4a50e69 + # http://bugs.gentoo.org/246847 + # http://bugs.gentoo.org/514174 + enewgroup input + + # Update hwdb database in case the format is changed by udev version. + if has_version 'sys-apps/hwids[udev]'; then + udevadm hwdb --update --root="${ROOT%/}" + # Only reload when we are not upgrading to avoid potential race w/ incompatible hwdb.bin and the running udevd + if [[ -z ${REPLACING_VERSIONS} ]]; then + # http://cgit.freedesktop.org/systemd/systemd/commit/?id=1fab57c209035f7e66198343074e9cee06718bda + if [[ ${ROOT} != "" ]] && [[ ${ROOT} != "/" ]]; then + return 0 + fi + udevadm control --reload + fi + fi +} diff --git a/sys-fs/eudev/eudev-3.1.2.ebuild b/sys-fs/eudev/eudev-3.1.2.ebuild new file mode 100644 index 000000000000..8d76fb21744c --- /dev/null +++ b/sys-fs/eudev/eudev-3.1.2.ebuild @@ -0,0 +1,274 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI="5" + +KV_min=2.6.39 +WANT_AUTOMAKE=1.13 + +inherit autotools eutils linux-info multilib multilib-minimal user + +if [[ ${PV} = 9999* ]]; then + EGIT_REPO_URI="git://github.com/gentoo/eudev.git" + inherit git-2 +else + SRC_URI="http://dev.gentoo.org/~blueness/${PN}/${P}.tar.gz" + KEYWORDS="alpha amd64 arm hppa ia64 ~mips ~ppc ppc64 sparc x86" +fi + +DESCRIPTION="Linux dynamic and persistent device naming support (aka userspace devfs)" +HOMEPAGE="https://github.com/gentoo/eudev" + +LICENSE="LGPL-2.1 MIT GPL-2" +SLOT="0" +IUSE="doc gudev +hwdb +kmod introspection selinux static-libs test" + +COMMON_DEPEND=">=sys-apps/util-linux-2.20 + gudev? ( >=dev-libs/glib-2.34.3:2[${MULTILIB_USEDEP}] ) + introspection? ( >=dev-libs/gobject-introspection-1.38 ) + kmod? ( >=sys-apps/kmod-16 ) + selinux? ( >=sys-libs/libselinux-2.1.9 ) + !<sys-libs/glibc-2.11 + !sys-apps/gentoo-systemd-integration + !sys-apps/systemd + abi_x86_32? ( + !<=app-emulation/emul-linux-x86-baselibs-20130224-r7 + !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] + )" +DEPEND="${COMMON_DEPEND} + dev-util/gperf + virtual/os-headers + virtual/pkgconfig + >=sys-devel/make-3.82-r4 + >=sys-kernel/linux-headers-${KV_min} + doc? ( >=dev-util/gtk-doc-1.18 + app-text/docbook-xml-dtd:4.2 + app-text/docbook-xml-dtd:4.5 + app-text/docbook-xsl-stylesheets + dev-libs/libxslt + ) + >=dev-util/intltool-0.50 + test? ( app-text/tree dev-lang/perl )" + +RDEPEND="${COMMON_DEPEND} + !<sys-fs/lvm2-2.02.103 + !<sec-policy/selinux-base-2.20120725-r10 + !sys-fs/udev + !sys-apps/systemd + gudev? ( !dev-libs/libgudev )" + +PDEPEND=">=sys-fs/udev-init-scripts-26 + hwdb? ( >=sys-apps/hwids-20140304[udev] )" + +# The multilib-build.eclass doesn't handle situation where the installed headers +# are different in ABIs. In this case, we install libgudev headers in native +# ABI but not for non-native ABI. +multilib_check_headers() { :; } + +pkg_pretend() { + ewarn + ewarn "As of 2013-01-29, ${P} provides the new interface renaming functionality," + ewarn "as described in the URL below:" + ewarn "http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames" + ewarn + ewarn "This functionality is enabled BY DEFAULT because eudev has no means of synchronizing" + ewarn "between the default or user-modified choice of sys-fs/udev. If you wish to disable" + ewarn "this new iface naming, please be sure that /etc/udev/rules.d/80-net-name-slot.rules" + ewarn "exists: touch /etc/udev/rules.d/80-net-name-slot.rules" + ewarn +} + +pkg_setup() { + CONFIG_CHECK="~BLK_DEV_BSG ~DEVTMPFS ~!IDE ~INOTIFY_USER ~!SYSFS_DEPRECATED ~!SYSFS_DEPRECATED_V2 ~SIGNALFD ~EPOLL ~FHANDLE ~NET" + linux-info_pkg_setup + get_running_version + + # These are required kernel options, but we don't error out on them + # because you can build under one kernel and run under another. + if kernel_is lt ${KV_min//./ }; then + ewarn + ewarn "Your current running kernel version ${KV_FULL} is too old to run ${P}." + ewarn "Make sure to run udev under kernel version ${KV_min} or above." + ewarn + fi +} + +src_prepare() { + # change rules back to group uucp instead of dialout for now + sed -e 's/GROUP="dialout"/GROUP="uucp"/' -i rules/*.rules \ + || die "failed to change group dialout to uucp" + + epatch_user + + if use doc; then + gtkdocize --docdir docs || die "gtkdocize failed" + else + echo 'EXTRA_DIST =' > docs/gtk-doc.make + fi + eautoreconf +} + +multilib_src_configure() { + tc-export CC #463846 + export cc_cv_CFLAGS__flto=no #502950 + + # Keep sorted by ./configure --help and only pass --disable flags + # when *required* to avoid external deps or unnecessary compile + local econf_args + econf_args=( + ac_cv_search_cap_init= + ac_cv_header_sys_capability_h=yes + DBUS_CFLAGS=' ' + DBUS_LIBS=' ' + --with-rootprefix= + --with-rootrundir=/run + --docdir=/usr/share/doc/${PF} + --libdir=/usr/$(get_libdir) + --with-rootlibexecdir=/lib/udev + --with-html-dir="/usr/share/doc/${PF}/html" + --enable-split-usr + --enable-manpages + --disable-hwdb + --exec-prefix=/ + + $(use_enable gudev) + ) + + # Only build libudev for non-native_abi, and only install it to libdir, + # that means all options only apply to native_abi + if multilib_is_native_abi; then + econf_args+=( + --with-rootlibdir=/$(get_libdir) + $(use_enable doc gtk-doc) + $(use_enable introspection) + $(use_enable kmod) + $(use_enable static-libs static) + $(use_enable selinux) + ) + else + econf_args+=( + --disable-static + --disable-gtk-doc + --disable-introspection + --disable-kmod + --disable-selinux + ) + fi + ECONF_SOURCE="${S}" econf "${econf_args[@]}" +} + +multilib_src_compile() { + if multilib_is_native_abi; then + emake + else + emake -C src/shared + emake -C src/libudev + use gudev && emake -C src/gudev + fi +} + +multilib_src_install() { + if multilib_is_native_abi; then + emake DESTDIR="${D}" install + else + emake -C src/libudev DESTDIR="${D}" install + use gudev && emake -C src/gudev DESTDIR="${D}" install + fi +} + +multilib_src_test() { + # make sandbox get out of the way + # these are safe because there is a fake root filesystem put in place, + # but sandbox seems to evaluate the paths of the test i/o instead of the + # paths of the actual i/o that results. + # also only test for native abi + if multilib_is_native_abi; then + addread /sys + addwrite /dev + addwrite /run + default_src_test + fi +} + +multilib_src_install_all() { + prune_libtool_files --all + rm -rf "${ED}"/usr/share/doc/${PF}/LICENSE.* + + insinto /lib/udev/rules.d + doins "${FILESDIR}"/40-gentoo.rules + + if ! [[ ${PV} = 9999* ]]; then + insinto /usr/share/doc/${PF}/html/gudev + doins "${S}"/docs/gudev/html/* + + insinto /usr/share/doc/${PF}/html/libudev + doins "${S}"/docs/libudev/html/* + fi +} + +pkg_preinst() { + local htmldir + for htmldir in gudev libudev; do + if [[ -d ${EROOT}usr/share/gtk-doc/html/${htmldir} ]]; then + rm -rf "${EROOT}"usr/share/gtk-doc/html/${htmldir} + fi + if [[ -d ${ED}/usr/share/doc/${PF}/html/${htmldir} ]]; then + dosym ../../doc/${PF}/html/${htmldir} \ + /usr/share/gtk-doc/html/${htmldir} + fi + done +} + +pkg_postinst() { + mkdir -p "${EROOT}"run + + # "losetup -f" is confused if there is an empty /dev/loop/, Bug #338766 + # So try to remove it here (will only work if empty). + rmdir "${EROOT}"dev/loop 2>/dev/null + if [[ -d ${EROOT}dev/loop ]]; then + ewarn "Please make sure your remove /dev/loop," + ewarn "else losetup may be confused when looking for unused devices." + fi + + if use hwdb && has_version 'sys-apps/hwids[udev]'; then + udevadm hwdb --update --root="${ROOT%/}" + + # http://cgit.freedesktop.org/systemd/systemd/commit/?id=1fab57c209035f7e66198343074e9cee06718bda + # reload database after it has be rebuilt, but only if we are not upgrading + # also pass if we are -9999 since who knows what hwdb related changes there might be + if [[ ${REPLACING_VERSIONS%-r*} == ${PV} || -z ${REPLACING_VERSIONS} ]] && \ + [[ ${ROOT%/} == "" ]] && [[ ${PV} != "9999" ]]; then + udevadm control --reload + fi + fi + + ewarn + ewarn "You need to restart eudev as soon as possible to make the" + ewarn "upgrade go into effect:" + ewarn "\t/etc/init.d/udev --nodeps restart" + + elog + elog "For more information on eudev on Gentoo, writing udev rules, and" + elog "fixing known issues visit:" + elog " http://www.gentoo.org/doc/en/udev-guide.xml" + elog + + # http://cgit.freedesktop.org/systemd/systemd/commit/rules/50-udev-default.rules?id=3dff3e00e044e2d53c76fa842b9a4759d4a50e69 + # http://bugs.gentoo.org/246847 + # http://bugs.gentoo.org/514174 + enewgroup input + + # Update hwdb database in case the format is changed by udev version. + if has_version 'sys-apps/hwids[udev]'; then + udevadm hwdb --update --root="${ROOT%/}" + # Only reload when we are not upgrading to avoid potential race w/ incompatible hwdb.bin and the running udevd + if [[ -z ${REPLACING_VERSIONS} ]]; then + # http://cgit.freedesktop.org/systemd/systemd/commit/?id=1fab57c209035f7e66198343074e9cee06718bda + if [[ ${ROOT} != "" ]] && [[ ${ROOT} != "/" ]]; then + return 0 + fi + udevadm control --reload + fi + fi +} diff --git a/sys-fs/eudev/eudev-9999.ebuild b/sys-fs/eudev/eudev-9999.ebuild new file mode 100644 index 000000000000..a030ccc216c4 --- /dev/null +++ b/sys-fs/eudev/eudev-9999.ebuild @@ -0,0 +1,274 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI="5" + +KV_min=2.6.39 +WANT_AUTOMAKE=1.13 + +inherit autotools eutils linux-info multilib multilib-minimal user + +if [[ ${PV} = 9999* ]]; then + EGIT_REPO_URI="git://github.com/gentoo/eudev.git" + inherit git-2 +else + SRC_URI="http://dev.gentoo.org/~blueness/${PN}/${P}.tar.gz" + KEYWORDS="~amd64 ~arm ~hppa ~mips ~ppc ~ppc64 ~x86" +fi + +DESCRIPTION="Linux dynamic and persistent device naming support (aka userspace devfs)" +HOMEPAGE="https://github.com/gentoo/eudev" + +LICENSE="LGPL-2.1 MIT GPL-2" +SLOT="0" +IUSE="doc gudev +hwdb +kmod introspection selinux static-libs test" + +COMMON_DEPEND=">=sys-apps/util-linux-2.20 + gudev? ( >=dev-libs/glib-2.34.3:2[${MULTILIB_USEDEP}] ) + introspection? ( >=dev-libs/gobject-introspection-1.38 ) + kmod? ( >=sys-apps/kmod-16 ) + selinux? ( >=sys-libs/libselinux-2.1.9 ) + !<sys-libs/glibc-2.11 + !sys-apps/gentoo-systemd-integration + !sys-apps/systemd + abi_x86_32? ( + !<=app-emulation/emul-linux-x86-baselibs-20130224-r7 + !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] + )" +DEPEND="${COMMON_DEPEND} + dev-util/gperf + virtual/os-headers + virtual/pkgconfig + >=sys-devel/make-3.82-r4 + >=sys-kernel/linux-headers-${KV_min} + doc? ( >=dev-util/gtk-doc-1.18 + app-text/docbook-xml-dtd:4.2 + app-text/docbook-xml-dtd:4.5 + app-text/docbook-xsl-stylesheets + dev-libs/libxslt + ) + >=dev-util/intltool-0.50 + test? ( app-text/tree dev-lang/perl )" + +RDEPEND="${COMMON_DEPEND} + !<sys-fs/lvm2-2.02.103 + !<sec-policy/selinux-base-2.20120725-r10 + !sys-fs/udev + !sys-apps/systemd + gudev? ( !dev-libs/libgudev )" + +PDEPEND=">=sys-fs/udev-init-scripts-26 + hwdb? ( >=sys-apps/hwids-20140304[udev] )" + +# The multilib-build.eclass doesn't handle situation where the installed headers +# are different in ABIs. In this case, we install libgudev headers in native +# ABI but not for non-native ABI. +multilib_check_headers() { :; } + +pkg_pretend() { + ewarn + ewarn "As of 2013-01-29, ${P} provides the new interface renaming functionality," + ewarn "as described in the URL below:" + ewarn "http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames" + ewarn + ewarn "This functionality is enabled BY DEFAULT because eudev has no means of synchronizing" + ewarn "between the default or user-modified choice of sys-fs/udev. If you wish to disable" + ewarn "this new iface naming, please be sure that /etc/udev/rules.d/80-net-name-slot.rules" + ewarn "exists: touch /etc/udev/rules.d/80-net-name-slot.rules" + ewarn +} + +pkg_setup() { + CONFIG_CHECK="~BLK_DEV_BSG ~DEVTMPFS ~!IDE ~INOTIFY_USER ~!SYSFS_DEPRECATED ~!SYSFS_DEPRECATED_V2 ~SIGNALFD ~EPOLL ~FHANDLE ~NET" + linux-info_pkg_setup + get_running_version + + # These are required kernel options, but we don't error out on them + # because you can build under one kernel and run under another. + if kernel_is lt ${KV_min//./ }; then + ewarn + ewarn "Your current running kernel version ${KV_FULL} is too old to run ${P}." + ewarn "Make sure to run udev under kernel version ${KV_min} or above." + ewarn + fi +} + +src_prepare() { + # change rules back to group uucp instead of dialout for now + sed -e 's/GROUP="dialout"/GROUP="uucp"/' -i rules/*.rules \ + || die "failed to change group dialout to uucp" + + epatch_user + + if use doc; then + gtkdocize --docdir docs || die "gtkdocize failed" + else + echo 'EXTRA_DIST =' > docs/gtk-doc.make + fi + eautoreconf +} + +multilib_src_configure() { + tc-export CC #463846 + export cc_cv_CFLAGS__flto=no #502950 + + # Keep sorted by ./configure --help and only pass --disable flags + # when *required* to avoid external deps or unnecessary compile + local econf_args + econf_args=( + ac_cv_search_cap_init= + ac_cv_header_sys_capability_h=yes + DBUS_CFLAGS=' ' + DBUS_LIBS=' ' + --with-rootprefix= + --with-rootrundir=/run + --docdir=/usr/share/doc/${PF} + --libdir=/usr/$(get_libdir) + --with-rootlibexecdir=/lib/udev + --with-html-dir="/usr/share/doc/${PF}/html" + --enable-split-usr + --enable-manpages + --disable-hwdb + --exec-prefix=/ + + $(use_enable gudev) + ) + + # Only build libudev for non-native_abi, and only install it to libdir, + # that means all options only apply to native_abi + if multilib_is_native_abi; then + econf_args+=( + --with-rootlibdir=/$(get_libdir) + $(use_enable doc gtk-doc) + $(use_enable introspection) + $(use_enable kmod) + $(use_enable static-libs static) + $(use_enable selinux) + ) + else + econf_args+=( + --disable-static + --disable-gtk-doc + --disable-introspection + --disable-kmod + --disable-selinux + ) + fi + ECONF_SOURCE="${S}" econf "${econf_args[@]}" +} + +multilib_src_compile() { + if multilib_is_native_abi; then + emake + else + emake -C src/shared + emake -C src/libudev + use gudev && emake -C src/gudev + fi +} + +multilib_src_install() { + if multilib_is_native_abi; then + emake DESTDIR="${D}" install + else + emake -C src/libudev DESTDIR="${D}" install + use gudev && emake -C src/gudev DESTDIR="${D}" install + fi +} + +multilib_src_test() { + # make sandbox get out of the way + # these are safe because there is a fake root filesystem put in place, + # but sandbox seems to evaluate the paths of the test i/o instead of the + # paths of the actual i/o that results. + # also only test for native abi + if multilib_is_native_abi; then + addread /sys + addwrite /dev + addwrite /run + default_src_test + fi +} + +multilib_src_install_all() { + prune_libtool_files --all + rm -rf "${ED}"/usr/share/doc/${PF}/LICENSE.* + + insinto /lib/udev/rules.d + doins "${FILESDIR}"/40-gentoo.rules + + if ! [[ ${PV} = 9999* ]]; then + insinto /usr/share/doc/${PF}/html/gudev + doins "${S}"/docs/gudev/html/* + + insinto /usr/share/doc/${PF}/html/libudev + doins "${S}"/docs/libudev/html/* + fi +} + +pkg_preinst() { + local htmldir + for htmldir in gudev libudev; do + if [[ -d ${EROOT}usr/share/gtk-doc/html/${htmldir} ]]; then + rm -rf "${EROOT}"usr/share/gtk-doc/html/${htmldir} + fi + if [[ -d ${ED}/usr/share/doc/${PF}/html/${htmldir} ]]; then + dosym ../../doc/${PF}/html/${htmldir} \ + /usr/share/gtk-doc/html/${htmldir} + fi + done +} + +pkg_postinst() { + mkdir -p "${EROOT}"run + + # "losetup -f" is confused if there is an empty /dev/loop/, Bug #338766 + # So try to remove it here (will only work if empty). + rmdir "${EROOT}"dev/loop 2>/dev/null + if [[ -d ${EROOT}dev/loop ]]; then + ewarn "Please make sure your remove /dev/loop," + ewarn "else losetup may be confused when looking for unused devices." + fi + + if use hwdb && has_version 'sys-apps/hwids[udev]'; then + udevadm hwdb --update --root="${ROOT%/}" + + # http://cgit.freedesktop.org/systemd/systemd/commit/?id=1fab57c209035f7e66198343074e9cee06718bda + # reload database after it has be rebuilt, but only if we are not upgrading + # also pass if we are -9999 since who knows what hwdb related changes there might be + if [[ ${REPLACING_VERSIONS%-r*} == ${PV} || -z ${REPLACING_VERSIONS} ]] && \ + [[ ${ROOT%/} == "" ]] && [[ ${PV} != "9999" ]]; then + udevadm control --reload + fi + fi + + ewarn + ewarn "You need to restart eudev as soon as possible to make the" + ewarn "upgrade go into effect:" + ewarn "\t/etc/init.d/udev --nodeps restart" + + elog + elog "For more information on eudev on Gentoo, writing udev rules, and" + elog "fixing known issues visit:" + elog " http://www.gentoo.org/doc/en/udev-guide.xml" + elog + + # http://cgit.freedesktop.org/systemd/systemd/commit/rules/50-udev-default.rules?id=3dff3e00e044e2d53c76fa842b9a4759d4a50e69 + # http://bugs.gentoo.org/246847 + # http://bugs.gentoo.org/514174 + enewgroup input + + # Update hwdb database in case the format is changed by udev version. + if has_version 'sys-apps/hwids[udev]'; then + udevadm hwdb --update --root="${ROOT%/}" + # Only reload when we are not upgrading to avoid potential race w/ incompatible hwdb.bin and the running udevd + if [[ -z ${REPLACING_VERSIONS} ]]; then + # http://cgit.freedesktop.org/systemd/systemd/commit/?id=1fab57c209035f7e66198343074e9cee06718bda + if [[ ${ROOT} != "" ]] && [[ ${ROOT} != "/" ]]; then + return 0 + fi + udevadm control --reload + fi + fi +} diff --git a/sys-fs/eudev/files/40-gentoo.rules b/sys-fs/eudev/files/40-gentoo.rules new file mode 100644 index 000000000000..365c6ea0d441 --- /dev/null +++ b/sys-fs/eudev/files/40-gentoo.rules @@ -0,0 +1,10 @@ +# do not edit this file, it will be overwritten on update + +# Propably unrequired, check how it is with OSS/OSS4, then remove +SUBSYSTEM=="snd", GROUP="audio" + +# Gentoo specific usb group +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", GROUP="usb" + +# Keep this for Linux 2.6.32 support wrt #457868 +SUBSYSTEM=="mem", KERNEL=="null|zero|full|random|urandom", MODE="0666" diff --git a/sys-fs/eudev/files/eudev-exclude-MD.patch b/sys-fs/eudev/files/eudev-exclude-MD.patch new file mode 100644 index 000000000000..d56026168809 --- /dev/null +++ b/sys-fs/eudev/files/eudev-exclude-MD.patch @@ -0,0 +1,53 @@ +From 2e5b17d01347d3c3118be2b8ad63d20415dbb1f0 Mon Sep 17 00:00:00 2001 +From: Kay Sievers <kay@vrfy.org> +Date: Thu, 24 Jul 2014 23:37:35 +0200 +Subject: [PATCH] udev: exclude MD from block device ownership event locking + +MD instantiates devices at open(). This is incomptible with the +locking logic, as the "change" event emitted when stopping a +device will bring it back. +--- + src/udev/udevd.c | 23 +++++++---------------- + 1 file changed, 7 insertions(+), 16 deletions(-) + +diff --git a/src/udev/udevd.c b/src/udev/udevd.c +index a45d324..db935d6 100644 +--- a/src/udev/udevd.c ++++ b/src/udev/udevd.c +@@ -285,26 +285,17 @@ static void worker_new(struct event *event) + udev_event->exec_delay = exec_delay; + + /* +- * Take a "read lock" on the device node; this establishes ++ * Take a shared lock on the device node; this establishes + * a concept of device "ownership" to serialize device +- * access. External processes holding a "write lock" will ++ * access. External processes holding an exclusive lock will + * cause udev to skip the event handling; in the case udev +- * acquired the lock, the external process will block until ++ * acquired the lock, the external process can block until + * udev has finished its event handling. + */ +- +- /* +- * <kabi_> since we make check - device seems unused - we try +- * ioctl to deactivate - and device is found to be opened +- * <kay> sure, you try to take a write lock +- * <kay> if you get it udev is out +- * <kay> if you can't get it, udev is busy +- * <kabi_> we cannot deactivate openned device (as it is in-use) +- * <kay> maybe we should just exclude dm from that thing entirely +- * <kabi_> IMHO this sounds like a good plan for this moment +- */ +- if (streq_ptr("block", udev_device_get_subsystem(dev)) && +- !startswith(udev_device_get_sysname(dev), "dm-")) { ++ if (!streq_ptr(udev_device_get_action(dev), "remove") && ++ streq_ptr("block", udev_device_get_subsystem(dev)) && ++ !startswith(udev_device_get_sysname(dev), "dm-") && ++ !startswith(udev_device_get_sysname(dev), "md")) { + struct udev_device *d = dev; + + if (streq_ptr("partition", udev_device_get_devtype(d))) +-- +1.8.5.5 + diff --git a/sys-fs/eudev/files/eudev-fix-selinux-headers.patch b/sys-fs/eudev/files/eudev-fix-selinux-headers.patch new file mode 100644 index 000000000000..1d1d8dcc236f --- /dev/null +++ b/sys-fs/eudev/files/eudev-fix-selinux-headers.patch @@ -0,0 +1,32 @@ +From 361aa273d6fedda161c14b24302f009a58331693 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Amadeusz=20S=C5=82awi=C5=84ski?= <amade@asmblr.net> +Date: Tue, 2 Sep 2014 21:20:24 +0200 +Subject: [PATCH] fix SELINUX build +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Amadeusz Sławiński <amade@asmblr.net> +--- + src/shared/label.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/shared/label.c b/src/shared/label.c +index 3c6277a..e674241 100644 +--- a/src/shared/label.c ++++ b/src/shared/label.c +@@ -23,6 +23,11 @@ + #include <sys/socket.h> + #include <sys/un.h> + ++#ifdef HAVE_SELINUX ++#include <selinux/selinux.h> ++#include <selinux/label.h> ++#endif ++ + #include "label.h" + #include "util.h" + #include "path-util.h" +-- +2.1.0 + diff --git a/sys-fs/eudev/files/eudev-fix-selinux-linking.patch b/sys-fs/eudev/files/eudev-fix-selinux-linking.patch new file mode 100644 index 000000000000..6a5e05bcaf1e --- /dev/null +++ b/sys-fs/eudev/files/eudev-fix-selinux-linking.patch @@ -0,0 +1,30 @@ +From e7f7217b9b9dbb3304116eae2b0ad90c84ede034 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Amadeusz=20S=C5=82awi=C5=84ski?= <amade@asmblr.net> +Date: Wed, 3 Sep 2014 11:01:31 +0200 +Subject: [PATCH] link libudev against SELINUX +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Amadeusz Sławiński <amade@asmblr.net> +--- + src/libudev/Makefile.am | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/libudev/Makefile.am b/src/libudev/Makefile.am +index 868a9fc..72e43bc 100644 +--- a/src/libudev/Makefile.am ++++ b/src/libudev/Makefile.am +@@ -54,7 +54,8 @@ libudev_la_LDFLAGS = \ + -Wl,--version-script=$(top_srcdir)/src/libudev/libudev.sym + + libudev_la_LIBADD = \ +- $(top_builddir)/src/shared/libudev_shared.la ++ $(top_builddir)/src/shared/libudev_shared.la \ ++ $(SELINUX_LIBS) + + libudev_private_la_SOURCES = \ + $(libudev_la_SOURCES) \ +-- +2.1.0 + diff --git a/sys-fs/eudev/files/eudev-selinux-timespan.patch b/sys-fs/eudev/files/eudev-selinux-timespan.patch new file mode 100644 index 000000000000..0a51ee9bbe40 --- /dev/null +++ b/sys-fs/eudev/files/eudev-selinux-timespan.patch @@ -0,0 +1,27 @@ +commit 3cc37a5e294048a52fa3c2aa2c1ed89b0cd07169 +Author: Ian Stakenvicius <axs@gentoo.org> +Date: Thu Aug 8 11:09:30 2013 -0400 + + Fixed compile error when --enable-selinux + + FORMAT_TIMESPAN_MAX is used in src/udev/label.c in selinux-related + code, but this was not defined as it is located in a shared header + in systemd. Added the define to label.h. Didn't bother to track + down what commit added (or removed) this code (define) + + Signed-off-by: Ian Stakenvicius <axs@gentoo.org> + +diff --git a/src/udev/label.h b/src/udev/label.h +index 3d12ac2..507fd2c 100644 +--- a/src/udev/label.h ++++ b/src/udev/label.h +@@ -25,6 +25,9 @@ + #include <stdbool.h> + #include <sys/socket.h> + ++/* from systemd src/shared/time-util.h */ ++#define FORMAT_TIMESPAN_MAX 64 ++ + int label_init(const char *prefix); + void label_finish(void); + diff --git a/sys-fs/eudev/files/udev-postmount b/sys-fs/eudev/files/udev-postmount new file mode 100755 index 000000000000..e433736db9f3 --- /dev/null +++ b/sys-fs/eudev/files/udev-postmount @@ -0,0 +1,55 @@ +#!/sbin/runscript +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +depend() +{ + need localmount + keyword -vserver -lxc +} + +dir_writeable() +{ + touch "$1"/.test.$$ 2>/dev/null && rm "$1"/.test.$$ +} + +# store persistent-rules that got created while booting +# when / was still read-only +store_persistent_rules() +{ + # create /etc/udev/rules.d if it does not exist and /etc/udev is writable + [ -d /etc/udev/rules.d ] || \ + dir_writeable /etc/udev && \ + mkdir -p /etc/udev/rules.d + + # only continue if rules-directory is writable + dir_writeable /etc/udev/rules.d || return 0 + + local file dest + for file in /run/udev/tmp-rules--*; do + dest=${file##*tmp-rules--} + [ "$dest" = '*' ] && break + type=${dest##70-persistent-} + type=${type%%.rules} + ebegin "Saving udev persistent ${type} rules to /etc/udev/rules.d" + cat "$file" >> /etc/udev/rules.d/"$dest" && rm -f "$file" + eend $? "Failed moving persistent rules!" + done +} + +start() +{ + # check if this system uses udev + [ -d /run/udev ] || return 0 + + # store persistent-rules that got created while booting + # when / was still read-only + store_persistent_rules +} + +stop() +{ + return 0 +} + +# vim:ts=4 diff --git a/sys-fs/eudev/metadata.xml b/sys-fs/eudev/metadata.xml new file mode 100644 index 000000000000..4ee5faee4c77 --- /dev/null +++ b/sys-fs/eudev/metadata.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer> + <email>eudev@gentoo.org</email> + </maintainer> + <use> + <flag name="gudev">enable libudev gobject interface</flag> + <flag name="hwdb">read vendor/device string database and add it to udev database</flag> + <flag name="introspection">Use <pkg>dev-libs/gobject-introspection</pkg> + for introspection</flag> + <flag name="keymap">map custom hardware's multimedia keys</flag> + <flag name="kmod">enable module loading through libkmod</flag> + <flag name="modutils">enable module loading support - use modutils calls if kmod not enabled</flag> + <flag name="openrc">install the OpenRC init scripts</flag> + <flag name="rule-generator">install legacy rule generator rules and support scripts - note + that the functionality within was dropped from sys-fs/udev as it is not stable in + all cases; use at your own risk</flag> + </use> + <upstream> + <remote-id type="github">gentoo/eudev</remote-id> + </upstream> +</pkgmetadata> |