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/a9562256-3464-4225-a6da-5f375275e4bb%40googlegroups.com.