Commit graph

208 commits

Author SHA1 Message Date
Victor Stinner
1f15111a6e
bpo-32030: Add _PyMainInterpreterConfig.pythonhome (#4513)
* Py_Main() now reads the PYTHONHOME environment variable
* Add _Py_GetPythonHomeWithConfig() private function
* Add _PyWarnings_InitWithConfig()
* init_filters() doesn't get the current core configuration from the
  current interpreter or Python thread anymore. Pass explicitly the
  configuration to _PyWarnings_InitWithConfig().
* _Py_InitializeCore() now fails on _PyWarnings_InitWithConfig()
  failure.
* Pass configuration as constant
2017-11-23 10:43:14 +01:00
Victor Stinner
e32e79f7d8
bpo-32030: Move PYTHONPATH to _PyMainInterpreterConfig (#4511)
Move _PyCoreConfig.module_search_path_env to _PyMainInterpreterConfig
structure.
2017-11-23 01:49:45 +01:00
Victor Stinner
d434110974
bpo-32030: Add _PyCoreConfig.module_search_path_env (#4504)
Changes:

* Py_Main() initializes _PyCoreConfig.module_search_path_env from
  the PYTHONPATH environment variable.
* PyInterpreterState_New() now initializes core_config and config
  fields
* Compute sys.path a little bit ealier in
  _Py_InitializeMainInterpreter() and new_interpreter()
* Add _Py_GetPathWithConfig() private function.
2017-11-23 00:12:09 +01:00
nurelin
3d1e2ab584 bpo-31532: Fix memory corruption due to allocator mix (#3679)
Fix a memory corruption in getpath.c due to mixed memory allocators
between Py_GetPath() and Py_SetPath().

The fix use the Raw allocator to mimic the windows version.

This patch should be used from python3.6 to the current version

for more details, see the bug report and
  https://github.com/pyinstaller/pyinstaller/issues/2812
2017-09-20 23:08:20 -07:00
Serhiy Storchaka
a27c064428 Issue #19398: Extra slash no longer added to sys.path components in case of
empty compile-time PYTHONPATH components.  This fixes some tests in -S or -I
modes.
2016-11-11 12:06:38 +02:00
Serhiy Storchaka
62e32d6352 Issue #19398: Extra slash no longer added to sys.path components in case of
empty compile-time PYTHONPATH components.  This fixes some tests in -S or -I
modes.
2016-11-11 12:05:01 +02:00
Benjamin Peterson
59ae8ec75f merge 3.5 2016-06-02 12:42:40 -07:00
Benjamin Peterson
f585414813 remove (hilarious) defaults for various constants getpath.c needs 2016-06-02 12:41:35 -07:00
Serhiy Storchaka
2d06e84455 Issue #25923: Added the const qualifier to static constant arrays. 2015-12-25 19:53:18 +02:00
Brett Cannon
f299abdafa Issue #23731: Implement PEP 488.
The concept of .pyo files no longer exists. Now .pyc files have an
optional `opt-` tag which specifies if any extra optimizations beyond
the peepholer were applied.
2015-04-13 14:21:02 -04:00
Victor Stinner
91afbb6088 Issue #23753: Move _Py_wstat() from Python/fileutils.c to Modules/getpath.c
I expected more users of _Py_wstat(), but in practice it's only used by
Modules/getpath.c. Move the function because it's not needed on Windows.
Windows uses PC/getpathp.c which uses the Win32 API (ex: GetFileAttributesW())
not the POSIX API.
2015-03-24 12:16:28 +01:00
Serhiy Storchaka
4d0d982985 Issue #23446: Use PyMem_New instead of PyMem_Malloc to avoid possible integer
overflows.  Added few missed PyErr_NoMemory().
2015-02-16 13:33:32 +02:00
Serhiy Storchaka
1a1ff29659 Issue #23446: Use PyMem_New instead of PyMem_Malloc to avoid possible integer
overflows.  Added few missed PyErr_NoMemory().
2015-02-16 13:28:22 +02:00
Ned Deily
45759a3924 Issue #17095: merge from 3.4 2014-09-14 19:21:05 -07:00
Ned Deily
ad24d62882 Issue #17095: Temporarily revert getpath.c change that added the Modules
directory to sys.path when running from a build directory.  That has
proven to be problematic for several standard library modules with
C extension modules whose builds can fail on some platforms.
2014-09-14 19:19:49 -07:00
Victor Stinner
f6a271ae98 Issue #18395: Rename `_Py_char2wchar() to :c:func:Py_DecodeLocale`, rename
``_Py_wchar2char()`` to :c:func:`Py_EncodeLocale`, and document these
functions.
2014-08-01 12:28:48 +02:00
Ned Deily
b166191886 Issue #17095: Fix Modules/Setup *shared* support.
Original patch by Thomas Wouters.
2014-06-02 01:05:29 -07:00
Christian Heimes
af01f66817 Issue #16136: Remove VMS support and VMS-related code 2013-12-21 16:19:10 +01:00
Victor Stinner
72967a4c1a calculate_path() now fails with a fatal error when it fails to allocate memory
for module_search_path. It was already the case on _Py_char2wchar() failure.
2013-11-16 01:22:04 +01:00
Victor Stinner
ce4179d022 Don't mix wide character strings and byte strings (L"lib/python" VERSION): use
_Py_char2wchar() to decode lib_python instead.

Some compilers don't support concatenating literals: L"wide" "bytes". Example:
IRIX compiler.
2013-11-16 00:45:54 +01:00
Christian Heimes
de0e63bd9c Issue #15905: Fix theoretical buffer overflow in handling of sys.argv[0],
prefix and exec_prefix if the operation system does not obey MAXPATHLEN.
2013-07-22 12:54:21 +02:00
Christian Heimes
60a6067709 Issue #15905: Fix theoretical buffer overflow in handling of sys.argv[0],
prefix and exec_prefix if the operation system does not obey MAXPATHLEN.
2013-07-22 12:53:32 +02:00
Victor Stinner
1a7425f67a Issue #18203: Replace malloc() with PyMem_RawMalloc() at Python initialization
* Replace malloc() with PyMem_RawMalloc()
* Replace PyMem_Malloc() with PyMem_RawMalloc() where the GIL is not held.
* _Py_char2wchar() now returns a buffer allocated by PyMem_RawMalloc(), instead
  of PyMem_Malloc()
2013-07-07 16:25:15 +02:00
Andrew Svetlov
69032c81aa Issue #16309: Make PYTHONPATH= behavior the same as if PYTHONPATH not set at all.
Thanks to Armin Rigo and Alexey Kachayev.
2012-11-03 13:52:58 +02:00
Vinay Sajip
90db661b43 Closes #15307: symlinks now work on OS X with framework Python builds. Patch by Ronald Oussoren. 2012-07-17 17:33:46 +01:00
Vinay Sajip
7ded1f0f69 Implemented PEP 405 (Python virtual environments). 2012-05-26 03:45:29 +01:00
Victor Stinner
99563b1df8 calculate_path() decodes the PYTHONPATH environment variable from the locale
encoding using _Py_char2wchar() instead of mbstowcs() to store undecodable
bytes as surrogates characters (PEP 383) instead of ignoring silently
the PYTHONPATH variable.
2011-06-20 14:45:54 +02:00
Antoine Pitrou
bb6eb857cf Issue #10914: fix bogus memory management in Modules/getpath.c, leading to a possible crash when calling Py_SetPath() 2011-03-17 23:34:33 +01:00
Martin v. Löwis
4d0d471a80 Merge branches/pep-0384. 2010-12-03 20:14:31 +00:00
Victor Stinner
47f637ce17 getpath.c: fix test to detech PyUnicode_AsWideChar() failure
PyUnicode_AsWideChar() result is signed, whereas it was stored in a unsigned
variable, and then the test was "n >= 0" which is always true to an unsigned
number. Patch written by Hallvard B Furuseth.
2010-11-10 14:12:20 +00:00
Victor Stinner
ae4836df6d Issue #6011: decode PREFIX, EXEC_PREFIX and PYTHONPATH variables using
_Py_char2wchar(), instead of L"" VAR hack, to escape undecodable bytes using
the surrogateescape error handler.
2010-11-08 23:49:47 +00:00
Victor Stinner
2158231433 Issue #6011: getpath: decode VPATH env var from the locale encoding
Instead of casting it to wchar_t* without conversion. It fixes a bug if Python
is compiled a non-ascii directory, different than the source code directory,
with C locale.
2010-10-23 00:13:28 +00:00
Victor Stinner
61aad57dc9 Oops, fix my previous commit (r85583) on calculate_path()
path value may be changed, so keep a copy in a new variable.
2010-10-16 23:38:07 +00:00
Victor Stinner
dc4b2a712f calculate_path(): use _Py_char2wchar() to decode the PATH environment variable,
to support surrogate characters
2010-10-16 23:34:22 +00:00
Victor Stinner
f4061dac60 _Py_wgetcwd() decodes the path using _Py_char2wchar() to support surrogates 2010-10-14 12:37:19 +00:00
Victor Stinner
4f3abb0f09 copy_absolute() keeps the relative path on _Py_wgetcwd() failure
.. instead of raising a fatal error. Even if the current directory was deleted,
use relative paths may still work (eg. run Python with "../python").
2010-10-07 23:29:18 +00:00
Victor Stinner
41c8b377d7 copy_absolute() raises a fatal error on _Py_wgetcwd() failure 2010-10-07 22:42:51 +00:00
Victor Stinner
4e31443c4d Create fileutils.c/.h
* _Py_fopen() and _Py_stat() come from Python/import.c
 * (_Py)_wrealpath() comes from Python/sysmodule.c
 * _Py_char2wchar(), _Py_wchar2char() and _Py_wfopen() come from Modules/main.c
 * (_Py)_wstat(), (_Py)_wgetcwd(), _Py_wreadlink() come from Modules/getpath.c
2010-10-07 21:45:39 +00:00
Victor Stinner
7ae7c87b05 _wrealpath() and _Py_wreadlink() support surrogates (PEP 383)
Use _Py_wchar2char() to support surrogate characters in the input path.
2010-10-07 11:06:49 +00:00
Kristján Valur Jónsson
3b69db27d7 issue 9910
Add a Py_SetPath api to override magic path computations when starting up python.
2010-09-27 05:32:54 +00:00
Antoine Pitrou
99773acf38 Fix indentation in Modules/getpath.c 2010-08-14 12:34:41 +00:00
Antoine Pitrou
eba57b6f3a Add comments about Windows in Modules/getpath.c 2010-08-14 12:33:18 +00:00
Victor Stinner
e406ef41b1 Kill a gcc warning introduced by r83988 2010-08-14 00:07:14 +00:00
Victor Stinner
f2e08b34f1 Create _Py_wchar2char() function, reverse of _Py_char2wchar()
* Use _Py_wchar2char() in _wstat() and _Py_wfopen()
 * Document _Py_char2wchar()
2010-08-13 23:29:08 +00:00
Antoine Pitrou
e9b428f997 Reimplement addbuilddir() in C inside getpath.c, so as to execute it
at interpreter startup before importing any non-builtin modules.
Should fix #9589.
2010-08-13 22:25:01 +00:00
Ronald Oussoren
97d1119dde Ensure that sys.prefix can reliably be found
on OSX. This fixes a small issue that was exposed
by running test_subprocess through regrtest (and
hence in a subdirectory).

Without this patch running python.exe from the
build tree will fail when these tree conditions
are true:
1) the CWD is not the root of build tree
2) python.exe is found through $PATH
3) the framework is not yet installed
2010-07-23 16:05:35 +00:00
Antoine Pitrou
f95a1b3c53 Recorded merge of revisions 81029 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r81029 | antoine.pitrou | 2010-05-09 16:46:46 +0200 (dim., 09 mai 2010) | 3 lines

  Untabify C files. Will watch buildbots.
........
2010-05-09 15:52:27 +00:00
Victor Stinner
171ba0504a Merged revisions 78835-78837 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r78835 | victor.stinner | 2010-03-11 13:34:39 +0100 (jeu., 11 mars 2010) | 7 lines

  Issue #7774: Set sys.executable to an empty string if argv[0] has been
  set to an non existent program name and Python is unable to retrieve the real
  program name.

  Fix also sysconfig: if sys.executable is an empty string, use the current
  working directory.
........
  r78836 | victor.stinner | 2010-03-11 14:27:35 +0100 (jeu., 11 mars 2010) | 4 lines

  Fix test_executable introduce in previous commit (r78835): Windows is able to
  retrieve the absolute Python path even if argv[0] has been set to a non
  existent program name.
........
  r78837 | victor.stinner | 2010-03-11 14:46:06 +0100 (jeu., 11 mars 2010) | 3 lines

  Another fix to test_executable() of test_sys: set the current working to avoid
  the #7774 bug.
........
2010-03-12 14:20:59 +00:00
Andrew M. Kuchling
b2ceb3ad9e #4532: fixes to make 3.x compile on QNX 6.3.2 (reported by Matt Kraai) 2010-02-22 23:26:10 +00:00
Ronald Oussoren
3e264e13ed This fixes issue5143 and includes a test.
Issue5143 notes that getpath.c and main.c pass a 'char*' where
a 'wchar_t*' is expected on OSX.
2009-02-12 15:55:38 +00:00