From ed205512dd05a7dd4b0dab8af760d13e9efbbb25 Mon Sep 17 00:00:00 2001
From: Fred Wright <fw@fwright.net>
Date: Sat, 7 Oct 2017 19:54:55 -0700
Subject: [PATCH] Fixes SConstruct for SCons 3.0.0.

SCons 3.0.0 introduced a bug where the print_funtion future import is
inflicted on the SConstruct script, making 'print' as a statement
illegal.  This is expected to be fixed in SCons 3.0.1, but in the
meantime it's necessary to switch to the print_function mode for
compatibility.  Fortunately, there were only three print statements in
the whole file.

This is not a complete Python 3 fix; it simply restores correct
operation when running SCons under Python 2.

TESTED:
Arraged to test all three print() instances under OSX.
Tested "scons build-all check" under OSX, Ubuntu, CentOS, Fedora,
FreeBSD, OpenBSD, and NetBSD.
---
 SConstruct | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/SConstruct b/SConstruct
index 4923ad8cdae3..040103cff387 100644
--- a/SConstruct
+++ b/SConstruct
@@ -23,6 +23,13 @@
 # * Out-of-directory builds: see http://www.scons.org/wiki/UsingBuildDir
 # * Coveraging mode: gcc "-coverage" flag requires a hack
 #   for building the python bindings
+# * Python 3 compatibility in this recipe
+
+# Since SCons 3.0.0 forces print_function on us, it needs to be unconditional.
+# This is recognized to be a bug in SCons, but we need to live with it for now,
+# and we'll need this for eventual Python 3 compatibility, anyway.
+# Python requires this to precede any non-comment code.
+from __future__ import print_function
 
 # Release identification begins here
 gpsd_version = "3.18~dev"
@@ -375,7 +382,7 @@ if env.GetOption("silent"):
 
 def announce(msg):
     if not env.GetOption("silent"):
-        print msg
+        print(msg)
 
 # DESTDIR environment variable means user prefix the installation root.
 DESTDIR = os.environ.get('DESTDIR', '')
@@ -1546,8 +1553,8 @@ def substituter(target, source, env):
         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)
+        print("Unknown subst token %s in %s." % (m.group(0), sfp.name),
+              file=sys.stderr)
     tfp = open(str(target[0]), "w")
     tfp.write(content)
     tfp.close()
@@ -2191,7 +2198,7 @@ def validation_list(target, source, env):
         if '-head' not in page:
             fp = open(page)
             if "Valid HTML" in fp.read():
-                print os.path.join(website, os.path.basename(page))
+                print(os.path.join(website, os.path.basename(page)))
             fp.close()
 Utility("validation-list", [www], validation_list)
 
-- 
2.19.1

