Skip to content

Commit

Permalink
re-order import search paths
Browse files Browse the repository at this point in the history
  • Loading branch information
gewang committed Oct 31, 2024
1 parent 3a5752d commit 3762aac
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 22 deletions.
4 changes: 2 additions & 2 deletions src/core/chuck_compile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<string> 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<string>::iterator it = searchPaths.begin(); it != searchPaths.end(); it++ )
{
Expand Down
18 changes: 9 additions & 9 deletions src/core/chuck_dl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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";

Expand Down
4 changes: 2 additions & 2 deletions src/core/chuck_dl.h
Original file line number Diff line number Diff line change
Expand Up @@ -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[];

Expand Down
20 changes: 11 additions & 9 deletions src/host/chuck_main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<std::string> dl_search_path_system, dl_search_path_user, dl_search_path_packages;
std::list<std::string> 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<std::string> named_dls;

Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 3762aac

Please sign in to comment.