# SliTaz package receipt.

PACKED_SIZE="144.0K"
UNPACKED_SIZE="772.0K"
PACKAGE="udev"
VERSION="182"
BUILD_WARNING="Install new udev package and rebuild hal"
CATEGORY="base-system"
SHORT_DESC="Udev creat automaticly right devices in /dev."
MAINTAINER="pankso@slitaz.org"
LICENSE="GPL2"
TARBALL="$PACKAGE-$VERSION.tar.xz"
WEB_SITE="https://www.freedesktop.org/software/systemd/man/udev.html"
WGET_URL="https://www.kernel.org/pub/linux/utils/kernel/hotplug/$TARBALL"
HOST_ARCH="i486 arm"

DEPENDS="util-linux-blkid pciids usbids acl kmod"
BUILD_DEPENDS="util-linux-blkid-dev gperf pkg-config pciids acl-dev \
libgio-dev usbutils-dev libusb-dev glib-dev pciids usbids kmod-dev \
libgudev-dev pcre-dev liblzma-dev util-linux-uuid-dev"

# Use build host: gperf
case "$ARCH" in
	arm*) BUILD_DEPENDS="util-linux-blkid-dev kmod-dev acl-dev glib-dev"
esac

current_version()
{
	wget -O - $(dirname $WGET_URL) 2>/dev/null | \
	sed "/rc[0-9]/d;/$PACKAGE-[0-9]/!d;/tar/!d;s|.*$PACKAGE-\\(.*\\).tar.*\".*|\\1|" | sort -Vr | sed q
}

# Rules to configure and make the package.
compile_rules()
{
	case "$ARCH" in
		arm*) 
			# ARM Hack
			for la in libgthread-2.0.la libglib-2.0.la
			do
				if grep -q "^libdir='/usr/lib'" /usr/lib/${la}; then
					sed -i s"#/usr/lib#/cross/$ARCH/sysroot/usr/lib#" \
						/usr/lib/${la}
				fi 
			done ;;
	esac
	./configure \
		--exec-prefix="" \
		--with-rootprefix="" \
		--bindir=/sbin \
		--sysconfdir=/etc \
		--libexecdir=/lib \
		--disable-manpages \
		--disable-introspection \
		--disable-keymap \
		--enable-floppy \
		--enable-rule_generator \
		--with-pci-ids-path=/usr/share/misc/pci.ids.gz \
		--with-usb-ids-path=/usr/share/misc/usb.ids.gz \
		--with-systemdsystemunitdir=no \
		$CONFIGURE_ARGS &&
	make && make install
}

# Rules to gen a SliTaz package suitable for Tazpkg.
genpkg_rules()
{
	mkdir -p $fs/lib/firmware

	cp -a $install/sbin $fs
	cp -a $install/etc $fs
	cp -a $install/lib/libudev*so* $fs/lib
	cp -a $install/lib/udev $fs/lib

	# Have udevd in PATH
	mv $fs/lib/udev/udevd $fs/sbin

	# Copy rules files to udev conf dir
	mv -f $fs/lib/udev/rules.d $fs/etc/udev
	cp $stuff/udev.conf $fs/etc/udev
	cp $stuff/*.rules $fs/etc/udev/rules.d

	# Create some devices and directories that Udev cannot handle
	# due to them being required very early in the boot process
	mkdir -p $fs/lib/udev/devices/pts
	mkdir -p $fs/lib/udev/devices/shm
	mknod -m 0666 $fs/lib/udev/devices/null c 1 3

	# Fix permissions
	chmod +x $fs/lib/udev/*
	chown -R root:root $fs
}

list_udev_group()
{
	object=${2:-GROUP}
	grep $object "$1/etc/udev/rules.d/"* | \
	sed "s|.*$object=\"\([a-zA-Z0-9]*\)\".*|\1|" | sort | uniq
}

post_install()
{
	# Sanity check for udev+ldap boot
	list_udev_group "$1" GROUP | \
	while read x; do
		grep -q ^$x: "$1/etc/group" || chroot "$1/" addgroup -S $x
	done
	list_udev_group "$1" OWNER | \
	while read x; do
		grep -q ^$x: "$1/etc/passwd" || chroot "$1/" adduser -S -D -H $x
	done
}
