Update by myself. In stead of trying to install python-cjson, I succeeded 
with installing

sudo pip3 install ujson

All set now, data published live on my webpage.



Op woensdag 6 mei 2020 22:27:37 UTC+2 schreef Maarten van der Hoeven:
>
> Hi,
>
> hard disc crashed, rebuilding the complete environment. Backup was sound, 
> no data lost.
>
> Running Ubuntu 20.04, installed Weewx4 with python 3, Belchertown 1.1 skin 
> succesfully implemented. Got mosquitto running okay.
>
> Now busy implementing weewx-mqtt. Instuctions:
>
> sudo pip3 install paho-mqtt, succesful
> sudo pip3 install python-cjson. Package is found, but when trying to build 
> it, it fails. What can I do? I dont want to mess with python2, and risk 
> breaking dependencies. Error log from failure python-cjson:
>
> maarten@weewx:~$ sudo pip3 install python-cjson
> Collecting python-cjson
>   Downloading python-cjson-1.2.2.tar.gz (12 kB)
> Building wheels for collected packages: python-cjson
>   Building wheel for python-cjson (setup.py) ... error
>   ERROR: Command errored out with exit status 1:
>    command: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; 
> sys.argv[0] = '"'"'/tmp/pip-install-zu4cgg1n/python-cjson/setup.py'"'"'; 
> __file__='"'"'/tmp/pip-install-zu4cgg1n/python-cjson/setup.py'"'"';f=getattr(tokenize,
>  
> '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', 
> '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' 
> bdist_wheel -d /tmp/pip-wheel-3y0kj1p4
>        cwd: /tmp/pip-install-zu4cgg1n/python-cjson/
>   Complete output (243 lines):
>   running bdist_wheel
>   running build
>   running build_ext
>   building 'cjson' extension
>   creating build
>   creating build/temp.linux-x86_64-3.8
>   x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG 
> -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat 
> -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat 
> -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC 
> -DMODULE_VERSION=1.2.2 -I/usr/include/python3.8 -c cjson.c -o 
> build/temp.linux-x86_64-3.8/cjson.o
>   cjson.c: In function ‘decode_string’:
>   cjson.c:167:18: warning: implicit declaration of function 
> ‘PyString_DecodeEscape’; did you mean ‘PyBytes_DecodeEscape’? 
> [-Wimplicit-function-declaration]
>     167 |         object = PyString_DecodeEscape(jsondata->ptr+1, len, 
> NULL, 0, NULL);
>         |                  ^~~~~~~~~~~~~~~~~~~~~
>         |                  PyBytes_DecodeEscape
>   cjson.c:167:16: warning: assignment to ‘PyObject *’ {aka ‘struct _object 
> *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
>     167 |         object = PyString_DecodeEscape(jsondata->ptr+1, len, 
> NULL, 0, NULL);
>         |                ^
>   cjson.c:169:18: warning: implicit declaration of function 
> ‘PyString_FromStringAndSize’; did you mean ‘PyBytes_FromStringAndSize’? 
> [-Wimplicit-function-declaration]
>     169 |         object = PyString_FromStringAndSize(jsondata->ptr+1, 
> len);
>         |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~
>         |                  PyBytes_FromStringAndSize
>   cjson.c:169:16: warning: assignment to ‘PyObject *’ {aka ‘struct _object 
> *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
>     169 |         object = PyString_FromStringAndSize(jsondata->ptr+1, 
> len);
>         |                ^
>   cjson.c:185:39: warning: implicit declaration of function 
> ‘PyString_AsString’ [-Wimplicit-function-declaration]
>     185 |                              reason ? PyString_AsString(reason) 
> : "bad format");
>         |                                       ^~~~~~~~~~~~~~~~~
>   cjson.c:185:65: warning: pointer/integer type mismatch in conditional 
> expression
>     185 |                              reason ? PyString_AsString(reason) 
> : "bad format");
>         |                                                                 ^
>   cjson.c: In function ‘decode_number’:
>   cjson.c:295:9: warning: assignment to ‘PyObject *’ {aka ‘struct _object 
> *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
>     295 |     str = PyString_FromStringAndSize(jsondata->ptr, ptr - 
> jsondata->ptr);
>         |         ^
>   cjson.c:300:18: error: too many arguments to function 
> ‘PyFloat_FromString’
>     300 |         object = PyFloat_FromString(str, NULL);
>         |                  ^~~~~~~~~~~~~~~~~~
>   In file included from /usr/include/python3.8/Python.h:101,
>                    from cjson.c:5:
>   /usr/include/python3.8/floatobject.h:42:24: note: declared here
>      42 | PyAPI_FUNC(PyObject *) PyFloat_FromString(PyObject*);
>         |                        ^~~~~~~~~~~~~~~~~~
>   cjson.c:302:18: warning: implicit declaration of function 
> ‘PyInt_FromString’; did you mean ‘PyLong_FromString’? 
> [-Wimplicit-function-declaration]
>     302 |         object = PyInt_FromString(PyString_AS_STRING(str), NULL, 
> 10);
>         |                  ^~~~~~~~~~~~~~~~
>         |                  PyLong_FromString
>   cjson.c:302:35: warning: implicit declaration of function 
> ‘PyString_AS_STRING’; did you mean ‘PyBytes_AS_STRING’? 
> [-Wimplicit-function-declaration]
>     302 |         object = PyInt_FromString(PyString_AS_STRING(str), NULL, 
> 10);
>         |                                   ^~~~~~~~~~~~~~~~~~
>         |                                   PyBytes_AS_STRING
>   cjson.c:302:16: warning: assignment to ‘PyObject *’ {aka ‘struct _object 
> *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
>     302 |         object = PyInt_FromString(PyString_AS_STRING(str), NULL, 
> 10);
>         |                ^
>   cjson.c: In function ‘encode_string’:
>   cjson.c:593:14: error: unknown type name ‘PyStringObject’
>     593 |     register PyStringObject* op = (PyStringObject*) string;
>         |              ^~~~~~~~~~~~~~
>   cjson.c:593:36: error: ‘PyStringObject’ undeclared (first use in this 
> function); did you mean ‘PySliceObject’?
>     593 |     register PyStringObject* op = (PyStringObject*) string;
>         |                                    ^~~~~~~~~~~~~~
>         |                                    PySliceObject
>   cjson.c:593:36: note: each undeclared identifier is reported only once 
> for each function it appears in
>   cjson.c:593:51: error: expected expression before ‘)’ token
>     593 |     register PyStringObject* op = (PyStringObject*) string;
>         |                                                   ^
>   cjson.c:594:32: error: request for member ‘ob_size’ in something not a 
> structure or union
>     594 |     size_t newsize = 2 + 6 * op->ob_size;
>         |                                ^~
>   cjson.c:597:11: error: request for member ‘ob_size’ in something not a 
> structure or union
>     597 |     if (op->ob_size > (PY_SSIZE_T_MAX-2)/6) {
>         |           ^~
>   cjson.c:602:7: warning: assignment to ‘PyObject *’ {aka ‘struct _object 
> *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
>     602 |     v = PyString_FromStringAndSize((char *)NULL, newsize);
>         |       ^
>   cjson.c:614:11: warning: assignment to ‘char *’ from ‘int’ makes pointer 
> from integer without a cast [-Wint-conversion]
>     614 |         p = PyString_AS_STRING(v);
>         |           ^
>   cjson.c:616:27: error: request for member ‘ob_size’ in something not a 
> structure or union
>     616 |         for (i = 0; i < op->ob_size; i++) {
>         |                           ^~
>   cjson.c:620:19: error: request for member ‘ob_sval’ in something not a 
> structure or union
>     620 |             c = op->ob_sval[i];
>         |                   ^~
>   cjson.c:646:9: warning: implicit declaration of function 
> ‘_PyString_Resize’ [-Wimplicit-function-declaration]
>     646 |         _PyString_Resize(&v, (int) (p - PyString_AS_STRING(v)));
>         |         ^~~~~~~~~~~~~~~~
>   cjson.c:646:30: warning: cast from pointer to integer of different size 
> [-Wpointer-to-int-cast]
>     646 |         _PyString_Resize(&v, (int) (p - PyString_AS_STRING(v)));
>         |                              ^
>   cjson.c: In function ‘encode_unicode’:
>   cjson.c:697:10: warning: assignment to ‘PyObject *’ {aka ‘struct _object 
> *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
>     697 |     repr = PyString_FromStringAndSize(NULL, 2 + expandsize*size 
> + 1);
>         |          ^
>   cjson.c:701:7: warning: assignment to ‘char *’ from ‘int’ makes pointer 
> from integer without a cast [-Wint-conversion]
>     701 |     p = PyString_AS_STRING(repr);
>         |       ^
>   cjson.c:709:57: error: subscripted value is neither array nor pointer 
> nor vector
>     709 |         if ((ch == (Py_UNICODE) PyString_AS_STRING(repr)[0] || 
> ch == '\\')) {
>         |                                                         ^
>   cjson.c:785:36: error: subscripted value is neither array nor pointer 
> nor vector
>     785 |     *p++ = PyString_AS_STRING(repr)[0];
>         |                                    ^
>   cjson.c: In function ‘encode_tuple’:
>   cjson.c:809:10: error: ‘PyTupleObject’ {aka ‘struct <anonymous>’} has no 
> member named ‘ob_size’
>     809 |     n = v->ob_size;
>         |          ^~
>   cjson.c:811:16: warning: implicit declaration of function 
> ‘PyString_FromString’; did you mean ‘PyLong_FromString’? 
> [-Wimplicit-function-declaration]
>     811 |         return PyString_FromString("[]");
>         |                ^~~~~~~~~~~~~~~~~~~
>         |                PyLong_FromString
>   cjson.c:811:16: warning: returning ‘int’ from a function with return 
> type ‘PyObject *’ {aka ‘struct _object *’} makes pointer from integer 
> without a cast [-Wint-conversion]
>     811 |         return PyString_FromString("[]");
>         |                ^~~~~~~~~~~~~~~~~~~~~~~~~
>   cjson.c:827:7: warning: assignment to ‘PyObject *’ {aka ‘struct _object 
> *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
>     827 |     s = PyString_FromString("[");
>         |       ^
>   cjson.c:831:5: warning: implicit declaration of function 
> ‘PyString_ConcatAndDel’; did you mean ‘PyBytes_ConcatAndDel’? 
> [-Wimplicit-function-declaration]
>     831 |     PyString_ConcatAndDel(&s, temp);
>         |     ^~~~~~~~~~~~~~~~~~~~~
>         |     PyBytes_ConcatAndDel
>   cjson.c:836:7: warning: assignment to ‘PyObject *’ {aka ‘struct _object 
> *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
>     836 |     s = PyString_FromString("]");
>         |       ^
>   cjson.c:846:7: warning: assignment to ‘PyObject *’ {aka ‘struct _object 
> *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
>     846 |     s = PyString_FromString(", ");
>         |       ^
>   cjson.c:849:14: warning: implicit declaration of function 
> ‘_PyString_Join’ [-Wimplicit-function-declaration]
>     849 |     result = _PyString_Join(s, pieces);
>         |              ^~~~~~~~~~~~~~
>   cjson.c:849:12: warning: assignment to ‘PyObject *’ {aka ‘struct _object 
> *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
>     849 |     result = _PyString_Join(s, pieces);
>         |            ^
>   cjson.c: In function ‘encode_list’:
>   cjson.c:883:10: error: ‘PyListObject’ {aka ‘struct <anonymous>’} has no 
> member named ‘ob_size’
>     883 |     if (v->ob_size == 0) {
>         |          ^~
>   cjson.c:884:16: warning: assignment to ‘PyObject *’ {aka ‘struct _object 
> *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
>     884 |         result = PyString_FromString("[]");
>         |                ^
>   cjson.c:894:22: error: ‘PyListObject’ {aka ‘struct <anonymous>’} has no 
> member named ‘ob_size’
>     894 |     for (i = 0; i < v->ob_size; ++i) {
>         |                      ^~
>   cjson.c:907:7: warning: assignment to ‘PyObject *’ {aka ‘struct _object 
> *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
>     907 |     s = PyString_FromString("[");
>         |       ^
>   cjson.c:916:7: warning: assignment to ‘PyObject *’ {aka ‘struct _object 
> *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
>     916 |     s = PyString_FromString("]");
>         |       ^
>   cjson.c:926:7: warning: assignment to ‘PyObject *’ {aka ‘struct _object 
> *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
>     926 |     s = PyString_FromString(", ");
>         |       ^
>   cjson.c:929:12: warning: assignment to ‘PyObject *’ {aka ‘struct _object 
> *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
>     929 |     result = _PyString_Join(s, pieces);
>         |            ^
>   cjson.c: In function ‘encode_dict’:
>   cjson.c:968:16: warning: assignment to ‘PyObject *’ {aka ‘struct _object 
> *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
>     968 |         result = PyString_FromString("{}");
>         |                ^
>   cjson.c:976:11: warning: assignment to ‘PyObject *’ {aka ‘struct _object 
> *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
>     976 |     colon = PyString_FromString(": ");
>         |           ^
>   cjson.c:986:14: warning: implicit declaration of function 
> ‘PyString_Check’; did you mean ‘PyMapping_Check’? 
> [-Wimplicit-function-declaration]
>     986 |         if (!PyString_Check(key) && !PyUnicode_Check(key)) {
>         |              ^~~~~~~~~~~~~~
>         |              PyMapping_Check
>   cjson.c:995:9: warning: implicit declaration of function 
> ‘PyString_Concat’; did you mean ‘PySequence_Concat’? 
> [-Wimplicit-function-declaration]
>     995 |         PyString_Concat(&s, colon);
>         |         ^~~~~~~~~~~~~~~
>         |         PySequence_Concat
>   cjson.c:1008:7: warning: assignment to ‘PyObject *’ {aka ‘struct _object 
> *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
>    1008 |     s = PyString_FromString("{");
>         |       ^
>   cjson.c:1017:7: warning: assignment to ‘PyObject *’ {aka ‘struct _object 
> *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
>    1017 |     s = PyString_FromString("}");
>         |       ^
>   cjson.c:1027:7: warning: assignment to ‘PyObject *’ {aka ‘struct _object 
> *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
>    1027 |     s = PyString_FromString(", ");
>         |       ^
>   cjson.c:1030:12: warning: assignment to ‘PyObject *’ {aka ‘struct 
> _object *’} from ‘int’ makes pointer from integer without a cast 
> [-Wint-conversion]
>    1030 |     result = _PyString_Join(s, pieces);
>         |            ^
>   cjson.c: In function ‘encode_object’:
>   cjson.c:1045:16: warning: returning ‘int’ from a function with return 
> type ‘PyObject *’ {aka ‘struct _object *’} makes pointer from integer 
> without a cast [-Wint-conversion]
>    1045 |         return PyString_FromString("true");
>         |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>   cjson.c:1047:16: warning: returning ‘int’ from a function with return 
> type ‘PyObject *’ {aka ‘struct _object *’} makes pointer from integer 
> without a cast [-Wint-conversion]
>    1047 |         return PyString_FromString("false");
>         |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>   cjson.c:1049:16: warning: returning ‘int’ from a function with return 
> type ‘PyObject *’ {aka ‘struct _object *’} makes pointer from integer 
> without a cast [-Wint-conversion]
>    1049 |         return PyString_FromString("null");
>         |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>   cjson.c:1057:20: warning: returning ‘int’ from a function with return 
> type ‘PyObject *’ {aka ‘struct _object *’} makes pointer from integer 
> without a cast [-Wint-conversion]
>    1057 |             return PyString_FromString("NaN");
>         |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~
>   cjson.c:1060:24: warning: returning ‘int’ from a function with return 
> type ‘PyObject *’ {aka ‘struct _object *’} makes pointer from integer 
> without a cast [-Wint-conversion]
>    1060 |                 return PyString_FromString("Infinity");
>         |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>   cjson.c:1062:24: warning: returning ‘int’ from a function with return 
> type ‘PyObject *’ {aka ‘struct _object *’} makes pointer from integer 
> without a cast [-Wint-conversion]
>    1062 |                 return PyString_FromString("-Infinity");
>         |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>   cjson.c:1067:16: warning: implicit declaration of function 
> ‘PyInt_Check’; did you mean ‘PySet_Check’? [-Wimplicit-function-declaration]
>    1067 |     } else if (PyInt_Check(object) || PyLong_Check(object)) {
>         |                ^~~~~~~~~~~
>         |                PySet_Check
>   cjson.c: In function ‘JSON_decode’:
>   cjson.c:1130:9: warning: implicit declaration of function 
> ‘PyString_AsStringAndSize’; did you mean ‘PyBytes_AsStringAndSize’? 
> [-Wimplicit-function-declaration]
>    1130 |     if (PyString_AsStringAndSize(str, &(jsondata.str), NULL) == 
> -1) {
>         |         ^~~~~~~~~~~~~~~~~~~~~~~~
>         |         PyBytes_AsStringAndSize
>   cjson.c:1136:35: warning: implicit declaration of function 
> ‘PyString_GET_SIZE’; did you mean ‘PyList_GET_SIZE’? 
> [-Wimplicit-function-declaration]
>    1136 |     jsondata.end = jsondata.str + PyString_GET_SIZE(str);
>         |                                   ^~~~~~~~~~~~~~~~~
>         |                                   PyList_GET_SIZE
>   cjson.c: In function ‘initcjson’:
>   cjson.c:1187:9: warning: implicit declaration of function 
> ‘Py_InitModule3’ [-Wimplicit-function-declaration]
>    1187 |     m = Py_InitModule3("cjson", cjson_methods, module_doc);
>         |         ^~~~~~~~~~~~~~
>   cjson.c:1187:7: warning: assignment to ‘PyObject *’ {aka ‘struct _object 
> *’} from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
>    1187 |     m = Py_InitModule3("cjson", cjson_methods, module_doc);
>         |       ^
>   cjson.c:1190:9: warning: ‘return’ with no value, in function returning 
> non-void [-Wreturn-type]
>    1190 |         return;
>         |         ^~~~~~
>   cjson.c:1183:1: note: declared here
>    1183 | initcjson(void)
>         | ^~~~~~~~~
>   cjson.c:1194:9: warning: ‘return’ with no value, in function returning 
> non-void [-Wreturn-type]
>    1194 |         return;
>         |         ^~~~~~
>   cjson.c:1183:1: note: declared here
>    1183 | initcjson(void)
>         | ^~~~~~~~~
>   cjson.c:1200:9: warning: ‘return’ with no value, in function returning 
> non-void [-Wreturn-type]
>    1200 |         return;
>         |         ^~~~~~
>   cjson.c:1183:1: note: declared here
>    1183 | initcjson(void)
>         | ^~~~~~~~~
>   cjson.c:1206:9: warning: ‘return’ with no value, in function returning 
> non-void [-Wreturn-type]
>    1206 |         return;
>         |         ^~~~~~
>   cjson.c:1183:1: note: declared here
>    1183 | initcjson(void)
>         | ^~~~~~~~~
>   error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
>   ----------------------------------------
>   ERROR: Failed building wheel for python-cjson
>   Running setup.py clean for python-cjson
> Failed to build python-cjson
> Installing collected packages: python-cjson
>     Running setup.py install for python-cjson ... error
>     ERROR: Command errored out with exit status 1:
>      command: /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; 
> sys.argv[0] = '"'"'/tmp/pip-install-zu4cgg1n/python-cjson/setup.py'"'"'; 
> __file__='"'"'/tmp/pip-install-zu4cgg1n/python-cjson/setup.py'"'"';f=getattr(tokenize,
>  
> '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', 
> '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' 
> install --record /tmp/pip-record-b8b539va/install-record.txt 
> --single-version-externally-managed --compile --install-headers 
> /usr/local/include/python3.8/python-cjson
>          cwd: /tmp/pip-install-zu4cgg1n/python-cjson/
>     Complete output (243 lines):
>     running install
>     running build
>     running build_ext
>     building 'cjson' extension
>     creating build
>     creating build/temp.linux-x86_64-3.8
>     x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare 
> -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat 
> -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat 
> -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC 
> -DMODULE_VERSION=1.2.2 -I/usr/include/python3.8 -c cjson.c -o 
> build/temp.linux-x86_64-3.8/cjson.o
>     cjson.c: In function ‘decode_string’:
>     cjson.c:167:18: warning: implicit declaration of function 
> ‘PyString_DecodeEscape’; did you mean ‘PyBytes_DecodeEscape’? 
> [-Wimplicit-function-declaration]
>       167 |         object = PyString_DecodeEscape(jsondata->ptr+1, len, 
> NULL, 0, NULL);
>           |                  ^~~~~~~~~~~~~~~~~~~~~
>           |                  PyBytes_DecodeEscape
>     cjson.c:167:16: warning: assignment to ‘PyObject *’ {aka ‘struct 
> _object *’} from ‘int’ makes pointer from integer without a cast 
> [-Wint-conversion]
>       167 |         object = PyString_DecodeEscape(jsondata->ptr+1, len, 
> NULL, 0, NULL);
>           |                ^
>     cjson.c:169:18: warning: implicit declaration of function 
> ‘PyString_FromStringAndSize’; did you mean ‘PyBytes_FromStringAndSize’? 
> [-Wimplicit-function-declaration]
>       169 |         object = PyString_FromStringAndSize(jsondata->ptr+1, 
> len);
>           |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~
>           |                  PyBytes_FromStringAndSize
>     cjson.c:169:16: warning: assignment to ‘PyObject *’ {aka ‘struct 
> _object *’} from ‘int’ makes pointer from integer without a cast 
> [-Wint-conversion]
>       169 |         object = PyString_FromStringAndSize(jsondata->ptr+1, 
> len);
>           |                ^
>     cjson.c:185:39: warning: implicit declaration of function 
> ‘PyString_AsString’ [-Wimplicit-function-declaration]
>       185 |                              reason ? 
> PyString_AsString(reason) : "bad format");
>           |                                       ^~~~~~~~~~~~~~~~~
>     cjson.c:185:65: warning: pointer/integer type mismatch in conditional 
> expression
>       185 |                              reason ? 
> PyString_AsString(reason) : "bad format");
>           |                                                                
>  ^
>     cjson.c: In function ‘decode_number’:
>     cjson.c:295:9: warning: assignment to ‘PyObject *’ {aka ‘struct 
> _object *’} from ‘int’ makes pointer from integer without a cast 
> [-Wint-conversion]
>       295 |     str = PyString_FromStringAndSize(jsondata->ptr, ptr - 
> jsondata->ptr);
>           |         ^
>     cjson.c:300:18: error: too many arguments to function 
> ‘PyFloat_FromString’
>       300 |         object = PyFloat_FromString(str, NULL);
>           |                  ^~~~~~~~~~~~~~~~~~
>     In file included from /usr/include/python3.8/Python.h:101,
>                      from cjson.c:5:
>     /usr/include/python3.8/floatobject.h:42:24: note: declared here
>        42 | PyAPI_FUNC(PyObject *) PyFloat_FromString(PyObject*);
>           |                        ^~~~~~~~~~~~~~~~~~
>     cjson.c:302:18: warning: implicit declaration of function 
> ‘PyInt_FromString’; did you mean ‘PyLong_FromString’? 
> [-Wimplicit-function-declaration]
>       302 |         object = PyInt_FromString(PyString_AS_STRING(str), 
> NULL, 10);
>           |                  ^~~~~~~~~~~~~~~~
>           |                  PyLong_FromString
>     cjson.c:302:35: warning: implicit declaration of function 
> ‘PyString_AS_STRING’; did you mean ‘PyBytes_AS_STRING’? 
> [-Wimplicit-function-declaration]
>       302 |         object = PyInt_FromString(PyString_AS_STRING(str), 
> NULL, 10);
>           |                                   ^~~~~~~~~~~~~~~~~~
>           |                                   PyBytes_AS_STRING
>     cjson.c:302:16: warning: assignment to ‘PyObject *’ {aka ‘struct 
> _object *’} from ‘int’ makes pointer from integer without a cast 
> [-Wint-conversion]
>       302 |         object = PyInt_FromString(PyString_AS_STRING(str), 
> NULL, 10);
>           |                ^
>     cjson.c: In function ‘encode_string’:
>     cjson.c:593:14: error: unknown type name ‘PyStringObject’
>       593 |     register PyStringObject* op = (PyStringObject*) string;
>           |              ^~~~~~~~~~~~~~
>     cjson.c:593:36: error: ‘PyStringObject’ undeclared (first use in this 
> function); did you mean ‘PySliceObject’?
>       593 |     register PyStringObject* op = (PyStringObject*) string;
>           |                                    ^~~~~~~~~~~~~~
>           |                                    PySliceObject
>     cjson.c:593:36: note: each undeclared identifier is reported only once 
> for each function it appears in
>     cjson.c:593:51: error: expected expression before ‘)’ token
>       593 |     register PyStringObject* op = (PyStringObject*) string;
>           |                                                   ^
>     cjson.c:594:32: error: request for member ‘ob_size’ in something not a 
> structure or union
>       594 |     size_t newsize = 2 + 6 * op->ob_size;
>           |                                ^~
>     cjson.c:597:11: error: request for member ‘ob_size’ in something not a 
> structure or union
>       597 |     if (op->ob_size > (PY_SSIZE_T_MAX-2)/6) {
>           |           ^~
>     cjson.c:602:7: warning: assignment to ‘PyObject *’ {aka ‘struct 
> _object *’} from ‘int’ makes pointer from integer without a cast 
> [-Wint-conversion]
>       602 |     v = PyString_FromStringAndSize((char *)NULL, newsize);
>           |       ^
>     cjson.c:614:11: warning: assignment to ‘char *’ from ‘int’ makes 
> pointer from integer without a cast [-Wint-conversion]
>       614 |         p = PyString_AS_STRING(v);
>           |           ^
>     cjson.c:616:27: error: request for member ‘ob_size’ in something not a 
> structure or union
>       616 |         for (i = 0; i < op->ob_size; i++) {
>           |                           ^~
>     cjson.c:620:19: error: request for member ‘ob_sval’ in something not a 
> structure or union
>       620 |             c = op->ob_sval[i];
>           |                   ^~
>     cjson.c:646:9: warning: implicit declaration of function 
> ‘_PyString_Resize’ [-Wimplicit-function-declaration]
>       646 |         _PyString_Resize(&v, (int) (p - 
> PyString_AS_STRING(v)));
>           |         ^~~~~~~~~~~~~~~~
>     cjson.c:646:30: warning: cast from pointer to integer of different 
> size [-Wpointer-to-int-cast]
>       646 |         _PyString_Resize(&v, (int) (p - 
> PyString_AS_STRING(v)));
>           |                              ^
>     cjson.c: In function ‘encode_unicode’:
>     cjson.c:697:10: warning: assignment to ‘PyObject *’ {aka ‘struct 
> _object *’} from ‘int’ makes pointer from integer without a cast 
> [-Wint-conversion]
>       697 |     repr = PyString_FromStringAndSize(NULL, 2 + 
> expandsize*size + 1);
>           |          ^
>     cjson.c:701:7: warning: assignment to ‘char *’ from ‘int’ makes 
> pointer from integer without a cast [-Wint-conversion]
>       701 |     p = PyString_AS_STRING(repr);
>           |       ^
>     cjson.c:709:57: error: subscripted value is neither array nor pointer 
> nor vector
>       709 |         if ((ch == (Py_UNICODE) PyString_AS_STRING(repr)[0] || 
> ch == '\\')) {
>           |                                                         ^
>     cjson.c:785:36: error: subscripted value is neither array nor pointer 
> nor vector
>       785 |     *p++ = PyString_AS_STRING(repr)[0];
>           |                                    ^
>     cjson.c: In function ‘encode_tuple’:
>     cjson.c:809:10: error: ‘PyTupleObject’ {aka ‘struct <anonymous>’} has 
> no member named ‘ob_size’
>       809 |     n = v->ob_size;
>           |          ^~
>     cjson.c:811:16: warning: implicit declaration of function 
> ‘PyString_FromString’; did you mean ‘PyLong_FromString’? 
> [-Wimplicit-function-declaration]
>       811 |         return PyString_FromString("[]");
>           |                ^~~~~~~~~~~~~~~~~~~
>           |                PyLong_FromString
>     cjson.c:811:16: warning: returning ‘int’ from a function with return 
> type ‘PyObject *’ {aka ‘struct _object *’} makes pointer from integer 
> without a cast [-Wint-conversion]
>       811 |         return PyString_FromString("[]");
>           |                ^~~~~~~~~~~~~~~~~~~~~~~~~
>     cjson.c:827:7: warning: assignment to ‘PyObject *’ {aka ‘struct 
> _object *’} from ‘int’ makes pointer from integer without a cast 
> [-Wint-conversion]
>       827 |     s = PyString_FromString("[");
>           |       ^
>     cjson.c:831:5: warning: implicit declaration of function 
> ‘PyString_ConcatAndDel’; did you mean ‘PyBytes_ConcatAndDel’? 
> [-Wimplicit-function-declaration]
>       831 |     PyString_ConcatAndDel(&s, temp);
>           |     ^~~~~~~~~~~~~~~~~~~~~
>           |     PyBytes_ConcatAndDel
>     cjson.c:836:7: warning: assignment to ‘PyObject *’ {aka ‘struct 
> _object *’} from ‘int’ makes pointer from integer without a cast 
> [-Wint-conversion]
>       836 |     s = PyString_FromString("]");
>           |       ^
>     cjson.c:846:7: warning: assignment to ‘PyObject *’ {aka ‘struct 
> _object *’} from ‘int’ makes pointer from integer without a cast 
> [-Wint-conversion]
>       846 |     s = PyString_FromString(", ");
>           |       ^
>     cjson.c:849:14: warning: implicit declaration of function 
> ‘_PyString_Join’ [-Wimplicit-function-declaration]
>       849 |     result = _PyString_Join(s, pieces);
>           |              ^~~~~~~~~~~~~~
>     cjson.c:849:12: warning: assignment to ‘PyObject *’ {aka ‘struct 
> _object *’} from ‘int’ makes pointer from integer without a cast 
> [-Wint-conversion]
>       849 |     result = _PyString_Join(s, pieces);
>           |            ^
>     cjson.c: In function ‘encode_list’:
>     cjson.c:883:10: error: ‘PyListObject’ {aka ‘struct <anonymous>’} has 
> no member named ‘ob_size’
>       883 |     if (v->ob_size == 0) {
>           |          ^~
>     cjson.c:884:16: warning: assignment to ‘PyObject *’ {aka ‘struct 
> _object *’} from ‘int’ makes pointer from integer without a cast 
> [-Wint-conversion]
>       884 |         result = PyString_FromString("[]");
>           |                ^
>     cjson.c:894:22: error: ‘PyListObject’ {aka ‘struct <anonymous>’} has 
> no member named ‘ob_size’
>       894 |     for (i = 0; i < v->ob_size; ++i) {
>           |                      ^~
>     cjson.c:907:7: warning: assignment to ‘PyObject *’ {aka ‘struct 
> _object *’} from ‘int’ makes pointer from integer without a cast 
> [-Wint-conversion]
>       907 |     s = PyString_FromString("[");
>           |       ^
>     cjson.c:916:7: warning: assignment to ‘PyObject *’ {aka ‘struct 
> _object *’} from ‘int’ makes pointer from integer without a cast 
> [-Wint-conversion]
>       916 |     s = PyString_FromString("]");
>           |       ^
>     cjson.c:926:7: warning: assignment to ‘PyObject *’ {aka ‘struct 
> _object *’} from ‘int’ makes pointer from integer without a cast 
> [-Wint-conversion]
>       926 |     s = PyString_FromString(", ");
>           |       ^
>     cjson.c:929:12: warning: assignment to ‘PyObject *’ {aka ‘struct 
> _object *’} from ‘int’ makes pointer from integer without a cast 
> [-Wint-conversion]
>       929 |     result = _PyString_Join(s, pieces);
>           |            ^
>     cjson.c: In function ‘encode_dict’:
>     cjson.c:968:16: warning: assignment to ‘PyObject *’ {aka ‘struct 
> _object *’} from ‘int’ makes pointer from integer without a cast 
> [-Wint-conversion]
>       968 |         result = PyString_FromString("{}");
>           |                ^
>     cjson.c:976:11: warning: assignment to ‘PyObject *’ {aka ‘struct 
> _object *’} from ‘int’ makes pointer from integer without a cast 
> [-Wint-conversion]
>       976 |     colon = PyString_FromString(": ");
>           |           ^
>     cjson.c:986:14: warning: implicit declaration of function 
> ‘PyString_Check’; did you mean ‘PyMapping_Check’? 
> [-Wimplicit-function-declaration]
>       986 |         if (!PyString_Check(key) && !PyUnicode_Check(key)) {
>           |              ^~~~~~~~~~~~~~
>           |              PyMapping_Check
>     cjson.c:995:9: warning: implicit declaration of function 
> ‘PyString_Concat’; did you mean ‘PySequence_Concat’? 
> [-Wimplicit-function-declaration]
>       995 |         PyString_Concat(&s, colon);
>           |         ^~~~~~~~~~~~~~~
>           |         PySequence_Concat
>     cjson.c:1008:7: warning: assignment to ‘PyObject *’ {aka ‘struct 
> _object *’} from ‘int’ makes pointer from integer without a cast 
> [-Wint-conversion]
>      1008 |     s = PyString_FromString("{");
>           |       ^
>     cjson.c:1017:7: warning: assignment to ‘PyObject *’ {aka ‘struct 
> _object *’} from ‘int’ makes pointer from integer without a cast 
> [-Wint-conversion]
>      1017 |     s = PyString_FromString("}");
>           |       ^
>     cjson.c:1027:7: warning: assignment to ‘PyObject *’ {aka ‘struct 
> _object *’} from ‘int’ makes pointer from integer without a cast 
> [-Wint-conversion]
>      1027 |     s = PyString_FromString(", ");
>           |       ^
>     cjson.c:1030:12: warning: assignment to ‘PyObject *’ {aka ‘struct 
> _object *’} from ‘int’ makes pointer from integer without a cast 
> [-Wint-conversion]
>      1030 |     result = _PyString_Join(s, pieces);
>           |            ^
>     cjson.c: In function ‘encode_object’:
>     cjson.c:1045:16: warning: returning ‘int’ from a function with return 
> type ‘PyObject *’ {aka ‘struct _object *’} makes pointer from integer 
> without a cast [-Wint-conversion]
>      1045 |         return PyString_FromString("true");
>           |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>     cjson.c:1047:16: warning: returning ‘int’ from a function with return 
> type ‘PyObject *’ {aka ‘struct _object *’} makes pointer from integer 
> without a cast [-Wint-conversion]
>      1047 |         return PyString_FromString("false");
>           |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>     cjson.c:1049:16: warning: returning ‘int’ from a function with return 
> type ‘PyObject *’ {aka ‘struct _object *’} makes pointer from integer 
> without a cast [-Wint-conversion]
>      1049 |         return PyString_FromString("null");
>           |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>     cjson.c:1057:20: warning: returning ‘int’ from a function with return 
> type ‘PyObject *’ {aka ‘struct _object *’} makes pointer from integer 
> without a cast [-Wint-conversion]
>      1057 |             return PyString_FromString("NaN");
>           |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~
>     cjson.c:1060:24: warning: returning ‘int’ from a function with return 
> type ‘PyObject *’ {aka ‘struct _object *’} makes pointer from integer 
> without a cast [-Wint-conversion]
>      1060 |                 return PyString_FromString("Infinity");
>           |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>     cjson.c:1062:24: warning: returning ‘int’ from a function with return 
> type ‘PyObject *’ {aka ‘struct _object *’} makes pointer from integer 
> without a cast [-Wint-conversion]
>      1062 |                 return PyString_FromString("-Infinity");
>           |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>     cjson.c:1067:16: warning: implicit declaration of function 
> ‘PyInt_Check’; did you mean ‘PySet_Check’? [-Wimplicit-function-declaration]
>      1067 |     } else if (PyInt_Check(object) || PyLong_Check(object)) {
>           |                ^~~~~~~~~~~
>           |                PySet_Check
>     cjson.c: In function ‘JSON_decode’:
>     cjson.c:1130:9: warning: implicit declaration of function 
> ‘PyString_AsStringAndSize’; did you mean ‘PyBytes_AsStringAndSize’? 
> [-Wimplicit-function-declaration]
>      1130 |     if (PyString_AsStringAndSize(str, &(jsondata.str), NULL) 
> == -1) {
>           |         ^~~~~~~~~~~~~~~~~~~~~~~~
>           |         PyBytes_AsStringAndSize
>     cjson.c:1136:35: warning: implicit declaration of function 
> ‘PyString_GET_SIZE’; did you mean ‘PyList_GET_SIZE’? 
> [-Wimplicit-function-declaration]
>      1136 |     jsondata.end = jsondata.str + PyString_GET_SIZE(str);
>           |                                   ^~~~~~~~~~~~~~~~~
>           |                                   PyList_GET_SIZE
>     cjson.c: In function ‘initcjson’:
>     cjson.c:1187:9: warning: implicit declaration of function 
> ‘Py_InitModule3’ [-Wimplicit-function-declaration]
>      1187 |     m = Py_InitModule3("cjson", cjson_methods, module_doc);
>           |         ^~~~~~~~~~~~~~
>     cjson.c:1187:7: warning: assignment to ‘PyObject *’ {aka ‘struct 
> _object *’} from ‘int’ makes pointer from integer without a cast 
> [-Wint-conversion]
>      1187 |     m = Py_InitModule3("cjson", cjson_methods, module_doc);
>           |       ^
>     cjson.c:1190:9: warning: ‘return’ with no value, in function returning 
> non-void [-Wreturn-type]
>      1190 |         return;
>           |         ^~~~~~
>     cjson.c:1183:1: note: declared here
>      1183 | initcjson(void)
>           | ^~~~~~~~~
>     cjson.c:1194:9: warning: ‘return’ with no value, in function returning 
> non-void [-Wreturn-type]
>      1194 |         return;
>           |         ^~~~~~
>     cjson.c:1183:1: note: declared here
>      1183 | initcjson(void)
>           | ^~~~~~~~~
>     cjson.c:1200:9: warning: ‘return’ with no value, in function returning 
> non-void [-Wreturn-type]
>      1200 |         return;
>           |         ^~~~~~
>     cjson.c:1183:1: note: declared here
>      1183 | initcjson(void)
>           | ^~~~~~~~~
>     cjson.c:1206:9: warning: ‘return’ with no value, in function returning 
> non-void [-Wreturn-type]
>      1206 |         return;
>           |         ^~~~~~
>     cjson.c:1183:1: note: declared here
>      1183 | initcjson(void)
>           | ^~~~~~~~~
>     error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
>     ----------------------------------------
> ERROR: Command errored out with exit status 1: /usr/bin/python3 -u -c 
> 'import sys, setuptools, tokenize; sys.argv[0] = 
> '"'"'/tmp/pip-install-zu4cgg1n/python-cjson/setup.py'"'"'; 
> __file__='"'"'/tmp/pip-install-zu4cgg1n/python-cjson/setup.py'"'"';f=getattr(tokenize,
>  
> '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', 
> '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' 
> install --record /tmp/pip-record-b8b539va/install-record.txt 
> --single-version-externally-managed --compile --install-headers 
> /usr/local/include/python3.8/python-cjson Check the logs for full command 
> output.
>

-- 
You received this message because you are subscribed to the Google Groups 
"weewx-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to weewx-user+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/weewx-user/9511f18b-737c-4fff-9b37-f90eb70e2514%40googlegroups.com.

Reply via email to