diff options
author | Doug Goldstein <cardoe@gentoo.org> | 2007-02-13 03:54:03 +0000 |
---|---|---|
committer | Doug Goldstein <cardoe@gentoo.org> | 2007-02-13 03:54:03 +0000 |
commit | 63018d349095bf81cad1dd91ccd570de897da12e (patch) | |
tree | 0c4a09e813491430cce7439bff6f6237c5a86c9d /sys-apps | |
parent | Removed superfluous stripping of scilex binary. (diff) | |
download | gentoo-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)
Diffstat (limited to 'sys-apps')
-rw-r--r-- | sys-apps/hal/files/digest-hal-0.5.7.1-r5 | 3 | ||||
-rw-r--r-- | sys-apps/hal/files/hal-0.5.7.1-fix-dbus.patch | 184 | ||||
-rw-r--r-- | sys-apps/hal/files/hal-0.5.7.1-indirection-fix.patch | 117 | ||||
-rw-r--r-- | sys-apps/hal/files/hal-0.5.7.1-rescan-on-resume.patch | 16 | ||||
-rw-r--r-- | sys-apps/hal/hal-0.5.7.1-r5.ebuild | 211 |
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" +} |