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
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 <[EMAIL PROTECTED]> Uploaders: Emanuele Rocca <[EMAIL PROTECTED]>, Simon Huggins <[EMAIL PROTECTED]>, Rudy Godoy <[EMAIL PROTECTED]>, Yves-Alexis Perez <[EMAIL PROTECTED]>, Stefan Ott <[EMAIL PROTECTED]> -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 }