X-Recipient: archive-cygwin AT delorie DOT com X-Original-To: cygwin AT cygwin DOT com Delivered-To: cygwin AT cygwin DOT com DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 2DD383858C27 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=trueroad.jp Authentication-Results: sourceware.org; spf=none smtp.mailfrom=trueroad AT trueroad DOT jp Date: Sat, 30 Jan 2021 22:28:50 +0900 (JST) Message-Id: <20210130.222850.1144915727792964409.trueroad@trueroad.jp> To: cygwin AT cygwin DOT com Subject: Re: python-cython C++ support patch From: Masamichi Hosoda In-Reply-To: <7edac602-ab79-7421-f5f8-929c7fa68428@gmail.com> References: <20210129 DOT 193143 DOT 371461372727925270 DOT trueroad AT trueroad DOT jp> <7edac602-ab79-7421-f5f8-929c7fa68428 AT gmail DOT com> X-Mailer: Mew version 6.8 on Emacs 27.1 Mime-Version: 1.0 X-VirusScan: Outbound; mvir-ac14; Sat, 30 Jan 2021 22:28:55 +0900 X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=no autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: cygwin AT cygwin DOT com X-Mailman-Version: 2.1.29 Precedence: list List-Id: General Cygwin discussions and problem reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: trueroad AT trueroad DOT jp Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: cygwin-bounces AT cygwin DOT com Sender: "Cygwin" > have you considered that you just need to define > CYTHON_NO_PYINIT_EXPORT ? > > the portion of the code below your change has already the > ifdef __cplusplus semantic > > Have you proposed it upstream ? It does not seem > a change restricted to Cygwin > > Any way I see no "wrongness" to add it on the Cython rebuild Hi Marco, The relevant upstream source looks like this. https://github.com/cython/cython/blob/0.29.21/Cython/Utility/ModuleSetupCode.c#L712 ``` #define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC ``` Perhaps `PyMODINIT_FUNC` is defined differently depending on whether it is in C++ or not. If I understand correctly, python-cython-0.29.21-2.src.patch in the Cygwin python-cython package changes `PyMODINIT_FUNC` to `PyObject *`. Here is the part of python-cython-0.29.21-2.src.patch. ``` --- origsrc/Cython-0.29.21/Cython/Utility/ModuleSetupCode.c 2020-07-08 23:44:39.000000000 +0200 +++ src/Cython-0.29.21/Cython/Utility/ModuleSetupCode.c 2021-01-04 22:10:21.641515500 +0100 @@ -709,7 +709,7 @@ static CYTHON_INLINE void * PyThread_tss /////////////// PyModInitFuncType.proto /////////////// #ifndef CYTHON_NO_PYINIT_EXPORT -#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC +#define __Pyx_PyMODINIT_FUNC PyObject * #elif PY_MAJOR_VERSION < 3 // Py2: define this to void manually because PyMODINIT_FUNC adds __declspec(dllexport) to it's definition. ``` Thanks. -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple