4221df5c82997397c3bd73f297abfbe28ce3fd2f
[AGL/meta-agl-demo.git] / recipes-connectivity / kuksa-val / kuksa-dbc-feeder / 0001-dbc2val-add-installation-mechanism.patch
1 From 22062d99a89922e02b626e4701feaac8947af5fb Mon Sep 17 00:00:00 2001
2 From: Scott Murray <scott.murray@konsulko.com>
3 Date: Fri, 7 Oct 2022 15:54:48 -0400
4 Subject: [PATCH 1/2] dbc2val: add installation mechanism
5
6 Add setup.py and setup.cfg to allow installing the dbc2val module
7 and dbcfeeder.py in a way suitable for packaging.  Some of the
8 imports in the scripts have been tweaked to enable running against
9 an installed copy of dbc2val.
10
11 Upstream-Status: pending
12
13 Signed-off-by: Scott Murray <scott.murray@konsulko.com>
14 ---
15  dbc2val/__init__.py                           |  0
16  dbc2val/databroker.py                         |  4 +--
17  dbc2val/dbc2vssmapper.py                      | 12 +++----
18  dbc2val/dbcfeeder.py                          |  8 ++---
19  dbc2val/gen_proto/__init__.py                 |  0
20  dbc2val/gen_proto/sdv/__init__.py             |  0
21  dbc2val/gen_proto/sdv/databroker/__init__.py  |  0
22  .../gen_proto/sdv/databroker/v1/__init__.py   |  0
23  .../gen_proto/sdv/databroker/v1/broker_pb2.py |  2 +-
24  .../sdv/databroker/v1/broker_pb2_grpc.py      |  2 +-
25  .../sdv/databroker/v1/collector_pb2.py        |  2 +-
26  .../sdv/databroker/v1/collector_pb2_grpc.py   |  2 +-
27  setup.cfg                                     | 31 ++++++++++++++++
28  setup.py                                      | 36 +++++++++++++++++++
29  14 files changed, 82 insertions(+), 17 deletions(-)
30  create mode 100644 dbc2val/__init__.py
31  create mode 100644 dbc2val/gen_proto/__init__.py
32  create mode 100644 dbc2val/gen_proto/sdv/__init__.py
33  create mode 100644 dbc2val/gen_proto/sdv/databroker/__init__.py
34  create mode 100644 dbc2val/gen_proto/sdv/databroker/v1/__init__.py
35  create mode 100644 setup.cfg
36  create mode 100644 setup.py
37
38 diff --git a/dbc2val/__init__.py b/dbc2val/__init__.py
39 new file mode 100644
40 index 0000000..e69de29
41 diff --git a/dbc2val/databroker.py b/dbc2val/databroker.py
42 index c1a941a..ba52980 100644
43 --- a/dbc2val/databroker.py
44 +++ b/dbc2val/databroker.py
45 @@ -16,13 +16,13 @@
46  import logging
47  
48  import grpc
49 -from gen_proto.sdv.databroker.v1 import (
50 +from dbc2val.gen_proto.sdv.databroker.v1 import (
51      broker_pb2,
52      broker_pb2_grpc,
53      collector_pb2,
54      collector_pb2_grpc,
55  )
56 -from gen_proto.sdv.databroker.v1 import types_pb2 as types  # for export
57 +from dbc2val.gen_proto.sdv.databroker.v1 import types_pb2 as types  # for export
58  
59  log = logging.getLogger(__name__)
60  
61 diff --git a/dbc2val/dbc2vssmapper.py b/dbc2val/dbc2vssmapper.py
62 index 05b78f1..d76c068 100644
63 --- a/dbc2val/dbc2vssmapper.py
64 +++ b/dbc2val/dbc2vssmapper.py
65 @@ -20,8 +20,8 @@
66  
67  
68  import yaml 
69 -import transforms.mapping
70 -import transforms.math
71 +from dbc2val.transforms import mapping
72 +from dbc2val.transforms import math
73  import logging
74  
75  log = logging.getLogger(__name__)
76 @@ -33,13 +33,13 @@ class mapper:
77              self.mapping = yaml.full_load(file)
78  
79          self.transforms = {}
80 -        self.transforms["fullmapping"] = transforms.mapping.mapping(
81 +        self.transforms["fullmapping"] = mapping.mapping(
82              discard_non_matching_items=True
83          )
84 -        self.transforms["partialmapping"] = transforms.mapping.mapping(
85 +        self.transforms["partialmapping"] = mapping.mapping(
86              discard_non_matching_items=False
87          )
88 -        self.transforms["math"] = transforms.math.math()
89 +        self.transforms["math"] = math.math()
90  
91          for key in self.mapping.keys():
92              self.mapping[key]["lastupdate"] = 0.0
93 @@ -93,4 +93,4 @@ class mapper:
94  
95      def __getitem__(self, item):
96          return self.mapping[item]
97 -    
98 \ No newline at end of file
99 +    
100 diff --git a/dbc2val/dbcfeeder.py b/dbc2val/dbcfeeder.py
101 index 5267369..7daaa2b 100755
102 --- a/dbc2val/dbcfeeder.py
103 +++ b/dbc2val/dbcfeeder.py
104 @@ -28,16 +28,13 @@ import sys
105  import time
106  from signal import SIGINT, SIGTERM, signal
107  
108 -import canplayer
109 -import dbc2vssmapper
110 -import dbcreader
111  import grpc
112 -import j1939reader
113 +from dbc2val import dbc2vssmapper, dbcreader, j1939reader, canplayer
114  
115  # kuksa related
116  from kuksa_viss_client import KuksaClientThread
117  # databroker related
118 -import databroker
119 +from dbc2val import databroker
120  
121  # global variable for usecase, default databroker
122  USE_CASE = ""
123 @@ -289,6 +286,7 @@ def parse_config(filename):
124              "/etc/dbc_feeder.ini",
125              "config/dbc_feeder.ini",
126          ]
127 +        configfile = None
128          for candidate in config_candidates:
129              if os.path.isfile(candidate):
130                  configfile = candidate
131 diff --git a/dbc2val/gen_proto/__init__.py b/dbc2val/gen_proto/__init__.py
132 new file mode 100644
133 index 0000000..e69de29
134 diff --git a/dbc2val/gen_proto/sdv/__init__.py b/dbc2val/gen_proto/sdv/__init__.py
135 new file mode 100644
136 index 0000000..e69de29
137 diff --git a/dbc2val/gen_proto/sdv/databroker/__init__.py b/dbc2val/gen_proto/sdv/databroker/__init__.py
138 new file mode 100644
139 index 0000000..e69de29
140 diff --git a/dbc2val/gen_proto/sdv/databroker/v1/__init__.py b/dbc2val/gen_proto/sdv/databroker/v1/__init__.py
141 new file mode 100644
142 index 0000000..e69de29
143 diff --git a/dbc2val/gen_proto/sdv/databroker/v1/broker_pb2.py b/dbc2val/gen_proto/sdv/databroker/v1/broker_pb2.py
144 index 98dc94a..6deacfb 100644
145 --- a/dbc2val/gen_proto/sdv/databroker/v1/broker_pb2.py
146 +++ b/dbc2val/gen_proto/sdv/databroker/v1/broker_pb2.py
147 @@ -12,7 +12,7 @@ from google.protobuf import symbol_database as _symbol_database
148  _sym_db = _symbol_database.Default()
149  
150  
151 -from gen_proto.sdv.databroker.v1 import types_pb2 as sdv_dot_databroker_dot_v1_dot_types__pb2
152 +from dbc2val.gen_proto.sdv.databroker.v1 import types_pb2 as sdv_dot_databroker_dot_v1_dot_types__pb2
153  
154  
155  DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1esdv/databroker/v1/broker.proto\x12\x11sdv.databroker.v1\x1a\x1dsdv/databroker/v1/types.proto\"*\n\x14GetDatapointsRequest\x12\x12\n\ndatapoints\x18\x01 \x03(\t\"\xb0\x01\n\x12GetDatapointsReply\x12I\n\ndatapoints\x18\x01 \x03(\x0b\x32\x35.sdv.databroker.v1.GetDatapointsReply.DatapointsEntry\x1aO\n\x0f\x44\x61tapointsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.sdv.databroker.v1.Datapoint:\x02\x38\x01\"!\n\x10SubscribeRequest\x12\r\n\x05query\x18\x02 \x01(\t\"\x9c\x01\n\x0eSubscribeReply\x12=\n\x06\x66ields\x18\x01 \x03(\x0b\x32-.sdv.databroker.v1.SubscribeReply.FieldsEntry\x1aK\n\x0b\x46ieldsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.sdv.databroker.v1.Datapoint:\x02\x38\x01\"#\n\x12GetMetadataRequest\x12\r\n\x05names\x18\x01 \x03(\t\"=\n\x10GetMetadataReply\x12)\n\x04list\x18\x01 \x03(\x0b\x32\x1b.sdv.databroker.v1.Metadata2\x9b\x02\n\x06\x42roker\x12_\n\rGetDatapoints\x12\'.sdv.databroker.v1.GetDatapointsRequest\x1a%.sdv.databroker.v1.GetDatapointsReply\x12U\n\tSubscribe\x12#.sdv.databroker.v1.SubscribeRequest\x1a!.sdv.databroker.v1.SubscribeReply0\x01\x12Y\n\x0bGetMetadata\x12%.sdv.databroker.v1.GetMetadataRequest\x1a#.sdv.databroker.v1.GetMetadataReplyb\x06proto3')
156 diff --git a/dbc2val/gen_proto/sdv/databroker/v1/broker_pb2_grpc.py b/dbc2val/gen_proto/sdv/databroker/v1/broker_pb2_grpc.py
157 index 5c87db1..bc6be8b 100644
158 --- a/dbc2val/gen_proto/sdv/databroker/v1/broker_pb2_grpc.py
159 +++ b/dbc2val/gen_proto/sdv/databroker/v1/broker_pb2_grpc.py
160 @@ -2,7 +2,7 @@
161  """Client and server classes corresponding to protobuf-defined services."""
162  import grpc
163  
164 -from gen_proto.sdv.databroker.v1 import broker_pb2 as sdv_dot_databroker_dot_v1_dot_broker__pb2
165 +from dbc2val.gen_proto.sdv.databroker.v1 import broker_pb2 as sdv_dot_databroker_dot_v1_dot_broker__pb2
166  
167  
168  class BrokerStub(object):
169 diff --git a/dbc2val/gen_proto/sdv/databroker/v1/collector_pb2.py b/dbc2val/gen_proto/sdv/databroker/v1/collector_pb2.py
170 index 25d69dd..ea15409 100644
171 --- a/dbc2val/gen_proto/sdv/databroker/v1/collector_pb2.py
172 +++ b/dbc2val/gen_proto/sdv/databroker/v1/collector_pb2.py
173 @@ -12,7 +12,7 @@ from google.protobuf import symbol_database as _symbol_database
174  _sym_db = _symbol_database.Default()
175  
176  
177 -from gen_proto.sdv.databroker.v1 import types_pb2 as sdv_dot_databroker_dot_v1_dot_types__pb2
178 +from dbc2val.gen_proto.sdv.databroker.v1 import types_pb2 as sdv_dot_databroker_dot_v1_dot_types__pb2
179  
180  
181  DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!sdv/databroker/v1/collector.proto\x12\x11sdv.databroker.v1\x1a\x1dsdv/databroker/v1/types.proto\"\xba\x01\n\x17UpdateDatapointsRequest\x12N\n\ndatapoints\x18\x01 \x03(\x0b\x32:.sdv.databroker.v1.UpdateDatapointsRequest.DatapointsEntry\x1aO\n\x0f\x44\x61tapointsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.sdv.databroker.v1.Datapoint:\x02\x38\x01\"\xaf\x01\n\x15UpdateDatapointsReply\x12\x44\n\x06\x65rrors\x18\x01 \x03(\x0b\x32\x34.sdv.databroker.v1.UpdateDatapointsReply.ErrorsEntry\x1aP\n\x0b\x45rrorsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\x30\n\x05value\x18\x02 \x01(\x0e\x32!.sdv.databroker.v1.DatapointError:\x02\x38\x01\"\xba\x01\n\x17StreamDatapointsRequest\x12N\n\ndatapoints\x18\x01 \x03(\x0b\x32:.sdv.databroker.v1.StreamDatapointsRequest.DatapointsEntry\x1aO\n\x0f\x44\x61tapointsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.sdv.databroker.v1.Datapoint:\x02\x38\x01\"\xaf\x01\n\x15StreamDatapointsReply\x12\x44\n\x06\x65rrors\x18\x01 \x03(\x0b\x32\x34.sdv.databroker.v1.StreamDatapointsReply.ErrorsEntry\x1aP\n\x0b\x45rrorsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\x30\n\x05value\x18\x02 \x01(\x0e\x32!.sdv.databroker.v1.DatapointError:\x02\x38\x01\"R\n\x19RegisterDatapointsRequest\x12\x35\n\x04list\x18\x01 \x03(\x0b\x32\'.sdv.databroker.v1.RegistrationMetadata\"\x9d\x01\n\x14RegistrationMetadata\x12\x0c\n\x04name\x18\x01 \x01(\t\x12.\n\tdata_type\x18\x02 \x01(\x0e\x32\x1b.sdv.databroker.v1.DataType\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x32\n\x0b\x63hange_type\x18\x04 \x01(\x0e\x32\x1d.sdv.databroker.v1.ChangeType\"\x93\x01\n\x17RegisterDatapointsReply\x12H\n\x07results\x18\x01 \x03(\x0b\x32\x37.sdv.databroker.v1.RegisterDatapointsReply.ResultsEntry\x1a.\n\x0cResultsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x32\xd3\x02\n\tCollector\x12n\n\x12RegisterDatapoints\x12,.sdv.databroker.v1.RegisterDatapointsRequest\x1a*.sdv.databroker.v1.RegisterDatapointsReply\x12h\n\x10UpdateDatapoints\x12*.sdv.databroker.v1.UpdateDatapointsRequest\x1a(.sdv.databroker.v1.UpdateDatapointsReply\x12l\n\x10StreamDatapoints\x12*.sdv.databroker.v1.StreamDatapointsRequest\x1a(.sdv.databroker.v1.StreamDatapointsReply(\x01\x30\x01\x62\x06proto3')
182 diff --git a/dbc2val/gen_proto/sdv/databroker/v1/collector_pb2_grpc.py b/dbc2val/gen_proto/sdv/databroker/v1/collector_pb2_grpc.py
183 index 419bfde..2dee751 100644
184 --- a/dbc2val/gen_proto/sdv/databroker/v1/collector_pb2_grpc.py
185 +++ b/dbc2val/gen_proto/sdv/databroker/v1/collector_pb2_grpc.py
186 @@ -2,7 +2,7 @@
187  """Client and server classes corresponding to protobuf-defined services."""
188  import grpc
189  
190 -from gen_proto.sdv.databroker.v1 import collector_pb2 as sdv_dot_databroker_dot_v1_dot_collector__pb2
191 +from dbc2val.gen_proto.sdv.databroker.v1 import collector_pb2 as sdv_dot_databroker_dot_v1_dot_collector__pb2
192  
193  
194  class CollectorStub(object):
195 diff --git a/setup.cfg b/setup.cfg
196 new file mode 100644
197 index 0000000..70aab60
198 --- /dev/null
199 +++ b/setup.cfg
200 @@ -0,0 +1,31 @@
201 +[metadata]
202 +name = dbc2val
203 +author = Sebastian Schildt, Naresh Nayak, Wenwen Chen
204 +author_email = sebastian.schildt@de.bosch.com, naresh.nayak@de.bosch.com, wenwen.chen@de.bosch.com
205 +description = kuksa.val DBC feeder
206 +long_description = file:README.md
207 +long_description_content_type = text/markdown
208 +url=https://github.com/eclipse/kuksa.val
209 +project_urls=
210 +  Source=https://github.com/eclipse/kuksa.val/tree/master/kuksa_feeders/dbc2val
211 +  Bug Tracker=https://github.com/eclipse/kuksa.val/issues
212 +classifiers = 
213 +    Intended Audience :: Developers
214 +    Development Status :: 3 - Alpha
215 +    Environment :: Console
216 +    Programming Language :: Python :: 3
217 +    License :: OSI Approved :: Apache Software License
218 +    Operating System :: OS Independent
219 +    Topic :: Software Development
220 +    
221 +license_file = LICENSE.txt
222 +
223 +[options]
224 +python_requires = >=3.6
225 +install_requires=
226 +    pyserial
227 +    pyyaml
228 +    kuksa-viss-client
229 +packages=find:
230 +include_package_data = True
231 +scripts=dbc2val/dbcfeeder.py
232 diff --git a/setup.py b/setup.py
233 new file mode 100644
234 index 0000000..55951cc
235 --- /dev/null
236 +++ b/setup.py
237 @@ -0,0 +1,36 @@
238 +# To avoid shipping dbcfeeder.py in the module itself, use the
239 +# technique outlined at:
240 +#
241 +# https://stackoverflow.com/a/50592100
242 +#
243 +# This can be removed if the directory structure is ever reorganized
244 +# more along the lines of upstream recommendations.
245 +#
246 +
247 +import fnmatch
248 +from setuptools import find_packages, setup
249 +from setuptools.command.build_py import build_py as build_py_orig
250 +
251 +exclude = ['dbc2val.dbcfeeder']
252 +
253 +class build_py(build_py_orig):
254 +    def find_package_modules(self, package, package_dir):
255 +        modules = super().find_package_modules(package, package_dir)
256 +        print("modules = %s" % modules)
257 +        return [(pkg, mod, file, ) for (pkg, mod, file, ) in modules
258 +                if not any(fnmatch.fnmatchcase(pkg + '.' + mod, pat=pattern)
259 +                           for pattern in exclude)]
260 +
261 +setup(
262 +    version_config={
263 +        "template": "{tag}",
264 +        "dev_template": "{tag}-{ccount}",
265 +        "dirty_template": "{tag}-{ccount}-dirty",
266 +        "starting_version": "0.1.0",
267 +        "version_callback": None,
268 +        "version_file": None,
269 +        "count_commits_from_version_file": False
270 +    },
271 +    setup_requires=['setuptools-git-versioning'],
272 +    cmdclass={'build_py': build_py},
273 +)
274 -- 
275 2.37.3
276