{"action":"created","issue":{"url":"https://api.github.com/repos/sympy/symengine/issues/608","labels_url":"https://api.github.com/repos/sympy/symengine/issues/608/labels{/name}","comments_url":"https://api.github.com/repos/sympy/symengine/issues/608/comments","events_url":"https://api.github.com/repos/sympy/symengine/issues/608/events","html_url":"https://github.com/sympy/symengine/pull/608","id":110684382,"number":608,"title":"[WIP] Improve setup.py","user":{"login":"isuruf","id":5234427,"avatar_url":"https://avatars.githubusercontent.com/u/5234427?v=3","gravatar_id":"","url":"https://api.github.com/users/isuruf","html_url":"https://github.com/isuruf","followers_url":"https://api.github.com/users/isuruf/followers","following_url":"https://api.github.com/users/isuruf/following{/other_user}","gists_url":"https://api.github.com/users/isuruf/gists{/gist_id}","starred_url":"https://api.github.com/users/isuruf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/isuruf/subscriptions","organizations_url":"https://api.github.com/users/isuruf/orgs","repos_url":"https://api.github.com/users/isuruf/repos","events_url":"https://api.github.com/users/isuruf/events{/privacy}","received_events_url":"https://api.github.com/users/isuruf/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":5,"created_at":"2015-10-09T15:43:25Z","updated_at":"2015-10-09T19:31:00Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/sympy/symengine/pulls/608","html_url":"https://github.com/sympy/symengine/pull/608","diff_url":"https://github.com/sympy/symengine/pull/608.diff","patch_url":"https://github.com/sympy/symengine/pull/608.patch"},"body":"Already Done:\r\n- Support Windows\r\n- Give the user an option to specify Build Type and Generator\r\n- Call `install` from `setup.py`\r\n\r\nTODO\r\n\r\n- [x] Compile `.py` to `.pyc`\r\n- [x] Test in Windows\r\n- [ ] Document how to use setup.py\r\n\r\nUnrelated : Change `<prefix>/lib` to `<prefix>/libs` in Windows"},"comment":{"url":"https://api.github.com/repos/sympy/symengine/issues/comments/146968098","html_url":"https://github.com/sympy/symengine/pull/608#issuecomment-146968098","issue_url":"https://api.github.com/repos/sympy/symengine/issues/608","id":146968098,"user":{"login":"bjodah","id":485936,"avatar_url":"https://avatars.githubusercontent.com/u/485936?v=3","gravatar_id":"","url":"https://api.github.com/users/bjodah","html_url":"https://github.com/bjodah","followers_url":"https://api.github.com/users/bjodah/followers","following_url":"https://api.github.com/users/bjodah/following{/other_user}","gists_url":"https://api.github.com/users/bjodah/gists{/gist_id}","starred_url":"https://api.github.com/users/bjodah/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bjodah/subscriptions","organizations_url":"https://api.github.com/users/bjodah/orgs","repos_url":"https://api.github.com/users/bjodah/repos","events_url":"https://api.github.com/users/bjodah/events{/privacy}","received_events_url":"https://api.github.com/users/bjodah/received_events","type":"User","site_admin":false},"created_at":"2015-10-09T19:31:00Z","updated_at":"2015-10-09T19:31:00Z","body":"If you split the symengine python wrappers into their own package I would recommend to distribute the cythonized .cpp file (that is actually what the cython-devs recommend, and it's [quite simple](https://github.com/bjodah/pycvodes/blob/master/setup.py#L23)) and just use distutils to compile that single cpp file and link it with libsymengine. That removes two build-dependencies: cython & cmake.\r\n\r\nI would actually recommend distributing pre-cythonized sources no matter what since that removes Cython as a build-dependency for end users.\r\n\r\nThe downside of separating the wrappers, as I see it, is that the C++ sources and the Python wrappers will be out of sync at times, which means that the Python wrappers need to track tagged releases of symengine. That is not too bad if releasing minor revisions of symengine is a quick and painless (or is the C++ core already considered mature?)."}}