mailarchive of the ptxdist mailing list
 help / color / mirror / Atom feed
From: ladis@linux-mips.org
To: Roland Hieber <rhi@pengutronix.de>
Cc: ptxdist@pengutronix.de
Subject: Re: [ptxdist] [PATCH 1/3] gpsd: merge GPSD_SYSTEMD and GPSD_SYSTEMD_UNIT options
Date: Sun, 2 Aug 2020 16:43:40 +0200	[thread overview]
Message-ID: <20200802144340.GA440370@lenoch> (raw)
In-Reply-To: <20200722095130.fw5rclsoneafuqpt@pengutronix.de>

On Wed, Jul 22, 2020 at 11:51:30AM +0200, Roland Hieber wrote:
> On Mon, Jul 20, 2020 at 11:14:28PM +0200, ladis@linux-mips.org wrote:
> > On Mon, Jul 20, 2020 at 02:59:33PM +0200, Michael Olbrich wrote:
> > > On Mon, Jul 20, 2020 at 01:51:15PM +0200, Roland Hieber wrote:
> > > > The current systemd socket unit relies on compiled-in systemd support in
> > > > the gpsd binary, so we would need to enable GPSD_SYSTEMD with
> > > > GPSD_SYSTEMD_UNIT anyways. Vice versa, there is no use in having
> > > > compiled-in systemd socket activation support without the systemd socket
> > > > unit. Merge both options.
> > > 
> > > It can be useful to disable systemd units but not the support. E.g. if the
> > > service should not be enabled by default.
> > > I'd prefer remove the prompt for GPSD_SYSTEMD instead and enable it with
> > > systemd (like rsyslog handles this, for example).
> > 
> > +1
> > Also please note gpsd is about to make release:
> > https://lists.nongnu.org/archive/html/gpsd-dev/2020-07/msg00011.html
> > Looks good so far, only 0101-SConstruct-Search-for-ncursesw-pkgconfig.patch
> > is needed and it is PTXdist specific.
> > 
> > But maybye it would be worth checking all options and do transition at once.
> 
> My customer just notified me that they want to move away from gpsd, so I
> don't think I can justify time for that :-/ Anyway, I'll still send a v2
> of this series.

Fair enough. For those curious, here's a patch for not yet released 3.21
(I run 'scons dist' on gpsd commit 568a3fd53cd6 "ubxtool: Fix another Python
2.6 bug."). It contains some bugfixes as well. Let me know, if you want them
as separate patches.

--- >8 ---

From: Ladislav Michl <ladis@linux-mips.org>
Date: Sun, 2 Aug 2020 16:32:15 +0200
Subject: [PATCH] gpsd: version bump 3.20 -> 3.21

Not-yet-Signed-off-by: Ladislav Michl <ladis@linux-mips.org>
---
 ...ce-custom-CheckSizeOf-with-standard-.patch |  74 --------
 ...s-install-xpgs-xgpsspeed-programs-ma.patch | 148 ---------------
 ...s-install-xgps-.-Only-test-if-deps-f.patch | 108 -----------
 ...sizeof-time_t-test-when-cross-compil.patch |  39 ----
 ...ix-merging-and-using-of-python-flags.patch |  45 -----
 ...-Remove-redundant-CheckHeaderDefines.patch |  52 ------
 ...emove-redundant-CheckCompilerDefines.patch |  67 -------
 ...thonValue-and-CheckPKG-were-using-wr.patch |  44 -----
 ...ruct-Fix-GetPythonValue-for-python-3.patch |  57 ------
 ...move-more-checks-into-GetPythonValue.patch |  98 ----------
 ...-target-python-version-not-scons-pyt.patch |  32 ----
 ...ify-GetPythonValue-.-It-now-caches-p.patch | 174 ------------------
 ...3-SConstruct-fix-polystr-for-python2.patch |  34 ----
 ...arget_python-when-constructing-exten.patch |  36 ----
 ...SConstruct-HACK-use-target-INCLUDEPY.patch |  25 ---
 patches/gpsd-3.20/series                      |  20 --
 .../0001-Search-for-ncursesw-pkgconfig.patch} |  10 +-
 ...arget-option-to-decide-whenewer-to-r.patch |  28 +++
 patches/gpsd-3.21/series                      |   2 +
 .../usr/lib/systemd/system/gpsd.socket        |   2 +-
 .../usr/lib/systemd/system/gpsdctl@.service   |   6 +-
 rules/gpsd.in                                 |  21 +--
 rules/gpsd.make                               |  21 ++-
 23 files changed, 62 insertions(+), 1081 deletions(-)
 delete mode 100644 patches/gpsd-3.20/0001-SConstruct-replace-custom-CheckSizeOf-with-standard-.patch
 delete mode 100644 patches/gpsd-3.20/0002-SConstruct-Always-install-xpgs-xgpsspeed-programs-ma.patch
 delete mode 100644 patches/gpsd-3.20/0003-SConstruct-Always-install-xgps-.-Only-test-if-deps-f.patch
 delete mode 100644 patches/gpsd-3.20/0004-SConstruct-Skip-sizeof-time_t-test-when-cross-compil.patch
 delete mode 100644 patches/gpsd-3.20/0005-Fix-merging-and-using-of-python-flags.patch
 delete mode 100644 patches/gpsd-3.20/0006-SConstruct-Remove-redundant-CheckHeaderDefines.patch
 delete mode 100644 patches/gpsd-3.20/0007-SConstruct-remove-redundant-CheckCompilerDefines.patch
 delete mode 100644 patches/gpsd-3.20/0008-SConstruct-GetPythonValue-and-CheckPKG-were-using-wr.patch
 delete mode 100644 patches/gpsd-3.20/0009-SConstruct-Fix-GetPythonValue-for-python-3.patch
 delete mode 100644 patches/gpsd-3.20/0010-SConstruct-move-more-checks-into-GetPythonValue.patch
 delete mode 100644 patches/gpsd-3.20/0011-SConstruct-Check-target-python-version-not-scons-pyt.patch
 delete mode 100644 patches/gpsd-3.20/0012-SConstruct-Simplify-GetPythonValue-.-It-now-caches-p.patch
 delete mode 100644 patches/gpsd-3.20/0013-SConstruct-fix-polystr-for-python2.patch
 delete mode 100644 patches/gpsd-3.20/0100-SConstruct-Use-target_python-when-constructing-exten.patch
 delete mode 100644 patches/gpsd-3.20/0102-SConstruct-HACK-use-target-INCLUDEPY.patch
 delete mode 100644 patches/gpsd-3.20/series
 rename patches/{gpsd-3.20/0101-SConstruct-Search-for-ncursesw-pkgconfig.patch => gpsd-3.21/0001-Search-for-ncursesw-pkgconfig.patch} (80%)
 create mode 100644 patches/gpsd-3.21/0002-SConstruct-Use-target-option-to-decide-whenewer-to-r.patch
 create mode 100644 patches/gpsd-3.21/series

diff --git a/patches/gpsd-3.20/0001-SConstruct-replace-custom-CheckSizeOf-with-standard-.patch b/patches/gpsd-3.20/0001-SConstruct-replace-custom-CheckSizeOf-with-standard-.patch
deleted file mode 100644
index 0d5771bbe..000000000
--- a/patches/gpsd-3.20/0001-SConstruct-replace-custom-CheckSizeOf-with-standard-.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From: "Gary E. Miller" <gem@rellim.com>
-Date: Fri, 3 Jan 2020 16:15:53 -0800
-Subject: [PATCH] SConstruct: replace custom CheckSizeOf() with standard
- CheckTypeSize()
-
----
- SConstruct | 40 ++--------------------------------------
- 1 file changed, 2 insertions(+), 38 deletions(-)
-
-diff --git a/SConstruct b/SConstruct
-index 33e0ff32665c..bd008207011d 100644
---- a/SConstruct
-+++ b/SConstruct
-@@ -597,42 +597,6 @@ def CheckHeaderDefines(context, file, define):
-     return ret
- 
- 
--def CheckSizeOf(context, type):
--    """Check sizeof 'type'"""
--    context.Message('Checking size of ' + type + '... ')
--
--    program = """
--#include <stdlib.h>
--#include <stdio.h>
--
--/*
-- * The CheckSizeOf function does not have a way for the caller to
-- * specify header files to be included to provide the type being
-- * checked.  As a workaround until that is remedied, include the
-- * header required for time_t, which is the sole current use of this
-- * function.
-- */
--#include <time.h>
--
--int main() {
--    printf("%d", (int)sizeof(""" + type + """));
--    return 0;
--}
--"""
--
--    # compile it
--    ret = context.TryCompile(program, '.c')
--    if 0 == ret:
--        announce('ERROR: TryCompile failed\n')
--        # fall back to sizeof(time_t) is 8
--        return '8'
--
--    # run it
--    ret = context.TryRun(program, '.c')
--    context.Result(ret[0])
--    return ret[1]
--
--
- def CheckCompilerDefines(context, define):
-     context.Message('Checking if compiler supplies %s... ' % (define,))
-     ret = context.TryLink("""
-@@ -708,7 +672,6 @@ config = Configure(env, custom_tests={
-     'CheckCompilerOption': CheckCompilerOption,
-     'CheckHeaderDefines': CheckHeaderDefines,
-     'CheckPKG': CheckPKG,
--    'CheckSizeOf': CheckSizeOf,
-     'CheckXsltproc': CheckXsltproc,
-     'GetPythonValue': GetPythonValue,
-     })
-@@ -1043,7 +1006,8 @@ else:
-             confdefs.append("/* #undef HAVE_%s_H */\n"
-                             % hdr.replace("/", "_").upper())
- 
--    sizeof_time_t = config.CheckSizeOf("time_t")
-+    sizeof_time_t = config.CheckTypeSize('time_t',
-+                                         includes='#include <time.h>\n')
-     confdefs.append("#define SIZEOF_TIME_T %s\n" % sizeof_time_t)
-     announce("sizeof(time_t) is %s" % sizeof_time_t)
-     if 4 >= int(sizeof_time_t):
diff --git a/patches/gpsd-3.20/0002-SConstruct-Always-install-xpgs-xgpsspeed-programs-ma.patch b/patches/gpsd-3.20/0002-SConstruct-Always-install-xpgs-xgpsspeed-programs-ma.patch
deleted file mode 100644
index 5800867b8..000000000
--- a/patches/gpsd-3.20/0002-SConstruct-Always-install-xpgs-xgpsspeed-programs-ma.patch
+++ /dev/null
@@ -1,148 +0,0 @@
-From: "Gary E. Miller" <gem@rellim.com>
-Date: Mon, 6 Jan 2020 12:29:10 -0800
-Subject: [PATCH] SConstruct: Always install xpgs/xgpsspeed programs, man
- pages.
-
-Now the xgps/xgpsspeed dependencies are tested at build time but not
-mandatory.  The dependencies need to be installed for the programs to
-run.
----
- SConstruct | 75 ++++++++++++++++++++++++++------------------------------------
- 1 file changed, 31 insertions(+), 44 deletions(-)
-
-diff --git a/SConstruct b/SConstruct
-index bd008207011d..cfd1c4164337 100644
---- a/SConstruct
-+++ b/SConstruct
-@@ -1179,15 +1179,13 @@ def polystr(o):
- 
- 
- if helping:
--
-     # If helping just get usable config info from the local Python
-     target_python_path = ''
-     py_config_text = str(eval(PYTHON_CONFIG_CALL))
-     python_libdir = str(eval(PYTHON_LIBDIR_CALL))
- 
--else:
--
--    if config.env['python'] and config.env['target_python']:
-+elif config.env['python']:
-+    if config.env['target_python']:
-         try:
-             config.CheckProg
-         except AttributeError:  # Older scons versions don't have CheckProg
-@@ -1197,6 +1195,7 @@ else:
-         if not target_python_path:
-             announce("Target Python doesn't exist - disabling Python.")
-             config.env['python'] = False
-+
-     if config.env['python']:
-         # Maximize consistency by using the reported sys.executable
-         target_python_path = config.GetPythonValue('exe path',
-@@ -1235,41 +1234,36 @@ else:
-             imp.find_module('serial')
-             announce("Python module serial (pyserial) found.")
-         except ImportError:
--            # no pycairo, don't build xgps, xgpsspeed
-+            # no pyserial, used by ubxtool and zerk
-             announce("WARNING: Python module serial (pyserial) not found.")
--            config.env['xgps'] = False
- 
--        if config.env['xgps']:
--            # check for pycairo
--            try:
--                imp.find_module('cairo')
--                announce("Python module cairo (pycairo) found.")
--            except ImportError:
--                # no pycairo, don't build xgps, xgpsspeed
--                announce("WARNING: Python module cairo (pycairo) not found.")
--                config.env['xgps'] = False
--
--            # check for pygobject
--            try:
--                imp.find_module('gi')
--                announce("Python module gi (pygobject) found.")
--            except ImportError:
--                # no pygobject, don't build xgps, xgpsspeed
--                announce("WARNING: Python module gi (pygobject) not found.")
--                config.env['xgps'] = False
-+        # check for pycairo
-+        try:
-+            imp.find_module('cairo')
-+            announce("Python module cairo (pycairo) found.")
-+        except ImportError:
-+            # no pycairo, used by xgps, xgpsspeed
-+            announce("WARNING: Python module cairo (pycairo) not found.")
- 
--            if not config.CheckPKG('gtk+-3.0'):
--                config.env['xgps'] = False
-+        # check for pygobject
-+        try:
-+            imp.find_module('gi')
-+            announce("Python module gi (pygobject) found.")
-+        except ImportError:
-+            # no pycairo, used by xgps, xgpsspeed
-+            announce("WARNING: Python module gi (pygobject) not found.")
- 
-+        # gtk+ needed by pygobject
-+        config.CheckPKG('gtk+-3.0')
- 
--if config.env['python']:  # May have been turned off by error
--    config.env['PYTHON'] = polystr(target_python_path)
--    # For regress-driver
--    config.env['ENV']['PYTHON'] = polystr(target_python_path)
--    py_config_vars = ast.literal_eval(py_config_text.decode())
--    py_config_vars = [[] if x is None else x for x in py_config_vars]
--    python_config = dict(zip(PYTHON_CONFIG_NAMES, py_config_vars))
--    announce(python_config)
-+        config.env['PYTHON'] = polystr(target_python_path)
-+        # For regress-driver
-+        config.env['ENV']['PYTHON'] = polystr(target_python_path)
-+        py_config_vars = ast.literal_eval(py_config_text.decode())
-+        py_config_vars = [[] if x is None else x for x in py_config_vars]
-+        python_config = dict(zip(PYTHON_CONFIG_NAMES, py_config_vars))
-+        # debug
-+        # announce(python_config)
- 
- 
- env = config.Finish()
-@@ -1664,15 +1658,13 @@ else:
-         "man/gpsfake.1": "man/gpsfake.xml",
-         "man/gpsprof.1": "man/gpsprof.xml",
-         "man/ubxtool.1": "man/ubxtool.xml",
-+        "man/xgps.1": "man/gps.xml",
-+        "man/xgpsspeed.1": "man/gps.xml",
-         "man/zerk.1": "man/zerk.xml",
-     }
- 
-     if env['xgps']:
-         python_progs.extend(["xgps", "xgpsspeed"])
--        python_manpages.update({
--            "man/xgps.1": "man/gps.xml",
--            "man/xgpsspeed.1": "man/gps.xml",
--        })
-     else:
-         announce("WARNING: xgps and xgpsspeed will not be installed")
- 
-@@ -1961,11 +1953,6 @@ if tiocmiwait:
-     })
- 
- all_manpages = list(base_manpages.keys())
--other_manpages = [
--                  "man/gegps.1",
--                  "man/xgps.1",
--                  "man/xgpsspeed.1",
--                  ]
- 
- if python_manpages:
-     all_manpages += list(python_manpages.keys())
-@@ -2701,7 +2688,7 @@ Utility('udev-test', '', ['$SRCDIR/gpsd -N -n -F /var/run/gpsd.sock -D 5', ])
- # Dummy target for cleaning misc files
- clean_misc = env.Alias('clean-misc')
- # Since manpage targets are disabled in clean mode, we cover them here
--env.Clean(clean_misc, all_manpages + other_manpages)
-+env.Clean(clean_misc, all_manpages)
- # Clean compiled Python
- env.Clean(clean_misc,
-           glob.glob('*.pyc') + glob.glob('gps/*.pyc') +
diff --git a/patches/gpsd-3.20/0003-SConstruct-Always-install-xgps-.-Only-test-if-deps-f.patch b/patches/gpsd-3.20/0003-SConstruct-Always-install-xgps-.-Only-test-if-deps-f.patch
deleted file mode 100644
index a05f411be..000000000
--- a/patches/gpsd-3.20/0003-SConstruct-Always-install-xgps-.-Only-test-if-deps-f.patch
+++ /dev/null
@@ -1,108 +0,0 @@
-From: "Gary E. Miller" <gem@rellim.com>
-Date: Mon, 6 Jan 2020 14:30:58 -0800
-Subject: [PATCH] SConstruct: Always install xgps*. Only test if deps found.
-
-Now no build time deps for xgps*.  Just runtime deps.
----
- SConstruct | 35 +++++++++++++++++++++++++----------
- 1 file changed, 25 insertions(+), 10 deletions(-)
-
-diff --git a/SConstruct b/SConstruct
-index cfd1c4164337..7b4a63f817f9 100644
---- a/SConstruct
-+++ b/SConstruct
-@@ -1178,11 +1178,15 @@ def polystr(o):
-     raise ValueError
- 
- 
-+# flag that we have xgps* dependencies, so xgps* should run OK
-+config.env['xgps_deps'] = False
-+
- if helping:
-     # If helping just get usable config info from the local Python
-     target_python_path = ''
-     py_config_text = str(eval(PYTHON_CONFIG_CALL))
-     python_libdir = str(eval(PYTHON_LIBDIR_CALL))
-+    config.env['xgps_deps'] = False
- 
- elif config.env['python']:
-     if config.env['target_python']:
-@@ -1237,12 +1241,14 @@ elif config.env['python']:
-             # no pyserial, used by ubxtool and zerk
-             announce("WARNING: Python module serial (pyserial) not found.")
- 
-+        config.env['xgps_deps'] = True
-         # check for pycairo
-         try:
-             imp.find_module('cairo')
-             announce("Python module cairo (pycairo) found.")
-         except ImportError:
-             # no pycairo, used by xgps, xgpsspeed
-+            config.env['xgps_deps'] = False
-             announce("WARNING: Python module cairo (pycairo) not found.")
- 
-         # check for pygobject
-@@ -1251,10 +1257,17 @@ elif config.env['python']:
-             announce("Python module gi (pygobject) found.")
-         except ImportError:
-             # no pycairo, used by xgps, xgpsspeed
-+            config.env['xgps_deps'] = False
-             announce("WARNING: Python module gi (pygobject) not found.")
- 
-         # gtk+ needed by pygobject
--        config.CheckPKG('gtk+-3.0')
-+        if not config.CheckPKG('gtk+-3.0'):
-+            config.env['xgps_deps'] = False
-+            announce("WARNING: gtk+-3.0 nnot found.")
-+
-+        if not env['xgps']:
-+            # xgps* turned off by option
-+            config.env['xgps_deps'] = False
- 
-         config.env['PYTHON'] = polystr(target_python_path)
-         # For regress-driver
-@@ -1634,7 +1647,14 @@ if not env['python']:
-     python_targets = []
- else:
-     # installed python programs
--    python_progs = ["gegps", "gpscat", "gpsfake", "gpsprof", "ubxtool", "zerk"]
-+    python_progs = ["gegps",
-+                    "gpscat",
-+                    "gpsfake",
-+                    "gpsprof",
-+                    "ubxtool",
-+                    "xgps",
-+                    "xgpsspeed",
-+                    "zerk"]
-     python_deps = {'gpscat': 'packet'}
- 
-     # python misc helpers and stuff
-@@ -1663,11 +1683,6 @@ else:
-         "man/zerk.1": "man/zerk.xml",
-     }
- 
--    if env['xgps']:
--        python_progs.extend(["xgps", "xgpsspeed"])
--    else:
--        announce("WARNING: xgps and xgpsspeed will not be installed")
--
-     # Glob() has to be run after all buildable objects defined
-     python_modules = Glob('gps/*.py', strings=True)
- 
-@@ -2410,13 +2425,13 @@ method_regress = UtilityWithHerald(
-         '$SRCDIR/tests/test_packet -c >/dev/null', ])
- 
- # Test the xgps/xgpsspeed dependencies
--if not env['python'] or not env['xgps']:
--    test_xgps_deps = None
--else:
-+if env['xgps_deps']:
-     test_xgps_deps = UtilityWithHerald(
-         'Testing xgps/xgpsspeed dependencies (since xgps=yes)...',
-         'test-xgps-deps', [], [
-             '$PYTHON $SRCDIR/test_xgps_deps.py'])
-+else:
-+    test_xgps_deps = None
- 
- # Run a valgrind audit on the daemon  - not in normal tests
- valgrind_audit = Utility('valgrind-audit', [
diff --git a/patches/gpsd-3.20/0004-SConstruct-Skip-sizeof-time_t-test-when-cross-compil.patch b/patches/gpsd-3.20/0004-SConstruct-Skip-sizeof-time_t-test-when-cross-compil.patch
deleted file mode 100644
index 9f9c0cd69..000000000
--- a/patches/gpsd-3.20/0004-SConstruct-Skip-sizeof-time_t-test-when-cross-compil.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From: Jeffery To <jeffery.to@gmail.com>
-Date: Fri, 17 Jan 2020 06:09:33 +0800
-Subject: [PATCH] SConstruct: Skip sizeof(time_t) test when cross-compiling
-
-Fixes #48.
----
- SConstruct | 18 +++++++++++++-----
- 1 file changed, 13 insertions(+), 5 deletions(-)
-
-diff --git a/SConstruct b/SConstruct
-index 7b4a63f817f9..bf682a03e087 100644
---- a/SConstruct
-+++ b/SConstruct
-@@ -1006,12 +1006,20 @@ else:
-             confdefs.append("/* #undef HAVE_%s_H */\n"
-                             % hdr.replace("/", "_").upper())
- 
--    sizeof_time_t = config.CheckTypeSize('time_t',
--                                         includes='#include <time.h>\n')
-+    if not env['target']:
-+        sizeof_time_t = config.CheckTypeSize('time_t',
-+                                             includes='#include <time.h>\n')
-+        if 0 < sizeof_time_t:
-+            announce("sizeof(time_t) is %s" % sizeof_time_t)
-+            if 4 >= sizeof_time_t:
-+                announce("WARNING: time_t is too small.  It will fail in 2038")
-+        else:
-+            announce("WARNING: could not get sizeof(time_t)")
-+            sizeof_time_t = 8
-+    else:
-+        announce("Not checking sizeof(time_t) when cross-compiling")
-+        sizeof_time_t = 8
-     confdefs.append("#define SIZEOF_TIME_T %s\n" % sizeof_time_t)
--    announce("sizeof(time_t) is %s" % sizeof_time_t)
--    if 4 >= int(sizeof_time_t):
--        announce("WARNING: time_t is too small.  It will fail in 2038")
- 
-     # check function after libraries, because some function require libraries
-     # for example clock_gettime() require librt on Linux glibc < 2.17
diff --git a/patches/gpsd-3.20/0005-Fix-merging-and-using-of-python-flags.patch b/patches/gpsd-3.20/0005-Fix-merging-and-using-of-python-flags.patch
deleted file mode 100644
index e4139f66c..000000000
--- a/patches/gpsd-3.20/0005-Fix-merging-and-using-of-python-flags.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From: Bernd Zeimetz <bernd@bzed.de>
-Date: Sat, 17 Aug 2019 01:27:08 +0200
-Subject: [PATCH] Fix merging and using of python *flags.
-
-As follow-up for d0e0864c2802860ff561fe0b39939b63d38b8c70,
-also fix the handling of python build flags.
----
- SConstruct | 13 ++++++++-----
- 1 file changed, 8 insertions(+), 5 deletions(-)
-
-diff --git a/SConstruct b/SConstruct
-index bf682a03e087..d71dfab48db3 100644
---- a/SConstruct
-+++ b/SConstruct
-@@ -1169,7 +1169,7 @@ else:
- 
- PYTHON_LIBDIR_CALL = 'sysconfig.get_python_lib()'
- 
--PYTHON_CONFIG_NAMES = ['CC', 'CXX', 'OPT', 'BASECFLAGS',
-+PYTHON_CONFIG_NAMES = ['CC', 'CXX', 'OPT', 'CFLAGS',
-                        'CCSHARED', 'LDSHARED', 'SO', 'INCLUDEPY', 'LDFLAGS']
- PYTHON_CONFIG_QUOTED = ["'%s'" % s for s in PYTHON_CONFIG_NAMES]
- PYTHON_CONFIG_CALL = ('sysconfig.get_config_vars(%s)'
-@@ -1753,14 +1753,17 @@ else:
-     ldshared = ldshared.replace('-fPIE', '')
-     ldshared = ldshared.replace('-pie', '')
-     python_env.Replace(SHLINKFLAGS=[],
--                       LDFLAGS=python_config['LDFLAGS'],
-+                       LDFLAGS=[],
-                        LINK=ldshared,
-                        SHLIBPREFIX="",
-                        SHLIBSUFFIX=python_config['SO'],
-                        CPPPATH=[python_config['INCLUDEPY']],
--                       CPPFLAGS=python_config['OPT'],
--                       CFLAGS=python_config['BASECFLAGS'],
--                       CXXFLAGS=python_config['BASECFLAGS'])
-+                       CPPFLAGS=[],
-+                       CFLAGS=[],
-+                       CXXFLAGS=[])
-+
-+    for flag in ['CFLAGS','LDFLAGS','OPT']:
-+        python_env.MergeFlags(Split(python_config[flag]))
- 
-     python_objects = {}
-     python_compiled_libs = {}
diff --git a/patches/gpsd-3.20/0006-SConstruct-Remove-redundant-CheckHeaderDefines.patch b/patches/gpsd-3.20/0006-SConstruct-Remove-redundant-CheckHeaderDefines.patch
deleted file mode 100644
index a1519a723..000000000
--- a/patches/gpsd-3.20/0006-SConstruct-Remove-redundant-CheckHeaderDefines.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From: "Gary E. Miller" <gem@rellim.com>
-Date: Wed, 8 Jan 2020 14:56:58 -0800
-Subject: [PATCH] SConstruct: Remove redundant CheckHeaderDefines()
-
----
- SConstruct | 19 +------------------
- 1 file changed, 1 insertion(+), 18 deletions(-)
-
-diff --git a/SConstruct b/SConstruct
-index d71dfab48db3..1a0463f67a41 100644
---- a/SConstruct
-+++ b/SConstruct
-@@ -581,22 +581,6 @@ def CheckCompilerOption(context, option):
-     return ret
- 
- 
--def CheckHeaderDefines(context, file, define):
--    context.Message('Checking if %s supplies %s... ' % (file, define))
--    ret = context.TryLink("""
--        #include <%s>
--        #ifndef %s
--        #error %s is not defined
--        #endif
--        int main(int argc, char **argv) {
--            (void) argc; (void) argv;
--            return 0;
--        }
--    """ % (file, define, define), '.c')
--    context.Result(ret)
--    return ret
--
--
- def CheckCompilerDefines(context, define):
-     context.Message('Checking if compiler supplies %s... ' % (define,))
-     ret = context.TryLink("""
-@@ -670,7 +654,6 @@ config = Configure(env, custom_tests={
-     'CheckC11': CheckC11,
-     'CheckCompilerDefines': CheckCompilerDefines,
-     'CheckCompilerOption': CheckCompilerOption,
--    'CheckHeaderDefines': CheckHeaderDefines,
-     'CheckPKG': CheckPKG,
-     'CheckXsltproc': CheckXsltproc,
-     'GetPythonValue': GetPythonValue,
-@@ -1046,7 +1029,7 @@ else:
-         if config.env["magic_hat"]:
-             announce("Forcing magic_hat=no since RFC2783 API is unavailable")
-             config.env["magic_hat"] = False
--    tiocmiwait = config.CheckHeaderDefines("sys/ioctl.h", "TIOCMIWAIT")
-+    tiocmiwait = config.CheckDeclaration("TIOCMIWAIT", "#include <sys/ioctl.h>")
-     if not tiocmiwait and not kpps:
-         announce("Neither TIOCMIWAIT nor RFC2783 API is available)")
-         if config.env["timeservice"]:
diff --git a/patches/gpsd-3.20/0007-SConstruct-remove-redundant-CheckCompilerDefines.patch b/patches/gpsd-3.20/0007-SConstruct-remove-redundant-CheckCompilerDefines.patch
deleted file mode 100644
index c99949f6a..000000000
--- a/patches/gpsd-3.20/0007-SConstruct-remove-redundant-CheckCompilerDefines.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From: "Gary E. Miller" <gem@rellim.com>
-Date: Wed, 8 Jan 2020 15:25:10 -0800
-Subject: [PATCH] SConstruct: remove redundant CheckCompilerDefines()
-
-Built in CheckDeclaration() works fine.
----
- SConstruct | 25 ++++---------------------
- 1 file changed, 4 insertions(+), 21 deletions(-)
-
-diff --git a/SConstruct b/SConstruct
-index 1a0463f67a41..ea87d9204e60 100644
---- a/SConstruct
-+++ b/SConstruct
-@@ -581,23 +581,7 @@ def CheckCompilerOption(context, option):
-     return ret
- 
- 
--def CheckCompilerDefines(context, define):
--    context.Message('Checking if compiler supplies %s... ' % (define,))
--    ret = context.TryLink("""
--        #ifndef %s
--        #error %s is not defined
--        #endif
--        int main(int argc, char **argv) {
--            (void) argc; (void) argv;
--            return 0;
--        }
--    """ % (define, define), '.c')
--    context.Result(ret)
--    return ret
--
- # Check if this compiler is C11 or better
--
--
- def CheckC11(context):
-     context.Message('Checking if compiler is C11... ')
-     ret = context.TryLink("""
-@@ -652,7 +636,6 @@ env.Prepend(LIBPATH=[os.path.realpath(os.curdir)])
- # CheckXsltproc works, but result is incorrectly saved as "no"
- config = Configure(env, custom_tests={
-     'CheckC11': CheckC11,
--    'CheckCompilerDefines': CheckCompilerDefines,
-     'CheckCompilerOption': CheckCompilerOption,
-     'CheckPKG': CheckPKG,
-     'CheckXsltproc': CheckXsltproc,
-@@ -926,7 +909,7 @@ else:
-     # check for C11 or better, and __STDC__NO_ATOMICS__ is not defined
-     # before looking for stdatomic.h
-     if ((config.CheckC11() and
--         not config.CheckCompilerDefines("__STDC_NO_ATOMICS__") and
-+         not config.CheckDeclaration("__STDC_NO_ATOMICS__") and
-          config.CheckHeader("stdatomic.h"))):
-         confdefs.append("#define HAVE_STDATOMIC_H 1\n")
-     else:
-@@ -940,9 +923,9 @@ else:
- 
-     # endian.h is required for rtcm104v2 unless the compiler defines
-     # __ORDER_BIG_ENDIAN__, __ORDER_LITTLE_ENDIAN__ and __BYTE_ORDER__
--    if config.CheckCompilerDefines("__ORDER_BIG_ENDIAN__") \
--       and config.CheckCompilerDefines("__ORDER_LITTLE_ENDIAN__") \
--       and config.CheckCompilerDefines("__BYTE_ORDER__"):
-+    if ((config.CheckDeclaration("__ORDER_BIG_ENDIAN__") and
-+         config.CheckDeclaration("__ORDER_LITTLE_ENDIAN__") and
-+         config.CheckDeclaration("__BYTE_ORDER__"))):
-         confdefs.append("#define HAVE_BUILTIN_ENDIANNESS 1\n")
-         confdefs.append("/* #undef HAVE_ENDIAN_H */\n")
-         confdefs.append("/* #undef HAVE_SYS_ENDIAN_H */\n")
diff --git a/patches/gpsd-3.20/0008-SConstruct-GetPythonValue-and-CheckPKG-were-using-wr.patch b/patches/gpsd-3.20/0008-SConstruct-GetPythonValue-and-CheckPKG-were-using-wr.patch
deleted file mode 100644
index 4db5abd2c..000000000
--- a/patches/gpsd-3.20/0008-SConstruct-GetPythonValue-and-CheckPKG-were-using-wr.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From: "Gary E. Miller" <gem@rellim.com>
-Date: Wed, 8 Jan 2020 15:46:03 -0800
-Subject: [PATCH] SConstruct: GetPythonValue() and CheckPKG were using wrong
- env.
-
----
- SConstruct | 9 ++++++---
- 1 file changed, 6 insertions(+), 3 deletions(-)
-
-diff --git a/SConstruct b/SConstruct
-index ea87d9204e60..fc5ab39bfad6 100644
---- a/SConstruct
-+++ b/SConstruct
-@@ -524,7 +524,7 @@ values can be listed with 'scons -h'.
- def CheckPKG(context, name):
-     context.Message('Checking pkg-config for %s... ' % name)
-     ret = context.TryAction('%s --exists \'%s\''
--                            % (env['PKG_CONFIG'], name))[0]
-+                            % (context.env['PKG_CONFIG'], name))[0]
-     context.Result(ret)
-     return ret
- 
-@@ -599,8 +599,11 @@ def CheckC11(context):
- 
- def GetPythonValue(context, name, imp, expr, brief=False):
-     context.Message('Obtaining Python %s... ' % name)
-+
-+    # what is this about?
-     context.sconf.cached = 0  # Avoid bogus "(cached)"
--    if not env['target_python']:
-+
-+    if not context.env['target_python']:
-         status, value = 0, str(eval(expr))
-     else:
-         command = [target_python_path, '-c', '%s; print(%s)' % (imp, expr)]
-@@ -615,7 +618,7 @@ def GetPythonValue(context, name, imp, expr, brief=False):
-             announce('Python command "%s" failed - disabling Python.\n'
-                      'Python components will NOT be installed' %
-                      command[2])
--            env['python'] = False
-+            context.env['python'] = False
-     context.Result('failed' if status else 'ok' if brief else value)
-     return value
- 
diff --git a/patches/gpsd-3.20/0009-SConstruct-Fix-GetPythonValue-for-python-3.patch b/patches/gpsd-3.20/0009-SConstruct-Fix-GetPythonValue-for-python-3.patch
deleted file mode 100644
index 88c8cfbaa..000000000
--- a/patches/gpsd-3.20/0009-SConstruct-Fix-GetPythonValue-for-python-3.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From: "Gary E. Miller" <gem@rellim.com>
-Date: Wed, 8 Jan 2020 17:25:16 -0800
-Subject: [PATCH] SConstruct: Fix GetPythonValue() for python 3.
-
----
- SConstruct | 19 +++++++++++++------
- 1 file changed, 13 insertions(+), 6 deletions(-)
-
-diff --git a/SConstruct b/SConstruct
-index fc5ab39bfad6..a5c41e8f4803 100644
---- a/SConstruct
-+++ b/SConstruct
-@@ -604,7 +604,8 @@ def GetPythonValue(context, name, imp, expr, brief=False):
-     context.sconf.cached = 0  # Avoid bogus "(cached)"
- 
-     if not context.env['target_python']:
--        status, value = 0, str(eval(expr))
-+        status = 0
-+        value = str(eval(expr))
-     else:
-         command = [target_python_path, '-c', '%s; print(%s)' % (imp, expr)]
-         try:
-@@ -619,7 +620,14 @@ def GetPythonValue(context, name, imp, expr, brief=False):
-                      'Python components will NOT be installed' %
-                      command[2])
-             context.env['python'] = False
--    context.Result('failed' if status else 'ok' if brief else value)
-+    if 0 != status:
-+        result = 'failed'
-+    elif brief:
-+        result = 'ok'
-+    else:
-+        # context.Result() confused by bytes
-+        result = polystr(value)
-+    context.Result(result)
-     return value
- 
- 
-@@ -1181,15 +1189,14 @@ elif config.env['python']:
-         # Maximize consistency by using the reported sys.executable
-         target_python_path = config.GetPythonValue('exe path',
-                                                    'import sys',
--                                                   'sys.executable',
--                                                   brief=cleaning)
-+                                                   'sys.executable')
-+        # python module directory
-         if config.env['python_libdir']:
-             python_libdir = config.env['python_libdir']
-         else:
-             python_libdir = config.GetPythonValue('lib dir',
-                                                   PYTHON_SYSCONFIG_IMPORT,
--                                                  PYTHON_LIBDIR_CALL,
--                                                  brief=cleaning)
-+                                                  PYTHON_LIBDIR_CALL)
-             # follow FHS, put in /usr/local/libXX, not /usr/libXX
-             # may be lib, lib32 or lib64
-             python_libdir = polystr(python_libdir)
diff --git a/patches/gpsd-3.20/0010-SConstruct-move-more-checks-into-GetPythonValue.patch b/patches/gpsd-3.20/0010-SConstruct-move-more-checks-into-GetPythonValue.patch
deleted file mode 100644
index a68169431..000000000
--- a/patches/gpsd-3.20/0010-SConstruct-move-more-checks-into-GetPythonValue.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-From: "Gary E. Miller" <gem@rellim.com>
-Date: Wed, 8 Jan 2020 18:04:15 -0800
-Subject: [PATCH] SConstruct: move more checks into GetPythonValue()
-
-So the target python is used, not the python used to run scons.
----
- SConstruct | 36 ++++++++++++++++--------------------
- 1 file changed, 16 insertions(+), 20 deletions(-)
-
-diff --git a/SConstruct b/SConstruct
-index a5c41e8f4803..9f88fa347b9a 100644
---- a/SConstruct
-+++ b/SConstruct
-@@ -33,7 +33,6 @@ from __future__ import print_function
- import ast
- import functools
- import glob
--import imp         # for imp.find_module('gps'), imp deprecated in 3.4
- import operator
- import os
- import pickle
-@@ -598,12 +597,14 @@ def CheckC11(context):
- 
- 
- def GetPythonValue(context, name, imp, expr, brief=False):
--    context.Message('Obtaining Python %s... ' % name)
-+    """Get a value from the target python, not the running one."""
-+    context.Message('Checking Python %s... ' % name)
- 
-     # what is this about?
-     context.sconf.cached = 0  # Avoid bogus "(cached)"
- 
-     if not context.env['target_python']:
-+        # FIXME: this ignores imp
-         status = 0
-         value = str(eval(expr))
-     else:
-@@ -616,10 +617,8 @@ def GetPythonValue(context, name, imp, expr, brief=False):
-             value = value.strip()
-         else:
-             value = ''
--            announce('Python command "%s" failed - disabling Python.\n'
--                     'Python components will NOT be installed' %
--                     command[2])
--            context.env['python'] = False
-+            # do not disable python because this failed
-+            # maybe testing for newer python feature
-     if 0 != status:
-         result = 'failed'
-     elif brief:
-@@ -1023,7 +1022,8 @@ else:
-         if config.env["magic_hat"]:
-             announce("Forcing magic_hat=no since RFC2783 API is unavailable")
-             config.env["magic_hat"] = False
--    tiocmiwait = config.CheckDeclaration("TIOCMIWAIT", "#include <sys/ioctl.h>")
-+    tiocmiwait = config.CheckDeclaration("TIOCMIWAIT",
-+                                         "#include <sys/ioctl.h>")
-     if not tiocmiwait and not kpps:
-         announce("Neither TIOCMIWAIT nor RFC2783 API is available)")
-         if config.env["timeservice"]:
-@@ -1218,28 +1218,24 @@ elif config.env['python']:
-             config.env['aiogps'] = True
- 
-         # check for pyserial
--        try:
--            imp.find_module('serial')
--            announce("Python module serial (pyserial) found.")
--        except ImportError:
-+        if not config.GetPythonValue('module serial (pyserial)',
-+                                     'import serial', '"found"'):
-             # no pyserial, used by ubxtool and zerk
--            announce("WARNING: Python module serial (pyserial) not found.")
-+            announce("WARNING: ubxtool and zerk are missing optional "
-+                     "runtime module serial")
- 
-         config.env['xgps_deps'] = True
-+
-         # check for pycairo
--        try:
--            imp.find_module('cairo')
--            announce("Python module cairo (pycairo) found.")
--        except ImportError:
-+        if not config.GetPythonValue('module cairo (pycairo)',
-+                                     'import cairo', '"found"'):
-             # no pycairo, used by xgps, xgpsspeed
-             config.env['xgps_deps'] = False
-             announce("WARNING: Python module cairo (pycairo) not found.")
- 
-         # check for pygobject
--        try:
--            imp.find_module('gi')
--            announce("Python module gi (pygobject) found.")
--        except ImportError:
-+        if not config.GetPythonValue('module gi (pygobject)',
-+                                     'import gi', '"found"'):
-             # no pycairo, used by xgps, xgpsspeed
-             config.env['xgps_deps'] = False
-             announce("WARNING: Python module gi (pygobject) not found.")
diff --git a/patches/gpsd-3.20/0011-SConstruct-Check-target-python-version-not-scons-pyt.patch b/patches/gpsd-3.20/0011-SConstruct-Check-target-python-version-not-scons-pyt.patch
deleted file mode 100644
index 19d3e3b23..000000000
--- a/patches/gpsd-3.20/0011-SConstruct-Check-target-python-version-not-scons-pyt.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From: "Gary E. Miller" <gem@rellim.com>
-Date: Wed, 8 Jan 2020 18:38:11 -0800
-Subject: [PATCH] SConstruct: Check target python version, not scons python
- version.
-
----
- SConstruct | 11 +++++++----
- 1 file changed, 7 insertions(+), 4 deletions(-)
-
-diff --git a/SConstruct b/SConstruct
-index 9f88fa347b9a..a02a2a897d32 100644
---- a/SConstruct
-+++ b/SConstruct
-@@ -1209,11 +1209,14 @@ elif config.env['python']:
-                                                brief=True)
- 
-         # aiogps is only available on Python >= 3.6
--        # FIXME check target_python, not current python
--        if sys.version_info < (3, 6):
-+        sysver = config.GetPythonValue('version',
-+                                       'import sys',
-+                                       '"%d.%d" % sys.version_info[0:2]')
-+        if 3 > int(sysver[0]) or 6 > int(sysver[2]):
-             config.env['aiogps'] = False
--            announce("WARNING: Python too old: "
--                     "gps/aiogps.py will not be installed\n")
-+            announce("WARNING: Python%s too old (need 3.6): "
-+                     "gps/aiogps.py will not be installed\n" %
-+                     (sysver), end=True)
-         else:
-             config.env['aiogps'] = True
- 
diff --git a/patches/gpsd-3.20/0012-SConstruct-Simplify-GetPythonValue-.-It-now-caches-p.patch b/patches/gpsd-3.20/0012-SConstruct-Simplify-GetPythonValue-.-It-now-caches-p.patch
deleted file mode 100644
index e833a1f08..000000000
--- a/patches/gpsd-3.20/0012-SConstruct-Simplify-GetPythonValue-.-It-now-caches-p.patch
+++ /dev/null
@@ -1,174 +0,0 @@
-From: "Gary E. Miller" <gem@rellim.com>
-Date: Fri, 10 Jan 2020 16:24:58 -0800
-Subject: [PATCH] SConstruct: Simplify GetPythonValue(). It now caches
- properly.
-
----
- SConstruct | 93 ++++++++++++++++++++++++++++++++------------------------------
- 1 file changed, 48 insertions(+), 45 deletions(-)
-
-diff --git a/SConstruct b/SConstruct
-index a02a2a897d32..f45efe4e19f0 100644
---- a/SConstruct
-+++ b/SConstruct
-@@ -22,12 +22,12 @@
- # * 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.
-+#
-+# This file is Copyright (c) 2010-2020 by the GPSD project
-+# SPDX-License-Identifier: BSD-2-clause
-+#
-+# This code runs compatibly under Python 2 and 3.x for x >= 2.
-+# Preserve this property!
- from __future__ import print_function
- 
- import ast
-@@ -600,33 +600,29 @@ def GetPythonValue(context, name, imp, expr, brief=False):
-     """Get a value from the target python, not the running one."""
-     context.Message('Checking Python %s... ' % name)
- 
--    # what is this about?
--    context.sconf.cached = 0  # Avoid bogus "(cached)"
--
-     if not context.env['target_python']:
-         # FIXME: this ignores imp
--        status = 0
-+        status = 1
-         value = str(eval(expr))
-     else:
--        command = [target_python_path, '-c', '%s; print(%s)' % (imp, expr)]
--        try:
--            status, value = _getstatusoutput(command, shell=False)
--        except OSError:
--            status = -1
--        if status == 0:
--            value = value.strip()
--        else:
--            value = ''
--            # do not disable python because this failed
--            # maybe testing for newer python feature
--    if 0 != status:
--        result = 'failed'
--    elif brief:
--        result = 'ok'
--    else:
--        # context.Result() confused by bytes
--        result = polystr(value)
--    context.Result(result)
-+        command = (context.env['target_python'] + " $SOURCE > $TARGET")
-+        text = "%s; print(%s)" % (imp, expr)
-+
-+        # TryAction returns (1, outputStr), or (0, '') on fail
-+        (status, value) = context.TryAction(command, text, '.py')
-+
-+        # do not disable python because this failed
-+        # maybe testing for newer python feature
-+
-+    if 1 == status:
-+        # we could convert to str(), but caching turns it into bytes anyway
-+        value = value.strip()
-+        if brief is True:
-+            context.did_show_result = 1
-+            print("ok")
-+
-+    context.Result(value)
-+    # return value
-     return value
- 
- 
-@@ -1174,10 +1170,13 @@ if helping:
-     config.env['xgps_deps'] = False
- 
- elif config.env['python']:
-+    target_python_path = None
-     if config.env['target_python']:
-         try:
-             config.CheckProg
--        except AttributeError:  # Older scons versions don't have CheckProg
-+        except AttributeError:
-+            # scons versions before Sep 2015 (2.4.0) don't have CheckProg
-+            # gpsd only asks for 2.3.0 or higher
-             target_python_path = config.env['target_python']
-         else:
-             target_python_path = config.CheckProg(config.env['target_python'])
-@@ -1186,10 +1185,13 @@ elif config.env['python']:
-             config.env['python'] = False
- 
-     if config.env['python']:
--        # Maximize consistency by using the reported sys.executable
--        target_python_path = config.GetPythonValue('exe path',
--                                                   'import sys',
--                                                   'sys.executable')
-+        if not target_python_path:
-+            # Avoid double testing for target_python_path
-+            # Maximize consistency by using the reported sys.executable
-+            target_python_path = config.GetPythonValue('exe path',
-+                                                       'import sys',
-+                                                       'sys.executable')
-+        target_python_path = polystr(target_python_path)
-         # python module directory
-         if config.env['python_libdir']:
-             python_libdir = config.env['python_libdir']
-@@ -1207,11 +1209,18 @@ elif config.env['python']:
-                                                PYTHON_SYSCONFIG_IMPORT,
-                                                PYTHON_CONFIG_CALL,
-                                                brief=True)
-+        py_config_text = polystr(py_config_text)
-+        py_config_vars = ast.literal_eval(py_config_text)
-+        py_config_vars = [[] if x is None else x for x in py_config_vars]
-+        python_config = dict(zip(PYTHON_CONFIG_NAMES, py_config_vars))
-+        # debug
-+        # announce(python_config)
- 
-         # aiogps is only available on Python >= 3.6
-         sysver = config.GetPythonValue('version',
-                                        'import sys',
-                                        '"%d.%d" % sys.version_info[0:2]')
-+
-         if 3 > int(sysver[0]) or 6 > int(sysver[2]):
-             config.env['aiogps'] = False
-             announce("WARNING: Python%s too old (need 3.6): "
-@@ -1252,14 +1261,8 @@ elif config.env['python']:
-             # xgps* turned off by option
-             config.env['xgps_deps'] = False
- 
--        config.env['PYTHON'] = polystr(target_python_path)
--        # For regress-driver
--        config.env['ENV']['PYTHON'] = polystr(target_python_path)
--        py_config_vars = ast.literal_eval(py_config_text.decode())
--        py_config_vars = [[] if x is None else x for x in py_config_vars]
--        python_config = dict(zip(PYTHON_CONFIG_NAMES, py_config_vars))
--        # debug
--        # announce(python_config)
-+        config.env['PYTHON'] = target_python_path
-+        config.env['ENV']['PYTHON'] = target_python_path
- 
- 
- env = config.Finish()
-@@ -1859,7 +1862,7 @@ else:
- 
- 
- # Instantiate some file templates.  We'd like to use the Substfile builtin
--# but it doesn't seem to work in scons 1.20
-+# Substfile in scons 1.3.0+, since 2010
- def substituter(target, source, env):
-     substmap = (
-         ('@ANNOUNCE@',   annmail),
-@@ -2371,8 +2374,8 @@ else:
-             ' $SRCDIR/test/clientlib/*.log', ])
-     # Unit-test the bitfield extractor
-     misc_regress = Utility('misc-regress', [], [
--        '{} $SRCDIR/test_clienthelpers.py'.format(target_python_path.decode()),
--        '{} $SRCDIR/test_misc.py'.format(target_python_path.decode())
-+        '{} $SRCDIR/test_clienthelpers.py'.format(target_python_path),
-+        '{} $SRCDIR/test_misc.py'.format(target_python_path)
-     ])
- 
- 
diff --git a/patches/gpsd-3.20/0013-SConstruct-fix-polystr-for-python2.patch b/patches/gpsd-3.20/0013-SConstruct-fix-polystr-for-python2.patch
deleted file mode 100644
index 0223a2735..000000000
--- a/patches/gpsd-3.20/0013-SConstruct-fix-polystr-for-python2.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From: "Gary E. Miller" <gem@rellim.com>
-Date: Fri, 10 Jan 2020 18:43:17 -0800
-Subject: [PATCH] SConstruct: fix polystr() for python2
-
----
- SConstruct | 15 ++++++++++-----
- 1 file changed, 10 insertions(+), 5 deletions(-)
-
-diff --git a/SConstruct b/SConstruct
-index f45efe4e19f0..a4f8cdc763cd 100644
---- a/SConstruct
-+++ b/SConstruct
-@@ -1152,11 +1152,16 @@ PYTHON_CONFIG_CALL = ('sysconfig.get_config_vars(%s)'
- # ugly hack from http://www.catb.org/esr/faqs/practical-python-porting/
- # handle python2/3 strings
- def polystr(o):
--    if isinstance(o, str):
--        return o
--    if isinstance(o, bytes):
--        return str(o, encoding='latin-1')
--    raise ValueError
-+    if bytes is str:  # Python 2
-+        return str(o)
-+    else:             # python 3.
-+        if isinstance(o, str):
-+            return o
-+        if isinstance(o, bytes) or isinstance(o, bytearray):
-+            return str(o, encoding='latin1')
-+        if isinstance(o, int):
-+            return str(o)
-+        raise ValueError
- 
- 
- # flag that we have xgps* dependencies, so xgps* should run OK
diff --git a/patches/gpsd-3.20/0100-SConstruct-Use-target_python-when-constructing-exten.patch b/patches/gpsd-3.20/0100-SConstruct-Use-target_python-when-constructing-exten.patch
deleted file mode 100644
index e01d92353..000000000
--- a/patches/gpsd-3.20/0100-SConstruct-Use-target_python-when-constructing-exten.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From: Ladislav Michl <ladis@linux-mips.org>
-Date: Sun, 2 Feb 2020 00:42:42 +0100
-Subject: [PATCH] SConstruct: Use target_python when constructing extension
- name
-
----
- SConstruct | 9 +++++++--
- 1 file changed, 7 insertions(+), 2 deletions(-)
-
-diff --git a/SConstruct b/SConstruct
-index a4f8cdc763cd..cd30bb86f4ac 100644
---- a/SConstruct
-+++ b/SConstruct
-@@ -1234,6 +1234,12 @@ elif config.env['python']:
-         else:
-             config.env['aiogps'] = True
- 
-+        # get version part of python extension name
-+        ext_python_ver = config.GetPythonValue('ext version string',
-+                                               'import sys',
-+                                               '"_".join(map(str, '
-+                                               'sys.version_info))')
-+
-         # check for pyserial
-         if not config.GetPythonValue('module serial (pyserial)',
-                                      'import serial', '"found"'):
-@@ -1756,8 +1762,7 @@ else:
-             python_objects[ext].append(
-                 python_env.NoCache(
-                     python_env.SharedObject(
--                        src.split(".")[0] + '-py_' +
--                        '_'.join(['%s' % (x) for x in sys.version_info]) +
-+                        src.split(".")[0] + '-py_' + ext_python_ver +
-                         python_config['SO'], src
-                     )
-                 )
diff --git a/patches/gpsd-3.20/0102-SConstruct-HACK-use-target-INCLUDEPY.patch b/patches/gpsd-3.20/0102-SConstruct-HACK-use-target-INCLUDEPY.patch
deleted file mode 100644
index c597c8393..000000000
--- a/patches/gpsd-3.20/0102-SConstruct-HACK-use-target-INCLUDEPY.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From: Ladislav Michl <ladis@linux-mips.org>
-Date: Fri, 7 Feb 2020 10:53:19 +0100
-Subject: [PATCH] SConstruct: HACK: use target INCLUDEPY
-
-Once PTXdist's cross-python starts returning proper INCLUDEPY
-path, this hack will wanish.
-
-Signed-off-by: Ladislav Michl <ladis@linux-mips.org>
----
- SConstruct | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/SConstruct b/SConstruct
-index 841eb06b7793..3d885a17a5b9 100644
---- a/SConstruct
-+++ b/SConstruct
-@@ -1748,7 +1748,7 @@ else:
-                        LINK=ldshared,
-                        SHLIBPREFIX="",
-                        SHLIBSUFFIX=python_config['SO'],
--                       CPPPATH=[python_config['INCLUDEPY']],
-+                       CPPPATH=[os.getenv('SYSROOT') + python_config['INCLUDEPY']],
-                        CPPFLAGS=[],
-                        CFLAGS=[],
-                        CXXFLAGS=[])
diff --git a/patches/gpsd-3.20/series b/patches/gpsd-3.20/series
deleted file mode 100644
index cf6301f6d..000000000
--- a/patches/gpsd-3.20/series
+++ /dev/null
@@ -1,20 +0,0 @@
-# generated by git-ptx-patches
-#tag:base --start-number 1
-0001-SConstruct-replace-custom-CheckSizeOf-with-standard-.patch
-0002-SConstruct-Always-install-xpgs-xgpsspeed-programs-ma.patch
-0003-SConstruct-Always-install-xgps-.-Only-test-if-deps-f.patch
-0004-SConstruct-Skip-sizeof-time_t-test-when-cross-compil.patch
-0005-Fix-merging-and-using-of-python-flags.patch
-0006-SConstruct-Remove-redundant-CheckHeaderDefines.patch
-0007-SConstruct-remove-redundant-CheckCompilerDefines.patch
-0008-SConstruct-GetPythonValue-and-CheckPKG-were-using-wr.patch
-0009-SConstruct-Fix-GetPythonValue-for-python-3.patch
-0010-SConstruct-move-more-checks-into-GetPythonValue.patch
-0011-SConstruct-Check-target-python-version-not-scons-pyt.patch
-0012-SConstruct-Simplify-GetPythonValue-.-It-now-caches-p.patch
-0013-SConstruct-fix-polystr-for-python2.patch
-#tag:ptx --start-number 100
-0100-SConstruct-Use-target_python-when-constructing-exten.patch
-0101-SConstruct-Search-for-ncursesw-pkgconfig.patch
-0102-SConstruct-HACK-use-target-INCLUDEPY.patch
-# 0b0660f42833b6e75cc0bdf50a2eec25  - git-ptx-patches magic
diff --git a/patches/gpsd-3.20/0101-SConstruct-Search-for-ncursesw-pkgconfig.patch b/patches/gpsd-3.21/0001-Search-for-ncursesw-pkgconfig.patch
similarity index 80%
rename from patches/gpsd-3.20/0101-SConstruct-Search-for-ncursesw-pkgconfig.patch
rename to patches/gpsd-3.21/0001-Search-for-ncursesw-pkgconfig.patch
index ac233ca96..825c9b247 100644
--- a/patches/gpsd-3.20/0101-SConstruct-Search-for-ncursesw-pkgconfig.patch
+++ b/patches/gpsd-3.21/0001-Search-for-ncursesw-pkgconfig.patch
@@ -1,6 +1,7 @@
+From 9f82524e92f3162d9444efa71456f0be4f1e8a32 Mon Sep 17 00:00:00 2001
 From: Ladislav Michl <ladis@linux-mips.org>
 Date: Fri, 25 Oct 2019 14:18:30 +0200
-Subject: [PATCH] SConstruct: Search for ncursesw pkgconfig
+Subject: [PATCH 1/2] Search for ncursesw pkgconfig
 
 PTXDist can be configured to build wide char version of ncurses
 which SConstruct is unaware of.
@@ -11,10 +12,10 @@ Signed-off-by: Ladislav Michl <ladis@linux-mips.org>
  1 file changed, 2 insertions(+)
 
 diff --git a/SConstruct b/SConstruct
-index cd30bb86f4ac..841eb06b7793 100644
+index 68400bae8..d1c7a5a46 100644
 --- a/SConstruct
 +++ b/SConstruct
-@@ -807,6 +807,8 @@ else:
+@@ -1033,6 +1033,8 @@ else:
              ncurseslibs = pkg_config('ncurses', rpath_hack=True)
              if config.CheckPKG('tinfo'):
                  ncurseslibs += pkg_config('tinfo', rpath_hack=True)
@@ -23,3 +24,6 @@ index cd30bb86f4ac..841eb06b7793 100644
          # It's not yet known whether rpath_hack is appropriate for
          # ncurses5-config.
          elif WhereIs('ncurses5-config'):
+-- 
+2.28.0
+
diff --git a/patches/gpsd-3.21/0002-SConstruct-Use-target-option-to-decide-whenewer-to-r.patch b/patches/gpsd-3.21/0002-SConstruct-Use-target-option-to-decide-whenewer-to-r.patch
new file mode 100644
index 000000000..aaf73ab13
--- /dev/null
+++ b/patches/gpsd-3.21/0002-SConstruct-Use-target-option-to-decide-whenewer-to-r.patch
@@ -0,0 +1,28 @@
+From 0a88c834d6db7c899bf6482849a4c7e47ecc3637 Mon Sep 17 00:00:00 2001
+From: Ladislav Michl <ladis@linux-mips.org>
+Date: Sun, 2 Feb 2020 09:45:04 +0100
+Subject: [PATCH 2/2] SConstruct: Use 'target' option to decide whenewer to
+ restart systemd
+
+Besides gpsd is able to cross-compile without sysroot option, it makes
+this cross-compile check aligned with the one for sizeof(time_t).
+---
+ SConstruct | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/SConstruct b/SConstruct
+index d1c7a5a46..60d049103 100644
+--- a/SConstruct
++++ b/SConstruct
+@@ -2819,7 +2819,7 @@ udev_install = Utility('udev-install', 'install', [
+ 
+ if env['systemd']:
+     env.Requires(udev_install, systemd_install)
+-    if not env["sysroot"]:
++    if not env['target']:
+         systemctl_daemon_reload = Utility('systemctl-daemon-reload', '',
+                                           ['systemctl daemon-reload || true'])
+         env.AlwaysBuild(systemctl_daemon_reload)
+-- 
+2.28.0
+
diff --git a/patches/gpsd-3.21/series b/patches/gpsd-3.21/series
new file mode 100644
index 000000000..b333b033b
--- /dev/null
+++ b/patches/gpsd-3.21/series
@@ -0,0 +1,2 @@
+0001-Search-for-ncursesw-pkgconfig.patch
+0002-SConstruct-Use-target-option-to-decide-whenewer-to-r.patch
diff --git a/projectroot/usr/lib/systemd/system/gpsd.socket b/projectroot/usr/lib/systemd/system/gpsd.socket
index bc7682116..17f5b9d8d 100644
--- a/projectroot/usr/lib/systemd/system/gpsd.socket
+++ b/projectroot/usr/lib/systemd/system/gpsd.socket
@@ -2,7 +2,7 @@
 Description=GPS (Global Positioning System) Daemon Sockets
 
 [Socket]
-ListenStream=/var/run/gpsd.sock
+ListenStream=/run/gpsd.sock
 ListenStream=[::1]:2947
 ListenStream=127.0.0.1:2947
 # To allow gpsd remote access, start gpsd with the -G option and
diff --git a/projectroot/usr/lib/systemd/system/gpsdctl@.service b/projectroot/usr/lib/systemd/system/gpsdctl@.service
index 24d291408..57b3ace9c 100644
--- a/projectroot/usr/lib/systemd/system/gpsdctl@.service
+++ b/projectroot/usr/lib/systemd/system/gpsdctl@.service
@@ -6,7 +6,7 @@ After=dev-%i.device
 
 [Service]
 Type=oneshot
-Environment="GPSD_SOCKET=/var/run/gpsd.sock"
+Environment="GPSD_SOCKET=/run/gpsd.sock"
 RemainAfterExit=yes
-ExecStart=/usr/bin/gpsdctl add /dev/%I
-ExecStop=/usr/bin/gpsdctl remove /dev/%I
+ExecStart=/usr/sbin/gpsdctl add /dev/%I
+ExecStop=/usr/sbin/gpsdctl remove /dev/%I
diff --git a/rules/gpsd.in b/rules/gpsd.in
index 16b6dcb70..53b1a13f6 100644
--- a/rules/gpsd.in
+++ b/rules/gpsd.in
@@ -68,18 +68,6 @@ config GPSD_SYSTEMD
 	depends on SYSTEMD
 	prompt "systemd"
 
-config GPSD_RECONFIGURE
-	bool
-	prompt "enable reconfigure"
-	help
-	  allow gpsd to change device settings
-
-config GPSD_CONTROLSEND
-	bool
-	prompt "enable controlsend"
-	help
-	  allow gpsctl/gpsmon to change device settings
-
 config GPSD_PYTHON
 	bool
 	prompt "python bindings"
@@ -260,10 +248,19 @@ menu "install options"
 		  queries with a format that is substantially easier to
 		  parse than the NMEA 0183 emitted by most GPS receivers.
 
+	config GPSD_GPSDCTL
+		bool
+		prompt "gpdsctl"
+		help
+		  gpdsctl is a tool for sending an instance of gpsd commands
+		  over its control socket to add or remove devices from the
+		  daemon's device list.
+
 	config GPSD_SYSTEMD_UNIT
 		bool
 		default y
 		depends on INITMETHOD_SYSTEMD && GPSD_GPSD
+		select GPSD_GPSDCTL
 		prompt "systemd unit files for gpsd"
 
 	config GPSD_GPSD_ARGS
diff --git a/rules/gpsd.make b/rules/gpsd.make
index f75caa5b4..3768df3d4 100644
--- a/rules/gpsd.make
+++ b/rules/gpsd.make
@@ -16,10 +16,10 @@ PACKAGES-$(PTXCONF_GPSD) += gpsd
 #
 # Paths and names
 #
-GPSD_VERSION	:= 3.20
-GPSD_MD5	:= cf7fdec7ce7221d20bee1a7246362b05
+GPSD_VERSION	:= 3.21
+GPSD_MD5	:= 22d585f6d46f4e4d977a809076d74526
 GPSD		:= gpsd-$(GPSD_VERSION)
-GPSD_SUFFIX	:= tar.gz
+GPSD_SUFFIX	:= tar.xz
 GPSD_URL	:= http://download.savannah.gnu.org/releases/gpsd/$(GPSD).$(GPSD_SUFFIX)
 GPSD_SOURCE	:= $(SRCDIR)/$(GPSD).$(GPSD_SUFFIX)
 GPSD_DIR	:= $(BUILDDIR)/$(GPSD)
@@ -38,12 +38,14 @@ GPSD_PROGS-$(PTXCONF_GPSD_GPSPIPE)	+= gpspipe
 GPSD_PROGS-$(PTXCONF_GPSD_GPSRINEX)	+= gpsrinex
 GPSD_PROGS-$(PTXCONF_GPSD_GPXLOGGER)	+= gpxlogger
 GPSD_PROGS-$(PTXCONF_GPSD_LCDGPS)	+= lcdgps
+
 GPSD_PROGS-$(PTXCONF_GPSD_CGPS)		+= cgps
 GPSD_PROGS-$(PTXCONF_GPSD_GPSMON)	+= gpsmon
 GPSD_PROGS-$(PTXCONF_GPSD_NTPSHMMON)	+= ntpshmmon
 GPSD_PROGS-$(PTXCONF_GPSD_PPSCHECK)	+= ppscheck
 
-GPSD_BUILD_CLIENTS := $(if $(strip $(GPSD_PROGS-y)),yes,no)
+GPSD_BUILD_CLIENTS := $(call ptx/ifdef, PTXCONF_GPSD_GPSDCTL, yes, \
+			$(if $(strip $(GPSD_PROGS-y)), yes, no))
 
 # Python programs
 GPSD_PROGS-$(PTXCONF_GPSD_GEGPS)	+= gegps
@@ -62,7 +64,6 @@ GPSD_CONF_OPT	:= \
 	bluez=$(call ptx/yesno, PTXCONF_GPSD_BLUEZ) \
 	clientdebug=no \
 	control_socket=yes \
-	controlsend=$(call ptx/yesno, PTXCONF_GPSD_CONTROLSEND) \
 	coveraging=no \
 	dbus_export=$(call ptx/yesno, PTXCONF_GPSD_DBUS) \
 	debug=no \
@@ -103,9 +104,9 @@ GPSD_CONF_OPT	:= \
 	python=$(call ptx/yesno, PTXCONF_GPSD_PYTHON) \
 	python_libdir=/usr/lib/python$(PYTHON3_MAJORMINOR) \
 	qt=no \
-	reconfigure=$(call ptx/yesno, PTXCONF_GPSD_RECONFIGURE) \
 	rtcm104v2=$(call ptx/yesno, PTXCONF_GPSD_DRIVER_RTCM104V2) \
 	rtcm104v3=$(call ptx/yesno, PTXCONF_GPSD_DRIVER_RTCM104V3) \
+	rundir=/run \
 	shared=yes \
 	shm_export=$(call ptx/yesno, PTXCONF_GPSD_SHM) \
 	sirf=$(call ptx/yesno, PTXCONF_GPSD_DRIVER_SIRF) \
@@ -154,12 +155,16 @@ $(STATEDIR)/gpsd.targetinstall:
 	@$(call install_fixup, gpsd,DESCRIPTION,missing)
 
 	@$(call install_lib, gpsd, 0, 0, 0644, libgps)
+	@$(call install_lib, gpsd, 0, 0, 0644, libgpsdpacket)
 	@$(foreach prog, $(GPSD_PROGS-y), \
 		$(call install_copy, gpsd, 0, 0, 0755, -, \
 			/usr/bin/$(prog))$(ptx/nl))
 ifdef PTXCONF_GPSD_GPSD
 	@$(call install_copy, gpsd, 0, 0, 0755, -, /usr/sbin/gpsd)
 endif
+ifdef PTXCONF_GPSD_GPSDCTL
+	@$(call install_copy, gpsd, 0, 0, 0755, -, /usr/sbin/gpsdctl)
+endif
 ifdef PTXCONF_GPSD_SYSTEMD_UNIT
 	@$(call install_alternative, gpsd, 0, 0, 644, \
 		/usr/lib/systemd/system/gpsd.service)
@@ -172,14 +177,12 @@ ifdef PTXCONF_GPSD_SYSTEMD_UNIT
 		/usr/lib/systemd/system/gpsd.socket)
 	@$(call install_link, gpsd, ../gpsd.socket, \
 		/usr/lib/systemd/system/sockets.target.wants/gpsd.socket)
-ifdef PTXCONF_GPSD_GPSCTL
 	@$(call install_alternative, gpsd, 0, 0, 644, \
 		/usr/lib/systemd/system/gpsdctl@.service)
 endif
-endif
 ifdef PTXCONF_GPSD_PYTHON
 	@$(call install_glob, gpsd, 0, 0, -, \
-		/usr/lib/python$(PYTHON3_MAJORMINOR), *.so *.py)
+		/usr/lib/python$(PYTHON3_MAJORMINOR), *.py)
 endif
 	@$(call install_finish, gpsd)
 
-- 
2.28.0


_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de

      parent reply	other threads:[~2020-08-02 14:43 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-20 11:51 Roland Hieber
2020-07-20 11:51 ` [ptxdist] [PATCH 2/3] gpsd: make 'ublox' driver option more recognizable Roland Hieber
2020-07-20 11:51 ` [ptxdist] [PATCH 3/3] gpsd: fix usage of GPSD_DRIVER_NTRIP option Roland Hieber
2020-07-20 12:59 ` [ptxdist] [PATCH 1/3] gpsd: merge GPSD_SYSTEMD and GPSD_SYSTEMD_UNIT options Michael Olbrich
2020-07-20 21:14   ` ladis
2020-07-22  9:51     ` Roland Hieber
2020-07-22  9:53       ` [ptxdist] [PATCH v2 1/3] gpsd: make 'ublox' driver option more recognizable Roland Hieber
2020-07-22  9:53         ` [ptxdist] [PATCH v2 2/3] gpsd: fix usage of GPSD_DRIVER_NTRIP option Roland Hieber
2020-08-03  6:29           ` [ptxdist] [APPLIED] " Michael Olbrich
2020-07-22  9:53         ` [ptxdist] [PATCH v2 3/3] gpsd: make GPSD_SYSTEMD promptless and fix dependency Roland Hieber
2020-08-03  6:29           ` [ptxdist] [APPLIED] " Michael Olbrich
2020-08-03  6:29         ` [ptxdist] [APPLIED] gpsd: make 'ublox' driver option more recognizable Michael Olbrich
2020-08-02 14:43       ` ladis [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200802144340.GA440370@lenoch \
    --to=ladis@linux-mips.org \
    --cc=ptxdist@pengutronix.de \
    --cc=rhi@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox