+# TODO:
+# - systemd have more rules, check them and add if possible
+# - get rules patches from systemd (if any)
+#
+# Conditional build:
+%bcond_without selinux # without SELinux support
+
+Summary: Device manager for the Linux 2.6 kernel series
+Summary(pl.UTF-8): Zarządca urządzeń dla Linuksa 2.6
+Name: udev
+Version: 2.1.1
+Release: 0.1
+Epoch: 2
+License: GPL v2+ (udev), LGPL v2.1+ (the rest)
+Group: Base
+Source0: http://dev.gentoo.org/~blueness/eudev/eudev-%{version}.tar.gz
+# Source0-md5: dd945ce34314b4544e9036153d3a97e9
+# rules
+Source101: udev-alsa.rules
+Source102: udev.rules
+Source103: udev-links.conf
+# scripts / helpers
+Source110: udev-net.helper
+Source111: start_udev
+# misc
+Source120: udev.blacklist
+Source121: fbdev.blacklist
+Patch0: udev-ploop-rules.patch
+Patch1: udev-libexecdir.patch
+URL: http://www.gentoo.org/proj/en/eudev/
+BuildRequires: attr-devel
+BuildRequires: autoconf >= 2.64
+BuildRequires: automake >= 1:1.11
+BuildRequires: binutils >= 3:2.22.52.0.1-2
+BuildRequires: dbus-devel >= 1.3.2
+BuildRequires: docbook-style-xsl
+BuildRequires: glib2-devel >= 1:2.22.0
+BuildRequires: glibc-misc
+BuildRequires: gobject-introspection-devel >= 1.31.1
+BuildRequires: gperf
+BuildRequires: gtk-doc >= 1.18
+BuildRequires: kmod-devel >= 14
+BuildRequires: libblkid-devel >= 2.20
+%{?with_selinux:BuildRequires: libselinux-devel >= 2.1.9}
+BuildRequires: libtool >= 2:2.2
+BuildRequires: libxslt-progs
+BuildRequires: m4
+BuildRequires: pkgconfig >= 0.9.0
+BuildRequires: python-modules
+BuildRequires: rpmbuild(macros) >= 1.628
+BuildRequires: sed >= 4.0
+BuildRequires: usbutils >= 0.82
+BuildRequires: xz-devel
+BuildRequires: zlib-devel
+Requires: udev-core = %{epoch}:%{version}-%{release}
+Provides: dev = 3.5.0
+Obsoletes: dev
+Obsoletes: hotplug
+Obsoletes: hotplug-input
+Obsoletes: hotplug-net
+Obsoletes: hotplug-pci
+Obsoletes: udev-dev
+Obsoletes: udev-extras < 20090628
+Obsoletes: udev-tools
+BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+
+%define _bindir /bin
+%define _sbindir /sbin
+%define _libexecdir %{_prefix}/lib
+
+%description
+udev is the device manager for the Linux 2.6 kernel series. Its
+primary function is managing device nodes in /dev. It is the successor
+of devfs and hotplug.
+
+%description -l pl.UTF-8
+udev jest zarządcą urządzeń dla Linuksa 2.6. Jego główną funkcją jest
+zarządzanie węzłami urządzeń w katalogu /dev. Jest następcą devfs i
+hotpluga.
+
+%package core
+Summary: A userspace implementation of devfs - core part of udev
+Summary(pl.UTF-8): Implementacja devfs w przestrzeni użytkownika - główna część udev
+Group: Base
+Requires: coreutils
+Requires: filesystem >= 3.0-45
+Requires: kmod >= 14
+Requires: libblkid >= 2.20
+%{?with_selinux:Requires: libselinux >= 2.1.9}
+Requires: setup >= 2.6.1-1
+Requires: udev-libs = %{epoch}:%{version}-%{release}
+Requires: uname(release) >= 2.6.32
+#Suggests: uname(release) >= 3.0
+Obsoletes: udev-compat
+Obsoletes: udev-initrd < %{epoch}:%{version}-%{release}}
+Conflicts: geninitrd < 12639
+Conflicts: rc-scripts < 0.4.5.3-1
+Conflicts: systemd-units < 1:183
+Conflicts: udev < 1:118-1
+
+%description core
+A userspace implementation of devfs - core part of udev.
+
+%description core -l pl.UTF-8
+Implementacja devfs w przestrzeni użytkownika - główna część udev.
+
+%package libs
+Summary: Shared library to access udev device information
+Summary(pl.UTF-8): Biblioteka współdzielona do dostępu do informacji o urządzeniach udev
+Group: Libraries
+
+%description libs
+Shared libudev library to access udev device information.
+
+%description libs -l pl.UTF-8
+Biblioteka współdzielona libudev służąca do dostępu do informacji o
+urządzeniach udev.
+
+%package devel
+Summary: Header file for libudev library
+Summary(pl.UTF-8): Plik nagłówkowy biblioteki libudev
+Group: Development/Libraries
+Requires: udev-libs = %{epoch}:%{version}-%{release}
+Obsoletes: udev-static
+
+%description devel
+Header file for libudev library.
+
+%description devel -l pl.UTF-8
+Plik nagłówkowy biblioteki libudev.
+
+%package apidocs
+Summary: libudev API documentation
+Summary(pl.UTF-8): Dokumentacja API libudev
+Group: Documentation
+Requires: gtk-doc-common
+
+%description apidocs
+libudev API documentation.
+
+%description apidocs -l pl.UTF-8
+Dokumentacja API libudev.
+
+%package glib
+Summary: Shared libgudev library - GObject bindings for libudev
+Summary(pl.UTF-8): Biblioteka współdzielona libgudev - wiązania GObject do libudev
+Group: Libraries
+Requires: glib2 >= 1:2.22.0
+Requires: udev-libs = %{epoch}:%{version}-%{release}
+
+%description glib
+Shared libgudev library - GObject bindings for libudev.
+
+%description glib -l pl.UTF-8
+Biblioteka współdzielona libgudev - wiązania GObject do libudev.
+
+%package glib-devel
+Summary: Header file for libgudev library
+Summary(pl.UTF-8): Plik nagłówkowy biblioteki libgudev
+Group: Development/Libraries
+Requires: glib2-devel >= 1:2.22.0
+Requires: udev-devel = %{epoch}:%{version}-%{release}
+Requires: udev-glib = %{epoch}:%{version}-%{release}
+Obsoletes: udev-glib-static
+
+%description glib-devel
+Header file for libgudev library.
+
+%description glib-devel -l pl.UTF-8
+Plik nagłówkowy biblioteki libgudev.
+
+%package glib-apidocs
+Summary: libgudev API documentation
+Summary(pl.UTF-8): Dokumentacja API libgudev
+Group: Documentation
+Requires: gtk-doc-common
+
+%description glib-apidocs
+libgudev API documentation.
+
+%description glib-apidocs -l pl.UTF-8
+Dokumentacja API libgudev.
+
+%prep
+%setup -q -n eudev-%{version}
+%patch0 -p1
+%patch1 -p1
+
+%build
+%{__gtkdocize}
+%{__libtoolize}
+%{__aclocal} -I m4
+%{__autoconf}
+%{__autoheader}
+%{__automake}
+%configure \
+ --libexecdir=/lib \
+ --bindir=%{_sbindir} \
+ %{?debug:--enable-debug} \
+ %{__enable_disable selinux} \
+ --disable-silent-rules \
+ --enable-introspection \
+ --enable-blkid \
+ --enable-gudev \
+ --enable-gtk-doc \
+ --enable-keymap \
+ --enable-libkmod \
+ --enable-manpages \
+ --enable-modules \
+ --enable-rule-generator \
+ --enable-shared \
+ --enable-static \
+ --with-html-dir=%{_gtkdocdir} \
+ --with-rootprefix="" \
+ --with-rootlibdir=/%{_lib} \
+ --with-udevlibexecdir=/lib/udev
+
+%{__make} -j1
+
+%install
+rm -rf $RPM_BUILD_ROOT
+install -d $RPM_BUILD_ROOT/var/lib/%{name}/coredump \
+ $RPM_BUILD_ROOT{%{_sysconfdir}/{udev/hwdb,modprobe}.d,%{_bindir},%{_sbindir},/usr/lib}
+
+%{__make} install \
+ DESTDIR=$RPM_BUILD_ROOT
+
+# compatibility symlinks to udevd binary
+%{__ln} -s %{_sbindir}/udevd $RPM_BUILD_ROOT/lib/udev/udevd
+
+# compat symlinks for "/ merged into /usr" programs
+%{__ln} -s %{_sbindir}/udevadm $RPM_BUILD_ROOT/bin/
+%{__ln} -s /lib/udev $RPM_BUILD_ROOT/usr/lib/
+
+# install custom udev rules from pld package
+%{__cp} -a %{SOURCE101} $RPM_BUILD_ROOT%{_sysconfdir}/udev/rules.d/40-alsa-restore.rules
+%{__cp} -a %{SOURCE102} $RPM_BUILD_ROOT%{_sysconfdir}/udev/rules.d/70-udev-pld.rules
+
+# install udev configs
+%{__cp} -a %{SOURCE103} $RPM_BUILD_ROOT%{_sysconfdir}/udev/links.conf
+
+# install udev executables (scripts, helpers, etc.)
+install -p %{SOURCE110} $RPM_BUILD_ROOT/lib/udev/net_helper
+install -p %{SOURCE111} $RPM_BUILD_ROOT%{_sbindir}/start_udev
+
+# install misc udev stuff
+%{__cp} -a %{SOURCE120} $RPM_BUILD_ROOT%{_sysconfdir}/modprobe.d/udev_blacklist.conf
+%{__cp} -a %{SOURCE121} $RPM_BUILD_ROOT%{_sysconfdir}/modprobe.d/fbdev-blacklist.conf
+
+:>$RPM_BUILD_ROOT%{_sysconfdir}/udev/hwdb.bin
+
+install -d $RPM_BUILD_ROOT/var/log
+:> $RPM_BUILD_ROOT/var/log/btmp
+:> $RPM_BUILD_ROOT/var/log/wtmp
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%triggerpostun core -- dev
+if [ "$2" = 0 ]; then
+ # need to kill and restart udevd as after obsoleting dev package the
+ # /dev tree will remain empty. umask is needed as otherwise udev will
+ # create devices with strange permissions (udev bug probably)
+ umask 000
+ /sbin/start_udev || exit 0
+fi
+
+%triggerpostun core -- udev < 108
+%{__sed} -i -e 's#IMPORT{program}="/sbin/#IMPORT{program}="#g' /etc/udev/rules.d/*.rules
+%if "%{_lib}" != "lib"
+%{__sed} -i -e 's#/%{_lib}/udev/#/lib/udev/#g' /etc/udev/rules.d/*.rules
+%endif
+
+%triggerpostun core -- udev < 165
+/sbin/udevadm info --convert-db
+
+%post core
+/sbin/udevadm hwdb --update || :
+if [ $1 -gt 1 ]; then
+ if grep -qs devtmpfs /proc/mounts && [ -n "$(pidof udevd)" ]; then
+ /sbin/udevadm control --exit
+ /lib/udev/udevd --daemon
+ fi
+fi
+
+%post libs -p /sbin/ldconfig
+%postun libs -p /sbin/ldconfig
+
+%post glib -p /sbin/ldconfig
+%postun glib -p /sbin/ldconfig
+
+%files
+%defattr(644,root,root,755)
+%dev(c,1,3) %attr(666,root,root) /dev/null
+%dev(c,5,1) %attr(660,root,console) /dev/console
+%dev(c,1,5) %attr(666,root,root) /dev/zero
+
+%files core
+%defattr(644,root,root,755)
+
+/usr/lib/udev
+
+%attr(755,root,root) /lib/udev/collect
+
+%attr(755,root,root) /lib/udev/net_helper
+
+%attr(755,root,root) /lib/udev/ata_id
+%attr(755,root,root) /lib/udev/cdrom_id
+%attr(755,root,root) /lib/udev/mtd_probe
+%attr(755,root,root) /lib/udev/scsi_id
+%attr(755,root,root) /lib/udev/v4l_id
+
+%attr(755,root,root) /lib/udev/udevd
+
+%attr(755,root,root) /lib/udev/accelerometer
+
+%attr(755,root,root) /lib/udev/write_cd_rules
+%attr(755,root,root) /lib/udev/write_net_rules
+/lib/udev/rule_generator.functions
+
+%dir /lib/udev/hwdb.d
+/lib/udev/hwdb.d/20-OUI.hwdb
+/lib/udev/hwdb.d/20-acpi-vendor.hwdb
+/lib/udev/hwdb.d/20-bluetooth-vendor-product.hwdb
+/lib/udev/hwdb.d/20-pci-classes.hwdb
+/lib/udev/hwdb.d/20-pci-vendor-model.hwdb
+/lib/udev/hwdb.d/20-sdio-classes.hwdb
+/lib/udev/hwdb.d/20-sdio-vendor-model.hwdb
+/lib/udev/hwdb.d/20-usb-classes.hwdb
+/lib/udev/hwdb.d/20-usb-vendor-model.hwdb
+/lib/udev/hwdb.d/60-keyboard.hwdb
+
+%attr(755,root,root) %{_sbindir}/start_udev
+%attr(755,root,root) %{_sbindir}/udevd
+%attr(755,root,root) %{_sbindir}/udevadm
+%attr(755,root,root) /bin/udevadm
+
+%dir %{_sysconfdir}/udev
+%dir %{_sysconfdir}/udev/rules.d
+%dir %{_sysconfdir}/udev/hwdb.d
+%ghost %{_sysconfdir}/udev/hwdb.bin
+
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/modprobe.d/fbdev-blacklist.conf
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/modprobe.d/udev_blacklist.conf
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/udev/links.conf
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/udev/rules.d/40-alsa-restore.rules
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/udev/rules.d/70-udev-pld.rules
+
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/udev/udev.conf
+
+# rules below are NOT supposed to be changed by users
+/lib/udev/rules.d/42-usb-hid-pm.rules
+/lib/udev/rules.d/50-udev-default.rules
+/lib/udev/rules.d/60-cdrom_id.rules
+/lib/udev/rules.d/60-drm.rules
+/lib/udev/rules.d/60-keyboard.rules
+/lib/udev/rules.d/60-persistent-alsa.rules
+/lib/udev/rules.d/60-persistent-input.rules
+/lib/udev/rules.d/60-persistent-serial.rules
+/lib/udev/rules.d/60-persistent-storage-tape.rules
+/lib/udev/rules.d/60-persistent-storage.rules
+/lib/udev/rules.d/60-persistent-v4l.rules
+/lib/udev/rules.d/61-accelerometer.rules
+/lib/udev/rules.d/64-btrfs.rules
+/lib/udev/rules.d/75-cd-aliases-generator.rules
+/lib/udev/rules.d/75-net-description.rules
+/lib/udev/rules.d/75-persistent-net-generator.rules
+/lib/udev/rules.d/75-probe_mtd.rules
+/lib/udev/rules.d/75-tty-description.rules
+/lib/udev/rules.d/78-sound-card.rules
+/lib/udev/rules.d/80-drivers.rules
+/lib/udev/rules.d/95-udev-late.rules
+%{_mandir}/man5/udev.conf.5*
+%{_mandir}/man7/udev.7*
+%{_mandir}/man8/udevadm.8*
+%{_mandir}/man8/udevd.8*
+
+%files libs
+%defattr(644,root,root,755)
+%attr(755,root,root) /%{_lib}/libudev.so.*.*.*
+%attr(755,root,root) %ghost /%{_lib}/libudev.so.1
+
+%files devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libudev.so
+%{_includedir}/libudev.h
+%{_includedir}/udev.h
+%{_pkgconfigdir}/libudev.pc
+%{_npkgconfigdir}/udev.pc
+
+%files apidocs
+%defattr(644,root,root,755)
+%{_gtkdocdir}/libudev
+
+%files glib
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libgudev-1.0.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libgudev-1.0.so.0
+%{_libdir}/girepository-1.0/GUdev-1.0.typelib
+
+%files glib-devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libgudev-1.0.so
+%{_includedir}/gudev-1.0
+%{_pkgconfigdir}/gudev-1.0.pc
+%{_datadir}/gir-1.0/GUdev-1.0.gir
+
+%files glib-apidocs
+%defattr(644,root,root,755)
+%{_gtkdocdir}/gudev