[PATCH 1 of 5] python3.13: use sys.executable instead of removed Py_GetProgramFullPath

Pierre-Yves David pierre-yves.david at ens-lyon.org
Wed Sep 4 15:40:11 UTC 2024


Series imported here

https://foss.heptapod.net/mercurial/mercurial-devel/-/merge_requests/935

I'll look at Manuel comment later

On 1/12/24 00:59, Mads Kiilerich wrote:
> # HG changeset patch
> # User Mads Kiilerich<mads at kiilerich.com>
> # Date 1705001527 -3600
> #      Thu Jan 11 20:32:07 2024 +0100
> # Branch stable
> # Node ID ab3021e9b0012db64e5bdc70e3f5a36324925d8c
> # Parent  3f87e0d305cda6e66139a1969cd2cedd45477139
> python3.13: use sys.executable instead of removed Py_GetProgramFullPath
>
> I could not make it work with the PyConfig API from the extension. But fetching
> sys.executable seems to work fine and isn't that verbose.
>
> diff --git a/mercurial/cext/parsers.c b/mercurial/cext/parsers.c
> --- a/mercurial/cext/parsers.c
> +++ b/mercurial/cext/parsers.c
> @@ -1232,6 +1232,15 @@ static int check_python_version(void)
>   	 * should only occur in unusual circumstances (e.g. if sys.hexversion
>   	 * is manually set to an invalid value). */
>   	if ((hexversion == -1) || (hexversion >> 16 != PY_VERSION_HEX >> 16)) {
> +		PyObject *sys = PyImport_ImportModule("sys"), *executable;
> +		if (!sys) {
> +			return -1;
> +		}
> +		executable = PyObject_GetAttrString(sys, "executable");
> +		Py_DECREF(sys);
> +		if (!executable) {
> +			return -1;
> +		}
>   		PyErr_Format(PyExc_ImportError,
>   		             "%s: The Mercurial extension "
>   		             "modules were compiled with Python " PY_VERSION
> @@ -1240,7 +1249,8 @@ static int check_python_version(void)
>   		             "sys.hexversion=%ld: "
>   		             "Python %s\n at: %s",
>   		             versionerrortext, hexversion, Py_GetVersion(),
> -		             Py_GetProgramFullPath());
> +		             PyUnicode_AsUTF8(executable));
> +		Py_DECREF(executable);
>   		return -1;
>   	}
>   	return 0;
>
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at lists.mercurial-scm.org
> https://lists.mercurial-scm.org/mailman/listinfo/mercurial-devel

-- 
Pierre-Yves David
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurial-scm.org/pipermail/mercurial-devel/attachments/20240904/8cbe6f1a/attachment.html>


More information about the Mercurial-devel mailing list