tag 759766 patch
thanks

On Sat, Aug 30, 2014 at 12:20:02PM +0900, Nobuhiro Ban wrote:
> Package: libnkf-perl
> Version: 2.13-3+b1
> Severity: grave
> 
> Dear Maintainer,
> 
> NKF module for perl doesn't work on i386 arch:
> >% perl -e 'use NKF'
> >Can't use an undefined value as a subroutine reference at 
> >/usr/lib/i386-linux-gnu/perl/5.20/DynaLoader.pm line 210.
> >END failed--call queue aborted at /usr/lib/i386-linux-gnu/perl5/5.20/NKF.pm 
> >line 210.
> >Compilation failed in require at -e line 1.
> >BEGIN failed--compilation aborted at -e line 1.
> 
> It works on amd64 arch.

This is a binary compatibility issue caused by not compiling the module
with flags from $Config{ccflags}, particularly -D_FILE_OFFSET_BITS=64.

I'm attaching a patchset that improves the dpkg-buildflags handling
and doesn't override $Config{ccflags}.
-- 
Niko Tyni   nt...@debian.org
>From 2e8b8850c8a3eb5bab045eddb30f5d255193a6dd Mon Sep 17 00:00:00 2001
From: Niko Tyni <nt...@debian.org>
Date: Fri, 29 Aug 2014 21:52:50 -0700
Subject: [PATCH 1/4] Remove redundant use of buildflags.mk

buildflags.mk and dpkg-buildflags are alternative approaches.
It is useless for the first one to export CFLAGS and LDFLAGS, when
the latter overrides them.
---
 debian/rules | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/debian/rules b/debian/rules
index 0590fb7..9e7b52d 100755
--- a/debian/rules
+++ b/debian/rules
@@ -7,9 +7,6 @@
 # This has to be exported to make some magic below work.
 export DH_OPTIONS
 
-DPKG_EXPORT_BUILDFLAGS = 1
-include /usr/share/dpkg/buildflags.mk
-
 CFLAGS=$(shell dpkg-buildflags --get CFLAGS)
 LDFLAGS=$(shell dpkg-buildflags --get LDFLAGS)
 CFLAGS+=$(HARDENING_CFLAGS)
-- 
2.1.0

>From 74b2ba0d22a3cf302e5ac79b1931f131db7f28e7 Mon Sep 17 00:00:00 2001
From: Niko Tyni <nt...@debian.org>
Date: Fri, 29 Aug 2014 22:02:38 -0700
Subject: [PATCH 2/4] Use CPPFLAGS from dpkg-buildflags in the build

These currently include -D_FORTIFY_SOURCE=2
---
 debian/rules | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/debian/rules b/debian/rules
index 9e7b52d..63ab1f9 100755
--- a/debian/rules
+++ b/debian/rules
@@ -7,7 +7,7 @@
 # This has to be exported to make some magic below work.
 export DH_OPTIONS
 
-CFLAGS=$(shell dpkg-buildflags --get CFLAGS)
+CFLAGS=$(shell dpkg-buildflags --get CFLAGS) $(shell dpkg-buildflags --get CPPFLAGS)
 LDFLAGS=$(shell dpkg-buildflags --get LDFLAGS)
 CFLAGS+=$(HARDENING_CFLAGS)
 LDFLAGS+=$(HARDENING_LDFLAGS)
-- 
2.1.0

>From 129955540dee54a970209152beb191e4f30c2f31 Mon Sep 17 00:00:00 2001
From: Niko Tyni <nt...@debian.org>
Date: Fri, 29 Aug 2014 22:04:51 -0700
Subject: [PATCH 3/4] Pass build flags to the NKF Perl module in OPTIMIZE and
 LD

This mirrors what debhelper currently does at compatibility level 9,
and doesn't override $Config{ccflags} from Perl, fixing binary
compatibility issues on 32-bit architectures.

Bug-Debian: https://bugs.debian.org/759766
---
 debian/rules | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/debian/rules b/debian/rules
index 63ab1f9..a482f3c 100755
--- a/debian/rules
+++ b/debian/rules
@@ -40,11 +40,11 @@ override_dh_auto_clean:
 
 override_dh_auto_configure:
 	(cd NKF.mod && \
-	/usr/bin/perl Makefile.PL INSTALLDIRS=vendor)
+	/usr/bin/perl Makefile.PL INSTALLDIRS=vendor OPTIMIZE="$(CFLAGS)" LD="cc $(LDFLAGS)")
 
 override_dh_auto_build:
 	make nkf CC=cc CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)"
-	(cd NKF.mod && make CCFLAGS="$(CFLAGS)" LDDFLAGS="$(LDFLAGS)")
+	(cd NKF.mod && make)
 
 override_dh_auto_install:
 	install -s -m 755 nkf debian/nkf/usr/bin
-- 
2.1.0

>From 09435ea0c61b08837e16628a470f402906d72794 Mon Sep 17 00:00:00 2001
From: Niko Tyni <nt...@debian.org>
Date: Fri, 29 Aug 2014 22:18:04 -0700
Subject: [PATCH 4/4] Run the NKF.mod test suite too

This would have caught the binary compatibility issues
in #759766.
---
 debian/rules | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/debian/rules b/debian/rules
index a482f3c..b0b6b55 100755
--- a/debian/rules
+++ b/debian/rules
@@ -46,6 +46,10 @@ override_dh_auto_build:
 	make nkf CC=cc CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)"
 	(cd NKF.mod && make)
 
+override_dh_auto_test:
+	make test
+	make -C NKF.mod test
+
 override_dh_auto_install:
 	install -s -m 755 nkf debian/nkf/usr/bin
 	./debian/nkf/usr/bin/nkf -e nkf.1j > debian/nkf.1j.tmp
-- 
2.1.0

Reply via email to