[Pkg-xfce-devel] Bug#458978: xfce4-sensors-plugin: lm-sensors transition
Aurelien Jarno
aurel32 at debian.org
Thu Jan 3 23:57:26 UTC 2008
Package: xfce4-sensors-plugin
Version: 0.10.99.2-1
Severity: wishlist
Tags: patch
Hi,
A new upstream version of lm-sensors has been released upstream. The API
has changed, so the softwares using libsensors3 have to be modified so
that they can use libsensors4. It is planned to keep both versions for a
while, but the goal is to get rid of libsensors3 in Lenny.
You will find attached a patch for xfce4-sensors-plugin that changes
both upstream code and debian/ directory. I have moved lm-sensors from
Depends: to Recommends: as the configuration file has been moved to the
library, so it is not strictly necessary anymore to have lm-sensors
installed to get xfce4-sensors-plugin working.
Could you please apply this patch in your next upload?
Thanks,
Aurelien
-- System Information:
Debian Release: lenny/sid
APT prefers unstable
APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.23-1-amd64 (SMP w/2 CPU cores)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
-------------- next part --------------
diff -u xfce4-sensors-plugin-0.10.99.2/debian/control xfce4-sensors-plugin-0.10.99.2/debian/control
--- xfce4-sensors-plugin-0.10.99.2/debian/control
+++ xfce4-sensors-plugin-0.10.99.2/debian/control
@@ -3,7 +3,7 @@
Priority: optional
Maintainer: Debian Xfce Maintainers <pkg-xfce-devel at lists.alioth.debian.org>
Uploaders: Emanuele Rocca <ema at debian.org>, Simon Huggins <huggie at earth.li>, Rudy Godoy <rudy at kernel-panik.org>, Yves-Alexis Perez <corsac at debian.org>, Stefan Ott <stefan at desire.ch>
-Build-Depends: cdbs, debhelper (>= 4.1), libgtk2.0-dev, xfce4-panel-dev (>= 4.4.1), libxml2-dev, libsensors-dev, libxml-parser-perl
+Build-Depends: cdbs, debhelper (>= 4.1), libgtk2.0-dev, xfce4-panel-dev (>= 4.4.1), libxml2-dev, libsensors4-dev, libxml-parser-perl
Standards-Version: 3.7.3
Homepage: http://goodies.xfce.org/
Vcs-Svn: svn://svn.debian.org/pkg-xfce/goodies/xfce4-sensors-plugin/
@@ -11,8 +11,8 @@
Package: xfce4-sensors-plugin
Architecture: any
-Depends: ${shlibs:Depends}, lm-sensors
-Recommends: hddtemp
+Depends: ${shlibs:Depends}
+Recommends: hddtemp, lm-sensors
Suggests: xsensors
Description: hardware sensors plugin for the Xfce4 panel
The sensors plugin reads your hardware sensor values and displays
only in patch2:
unchanged:
--- xfce4-sensors-plugin-0.10.99.2.orig/panel-plugin/middlelayer.c
+++ xfce4-sensors-plugin-0.10.99.2/panel-plugin/middlelayer.c
@@ -110,6 +110,7 @@
}
+#if SENSORS_API_VERSION < 0x400 /* libsensor 3 code */
void
categorize_sensor_type (t_chipfeature* chipfeature)
{
@@ -141,7 +142,7 @@
TRACE ("leaves categorize_sensor_type");
}
-
+#endif
int
sensors_get_feature_wrapper (t_chip *chip, int number, double *value)
@@ -153,7 +154,11 @@
if (chip->type==LMSENSOR ) {
#ifdef HAVE_LIBSENSORS
- return sensors_get_feature (*(chip->chip_name), number, value);
+ #if SENSORS_API_VERSION < 0x400 /* libsensor 3 code */
+ return sensors_get_feature (*(chip->chip_name), number, value);
+ #else
+ return sensors_get_value (chip->chip_name, number, value);
+ #endif
#else
return -1;
#endif
only in patch2:
unchanged:
--- xfce4-sensors-plugin-0.10.99.2.orig/panel-plugin/lmsensors.c
+++ xfce4-sensors-plugin-0.10.99.2/panel-plugin/lmsensors.c
@@ -47,12 +47,28 @@
chip->chip_name = (sensors_chip_name *) g_malloc (sizeof(sensors_chip_name));
memcpy ( (void *) (chip->chip_name), (void *) name, sizeof(sensors_chip_name) );
+#if SENSORS_API_VERSION < 0x400 /* libsensor 3 code */
chip->sensorId = g_strdup_printf ("%s-%x-%x", name->prefix, name->bus, name->addr);
+#else
+ switch (name->bus.type) {
+ case SENSORS_BUS_TYPE_I2C:
+ case SENSORS_BUS_TYPE_SPI:
+ chip->sensorId = g_strdup_printf ("%s-%x-%x", name->prefix,
+ name->bus.nr, name->addr);
+ break;
+ default:
+ chip->sensorId = g_strdup_printf ("%s-%x", name->prefix, name->addr);
+ }
+#endif
chip->num_features=0;
chip->name = g_strdup (_("LM Sensors"));
chip->chip_features = g_ptr_array_new();
+#if SENSORS_API_VERSION < 0x400 /* libsensor 3 code */
chip->description = g_strdup (sensors_get_adapter_name (num_sensorchips-1));
+#else
+ chip->description = g_strdup (sensors_get_adapter_name (&name->bus));
+#endif
TRACE("leaves setup_chip");
@@ -71,14 +87,23 @@
chipfeature->address = number;
chipfeature->show = FALSE;
+#if SENSORS_API_VERSION < 0x400 /* libsensor 3 code */
categorize_sensor_type (chipfeature);
+#endif
TRACE("leaves setup_chipfeature");
}
+#if SENSORS_API_VERSION < 0x400 /* libsensor 3 code */
t_chipfeature *find_chipfeature (const sensors_chip_name *name, t_chip *chip, int number)
{
+#else
+t_chipfeature *find_chipfeature (const sensors_chip_name *name, t_chip *chip, const sensors_feature *feature)
+{
+ const sensors_subfeature *sub_feature = NULL;
+ int number = -1;
+#endif
int res;
double sensorFeature;
t_chipfeature *chipfeature;
@@ -87,6 +112,7 @@
chipfeature = g_new0 (t_chipfeature, 1);
+#if SENSORS_API_VERSION < 0x400 /* libsensor 3 code */
if (sensors_get_ignored (*(name), number)==1) {
res = sensors_get_label(*(name), number,
&(chipfeature->name));
@@ -95,6 +121,87 @@
res = sensors_get_feature (*(name), number,
&sensorFeature);
+#else /* libsensors 4 code */
+
+ switch (feature->type) {
+ case SENSORS_FEATURE_IN:
+ sub_feature = sensors_get_subfeature(name, feature,
+ SENSORS_SUBFEATURE_IN_INPUT);
+ if (!sub_feature)
+ break;
+
+ number = sub_feature->number;
+ chipfeature->class = VOLTAGE;
+ chipfeature->min_value = 2.8;
+ chipfeature->max_value = 12.2;
+
+ if ((sub_feature = sensors_get_subfeature(name, feature,
+ SENSORS_SUBFEATURE_IN_MIN)) &&
+ !sensors_get_value(name, sub_feature->number, &sensorFeature))
+ chipfeature->min_value = sensorFeature;
+
+ if ((sub_feature = sensors_get_subfeature(name, feature,
+ SENSORS_SUBFEATURE_IN_MAX)) &&
+ !sensors_get_value(name, sub_feature->number, &sensorFeature))
+ chipfeature->max_value = sensorFeature;
+
+ break;
+
+ case SENSORS_FEATURE_FAN:
+ sub_feature = sensors_get_subfeature(name, feature,
+ SENSORS_SUBFEATURE_FAN_INPUT);
+ if (!sub_feature)
+ break;
+
+ number = sub_feature->number;
+ chipfeature->class = SPEED;
+ chipfeature->min_value = 1000.0;
+ chipfeature->max_value = 3500.0;
+
+ if ((sub_feature = sensors_get_subfeature(name, feature,
+ SENSORS_SUBFEATURE_FAN_MIN)) &&
+ !sensors_get_value(name, sub_feature->number, &sensorFeature))
+ chipfeature->min_value = sensorFeature;
+
+ break;
+
+ case SENSORS_FEATURE_TEMP:
+ sub_feature = sensors_get_subfeature(name, feature,
+ SENSORS_SUBFEATURE_TEMP_INPUT);
+ if (!sub_feature)
+ break;
+
+ number = sub_feature->number;
+ chipfeature->class = TEMPERATURE;
+ chipfeature->min_value = 0.0;
+ chipfeature->max_value = 80.0;
+
+ if ((sub_feature = sensors_get_subfeature(name, feature,
+ SENSORS_SUBFEATURE_TEMP_MIN)) &&
+ !sensors_get_value(name, sub_feature->number, &sensorFeature))
+ chipfeature->min_value = sensorFeature;
+
+ if (((sub_feature = sensors_get_subfeature(name, feature,
+ SENSORS_SUBFEATURE_TEMP_MAX)) ||
+ (sub_feature = sensors_get_subfeature(name, feature,
+ SENSORS_SUBFEATURE_TEMP_CRIT))) &&
+ !sensors_get_value(name, sub_feature->number, &sensorFeature))
+ chipfeature->max_value = sensorFeature;
+ }
+
+ if (number != -1) {
+
+ chipfeature->name = sensors_get_label(name, feature);
+
+ if (!chipfeature->name)
+ chipfeature->name = feature->name;
+
+ if (chipfeature->name) {
+ res = sensors_get_value (name, number,
+ &sensorFeature);
+
+#endif /* libsensor3 / libsensors4 code */
+
if (res==0) {
setup_chipfeature (chipfeature, number, sensorFeature);
chip->num_features++;
@@ -103,6 +210,7 @@
}
}
}
+ g_free(chipfeature);
TRACE("leaves find_chipfeature with null");
return NULL;
@@ -114,8 +222,9 @@
int sensorsInit, nr1, nr2, num_sensorchips; /* , numchips; */
t_chip *chip;
t_chipfeature *chipfeature; /* , *furtherchipfeature; */
- FILE *file;
const sensors_chip_name *detected_chip;
+#if SENSORS_API_VERSION < 0x400 /* libsensor 3 code */
+ FILE *file;
const sensors_feature_data *sfd;
TRACE("enters initialize_libsensors");
@@ -167,6 +276,45 @@
TRACE ("leaves initialize_libsensors with -1");
return -1;
}
+#else
+ const sensors_feature *sfd;
+ TRACE("enters initialize_libsensors");
+
+ sensorsInit = sensors_init(NULL);
+ if (sensorsInit != 0)
+ {
+ g_printf(_("Error: Could not connect to sensors!"));
+ /* FIXME: better popup window? write to special logfile? */
+ return -2;
+ }
+
+ num_sensorchips = 0;
+ detected_chip = sensors_get_detected_chips (NULL, &num_sensorchips);
+ /* iterate over chips on mainboard */
+ while (detected_chip!=NULL)
+ {
+ chip = setup_chip (chips, detected_chip, num_sensorchips);
+
+ nr1 = 0;
+ nr2 = 0;
+ /* iterate over chip features, i.e. id, cpu temp, mb temp... */
+ /* numchips = get_number_chip_features (detected_chip); */
+ sfd = sensors_get_features (detected_chip, &nr1);
+ while (sfd != NULL)
+ {
+ chipfeature = find_chipfeature (detected_chip, chip, sfd);
+ if (chipfeature!=NULL) {
+ g_ptr_array_add (chip->chip_features, chipfeature);
+ }
+ sfd = sensors_get_features (detected_chip, &nr1);
+ }
+
+ detected_chip = sensors_get_detected_chips (NULL, &num_sensorchips);
+ } /* end while sensor chipNames */
+
+ TRACE ("leaves initialize_libsensors with 1");
+ return 1;
+#endif
}
More information about the Pkg-xfce-devel
mailing list