I'd like to run a vaping docker image on my Raspberry Pi. As the only prebuilt image is for linux/amd64 and the raspi is linux/arm/v7, I tried to build my own docker image, which fails during the pip build of rrdtool due to pointer conversions (see oetiker/rrdtool-1.x#1242).
The root of the problem stems from certain pointer conversions which gcc<14 only warns about, but gcc>=14 will fail on. The issue in rrdtool was fixed more than one year ago, but it seems it hasn't yet propagated downstream.
I'd be grateful for any suggestions. (In the old tarball world, I'd long have fixed this manually, but I don't know how to tamper with the docker image build process -- maybe for the better ;) )
Please find the full error messages for reference below.
Building wheels for collected packages: rrdtool, whisper, graphyte, MarkupSafe, pyyaml, pyzmq
DEPRECATION: Building 'rrdtool' using the legacy setup.py bdist_wheel mechanism, which will be removed in a future version. pip 25.3 will enforce this behaviour change. A possible replace
ment is to use the standardized build interface by setting the `--use-pep517` option, (possibly combined with `--no-build-isolation`), or adding a `pyproject.toml` file to the source tree o
f 'rrdtool'. Discussion can be found at https://github.com/pypa/pip/issues/6334
Building wheel for rrdtool (setup.py): started
Building wheel for rrdtool (setup.py): finished with status 'error'
error: subprocess-exited-with-error
× python setup.py bdist_wheel did not run successfully.
│ exit code: 1
╰─> [153 lines of output]
/venv/lib/python3.11/site-packages/setuptools/config/setupcfg.py:508: SetuptoolsDeprecationWarning: The license_file parameter is deprecated, use license_files instead.
warnings.warn(msg, warning_class)
running bdist_wheel
running build
running build_ext
building 'rrdtool' extension
creating build
creating build/temp.linux-armv7l-cpython-311
gcc -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPACKAGE_VERSION=\"0.1.16\" -DWITH_FETCH_CB=1 -I/tmp/pip-install-4u5710av/rrdtool_afff24f21a5f446db1f204352a76f7ef -I/usr/local
/include -I/venv/include -I/usr/local/include/python3.11 -c rrdtoolmodule.c -o build/temp.linux-armv7l-cpython-311/rrdtoolmodule.o
rrdtoolmodule.c: In function '_rrdtool_create':
rrdtoolmodule.c:282:39: error: passing argument 2 of 'rrd_create' from incompatible pointer type [-Wincompatible-pointer-types]
282 | status = rrd_create(rrdtool_argc, rrdtool_argv);
| ^~~~~~~~~~~~
| |
| char **
In file included from rrdtoolmodule.h:4,
from rrdtoolmodule.c:27:
/usr/include/rrd.h:158:5: note: expected 'const char **' but argument is of type 'char **'
158 | const char **);
| ^~~~~~~~~~~~~
rrdtoolmodule.c: In function '_rrdtool_dump':
rrdtoolmodule.c:321:37: error: passing argument 2 of 'rrd_dump' from incompatible pointer type [-Wincompatible-pointer-types]
321 | status = rrd_dump(rrdtool_argc, rrdtool_argv);
| ^~~~~~~~~~~~
| |
| char **
/usr/include/rrd.h:210:5: note: expected 'const char **' but argument is of type 'char **'
210 | const char **);
| ^~~~~~~~~~~~~
rrdtoolmodule.c: In function '_rrdtool_update':
rrdtoolmodule.c:360:39: error: passing argument 2 of 'rrd_update' from incompatible pointer type [-Wincompatible-pointer-types]
360 | status = rrd_update(rrdtool_argc, rrdtool_argv);
| ^~~~~~~~~~~~
| |
| char **
/usr/include/rrd.h:179:5: note: expected 'const char **' but argument is of type 'char **'
179 | const char **);
| ^~~~~~~~~~~~~
rrdtoolmodule.c: In function '_rrdtool_updatev':
rrdtoolmodule.c:393:39: error: passing argument 2 of 'rrd_update_v' from incompatible pointer type [-Wincompatible-pointer-types]
393 | data = rrd_update_v(rrdtool_argc, rrdtool_argv);
| ^~~~~~~~~~~~
| |
| char **
/usr/include/rrd.h:182:5: note: expected 'const char **' but argument is of type 'char **'
182 | const char **);
| ^~~~~~~~~~~~~
rrdtoolmodule.c: In function '_rrdtool_fetch':
rrdtoolmodule.c:438:38: error: passing argument 2 of 'rrd_fetch' from incompatible pointer type [-Wincompatible-pointer-types]
438 | status = rrd_fetch(rrdtool_argc, rrdtool_argv, &start, &end, &step,
| ^~~~~~~~~~~~
| |
| char **
/usr/include/rrd.h:198:5: note: expected 'const char **' but argument is of type 'char **'
198 | const char **,
| ^~~~~~~~~~~~~
rrdtoolmodule.c: In function '_rrdtool_flushcached':
rrdtoolmodule.c:512:44: error: passing argument 2 of 'rrd_flushcached' from incompatible pointer type [-Wincompatible-pointer-types]
512 | status = rrd_flushcached(rrdtool_argc, rrdtool_argv);
| ^~~~~~~~~~~~
| |
| char **
/usr/include/rrd.h:242:18: note: expected 'const char **' but argument is of type 'char **'
242 | const char **argv);
| ~~~~~~~~~~~~~^~~~
rrdtoolmodule.c: In function '_rrdtool_graph':
rrdtoolmodule.c:606:38: error: passing argument 2 of 'rrd_graph' from incompatible pointer type [-Wincompatible-pointer-types]
606 | status = rrd_graph(rrdtool_argc, rrdtool_argv, &calcpr, &xsize, &ysize,
| ^~~~~~~~~~~~
| |
| char **
/usr/include/rrd.h:185:5: note: expected 'const char **' but argument is of type 'char **'
185 | const char **,
| ^~~~~~~~~~~~~
rrdtoolmodule.c: In function '_rrdtool_graphv':
rrdtoolmodule.c:661:38: error: passing argument 2 of 'rrd_graph_v' from incompatible pointer type [-Wincompatible-pointer-types]
661 | data = rrd_graph_v(rrdtool_argc, rrdtool_argv);
| ^~~~~~~~~~~~
| |
| char **
/usr/include/rrd.h:194:5: note: expected 'const char **' but argument is of type 'char **'
194 | const char **);
| ^~~~~~~~~~~~~
rrdtoolmodule.c: In function '_rrdtool_xport':
rrdtoolmodule.c:710:38: error: passing argument 2 of 'rrd_xport' from incompatible pointer type [-Wincompatible-pointer-types]
710 | status = rrd_xport(rrdtool_argc, rrdtool_argv, &xsize, &start, &end, &step,
| ^~~~~~~~~~~~
| |
| char **
/usr/include/rrd.h:232:5: note: expected 'const char **' but argument is of type 'char **'
232 | const char **,
| ^~~~~~~~~~~~~
rrdtoolmodule.c: In function '_rrdtool_tune':
rrdtoolmodule.c:808:37: error: passing argument 2 of 'rrd_tune' from incompatible pointer type [-Wincompatible-pointer-types]
808 | status = rrd_tune(rrdtool_argc, rrdtool_argv);
| ^~~~~~~~~~~~
| |
| char **
/usr/include/rrd.h:213:5: note: expected 'const char **' but argument is of type 'char **'
213 | const char **);
| ^~~~~~~~~~~~~
rrdtoolmodule.c: In function '_rrdtool_first':
rrdtoolmodule.c:846:34: error: passing argument 2 of 'rrd_first' from incompatible pointer type [-Wincompatible-pointer-types]
846 | ts = rrd_first(rrdtool_argc, rrdtool_argv);
| ^~~~~~~~~~~~
| |
| char **
/usr/include/rrd.h:222:5: note: expected 'const char **' but argument is of type 'char **'
222 | const char **);
| ^~~~~~~~~~~~~
rrdtoolmodule.c: In function '_rrdtool_last':
rrdtoolmodule.c:881:33: error: passing argument 2 of 'rrd_last' from incompatible pointer type [-Wincompatible-pointer-types]
881 | ts = rrd_last(rrdtool_argc, rrdtool_argv);
| ^~~~~~~~~~~~
| |
| char **
/usr/include/rrd.h:216:5: note: expected 'const char **' but argument is of type 'char **'
216 | const char **);
| ^~~~~~~~~~~~~
rrdtoolmodule.c: In function '_rrdtool_resize':
rrdtoolmodule.c:918:39: error: passing argument 2 of 'rrd_resize' from incompatible pointer type [-Wincompatible-pointer-types]
918 | status = rrd_resize(rrdtool_argc, rrdtool_argv);
| ^~~~~~~~~~~~
| |
| char **
/usr/include/rrd.h:225:5: note: expected 'const char **' but argument is of type 'char **'
225 | const char **);
| ^~~~~~~~~~~~~
rrdtoolmodule.c: In function '_rrdtool_info':
rrdtoolmodule.c:956:35: error: passing argument 2 of 'rrd_info' from incompatible pointer type [-Wincompatible-pointer-types]
956 | data = rrd_info(rrdtool_argc, rrdtool_argv);
| ^~~~~~~~~~~~
| |
| char **
/usr/include/rrd.h:161:5: note: expected 'const char **' but argument is of type 'char **'
161 | const char **);
| ^~~~~~~~~~~~~
rrdtoolmodule.c: In function 'PyInit_rrdtool':
rrdtoolmodule.c:1403:5: warning: 'PyEval_ThreadsInitialized' is deprecated [-Wdeprecated-declarations]
1403 | if (!PyEval_ThreadsInitialized())
| ^~
In file included from /usr/local/include/python3.11/Python.h:95,
from rrdtoolmodule.c:25:
/usr/local/include/python3.11/ceval.h:131:36: note: declared here
131 | Py_DEPRECATED(3.9) PyAPI_FUNC(int) PyEval_ThreadsInitialized(void);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
rrdtoolmodule.c:1404:9: warning: 'PyEval_InitThreads' is deprecated [-Wdeprecated-declarations]
1404 | PyEval_InitThreads();
| ^~~~~~~~~~~~~~~~~~
/usr/local/include/python3.11/ceval.h:132:37: note: declared here
132 | Py_DEPRECATED(3.9) PyAPI_FUNC(void) PyEval_InitThreads(void);
| ^~~~~~~~~~~~~~~~~~
error: command '/usr/bin/gcc' failed with exit code 1
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for rrdtool
Running setup.py clean for rrdtool
[...]
Successfully built whisper graphyte MarkupSafe pyyaml pyzmq
Failed to build rrdtool
error: failed-wheel-build-for-install
× Failed to build installable wheels for some pyproject.toml based projects
╰─> rrdtool
The command '/bin/sh -c pip install "$(ls dist/vaping-*.whl)[${vaping_extras}]"' returned a non-zero code: 1
Hello everyone
I'd like to run a vaping docker image on my Raspberry Pi. As the only prebuilt image is for linux/amd64 and the raspi is linux/arm/v7, I tried to build my own docker image, which fails during the pip build of rrdtool due to pointer conversions (see oetiker/rrdtool-1.x#1242).
The root of the problem stems from certain pointer conversions which gcc<14 only warns about, but gcc>=14 will fail on. The issue in rrdtool was fixed more than one year ago, but it seems it hasn't yet propagated downstream.
What I tried to solve the problem:
I'd be grateful for any suggestions. (In the old tarball world, I'd long have fixed this manually, but I don't know how to tamper with the docker image build process -- maybe for the better ;) )
Please find the full error messages for reference below.
Best regards
Björn