cppflags in test_c_unit_test is not supporting gcc compiler?
Nessuno ha ancora preso questa issue.
- Lingua principale
- Python
- Stelle
- 20.6k
- Fork
- 3.3k
- Metriche di merge delle PR
- Metriche PR in attesa
Descrizione
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.
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia in mypyc/test/test_external.py, presso TestExternal.test_c_unit_test, e verifica come runtests.py raggiunge questo test. Riproduci la build su macOS con il compilatore segnalato, quindi verifica che la build del test di unità C venga completata senza passare flag non supportati. Il lavoro è completato quando il test funziona con il compilatore segnalato e viene preservato il comportamento esistente dei test su macOS.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- cpp, python
- Ambito
- build-system, testing-qa
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 45/100