From: Jan-Pascal van Best 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^0 X-Git-Url: http://www.vanbest.org/gitweb/?a=commitdiff_plain;h=8b86eab587f402c2387097d305a247c443ca18db;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 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 Mon, 19 Aug 2013 10:07:09 +0200 + -- Jan-Pascal van Best 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 #include #include -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 /* >= 2.6.14 LINUX_VERSION_CODE */ #include @@ -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