Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=openjava.git;a=commitdiff;h=e096a72b8135efc51b1b7ae2d09609688c8c5212

commit e096a72b8135efc51b1b7ae2d09609688c8c5212
Author: James Buren <[email protected]>
Date:   Mon Aug 20 13:00:18 2012 -0500

pcmciautils-018-2-x86_64
* rebuild with systemd's udev
* add debian patch to drop libsysfs dependency

diff --git a/source/base/pcmciautils/FrugalBuild 
b/source/base/pcmciautils/FrugalBuild
index 3555169..5511235 100644
--- a/source/base/pcmciautils/FrugalBuild
+++ b/source/base/pcmciautils/FrugalBuild
@@ -4,25 +4,26 @@

pkgname=pcmciautils
pkgver=018
-pkgrel=1
+pkgrel=2
pkgdesc="Contains the initialization tools necessary to allow the PCMCIA 
subsystem to behave as every other hotpluggable bus system."
url="http://kernel.org/pub/linux/utils/kernel/pcmcia/pcmcia.html";
-depends=('sysfsutils>=2.1.0-3' 'module-init-tools>=3.4-7' 'udev>=124-2')
+depends=('kmod>=9' 'systemd>=188')
groups=('base')
backup=('etc/pcmcia/config.opts' 'etc/udev/rules.d/60-pcmcia.rules')
archs=('i686' 'x86_64' 'arm')
up2date="Flasttar $url"
-source=(http://kernel.org/pub/linux/utils/kernel/pcmcia/pcmciautils-$pkgver.tar.bz2
 \
-       
http://ftp.frugalware.org/pub/other/sources/$pkgname/cis-cs-3.2.8.tar.gz)
-signatures=("${source[0]}.sign" '')
+source=(http://ftp.de.debian.org/debian/pool/main/p/pcmciautils/${pkgname}_${pkgver}.orig.tar.gz
 \
+       
http://ftp.frugalware.org/pub/other/sources/$pkgname/cis-cs-3.2.8.tar.gz \
+       remove-libsysfs-dep.patch)
+sha1sums=('a0d55fed0bab64b618b1e3a8639733316084cb51' \
+          '248d97c1bc6447bfe8b36e3a572974eb07f13bf3' \
+          '2945e0e42fdd37576ddadca889a7353d67cf6576')

build() {
unset MAKEFLAGS
Fsed 'CFLAGS := -pipe' "CFLAGS := $CFLAGS" Makefile
-       # don't try to load the pcmcia module, it's built in
-       Fsed '/sbin/modprobe' '/bin/echo' udev/rules-base
Fbuild
Fmkdir /lib/firmware
-       Ffilerel $Fsrcdir/lib/firmware/*.cis /lib/firmware
+       Ffilerel $Fsrcdir/lib/firmware/*.cis /lib/firmware/
Fln pccardctl /sbin/lspcmcia
}
diff --git a/source/base/pcmciautils/remove-libsysfs-dep.patch 
b/source/base/pcmciautils/remove-libsysfs-dep.patch
new file mode 100644
index 0000000..6b0a7d6
--- /dev/null
+++ b/source/base/pcmciautils/remove-libsysfs-dep.patch
@@ -0,0 +1,659 @@
+Subject: pcmciautils: remove dependency on libsysfs
+Author: Dominik Brodowski <[email protected]>
+Origin: upstream, 
http://git.kernel.org/?p=linux/pcmcia/pcmciautils.git;a=commit;h=f31a75997f33c8c1ac291d657eb26ea0a1189459
+Bug-Debian: http://bugs.debian.org/627648
+
+--- a/Makefile
++++ b/Makefile
+@@ -156,12 +156,12 @@ CFLAGS +=        -I$(PWD)/src
+
+ CFLAGS += $(WARNINGS) -I$(GCCINCDIR)
+
+-LIB_OBJS = -lc -lsysfs
++LIB_OBJS = -lc
+ LIB_PLAIN_OBJS = -lc
+ LIB_PCI_OBJS = -lc -lpci
+
+ ifeq ($(strip $(STATIC)),true)
+-      LIB_OBJS = -lsysfs
++      LIB_OBJS =
+       LIB_PLAIN_OBJS =
+       LIB_PCI_OBJS = -lpci
+       LDFLAGS += -static
+--- a/doc/mini-howto.txt
++++ b/doc/mini-howto.txt
+@@ -112,8 +112,7 @@ Table of contents:
+   2.3. Dependencies
+   -----------------
+
+-   To use any of the PCMCIAutils tools, you need sysfsutils 1.3.0 or
+-   newer. However, if you do not need a resource database, you do not run
++   If you do not need a resource database, you do not run
+    a modular kernel and you are lucky, you might not need any userspace
+    tools at all.
+
+--- a/src/pccardctl.c
++++ b/src/pccardctl.c
+@@ -19,12 +19,13 @@
+ #include <libgen.h>
+ #include <locale.h>
+ #include <ctype.h>
+-
+-#include <sysfs/libsysfs.h>
+-
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <fcntl.h>
+ #include <getopt.h>
+
+ #define MAX_SOCKET 8
++#define SYSFS_PATH_MAX 255
+
+ static const char * const fn[] = {
+       "multifunction",
+@@ -51,87 +52,89 @@ static unsigned int crc32(unsigned char
+       return crc;
+ }
+
++static int sysfs_write_file(const char *fname, const char *value, size_t len)
++{
++      ssize_t numwrite;
++      int fd;
++      int ret = 0;
++
++      fd = open(fname, O_WRONLY);
++      if (fd <= 0)
++              return fd;
++
++      numwrite = write(fd, value, len);
++      if ((numwrite < 1) || ((size_t) numwrite != len))
++              ret = -EIO;
++
++      close(fd);
++      return ret;
++}
+
+ static int pccardctl_power_socket(unsigned long socket_no, unsigned int power)
+ {
+-      int ret;
+       char file[SYSFS_PATH_MAX];
+-      struct sysfs_attribute *attr;
+
+       snprintf(file, SYSFS_PATH_MAX,
+                "/sys/class/pcmcia_socket/pcmcia_socket%lu/card_pm_state",
+                socket_no);
+
+-      attr = sysfs_open_attribute(file);
+-      if (!attr)
+-              return -ENODEV;
+-
+-      ret = sysfs_write_attribute(attr, power ? "off" : "on", power ? 3 : 2);
+-
+-      sysfs_close_attribute(attr);
+-
+-      return ret;
++      return sysfs_write_file(file, power ? "off" : "on", power ? 3 : 2);
+ }
+
+ static int pccardctl_echo_one(unsigned long socket_no, const char *in_file)
+ {
+-      int ret;
+       char file[SYSFS_PATH_MAX];
+-      struct sysfs_attribute *attr;
+
+       snprintf(file, SYSFS_PATH_MAX,
+               "/sys/class/pcmcia_socket/pcmcia_socket%lu/%s",
+               socket_no, in_file);
+
+-      attr = sysfs_open_attribute(file);
+-      if (!attr)
+-              return -ENODEV;
+-
+-      ret = sysfs_write_attribute(attr, "42", 2);
+-
+-      sysfs_close_attribute(attr);
+-
+-      return ret;
++      return sysfs_write_file(file, "42", 2);
+ }
+
+ static int pccardctl_socket_exists(unsigned long socket_no)
+ {
+       char file[SYSFS_PATH_MAX];
++      struct stat st;
+
+       snprintf(file, SYSFS_PATH_MAX,
+                "/sys/class/pcmcia_socket/pcmcia_socket%lu/card_insert",
+                socket_no);
+
+-      return !(sysfs_path_is_file(file));
++      return !stat(file, &st);
+ }
+
+-static int read_out_file(char *file, char **output)
++static int sysfs_read_whole_file(char *file, char **output)
+ {
+-      struct sysfs_attribute *attr = sysfs_open_attribute(file);
+-      int ret;
+       char *result = NULL;
++      ssize_t numread;
++      off_t size;
++      int fd, ret = 0;
+
+       *output = NULL;
+
+-      if (!attr)
+-              return -EIO;
+-      ret = sysfs_read_attribute(attr);
+-
+-      if (ret || !attr->value || !attr->len || (attr->len > SYSFS_PATH_MAX))
+-              goto close_out;
+-
+-      result = malloc(attr->len + 1);
+-      if (result) {
+-              memcpy(result, attr->value, attr->len);
+-              result[attr->len] = '\0';
+-              if (result[attr->len - 1] == '\n')
+-                      result[attr->len - 1] = '\0';
++      fd = open(file, O_RDONLY);
++      if (fd <= 0)
++              return fd;
++
++      /* determine size */
++      size = lseek(fd, 0, SEEK_END) + SYSFS_PATH_MAX;
++      result = malloc(size);
++      if (!result) {
++              close(fd);
++              return -ENOMEM;
++      }
++
++      lseek(fd, 0, SEEK_SET);
++      numread = read(fd, result, size - 1);
++      if (numread < 1)
++              ret = -EIO;
++      else {
++              result[numread] = '\0';
+               *output = result;
+-      } else
+-              ret = -ENOMEM;
++      }
+
+- close_out:
+-      sysfs_close_attribute(attr);
++      close(fd);
+       return ret;
+ }
+
+@@ -144,7 +147,7 @@ static int pccardctl_get_string_socket(u
+               "/sys/class/pcmcia_socket/pcmcia_socket%lu/%s",
+                socket_no, in_file);
+
+-      return read_out_file(file, output);
++      return sysfs_read_whole_file(file, output);
+ }
+
+ static int pccardctl_get_string(unsigned long socket_no,
+@@ -155,7 +158,7 @@ static int pccardctl_get_string(unsigned
+       snprintf(file, SYSFS_PATH_MAX, "/sys/bus/pcmcia/devices/%lu.0/%s",
+                socket_no, in_file);
+
+-      return read_out_file(file, output);
++      return sysfs_read_whole_file(file, output);
+ }
+
+ static int pccardctl_get_one_f(unsigned long socket_no, unsigned int dev,
+@@ -163,17 +166,19 @@ static int pccardctl_get_one_f(unsigned
+ {
+       char *value;
+       char file[SYSFS_PATH_MAX];
+-      int ret;
++      int ret = 0;
+
+       snprintf(file, SYSFS_PATH_MAX, "/sys/bus/pcmcia/devices/%lu.%u/%s",
+                socket_no, dev, in_file);
+-      ret = read_out_file(file, &value);
++      ret = sysfs_read_whole_file(file, &value);
+       if (ret || !value)
+               return -EINVAL;
+
+       if (sscanf(value, "0x%X", result) != 1)
+-              return -EIO;
+-      return 0;
++              ret = -EIO;
++
++      free(value);
++      return ret;
+ }
+
+ static int pccardctl_get_one(unsigned long socket_no, const char *in_file,
+@@ -187,36 +192,40 @@ static int pccardctl_get_power_device(un
+ {
+       char *value;
+       char file[SYSFS_PATH_MAX];
++      int ret = -ENODEV;
+
+       snprintf(file, SYSFS_PATH_MAX,
+               "/sys/bus/pcmcia/devices/%lu.%u/pm_state",
+                socket_no, func);
+-      read_out_file(file, &value);
++      sysfs_read_whole_file(file, &value);
+       if (value) {
+               if (!strncmp(value, "off", 3))
+-                      return 1;
+-              return 0;
++                      ret = 1;
++              ret = 0;
++              free(value);
+       }
+
+-      return -ENODEV;
++      return ret;
+ }
+
+ static int pccardctl_get_power_socket(unsigned long socket_no)
+ {
+       char *value;
+       char file[SYSFS_PATH_MAX];
++      int ret = -ENODEV;
+
+       snprintf(file, SYSFS_PATH_MAX,
+               "/sys/class/pcmcia_socket/pcmcia_socket%lu/card_pm_state",
+                socket_no);
+-      read_out_file(file, &value);
++      sysfs_read_whole_file(file, &value);
+       if (value) {
+               if (!strncmp(value, "off", 3))
+-                      return 1;
+-              return 0;
++                      ret = 1;
++              ret = 0;
++              free(value);
+       }
+
+-      return -ENODEV;
++      return ret;
+ }
+
+
+@@ -262,7 +271,6 @@ static int pccardctl_ident(unsigned long
+               printf("  function: %d (%s)\n", manf_id, s);
+       }
+
+-
+       return 0;
+ }
+
+@@ -323,6 +331,8 @@ static int pccardctl_status(unsigned lon
+
+       printf("  %s %s %s", card_voltage, card_type, is_cardbus ?
+               "CardBus card" : "PC Card");
++      free(card_type);
++      free(card_voltage);
+
+       susp = pccardctl_get_power_socket(socket_no);
+       if (susp > 0)
+@@ -365,7 +375,7 @@ static int pccardctl_status(unsigned lon
+ static void print_header(void)
+ {
+       printf("pcmciautils %s\n", PCMCIAUTILS_VERSION);
+-      printf("Copyright (C) 2004-2005 Dominik Brodowski, "
++      printf("Copyright (C) 2004-2011 Dominik Brodowski, "
+               "(C) 1999 David A. Hinds\n");
+       printf("Report errors and bugs to <[email protected]>,"
+               "please.\n");
+@@ -412,7 +422,6 @@ static void lspcmcia_socket_available_re
+                                               char *which)
+ {
+       char file[SYSFS_PATH_MAX];
+-      struct sysfs_attribute *attr;
+       int ret, length, first = 0;
+       char *sep;
+       char *result = NULL;
+@@ -421,27 +430,10 @@ static void lspcmcia_socket_available_re
+       "/sys/class/pcmcia_socket/pcmcia_socket%lu/available_resources_%s",
+               socket_no, which);
+
+-      attr = sysfs_open_attribute(file);
+-      if (!attr)
+-              return;
+-
+-
+-      ret = sysfs_read_attribute(attr);
+-      if (ret)
+-              goto close_out;
+-
+       printf("\t\t\tAvailable %s:\t", which[0] == 'i' ? "ioports" : "iomem");
+
+-      if (!attr->value || !attr->len || (attr->len < 5))
+-              goto close_out;
+-
+-      result = malloc(attr->len + 1);
+-      if (result) {
+-              memcpy(result, attr->value, attr->len);
+-              result[attr->len] = '\0';
+-              if (result[attr->len - 1] == '\n')
+-                      result[attr->len - 1] = '\0';
+-      } else
++      ret = sysfs_read_whole_file(file, &result);
++      if (ret)
+               goto close_out;
+
+       ret = 0;
+@@ -458,15 +450,13 @@ static void lspcmcia_socket_available_re
+                       ret += length + 1;
+               }
+       } while (sep);
+-      if (result) {
+-              printf("%s\n", &result[ret]);
+-              first++;
+-      }
++      printf("%s\n", &result[ret]);
++      first++;
++      free(result);
+
+  close_out:
+       if (!first)
+               printf("--none--\n");
+-      sysfs_close_attribute(attr);
+       return;
+ }
+
+@@ -479,7 +469,6 @@ static void lspcmcia_socket(unsigned lon
+       pccardctl_get_string_socket(socket_no,
+                               "available_resources_setup_done", &ready);
+
+-
+       printf("\tConfiguration:\tstate: %s\tready: %s\n",
+               pm_state ? "suspended" : "on", ready ? ready : "unknown");
+
+@@ -489,6 +478,10 @@ static void lspcmcia_socket(unsigned lon
+       if (card_voltage && card_vpp && card_vcc)
+               printf("\t\t\tVoltage: %s Vcc: %s Vpp: %s\n",
+                       card_voltage, card_vcc, card_vpp);
++      free(card_voltage);
++      free(card_vpp);
++      free(card_vcc);
++      free(ready);
+
+       if (verbose > 1) {
+               char *irq_mask_s;
+@@ -511,7 +504,7 @@ static void lspcmcia_socket(unsigned lon
+                               printf("none");
+                       printf("\n");
+               }
+-
++              free(irq_mask_s);
+               lspcmcia_socket_available_resources(socket_no, "io");
+               lspcmcia_socket_available_resources(socket_no, "mem");
+       }
+@@ -521,7 +514,6 @@ static void lspcmcia_socket(unsigned lon
+ static void lspcmcia_device_resources(unsigned long socket_no, int fun)
+ {
+       char file[SYSFS_PATH_MAX];
+-      struct sysfs_attribute *attr;
+       int ret, length;
+       char *sep;
+       char *result = NULL;
+@@ -529,25 +521,9 @@ static void lspcmcia_device_resources(un
+       snprintf(file, SYSFS_PATH_MAX,
+               "/sys/bus/pcmcia/devices/%lu.%u/resources", socket_no, fun);
+
+-      attr = sysfs_open_attribute(file);
+-      if (!attr)
+-              return;
+-
+-      ret = sysfs_read_attribute(attr);
++      ret = sysfs_read_whole_file(file, &result);
+       if (ret)
+-              goto close_out;
+-
+-      if (!attr->value || !attr->len || (attr->len < 5))
+-              goto close_out;
+-
+-      result = malloc(attr->len + 1);
+-      if (result) {
+-              memcpy(result, attr->value, attr->len);
+-              result[attr->len] = '\0';
+-              if (result[attr->len - 1] == '\n')
+-                      result[attr->len - 1] = '\0';
+-      } else
+-              goto close_out;
++              return;
+
+       ret = 0;
+       printf("\t\t\t");
+@@ -563,11 +539,9 @@ static void lspcmcia_device_resources(un
+                       ret += length + 1;
+               }
+       } while (sep);
+-      if (result)
+-              printf("%s\n", &result[ret]);
++      printf("%s\n", &result[ret]);
+
+- close_out:
+-      sysfs_close_attribute(attr);
++      free(result);
+       return;
+ }
+
+@@ -620,7 +594,6 @@ static int lspcmcia(unsigned long socket
+       if (verbose)
+               lspcmcia_socket(socket_no, verbose, drv);
+
+-
+       pccardctl_get_string_socket(socket_no, "card_type", &res);
+       if (!res)
+               return 0;
+@@ -628,8 +601,10 @@ static int lspcmcia(unsigned long socket
+       if (!strncmp(res, "32", 2)) {
+               printf("  CardBus card -- see \"lspci\" "
+                       "for more information\n");
++              free(res);
+               return 0;
+       }
++      free(res);
+
+       for (i = 0; i < 4; i++) {
+               int function;
+@@ -666,6 +641,7 @@ static int lspcmcia(unsigned long socket
+                               pccardctl_get_string(socket_no, file, &res);
+                               if (res)
+                                       printf("%s ", res);
++                              free(res);
+                       }
+                       printf("\n");
+
+@@ -694,6 +670,7 @@ static int lspcmcia(unsigned long socket
+                                       printf("prod_id(%u): --- (---)\n", j);
+                               if (j < 4)
+                                       printf("\t\t\t");
++                              free(res);
+                       }
+               }
+       }
+--- a/src/read-cis.c
++++ b/src/read-cis.c
+@@ -18,11 +18,10 @@
+ #include <errno.h>
+ #include <syslog.h>
+
+-#include <sysfs/libsysfs.h>
+-
+ #include "cistpl.h"
+
+ #define MAX_TUPLES                0x200
++#define SYSFS_PATH_MAX 255
+
+ #define PATH_TO_SOCKET "/sys/class/pcmcia_socket/"
+
+--- a/src/startup.c
++++ b/src/startup.c
+@@ -15,10 +15,11 @@
+ #include <string.h>
+ #include <errno.h>
+ #include <syslog.h>
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <fcntl.h>
+ #include <unistd.h>
+
+-#include <sysfs/libsysfs.h>
+-
+ #include "startup.h"
+
+ /* uncomment for debug output */
+@@ -48,6 +49,46 @@ static const char *resource_files[MAX_RE
+
+ #define PATH_TO_SOCKET "/sys/class/pcmcia_socket/"
+
++#define SYSFS_PATH_MAX 255
++
++
++static int sysfs_read_file(const char *fname, char *buf, size_t buflen)
++{
++      ssize_t numread;
++      int fd;
++      int ret = 0;
++
++      fd = open(fname, O_RDONLY);
++      if (fd <= 0)
++              return fd;
++
++      numread = read(fd, buf, buflen - 1);
++      if (numread < 1)
++              ret = -EIO;
++      else
++              buf[numread] = '\0';
++
++      close(fd);
++      return ret;
++}
++
++static int sysfs_write_file(const char *fname, const char *value, size_t len)
++{
++      ssize_t numwrite;
++      int fd;
++      int ret = 0;
++
++      fd = open(fname, O_WRONLY);
++      if (fd <= 0)
++              return fd;
++
++      numwrite = write(fd, value, len);
++      if ((numwrite < 1) || ((size_t) numwrite != len))
++              ret = -EIO;
++
++      close(fd);
++      return ret;
++}
+
+ static int add_available_resource(unsigned int socket_no, unsigned int type,
+                                 unsigned int action,
+@@ -55,7 +96,6 @@ static int add_available_resource(unsign
+ {
+       char file[SYSFS_PATH_MAX];
+       char content[SYSFS_PATH_MAX];
+-      struct sysfs_attribute *attr;
+       int ret;
+       size_t len;
+
+@@ -85,44 +125,24 @@ static int add_available_resource(unsign
+               return -EINVAL;
+       }
+
+-      dprintf("content is %s\n", content);
+-
+-      dprintf("file is %s\n", file);
+-
+-      attr = sysfs_open_attribute(file);
+-      if (!attr)
+-              return -ENODEV;
+-
+-      dprintf("open, len %zu\n", len);
++      dprintf("content is %s, file is %s\n", content, file);
+
+-      ret = sysfs_write_attribute(attr, content, len);
++      ret = sysfs_write_file(file, content, len);
+
+       dprintf("ret is %d\n", ret);
+
+-      sysfs_close_attribute(attr);
+-
+       return ret;
+ }
+
+ static int setup_done(unsigned int socket_no)
+ {
+-      int ret;
+       char file[SYSFS_PATH_MAX];
+-      struct sysfs_attribute *attr;
+
+       snprintf(file, SYSFS_PATH_MAX, PATH_TO_SOCKET
+                "pcmcia_socket%u/available_resources_setup_done",
+                socket_no);
+
+-      attr = sysfs_open_attribute(file);
+-      if (!attr)
+-              return -ENODEV;
+-
+-      ret = sysfs_write_attribute(attr, "42", 2);
+-
+-      sysfs_close_attribute(attr);
+-
+-      return ret;
++      return sysfs_write_file(file, "42", 2);
+ }
+
+
+@@ -130,7 +150,6 @@ static int disallow_irq(unsigned int soc
+ {
+       char file[SYSFS_PATH_MAX];
+       char content[SYSFS_PATH_MAX];
+-      struct sysfs_attribute *attr;
+       unsigned int mask = 0xfff;
+       unsigned int new_mask;
+       int ret;
+@@ -144,24 +163,13 @@ static int disallow_irq(unsigned int soc
+                socket_no);
+       dprintf("file is %s\n", file);
+
+-      attr = sysfs_open_attribute(file);
+-      if (!attr)
++      ret = sysfs_read_file(file, content, SYSFS_PATH_MAX);
++      if (ret)
+               return -ENODEV;
+
+-      dprintf("open, len %zu\n", len);
+-
+-      ret = sysfs_read_attribute(attr);
+-      if (ret) {
+-              ret = -EINVAL;
+-              goto out;
+-      }
+-
+-      if (!attr->value || (attr->len < 6)) {
+-              ret = -EIO;
+-              goto out;
+-      }
+-
+-      ret = sscanf(attr->value, "0x%x\n", &mask);
++      ret = sscanf(content, "0x%x\n", &mask);
++      if (ret != 1)
++              return -EIO;
+
+       new_mask = 1 << irq;
+
+@@ -171,12 +179,7 @@ static int disallow_irq(unsigned int soc
+
+       dprintf("content is %s\n", content);
+
+-      ret = sysfs_write_attribute(attr, content, len);
+-
+- out:
+-      sysfs_close_attribute(attr);
+-
+-      return ret;
++      return sysfs_write_file(file, content, len);
+ }
+
+
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to