From 3762aacd08996177e6fb9277a758f3372e269b53 Mon Sep 17 00:00:00 2001 From: Ge Wang Date: Wed, 30 Oct 2024 22:02:36 -0700 Subject: [PATCH] re-order import search paths --- src/core/chuck_compile.cpp | 4 ++-- src/core/chuck_dl.cpp | 18 +++++++++--------- src/core/chuck_dl.h | 4 ++-- src/host/chuck_main.cpp | 20 +++++++++++--------- 4 files changed, 24 insertions(+), 22 deletions(-) diff --git a/src/core/chuck_compile.cpp b/src/core/chuck_compile.cpp index 6976d928f..51c76b221 100644 --- a/src/core/chuck_compile.cpp +++ b/src/core/chuck_compile.cpp @@ -654,10 +654,10 @@ std::string Chuck_Compiler::resolveFilename( const std::string & filename, // TODO: possible caching -- search for match first in registry // match-right between each entry and fname; if found, return entry absolute path - // get search paths; order: system, user, packages + // get search paths; order: system, packages, user list searchPaths = this->carrier()->chuck->getParamStringList( CHUCK_PARAM_IMPORT_PATH_SYSTEM ); - append_path_list( searchPaths, this->carrier()->chuck->getParamStringList( CHUCK_PARAM_IMPORT_PATH_USER ) ); append_path_list( searchPaths, this->carrier()->chuck->getParamStringList( CHUCK_PARAM_IMPORT_PATH_PACKAGES ) ); + append_path_list( searchPaths, this->carrier()->chuck->getParamStringList( CHUCK_PARAM_IMPORT_PATH_USER ) ); // go over paths for( list::iterator it = searchPaths.begin(); it != searchPaths.end(); it++ ) { diff --git a/src/core/chuck_dl.cpp b/src/core/chuck_dl.cpp index 45cbcaeeb..9c4a22d81 100644 --- a/src/core/chuck_dl.cpp +++ b/src/core/chuck_dl.cpp @@ -52,30 +52,30 @@ using namespace std; //----------------------------------------------------------------------------- // * system paths: for loading chugins/ck files on VM startup // contents persists across clearVM -// * user paths: not automatically loaded on startup; @import on demand -// contents removed by clearVM -// * package path; packages installed and managed by ChuMP; @import on demand -// contents removed by clearVM | 1.5.4.0 (ge & nshaheed) +// * user paths: user .ck and .chug files; not automatically loaded on startup; +// @import on demand to use; contents removed by clearVM +// * packages path: packages installed and managed by ChuMP | 1.5.4.0 (ge & nshaheed) +// @import on demand to use; contents removed by clearVM // (=v ChuMP =v ChucK Manager of Packages) //----------------------------------------------------------------------------- #if defined(__PLATFORM_APPLE__) char g_default_path_system[] = "/usr/local/lib/chuck:/Library/Application Support/ChucK/chugins"; -char g_default_path_user[] = "~/.chuck/lib:~/Library/Application Support/ChucK/chugins"; -char g_default_path_packages[] = "~/.chuck/chump"; +char g_default_path_packages[] = "~/.chuck/packages"; +char g_default_path_user[] = "~/Library/Application Support/ChucK/chugins:~/.chuck/lib"; #elif defined(__PLATFORM_WINDOWS__) char g_default_path_system[] = "C:\\Windows\\system32\\ChucK;C:\\Program Files\\ChucK\\chugins;C:\\Program Files (x86)\\ChucK\\chugins;"; +char g_default_path_packages[] = "C:\\Users\\%USERNAME%\\Documents\\ChucK\\packages"; char g_default_path_user[] = "C:\\Users\\%USERNAME%\\Documents\\ChucK\\chugins"; -char g_default_path_packages[] = "~C:\\Users\\%USERNAME%\\Documents\\ChucK\\chump"; #else // Linux / Cygwin char g_default_path_system[] = "/usr/local/lib/chuck"; +char g_default_path_packages[] = "~/.chuck/packages"; char g_default_path_user[] = "~/.chuck/lib"; -char g_default_path_packages[] = "~/.chuck/chump"; #endif // environment variables char g_envvar_path_system[] = "CHUCK_IMPORT_PATH_SYSTEM"; -char g_envvar_path_user[] = "CHUCK_IMPORT_PATH_USER"; char g_envvar_path_packages[] = "CHUCK_IMPORT_PATH_PACKAGES"; +char g_envvar_path_user[] = "CHUCK_IMPORT_PATH_USER"; // deprecated; should use the above char g_envvar_path_deprecated[] = "CHUCK_CHUGIN_PATH"; diff --git a/src/core/chuck_dl.h b/src/core/chuck_dl.h index fcdbbffea..a2d0dd0e7 100644 --- a/src/core/chuck_dl.h +++ b/src/core/chuck_dl.h @@ -71,12 +71,12 @@ // string literal containing default chugin paths (platform-specific) extern char g_default_path_system[]; -extern char g_default_path_user[]; extern char g_default_path_packages[]; +extern char g_default_path_user[]; // string literal containing environment variable names for import search path extern char g_envvar_path_system[]; -extern char g_envvar_path_user[]; extern char g_envvar_path_packages[]; +extern char g_envvar_path_user[]; // contains deprecated env var name extern char g_envvar_path_deprecated[]; diff --git a/src/host/chuck_main.cpp b/src/host/chuck_main.cpp index 273fb8b7f..87b1ad762 100644 --- a/src/host/chuck_main.cpp +++ b/src/host/chuck_main.cpp @@ -659,36 +659,38 @@ t_CKBOOL go( int argc, const char ** argv ) ck_configANSI_ESCcodes(); // initial chug-in path (added 1.3.0.0) - // separate into system, user, packages | 1.5.4.0 (ge) - std::string import_path_system, import_path_user, import_path_packages; + // separate into system, packages, user | 1.5.4.0 (ge) + std::string import_path_system, import_path_packages, import_path_user; // list of search paths (added 1.3.0.0) - std::list dl_search_path_system, dl_search_path_user, dl_search_path_packages; + std::list dl_search_path_system, dl_search_path_packages, dl_search_path_user; // 1.3.0.0 | if set as environment variable, get it; otherwise use default // 1.5.4.0 | separate out into system, user, packages paths if( getenv( g_envvar_path_system ) ) { import_path_system = getenv( g_envvar_path_system ); } else { import_path_system = g_default_path_system; } - if( getenv( g_envvar_path_user ) ) - { import_path_user = getenv( g_envvar_path_user ); } - else { import_path_user = g_default_path_user; } + if( getenv( g_envvar_path_packages ) ) { import_path_packages = getenv( g_envvar_path_packages ); } else { import_path_packages = g_default_path_packages; } + if( getenv( g_envvar_path_user ) ) + { import_path_user = getenv( g_envvar_path_user ); } + else { import_path_user = g_default_path_user; } + // test for deprecation if( getenv( g_envvar_path_deprecated ) ) { // issue warning EM_error2( 0, "(warning) environment variable '%s' is deprecated", g_envvar_path_deprecated ); EM_error2( 0, "...please use '%s' '%s' '%s' to set import search paths", - g_envvar_path_user, g_envvar_path_system, g_envvar_path_packages ); + g_envvar_path_system, g_envvar_path_packages, g_envvar_path_user ); } // parse the colon list into STL list (added 1.3.0.0) parse_path_list( import_path_system, dl_search_path_system ); - parse_path_list( import_path_user, dl_search_path_user ); parse_path_list( import_path_packages, dl_search_path_packages ); + parse_path_list( import_path_user, dl_search_path_user ); // list of individually named chug-ins (added 1.3.0.0) std::list named_dls; @@ -1256,8 +1258,8 @@ t_CKBOOL go( int argc, const char ** argv ) the_chuck->setParam( CHUCK_PARAM_CHUGIN_ENABLE, chugin_load ); the_chuck->setParam( CHUCK_PARAM_USER_CHUGINS, named_dls ); the_chuck->setParam( CHUCK_PARAM_IMPORT_PATH_SYSTEM, dl_search_path_system ); - the_chuck->setParam( CHUCK_PARAM_IMPORT_PATH_USER, dl_search_path_user ); the_chuck->setParam( CHUCK_PARAM_IMPORT_PATH_PACKAGES, dl_search_path_packages ); + the_chuck->setParam( CHUCK_PARAM_IMPORT_PATH_USER, dl_search_path_user ); //----------------------------------------------------------------- // probe chugins | 1.5.0.4 (ge) added