From: Jan-Pascal van Best <janpascal@vanbest.org>
Date: Tue, 20 Aug 2013 20:41:00 +0000 (+0200)
Subject: Enable kernel 3.2.0-4 (from Debian squeeze), add ifdefs in sasc-ng patch
X-Git-Tag: debian/620-13
X-Git-Url: http://www.vanbest.org/gitweb/?a=commitdiff_plain;h=bb27271c9622379cc29ba34b09faf23953d51745;p=sasc-ng.git

Enable kernel 3.2.0-4 (from Debian squeeze), add ifdefs in sasc-ng patch
---

diff --git a/debian/changelog b/debian/changelog
index 8c8da2f..fb5eab5 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,14 @@
-sasc-ng (620-12) local; urgency=low
+sasc-ng (620-13) unstable; urgency=low
+
+  * Enable kernel 3.2 for Wheezy users
+
+ -- Jan-Pascal van Best <janpascal@vanbest.org>  Tue, 20 Aug 2013 22:18:31 +0200
+
+sasc-ng (620-12) unstable; urgency=low
 
   * Updates for kernel 3.10, lower kernels not supported for now
 
- -- Jan-Pascal van Best <janpascal@vanbest.org>  Mon, 19 Aug 2013 10:07:09 +0200
+ -- Jan-Pascal van Best <janpascal@vanbest.org>  Mon, 19 Aug 2013 21:07:09 +0200
 
 sasc-ng (620-11) local; urgency=low
 
diff --git a/debian/patches/update-for-linux-3.10-procfs-changes b/debian/patches/update-for-linux-3.10-procfs-changes
index 98c4c11..8884d2c 100644
--- a/debian/patches/update-for-linux-3.10-procfs-changes
+++ b/debian/patches/update-for-linux-3.10-procfs-changes
@@ -1,5 +1,3 @@
-diff --git a/contrib/sasc-ng/dvbloopback/module/dvb_loopback.c b/contrib/sasc-ng/dvbloopback/module/dvb_loopback.c
-index 5299dbe..a8500dd 100644
 --- a/contrib/sasc-ng/dvbloopback/module/dvb_loopback.c
 +++ b/contrib/sasc-ng/dvbloopback/module/dvb_loopback.c
 @@ -49,6 +49,7 @@
@@ -10,11 +8,9 @@ index 5299dbe..a8500dd 100644
  #include <linux/dvb/ca.h>
  #include <linux/dvb/frontend.h>
  #include <linux/dvb/version.h>
-diff --git a/contrib/sasc-ng/dvbloopback/module/dvblb_proc.c b/contrib/sasc-ng/dvbloopback/module/dvblb_proc.c
-index c78aa33..2c3637f 100644
 --- a/contrib/sasc-ng/dvbloopback/module/dvblb_proc.c
 +++ b/contrib/sasc-ng/dvbloopback/module/dvblb_proc.c
-@@ -23,14 +23,16 @@
+@@ -23,14 +23,17 @@
   */
  #include <linux/version.h>      /* >= 2.6.14 LINUX_VERSION_CODE */
  #include <linux/errno.h>
@@ -27,17 +23,16 @@ index c78aa33..2c3637f 100644
  #include "dvblb_internal.h"
  
  static struct proc_dir_entry *procdir;
--
-+/*
+ 
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
  static int dvblb_procfs_read(char *page, char **start, off_t off, int count,
                               int *eof, void *data)
  {
-@@ -41,7 +43,18 @@ static int dvblb_procfs_read(char *page, char **start, off_t off, int count,
+@@ -41,13 +44,36 @@
  	val = (lbdev->forward_dev) ? 1 : 0;
  	return sprintf(page, "%03d", val);
  }
--
-+*/
++#else
 +static int dvblb_procfs_read(struct seq_file *s, void* v)
 +{
 +	struct dvblb_devinfo *lbdev = s->private;
@@ -48,82 +43,41 @@ index c78aa33..2c3637f 100644
 +	seq_printf(s, "%03d", val);
 +        return 0;
 +}
-+/*
++#endif
+ 
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
  static int dvblb_procfs_write(struct file *file, const char *buffer,
                                unsigned long count, void *data)
  {
-@@ -95,7 +108,64 @@ static int dvblb_procfs_write(struct file *file, const char *buffer,
- 	}
- 	return count;
- }
--
-+*/
+ 	char str[10];
+ 	int val, v1, v2, v3, fm;
+ 	struct dvblb_devinfo *lbdev = (struct dvblb_devinfo *)data;
++#else
 +static ssize_t dvblb_procfs_write(struct file *file, const char *buffer,
 +                              size_t count, loff_t *pos)
 +{
 +        // TODO: maybe update *pos at end???
 +	char str[10];
 +	int val, v1, v2, v3, fm;
-+	//struct dvblb_devinfo *lbdev = (struct dvblb_devinfo *)data;
 +        struct seq_file *s = file->private_data;
 +        struct dvblb_devinfo* lbdev = s->private;
-+	if (lbdev == NULL)
-+		return count;
-+	if (lbdev->parent->link == -1)
-+		return count;
-+	if (count > 10)
-+		count = 10;
-+	if (copy_from_user(str, buffer, count)) {
-+		return -EFAULT;
-+	}
-+	val = simple_strtoul(str, NULL, 0);
-+	v1 = val /100;
-+	v2 = (val - v1*100) / 10;
-+	v3 = val - v1*100 - v2*10;
-+	if (v1 < 0 || v1 > 2) 
-+		return -EFAULT;
-+	if((fm = inuse_filemap(lbdev))) {
-+		int type = lbdev->lb_dev->type;
-+		printk("dvbloopback: Can't change forward on adapter%d."
-+		       " Device %s still has %d users!\n",
-+		       lbdev->parent->adapter.num, dnames[type], fm);
-+		return count;
-+	}
-+	if (v3 == 1) {
-+		struct list_head *entry;
-+		list_for_each (entry, lbdev->parent->adapter_ll) {
-+			struct dvb_adapter *adap;
-+			adap = list_entry (entry, struct dvb_adapter,
-+			                   list_head);
-+			if (adap->num == lbdev->parent->link) {
-+				struct list_head *entry0;
-+				list_for_each (entry0,
-+				               &adap->device_list) {
-+					struct dvb_device *dev;
-+					dev = list_entry (entry0,
-+					       struct dvb_device, list_head);
-+					if (dev->type == lbdev->lb_dev->type) {
-+						lbdev->forward_dev = dev;
-+						return count;
-+					}
-+				}
-+			}
-+		}
-+	} else if (v3 == 0) {
-+		lbdev->forward_dev = NULL;
-+	}
-+	return count;
-+}
-+/*
++#endif
+ 	if (lbdev == NULL)
+ 		return count;
+ 	if (lbdev->parent->link == -1)
+@@ -96,6 +122,7 @@
+ 	return count;
+ }
+ 
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
  static int dvblb_procfs_adapter_read(char *page, char **start, off_t off,
                                       int count, int *eof, void *data)
  {
-@@ -104,7 +174,16 @@ static int dvblb_procfs_adapter_read(char *page, char **start, off_t off,
+@@ -104,13 +131,34 @@
  		return 0;
  	return sprintf(page, "%d", dvblb->link);
  }
--
-+*/
++#else
 +static int dvblb_procfs_adapter_read(struct seq_file *s, void* v)
 +{
 +	struct dvblb *dvblb = s->private;
@@ -132,44 +86,16 @@ index c78aa33..2c3637f 100644
 +	seq_printf(s, "%d", dvblb->link);
 +        return 0;
 +}
-+/*
++#endif
+ 
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
  static int dvblb_procfs_adapter_write(struct file *file, const char *buffer,
                                        unsigned long count, void *data)
  {
-@@ -121,6 +200,54 @@ static int dvblb_procfs_adapter_write(struct file *file, const char *buffer,
- 	val = simple_strtol(str, NULL, 0);
- 
- 	if(val == -999) {
-+		//This is a debug case.  Try to force close all open fds
-+		//This is known not to be very reliable, but better than
-+		//nothing
-+		
-+		for(i = 0; i < DVBLB_NUM_DEVS; i++) {
-+			while((fm = inuse_filemap(&dvbdev->devinfo[i]))) {
-+				filp_close(dvbdev->devinfo[i].dbgfilemap[fm],
-+				           NULL);
-+				dvbdev->devinfo[i].filemap[fm] = NULL;
-+			}
-+		}
-+		return count;
-+	}
-+	for(i = 0; i < DVBLB_NUM_DEVS; i++) {
-+		if(dvbdev->devinfo[i].forward_dev == NULL)
-+			continue;
-+		if((fm = inuse_filemap(&dvbdev->devinfo[i]))) {
-+			int type = dvbdev->devinfo[i].lb_dev->type;
-+			printk("dvbloopback: Can't change forward on adapter%d."
-+			       " Device %s still has %d users!\n",
-+			       dvbdev->adapter.num, dnames[type], fm);
-+			return count;
-+		}
-+	}
-+	for(i = 0; i < DVBLB_NUM_DEVS; i++)
-+		dvbdev->devinfo[i].forward_dev = NULL;
-+	dvbdev->link = val;
-+	return count;
-+}
-+*/
+ 	char str[10];
+ 	int val, i, fm;
+ 	struct dvblb *dvbdev = (struct dvblb *)data;
++#else
 +static ssize_t dvblb_procfs_adapter_write(struct file *file, const char *buffer,
 +                              size_t count, loff_t *pos)
 +{
@@ -178,37 +104,32 @@ index c78aa33..2c3637f 100644
 +	int val, i, fm;
 +        struct seq_file *s = file->private_data;
 +        struct dvblb* dvbdev = s->private;
-+	if (dvbdev == NULL)
-+		return count;
-+	if (count > 10)
-+		count = 10;
-+	if (copy_from_user(str, buffer, count)) {
-+		return -EFAULT;
-+	}
-+	val = simple_strtol(str, NULL, 0);
-+
-+	if(val == -999) {
- 		/*This is a debug case.  Try to force close all open fds
- 		  This is known not to be very reliable, but better than
- 		  nothing
-@@ -154,31 +281,47 @@ static int dvblb_procfs_adapter_write(struct file *file, const char *buffer,
++#endif
+ 	if (dvbdev == NULL)
+ 		return count;
+ 	if (count > 10)
+@@ -154,31 +202,71 @@
  int dvblb_remove_procfs(struct proc_dir_entry *pdir,
                          struct proc_dir_entry *parent)
  {
--	char name[20];
--	memcpy(name, pdir->name, pdir->namelen);
--	name[pdir->namelen] = '\0';
--	// printk("Removing proc: %s\n", name);
--	remove_proc_entry(name, parent);
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
+ 	char name[20];
+ 	memcpy(name, pdir->name, pdir->namelen);
+ 	name[pdir->namelen] = '\0';
+ 	// printk("Removing proc: %s\n", name);
+ 	remove_proc_entry(name, parent);
++#else
 +	proc_remove(pdir);
++#endif
  	return 0;
  }
  EXPORT_SYMBOL(dvblb_remove_procfs);
  
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
 +static int dvblb_procfs_open(struct inode *inode, struct file *filep)
 +{
-+    return single_open(filep, dvblb_procfs_read, PDE_DATA(inode)); 
-+} 
++    return single_open(filep, dvblb_procfs_read, PDE_DATA(inode));
++}
 +
 +static const struct file_operations dvblb_procfs_fops = {
 +    .owner      = THIS_MODULE,
@@ -217,32 +138,39 @@ index c78aa33..2c3637f 100644
 +    .write      = dvblb_procfs_write,
 +    .release    = single_release,
 +};
++#endif
 +
  int dvblb_init_procfs_device(struct dvblb *dvblb, struct dvblb_devinfo *lbdev)
  {
 -	int type = lbdev->lb_dev->type;
--	lbdev->procfile = create_proc_entry(dnames[type], 0644, dvblb->procdir);
++        int type = lbdev->lb_dev->type;
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
+ 	lbdev->procfile = create_proc_entry(dnames[type], 0644, dvblb->procdir);
 -	if (lbdev->procfile == NULL)
 -		return -ENOMEM;
--	lbdev->procfile->data = lbdev;
--	lbdev->procfile->read_proc = dvblb_procfs_read;
--	lbdev->procfile->write_proc = dvblb_procfs_write;
--#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
--	lbdev->procfile->owner = THIS_MODULE;
--#endif
--	return 0;
-+        int type = lbdev->lb_dev->type;
++#else
 +        lbdev->procfile = proc_create_data(dnames[type], 0644, dvblb->procdir, &dvblb_procfs_fops, lbdev);
++#endif
 +        if (lbdev->procfile == NULL)
 +                return -ENOMEM;
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
+ 	lbdev->procfile->data = lbdev;
+ 	lbdev->procfile->read_proc = dvblb_procfs_read;
+ 	lbdev->procfile->write_proc = dvblb_procfs_write;
++#endif
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
+ 	lbdev->procfile->owner = THIS_MODULE;
+ #endif
+-	return 0;
 +        return 0;
  }
  EXPORT_SYMBOL(dvblb_init_procfs_device);
  
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
 +static int dvblb_procfs_adapter_open(struct inode *inode, struct file *filep)
 +{
-+    return single_open(filep, dvblb_procfs_adapter_read, PDE_DATA(inode)); 
-+} 
++    return single_open(filep, dvblb_procfs_adapter_read, PDE_DATA(inode));
++}
 +
 +static const struct file_operations dvblb_procfs_adapter_fops = {
 +    .owner      = THIS_MODULE,
@@ -251,30 +179,29 @@ index c78aa33..2c3637f 100644
 +    .write      = dvblb_procfs_adapter_write,
 +    .release    = single_release,
 +};
++#endif
 +
  int dvblb_init_procfs_adapter(struct dvblb *dvblb)
  {
  	char name[10];
-@@ -186,20 +329,12 @@ int dvblb_init_procfs_adapter(struct dvblb *dvblb)
- 	dvblb->procdir = proc_mkdir(name, procdir);
- 	if (dvblb->procdir == NULL)
- 		return -ENOMEM;
--#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
--	dvblb->procdir->owner = THIS_MODULE;
--#endif
--	dvblb->procfile = create_proc_entry("adapter", 0644, dvblb->procdir);
-+	//dvblb->procfile = create_proc_entry("adapter", 0644, dvblb->procdir);
+@@ -189,14 +277,20 @@
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
+ 	dvblb->procdir->owner = THIS_MODULE;
+ #endif
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
+ 	dvblb->procfile = create_proc_entry("adapter", 0644, dvblb->procdir);
++#else
 +        dvblb->procfile = proc_create_data("adapter", 0644, dvblb->procdir, &dvblb_procfs_adapter_fops, dvblb);
++#endif
  	if (dvblb->procfile == NULL) {
  		dvblb_remove_procfs(dvblb->procdir, procdir);
  		return -ENOMEM;
  	}
--	dvblb->procfile->data = dvblb;
--	dvblb->procfile->read_proc = dvblb_procfs_adapter_read;
--	dvblb->procfile->write_proc = dvblb_procfs_adapter_write;
--#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
--	dvblb->procfile->owner = THIS_MODULE;
--#endif
- 	dvblb->init |= DVBLB_STATUS_PROC;
- 
- 	return 0;
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
+ 	dvblb->procfile->data = dvblb;
+ 	dvblb->procfile->read_proc = dvblb_procfs_adapter_read;
+ 	dvblb->procfile->write_proc = dvblb_procfs_adapter_write;
++#endif
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
+ 	dvblb->procfile->owner = THIS_MODULE;
+ #endif
diff --git a/debian/rules b/debian/rules
index b91e5bb..fe85f37 100755
--- a/debian/rules
+++ b/debian/rules
@@ -67,13 +67,21 @@ build_sasc_%:
 build_kernel_%:
 	VERSION="$*"; \
 	KERNEL=$${VERSION#*_}; \
-	SHORT_KERNEL=$$( echo $${KERNEL} | grep -o '[[:digit:]]\+\.[[:digit:]]\+' ); \
-	KERNEL_TARBALL=/usr/src/linux-source-$${SHORT_KERNEL}.tar.xz; \
-	BUILD_DIR=/lib/modules/$${KERNEL}/build; \
 	echo "Building patched dvb-core module for kernel $${KERNEL}"; \
+	BUILD_DIR=/lib/modules/$${KERNEL}/build; \
+	SHORT_KERNEL=$$( echo $${KERNEL} | grep -o '[[:digit:]]\+\.[[:digit:]]\+' ); \
 	tmpdir=$(CURDIR)/debian/tmp-$${SHORT_KERNEL}; \
 	mkdir -p $$tmpdir; \
+	FIRST_KERNEL_DIGIT=$$(echo $${SHORT_KERNEL} | grep -o '^[[:digit:]]\+'); \
+	SECOND_KERNEL_DIGIT=$$(echo $${SHORT_KERNEL} | grep -o '[[:digit:]]\+$$'); \
+	XZ_KERNEL=$$(($${FIRST_KERNEL_DIGIT}>=3 && $${SECOND_KERNEL_DIGIT}>=10)); \
+        if [ $${XZ_KERNEL} -eq 1 ]; then \
+	KERNEL_TARBALL=/usr/src/linux-source-$${SHORT_KERNEL}.tar.xz; \
 	tar xJf $${KERNEL_TARBALL} -C $${tmpdir} --strip-components 4 linux-source-$${SHORT_KERNEL}/drivers/media/dvb-core/; \
+        else \
+	KERNEL_TARBALL=/usr/src/linux-source-$${SHORT_KERNEL}.tar.bz2; \
+	tar xjf $${KERNEL_TARBALL} -C $${tmpdir} --strip-components 5 linux-source-$${SHORT_KERNEL}/drivers/media/dvb/dvb-core/; \
+        fi; \
 	patch -p4 -d $${tmpdir} < $(CURDIR)/debian/linux-3.7.1-dvb-mutex.patch; \
 	make -C $${BUILD_DIR} M=$${tmpdir} modules; \
 	mkdir -p $(CURDIR)/debian/tmp/$$KERNEL/module-updates; \
diff --git a/debian/rules.defs b/debian/rules.defs
index bd4a10e..78a422b 100644
--- a/debian/rules.defs
+++ b/debian/rules.defs
@@ -1,4 +1,5 @@
-KERNELS = 3.10-2-amd64
+KERNELS = 3.2.0-4-amd64 3.10-2-amd64
+KERNEL_VERSION_3.2.0-4-amd64 = 3.2.46-1
 KERNEL_VERSION_3.10-2-amd64 = 3.10.7-1
 
 FFDECSA_FLAVORS = core2 athlon64 atom corei5