summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoug Goldstein <cardoe@gentoo.org>2007-02-13 03:54:03 +0000
committerDoug Goldstein <cardoe@gentoo.org>2007-02-13 03:54:03 +0000
commit63018d349095bf81cad1dd91ccd570de897da12e (patch)
tree0c4a09e813491430cce7439bff6f6237c5a86c9d
parentRemoved superfluous stripping of scilex binary. (diff)
downloadgentoo-2-63018d349095bf81cad1dd91ccd570de897da12e.tar.gz
gentoo-2-63018d349095bf81cad1dd91ccd570de897da12e.tar.bz2
gentoo-2-63018d349095bf81cad1dd91ccd570de897da12e.zip
Turn dmi on always for amd64, ia64, and x86. Fix ACPI support, prefering ACPI proc vs ACPId. bug #165822, bug #157220, bug #164652, & bug #152923
(Portage version: 2.1.2-r9)
-rw-r--r--sys-apps/hal/files/digest-hal-0.5.7.1-r53
-rw-r--r--sys-apps/hal/files/hal-0.5.7.1-fix-dbus.patch184
-rw-r--r--sys-apps/hal/files/hal-0.5.7.1-indirection-fix.patch117
-rw-r--r--sys-apps/hal/files/hal-0.5.7.1-rescan-on-resume.patch16
-rw-r--r--sys-apps/hal/hal-0.5.7.1-r5.ebuild211
5 files changed, 531 insertions, 0 deletions
diff --git a/sys-apps/hal/files/digest-hal-0.5.7.1-r5 b/sys-apps/hal/files/digest-hal-0.5.7.1-r5
new file mode 100644
index 000000000000..3042516ecf0a
--- /dev/null
+++ b/sys-apps/hal/files/digest-hal-0.5.7.1-r5
@@ -0,0 +1,3 @@
+MD5 d7a7741808ba130f8aff3f5d3b5689e4 hal-0.5.7.1.tar.gz 1503156
+RMD160 2861818b29546bd3628b1bda3d41238cf644c644 hal-0.5.7.1.tar.gz 1503156
+SHA256 f15320c1ec3e5c89307fc0a6fbf75b6619de12c15ce8cc1a689e7bc3f2c0831b hal-0.5.7.1.tar.gz 1503156
diff --git a/sys-apps/hal/files/hal-0.5.7.1-fix-dbus.patch b/sys-apps/hal/files/hal-0.5.7.1-fix-dbus.patch
new file mode 100644
index 000000000000..03fd76cb1bb8
--- /dev/null
+++ b/sys-apps/hal/files/hal-0.5.7.1-fix-dbus.patch
@@ -0,0 +1,184 @@
+--- hal-0.5.7.1/tools/hal-device.c.fixdbus 2006-11-21 15:30:47.000000000 +0100
++++ hal-0.5.7.1/tools/hal-device.c 2006-11-21 15:30:48.000000000 +0100
+@@ -155,7 +155,6 @@
+
+ libhal_ctx_shutdown(hal_ctx, &error);
+ libhal_ctx_free(hal_ctx);
+- dbus_connection_close(conn);
+ dbus_connection_unref(conn);
+ dbus_error_free(&error);
+
+--- hal-0.5.7.1/tools/lshal.c.fixdbus 2006-11-21 15:30:47.000000000 +0100
++++ hal-0.5.7.1/tools/lshal.c 2006-11-21 15:30:48.000000000 +0100
+@@ -701,7 +701,6 @@
+ libhal_ctx_shutdown (hal_ctx, &error);
+ libhal_ctx_free (hal_ctx);
+
+- dbus_connection_close (conn);
+ dbus_connection_unref (conn);
+
+ if (show_device)
+--- hal-0.5.7.1/libhal/libhal.c.fixdbus 2006-02-12 22:47:28.000000000 +0100
++++ hal-0.5.7.1/libhal/libhal.c 2006-11-21 15:33:31.000000000 +0100
+@@ -1525,7 +1525,7 @@
+ reply = dbus_connection_send_with_reply_and_block (ctx->connection,
+ message, -1,
+ error);
+- if (dbus_error_is_set (error)) {
++ if (error != NULL && dbus_error_is_set (error)) {
+ dbus_message_unref (message);
+ return FALSE;
+ }
+@@ -1710,7 +1710,7 @@
+ reply = dbus_connection_send_with_reply_and_block (ctx->connection,
+ message, -1,
+ error);
+- if (dbus_error_is_set (error)) {
++ if (error != NULL && dbus_error_is_set (error)) {
+ dbus_message_unref (message);
+ return FALSE;
+ }
+@@ -1762,7 +1762,7 @@
+ reply = dbus_connection_send_with_reply_and_block (ctx->connection,
+ message, -1,
+ error);
+- if (dbus_error_is_set (error)) {
++ if (error != NULL && dbus_error_is_set (error)) {
+ dbus_message_unref (message);
+ return FALSE;
+ }
+@@ -1814,7 +1814,7 @@
+ reply = dbus_connection_send_with_reply_and_block (ctx->connection,
+ message, -1,
+ error);
+- if (dbus_error_is_set (error)) {
++ if (error != NULL && dbus_error_is_set (error)) {
+ dbus_message_unref (message);
+ return FALSE;
+ }
+@@ -1865,7 +1865,7 @@
+ reply = dbus_connection_send_with_reply_and_block (ctx->connection,
+ message, -1,
+ error);
+- if (dbus_error_is_set (error)) {
++ if (error != NULL && dbus_error_is_set (error)) {
+ dbus_message_unref (message);
+ return FALSE;
+ }
+@@ -1926,7 +1926,7 @@
+ message, -1,
+ error);
+
+- if (dbus_error_is_set (error)) {
++ if (error != NULL && dbus_error_is_set (error)) {
+ if (strcmp (error->name,
+ "org.freedesktop.Hal.DeviceAlreadyLocked") == 0) {
+ if (reason_why_locked != NULL) {
+@@ -1985,7 +1985,7 @@
+ message, -1,
+ error);
+
+- if (dbus_error_is_set (error)) {
++ if (error != NULL && dbus_error_is_set (error)) {
+ dbus_message_unref (message);
+ return FALSE;
+ }
+@@ -2040,7 +2040,7 @@
+ reply = dbus_connection_send_with_reply_and_block (ctx->connection,
+ message, -1,
+ error);
+- if (dbus_error_is_set (error)) {
++ if (error != NULL && dbus_error_is_set (error)) {
+ dbus_message_unref (message);
+ return NULL;
+ }
+@@ -2125,7 +2125,7 @@
+ reply = dbus_connection_send_with_reply_and_block (ctx->connection,
+ message, -1,
+ error);
+- if (dbus_error_is_set (error)) {
++ if (error != NULL && dbus_error_is_set (error)) {
+ dbus_message_unref (message);
+ return FALSE;
+ }
+@@ -2179,7 +2179,7 @@
+ reply = dbus_connection_send_with_reply_and_block (ctx->connection,
+ message, -1,
+ error);
+- if (dbus_error_is_set (error)) {
++ if (error != NULL && dbus_error_is_set (error)) {
+ dbus_message_unref (message);
+ return FALSE;
+ }
+@@ -2365,7 +2365,7 @@
+ reply = dbus_connection_send_with_reply_and_block (ctx->connection,
+ message, -1,
+ error);
+- if (dbus_error_is_set (error)) {
++ if (error != NULL && dbus_error_is_set (error)) {
+ dbus_message_unref (message);
+ return FALSE;
+ }
+@@ -2652,7 +2652,7 @@
+ reply = dbus_connection_send_with_reply_and_block (ctx->connection,
+ message, -1,
+ error);
+- if (dbus_error_is_set (error)) {
++ if (error != NULL && dbus_error_is_set (error)) {
+ dbus_message_unref (message);
+ return FALSE;
+ }
+@@ -2788,7 +2788,7 @@
+ "type='signal',"
+ "interface='org.freedesktop.Hal.Device',"
+ "sender='org.freedesktop.Hal'", error);
+- if (dbus_error_is_set (error)) {
++ if (error != NULL && dbus_error_is_set (error)) {
+ return FALSE;
+ }
+ return TRUE;
+@@ -2820,7 +2820,7 @@
+ "sender='org.freedesktop.Hal'," "path=%s", udi);
+
+ dbus_bus_add_match (ctx->connection, buf, error);
+- if (dbus_error_is_set (error)) {
++ if (error != NULL && dbus_error_is_set (error)) {
+ return FALSE;
+ }
+ return TRUE;
+@@ -2848,7 +2848,7 @@
+ "sender='org.freedesktop.Hal'," "path=%s", udi);
+
+ dbus_bus_remove_match (ctx->connection, buf, error);
+- if (dbus_error_is_set (error)) {
++ if (error != NULL && dbus_error_is_set (error)) {
+ return FALSE;
+ }
+ return TRUE;
+@@ -3223,7 +3223,7 @@
+ message, -1,
+ error);
+
+- if (dbus_error_is_set (error)) {
++ if (error != NULL && dbus_error_is_set (error)) {
+ dbus_message_unref (message);
+ return FALSE;
+ }
+@@ -3273,7 +3273,7 @@
+ message, -1,
+ error);
+
+- if (dbus_error_is_set (error)) {
++ if (error != NULL && dbus_error_is_set (error)) {
+ dbus_message_unref (message);
+ return FALSE;
+ }
+@@ -3342,7 +3342,7 @@
+ message, -1,
+ error);
+
+- if (dbus_error_is_set (error)) {
++ if (error != NULL && dbus_error_is_set (error)) {
+ dbus_message_unref (message);
+ return FALSE;
+ }
diff --git a/sys-apps/hal/files/hal-0.5.7.1-indirection-fix.patch b/sys-apps/hal/files/hal-0.5.7.1-indirection-fix.patch
new file mode 100644
index 000000000000..198297251f9e
--- /dev/null
+++ b/sys-apps/hal/files/hal-0.5.7.1-indirection-fix.patch
@@ -0,0 +1,117 @@
+diff -uNr hal-0.5.7.orig/hald/device_info.c hal-0.5.7/hald/device_info.c
+--- hal-0.5.7.orig/hald/device_info.c 2006-01-21 07:36:51.000000000 +0100
++++ hal-0.5.7/hald/device_info.c 2006-10-26 23:00:26.000000000 +0200
+@@ -1114,56 +1114,22 @@
+ pc->merge_type, pc->merge_type));
+ break;
+ }
+- } else if (pc->curelem == CURELEM_APPEND && pc->match_ok &&
++ } else if ((pc->curelem == CURELEM_APPEND || pc->curelem == CURELEM_PREPEND) && pc->match_ok &&
+ (hal_device_property_get_type (pc->device, pc->merge_key) == HAL_PROPERTY_TYPE_STRING ||
+ hal_device_property_get_type (pc->device, pc->merge_key) == HAL_PROPERTY_TYPE_STRLIST ||
+ hal_device_property_get_type (pc->device, pc->merge_key) == HAL_PROPERTY_TYPE_INVALID)) {
+ char buf[256];
+ char buf2[256];
+
+- /* As soon as we are appending, we have matched the device... */
++ /* As soon as we are appending/prepending, we have matched the device... */
+ pc->device_matched = TRUE;
+
+ if (pc->merge_type == MERGE_TYPE_STRLIST) {
+- hal_device_property_strlist_append (pc->device, pc->merge_key, pc->cdata_buf);
+- } else {
+- const char *existing_string;
+-
+- switch (pc->merge_type) {
+- case MERGE_TYPE_STRING:
+- strncpy (buf, pc->cdata_buf, sizeof (buf));
+- break;
+-
+- case MERGE_TYPE_COPY_PROPERTY:
+- hal_device_property_get_as_string (pc->device, pc->cdata_buf, buf, sizeof (buf));
+- break;
+-
+- default:
+- HAL_ERROR (("Unknown merge_type=%d='%c'", pc->merge_type, pc->merge_type));
+- break;
+- }
+-
+- existing_string = hal_device_property_get_string (pc->device, pc->merge_key);
+- if (existing_string != NULL) {
+- strncpy (buf2, existing_string, sizeof (buf2));
+- strncat (buf2, buf, sizeof (buf2) - strlen(buf2));
++ if (pc->curelem == CURELEM_APPEND){
++ hal_device_property_strlist_append (pc->device, pc->merge_key, pc->cdata_buf);
+ } else {
+- strncpy (buf2, buf, sizeof (buf2));
++ hal_device_property_strlist_prepend (pc->device, pc->merge_key, pc->cdata_buf);
+ }
+- hal_device_property_set_string (pc->device, pc->merge_key, buf2);
+- }
+- } else if (pc->curelem == CURELEM_PREPEND && pc->match_ok &&
+- (hal_device_property_get_type (pc->device, pc->merge_key) == HAL_PROPERTY_TYPE_STRING ||
+- hal_device_property_get_type (pc->device, pc->merge_key) == HAL_PROPERTY_TYPE_STRLIST ||
+- hal_device_property_get_type (pc->device, pc->merge_key) == HAL_PROPERTY_TYPE_INVALID)) {
+- char buf[256];
+- char buf2[256];
+-
+- /* As soon as we are prepending, we have matched the device... */
+- pc->device_matched = TRUE;
+-
+- if (pc->merge_type == MERGE_TYPE_STRLIST) {
+- hal_device_property_strlist_prepend (pc->device, pc->merge_key, pc->cdata_buf);
+ } else {
+ const char *existing_string;
+
+@@ -1173,8 +1139,34 @@
+ break;
+
+ case MERGE_TYPE_COPY_PROPERTY:
+- hal_device_property_get_as_string (pc->device, pc->cdata_buf, buf, sizeof (buf));
++ {
++ char udi_to_merge_from[256];
++ char prop_to_merge[256];
++
++ /* Resolve key paths like 'someudi/foo/bar/baz:prop.name'
++ * '@prop.here.is.an.udi:with.prop.name'
++ */
++ if (!resolve_udiprop_path (pc->cdata_buf,
++ pc->device->udi,
++ udi_to_merge_from, sizeof (udi_to_merge_from),
++ prop_to_merge, sizeof (prop_to_merge))) {
++ HAL_ERROR (("Could not resolve keypath '%s' on udi '%s'", pc->cdata_buf, pc->device->udi));
++ } else {
++ HalDevice *d;
++
++ d = hal_device_store_find (hald_get_gdl (), udi_to_merge_from);
++ if (d == NULL) {
++ d = hal_device_store_find (hald_get_tdl (), udi_to_merge_from);
++ }
++ if (d == NULL) {
++ HAL_ERROR (("Could not find device with udi '%s'", udi_to_merge_from));
++ } else {
++ hal_device_property_get_as_string (d, prop_to_merge, buf, sizeof (buf));
++ }
++ }
++
+ break;
++ }
+
+ default:
+ HAL_ERROR (("Unknown merge_type=%d='%c'", pc->merge_type, pc->merge_type));
+@@ -1183,8 +1175,13 @@
+
+ existing_string = hal_device_property_get_string (pc->device, pc->merge_key);
+ if (existing_string != NULL) {
+- strncpy (buf2, buf, sizeof (buf2));
+- strncat (buf2, existing_string, sizeof (buf2) - strlen(buf2));
++ if (pc->curelem == CURELEM_APPEND){
++ strncpy (buf2, existing_string, sizeof (buf2));
++ strncat (buf2, buf, sizeof (buf2) - strlen(buf2));
++ } else {
++ strncpy (buf2, buf, sizeof (buf2));
++ strncat (buf2, existing_string, sizeof (buf2) - strlen(buf2));
++ }
+ } else {
+ strncpy (buf2, buf, sizeof (buf2));
+ }
diff --git a/sys-apps/hal/files/hal-0.5.7.1-rescan-on-resume.patch b/sys-apps/hal/files/hal-0.5.7.1-rescan-on-resume.patch
new file mode 100644
index 000000000000..e9eeb3142016
--- /dev/null
+++ b/sys-apps/hal/files/hal-0.5.7.1-rescan-on-resume.patch
@@ -0,0 +1,16 @@
+--- tools/hal-system-power-hibernate 2006-04-26 19:25:40.000000000 -0500
++++ tools/hal-system-power-hibernate 2006-04-26 19:34:00.000000000 -0500
+@@ -53,4 +53,13 @@
+ fi
+ fi
+
++# Refresh devices when resuming from a hibernate
++for type in button battery ac_adapter ; do
++ devices=$(hal-find-by-capability --capability $type)
++ for device in $devices ; do
++ dbus-send --system --print-reply --dest=org.freedesktop.Hal $device \
++ org.freedesktop.Hal.Device.Rescan
++ done
++done
++
+ exit $RET
diff --git a/sys-apps/hal/hal-0.5.7.1-r5.ebuild b/sys-apps/hal/hal-0.5.7.1-r5.ebuild
new file mode 100644
index 000000000000..f0896fdd3014
--- /dev/null
+++ b/sys-apps/hal/hal-0.5.7.1-r5.ebuild
@@ -0,0 +1,211 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-apps/hal/hal-0.5.7.1-r5.ebuild,v 1.1 2007/02/13 03:54:03 cardoe Exp $
+
+inherit eutils linux-info
+
+DESCRIPTION="Hardware Abstraction Layer"
+HOMEPAGE="http://www.freedesktop.org/Software/hal"
+SRC_URI="http://freedesktop.org/~david/dist/${P}.tar.gz"
+
+LICENSE="|| ( GPL-2 AFL-2.0 )"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~sh ~sparc ~x86"
+IUSE="acpi crypt debug doc pcmcia selinux"
+
+RDEPEND=">=dev-libs/glib-2.6
+ >=dev-libs/dbus-glib-0.71
+ >=sys-fs/udev-083
+ >=sys-apps/util-linux-2.12r
+ || ( >=sys-kernel/linux-headers-2.6 >=sys-kernel/mips-headers-2.6 )
+ dev-libs/expat
+ sys-apps/pciutils
+ dev-libs/libusb
+ virtual/eject
+ x86? ( >=sys-apps/dmidecode-2.7 )
+ amd64? ( >=sys-apps/dmidecode-2.7 )
+ ia64? ( >=sys-apps/dmidecode-2.7 )
+ crypt? ( >=sys-fs/cryptsetup-luks-1.0.1 )
+ selinux? ( sys-libs/libselinux )"
+
+DEPEND="${RDEPEND}
+ dev-util/pkgconfig
+ >=dev-util/intltool-0.29
+ doc? ( app-doc/doxygen app-text/docbook-sgml-utils )"
+
+## HAL Daemon drops privledges so we need group access to read disks
+HALDAEMON_GROUPS="haldaemon,plugdev,disk,cdrom,cdrw,floppy,usb"
+
+function notify_uevent() {
+ eerror
+ eerror "You must enable Kernel Userspace Events in your kernel."
+ eerror "This can be set under 'General Setup'. It is marked as"
+ eerror "CONFIG_KOBJECT_UEVENT in the config file."
+ eerror
+ ebeep 5
+}
+
+function notify_uevent_2_6_16() {
+ eerror
+ eerror "You must enable Kernel Userspace Events in your kernel."
+ eerror "For this you need to enable 'Hotplug' under 'General Setup' and"
+ eerror "basic networking. They are marked CONFIG_HOTPLUG and CONFIG_NET"
+ eerror "in the config file."
+ eerror
+ ebeep 5
+}
+
+function notify_procfs() {
+ eerror
+ eerror "You must enable the proc filesystem in your kernel."
+ eerror "For this you need to enable '/proc file system support' under"
+ eerror "'Pseudo filesystems' in 'File systems'. It is marked"
+ eerror "CONFIG_PROC_FS in the config file."
+ eerror
+ ebeep 5
+}
+
+pkg_setup() {
+ get_version || eerror "Unable to calculate Linux Kernel version"
+
+ kernel_is ge 2 6 15 || eerror "HAL requires a kernel version 2.6.15 or newer"
+
+ if kernel_is lt 2 6 16 ; then
+ linux_chkconfig_present KOBJECT_UEVENT || notify_uevent
+ else
+ (linux_chkconfig_present HOTPLUG && linux_chkconfig_present NET) \
+ || notify_uevent_2_6_16
+ fi
+
+ if use acpi ; then
+ linux_chkconfig_present PROC_FS || notify_procfs
+ fi
+
+ if [ -d ${ROOT}/etc/hal/device.d ]; then
+ eerror "HAL 0.5.x will not run with the HAL 0.4.x series of"
+ eerror "/etc/hal/device.d/ so please remove this directory"
+ eerror "with rm -rf /etc/hal/device.d/ and then re-emerge."
+ eerror "This is due to configuration protection of /etc/"
+ die "remove /etc/hal/device.d/"
+ fi
+}
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+
+ # handle ignored volumes properly
+ epatch "${FILESDIR}"/${PN}-0.5.7.1-ignored-volumes.patch
+
+ # Fix bash in hald scripts
+ epatch "${FILESDIR}"/${PN}-0.5.7.1-hald-scripts.patch
+
+ # probe partition table
+ epatch "${FILESDIR}"/${PN}-0.5.7-part-table.patch
+
+ # fix pmu support crash
+ epatch "${FILESDIR}"/${PN}-0.5.7-pmu-fix.patch
+
+ # unclean unmount
+ epatch "${FILESDIR}"/${PN}-0.5.7-unclean-unmount-r1.patch
+
+ # allow plugdev group people to mount
+ epatch "${FILESDIR}"/${PN}-0.5.7-plugdev-allow-send.patch
+
+ # rescan devices on resume
+ epatch "${FILESDIR}"/${PN}-0.5.7.1-rescan-on-resume.patch
+
+ # dbus deprecated dbus_connection_disconnect
+ epatch "${FILESDIR}"/${PN}-0.5.7.1-dbus-close.patch
+
+ # sr driver fix
+ epatch "${FILESDIR}"/${PN}-0.5.7.1-sr-driver.patch
+
+ # mounting autofs & subfs fixes
+ epatch "${FILESDIR}"/${PN}-0.5.7.1-autofs-subfs.patch
+
+ # iPod Nano detected as RAID fix
+ epatch "${FILESDIR}"/${PN}-0.5.7.1-ipod-nano.patch
+
+ # Floppies mounting fix
+ epatch "${FILESDIR}"/${PN}-0.5.7.1-floppies-fix.patch
+
+ # fix undeclared ctype.h so everyone can stop getting their panties in a
+ # bundle
+ epatch "${FILESDIR}"/${PN}-0.5.7.1-ctype-fix.patch
+
+ # fix for dbus close/unref so we stop having errors from lshal about D-Bus
+ epatch "${FILESDIR}"/${PN}-0.5.7.1-fix-dbus.patch
+
+ # Fix for fdi issues with indirection problem in copy_property
+ # All work by Martin "Parmus" Parm <parmus@diku.dk
+ # passed upstream as fd.o bug #9849
+ epatch "${FILESDIR}"/${PN}-0.5.7.1-indirection-fix.patch
+}
+
+src_compile() {
+ if [ -r "${ROOT}/usr/share/misc/pci.ids.gz" ] ; then
+ hwdata="${ROOT}/usr/share/misc/pci.ids.gz"
+ elif [ -r "${ROOT}/usr/share/misc/pci.ids" ] ; then
+ hwdata="${ROOT}/usr/share/misc/pci.ids"
+ else
+ die "pci.ids file not found. please file a bug @ bugs.gentoo.org"
+ fi
+
+ econf \
+ --with-doc-dir=/usr/share/doc/${PF} \
+ --with-os-type=gentoo \
+ --with-pid-file=/var/run/hald.pid \
+ --with-hwdata=${hwdata} \
+ --enable-hotplug-map \
+ $(use_enable debug verbose-mode) \
+ $(use_enable pcmcia pcmcia-support) \
+ $(use_enable !acpi acpi-acpid) \
+ $(use_enable acpi acpi-proc) \
+ $(use_enable doc docbook-docs) \
+ $(use_enable doc doxygen-docs) \
+ $(use_enable selinux) \
+ || die "configure failed"
+
+ emake || die "make failed"
+}
+
+src_install() {
+ make DESTDIR="${D}" install || die
+ dodoc AUTHORS ChangeLog NEWS README
+
+ # remove dep on gnome-python
+ mv "${D}"/usr/bin/hal-device-manager "${D}"/usr/share/hal/device-manager/
+
+ # initscript
+ newinitd "${FILESDIR}"/0.5-hald.rc hald
+
+ # We now create and keep /media here as both gnome-mount and pmount
+ # use these directories, to avoid collision.
+ dodir /media
+ keepdir /media
+}
+
+pkg_postinst() {
+ # Despite what people keep changing this location. Either one works.. it doesn't matter
+ # http://dev.gentoo.org/~plasmaroo/devmanual/ebuild-writing/functions/
+
+ # Create groups for hotplugging and HAL
+ enewgroup haldaemon || die "Problem adding haldaemon group"
+ enewgroup plugdev || die "Problem adding plugdev group"
+
+ # HAL drops priviledges by default now ...
+ # ... so we must make sure it can read disk/cdrom info (ie. be in ${HALDAEMON_GROUPS} groups)
+ enewuser haldaemon -1 "-1" /dev/null ${HALDAEMON_GROUPS} || die "Problem adding haldaemon user"
+
+ # Make sure that the haldaemon user is in the ${HALDAEMON_GROUPS}
+ # If users have a problem with this, let them file a bug
+ usermod -G ${HALDAEMON_GROUPS} haldaemon
+
+ elog "The HAL daemon needs to be running for certain applications to"
+ elog "work. Suggested is to add the init script to your start-up"
+ elog "scripts, this should be done like this :"
+ elog "\`rc-update add hald default\`"
+ echo
+ elog "Looking for automounting support? Add yourself to the plugdev group"
+}