summaryrefslogtreecommitdiff
path: root/sysutils/hal
diff options
context:
space:
mode:
authorKoop Mast <kwm@FreeBSD.org>2012-09-29 18:17:59 +0000
committerKoop Mast <kwm@FreeBSD.org>2012-09-29 18:17:59 +0000
commit0175115cb7ff7fe7bf1589313f5a17f3bb6791d1 (patch)
tree2625d7ccbcd2b1bceb473577f2b4d4ed52688ef1 /sysutils/hal
parentUpdate to 1.7.5. (diff)
Make sure /var is populated correctly before hal is started, like dbus does
already in its rc.d script. [1] Don't list entries twice, set some more details about storage devices like the linux backend does. [2] PR: ports/171568 [1] PR: ports/171727 [2] Submitted by: Norbert Koch <nkoch@demig.de> [1], avilla@ [2] Reviewed by: marcus@
Notes
Notes: svn path=/head/; revision=305045
Diffstat (limited to 'sysutils/hal')
-rw-r--r--sysutils/hal/Makefile2
-rw-r--r--sysutils/hal/files/hald.in41
-rw-r--r--sysutils/hal/files/patch-hald_freebsd_hf-drm.c15
-rw-r--r--sysutils/hal/files/patch-hald_freebsd_probing_probe-storage.c39
4 files changed, 96 insertions, 1 deletions
diff --git a/sysutils/hal/Makefile b/sysutils/hal/Makefile
index 8e34769cbdb0..bf6c84955b8c 100644
--- a/sysutils/hal/Makefile
+++ b/sysutils/hal/Makefile
@@ -8,7 +8,7 @@
PORTNAME= hal
DISTVERSION= 0.5.14
-PORTREVISION= 19
+PORTREVISION= 20
CATEGORIES= sysutils
MASTER_SITES= http://hal.freedesktop.org/releases/
diff --git a/sysutils/hal/files/hald.in b/sysutils/hal/files/hald.in
index 0539fef934f4..f07df2c61924 100644
--- a/sysutils/hal/files/hald.in
+++ b/sysutils/hal/files/hald.in
@@ -41,6 +41,43 @@ local_force_depend()
return 0
}
+init_var_policykit()
+{
+ local USER=polkit
+ local GROUP=${USER}
+ local PREFIX=/usr/local
+
+ /usr/bin/install -d -o root -m 0770 -g ${GROUP} /var/run/PolicyKit
+ /usr/bin/install -d -o root -m 0770 -g ${GROUP} /var/lib/PolicyKit
+ /usr/bin/install -d -o ${USER} -m 0755 -g wheel /var/lib/PolicyKit-public
+ /bin/mkdir -p /var/lib/misc
+ /usr/bin/touch -f /var/lib/misc/PolicyKit.reload
+ /usr/sbin/chown ${USER}:${GROUP} /var/lib/misc/PolicyKit.reload
+ /bin/chmod 0664 /var/lib/misc/PolicyKit.reload
+}
+
+init_var_polkit()
+{
+ mkdir -p /var/lib/polkit-1/localauthority
+ for i in 10-vendor.d 20-org.d 30-site.d 50-local.d 90-mandatory.d
+ do
+ mkdir -p /var/lib/polkit-1/localauthority/${i}
+ done
+ chmod 0700 /var/lib/polkit-1
+}
+
+init_var_hal()
+{
+ local USER=haldaemon
+ local GROUP=${USER}
+
+ /usr/bin/install -d -o ${USER} -g ${GROUP} /var/run/hald
+ /usr/bin/install -d -o ${USER} -g ${GROUP} /var/cache/hald
+ /usr/bin/install -d -o ${USER} -g ${GROUP} /var/lib/hal
+ /usr/local/bin/polkit-auth --user ${USER} --grant \
+ org.freedesktop.policykit.read 1> /dev/null 2>&1
+}
+
hald_precmd()
{
if ! checkyesno dbus_enable
@@ -48,6 +85,10 @@ hald_precmd()
local_force_depend dbus || return 1
fi
+ init_var_policykit
+ init_var_polkit
+ init_var_hal
+
chmod 0755 /var/cache
mkdir -p $(dirname $pidfile)
diff --git a/sysutils/hal/files/patch-hald_freebsd_hf-drm.c b/sysutils/hal/files/patch-hald_freebsd_hf-drm.c
new file mode 100644
index 000000000000..dbde83cceef1
--- /dev/null
+++ b/sysutils/hal/files/patch-hald_freebsd_hf-drm.c
@@ -0,0 +1,15 @@
+--- hald/freebsd/hf-drm.c.orig 2008-08-10 15:50:10.000000000 +0200
++++ hald/freebsd/hf-drm.c 2012-09-27 12:04:28.000000000 +0200
+@@ -234,6 +234,12 @@
+ {
+ HalDevice *parent = HAL_DEVICE(l->data);
+
++ if (hf_device_store_match(hald_get_gdl(),
++ "info.parent", HAL_PROPERTY_TYPE_STRING, hal_device_get_udi(parent),
++ "info.subsystem", HAL_PROPERTY_TYPE_STRING, "drm",
++ NULL))
++ continue;
++
+ if (! hal_device_property_get_bool(parent, "info.ignore"))
+ {
+ Card *card;
diff --git a/sysutils/hal/files/patch-hald_freebsd_probing_probe-storage.c b/sysutils/hal/files/patch-hald_freebsd_probing_probe-storage.c
new file mode 100644
index 000000000000..ae1ac842700d
--- /dev/null
+++ b/sysutils/hal/files/patch-hald_freebsd_probing_probe-storage.c
@@ -0,0 +1,39 @@
+--- hald/freebsd/probing/probe-storage.c.orig 2009-08-24 14:42:29.000000000 +0200
++++ hald/freebsd/probing/probe-storage.c 2012-09-27 12:03:02.000000000 +0200
+@@ -236,7 +236,27 @@
+
+ hfp_cdrom_free(cdrom);
+ }
+- else if (! has_children) /* by definition, if it has children it has no fs */
++ else
++ {
++ int fd;
++ off_t size;
++
++ fd = open(device_file, O_RDONLY | O_NONBLOCK);
++ if (fd > -1)
++ {
++ libhal_device_set_property_bool(hfp_ctx, hfp_udi, "storage.removable.media_available", TRUE, &hfp_error);
++ if (ioctl (fd, DIOCGMEDIASIZE, &size) == 0)
++ {
++ libhal_device_set_property_uint64(hfp_ctx, hfp_udi, "storage.removable.media_size", size, &hfp_error);
++ }
++ close(fd);
++ }
++ else
++ {
++ libhal_device_set_property_bool(hfp_ctx, hfp_udi, "storage.removable.media_available", FALSE, &hfp_error);
++ }
++
++ if (! has_children) /* by definition, if it has children it has no fs */
+ {
+ struct volume_id *vid;
+
+@@ -249,6 +269,7 @@
+
+ volume_id_close(vid);
+ }
++ }
+
+ end:
+ return ret;