From patchwork Tue Nov 16 03:54:43 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D11763: cext: define S_IFLNK on Python 2.7 and Windows From: phabricator X-Patchwork-Id: 50088 Message-Id: To: Phabricator Cc: mercurial-devel@mercurial-scm.org Date: Tue, 16 Nov 2021 03:54:43 +0000 indygreg created this revision. Herald added a reviewer: hg-reviewers. Herald added a subscriber: mercurial-patches. REVISION SUMMARY Before this change, building on Python 2.7 on Windows fails due to S_IFLNK being undefined. This regression was introduced by a32a96079e2d / D11518 . It worked on Python 3 because its pyport.h (which is included via Python.h) contains effectively the same code as added by this changeset. REPOSITORY rHG Mercurial BRANCH stable REVISION DETAIL https://phab.mercurial-scm.org/D11763 AFFECTED FILES mercurial/cext/parsers.c CHANGE DETAILS To: indygreg, #hg-reviewers Cc: mercurial-patches, mercurial-devel diff --git a/mercurial/cext/parsers.c b/mercurial/cext/parsers.c --- a/mercurial/cext/parsers.c +++ b/mercurial/cext/parsers.c @@ -25,6 +25,12 @@ #define PyInt_FromLong PyLong_FromLong #define PyInt_FromSsize_t PyLong_FromSsize_t #define PyInt_AsLong PyLong_AsLong +#else +/* Windows on Python 2.7 doesn't define S_IFLNK. Python 3+ defines via + * pyport.h. */ +#ifndef S_IFLNK +#define S_IFLNK 0120000 +#endif #endif static const char *const versionerrortext = "Python minor version mismatch";