-
Notifications
You must be signed in to change notification settings - Fork 72
Description
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:
- Use a python alpine base image that includes gcc 13 -- doesn't exist. The python base images start at alpine 3.21, which includes only gcc 14. (Near miss, Alpine 3.20 has gcc 13.)
- Force pip to use a package which includes the fixes -- impossibru, the latest rrdtool on PyPI is from mid-2022.
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
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