Commit f52727e2 authored by Thomas Petazzoni's avatar Thomas Petazzoni
Browse files

gpsd: fix build issues

The first patch gpsd-01-sconstruct-python-2.5-compat.patch is aimed at
fixing Python 2.5 compatibility issues such as:

 http://autobuild.buildroot.org/results/844a7f8698567688eba094f64dd2bf5157efd994/build-end.log

The second patch gpsd-02-sconstruct-ncurses-config-path.patch
implements a proper mechanism to specify the path to
ncurse5-config. It obsoletes the previous
gpsd-fix-acs_map-compile-errors patch, and solves build problems such
as:

 http://autobuild.buildroot.org/results/92ae3d53e8aa68d8b1a2eccad68c98f577cb6437/build-end.log



Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Acked-by: default avatarSimon Dawson <spdawson@gmail.com>
parent 23c9aecc
Loading
Loading
Loading
Loading
+79 −0
Original line number Diff line number Diff line
Remove all the with ... as foo constructs

Those constructs have been introduced in Python 2.6, and some of our
autobuilders still use Python 2.5, so replace them with constructs
that are compatible with Python 2.5.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

Index: b/SConstruct
===================================================================
--- a/SConstruct
+++ b/SConstruct
@@ -366,8 +366,8 @@
 
 def CheckXsltproc(context):
     context.Message('Checking that xsltproc can make man pages... ')
-    with open("xmltest.xml", "w") as ofp:
-        ofp.write('''
+    ofp = open("xmltest.xml", "w")
+    ofp.write('''
        <refentry id="foo.1">
       <refmeta>
         <refentrytitle>foo</refentrytitle>
@@ -380,6 +380,7 @@
       </refnamediv>
     </refentry>
 ''')
+    ofp.close()
     probe = "xsltproc --nonet --noout '%s' xmltest.xml" % (docbook_man_uri,)
     ret = context.TryAction(probe)[0]
     os.remove("xmltest.xml")
@@ -1042,8 +1043,9 @@
 # build timebase.h
 def timebase_h(target, source, env):
     from leapsecond import make_leapsecond_include
-    with open(target[0].abspath, 'w') as f:
-        f.write(make_leapsecond_include(source[0].abspath))
+    f = open(target[0].abspath, 'w')
+    f.write(make_leapsecond_include(source[0].abspath))
+    f.close()
 env.Command(target="timebase.h", source="leapseconds.cache",
             action=timebase_h)
 
@@ -1116,15 +1118,17 @@
         ('@DEVMAIL@',    devmail),
         ('@LIBGPSVERSION@', libgps_version),
         )
-    with open(str(source[0])) as sfp:
-        content = sfp.read()
+    sfp = open(str(source[0]))
+    content = sfp.read()
+    sfp.close()
     for (s, t) in substmap:
         content = content.replace(s, t)
     m = re.search("@[A-Z]+@", content)
     if m and m.group(0) not in map(lambda x: x[0], substmap):
         print >>sys.stderr, "Unknown subst token %s in %s." % (m.group(0), sfp.name)
-    with open(str(target[0]), "w") as tfp:
-        tfp.write(content)
+    tfp = open(str(target[0]), "w")
+    tfp.write(content)
+    tfp.close()
 
 templated = glob.glob("*.in") + glob.glob("*/*.in") + glob.glob("*/*/*.in")
 
@@ -1560,9 +1564,10 @@
 def validation_list(target, source, env):
     for page in glob.glob("www/*.html"):
         if not '-head' in page:
-            with open(page) as fp:
-                if "Valid HTML" in fp.read():
-                    print os.path.join(website, os.path.basename(page))
+            fp = open(page)
+            if "Valid HTML" in fp.read():
+                print os.path.join(website, os.path.basename(page))
+            fp.close()
 Utility("validation-list", [www], validation_list)
 
 # How to update the website
+44 −0
Original line number Diff line number Diff line
Add option to specify the path to ncurses5-config

By default, gpsd's SConstruct looks in the PATH to find
ncurses5-config, which means that it finds our HOST_DIR
ncurses5-config. We add an option that allows to specify a custom path
to the ncurses5-config script.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

Index: b/SConstruct
===================================================================
--- a/SConstruct
+++ b/SConstruct
@@ -172,6 +172,7 @@
     ("fixed_stop_bits",     0,             "fixed serial port stop bits"),
     ("target",              "",            "cross-development target"),
     ("sysroot",             "",            "cross-development system root"),
+    ("ncurses_config",      "",            "ncurses5-config path"),
     )
 for (name, default, help) in nonboolopts:
     opts.Add(name, help, default)
@@ -447,6 +448,11 @@
 else:
     pkg_config = lambda pkg: ['!%s --cflags --libs --static %s' %(env['PKG_CONFIG'], pkg, )]
 
+if env['ncurses_config']:
+    ncurses_config = env['ncurses_config']
+else:
+    ncurses_config = "ncurses5-config"
+
 # The actual distinction here is whether the platform has ncurses in the
 # base system or not. If it does, pkg-config is not likely to tell us
 # anything useful. FreeBSD does, Linux doesn't. Most likely other BSDs
@@ -455,8 +461,8 @@
 if env['ncurses']:
     if config.CheckPKG('ncurses'):
         ncurseslibs = pkg_config('ncurses')
-    elif config.CheckExecutable('ncurses5-config --version', 'ncurses5-config'):
-        ncurseslibs = ['!ncurses5-config --libs --cflags']
+    elif config.CheckExecutable('%s --version' % ncurses_config, 'ncurses5-config'):
+        ncurseslibs = ['!%s --libs --cflags' % ncurses_config]
     elif sys.platform.startswith('freebsd'):
         ncurseslibs= [ '-lncurses' ]
     elif sys.platform.startswith('openbsd'):
+0 −29
Original line number Diff line number Diff line
Hack gpsd to prevent undefined references to acs_map from ncurses.

Signed-off-by: Simon Dawson <spdawson@gmail.com>
diff -Nurp a/gpsmon.c b/gpsmon.c
--- a/gpsmon.c	2012-05-18 09:45:37.000000000 +0100
+++ b/gpsmon.c	2012-06-07 12:41:31.257807969 +0100
@@ -24,6 +24,9 @@
 #include <unistd.h>
 #endif /* S_SPLINT_S */
 
+/* Ugly hack to prevent undefined reference to acs_map */
+unsigned long acs_map[128];
+
 #include "gpsd_config.h"
 #ifdef HAVE_BLUEZ
 #include <bluetooth/bluetooth.h>
diff -Nurp a/monitor_nmea.c b/monitor_nmea.c
--- a/monitor_nmea.c	2011-11-22 08:49:33.000000000 +0000
+++ b/monitor_nmea.c	2012-06-07 12:41:37.081807709 +0100
@@ -15,6 +15,9 @@
 #include <unistd.h>
 #endif /* S_SPLINT_S */
 
+/* Ugly hack to prevent undefined reference to acs_map */
+unsigned long acs_map[128];
+
 #include "gpsd.h"
 #include "gpsmon.h"
 #include "gpsdclient.h"
+1 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ GPSD_SCONS_OPTS = \

ifeq ($(BR2_PACKAGE_NCURSES),y)
	GPSD_DEPENDENCIES += ncurses
	GPSD_SCONS_OPTS += ncurses_config=$(STAGING_DIR)/usr/bin/ncurses5-config
else
	GPSD_SCONS_OPTS += ncurses=no
endif