cppflags in test_c_unit_test is not supporting gcc compiler?
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 20.6k
- Forks
- 3.3k
- Métricas de merge de PR
- Métricas de PR pendientes
Descripción
Bug Report
I newly forked the repo and ran the tests with runtests.py in the project root. Then, I am getting an error while running test_c_unit_test in test_external.py as following:
running build_ext
building 'test_capi' extension
gcc -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -arch x86_64 -g -mmacosx-version-min=10.10 -stdlib=libc++ -I../external/googletest -I../external/googletest/include -I/Users/terunobuinaba/OSS/mypy/venv/include -I/Library/Frameworks/Python.framework/Versions/3.9/include/python3.9 -c exc_ops.c -o build/temp.macosx-10.9-x86_64-3.9/exc_ops.o -Wno-unused-function -Wno-sign-compare
gcc: error: unrecognized command-line option '-stdlib=libc++'
error: command '/usr/local/bin/gcc' failed with exit code 1
mypyc/test/test_external.py:16 (TestExternal.test_c_unit_test)
self = <mypyc.test.test_external.TestExternal testMethod=test_c_unit_test>
@unittest.skipIf(sys.platform.startswith("win"), "rt tests don't work on windows")
def test_c_unit_test(self) -> None:
"""Run C unit tests in a subprocess."""
# Build Google Test, the C++ framework we use for testing C code.
# The source code for Google Test is copied to this repository.
cppflags: List[str] = []
env = os.environ.copy()
if sys.platform == 'darwin':
cppflags += ['-mmacosx-version-min=10.10', '-stdlib=libc++']
env['CPPFLAGS'] = ' '.join(cppflags)
subprocess.check_call(
['make', 'libgtest.a'],
env=env,
cwd=os.path.join(base_dir, 'mypyc', 'external', 'googletest', 'make'))
# Build Python wrapper for C unit tests.
env = os.environ.copy()
env['CPPFLAGS'] = ' '.join(cppflags)
> status = subprocess.check_call(
[sys.executable, 'setup.py', 'build_ext', '--inplace'],
env=env,
cwd=os.path.join(base_dir, 'mypyc', 'lib-rt'))
mypyc/test/test_external.py:34:
To Reproduce
After cloning and install mypy using pip install, I followed the instruction here
pip3 install -r test-requirements.txt
python2 -m pip install -U typing
./runtests.py
Also, I am not using clang but using gcc instead in my mac PC.
Expected Behavior
No error raised.
Actual Behavior
As the fourth line in the error above suggests: gcc: error: unrecognized command-line option '-stdlib=libc++', gcc supports only libstdc++. No option should be passed for gcc environments?
class TestExternal(unittest.TestCase):
# TODO: Get this to work on Windows.
# (Or don't. It is probably not a good use of time.)
@unittest.skipIf(sys.platform.startswith("win"), "rt tests don't work on windows")
def test_c_unit_test(self) -> None:
"""Run C unit tests in a subprocess."""
# Build Google Test, the C++ framework we use for testing C code.
# The source code for Google Test is copied to this repository.
cppflags: List[str] = []
env = os.environ.copy()
if sys.platform == 'darwin':
cppflags += ['-mmacosx-version-min=10.10', '-stdlib=libc++'] # passing cppflags parameter
env['CPPFLAGS'] = ' '.join(cppflags)
I guess simply branching in cppflags += ['-mmacosx-version-min=10.10', '-stdlib=libc++'] between clang/gcc would work.
Your Environment
- Mypy version used: mypy 0.920+dev.492739692206f05347c6706cb982115446ba552a
- Mypy command-line flags:
- Mypy configuration options from
mypy.ini(and other config files): - Python version used: Python 3.9.6
- Operating system and version: macOS Big Sur 11.6
- gcc version used: gcc version 10.2.0
P.S.
I am very new to open source contribution and this is actually the first issue I have made ever. I appreciate any comments, suggestions not only for the issue but also the manner of reporting the issue. Thank you for your guidance.
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza en mypyc/test/test_external.py, en TestExternal.test_c_unit_test, y revisa cómo runtests.py llega a esta prueba. Reproduce la compilación en macOS con el compilador indicado y verifica que la compilación de la prueba unitaria en C se complete sin pasar flags no compatibles. La tarea estará terminada cuando la prueba funcione con el compilador indicado y se conserve el comportamiento existente de las pruebas en macOS.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- cpp, python
- Área
- build-system, testing-qa
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 45/100