Package: sunpinyin Version: 2.0.3-5 Severity: normal Tags: patch User: ubuntu-de...@lists.ubuntu.com Usertags: origin-ubuntu ubuntu-patch precise
If LDFLAGS is set in the environment to a string composed of multiple words when building sunpinyin, then scons will fail to detect C library functions because it tries to build test programs with a command of the form: gcc "-Wl,... -Wl,..." -Wl,... ... i.e. the original value of LDFLAGS is passed in as a single argument rather than split on whitespace in the usual way. This happens because PassVariables copies LDFLAGS from the process environment into LINKFLAGS in the SCons environment, and then uses env.Append(LINKFLAGS=[...]), which ends up constructing a list whose first element is the entire value of LDFLAGS. The problem is fairly obscure, but the fix is fortunately straightforward: split the value of LDFLAGS. * If LDFLAGS is set in the environment, split it on whitespace since we later want to append lists to it. This stops function detection going horribly wrong if LDFLAGS contains more than one word. diff -Nru sunpinyin-2.0.3/debian/patches/fix-ldflags-handling.patch sunpinyin-2.0.3/debian/patches/fix-ldflags-handling.patch --- sunpinyin-2.0.3/debian/patches/fix-ldflags-handling.patch 1970-01-01 01:00:00.000000000 +0100 +++ sunpinyin-2.0.3/debian/patches/fix-ldflags-handling.patch 2011-10-20 14:45:35.000000000 +0100 @@ -0,0 +1,24 @@ +Description: Split LDFLAGS on whitespace + If LDFLAGS is set in the environment, split it on whitespace since we later + want to append lists to it. This stops function detection going horribly + wrong if LDFLAGS contains more than one word. +Author: Colin Watson <cjwat...@ubuntu.com> +Forwarded: no +Last-Update: 2011-10-20 + +Index: b/SConstruct +=================================================================== +--- a/SConstruct ++++ b/SConstruct +@@ -158,7 +158,10 @@ + for (x, y) in envvar: + if x in os.environ: + print 'Warning: you\'ve set %s in the environmental variable!' % x +- env[y] = os.environ[x] ++ if y == 'LINKFLAGS': ++ env[y] = os.environ[x].split() ++ else: ++ env[y] = os.environ[x] + + env = CreateEnvironment() + opts.Update(env) diff -Nru sunpinyin-2.0.3/debian/patches/series sunpinyin-2.0.3/debian/patches/series --- sunpinyin-2.0.3/debian/patches/series 2011-09-27 15:03:57.000000000 +0100 +++ sunpinyin-2.0.3/debian/patches/series 2011-10-20 14:32:59.000000000 +0100 @@ -3,3 +3,4 @@ fix-ftbfs-on-sh.patch fix-ftbfs-on-mipsel.patch remove-10-candidate-words-limitation.patch +fix-ldflags-handling.patch Thanks, -- Colin Watson [cjwat...@ubuntu.com] -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org