On Tue, 2011-12-13 at 18:32 +0000, أحمد المحمودي (Ahmed
El-Mahmoudy) wrote:
> Source: sl-modem
> Source-Version: 2.9.11~20110321-5
> 
> We believe that the bug you reported is fixed in the latest version of
> sl-modem, which is due to be installed in the Debian FTP archive:

Sorry, no it isn't.  You have to test for CONFIG_X86_32 inside of
Kbuild, and you can't use uname for this anywhere.  Really, the Makefile
needs a thorough cleanup.

Also, building for a 64-bit kernel will still fail since DKMS is
configured to expect all 3 modules to be built. 

I've attached a debdiff that seems to fix all of this.  Feel free to
reword and cherry-pick from the patches.

Ben.

-- 
Ben Hutchings
Computers are not intelligent.  They only think they are.
diff -Nru sl-modem-2.9.11~20110321/debian/changelog sl-modem-2.9.11~20110321/debian/changelog
--- sl-modem-2.9.11~20110321/debian/changelog	2011-12-13 18:22:29.000000000 +0000
+++ sl-modem-2.9.11~20110321/debian/changelog	2011-12-14 04:26:26.000000000 +0000
@@ -1,3 +1,16 @@
+sl-modem (2.9.11~20110321-5.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Clean up driver makefile (remove_linux-2.4.diff, simplify_kernel_ver.diff;
+    replacing 01_Makefile.diff, support_linux3.diff)
+  * Remove obsolete kernel version check for USB support
+    (remove_usb_kernel_ver_check.diff)
+  * Change arch64.diff to fix the architecture detection logic properly
+    (Closes: #651780)
+  * Configure DKMS to install slamr.ko only on x86 32-bit kernels
+
+ -- Ben Hutchings <[email protected]>  Wed, 14 Dec 2011 03:35:34 +0000
+
 sl-modem (2.9.11~20110321-5) unstable; urgency=low
 
   * Added Brazilian Portuguese debconf templates translation (Closes: #648844)
diff -Nru sl-modem-2.9.11~20110321/debian/patches/01_Makefile.diff sl-modem-2.9.11~20110321/debian/patches/01_Makefile.diff
--- sl-modem-2.9.11~20110321/debian/patches/01_Makefile.diff	2011-12-13 18:22:29.000000000 +0000
+++ sl-modem-2.9.11~20110321/debian/patches/01_Makefile.diff	1970-01-01 01:00:00.000000000 +0100
@@ -1,57 +0,0 @@
-Cleanup to not loose the user-specified version string and blindly try include 
-modversions.h
-By: Eduard Bloch <[email protected]>
-Index: sl-modem-2.9.11~20090222/Makefile
-===================================================================
---- sl-modem-2.9.11~20090222.orig/Makefile	2008-03-29 14:04:16.000000000 +0200
-+++ sl-modem-2.9.11~20090222/Makefile	2009-02-26 08:37:16.000000000 +0200
-@@ -13,11 +13,15 @@
- #
- ###########################################################################
- 
--KERNEL_DIR:=/lib/modules/$(shell uname -r)/build
-+KERNEL_DIR?=/lib/modules/$(shell uname -r)/build
- 
- # tools
- INSTALL:=install
--
-+# Definitions
-+MODULES_DIR  = /lib/modules/$(KVERS)/misc
-+MODEM_DEV   := ttySL0
-+MODEM_LINK  := modem
-+MODULES_CONF:= /etc/modules.conf
- all: modem
- 
- modem:
-Index: sl-modem-2.9.11~20090222/drivers/Makefile
-===================================================================
---- sl-modem-2.9.11~20090222.orig/drivers/Makefile	2009-02-23 00:20:58.000000000 +0200
-+++ sl-modem-2.9.11~20090222/drivers/Makefile	2009-02-26 08:37:16.000000000 +0200
-@@ -45,8 +45,14 @@
- ifndef KERNELRELEASE
- ifndef KERNEL_VER
- 
-+
-+KVERS?=$(shell ./kernel-ver)
-+
-+
-+
- all install uninstall: kernel-ver
--	$(MAKE) $@ KERNEL_VER=$(shell ./kernel-ver)
-+	$(MAKE) $@ KERNEL_VER=$(KVERS)
-+#	$(MAKE) $@ KERNEL_VER=$(shell ./kernel-ver)
- 
- install: install-devices
- uninstall: remove-devices
-@@ -80,9 +86,9 @@
- 
- slusb-objs:= old_st7554.o
- obj:=.
--module-dir:=${DESTDIR}/lib/modules/$(KERNEL_VER)/misc
-+module-dir ?= ${DESTDIR}/lib/modules/$(KERNEL_VER)/misc
- 
--CFLAGS:= -Wall -pipe -O3 -fomit-frame-pointer -D__KERNEL__ -DMODULE -DEXPORT_SYMTAB -DMODVERSIONS --include $(KERNEL_DIR)/include/linux/modversions.h -I$(KERNEL_DIR)/include $(FOUND_CLASS_SIMPLE)
-+CFLAGS:= -Wall -pipe -O3 -fomit-frame-pointer -D__KERNEL__ -DMODULE -DEXPORT_SYMTAB `test -f $(KERNEL_DIR)/include/linux/modversions.h && echo -DMODVERSIONS --include $(KERNEL_DIR)/include/linux/modversions.h -I$(KERNEL_DIR)/include` $(FOUND_CLASS_SIMPLE)
- 
- all: $(obj-m)
- 
diff -Nru sl-modem-2.9.11~20110321/debian/patches/arch64.diff sl-modem-2.9.11~20110321/debian/patches/arch64.diff
--- sl-modem-2.9.11~20110321/debian/patches/arch64.diff	2011-12-13 18:22:29.000000000 +0000
+++ sl-modem-2.9.11~20110321/debian/patches/arch64.diff	2011-12-14 03:50:30.000000000 +0000
@@ -1,18 +1,47 @@
-Description: Better arch detection logic
-Author: أحمد المحمودي (Ahmed El-Mahmoudy) <[email protected]>
+Description: Better arch detection logic.
+ Within Kbuild, test CONFIG_X86_32.  Outside, don't assume we can tell.
+ Use the modules_install rule to avoid needing to know.
+Author: Ben Hutchings <[email protected]>
 Bug-Debian: http://bugs.debian.org/651780
-Forwarded: yes
+
 --- a/drivers/Makefile
 +++ b/drivers/Makefile
-@@ -28,7 +28,11 @@
+@@ -25,9 +25,7 @@
  
  EXTRA_CFLAGS = -I$(obj) -I$(obj)/../modem $(FOUND_CLASS_SIMPLE)
  
+-ARCH64:=$(shell uname -m | sed -e '/amd64/s//x86_64/' | grep -c x86_64)
+-
+-ifeq ($(ARCH64), 0)
 +ifdef CONFIG_X86_32
-+ARCH64:=0
-+else
- ARCH64:=$(shell uname -m | sed -e '/amd64/s//x86_64/' | grep -c x86_64)
-+endif
- 
- ifeq ($(ARCH64), 0)
  obj-m:= slamr.o 
+ endif
+ 
+@@ -53,11 +51,8 @@
+ 	@echo "	finished all:"
+ 
+ install:
+-ifeq ($(ARCH64), 0)
+-	install -D -m 644 slamr.ko $(module-dir)/slamr.ko
+-endif
+-	install -D -m 644 slusb.ko $(module-dir)/slusb.ko
+-	/sbin/depmod -a
++	$(MAKE) modules_install -C $(KERNEL_DIR) SUBDIRS=$(shell pwd) \
++		INSTALL_MOD_PATH=$(DESTDIR)
+ 	mkdir -p ${DESTDIR}/dev
+ 	$(foreach minor,0 1 2 3, \
+ 	    mknod -m 600 ${DESTDIR}/dev/slamr$(minor) c 242 $(minor) ; ) echo -n
+@@ -65,11 +60,9 @@
+ 	    mknod -m 600 ${DESTDIR}/dev/slusb$(minor) c 243 $(minor) ; ) echo -n
+ 
+ uninstall:
+-ifeq ($(ARCH64), 0)
+-	modprobe -r slamr ; echo -n
+-endif
++	modprobe -qr slamr ; echo -n
+ 	modprobe -r slusb ; echo -n
+-	$(RM) $(module-dir)/slamr.ko
++	$(RM) -f $(module-dir)/slamr.ko
+ 	$(RM) $(module-dir)/slusb.ko
+ 	/sbin/depmod -a
+ 	$(foreach minor,0 1 2 3, \
diff -Nru sl-modem-2.9.11~20110321/debian/patches/remove_linux-2.4.diff sl-modem-2.9.11~20110321/debian/patches/remove_linux-2.4.diff
--- sl-modem-2.9.11~20110321/debian/patches/remove_linux-2.4.diff	1970-01-01 01:00:00.000000000 +0100
+++ sl-modem-2.9.11~20110321/debian/patches/remove_linux-2.4.diff	2011-12-14 03:50:38.000000000 +0000
@@ -0,0 +1,63 @@
+Description: Remove obsolete support for Linux 2.4.  This is just clutter now.
+Author: Ben Hutchings <[email protected]>
+
+--- a/drivers/Makefile
++++ b/drivers/Makefile
+@@ -76,49 +76,6 @@
+ 	    $(RM) ${DESTDIR}/dev/slusb$(minor) ; ) echo -n
+ 
+ else
+-ifeq ($(shell grep 'UTS.*"2\.6' $(KERNEL_DIR)/include/generated/utsrelease.h $(KERNEL_DIR)/include/linux/utsrelease.h $(KERNEL_DIR)/include/linux/version.h 2>/dev/null),)
+-
+-slusb-objs:= old_st7554.o
+-obj:=.
+-module-dir:=${DESTDIR}/lib/modules/$(KERNEL_VER)/misc
+-
+-CFLAGS:= -Wall -pipe -O3 -fomit-frame-pointer -D__KERNEL__ -DMODULE -DEXPORT_SYMTAB -DMODVERSIONS --include $(KERNEL_DIR)/include/linux/modversions.h -I$(KERNEL_DIR)/include $(FOUND_CLASS_SIMPLE)
+-
+-all: $(obj-m)
+-
+-slamr.o: $(slamr-objs)
+-slusb.o: $(slusb-objs)
+-slamr.o slusb.o:
+-	$(LD) -r -o $@ $^
+-
+-install: uninstall-old
+-ifeq ($(ARCH64), 0)
+-	install -D -m 644 slamr.o $(module-dir)/slamr.o
+-endif
+-	install -D -m 644 slusb.o $(module-dir)/slusb.o
+-	cp /etc/modules.conf /etc/modules.conf.slamr && \
+-	    echo 'alias char-major-242 slamr' >> /etc/modules.conf && \
+-	    echo 'alias char-major-243 slusb' >> /etc/modules.conf 
+-	/sbin/depmod -a
+-uninstall:
+-	/sbin/modprobe -r slamr slusb
+-	cp /etc/modules.conf /etc/modules.conf.slamr && \
+-	   egrep -ve 'alias char-major-242 slamr|alias char-major-243 slusb' /etc/modules.conf.slamr > /etc/modules.conf
+-	$(RM) $(module-dir)/slamr.o
+-	$(RM) $(module-dir)/slusb.o
+-	/sbin/depmod -a
+-uninstall-old:
+-	$(RM) $(module-dir)/slmdm.o \
+-              $(module-dir)/slfax.o \
+-              $(module-dir)/slusb.o \
+-              $(module-dir)/slamrmo.o \
+-              $(module-dir)/slmodem.o  # remove old 2.7,2.8 version
+-
+-%.o: %.c
+-	@echo "	doing %.o: %.c"
+-	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$@) -o $@ -c $<
+-
+-else
+ 
+ module-dir:=${DESTDIR}/lib/modules/$(KERNEL_VER)/extra
+ 
+@@ -148,7 +105,6 @@
+ endif
+ 
+ endif
+-endif
+ 
+ $(obj)/amrlibs.o:
+ 	echo "$@ done"
diff -Nru sl-modem-2.9.11~20110321/debian/patches/remove_usb_kernel_ver_check.diff sl-modem-2.9.11~20110321/debian/patches/remove_usb_kernel_ver_check.diff
--- sl-modem-2.9.11~20110321/debian/patches/remove_usb_kernel_ver_check.diff	1970-01-01 01:00:00.000000000 +0100
+++ sl-modem-2.9.11~20110321/debian/patches/remove_usb_kernel_ver_check.diff	2011-12-14 03:50:47.000000000 +0000
@@ -0,0 +1,48 @@
+Description: Remove kernel version check for slusb support.
+ We try to support new versions, and have been overriding this check.
+Author: Ben Hutchings <[email protected]>
+
+--- a/drivers/Makefile
++++ b/drivers/Makefile
+@@ -20,12 +20,6 @@
+ KERNEL_VER := $(shell uname -r)
+ endif
+ KERNEL_DIR ?= /lib/modules/$(KERNEL_VER)/build
+-SUBLEVEL:=$(shell echo $(KERNEL_DIR) | cut -d. -f3 | cut -d. -f1 | cut -d-  -f1)
+-# slusb support ends at 2.6.24
+-
+-ifndef USB
+-AGE:=$(shell if [ "$(SUBLEVEL)" -gt 24 ] ;then echo NEW;fi)
+-endif
+ 
+ FOUND_CLASS_SIMPLE := $(shell grep -q 'class_simple_device_add' ${KERNEL_DIR}/include/linux/device.h 2> /dev/null && echo -DFOUND_CLASS_SIMPLE)
+ 
+@@ -37,10 +31,7 @@
+ obj-m:= slamr.o 
+ endif
+ 
+-# AGE:=test
+-ifneq ($(AGE), NEW)
+ obj-m:= $(obj-m) slusb.o 
+-endif
+ 
+ slamr-objs:= amrmo_init.o sysdep_amr.o amrlibs.o
+ slusb-objs:= st7554.o
+@@ -65,17 +56,13 @@
+ ifeq ($(ARCH64), 0)
+ 	install -D -m 644 slamr.ko $(module-dir)/slamr.ko
+ endif
+-ifneq ($(AGE), NEW)
+ 	install -D -m 644 slusb.ko $(module-dir)/slusb.ko
+-endif
+ 	/sbin/depmod -a
+ 	mkdir -p ${DESTDIR}/dev
+ 	$(foreach minor,0 1 2 3, \
+ 	    mknod -m 600 ${DESTDIR}/dev/slamr$(minor) c 242 $(minor) ; ) echo -n
+-ifneq ($(AGE), NEW)
+ 	$(foreach minor,0 1 2 3, \
+ 	    mknod -m 600 ${DESTDIR}/dev/slusb$(minor) c 243 $(minor) ; ) echo -n
+-endif
+ 
+ uninstall:
+ ifeq ($(ARCH64), 0)
diff -Nru sl-modem-2.9.11~20110321/debian/patches/series sl-modem-2.9.11~20110321/debian/patches/series
--- sl-modem-2.9.11~20110321/debian/patches/series	2011-12-13 18:22:29.000000000 +0000
+++ sl-modem-2.9.11~20110321/debian/patches/series	2011-12-14 03:27:20.000000000 +0000
@@ -1,4 +1,5 @@
-01_Makefile.diff
+remove_linux-2.4.diff
+simplify_kernel_ver.diff
 modem_group.diff
 08_ungrab_winmodem.diff
 10_drop_privileges.diff
@@ -8,6 +9,6 @@
 autoload.diff
 support_multiarch.diff
 clean_LFLAGS.diff
-support_linux3.diff
 device_create_changes.diff
+remove_usb_kernel_ver_check.diff
 arch64.diff
diff -Nru sl-modem-2.9.11~20110321/debian/patches/simplify_kernel_ver.diff sl-modem-2.9.11~20110321/debian/patches/simplify_kernel_ver.diff
--- sl-modem-2.9.11~20110321/debian/patches/simplify_kernel_ver.diff	1970-01-01 01:00:00.000000000 +0100
+++ sl-modem-2.9.11~20110321/debian/patches/simplify_kernel_ver.diff	2011-12-14 04:01:03.000000000 +0000
@@ -0,0 +1,103 @@
+Description: Simplify definition of KERNEL_VER.
+ If we use uname -r to find KERNEL_DIR, also use it for KERNEL_VER.
+ Otherwise, require it to be provided as an environment or command-line
+ variable.
+Author: Ben Hutchings <[email protected]>
+
+--- sl-modem-2.9.11~20110321.orig/Makefile
++++ sl-modem-2.9.11~20110321/Makefile
+@@ -13,7 +13,10 @@
+ #
+ ###########################################################################
+ 
+-KERNEL_DIR:=/lib/modules/$(shell uname -r)/build
++ifndef KERNEL_VER
++KERNEL_VER := $(shell uname -r)
++endif
++KERNEL_DIR ?= /lib/modules/$(KERNEL_VER)/build
+ 
+ # tools
+ INSTALL:=install
+--- sl-modem-2.9.11~20110321.orig/drivers/Makefile
++++ sl-modem-2.9.11~20110321/drivers/Makefile
+@@ -16,7 +16,10 @@
+ #KBUILD_VERBOSE=1
+ #export KBUILD_VERBOSE
+ 
+-KERNEL_DIR:=/lib/modules/$(shell uname -r)/build
++ifndef KERNEL_VER
++KERNEL_VER := $(shell uname -r)
++endif
++KERNEL_DIR ?= /lib/modules/$(KERNEL_VER)/build
+ SUBLEVEL:=$(shell echo $(KERNEL_DIR) | cut -d. -f3 | cut -d. -f1 | cut -d-  -f1)
+ # slusb support ends at 2.6.24
+ 
+@@ -43,40 +46,14 @@
+ slusb-objs:= st7554.o
+ 
+ ifndef KERNELRELEASE
+-ifndef KERNEL_VER
+-
+-all install uninstall: kernel-ver
+-	$(MAKE) $@ KERNEL_VER=$(shell ./kernel-ver)
+ 
+-install: install-devices
+-uninstall: remove-devices
+-
+-kernel-ver::
+-	@echo "doing kernel-ver::"
+-	$(CC) -I$(KERNEL_DIR)/include -o $@ [email protected]
++default: all
+ 
+ dep:
+ clean:
+-	$(RM) kernel-ver $(obj-m) $(obj-m:.o=.ko) *st7554.o amrmo_init.o sysdep_amr.o *.mod.* .*.cmd *~ slusb.*
++	$(RM) $(obj-m) $(obj-m:.o=.ko) *st7554.o amrmo_init.o sysdep_amr.o *.mod.* .*.cmd *~ slusb.*
+ 	$(RM) -r .tmp_versions
+ 
+-install-devices:
+-	mkdir -p ${DESTDIR}/dev
+-	$(foreach minor,0 1 2 3, \
+-	    mknod -m 600 ${DESTDIR}/dev/slamr$(minor) c 242 $(minor) ; ) echo -n
+-ifneq ($(AGE), NEW)
+-	$(foreach minor,0 1 2 3, \
+-	    mknod -m 600 ${DESTDIR}/dev/slusb$(minor) c 243 $(minor) ; ) echo -n
+-endif
+-
+-remove-devices:
+-	$(foreach minor,0 1 2 3, \
+-	    $(RM) ${DESTDIR}/dev/slamr$(minor) ; ) echo -n
+-	$(foreach minor,0 1 2 3, \
+-	    $(RM) ${DESTDIR}/dev/slusb$(minor) ; ) echo -n
+-
+-else
+-
+ module-dir:=${DESTDIR}/lib/modules/$(KERNEL_VER)/extra
+ 
+ all:
+@@ -93,6 +70,13 @@
+ 	install -D -m 644 slusb.ko $(module-dir)/slusb.ko
+ endif
+ 	/sbin/depmod -a
++	mkdir -p ${DESTDIR}/dev
++	$(foreach minor,0 1 2 3, \
++	    mknod -m 600 ${DESTDIR}/dev/slamr$(minor) c 242 $(minor) ; ) echo -n
++ifneq ($(AGE), NEW)
++	$(foreach minor,0 1 2 3, \
++	    mknod -m 600 ${DESTDIR}/dev/slusb$(minor) c 243 $(minor) ; ) echo -n
++endif
+ 
+ uninstall:
+ ifeq ($(ARCH64), 0)
+@@ -102,7 +86,10 @@
+ 	$(RM) $(module-dir)/slamr.ko
+ 	$(RM) $(module-dir)/slusb.ko
+ 	/sbin/depmod -a
+-endif
++	$(foreach minor,0 1 2 3, \
++	    $(RM) ${DESTDIR}/dev/slamr$(minor) ; ) echo -n
++	$(foreach minor,0 1 2 3, \
++	    $(RM) ${DESTDIR}/dev/slusb$(minor) ; ) echo -n
+ 
+ endif
+ 
diff -Nru sl-modem-2.9.11~20110321/debian/patches/support_linux3.diff sl-modem-2.9.11~20110321/debian/patches/support_linux3.diff
--- sl-modem-2.9.11~20110321/debian/patches/support_linux3.diff	2011-12-13 18:22:29.000000000 +0000
+++ sl-modem-2.9.11~20110321/debian/patches/support_linux3.diff	1970-01-01 01:00:00.000000000 +0100
@@ -1,14 +0,0 @@
-Description: Support for linux 3.x series in build system
-Author: أحمد المحمودي (Ahmed El-Mahmoudy) <[email protected]>
-Bug-Debian: http://bugs.debian.org/641151
---- a/drivers/Makefile
-+++ b/drivers/Makefile
-@@ -82,7 +82,7 @@
- 	    $(RM) ${DESTDIR}/dev/slusb$(minor) ; ) echo -n
- 
- else
--ifeq ($(shell grep 'UTS.*"2\.6' $(KERNEL_DIR)/include/generated/utsrelease.h $(KERNEL_DIR)/include/linux/utsrelease.h $(KERNEL_DIR)/include/linux/version.h 2>/dev/null),)
-+ifeq ($(shell grep 'UTS.*"\(2\.6\|3\)' $(KERNEL_DIR)/include/generated/utsrelease.h $(KERNEL_DIR)/include/linux/utsrelease.h $(KERNEL_DIR)/include/linux/version.h 2>/dev/null),)
- 
- slusb-objs:= old_st7554.o
- obj:=.
diff -Nru sl-modem-2.9.11~20110321/debian/sl-modem-source.dkms sl-modem-2.9.11~20110321/debian/sl-modem-source.dkms
--- sl-modem-2.9.11~20110321/debian/sl-modem-source.dkms	2011-12-13 18:22:29.000000000 +0000
+++ sl-modem-2.9.11~20110321/debian/sl-modem-source.dkms	2011-12-14 04:25:29.000000000 +0000
@@ -1,15 +1,17 @@
 PACKAGE_NAME="sl-modem"
 PACKAGE_VERSION="#MODULE_VERSION#"
 CLEAN="make -C drivers clean; make -C ungrab-winmodem clean"
-BUILT_MODULE_NAME[0]="slamr"
+BUILT_MODULE_NAME[0]="slusb"
 BUILT_MODULE_LOCATION[0]="drivers"
-MAKE[0]="cd ${dkms_tree}/sl-modem/#MODULE_VERSION#/build; make -C drivers USB=1 KERNEL_DIR=$kernel_source_dir KVERS=$kernelver; make -C ungrab-winmodem KERNEL_DIR=$kernel_source_dir KVERS=$kernelver; cd .."
+MAKE[0]="cd ${dkms_tree}/sl-modem/#MODULE_VERSION#/build; make -C drivers KERNEL_DIR=$kernel_source_dir KERNEL_VER=$kernelver; make -C ungrab-winmodem KERNEL_DIR=$kernel_source_dir KERNEL_VER=$kernelver; cd .."
 DEST_MODULE_LOCATION[0]="/kernel/drivers/misc"
 BUILT_MODULE_NAME[1]="ungrab-winmodem"
 BUILT_MODULE_LOCATION[1]="ungrab-winmodem"
 #MAKE[1]="make -C ungrab-winmodem KERNEL_DIR=$kernel_source_dir KVERS=$kernelver"
 DEST_MODULE_LOCATION[1]="/kernel/drivers/misc"
-BUILT_MODULE_NAME[2]="slusb"
+if grep -q ^CONFIG_X86_32=y $kernel_source_dir/.config; then
+BUILT_MODULE_NAME[2]="slamr"
 BUILT_MODULE_LOCATION[2]="drivers"
 DEST_MODULE_LOCATION[2]="/kernel/drivers/misc"
+fi
 AUTOINSTALL="yes"

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to