Ticket #12975 (closed defect: fixed)
Fix misleading typo in the doc of "cython"
| Reported by: | SimonKing | Owned by: | mvngu |
|---|---|---|---|
| Priority: | trivial | Milestone: | sage-5.1 |
| Component: | interfaces | Keywords: | |
| Cc: | burcin | Work issues: | |
| Report Upstream: | N/A | Reviewers: | Simon King |
| Authors: | Burcin Erocal | Merged in: | sage-5.1.beta1 |
| Dependencies: | Stopgaps: |
Description (last modified by SimonKing) (diff)
sage: cython?
...
For example:
#clang C++
#clib givaro
#cinclude /usr/local/include/
#cargs -ggdb
#cfile foo.c
...
That's misleading, as Cython does only accept #clang c++ but not #clang C++. Thank you, Burcin, for pointing that out!
Apply
Attachments
Change History
comment:1 Changed 13 months ago by SimonKing
- Cc burcin added
- Status changed from new to needs_review
comment:2 Changed 13 months ago by burcin
I attached a new patch which should allow cython() to accept #clang C++ as well as #clang c++. I have no clue how to doctest this.
comment:3 Changed 13 months ago by SimonKing
With your patch, the following still does not work
sage: cython("""#clang C++
....: #cinclude /home/simon/SAGE/sage-5.0/local/include/singular /home/simon/SAGE/sage-5.0/local/include/factory
....: #clib m readline singular givaro ntl gmpxx gmp
....: from sage.rings.polynomial.multi_polynomial_libsingular cimport MPolynomial_libsingular
....: """)
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
/home/simon/SAGE/sage-5.0/devel/sage-main/<ipython console> in <module>()
/home/simon/SAGE/sage-5.0/local/lib/python2.7/site-packages/sage/misc/cython_c.so in sage.misc.cython_c.cython (sage/misc/cython_c.c:688)()
/home/simon/SAGE/sage-5.0/local/lib/python2.7/site-packages/sage/server/support.pyc in cython_import_all(filename, globals, verbose, compile_message, use_cache, create_local_c_file)
471 m = cython_import(filename, verbose=verbose, compile_message=compile_message,
472 use_cache=use_cache,
--> 473 create_local_c_file=create_local_c_file)
474 for k, x in m.__dict__.iteritems():
475 if k[0] != '_':
/home/simon/SAGE/sage-5.0/local/lib/python2.7/site-packages/sage/server/support.pyc in cython_import(filename, verbose, compile_message, use_cache, create_local_c_file, **kwds)
448 use_cache=use_cache,
449 create_local_c_file=create_local_c_file,
--> 450 **kwds)
451 sys.path.append(build_dir)
452 return __builtin__.__import__(name)
/home/simon/SAGE/sage-5.0/local/lib/python2.7/site-packages/sage/misc/cython.pyc in cython(filename, verbose, compile_message, use_cache, create_local_c_file, annotate, sage_namespace, create_local_so_file)
529 log = open('%s/log'%build_dir).read()
530 err = open('%s/err'%build_dir).read()
--> 531 raise RuntimeError, "Error compiling %s:\n%s\n%s"%(filename, log, err)
532
533 # Move from lib directory.
RuntimeError: Error compiling /home/simon/.sage//temp/linux_sqwp.site/5382//tmp_2.spyx:
running build
running build_ext
building '_home_simon__sage_temp_linux_sqwp_site_5382_tmp_2_spyx_0' extension
creating build
creating build/temp.linux-x86_64-2.7
gcc -fno-strict-aliasing -fwrapv -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/simon/SAGE/sage-5.0/local/include/singular -I/home/simon/SAGE/sage-5.0/local/include/factory -I/home/simon/SAGE/sage-5.0/local/include/csage/ -I/home/simon/SAGE/sage-5.0/local/include/ -I/home/simon/SAGE/sage-5.0/local/include/python2.7/ -I/home/simon/SAGE/sage-5.0/local/lib/python2.7/site-packages/numpy/core/include -I/home/simon/SAGE/sage-5.0/devel/sage/sage/ext/ -I/home/simon/SAGE/sage-5.0/devel/sage/ -I/home/simon/SAGE/sage-5.0/devel/sage/sage/gsl/ -I/home/simon/.sage//temp/linux_sqwp.site/5382 -I/home/simon/SAGE/sage-5.0/local/include/python2.7 -c _home_simon__sage_temp_linux_sqwp_site_5382_tmp_2_spyx_0.cpp -o build/temp.linux-x86_64-2.7/_home_simon__sage_temp_linux_sqwp_site_5382_tmp_2_spyx_0.o -w -O2
gcc: error: _home_simon__sage_temp_linux_sqwp_site_5382_tmp_2_spyx_0.cpp: Datei oder Verzeichnis nicht gefunden
gcc: fatal error: no input files
compilation terminated.
error: command 'gcc' failed with exit status 1
Hence, one still needs
sage: cython("""#clang c++
#cinclude /home/simon/SAGE/sage-5.0/local/include/singular /home/simon/SAGE/sage-5.0/local/include/factory
#clib m readline singular givaro ntl gmpxx gmp
from sage.rings.polynomial.multi_polynomial_libsingular cimport MPolynomial_libsingular
""")
comment:4 Changed 13 months ago by SimonKing
My reviewer patch will contain a test such as this:
TESTS:
Before :trac:`12975`, it would have beeen needed to write ``#clang c++``,
but upper case ``C++`` has resulted in an error::
sage: from sage.all import SAGE_ROOT
sage: code = [
... "#clang C++",
... "#cinclude %s/local/include/singular %s/local/include/factory"%(SAGE_ROOT,SAGE_ROOT),
... "#clib m readline singular givaro ntl gmpxx gmp",
... "from sage.rings.polynomial.multi_polynomial_libsingular cimport MPolynomial_libsingular",
... "from sage.libs.singular.polynomial cimport singular_polynomial_pow",
... "def test(MPolynomial_libsingular p):",
... " singular_polynomial_pow(&p._poly, p._poly, 2, p._parent_ring)"]
sage: cython(os.linesep.join(code))
The function ``test`` now manipulates internal C data of polynomials,
squaring them::
sage: P.<x,y>=QQ[]
sage: test(x)
sage: x
x^2
But with your current patch, one would still need c++, not C++.
comment:5 Changed 13 months ago by burcin
- Authors changed from Simon King to Simon King, Burcin Erocal
New patch attached with same name. This one should do it. :)
Changed 13 months ago by SimonKing
-
attachment
trac_12975_reviewer.patch
added
doc test for Burcin's patch
comment:6 Changed 13 months ago by SimonKing
- Reviewers set to Simon King
- Description modified (diff)
- Authors changed from Simon King, Burcin Erocal to Burcin Erocal
I have successfully run the tests in sage/misc with your patch and my reviewer patch. I will wait for a full test run (either by myself or the patchbot) before giving a positive review.
Apply trac_12975-cython_cpp_pragma.patch trac_12975_reviewer.patch
comment:7 Changed 13 months ago by SimonKing
- Status changed from needs_review to positive_review
make ptest passes, and thus I give it a positive review.

C++ typo fixed.