summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ports/unix/main.c11
-rw-r--r--ports/unix/mpconfigport.h2
-rw-r--r--ports/unix/variants/minimal/mpconfigvariant.h2
-rw-r--r--ports/windows/mpconfigport.h2
-rw-r--r--py/runtime.c2
-rw-r--r--tests/basics/sys_path.py16
-rwxr-xr-xtests/run-tests.py2
7 files changed, 26 insertions, 11 deletions
diff --git a/ports/unix/main.c b/ports/unix/main.c
index cecb80628..b2790791a 100644
--- a/ports/unix/main.c
+++ b/ports/unix/main.c
@@ -497,7 +497,7 @@ MP_NOINLINE int main_(int argc, char **argv) {
if (path == NULL) {
path = MICROPY_PY_SYS_PATH_DEFAULT;
}
- size_t path_num = 2; // [0] is frozen, [1] is for current dir (or base dir of the script)
+ size_t path_num = 1; // [0] is for current dir (or base dir of the script)
if (*path == PATHLIST_SEP_CHAR) {
path_num++;
}
@@ -510,11 +510,10 @@ MP_NOINLINE int main_(int argc, char **argv) {
mp_obj_list_init(MP_OBJ_TO_PTR(mp_sys_path), path_num);
mp_obj_t *path_items;
mp_obj_list_get(mp_sys_path, &path_num, &path_items);
- path_items[0] = MP_OBJ_NEW_QSTR(MP_QSTR__dot_frozen);
- path_items[1] = MP_OBJ_NEW_QSTR(MP_QSTR_);
+ path_items[0] = MP_OBJ_NEW_QSTR(MP_QSTR_);
{
char *p = path;
- for (mp_uint_t i = 2; i < path_num; i++) {
+ for (mp_uint_t i = 1; i < path_num; i++) {
char *p1 = strchr(p, PATHLIST_SEP_CHAR);
if (p1 == NULL) {
p1 = p + strlen(p);
@@ -655,9 +654,9 @@ MP_NOINLINE int main_(int argc, char **argv) {
break;
}
- // Set base dir of the script as second entry in sys.path.
+ // Set base dir of the script as first entry in sys.path.
char *p = strrchr(basedir, '/');
- path_items[1] = mp_obj_new_str_via_qstr(basedir, p - basedir);
+ path_items[0] = mp_obj_new_str_via_qstr(basedir, p - basedir);
free(pathbuf);
set_sys_argv(argv, argc, a);
diff --git a/ports/unix/mpconfigport.h b/ports/unix/mpconfigport.h
index a995ac52c..658cb680f 100644
--- a/ports/unix/mpconfigport.h
+++ b/ports/unix/mpconfigport.h
@@ -125,7 +125,7 @@
#endif
#endif
#ifndef MICROPY_PY_SYS_PATH_DEFAULT
-#define MICROPY_PY_SYS_PATH_DEFAULT "~/.micropython/lib:/usr/lib/micropython"
+#define MICROPY_PY_SYS_PATH_DEFAULT ".frozen:~/.micropython/lib:/usr/lib/micropython"
#endif
#define MICROPY_PY_SYS_MAXSIZE (1)
#define MICROPY_PY_SYS_STDFILES (1)
diff --git a/ports/unix/variants/minimal/mpconfigvariant.h b/ports/unix/variants/minimal/mpconfigvariant.h
index 4766b8e89..e0db3756c 100644
--- a/ports/unix/variants/minimal/mpconfigvariant.h
+++ b/ports/unix/variants/minimal/mpconfigvariant.h
@@ -89,7 +89,7 @@
#define MICROPY_PY_SYS_EXIT (0)
#define MICROPY_PY_SYS_PLATFORM "linux"
#ifndef MICROPY_PY_SYS_PATH_DEFAULT
-#define MICROPY_PY_SYS_PATH_DEFAULT "~/.micropython/lib:/usr/lib/micropython"
+#define MICROPY_PY_SYS_PATH_DEFAULT ".frozen:~/.micropython/lib:/usr/lib/micropython"
#endif
#define MICROPY_PY_SYS_MAXSIZE (0)
#define MICROPY_PY_SYS_STDFILES (0)
diff --git a/ports/windows/mpconfigport.h b/ports/windows/mpconfigport.h
index 30d8e09e6..f22af9b7f 100644
--- a/ports/windows/mpconfigport.h
+++ b/ports/windows/mpconfigport.h
@@ -90,7 +90,7 @@
#define MICROPY_PY_SYS_ATEXIT (1)
#define MICROPY_PY_SYS_PLATFORM "win32"
#ifndef MICROPY_PY_SYS_PATH_DEFAULT
-#define MICROPY_PY_SYS_PATH_DEFAULT "~/.micropython/lib"
+#define MICROPY_PY_SYS_PATH_DEFAULT ".frozen;~/.micropython/lib"
#endif
#define MICROPY_PY_SYS_MAXSIZE (1)
#define MICROPY_PY_SYS_STDFILES (1)
diff --git a/py/runtime.c b/py/runtime.c
index 7607ffb19..8c93f539e 100644
--- a/py/runtime.c
+++ b/py/runtime.c
@@ -124,10 +124,10 @@ void mp_init(void) {
#if MICROPY_PY_SYS_PATH_ARGV_DEFAULTS
mp_obj_list_init(MP_OBJ_TO_PTR(mp_sys_path), 0);
+ mp_obj_list_append(mp_sys_path, MP_OBJ_NEW_QSTR(MP_QSTR_)); // current dir (or base dir of the script)
#if MICROPY_MODULE_FROZEN
mp_obj_list_append(mp_sys_path, MP_OBJ_NEW_QSTR(MP_QSTR__dot_frozen));
#endif
- mp_obj_list_append(mp_sys_path, MP_OBJ_NEW_QSTR(MP_QSTR_)); // current dir (or base dir of the script)
mp_obj_list_init(MP_OBJ_TO_PTR(mp_sys_argv), 0);
#endif
diff --git a/tests/basics/sys_path.py b/tests/basics/sys_path.py
new file mode 100644
index 000000000..6456e2401
--- /dev/null
+++ b/tests/basics/sys_path.py
@@ -0,0 +1,16 @@
+# test sys.path
+
+try:
+ import usys as sys
+except ImportError:
+ import sys
+
+# check that this script was executed from a file of the same name
+if "__file__" not in globals() or "sys_path.py" not in __file__:
+ print("SKIP")
+ raise SystemExit
+
+# test that sys.path[0] is the directory containing this script
+with open(sys.path[0] + "/sys_path.py") as f:
+ for _ in range(4):
+ print(f.readline())
diff --git a/tests/run-tests.py b/tests/run-tests.py
index a8a31c0ae..6f3c09d1d 100755
--- a/tests/run-tests.py
+++ b/tests/run-tests.py
@@ -852,7 +852,7 @@ the last matching regex is used:
if not args.keep_path:
# clear search path to make sure tests use only builtin modules and those in extmod
- os.environ["MICROPYPATH"] = os.pathsep + base_path("../extmod")
+ os.environ["MICROPYPATH"] = ".frozen" + os.pathsep + base_path("../extmod")
try:
os.makedirs(args.result_dir, exist_ok=True)