2025-09-08T03:55:58,252 Created temporary directory: /tmp/pip-build-tracker-pb8akf1y 2025-09-08T03:55:58,253 Initialized build tracking at /tmp/pip-build-tracker-pb8akf1y 2025-09-08T03:55:58,253 Created build tracker: /tmp/pip-build-tracker-pb8akf1y 2025-09-08T03:55:58,253 Entered build tracker: /tmp/pip-build-tracker-pb8akf1y 2025-09-08T03:55:58,253 Created temporary directory: /tmp/pip-wheel-dhdkmjc_ 2025-09-08T03:55:58,256 Created temporary directory: /tmp/pip-ephem-wheel-cache-k99fzlao 2025-09-08T03:55:58,312 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2025-09-08T03:55:58,314 2 location(s) to search for versions of tetris-cpp: 2025-09-08T03:55:58,314 * https://pypi.org/simple/tetris-cpp/ 2025-09-08T03:55:58,314 * https://www.piwheels.org/simple/tetris-cpp/ 2025-09-08T03:55:58,314 Fetching project page and analyzing links: https://pypi.org/simple/tetris-cpp/ 2025-09-08T03:55:58,315 Getting page https://pypi.org/simple/tetris-cpp/ 2025-09-08T03:55:58,316 Found index url https://pypi.org/simple/ 2025-09-08T03:55:58,385 Fetched page https://pypi.org/simple/tetris-cpp/ as application/vnd.pypi.simple.v1+json 2025-09-08T03:55:58,386 Found link https://files.pythonhosted.org/packages/e3/77/124597fcd3a8bdcc4bc0ec3d33c416c7cfd9d34128676a1cdcb8053095d5/tetris_cpp-0.1.1.tar.gz (from https://pypi.org/simple/tetris-cpp/), version: 0.1.1 2025-09-08T03:55:58,387 Found link https://files.pythonhosted.org/packages/5c/72/96210fabf1aee822375acd75daf3ca72b38adb3a303e20671c0a51e4eed3/tetris_cpp-0.1.2.tar.gz (from https://pypi.org/simple/tetris-cpp/), version: 0.1.2 2025-09-08T03:55:58,387 Found link https://files.pythonhosted.org/packages/f8/a6/e17abdccd14324753008db97ce7d074a5aed80fd0e9e0d687741489c2598/tetris_cpp-0.1.3.linux-x86_64.tar.gz (from https://pypi.org/simple/tetris-cpp/), version: 0.1.3.linux-x86_64 2025-09-08T03:55:58,387 Found link https://files.pythonhosted.org/packages/8f/cd/4b39c5c2b29ca596f7a1a60d322b707e96f9ddb0406de9acd744edf7e148/tetris_cpp-0.1.3.tar.gz (from https://pypi.org/simple/tetris-cpp/), version: 0.1.3 2025-09-08T03:55:58,388 Fetching project page and analyzing links: https://www.piwheels.org/simple/tetris-cpp/ 2025-09-08T03:55:58,388 Getting page https://www.piwheels.org/simple/tetris-cpp/ 2025-09-08T03:55:58,389 Found index url https://www.piwheels.org/simple/ 2025-09-08T03:55:58,481 Fetched page https://www.piwheels.org/simple/tetris-cpp/ as text/html 2025-09-08T03:55:58,481 Skipping link: not a file: https://www.piwheels.org/simple/tetris-cpp/ 2025-09-08T03:55:58,482 Skipping link: not a file: https://pypi.org/simple/tetris-cpp/ 2025-09-08T03:55:58,504 Given no hashes to check 1 links for project 'tetris-cpp': discarding no candidates 2025-09-08T03:55:58,505 Collecting tetris-cpp==0.1.3 2025-09-08T03:55:58,507 Created temporary directory: /tmp/pip-unpack-4_x4db2p 2025-09-08T03:55:58,644 Downloading tetris_cpp-0.1.3.tar.gz (8.7 kB) 2025-09-08T03:55:58,670 Added tetris-cpp==0.1.3 from https://files.pythonhosted.org/packages/8f/cd/4b39c5c2b29ca596f7a1a60d322b707e96f9ddb0406de9acd744edf7e148/tetris_cpp-0.1.3.tar.gz to build tracker '/tmp/pip-build-tracker-pb8akf1y' 2025-09-08T03:55:58,671 Running setup.py (path:/tmp/pip-wheel-dhdkmjc_/tetris-cpp_b6f8427a4092435f954d2c2aceacf58a/setup.py) egg_info for package tetris-cpp 2025-09-08T03:55:58,671 Created temporary directory: /tmp/pip-pip-egg-info-6q0l2t8j 2025-09-08T03:55:58,672 Preparing metadata (setup.py): started 2025-09-08T03:55:58,672 Running command python setup.py egg_info 2025-09-08T03:55:59,814 running egg_info 2025-09-08T03:55:59,889 creating /tmp/pip-pip-egg-info-6q0l2t8j/tetris_cpp.egg-info 2025-09-08T03:55:59,889 writing /tmp/pip-pip-egg-info-6q0l2t8j/tetris_cpp.egg-info/PKG-INFO 2025-09-08T03:55:59,890 writing dependency_links to /tmp/pip-pip-egg-info-6q0l2t8j/tetris_cpp.egg-info/dependency_links.txt 2025-09-08T03:55:59,891 writing top-level names to /tmp/pip-pip-egg-info-6q0l2t8j/tetris_cpp.egg-info/top_level.txt 2025-09-08T03:55:59,891 writing manifest file '/tmp/pip-pip-egg-info-6q0l2t8j/tetris_cpp.egg-info/SOURCES.txt' 2025-09-08T03:56:00,183 reading manifest file '/tmp/pip-pip-egg-info-6q0l2t8j/tetris_cpp.egg-info/SOURCES.txt' 2025-09-08T03:56:00,185 writing manifest file '/tmp/pip-pip-egg-info-6q0l2t8j/tetris_cpp.egg-info/SOURCES.txt' 2025-09-08T03:56:00,298 Preparing metadata (setup.py): finished with status 'done' 2025-09-08T03:56:00,302 Source in /tmp/pip-wheel-dhdkmjc_/tetris-cpp_b6f8427a4092435f954d2c2aceacf58a has version 0.1.3, which satisfies requirement tetris-cpp==0.1.3 from https://files.pythonhosted.org/packages/8f/cd/4b39c5c2b29ca596f7a1a60d322b707e96f9ddb0406de9acd744edf7e148/tetris_cpp-0.1.3.tar.gz 2025-09-08T03:56:00,302 Removed tetris-cpp==0.1.3 from https://files.pythonhosted.org/packages/8f/cd/4b39c5c2b29ca596f7a1a60d322b707e96f9ddb0406de9acd744edf7e148/tetris_cpp-0.1.3.tar.gz from build tracker '/tmp/pip-build-tracker-pb8akf1y' 2025-09-08T03:56:00,305 Created temporary directory: /tmp/pip-unpack-qhnp6g9t 2025-09-08T03:56:00,305 Created temporary directory: /tmp/pip-unpack-90lr0cpt 2025-09-08T03:56:00,305 Building wheels for collected packages: tetris-cpp 2025-09-08T03:56:00,307 Created temporary directory: /tmp/pip-wheel-w3ka20zj 2025-09-08T03:56:00,307 DEPRECATION: Building 'tetris-cpp' 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 replacement 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 of 'tetris-cpp'. Discussion can be found at https://github.com/pypa/pip/issues/6334 2025-09-08T03:56:00,308 Building wheel for tetris-cpp (setup.py): started 2025-09-08T03:56:00,309 Destination directory: /tmp/pip-wheel-w3ka20zj 2025-09-08T03:56:00,309 Running command python setup.py bdist_wheel 2025-09-08T03:56:01,355 running bdist_wheel 2025-09-08T03:56:01,713 running build 2025-09-08T03:56:01,713 running build_py 2025-09-08T03:56:01,787 creating build/lib.linux-armv7l-cpython-313/tetris_cpp 2025-09-08T03:56:01,788 copying tetris_cpp/__init__.py -> build/lib.linux-armv7l-cpython-313/tetris_cpp 2025-09-08T03:56:01,789 running build_ext 2025-09-08T03:56:02,123 building '_tetris_cpp' extension 2025-09-08T03:56:02,124 creating build/temp.linux-armv7l-cpython-313 2025-09-08T03:56:02,125 arm-linux-gnueabihf-g++ -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O2 -Wall -fPIC -I. -I/usr/include/python3.13 -c board_python.cpp -o build/temp.linux-armv7l-cpython-313/board_python.o -std=c++11 2025-09-08T03:56:03,614 board_python.cpp: In function ‘PyObject* set_row_cache_size_function(PyObject*, PyObject*, PyObject*)’: 2025-09-08T03:56:03,614 board_python.cpp:139:31: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2025-09-08T03:56:03,614 139 | static char *keywords[] = { "max", NULL }; 2025-09-08T03:56:03,614 | ^~~~~ 2025-09-08T03:56:03,616 board_python.cpp: In function ‘PyObject* set_board_cache_size_function(PyObject*, PyObject*, PyObject*)’: 2025-09-08T03:56:03,616 board_python.cpp:153:31: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2025-09-08T03:56:03,616 153 | static char *keywords[] = { "max", NULL }; 2025-09-08T03:56:03,616 | ^~~~~ 2025-09-08T03:56:03,616 board_python.cpp:157:29: warning: comparison of integer expressions of different signedness: ‘std::stack > >::size_type’ {aka ‘unsigned int’} and ‘int’ [-Wsign-compare] 2025-09-08T03:56:03,616 157 | while (board_cache.size() > count) { 2025-09-08T03:56:03,617 | ~~~~~~~~~~~~~~~~~~~^~~~~~~ 2025-09-08T03:56:03,618 board_python.cpp: At global scope: 2025-09-08T03:56:03,618 board_python.cpp:178:1: warning: converting to non-pointer type ‘int’ from NULL [-Wconversion-null] 2025-09-08T03:56:03,618 178 | }; 2025-09-08T03:56:03,618 | ^ 2025-09-08T03:56:03,618 board_python.cpp: In function ‘int python_tetris_20_10_init_function(python_tetris_20_10*, PyObject*, PyObject*)’: 2025-09-08T03:56:03,619 board_python.cpp:185:31: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2025-09-08T03:56:03,619 185 | static char *keywords[] = { "rows", NULL }; 2025-09-08T03:56:03,619 | ^~~~~~ 2025-09-08T03:56:03,638 board_python.cpp: In function ‘int python_tetris_20_10_setitem_function(python_tetris_20_10*, PyObject*, PyObject*)’: 2025-09-08T03:56:03,638 board_python.cpp:216:11: error: ‘PyInt_AsLong’ was not declared in this scope; did you mean ‘PyLong_AsLong’? 2025-09-08T03:56:03,638 216 | value = PyInt_AsLong(val); 2025-09-08T03:56:03,638 | ^~~~~~~~~~~~ 2025-09-08T03:56:03,638 | PyLong_AsLong 2025-09-08T03:56:03,643 board_python.cpp: In function ‘PyObject* python_tetris_20_10_add_rows_function(python_tetris_20_10*, PyObject*, PyObject*)’: 2025-09-08T03:56:03,643 board_python.cpp:264:31: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2025-09-08T03:56:03,643 264 | static char *keywords[] = { "rows", NULL }; 2025-09-08T03:56:03,643 | ^~~~~~ 2025-09-08T03:56:03,644 board_python.cpp: In function ‘PyObject* python_tetris_20_10_is_fake_row_function(python_tetris_20_10*, PyObject*, PyObject*)’: 2025-09-08T03:56:03,644 board_python.cpp:272:31: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2025-09-08T03:56:03,644 272 | static char *keywords[] = { "r", NULL }; 2025-09-08T03:56:03,644 | ^~~ 2025-09-08T03:56:03,645 board_python.cpp: In function ‘PyObject* python_tetris_20_10_is_mirrored_row_function(python_tetris_20_10*, PyObject*, PyObject*)’: 2025-09-08T03:56:03,646 board_python.cpp:281:31: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2025-09-08T03:56:03,646 281 | static char *keywords[] = { "r", NULL }; 2025-09-08T03:56:03,646 | ^~~ 2025-09-08T03:56:03,647 board_python.cpp: In function ‘PyObject* python_tetris_20_10_check_full_function(python_tetris_20_10*, PyObject*, PyObject*)’: 2025-09-08T03:56:03,647 board_python.cpp:290:31: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2025-09-08T03:56:03,647 290 | static char *keywords[] = { "clear", NULL }; 2025-09-08T03:56:03,647 | ^~~~~~~ 2025-09-08T03:56:03,648 board_python.cpp: In function ‘PyObject* python_tetris_20_10_check_empty_function(python_tetris_20_10*, PyObject*, PyObject*)’: 2025-09-08T03:56:03,648 board_python.cpp:298:31: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2025-09-08T03:56:03,648 298 | static char *keywords[] = { "clear", NULL }; 2025-09-08T03:56:03,648 | ^~~~~~~ 2025-09-08T03:56:03,649 board_python.cpp: In function ‘PyObject* python_tetris_20_10_set_tamper_seal_function(python_tetris_20_10*, PyObject*, PyObject*)’: 2025-09-08T03:56:03,649 board_python.cpp:306:31: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] 2025-09-08T03:56:03,649 306 | static char *keywords[] = { "state", NULL }; 2025-09-08T03:56:03,649 | ^~~~~~~ 2025-09-08T03:56:03,651 board_python.cpp: In function ‘PyObject* init_tetris_cpp()’: 2025-09-08T03:56:03,652 board_python.cpp:354:21: warning: ‘void PyEval_InitThreads()’ is deprecated [-Wdeprecated-declarations] 2025-09-08T03:56:03,652 354 | PyEval_InitThreads(); 2025-09-08T03:56:03,652 | ~~~~~~~~~~~~~~~~~~^~ 2025-09-08T03:56:03,652 In file included from /usr/include/python3.13/Python.h:124, 2025-09-08T03:56:03,652 from board_python.cpp:8: 2025-09-08T03:56:03,652 /usr/include/python3.13/ceval.h:114:37: note: declared here 2025-09-08T03:56:03,652 114 | Py_DEPRECATED(3.9) PyAPI_FUNC(void) PyEval_InitThreads(void); 2025-09-08T03:56:03,653 | ^~~~~~~~~~~~~~~~~~ 2025-09-08T03:56:03,673 board_python.cpp:355:12: error: ‘Py_InitModule3’ was not declared in this scope 2025-09-08T03:56:03,673 355 | module = Py_InitModule3("_tetris_cpp", NULL, ""); 2025-09-08T03:56:03,673 | ^~~~~~~~~~~~~~ 2025-09-08T03:56:03,674 board_python.cpp:356:16: error: return-statement with no value, in function returning ‘PyObject*’ {aka ‘_object*’} [-fpermissive] 2025-09-08T03:56:03,674 356 | if (!module) return; 2025-09-08T03:56:03,674 | ^~~~~~ 2025-09-08T03:56:03,674 board_python.cpp:372:52: error: return-statement with no value, in function returning ‘PyObject*’ {aka ‘_object*’} [-fpermissive] 2025-09-08T03:56:03,674 372 | if (PyType_Ready(&python_tetris_20_10_type) < 0) return; 2025-09-08T03:56:03,674 | ^~~~~~ 2025-09-08T03:56:03,674 board_python.cpp:374:94: error: return-statement with no value, in function returning ‘PyObject*’ {aka ‘_object*’} [-fpermissive] 2025-09-08T03:56:03,674 374 | if (PyModule_AddObject(module, "tetris_20_10", (PyObject*) &python_tetris_20_10_type) < 0) return; 2025-09-08T03:56:03,675 | ^~~~~~ 2025-09-08T03:56:03,690 In file included from board_python.cpp:10: 2025-09-08T03:56:03,691 tetris_cow.cpp: In instantiation of ‘typename tetris_cow_storage::cell_type tetris_cow_logic::get_cell(size_t, size_t) const [with Type = int [20][10]; typename tetris_cow_storage::cell_type = int; size_t = unsigned int]’: 2025-09-08T03:56:03,691 board_python.cpp:209:54: required from here 2025-09-08T03:56:03,691 209 | return Py_BuildValue("i", (int) self->obj->get_cell(r, c)); 2025-09-08T03:56:03,691 | ~~~~~~~~~~~~~~~~~~~^~~~~~ 2025-09-08T03:56:03,691 tetris_cow.cpp:147:13: warning: ‘std::__shared_ptr_access<_Tp, _Lp, true, false>::element_type& std::__shared_ptr_access<_Tp, _Lp, true, false>::operator*() const [with _Tp = int [10]; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_mutex; element_type = int]’ is deprecated: shared_ptr::operator* is absent from C++17 [-Wdeprecated-declarations] 2025-09-08T03:56:03,691 147 | return (*board[r])[c]; 2025-09-08T03:56:03,691 | ~^~~~~~~~~~ 2025-09-08T03:56:03,691 In file included from /usr/include/c++/14/bits/shared_ptr.h:53, 2025-09-08T03:56:03,692 from /usr/include/c++/14/memory:80, 2025-09-08T03:56:03,692 from board_python.cpp:4: 2025-09-08T03:56:03,692 /usr/include/c++/14/bits/shared_ptr_base.h:1393:7: note: declared here 2025-09-08T03:56:03,692 1393 | operator*() const noexcept 2025-09-08T03:56:03,692 | ^~~~~~~~ 2025-09-08T03:56:03,692 tetris_cow.cpp:147:23: error: subscripted value is neither array nor pointer 2025-09-08T03:56:03,692 147 | return (*board[r])[c]; 2025-09-08T03:56:03,692 | ~~~~~~~~~~~^ 2025-09-08T03:56:03,692 tetris_cow.cpp: In instantiation of ‘const typename tetris_cow_storage::cell_type& tetris_cow_logic::set_cell(size_t, size_t, const typename tetris_cow_storage::cell_type&) [with Type = int [20][10]; typename tetris_cow_storage::cell_type = int; size_t = unsigned int]’: 2025-09-08T03:56:03,693 board_python.cpp:220:22: required from here 2025-09-08T03:56:03,693 220 | self->obj->set_cell(r, c, value); 2025-09-08T03:56:03,693 | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~ 2025-09-08T03:56:03,693 tetris_cow.cpp:157:34: warning: ‘std::__shared_ptr_access<_Tp, _Lp, true, false>::element_type& std::__shared_ptr_access<_Tp, _Lp, true, false>::operator*() const [with _Tp = int [10]; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_mutex; element_type = int]’ is deprecated: shared_ptr::operator* is absent from C++17 [-Wdeprecated-declarations] 2025-09-08T03:56:03,693 157 | board[r] = cache->copy_row(*board[r]); 2025-09-08T03:56:03,693 | ^~~~~~~ 2025-09-08T03:56:03,693 /usr/include/c++/14/bits/shared_ptr_base.h:1393:7: note: declared here 2025-09-08T03:56:03,693 1393 | operator*() const noexcept 2025-09-08T03:56:03,693 | ^~~~~~~~ 2025-09-08T03:56:03,693 tetris_cow.cpp:157:33: error: cannot convert ‘std::__shared_ptr_access::element_type’ {aka ‘int’} to ‘const int (&)[10]’ 2025-09-08T03:56:03,694 157 | board[r] = cache->copy_row(*board[r]); 2025-09-08T03:56:03,694 | ~~~~~~~~~~~~~~~^~~~~~~~~~~ 2025-09-08T03:56:03,694 In file included from tetris_cow.cpp:10: 2025-09-08T03:56:03,694 row_pool.cpp:35:40: note: initializing argument 1 of ‘row_pool::row_pointer row_pool::copy_row(const row_type&) [with Type = int [10]; row_pointer = std::shared_ptr; row_type = int [10]]’ 2025-09-08T03:56:03,694 35 | row_pointer copy_row(const row_type &old_row) { 2025-09-08T03:56:03,694 | ~~~~~~~~~~~~~~~~^~~~~~~ 2025-09-08T03:56:03,694 tetris_cow.cpp:161:13: warning: ‘std::__shared_ptr_access<_Tp, _Lp, true, false>::element_type& std::__shared_ptr_access<_Tp, _Lp, true, false>::operator*() const [with _Tp = int [10]; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_mutex; element_type = int]’ is deprecated: shared_ptr::operator* is absent from C++17 [-Wdeprecated-declarations] 2025-09-08T03:56:03,694 161 | return (*board[r])[c] = val; 2025-09-08T03:56:03,694 | ~^~~~~~~~~~ 2025-09-08T03:56:03,695 /usr/include/c++/14/bits/shared_ptr_base.h:1393:7: note: declared here 2025-09-08T03:56:03,695 1393 | operator*() const noexcept 2025-09-08T03:56:03,695 | ^~~~~~~~ 2025-09-08T03:56:03,695 tetris_cow.cpp:161:23: error: subscripted value is neither array nor pointer 2025-09-08T03:56:03,695 161 | return (*board[r])[c] = val; 2025-09-08T03:56:03,695 | ~~~~~~~~~~~^ 2025-09-08T03:56:03,695 tetris_cow.cpp: In instantiation of ‘void tetris_cow_logic::uncow_all() [with Type = int [20][10]]’: 2025-09-08T03:56:03,695 board_python.cpp:239:23: required from here 2025-09-08T03:56:03,695 239 | self->obj->uncow_all(); 2025-09-08T03:56:03,695 | ~~~~~~~~~~~~~~~~~~~~^~ 2025-09-08T03:56:03,696 tetris_cow.cpp:169:58: warning: ‘std::__shared_ptr_access<_Tp, _Lp, true, false>::element_type& std::__shared_ptr_access<_Tp, _Lp, true, false>::operator*() const [with _Tp = int [10]; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_mutex; element_type = int]’ is deprecated: shared_ptr::operator* is absent from C++17 [-Wdeprecated-declarations] 2025-09-08T03:56:03,696 169 | if (!board[r].unique()) board[r] = cache->copy_row(*board[r]); 2025-09-08T03:56:03,696 | ^~~~~~~ 2025-09-08T03:56:03,696 /usr/include/c++/14/bits/shared_ptr_base.h:1393:7: note: declared here 2025-09-08T03:56:03,696 1393 | operator*() const noexcept 2025-09-08T03:56:03,696 | ^~~~~~~~ 2025-09-08T03:56:03,696 tetris_cow.cpp:169:57: error: cannot convert ‘std::__shared_ptr_access::element_type’ {aka ‘int’} to ‘const int (&)[10]’ 2025-09-08T03:56:03,696 169 | if (!board[r].unique()) board[r] = cache->copy_row(*board[r]); 2025-09-08T03:56:03,696 | ~~~~~~~~~~~~~~~^~~~~~~~~~~ 2025-09-08T03:56:03,696 row_pool.cpp:35:40: note: initializing argument 1 of ‘row_pool::row_pointer row_pool::copy_row(const row_type&) [with Type = int [10]; row_pointer = std::shared_ptr; row_type = int [10]]’ 2025-09-08T03:56:03,697 35 | row_pointer copy_row(const row_type &old_row) { 2025-09-08T03:56:03,697 | ~~~~~~~~~~~~~~~~^~~~~~~ 2025-09-08T03:56:03,707 row_pool.cpp: In instantiation of ‘bool row_pool::reclaim_row(row_pointer&) [with Type = int [10]; row_pointer = std::shared_ptr]’: 2025-09-08T03:56:03,707 tetris_cow.cpp:134:38: required from ‘void tetris_cow_logic::clear_all() [with Type = int [20][10]]’ 2025-09-08T03:56:03,707 134 | if (cache && cache->reclaim_row(board[r])) /*nothing*/; 2025-09-08T03:56:03,708 | ~~~~~~~~~~~~~~~~~~^~~~~~~~~~ 2025-09-08T03:56:03,708 board_python.cpp:59:21: required from here 2025-09-08T03:56:03,708 59 | board->clear_all(); 2025-09-08T03:56:03,708 | ~~~~~~~~~~~~~~~~^~ 2025-09-08T03:56:03,708 row_pool.cpp:54:37: warning: ‘std::__shared_ptr_access<_Tp, _Lp, true, false>::element_type& std::__shared_ptr_access<_Tp, _Lp, true, false>::operator*() const [with _Tp = int [10]; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_mutex; element_type = int]’ is deprecated: shared_ptr::operator* is absent from C++17 [-Wdeprecated-declarations] 2025-09-08T03:56:03,708 54 | if (!ctrl.validate(default_row, *row)) return false; 2025-09-08T03:56:03,708 | ^~~~ 2025-09-08T03:56:03,708 /usr/include/c++/14/bits/shared_ptr_base.h:1393:7: note: declared here 2025-09-08T03:56:03,708 1393 | operator*() const noexcept 2025-09-08T03:56:03,709 | ^~~~~~~~ 2025-09-08T03:56:03,709 row_pool.cpp:54:23: error: cannot convert ‘std::__shared_ptr_access::element_type’ {aka ‘int’} to ‘const int (&)[10]’ 2025-09-08T03:56:03,709 54 | if (!ctrl.validate(default_row, *row)) return false; 2025-09-08T03:56:03,709 | ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~ 2025-09-08T03:56:03,709 In file included from row_pool.cpp:8: 2025-09-08T03:56:03,709 row_oper.hpp:60:54: note: initializing argument 2 of ‘bool row_oper_array::validate(const Type (&)[Size], const Type (&)[Size]) [with Type = int; unsigned int Size = 10; type = int [10]]’ 2025-09-08T03:56:03,709 60 | virtual bool validate(const type &row, const type &ref) { 2025-09-08T03:56:03,709 | ~~~~~~~~~~~~^~~ 2025-09-08T03:56:03,739 row_pool.cpp: In instantiation of ‘row_pool::row_pointer row_pool::copy_row(const row_type&) [with Type = int [10]; row_pointer = std::shared_ptr; row_type = int [10]]’: 2025-09-08T03:56:03,739 row_pool.cpp:31:18: required from ‘row_pool::row_pointer row_pool::new_row() [with Type = int [10]; row_pointer = std::shared_ptr]’ 2025-09-08T03:56:03,739 31 | return this->copy_row(default_row); 2025-09-08T03:56:03,740 | ~~~~~~^~~~~~~~ 2025-09-08T03:56:03,740 tetris_cow.cpp:180:42: required from ‘size_t tetris_cow_logic::add_rows(ssize_t) [with Type = int [20][10]; size_t = unsigned int; ssize_t = int]’ 2025-09-08T03:56:03,740 180 | board[used_rows++] = cache->new_row(); 2025-09-08T03:56:03,740 | ~~~~~~~~~~~~~~^~ 2025-09-08T03:56:03,740 board_python.cpp:70:20: required from here 2025-09-08T03:56:03,740 70 | board->add_rows(count); 2025-09-08T03:56:03,740 | ~~~~~~~~~~~~~~~^~~~~~~ 2025-09-08T03:56:03,740 row_pool.cpp:41:26: warning: ‘std::__shared_ptr_access<_Tp, _Lp, true, false>::element_type& std::__shared_ptr_access<_Tp, _Lp, true, false>::operator*() const [with _Tp = int [10]; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_mutex; element_type = int]’ is deprecated: shared_ptr::operator* is absent from C++17 [-Wdeprecated-declarations] 2025-09-08T03:56:03,740 41 | ctrl.copy(old_row, *next); 2025-09-08T03:56:03,740 | ^~~~~ 2025-09-08T03:56:03,741 /usr/include/c++/14/bits/shared_ptr_base.h:1393:7: note: declared here 2025-09-08T03:56:03,741 1393 | operator*() const noexcept 2025-09-08T03:56:03,741 | ^~~~~~~~ 2025-09-08T03:56:03,741 row_pool.cpp:41:16: error: cannot convert ‘std::__shared_ptr_access::element_type’ {aka ‘int’} to ‘int (&)[10]’ 2025-09-08T03:56:03,741 41 | ctrl.copy(old_row, *next); 2025-09-08T03:56:03,741 | ~~~~~~~~~^~~~~~~~~~~~~~~~ 2025-09-08T03:56:03,741 row_oper.hpp:91:40: note: initializing argument 2 of ‘void row_oper_int::copy(const typename row_oper_array::type&, typename row_oper_array::type&) [with Type = int; unsigned int Size = 10; typename row_oper_array::type = int [10]]’ 2025-09-08T03:56:03,741 91 | void copy(const type &old_row, type &new_row) { 2025-09-08T03:56:03,742 | ~~~~~~^~~~~~~ 2025-09-08T03:56:03,742 row_pool.cpp:44:14: error: no matching function for call to ‘std::shared_ptr::shared_ptr(int (*)[10])’ 2025-09-08T03:56:03,742 44 | return row_pointer(ctrl.new_copy(old_row)); 2025-09-08T03:56:03,742 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T03:56:03,742 /usr/include/c++/14/bits/shared_ptr.h:462:9: note: candidate: ‘template std::shared_ptr<_Tp>::shared_ptr(std::_Sp_alloc_shared_tag<_Tp>, _Args&& ...) [with _Args = _Alloc; _Tp = int [10]]’ 2025-09-08T03:56:03,742 462 | shared_ptr(_Sp_alloc_shared_tag<_Alloc> __tag, _Args&&... __args) 2025-09-08T03:56:03,742 | ^~~~~~~~~~ 2025-09-08T03:56:03,742 /usr/include/c++/14/bits/shared_ptr.h:462:9: note: template argument deduction/substitution failed: 2025-09-08T03:56:03,742 row_pool.cpp:44:14: note: mismatched types ‘std::_Sp_alloc_shared_tag<_Tp>’ and ‘int (*)[10]’ 2025-09-08T03:56:03,742 44 | return row_pointer(ctrl.new_copy(old_row)); 2025-09-08T03:56:03,742 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T03:56:03,743 /usr/include/c++/14/bits/shared_ptr.h:403:9: note: candidate: ‘template::_Constructible, std::__sp_array_delete>* > std::shared_ptr<_Tp>::shared_ptr(std::unique_ptr<_Up, _Ep>&&) [with _Del = _Yp; _Constructible, std::__sp_array_delete>* = _Del; _Tp = int [10]]’ 2025-09-08T03:56:03,743 403 | shared_ptr(unique_ptr<_Yp, _Del>&& __r) 2025-09-08T03:56:03,743 | ^~~~~~~~~~ 2025-09-08T03:56:03,743 /usr/include/c++/14/bits/shared_ptr.h:403:9: note: template argument deduction/substitution failed: 2025-09-08T03:56:03,743 row_pool.cpp:44:14: note: mismatched types ‘std::unique_ptr<_Tp, _Dp>’ and ‘int (*)[10]’ 2025-09-08T03:56:03,743 44 | return row_pointer(ctrl.new_copy(old_row)); 2025-09-08T03:56:03,743 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T03:56:03,743 /usr/include/c++/14/bits/shared_ptr.h:394:9: note: candidate: ‘template std::shared_ptr<_Tp>::shared_ptr(std::unique_ptr<_Up, _Ep>&&) [with _Del = _Yp; = _Del; _Tp = int [10]]’ 2025-09-08T03:56:03,743 394 | shared_ptr(unique_ptr<_Yp, _Del>&& __r) 2025-09-08T03:56:03,743 | ^~~~~~~~~~ 2025-09-08T03:56:03,743 /usr/include/c++/14/bits/shared_ptr.h:394:9: note: template argument deduction/substitution failed: 2025-09-08T03:56:03,744 row_pool.cpp:44:14: note: mismatched types ‘std::unique_ptr<_Tp, _Dp>’ and ‘int (*)[10]’ 2025-09-08T03:56:03,744 44 | return row_pointer(ctrl.new_copy(old_row)); 2025-09-08T03:56:03,744 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T03:56:03,744 /usr/include/c++/14/bits/shared_ptr.h:386:9: note: candidate: ‘template std::shared_ptr<_Tp>::shared_ptr(std::auto_ptr<_Up>&&) [with _Yp = _Tp1; _Tp = int [10]]’ 2025-09-08T03:56:03,744 386 | shared_ptr(auto_ptr<_Yp>&& __r); 2025-09-08T03:56:03,744 | ^~~~~~~~~~ 2025-09-08T03:56:03,744 /usr/include/c++/14/bits/shared_ptr.h:386:9: note: template argument deduction/substitution failed: 2025-09-08T03:56:03,744 row_pool.cpp:44:14: note: mismatched types ‘std::auto_ptr<_Up>’ and ‘int (*)[10]’ 2025-09-08T03:56:03,745 44 | return row_pointer(ctrl.new_copy(old_row)); 2025-09-08T03:56:03,745 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T03:56:03,745 /usr/include/c++/14/bits/shared_ptr.h:379:18: note: candidate: ‘template std::shared_ptr<_Tp>::shared_ptr(const std::weak_ptr<_Yp>&) [with = _Yp; _Tp = int [10]]’ 2025-09-08T03:56:03,745 379 | explicit shared_ptr(const weak_ptr<_Yp>& __r) 2025-09-08T03:56:03,745 | ^~~~~~~~~~ 2025-09-08T03:56:03,745 /usr/include/c++/14/bits/shared_ptr.h:379:18: note: template argument deduction/substitution failed: 2025-09-08T03:56:03,745 row_pool.cpp:44:14: note: mismatched types ‘const std::weak_ptr<_Tp>’ and ‘int (*)[10]’ 2025-09-08T03:56:03,745 44 | return row_pointer(ctrl.new_copy(old_row)); 2025-09-08T03:56:03,745 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T03:56:03,745 /usr/include/c++/14/bits/shared_ptr.h:367:9: note: candidate: ‘template std::shared_ptr<_Tp>::shared_ptr(std::shared_ptr<_Yp>&&) [with = _Yp; _Tp = int [10]]’ 2025-09-08T03:56:03,746 367 | shared_ptr(shared_ptr<_Yp>&& __r) noexcept 2025-09-08T03:56:03,746 | ^~~~~~~~~~ 2025-09-08T03:56:03,746 /usr/include/c++/14/bits/shared_ptr.h:367:9: note: template argument deduction/substitution failed: 2025-09-08T03:56:03,746 row_pool.cpp:44:14: note: mismatched types ‘std::shared_ptr<_Tp>’ and ‘int (*)[10]’ 2025-09-08T03:56:03,746 44 | return row_pointer(ctrl.new_copy(old_row)); 2025-09-08T03:56:03,746 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T03:56:03,746 /usr/include/c++/14/bits/shared_ptr.h:350:9: note: candidate: ‘template std::shared_ptr<_Tp>::shared_ptr(const std::shared_ptr<_Yp>&) [with = _Yp; _Tp = int [10]]’ 2025-09-08T03:56:03,746 350 | shared_ptr(const shared_ptr<_Yp>& __r) noexcept 2025-09-08T03:56:03,746 | ^~~~~~~~~~ 2025-09-08T03:56:03,746 /usr/include/c++/14/bits/shared_ptr.h:350:9: note: template argument deduction/substitution failed: 2025-09-08T03:56:03,747 row_pool.cpp:44:14: note: mismatched types ‘const std::shared_ptr<_Tp>’ and ‘int (*)[10]’ 2025-09-08T03:56:03,747 44 | return row_pointer(ctrl.new_copy(old_row)); 2025-09-08T03:56:03,747 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T03:56:03,747 /usr/include/c++/14/bits/shared_ptr.h:310:9: note: candidate: ‘template std::shared_ptr<_Tp>::shared_ptr(const std::shared_ptr<_Yp>&, element_type*) [with _Tp = int [10]]’ 2025-09-08T03:56:03,747 310 | shared_ptr(const shared_ptr<_Yp>& __r, element_type* __p) noexcept 2025-09-08T03:56:03,747 | ^~~~~~~~~~ 2025-09-08T03:56:03,747 /usr/include/c++/14/bits/shared_ptr.h:310:9: note: candidate expects 2 arguments, 1 provided 2025-09-08T03:56:03,747 /usr/include/c++/14/bits/shared_ptr.h:286:9: note: candidate: ‘template std::shared_ptr<_Tp>::shared_ptr(std::nullptr_t, _Deleter, _Alloc) [with _Alloc = _Deleter; _Tp = int [10]]’ 2025-09-08T03:56:03,747 286 | shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a) 2025-09-08T03:56:03,747 | ^~~~~~~~~~ 2025-09-08T03:56:03,748 /usr/include/c++/14/bits/shared_ptr.h:286:9: note: candidate expects 3 arguments, 1 provided 2025-09-08T03:56:03,748 /usr/include/c++/14/bits/shared_ptr.h:267:9: note: candidate: ‘template std::shared_ptr<_Tp>::shared_ptr(_Yp*, _Deleter, _Alloc) [with _Deleter = _Yp; _Alloc = _Deleter; = _Alloc; _Tp = int [10]]’ 2025-09-08T03:56:03,748 267 | shared_ptr(_Yp* __p, _Deleter __d, _Alloc __a) 2025-09-08T03:56:03,748 | ^~~~~~~~~~ 2025-09-08T03:56:03,748 /usr/include/c++/14/bits/shared_ptr.h:267:9: note: candidate expects 3 arguments, 1 provided 2025-09-08T03:56:03,748 /usr/include/c++/14/bits/shared_ptr.h:247:9: note: candidate: ‘template std::shared_ptr<_Tp>::shared_ptr(std::nullptr_t, _Deleter) [with _Tp = int [10]]’ 2025-09-08T03:56:03,748 247 | shared_ptr(nullptr_t __p, _Deleter __d) 2025-09-08T03:56:03,748 | ^~~~~~~~~~ 2025-09-08T03:56:03,748 /usr/include/c++/14/bits/shared_ptr.h:247:9: note: candidate expects 2 arguments, 1 provided 2025-09-08T03:56:03,748 /usr/include/c++/14/bits/shared_ptr.h:230:9: note: candidate: ‘template std::shared_ptr<_Tp>::shared_ptr(_Yp*, _Deleter) [with _Deleter = _Yp; = _Deleter; _Tp = int [10]]’ 2025-09-08T03:56:03,749 230 | shared_ptr(_Yp* __p, _Deleter __d) 2025-09-08T03:56:03,749 | ^~~~~~~~~~ 2025-09-08T03:56:03,749 /usr/include/c++/14/bits/shared_ptr.h:230:9: note: candidate expects 2 arguments, 1 provided 2025-09-08T03:56:03,749 /usr/include/c++/14/bits/shared_ptr.h:213:9: note: candidate: ‘template std::shared_ptr<_Tp>::shared_ptr(_Yp*) [with = _Yp; _Tp = int [10]]’ 2025-09-08T03:56:03,749 213 | shared_ptr(_Yp* __p) : __shared_ptr<_Tp>(__p) { } 2025-09-08T03:56:03,749 | ^~~~~~~~~~ 2025-09-08T03:56:03,749 /usr/include/c++/14/bits/shared_ptr.h:213:9: note: template argument deduction/substitution failed: 2025-09-08T03:56:03,749 /usr/include/c++/14/bits/shared_ptr.h: In substitution of ‘template template using std::shared_ptr<_Tp>::_Constructible = typename std::enable_if, _Args ...>::value>::type [with _Args = {int (*)[10]}; _Tp = int [10]]’: 2025-09-08T03:56:03,749 /usr/include/c++/14/bits/shared_ptr.h:211:30: required from ‘row_pool::row_pointer row_pool::copy_row(const row_type&) [with Type = int [10]; row_pointer = std::shared_ptr; row_type = int [10]]’ 2025-09-08T03:56:03,749 211 | template> 2025-09-08T03:56:03,750 | ^~~~~~~~ 2025-09-08T03:56:03,750 row_pool.cpp:31:18: required from ‘row_pool::row_pointer row_pool::new_row() [with Type = int [10]; row_pointer = std::shared_ptr]’ 2025-09-08T03:56:03,750 31 | return this->copy_row(default_row); 2025-09-08T03:56:03,750 | ~~~~~~^~~~~~~~ 2025-09-08T03:56:03,750 tetris_cow.cpp:180:42: required from ‘size_t tetris_cow_logic::add_rows(ssize_t) [with Type = int [20][10]; size_t = unsigned int; ssize_t = int]’ 2025-09-08T03:56:03,750 180 | board[used_rows++] = cache->new_row(); 2025-09-08T03:56:03,750 | ~~~~~~~~~~~~~~^~ 2025-09-08T03:56:03,750 board_python.cpp:70:20: required from here 2025-09-08T03:56:03,750 70 | board->add_rows(count); 2025-09-08T03:56:03,750 | ~~~~~~~~~~~~~~~^~~~~~~ 2025-09-08T03:56:03,751 /usr/include/c++/14/bits/shared_ptr.h:178:15: error: no type named ‘type’ in ‘struct std::enable_if’ 2025-09-08T03:56:03,751 178 | using _Constructible = typename enable_if< 2025-09-08T03:56:03,751 | ^~~~~~~~~~~~~~ 2025-09-08T03:56:03,751 row_pool.cpp: In instantiation of ‘row_pool::row_pointer row_pool::copy_row(const row_type&) [with Type = int [10]; row_pointer = std::shared_ptr; row_type = int [10]]’: 2025-09-08T03:56:03,751 row_pool.cpp:31:18: required from ‘row_pool::row_pointer row_pool::new_row() [with Type = int [10]; row_pointer = std::shared_ptr]’ 2025-09-08T03:56:03,751 31 | return this->copy_row(default_row); 2025-09-08T03:56:03,751 | ~~~~~~^~~~~~~~ 2025-09-08T03:56:03,751 tetris_cow.cpp:180:42: required from ‘size_t tetris_cow_logic::add_rows(ssize_t) [with Type = int [20][10]; size_t = unsigned int; ssize_t = int]’ 2025-09-08T03:56:03,751 180 | board[used_rows++] = cache->new_row(); 2025-09-08T03:56:03,752 | ~~~~~~~~~~~~~~^~ 2025-09-08T03:56:03,752 board_python.cpp:70:20: required from here 2025-09-08T03:56:03,752 70 | board->add_rows(count); 2025-09-08T03:56:03,752 | ~~~~~~~~~~~~~~~^~~~~~~ 2025-09-08T03:56:03,752 /usr/include/c++/14/bits/shared_ptr.h:534:7: note: candidate: ‘std::shared_ptr<_Tp>::shared_ptr(const std::weak_ptr<_Tp>&, std::nothrow_t) [with _Tp = int [10]]’ 2025-09-08T03:56:03,752 534 | shared_ptr(const weak_ptr<_Tp>& __r, std::nothrow_t) noexcept 2025-09-08T03:56:03,752 | ^~~~~~~~~~ 2025-09-08T03:56:03,752 /usr/include/c++/14/bits/shared_ptr.h:534:7: note: candidate expects 2 arguments, 1 provided 2025-09-08T03:56:03,752 /usr/include/c++/14/bits/shared_ptr.h:411:17: note: candidate: ‘constexpr std::shared_ptr<_Tp>::shared_ptr(std::nullptr_t) [with _Tp = int [10]; std::nullptr_t = std::nullptr_t]’ 2025-09-08T03:56:03,752 411 | constexpr shared_ptr(nullptr_t) noexcept : shared_ptr() { } 2025-09-08T03:56:03,752 | ^~~~~~~~~~ 2025-09-08T03:56:03,753 /usr/include/c++/14/bits/shared_ptr.h:411:28: note: no known conversion for argument 1 from ‘int (*)[10]’ to ‘std::nullptr_t’ 2025-09-08T03:56:03,753 411 | constexpr shared_ptr(nullptr_t) noexcept : shared_ptr() { } 2025-09-08T03:56:03,753 | ^~~~~~~~~ 2025-09-08T03:56:03,753 /usr/include/c++/14/bits/shared_ptr.h:358:7: note: candidate: ‘std::shared_ptr<_Tp>::shared_ptr(std::shared_ptr<_Tp>&&) [with _Tp = int [10]]’ 2025-09-08T03:56:03,753 358 | shared_ptr(shared_ptr&& __r) noexcept 2025-09-08T03:56:03,753 | ^~~~~~~~~~ 2025-09-08T03:56:03,753 /usr/include/c++/14/bits/shared_ptr.h:358:31: note: no known conversion for argument 1 from ‘int (*)[10]’ to ‘std::shared_ptr&&’ 2025-09-08T03:56:03,753 358 | shared_ptr(shared_ptr&& __r) noexcept 2025-09-08T03:56:03,753 | ~~~~~~~~~~~~~^~~ 2025-09-08T03:56:03,754 /usr/include/c++/14/bits/shared_ptr.h:203:7: note: candidate: ‘std::shared_ptr<_Tp>::shared_ptr(const std::shared_ptr<_Tp>&) [with _Tp = int [10]]’ 2025-09-08T03:56:03,754 203 | shared_ptr(const shared_ptr&) noexcept = default; ///< Copy constructor 2025-09-08T03:56:03,754 | ^~~~~~~~~~ 2025-09-08T03:56:03,754 /usr/include/c++/14/bits/shared_ptr.h:203:18: note: no known conversion for argument 1 from ‘int (*)[10]’ to ‘const std::shared_ptr&’ 2025-09-08T03:56:03,754 203 | shared_ptr(const shared_ptr&) noexcept = default; ///< Copy constructor 2025-09-08T03:56:03,754 | ^~~~~~~~~~~~~~~~~ 2025-09-08T03:56:03,754 /usr/include/c++/14/bits/shared_ptr.h:201:17: note: candidate: ‘constexpr std::shared_ptr<_Tp>::shared_ptr() [with _Tp = int [10]]’ 2025-09-08T03:56:03,754 201 | constexpr shared_ptr() noexcept : __shared_ptr<_Tp>() { } 2025-09-08T03:56:03,754 | ^~~~~~~~~~ 2025-09-08T03:56:03,754 /usr/include/c++/14/bits/shared_ptr.h:201:17: note: candidate expects 0 arguments, 1 provided 2025-09-08T03:56:03,812 board_python.cpp:382:21: warning: control reaches end of non-void function [-Wreturn-type] 2025-09-08T03:56:03,812 382 | add_global_binding(&get_board_cache_size_binding); 2025-09-08T03:56:03,812 | ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2025-09-08T03:56:03,851 error: command '/usr/bin/arm-linux-gnueabihf-g++' failed with exit code 1 2025-09-08T03:56:03,998 ERROR: python setup.py bdist_wheel exited with 1 2025-09-08T03:56:04,011 [bold magenta]full command[/]: [blue]/usr/bin/python3 -u -c ' 2025-09-08T03:56:04,011 exec(compile('"'"''"'"''"'"' 2025-09-08T03:56:04,011 # This is -- a caller that pip uses to run setup.py 2025-09-08T03:56:04,011 # 2025-09-08T03:56:04,011 # - It imports setuptools before invoking setup.py, to enable projects that directly 2025-09-08T03:56:04,011 # import from `distutils.core` to work with newer packaging standards. 2025-09-08T03:56:04,011 # - It provides a clear error message when setuptools is not installed. 2025-09-08T03:56:04,011 # - It sets `sys.argv[0]` to the underlying `setup.py`, when invoking `setup.py` so 2025-09-08T03:56:04,011 # setuptools doesn'"'"'t think the script is `-c`. This avoids the following warning: 2025-09-08T03:56:04,011 # manifest_maker: standard file '"'"'-c'"'"' not found". 2025-09-08T03:56:04,011 # - It generates a shim setup.py, for handling setup.cfg-only projects. 2025-09-08T03:56:04,011 import os, sys, tokenize, traceback 2025-09-08T03:56:04,011 2025-09-08T03:56:04,011 try: 2025-09-08T03:56:04,011 import setuptools 2025-09-08T03:56:04,011 except ImportError: 2025-09-08T03:56:04,011 print( 2025-09-08T03:56:04,011 "ERROR: Can not execute `setup.py` since setuptools failed to import in " 2025-09-08T03:56:04,011 "the build environment with exception:", 2025-09-08T03:56:04,011 file=sys.stderr, 2025-09-08T03:56:04,011 ) 2025-09-08T03:56:04,011 traceback.print_exc() 2025-09-08T03:56:04,011 sys.exit(1) 2025-09-08T03:56:04,011 2025-09-08T03:56:04,011 __file__ = %r 2025-09-08T03:56:04,011 sys.argv[0] = __file__ 2025-09-08T03:56:04,011 2025-09-08T03:56:04,011 if os.path.exists(__file__): 2025-09-08T03:56:04,011 filename = __file__ 2025-09-08T03:56:04,011 with tokenize.open(__file__) as f: 2025-09-08T03:56:04,011 setup_py_code = f.read() 2025-09-08T03:56:04,011 else: 2025-09-08T03:56:04,011 filename = "" 2025-09-08T03:56:04,011 setup_py_code = "from setuptools import setup; setup()" 2025-09-08T03:56:04,011 2025-09-08T03:56:04,011 exec(compile(setup_py_code, filename, "exec")) 2025-09-08T03:56:04,011 '"'"''"'"''"'"' % ('"'"'/tmp/pip-wheel-dhdkmjc_/tetris-cpp_b6f8427a4092435f954d2c2aceacf58a/setup.py'"'"',), "", "exec"))' bdist_wheel -d /tmp/pip-wheel-w3ka20zj[/] 2025-09-08T03:56:04,011 [bold magenta]cwd[/]: /tmp/pip-wheel-dhdkmjc_/tetris-cpp_b6f8427a4092435f954d2c2aceacf58a/ 2025-09-08T03:56:04,011 Building wheel for tetris-cpp (setup.py): finished with status 'error' 2025-09-08T03:56:04,012 ERROR: Failed building wheel for tetris-cpp 2025-09-08T03:56:04,013 Running setup.py clean for tetris-cpp 2025-09-08T03:56:04,014 Running command python setup.py clean 2025-09-08T03:56:05,152 running clean 2025-09-08T03:56:05,299 removing 'build/temp.linux-armv7l-cpython-313' (and everything under it) 2025-09-08T03:56:05,300 removing 'build/lib.linux-armv7l-cpython-313' (and everything under it) 2025-09-08T03:56:05,300 'build/bdist.linux-armv7l' does not exist -- can't clean it 2025-09-08T03:56:05,300 'build/scripts-3.13' does not exist -- can't clean it 2025-09-08T03:56:05,300 removing 'build' 2025-09-08T03:56:05,412 Failed to build tetris-cpp 2025-09-08T03:56:05,412 ERROR: Failed to build one or more wheels 2025-09-08T03:56:05,413 Exception information: 2025-09-08T03:56:05,413 Traceback (most recent call last): 2025-09-08T03:56:05,413 File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 105, in _run_wrapper 2025-09-08T03:56:05,413 status = _inner_run() 2025-09-08T03:56:05,413 File "/usr/lib/python3/dist-packages/pip/_internal/cli/base_command.py", line 96, in _inner_run 2025-09-08T03:56:05,413 return self.run(options, args) 2025-09-08T03:56:05,413 ~~~~~~~~^^^^^^^^^^^^^^^ 2025-09-08T03:56:05,413 File "/usr/lib/python3/dist-packages/pip/_internal/cli/req_command.py", line 68, in wrapper 2025-09-08T03:56:05,413 return func(self, options, args) 2025-09-08T03:56:05,413 File "/usr/lib/python3/dist-packages/pip/_internal/commands/wheel.py", line 180, in run 2025-09-08T03:56:05,413 raise CommandError("Failed to build one or more wheels") 2025-09-08T03:56:05,413 pip._internal.exceptions.CommandError: Failed to build one or more wheels 2025-09-08T03:56:05,417 Removed build tracker: '/tmp/pip-build-tracker-pb8akf1y'