Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
P
Pyston
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boxiang Sun
Pyston
Commits
c0c53c3d
Commit
c0c53c3d
authored
Mar 10, 2015
by
Kevin Modzelewski
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'sys_prefix' of
https://github.com/undingen/pyston
parents
03df0c80
7b919dca
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
92 additions
and
33 deletions
+92
-33
CMakeLists.txt
CMakeLists.txt
+3
-3
Makefile
Makefile
+5
-4
from_cpython/CMakeLists.txt
from_cpython/CMakeLists.txt
+1
-0
from_cpython/Include/pythonrun.h
from_cpython/Include/pythonrun.h
+1
-1
from_cpython/Modules/getpath.c
from_cpython/Modules/getpath.c
+30
-6
src/core/options.cpp
src/core/options.cpp
+3
-1
src/jit.cpp
src/jit.cpp
+25
-14
src/runtime/builtin_modules/sys.cpp
src/runtime/builtin_modules/sys.cpp
+2
-3
src/runtime/capi.cpp
src/runtime/capi.cpp
+22
-0
test/tests/sys_test.py
test/tests/sys_test.py
+0
-1
No files found.
CMakeLists.txt
View file @
c0c53c3d
...
@@ -186,9 +186,9 @@ add_test(NAME lint COMMAND ${PYTHON_EXE} ${CMAKE_SOURCE_DIR}/tools/lint.py WORKI
...
@@ -186,9 +186,9 @@ add_test(NAME lint COMMAND ${PYTHON_EXE} ${CMAKE_SOURCE_DIR}/tools/lint.py WORKI
add_test
(
NAME check-format COMMAND
${
CMAKE_SOURCE_DIR
}
/tools/check_format.sh
${
LLVM_TOOLS_BINARY_DIR
}
/clang-format WORKING_DIRECTORY
${
CMAKE_SOURCE_DIR
}
/src
)
add_test
(
NAME check-format COMMAND
${
CMAKE_SOURCE_DIR
}
/tools/check_format.sh
${
LLVM_TOOLS_BINARY_DIR
}
/clang-format WORKING_DIRECTORY
${
CMAKE_SOURCE_DIR
}
/src
)
add_test
(
NAME gc_unittest COMMAND gc_unittest
)
add_test
(
NAME gc_unittest COMMAND gc_unittest
)
add_test
(
NAME analysis_unittest COMMAND analysis_unittest
)
add_test
(
NAME analysis_unittest COMMAND analysis_unittest
)
add_test
(
NAME pyston_defaults COMMAND
${
PYTHON_EXE
}
${
CMAKE_SOURCE_DIR
}
/tools/tester.py -R ./pyston -j
${
TEST_THREADS
}
-k
${
CMAKE_SOURCE_DIR
}
/test/tests
)
add_test
(
NAME pyston_defaults COMMAND
${
PYTHON_EXE
}
${
CMAKE_SOURCE_DIR
}
/tools/tester.py -R ./pyston -j
${
TEST_THREADS
}
-
a=-S -
k
${
CMAKE_SOURCE_DIR
}
/test/tests
)
add_test
(
NAME pyston_max_compilation_tier COMMAND
${
PYTHON_EXE
}
${
CMAKE_SOURCE_DIR
}
/tools/tester.py -R ./pyston -j
${
TEST_THREADS
}
-a=-O -k
${
CMAKE_SOURCE_DIR
}
/test/tests
)
add_test
(
NAME pyston_max_compilation_tier COMMAND
${
PYTHON_EXE
}
${
CMAKE_SOURCE_DIR
}
/tools/tester.py -R ./pyston -j
${
TEST_THREADS
}
-a=-O -
a=-S -
k
${
CMAKE_SOURCE_DIR
}
/test/tests
)
add_test
(
NAME pyston_experimental_pypa_parser COMMAND
${
PYTHON_EXE
}
${
CMAKE_SOURCE_DIR
}
/tools/tester.py -a=-x -R ./pyston -j
${
TEST_THREADS
}
-a=-n -k
${
CMAKE_SOURCE_DIR
}
/test/tests
)
add_test
(
NAME pyston_experimental_pypa_parser COMMAND
${
PYTHON_EXE
}
${
CMAKE_SOURCE_DIR
}
/tools/tester.py -a=-x -R ./pyston -j
${
TEST_THREADS
}
-a=-n -
a=-S -
k
${
CMAKE_SOURCE_DIR
}
/test/tests
)
# format
# format
file
(
GLOB_RECURSE FORMAT_FILES
${
CMAKE_SOURCE_DIR
}
/src/*.h
${
CMAKE_SOURCE_DIR
}
/src/*.cpp
)
file
(
GLOB_RECURSE FORMAT_FILES
${
CMAKE_SOURCE_DIR
}
/src/*.h
${
CMAKE_SOURCE_DIR
}
/src/*.cpp
)
...
...
Makefile
View file @
c0c53c3d
...
@@ -334,6 +334,7 @@ STDMODULE_SRCS := \
...
@@ -334,6 +334,7 @@ STDMODULE_SRCS := \
zipimport.c
\
zipimport.c
\
_csv.c
\
_csv.c
\
_ssl.c
\
_ssl.c
\
getpath.c
\
$(EXTRA_STDMODULE_SRCS)
$(EXTRA_STDMODULE_SRCS)
STDOBJECT_SRCS
:=
\
STDOBJECT_SRCS
:=
\
...
@@ -469,7 +470,7 @@ check:
...
@@ -469,7 +470,7 @@ check:
$(MAKE)
run_unittests
$(MAKE)
run_unittests
$(MAKE)
pyston_gcc
$(MAKE)
pyston_gcc
$(PYTHON)
$(TOOLS_DIR)/tester.py
-R
pyston_gcc
-j$(TEST_THREADS)
-k
$(TESTS_DIR)
$(ARGS)
$(PYTHON)
$(TOOLS_DIR)/tester.py
-R
pyston_gcc
-j$(TEST_THREADS)
-k
-a
=
-S
$(TESTS_DIR)
$(ARGS)
@
# It can be useful to test release mode, since it actually exposes different functionality
@
# It can be useful to test release mode, since it actually exposes different functionality
@
# since we can make different decisions about which internal functions to inline or not.
@
# since we can make different decisions about which internal functions to inline or not.
...
@@ -900,9 +901,9 @@ define make_target
...
@@ -900,9 +901,9 @@ define make_target
$(eval
\
$(eval
\
.PHONY
:
test$1 check$1
.PHONY
:
test$1 check$1
check$1 test$1
:
$(PYTHON_EXE_DEPS) pyston$1 ext_pyston
check$1 test$1
:
$(PYTHON_EXE_DEPS) pyston$1 ext_pyston
$(PYTHON)
$(TOOLS_DIR)
/tester.py
-R
pyston
$1
-j
$(TEST_THREADS)
-k
$(TESTS_DIR)
$(ARGS)
$(PYTHON)
$(TOOLS_DIR)
/tester.py
-R
pyston
$1
-j
$(TEST_THREADS)
-
a
=
-S
-
k
$(TESTS_DIR)
$(ARGS)
$(PYTHON)
$(TOOLS_DIR)
/tester.py
-a
=
-x
-R
pyston
$1
-j
$(TEST_THREADS)
-a
=
-n
-k
$(TESTS_DIR)
$(ARGS)
$(PYTHON)
$(TOOLS_DIR)
/tester.py
-a
=
-x
-R
pyston
$1
-j
$(TEST_THREADS)
-a
=
-n
-
a
=
-S
-
k
$(TESTS_DIR)
$(ARGS)
$(PYTHON)
$(TOOLS_DIR)
/tester.py
-R
pyston
$1
-j
$(TEST_THREADS)
-a
=
-O
-k
$(TESTS_DIR)
$(ARGS)
$(PYTHON)
$(TOOLS_DIR)
/tester.py
-R
pyston
$1
-j
$(TEST_THREADS)
-a
=
-O
-
a
=
-S
-
k
$(TESTS_DIR)
$(ARGS)
.PHONY
:
run$1 dbg$1
.PHONY
:
run$1 dbg$1
run$1
:
pyston$1 $$(RUN_DEPS)
run$1
:
pyston$1 $$(RUN_DEPS)
...
...
from_cpython/CMakeLists.txt
View file @
c0c53c3d
...
@@ -57,6 +57,7 @@ file(GLOB_RECURSE STDMODULE_SRCS Modules
...
@@ -57,6 +57,7 @@ file(GLOB_RECURSE STDMODULE_SRCS Modules
zipimport.c
zipimport.c
_csv.c
_csv.c
_ssl.c
_ssl.c
getpath.c
)
)
# compile specified files in from_cpython/Objects
# compile specified files in from_cpython/Objects
...
...
from_cpython/Include/pythonrun.h
View file @
c0c53c3d
...
@@ -21,7 +21,7 @@ typedef struct {
...
@@ -21,7 +21,7 @@ typedef struct {
}
PyCompilerFlags
;
}
PyCompilerFlags
;
PyAPI_FUNC
(
void
)
Py_SetProgramName
(
char
*
)
PYSTON_NOEXCEPT
;
PyAPI_FUNC
(
void
)
Py_SetProgramName
(
char
*
)
PYSTON_NOEXCEPT
;
PyAPI_FUNC
(
char
*
)
Py_GetProgramName
(
void
)
PYSTON_NOEXCEPT
;
PyAPI_FUNC
(
c
onst
c
har
*
)
Py_GetProgramName
(
void
)
PYSTON_NOEXCEPT
;
PyAPI_FUNC
(
void
)
Py_SetPythonHome
(
char
*
)
PYSTON_NOEXCEPT
;
PyAPI_FUNC
(
void
)
Py_SetPythonHome
(
char
*
)
PYSTON_NOEXCEPT
;
PyAPI_FUNC
(
char
*
)
Py_GetPythonHome
(
void
)
PYSTON_NOEXCEPT
;
PyAPI_FUNC
(
char
*
)
Py_GetPythonHome
(
void
)
PYSTON_NOEXCEPT
;
...
...
from_cpython/Modules/getpath.c
View file @
c0c53c3d
...
@@ -3,6 +3,8 @@
...
@@ -3,6 +3,8 @@
#include "Python.h"
#include "Python.h"
#include "osdefs.h"
#include "osdefs.h"
#include <sys/stat.h> // Pyston change
#include <sys/types.h>
#include <sys/types.h>
#include <string.h>
#include <string.h>
...
@@ -117,8 +119,9 @@
...
@@ -117,8 +119,9 @@
#endif
#endif
#ifndef PYTHONPATH
#ifndef PYTHONPATH
#define PYTHONPATH PREFIX "/lib/python" VERSION ":" \
// Pyston change
EXEC_PREFIX "/lib/python" VERSION "/lib-dynload"
#define PYTHONPATH PREFIX "/from_cpython/Lib:" \
EXEC_PREFIX "/from_cpython/Lib/lib-dynload"
#endif
#endif
#ifndef LANDMARK
#ifndef LANDMARK
...
@@ -129,7 +132,7 @@ static char prefix[MAXPATHLEN+1];
...
@@ -129,7 +132,7 @@ static char prefix[MAXPATHLEN+1];
static
char
exec_prefix
[
MAXPATHLEN
+
1
];
static
char
exec_prefix
[
MAXPATHLEN
+
1
];
static
char
progpath
[
MAXPATHLEN
+
1
];
static
char
progpath
[
MAXPATHLEN
+
1
];
static
char
*
module_search_path
=
NULL
;
static
char
*
module_search_path
=
NULL
;
static
char
lib_python
[]
=
"
lib/python"
VERSION
;
static
char
lib_python
[]
=
"
from_cpython/Lib"
;
// Pyston change
static
void
static
void
reduce
(
char
*
dir
)
reduce
(
char
*
dir
)
...
@@ -205,7 +208,7 @@ isdir(char *filename) /* Is directory */
...
@@ -205,7 +208,7 @@ isdir(char *filename) /* Is directory */
stuff as fits will be appended.
stuff as fits will be appended.
*/
*/
static
void
static
void
joinpath
(
char
*
buffer
,
char
*
stuff
)
joinpath
(
char
*
buffer
,
c
onst
c
har
*
stuff
)
{
{
size_t
n
,
k
;
size_t
n
,
k
;
if
(
stuff
[
0
]
==
SEP
)
if
(
stuff
[
0
]
==
SEP
)
...
@@ -385,7 +388,7 @@ search_for_exec_prefix(char *argv0_path, char *home)
...
@@ -385,7 +388,7 @@ search_for_exec_prefix(char *argv0_path, char *home)
static
void
static
void
calculate_path
(
void
)
calculate_path
(
void
)
{
{
extern
char
*
Py_GetProgramName
(
void
);
extern
c
onst
c
har
*
Py_GetProgramName
(
void
);
static
char
delimiter
[
2
]
=
{
DELIM
,
'\0'
};
static
char
delimiter
[
2
]
=
{
DELIM
,
'\0'
};
static
char
separator
[
2
]
=
{
SEP
,
'\0'
};
static
char
separator
[
2
]
=
{
SEP
,
'\0'
};
...
@@ -393,9 +396,10 @@ calculate_path(void)
...
@@ -393,9 +396,10 @@ calculate_path(void)
char
*
rtpypath
=
Py_GETENV
(
"PYTHONPATH"
);
char
*
rtpypath
=
Py_GETENV
(
"PYTHONPATH"
);
char
*
home
=
Py_GetPythonHome
();
char
*
home
=
Py_GetPythonHome
();
char
*
path
=
getenv
(
"PATH"
);
char
*
path
=
getenv
(
"PATH"
);
char
*
prog
=
Py_GetProgramName
();
c
onst
c
har
*
prog
=
Py_GetProgramName
();
char
argv0_path
[
MAXPATHLEN
+
1
];
char
argv0_path
[
MAXPATHLEN
+
1
];
char
zip_path
[
MAXPATHLEN
+
1
];
char
zip_path
[
MAXPATHLEN
+
1
];
char
lib_pyston_path
[
MAXPATHLEN
+
1
];
// Pyston change
int
pfound
,
efound
;
/* 1 if found; -1 if found build directory */
int
pfound
,
efound
;
/* 1 if found; -1 if found build directory */
char
*
buf
;
char
*
buf
;
size_t
bufsz
;
size_t
bufsz
;
...
@@ -589,6 +593,16 @@ calculate_path(void)
...
@@ -589,6 +593,16 @@ calculate_path(void)
bufsz
+=
strlen
(
zip_path
)
+
1
;
bufsz
+=
strlen
(
zip_path
)
+
1
;
bufsz
+=
strlen
(
exec_prefix
)
+
1
;
bufsz
+=
strlen
(
exec_prefix
)
+
1
;
// Pyston change: add from_cpython/Lib and lib_pyston
// Prefix contains at this point the full path to 'from_cpython/Lib'
strcpy
(
lib_pyston_path
,
prefix
);
// go from ./from_cpython/Lib to ./lib_pyston
reduce
(
lib_pyston_path
);
reduce
(
lib_pyston_path
);
joinpath
(
lib_pyston_path
,
"lib_pyston"
);
bufsz
+=
strlen
(
lib_pyston_path
)
+
1
;
bufsz
+=
strlen
(
prefix
)
+
1
;
/* This is the only malloc call in this file */
/* This is the only malloc call in this file */
buf
=
(
char
*
)
PyMem_Malloc
(
bufsz
);
buf
=
(
char
*
)
PyMem_Malloc
(
bufsz
);
...
@@ -609,7 +623,17 @@ calculate_path(void)
...
@@ -609,7 +623,17 @@ calculate_path(void)
/* Next is the default zip path */
/* Next is the default zip path */
strcat
(
buf
,
zip_path
);
strcat
(
buf
,
zip_path
);
// Pyston change
// add from_cpython/Lib
strcat
(
buf
,
delimiter
);
strcat
(
buf
,
delimiter
);
strcat
(
buf
,
prefix
);
// add lib_pyston
strcat
(
buf
,
delimiter
);
strcat
(
buf
,
lib_pyston_path
);
strcat
(
buf
,
delimiter
);
/* Next goes merge of compile-time $PYTHONPATH with
/* Next goes merge of compile-time $PYTHONPATH with
* dynamically located prefix.
* dynamically located prefix.
...
...
src/core/options.cpp
View file @
c0c53c3d
...
@@ -74,7 +74,9 @@ bool ENABLE_FRAME_INTROSPECTION = 1;
...
@@ -74,7 +74,9 @@ bool ENABLE_FRAME_INTROSPECTION = 1;
bool
BOOLS_AS_I64
=
ENABLE_FRAME_INTROSPECTION
;
bool
BOOLS_AS_I64
=
ENABLE_FRAME_INTROSPECTION
;
extern
"C"
{
extern
"C"
{
int
Py_IgnoreEnvironmentFlag
=
1
;
int
Py_FrozenFlag
=
1
;
int
Py_IgnoreEnvironmentFlag
=
0
;
int
Py_NoSiteFlag
=
0
;
int
Py_OptimizeFlag
=
0
;
int
Py_OptimizeFlag
=
0
;
int
Py_VerboseFlag
=
0
;
int
Py_VerboseFlag
=
0
;
}
}
...
...
src/jit.cpp
View file @
c0c53c3d
...
@@ -27,6 +27,8 @@
...
@@ -27,6 +27,8 @@
#include "llvm/Support/Path.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/Signals.h"
#include "llvm/Support/Signals.h"
#include "osdefs.h"
#include "codegen/entry.h"
#include "codegen/entry.h"
#include "codegen/irgen/hooks.h"
#include "codegen/irgen/hooks.h"
#include "codegen/parser.h"
#include "codegen/parser.h"
...
@@ -37,6 +39,7 @@
...
@@ -37,6 +39,7 @@
#include "core/threading.h"
#include "core/threading.h"
#include "core/types.h"
#include "core/types.h"
#include "core/util.h"
#include "core/util.h"
#include "runtime/import.h"
#include "runtime/objmodel.h"
#include "runtime/objmodel.h"
#include "runtime/types.h"
#include "runtime/types.h"
...
@@ -76,7 +79,7 @@ static int main(int argc, char** argv) {
...
@@ -76,7 +79,7 @@ static int main(int argc, char** argv) {
bool
force_repl
=
false
;
bool
force_repl
=
false
;
bool
stats
=
false
;
bool
stats
=
false
;
const
char
*
command
=
NULL
;
const
char
*
command
=
NULL
;
while
((
code
=
getopt
(
argc
,
argv
,
"+OqdIibpjtrsvnxc:"
))
!=
-
1
)
{
while
((
code
=
getopt
(
argc
,
argv
,
"+OqdIibpjtrs
S
vnxc:"
))
!=
-
1
)
{
if
(
code
==
'O'
)
if
(
code
==
'O'
)
FORCE_OPTIMIZE
=
true
;
FORCE_OPTIMIZE
=
true
;
else
if
(
code
==
't'
)
else
if
(
code
==
't'
)
...
@@ -99,6 +102,8 @@ static int main(int argc, char** argv) {
...
@@ -99,6 +102,8 @@ static int main(int argc, char** argv) {
DUMPJIT
=
true
;
DUMPJIT
=
true
;
}
else
if
(
code
==
's'
)
{
}
else
if
(
code
==
's'
)
{
stats
=
true
;
stats
=
true
;
}
else
if
(
code
==
'S'
)
{
Py_NoSiteFlag
=
1
;
}
else
if
(
code
==
'r'
)
{
}
else
if
(
code
==
'r'
)
{
USE_STRIPPED_STDLIB
=
true
;
USE_STRIPPED_STDLIB
=
true
;
}
else
if
(
code
==
'b'
)
{
}
else
if
(
code
==
'b'
)
{
...
@@ -118,6 +123,8 @@ static int main(int argc, char** argv) {
...
@@ -118,6 +123,8 @@ static int main(int argc, char** argv) {
threading
::
registerMainThread
();
threading
::
registerMainThread
();
threading
::
acquireGLRead
();
threading
::
acquireGLRead
();
Py_SetProgramName
(
argv
[
0
]);
{
{
Timer
_t
(
"for initCodegen"
);
Timer
_t
(
"for initCodegen"
);
initCodegen
();
initCodegen
();
...
@@ -142,20 +149,24 @@ static int main(int argc, char** argv) {
...
@@ -142,20 +149,24 @@ static int main(int argc, char** argv) {
addToSysArgv
(
argv
[
i
]);
addToSysArgv
(
argv
[
i
]);
}
}
std
::
string
self_path
=
llvm
::
sys
::
fs
::
getMainExecutable
(
argv
[
0
],
(
void
*
)
main
);
llvm
::
StringRef
module_search_path
=
Py_GetPath
(
);
assert
(
self_path
.
size
());
while
(
true
)
{
std
::
pair
<
llvm
::
StringRef
,
llvm
::
StringRef
>
split_str
=
module_search_path
.
split
(
DELIM
);
llvm
::
SmallString
<
128
>
stdlib_dir
(
self_path
);
if
(
split_str
.
first
==
module_search_path
)
llvm
::
sys
::
path
::
remove_filename
(
stdlib_dir
);
// executable name
break
;
// could not find the delimiter
llvm
::
sys
::
path
::
append
(
stdlib_dir
,
"from_cpython"
);
appendToSysPath
(
split_str
.
first
);
llvm
::
sys
::
path
::
append
(
stdlib_dir
,
"Lib"
)
;
module_search_path
=
split_str
.
second
;
appendToSysPath
(
stdlib_dir
.
c_str
());
}
// go from ./from_cpython/Lib to ./lib_pyston
if
(
!
Py_NoSiteFlag
)
{
llvm
::
sys
::
path
::
remove_filename
(
stdlib_dir
);
try
{
llvm
::
sys
::
path
::
remove_filename
(
stdlib_dir
);
std
::
string
module_name
=
"site"
;
llvm
::
sys
::
path
::
append
(
stdlib_dir
,
"lib_pyston"
);
importModuleLevel
(
&
module_name
,
None
,
None
,
0
);
appendToSysPath
(
stdlib_dir
.
c_str
());
}
catch
(
ExcInfo
e
)
{
e
.
printExcAndTraceback
();
return
1
;
}
}
// end of argument parsing
// end of argument parsing
...
...
src/runtime/builtin_modules/sys.cpp
View file @
c0c53c3d
...
@@ -278,9 +278,8 @@ void setupSys() {
...
@@ -278,9 +278,8 @@ void setupSys() {
sys_module
->
giveAttr
(
"path_hooks"
,
new
BoxedList
());
sys_module
->
giveAttr
(
"path_hooks"
,
new
BoxedList
());
sys_module
->
giveAttr
(
"path_importer_cache"
,
new
BoxedDict
());
sys_module
->
giveAttr
(
"path_importer_cache"
,
new
BoxedDict
());
// TODO: should configure this in a better way
sys_module
->
giveAttr
(
"prefix"
,
boxStrConstant
(
Py_GetPrefix
()));
sys_module
->
giveAttr
(
"prefix"
,
boxStrConstant
(
"/usr"
));
sys_module
->
giveAttr
(
"exec_prefix"
,
boxStrConstant
(
Py_GetExecPrefix
()));
sys_module
->
giveAttr
(
"exec_prefix"
,
boxStrConstant
(
"/usr"
));
sys_module
->
giveAttr
(
"copyright"
,
sys_module
->
giveAttr
(
"copyright"
,
boxStrConstant
(
"Copyright 2014-2015 Dropbox.
\n
All Rights Reserved.
\n\n
Copyright (c) 2001-2014 "
boxStrConstant
(
"Copyright 2014-2015 Dropbox.
\n
All Rights Reserved.
\n\n
Copyright (c) 2001-2014 "
...
...
src/runtime/capi.cpp
View file @
c0c53c3d
...
@@ -981,6 +981,28 @@ static int dev_urandom_python(char* buffer, Py_ssize_t size) noexcept {
...
@@ -981,6 +981,28 @@ static int dev_urandom_python(char* buffer, Py_ssize_t size) noexcept {
}
}
}
}
static
const
char
*
progname
=
"pyston"
;
extern
"C"
void
Py_SetProgramName
(
char
*
pn
)
noexcept
{
if
(
pn
&&
*
pn
)
progname
=
pn
;
}
extern
"C"
const
char
*
Py_GetProgramName
(
void
)
noexcept
{
return
progname
;
}
static
char
*
default_home
=
NULL
;
extern
"C"
void
Py_SetPythonHome
(
char
*
home
)
noexcept
{
default_home
=
home
;
}
extern
"C"
char
*
Py_GetPythonHome
(
void
)
noexcept
{
char
*
home
=
default_home
;
if
(
home
==
NULL
&&
!
Py_IgnoreEnvironmentFlag
)
home
=
Py_GETENV
(
"PYTHONHOME"
);
return
home
;
}
extern
"C"
PyObject
*
PyThreadState_GetDict
(
void
)
noexcept
{
extern
"C"
PyObject
*
PyThreadState_GetDict
(
void
)
noexcept
{
Box
*
dict
=
cur_thread_state
.
dict
;
Box
*
dict
=
cur_thread_state
.
dict
;
if
(
!
dict
)
{
if
(
!
dict
)
{
...
...
test/tests/sys_test.py
View file @
c0c53c3d
...
@@ -3,7 +3,6 @@ import os.path
...
@@ -3,7 +3,6 @@ import os.path
print
sys
.
version
[:
3
]
print
sys
.
version
[:
3
]
print
os
.
path
.
exists
(
sys
.
executable
)
print
os
.
path
.
exists
(
sys
.
executable
)
print
sys
.
prefix
,
sys
.
exec_prefix
print
sys
.
copyright
[
-
200
:]
print
sys
.
copyright
[
-
200
:]
print
sys
.
byteorder
print
sys
.
byteorder
print
sys
.
getdefaultencoding
()
print
sys
.
getdefaultencoding
()
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment