From 08afd3c508cfcfdaad5032e44e1ff8fc5c5c1151 Mon Sep 17 00:00:00 2001 From: Jan-Pascal van Best Date: Fri, 25 Jan 2013 13:34:56 +0100 Subject: [PATCH] Adding build rules for specific packages --- debian/config.mak-sse2 | 1 - debian/control.md5sum | 5 +- debian/includes/3.2.0-4-amd64/dvbdev.h | 172 ++++++++++++++++++ .../{3.7.1 => 3.7-trunk-amd64}/dvbdev.h | 0 debian/rules | 35 +++- debian/rules.defs | 2 +- debian/sasc-ng-3.2.0-4-amd64-sse2.install | 6 +- debian/sasc-ng-3.7-trunk-amd64-sse2.install | 6 +- debian/sasc-ng.install.in | 6 +- 9 files changed, 213 insertions(+), 20 deletions(-) create mode 100644 debian/includes/3.2.0-4-amd64/dvbdev.h rename debian/includes/{3.7.1 => 3.7-trunk-amd64}/dvbdev.h (100%) diff --git a/debian/config.mak-sse2 b/debian/config.mak-sse2 index b0fc3a5..68e8257 100644 --- a/debian/config.mak-sse2 +++ b/debian/config.mak-sse2 @@ -1,5 +1,4 @@ # Automatically generated by configure - do not modify FFDECSA_OPTS = "FLAGS=-O3 -fexpensive-optimizations -funroll-loops -mmmx -msse -msse2 -march=native" PARALLEL_MODE=PARALLEL_128_SSE2 COMPILER=g++ -#DVB_DIR=/home/janpascal/src/tmp/linux/linux-3.7.1 DVB_DIR=#DVB_DIR# CXX=g++ diff --git a/debian/control.md5sum b/debian/control.md5sum index fd2d2c8..480d99e 100644 --- a/debian/control.md5sum +++ b/debian/control.md5sum @@ -1,5 +1,6 @@ 98e40a12c40e8d3088ca0f4457b4a198 debian/control 4004570ed61be152549b6ddc265948aa debian/control.source ef99cebba74aa8d065cd6af017ddb205 debian/control.flavor -182b135392172e7230f4e370c5ac134a debian/rules -9ed618ee077b893024bcd140756b2754 debian/rules.defs +2caf747fbe7d4c0c4fae1b80213bddd9 debian/rules +4e1c124c6a321523be4eadb07c358f4a debian/rules.defs +086aaa0862d6ebe62bd0b5547c8810af debian/sasc-ng.install.in diff --git a/debian/includes/3.2.0-4-amd64/dvbdev.h b/debian/includes/3.2.0-4-amd64/dvbdev.h new file mode 100644 index 0000000..fcc6ae9 --- /dev/null +++ b/debian/includes/3.2.0-4-amd64/dvbdev.h @@ -0,0 +1,172 @@ +/* + * dvbdev.h + * + * Copyright (C) 2000 Ralph Metzler & Marcus Metzler + * for convergence integrated media GmbH + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Lesser Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#ifndef _DVBDEV_H_ +#define _DVBDEV_H_ + +#include +#include +#include +#include + +#define DVB_MAJOR 212 + +#if defined(CONFIG_DVB_MAX_ADAPTERS) && CONFIG_DVB_MAX_ADAPTERS > 0 + #define DVB_MAX_ADAPTERS CONFIG_DVB_MAX_ADAPTERS +#else + #define DVB_MAX_ADAPTERS 8 +#endif + +#define DVB_UNSET (-1) + +#define DVB_DEVICE_VIDEO 0 +#define DVB_DEVICE_AUDIO 1 +#define DVB_DEVICE_SEC 2 +#define DVB_DEVICE_FRONTEND 3 +#define DVB_DEVICE_DEMUX 4 +#define DVB_DEVICE_DVR 5 +#define DVB_DEVICE_CA 6 +#define DVB_DEVICE_NET 7 +#define DVB_DEVICE_OSD 8 + +#define DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr) \ + static short adapter_nr[] = \ + {[0 ... (DVB_MAX_ADAPTERS - 1)] = DVB_UNSET }; \ + module_param_array(adapter_nr, short, NULL, 0444); \ + MODULE_PARM_DESC(adapter_nr, "DVB adapter numbers") + +struct dvb_frontend; + +struct dvb_adapter { + int num; + struct list_head list_head; + struct list_head device_list; + const char *name; + u8 proposed_mac [6]; + void* priv; + + struct device *device; + + struct module *module; + + int mfe_shared; /* indicates mutually exclusive frontends */ + struct dvb_device *mfe_dvbdev; /* frontend device in use */ + struct mutex mfe_lock; /* access lock for thread creation */ + + /* Allow the adapter/bridge driver to perform an action before and/or + * after the core handles an ioctl: + * + * DVB_FE_IOCTL_PRE indicates that the ioctl has not yet been handled. + * DVB_FE_IOCTL_POST indicates that the ioctl has been handled. + * + * When DVB_FE_IOCTL_PRE is passed to the callback as the stage arg: + * + * return 0 to allow dvb-core to handle the ioctl. + * return a positive int to prevent dvb-core from handling the ioctl, + * and exit without error. + * return a negative int to prevent dvb-core from handling the ioctl, + * and return that value as an error. + * + * When DVB_FE_IOCTL_POST is passed to the callback as the stage arg: + * + * return 0 to allow the dvb_frontend ioctl handler to exit normally. + * return a negative int to cause the dvb_frontend ioctl handler to + * return that value as an error. + */ +#define DVB_FE_IOCTL_PRE 0 +#define DVB_FE_IOCTL_POST 1 + int (*fe_ioctl_override)(struct dvb_frontend *fe, + unsigned int cmd, void *parg, + unsigned int stage); +}; + + +struct dvb_device { + struct list_head list_head; + const struct file_operations *fops; + struct dvb_adapter *adapter; + int type; + int minor; + u32 id; + + /* in theory, 'users' can vanish now, + but I don't want to change too much now... */ + int readers; + int writers; + int users; + + wait_queue_head_t wait_queue; + /* don't really need those !? -- FIXME: use video_usercopy */ + int (*kernel_ioctl)(struct file *file, unsigned int cmd, void *arg); + + void *priv; +}; + + +extern int dvb_register_adapter(struct dvb_adapter *adap, const char *name, + struct module *module, struct device *device, + short *adapter_nums); +extern int dvb_unregister_adapter (struct dvb_adapter *adap); + +extern int dvb_register_device (struct dvb_adapter *adap, + struct dvb_device **pdvbdev, + const struct dvb_device *template, + void *priv, + int type); + +extern void dvb_unregister_device (struct dvb_device *dvbdev); + +extern int dvb_generic_open (struct inode *inode, struct file *file); +extern int dvb_generic_release (struct inode *inode, struct file *file); +extern long dvb_generic_ioctl (struct file *file, + unsigned int cmd, unsigned long arg); + +/* we don't mess with video_usercopy() any more, +we simply define out own dvb_usercopy(), which will hopefully become +generic_usercopy() someday... */ + +extern int dvb_usercopy(struct file *file, unsigned int cmd, unsigned long arg, + int (*func)(struct file *file, unsigned int cmd, void *arg)); + +/** generic DVB attach function. */ +#ifdef CONFIG_MEDIA_ATTACH +#define dvb_attach(FUNCTION, ARGS...) ({ \ + void *__r = NULL; \ + typeof(&FUNCTION) __a = symbol_request(FUNCTION); \ + if (__a) { \ + __r = (void *) __a(ARGS); \ + if (__r == NULL) \ + symbol_put(FUNCTION); \ + } else { \ + printk(KERN_ERR "DVB: Unable to find symbol "#FUNCTION"()\n"); \ + } \ + __r; \ +}) + +#else +#define dvb_attach(FUNCTION, ARGS...) ({ \ + FUNCTION(ARGS); \ +}) + +#endif + +#endif /* #ifndef _DVBDEV_H_ */ diff --git a/debian/includes/3.7.1/dvbdev.h b/debian/includes/3.7-trunk-amd64/dvbdev.h similarity index 100% rename from debian/includes/3.7.1/dvbdev.h rename to debian/includes/3.7-trunk-amd64/dvbdev.h diff --git a/debian/rules b/debian/rules index dcd379b..b72e4d1 100755 --- a/debian/rules +++ b/debian/rules @@ -2,6 +2,8 @@ include debian/rules.defs +SHELL := /bin/bash + #kernel_name = "3.7-trunk-amd64" #kernel_version = "3.7.1-1~experimental.2.sasc1" @@ -19,21 +21,39 @@ TMP = $(CURDIR)/debian/$(PACKAGE) %: dh $@ -override_dh_gencontrol: - dh_gencontrol -- $(SUBSTVARS) +#override_dh_gencontrol: +# dh_gencontrol -- $(SUBSTVARS) override_dh_auto_configure: #cd contrib/sasc-ng; ./configure --dvb-dir=$(DVB_DIR) #cp debian/config.mak-sse2 contrib/sasc-ng/config.mak - sed -e "s|#DVB_DIR#|$(CURDIR)/debian/includes/3.7.1/|" < debian/config.mak-sse2 > contrib/sasc-ng/config.mak + #sed -e "s|#DVB_DIR#|$(CURDIR)/debian/includes/3.7.1/|" < debian/config.mak-sse2 > contrib/sasc-ng/config.mak override_dh_auto_clean: cd contrib/sasc-ng; if [ -r config.mak ]; then make clean module_clean; fi + #rm -rf debian/tmp override_dh_auto_build: - cd contrib/sasc-ng; make module; make - -override_dh_auto_install: + #cd contrib/sasc-ng; make module; make + +# build_(kernel)_(flavor), e.g. build_3.7.trunk-amd64_sse2 +build_%: + VERSION="$*"; \ + FLAVOR=$${VERSION#*_}; \ + KERNEL=$${VERSION/_$$FLAVOR/}; \ + sed -e "s|#DVB_DIR#|$(CURDIR)/debian/includes/$$KERNEL/|" < debian/config.mak-$$FLAVOR > contrib/sasc-ng/config.mak; \ + echo "Building $$VERSION - $$FLAVOR"; \ + cd contrib/sasc-ng; \ + make module; \ + make; \ + mkdir -p $(CURDIR)/debian/tmp/$$KERNEL-$$FLAVOR/bin; \ + mkdir -p $(CURDIR)/debian/tmp/$$KERNEL-$$FLAVOR/modules; \ + mkdir -p $(CURDIR)/debian/tmp/$$KERNEL-$$FLAVOR/lib; \ + install -m0755 sasc-ng $(CURDIR)/debian/tmp/$$KERNEL-$$FLAVOR/bin/; \ + install -m0644 dvbloopback.ko $(CURDIR)/debian/tmp/$$KERNEL-$$FLAVOR/modules; \ + install -m0644 sc/PLUGINS/lib/* $(CURDIR)/debian/tmp/$$KERNEL-$$FLAVOR/lib/ + +override_dh_auto_install: $(foreach kernel,$(KERNELS),$(foreach flav,$(FFDECSA_FLAVORS),build_$(kernel)_$(flav))) # use package.install instead #mkdir -p $(TMP)/usr/bin #mkdir -p $(TMP)/lib/modules/$(kernel_name)/misc @@ -42,7 +62,7 @@ override_dh_auto_install: #install -m0644 contrib/sasc-ng/dvbloopback.ko $(TMP)/lib/modules/$(kernel_name)/misc #install -m0644 contrib/sasc-ng/sc/PLUGINS/lib/* $(TMP)/usr/lib/ -CONTROL_FILES = debian/control.source debian/control.flavor debian/rules debian/rules.defs +CONTROL_FILES = debian/control.source debian/control.flavor debian/rules debian/rules.defs debian/sasc-ng.install.in comma = , debian/control: $(CONTROL_FILES) @@ -68,6 +88,7 @@ endef # call with $1 = kernel version, $2 = flavor define create-flavor-install sed -e 's/#KERNEL#/$1/g' \ + -e 's/#FLAVOR#/$2/g' \ debian/sasc-ng.install.in > debian/sasc-ng-$1-$2.install endef diff --git a/debian/rules.defs b/debian/rules.defs index 7d29956..5dbe76f 100644 --- a/debian/rules.defs +++ b/debian/rules.defs @@ -2,7 +2,7 @@ KERNELS = 3.7-trunk-amd64 3.2.0-4-amd64 KERNEL_VERSION_3.7-trunk-amd64 = 3.7.1-1~experimental.2.sasc1 KERNEL_VERSION_3.2.0-4-amd64 = 3.2.35-2 -FFDECSA_FLAVORS = sse2 #sse +FFDECSA_FLAVORS = sse2 #sse # For the moment we just support amd64 #KERNEL_FLAVORS_i386_$(DEFAULT) += 486 diff --git a/debian/sasc-ng-3.2.0-4-amd64-sse2.install b/debian/sasc-ng-3.2.0-4-amd64-sse2.install index 671c60e..59bb3d2 100644 --- a/debian/sasc-ng-3.2.0-4-amd64-sse2.install +++ b/debian/sasc-ng-3.2.0-4-amd64-sse2.install @@ -1,3 +1,3 @@ -contrib/sasc-ng/sasc-ng /usr/bin/ -contrib/sasc-ng/dvbloopback.ko /lib/modules/3.2.0-4-amd64/misc -contrib/sasc-ng/sc/PLUGINS/lib/* /usr/lib/ +debian/tmp/3.2.0-4-amd64-sse2/bin/* /usr/bin/ +debian/tmp/3.2.0-4-amd64-sse2/modules/* /lib/modules/3.2.0-4-amd64/misc +debian/tmp/3.2.0-4-amd64-sse2/lib/* /usr/lib/ diff --git a/debian/sasc-ng-3.7-trunk-amd64-sse2.install b/debian/sasc-ng-3.7-trunk-amd64-sse2.install index b2a3a61..c7fc012 100644 --- a/debian/sasc-ng-3.7-trunk-amd64-sse2.install +++ b/debian/sasc-ng-3.7-trunk-amd64-sse2.install @@ -1,3 +1,3 @@ -contrib/sasc-ng/sasc-ng /usr/bin/ -contrib/sasc-ng/dvbloopback.ko /lib/modules/3.7-trunk-amd64/misc -contrib/sasc-ng/sc/PLUGINS/lib/* /usr/lib/ +debian/tmp/3.7-trunk-amd64-sse2/bin/* /usr/bin/ +debian/tmp/3.7-trunk-amd64-sse2/modules/* /lib/modules/3.7-trunk-amd64/misc +debian/tmp/3.7-trunk-amd64-sse2/lib/* /usr/lib/ diff --git a/debian/sasc-ng.install.in b/debian/sasc-ng.install.in index 66fe38d..290958d 100644 --- a/debian/sasc-ng.install.in +++ b/debian/sasc-ng.install.in @@ -1,3 +1,3 @@ -contrib/sasc-ng/sasc-ng /usr/bin/ -contrib/sasc-ng/dvbloopback.ko /lib/modules/#KERNEL#/misc -contrib/sasc-ng/sc/PLUGINS/lib/* /usr/lib/ +debian/tmp/#KERNEL#-#FLAVOR#/bin/* /usr/bin/ +debian/tmp/#KERNEL#-#FLAVOR#/modules/* /lib/modules/#KERNEL#/misc +debian/tmp/#KERNEL#-#FLAVOR#/lib/* /usr/lib/ -- 2.39.5