* Re: [ptxdist] [PATCH 1/3] gpsd: merge GPSD_SYSTEMD and GPSD_SYSTEMD_UNIT options
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-08-02 14:43 ` ladis
1 sibling, 0 replies; 13+ messages in thread
From: ladis @ 2020-08-02 14:43 UTC (permalink / raw)
To: Roland Hieber; +Cc: ptxdist
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 -----
| 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
^ permalink raw reply [flat|nested] 13+ messages in thread