From b0f266fad1436dfb412cbe5d20e26d36633eea25 Mon Sep 17 00:00:00 2001 From: Leif Andersen Date: Fri, 22 Jul 2016 18:16:58 -0400 Subject: [PATCH] Moved xrepl to be part of bootloader directly. --- Makefile | 6 -- racket/collects/racket/interactive.rkt | 8 +++ racket/src/gracket/grmain.c | 50 +--------------- racket/src/pkgs-config.rkt | 6 +- racket/src/racket/cmdline.inc | 20 ++----- racket/src/racket/main.c | 79 +++++++++++++------------- racket/src/rc-config.rkt | 31 ---------- 7 files changed, 60 insertions(+), 140 deletions(-) create mode 100644 racket/collects/racket/interactive.rkt delete mode 100644 racket/src/rc-config.rkt diff --git a/Makefile b/Makefile index 247c26dcf3..fde73a4428 100644 --- a/Makefile +++ b/Makefile @@ -66,7 +66,6 @@ ALL_PLT_SETUP_OPTIONS = $(JOB_OPTIONS) $(PLT_SETUP_OPTIONS) plain-in-place: $(MAKE) base $(MAKE) pkgs-catalog - $(MAKE) rc-config $(RUN_RACO) pkg update $(UPDATE_PKGS_ARGS) $(RUN_RACO) pkg install $(INSTALL_PKGS_ARGS) $(RUN_RACO) setup --only-foreign-libs $(ALL_PLT_SETUP_OPTIONS) @@ -75,7 +74,6 @@ plain-in-place: win32-in-place: $(MAKE) win32-base $(MAKE) win32-pkgs-catalog SRC_CATALOG="$(SRC_CATALOG)" - $(MAKE) rc-config $(WIN32_RUN_RACO) pkg update $(UPDATE_PKGS_ARGS) $(WIN32_RUN_RACO) pkg install $(INSTALL_PKGS_ARGS) $(WIN32_RUN_RACO) setup --only-foreign-libs $(ALL_PLT_SETUP_OPTIONS) @@ -346,16 +344,12 @@ WIN32_BUNDLE_RACO = $(WIN32_PLAIN_RACKET) $(BUNDLE_RACO_FLAGS) PKGS_CATALOG = -U -G build/config -l- pkg/dirs-catalog --link --check-metadata PKGS_CONFIG = -U -G build/config racket/src/pkgs-config.rkt -RC_CONFIG = -U -G build/config racket/src/rc-config.rkt pkgs-catalog: $(RUN_RACKET) $(PKGS_CATALOG) racket/share/pkgs-catalog pkgs $(RUN_RACKET) $(PKGS_CONFIG) "$(DEFAULT_SRC_CATALOG)" "$(SRC_CATALOG)" $(RUN_RACKET) racket/src/pkgs-check.rkt racket/share/pkgs-catalog -rc-config: - $(RUN_RACKET) $(RC_CONFIG) - COPY_PKGS_ARGS = PLAIN_RACKET="$(WIN32_PLAIN_RACKET)" SRC_CATALOG="$(SRC_CATALOG)" win32-pkgs-catalog: diff --git a/racket/collects/racket/interactive.rkt b/racket/collects/racket/interactive.rkt new file mode 100644 index 0000000000..9a06b39f0f --- /dev/null +++ b/racket/collects/racket/interactive.rkt @@ -0,0 +1,8 @@ +#lang racket +(when (collection-file-path "main.rkt" "xrepl" + #:fail (lambda _ #f)) + (dynamic-require 'xrepl #f)) + +(let ([init-file (cleanse-path (find-system-path 'init-file))]) + (when (file-exists? init-file) + (load init-file))) diff --git a/racket/src/gracket/grmain.c b/racket/src/gracket/grmain.c index 1fcdcb78ba..0f4c4cbde6 100644 --- a/racket/src/gracket/grmain.c +++ b/racket/src/gracket/grmain.c @@ -20,8 +20,6 @@ static void pre_filter_cmdline_arguments(int *argc, char ***argv); #endif struct Scheme_Env; -static char *get_gr_config_init_filename(struct Scheme_Env *env); -static char *get_gr_init_filename(struct Scheme_Env *env); #ifdef wx_xt # define PRE_FILTER_CMDLINE_ARGUMENTS @@ -36,7 +34,7 @@ static void pre_filter_cmdline_arguments(int *argc, char ***argv); #define UNIX_INIT_FILENAME "~/.gracketrc" #define WINDOWS_INIT_FILENAME "%%HOMEDIRVE%%\\%%HOMEPATH%%\\gracketrc.rktl" #define MACOS9_INIT_FILENAME "PREFERENCES:gracketrc.rktl" -#define GET_INIT_FILENAME get_gr_init_filename +#define INIT_FILENAME_CONF_SYM "gui-interactive-file" #define GET_CONFIG_INIT_FILENAME get_gr_config_init_filename #if WIN32 # define NEED_CONSOLE_PRINTF @@ -65,52 +63,6 @@ static void pre_filter_cmdline_arguments(int *argc, char ***argv); # include "../racket/main.c" -static char *get_gr_config_init_filename(Scheme_Env *env) -{ - char *s, *s2; - int len, i; - - s = get_config_init_filename(env); - if (s) { - len = strlen(s); - for (i = len - 8; i; i--) { - if (!strncmp(s XFORM_OK_PLUS i, "racketrc", 8)) { - s2 = (char *)malloc(len + 2); - memcpy(s2, s, i); - memcpy(s2 + i + 1, s + i, len - i + 1); - s2[i] = 'g'; - s = s2; - break; - } - } - } - - return s; -} - -static char *get_gr_init_filename(Scheme_Env *env) -{ - char *s, *s2; - int len, i; - - s = get_init_filename(env); - if (s) { - len = strlen(s); - for (i = len - 8; i; i--) { - if (!strncmp(s XFORM_OK_PLUS i, "racketrc", 8)) { - s2 = (char *)malloc(len + 2); - memcpy(s2, s, i); - memcpy(s2 + i + 1, s + i, len - i + 1); - s2[i] = 'g'; - s = s2; - break; - } - } - } - - return s; -} - /***********************************************************************/ /* Win32 handling */ /***********************************************************************/ diff --git a/racket/src/pkgs-config.rkt b/racket/src/pkgs-config.rkt index 84549ee756..d956320e23 100644 --- a/racket/src/pkgs-config.rkt +++ b/racket/src/pkgs-config.rkt @@ -71,6 +71,10 @@ 'installation-name "development" 'default-scope - "installation") + "installation" + 'interactive-file + 'racket/interactive + 'gui-interactive-file + 'racket/gui/interactive) o) (newline o)))) diff --git a/racket/src/racket/cmdline.inc b/racket/src/racket/cmdline.inc index ed6a0aa281..6e95808d9d 100644 --- a/racket/src/racket/cmdline.inc +++ b/racket/src/racket/cmdline.inc @@ -669,21 +669,11 @@ static int finish_cmd_line_run(FinishArgs *fa, Repl_Proc repl) #ifndef DONT_LOAD_INIT_FILE if (fa->a->use_repl && !fa->a->no_init_file) { - char *filename; - - filename = GET_CONFIG_INIT_FILENAME(fa->global_env); - if (filename) { - filename = scheme_expand_filename(filename, -1, "startup", NULL, SCHEME_GUARD_FILE_EXISTS); - if (scheme_file_exists(filename)) { - scheme_load(filename); - } - } - - filename = GET_INIT_FILENAME(fa->global_env); - if (filename) { - filename = scheme_expand_filename(filename, -1, "startup", NULL, SCHEME_GUARD_FILE_EXISTS); - if (scheme_file_exists(filename)) - scheme_load(filename); + Scheme_Object *a[2]; + a[0] = get_init_filename(fa->global_env, INIT_FILENAME_CONF_SYM); + if (a[0]) { + a[1] = scheme_false; + scheme_dynamic_require(2, a); } } #endif /* DONT_LOAD_INIT_FILE */ diff --git a/racket/src/racket/main.c b/racket/src/racket/main.c index 6ef5340594..039fa80ee3 100644 --- a/racket/src/racket/main.c +++ b/racket/src/racket/main.c @@ -97,9 +97,15 @@ extern BOOL WINAPI DllMain(HINSTANCE inst, ULONG reason, LPVOID reserved); /*========================================================================*/ #ifndef DONT_LOAD_INIT_FILE -static char * get_config_init_filename(Scheme_Env *env) +/* + * Get the init filename for the system + * * First look to see if /interactive.rkt exists + * * Otherwise check config file for location + */ +static Scheme_Object *get_init_filename(Scheme_Env *env, + char *init_filename_sym) { - Scheme_Object *f, *a[2]; + Scheme_Object *f, *a[2], *build_path; Scheme_Thread * volatile p; mz_jmp_buf * volatile save, newbuf; @@ -108,46 +114,44 @@ static char * get_config_init_filename(Scheme_Env *env) p->error_buf = &newbuf; if(!scheme_setjmp(newbuf)) { + build_path = scheme_builtin_value("build-path"); + + /* First test to see if user init file exists */ + f = scheme_builtin_value("find-system-path"); + a[0] = scheme_intern_symbol("addon-dir"); + a[0] = _scheme_apply(f, 1, a); + a[1] = scheme_make_path("interactive.rkt"); + f = _scheme_apply(build_path, 2, a); + if (SCHEME_PATHP(f)) { + char *filename; + filename = SCHEME_PATH_VAL(f); + filename = scheme_expand_filename(filename, -1, "startup", NULL, SCHEME_GUARD_FILE_EXISTS); + if(scheme_file_exists(f)) { + p->error_buf = save; + return f; + } + } + + /* Failed, next check config.rkt fo system init file */ f = scheme_builtin_value("find-main-config"); a[0] = _scheme_apply(f, 0, NULL); - a[1] = scheme_make_path("racketrc"); - f = scheme_builtin_value("build-path"); - f = _scheme_apply(f, 2, a); + a[1] = scheme_make_path("config.rktd"); + f = _scheme_apply(build_path, 2, a); if (SCHEME_PATHP(f)) { - p->error_buf = save; - return SCHEME_PATH_VAL(f); - } - } - p->error_buf = save; - - return NULL; -} - -static char *get_init_filename(Scheme_Env *env) -{ - Scheme_Object *f; - Scheme_Thread * volatile p; - mz_jmp_buf * volatile save, newbuf; - - p = scheme_get_current_thread(); - save = p->error_buf; - p->error_buf = &newbuf; - - if (!scheme_setjmp(newbuf)) { - f = scheme_builtin_value("find-system-path"); - if (f) { - Scheme_Object *a[1]; - - a[0] = scheme_intern_symbol("init-file"); - - f = _scheme_apply(f, 1, a); - - if (SCHEME_PATHP(f)) { - p->error_buf = save; - return SCHEME_PATH_VAL(f); + Scheme_Object * port; + port = scheme_open_input_file(SCHEME_PATH_VAL(f), "get-init-filename"); + f = scheme_read(port); + scheme_close_input_port(port); + if(SCHEME_HASHTRP(f)) { + f = scheme_hash_tree_get(f, scheme_intern_symbol(init_filename_sym)); + if(f) { + p->error_buf = save; + return f; + } } } } + p->error_buf = save; return NULL; @@ -162,8 +166,7 @@ extern Scheme_Object *scheme_initialize(Scheme_Env *env); # define UNIX_INIT_FILENAME "~/.racketrc" # define WINDOWS_INIT_FILENAME "%%HOMEDIRVE%%\\%%HOMEPATH%%\\racketrc.rktl" # define MACOS9_INIT_FILENAME "PREFERENCES:racketrc.rktl" -# define GET_CONFIG_INIT_FILENAME get_config_init_filename -# define GET_INIT_FILENAME get_init_filename +# define INIT_FILENAME_CONF_SYM "interactive-file" # define PRINTF printf # define PROGRAM "Racket" # define PROGRAM_LC "racket" diff --git a/racket/src/rc-config.rkt b/racket/src/rc-config.rkt deleted file mode 100644 index 89c872ef53..0000000000 --- a/racket/src/rc-config.rkt +++ /dev/null @@ -1,31 +0,0 @@ -#lang racket/base - -(require racket/format - racket/path) - -(define config-dir-path (build-path "racket" "etc")) -(define config-rc-path (build-path config-dir-path "racketrc")) - -(when (file-exists? config-rc-path) - (call-with-input-file* config-rc-path - (lambda (i) - (define r (read i)) - (define xrepl? - (equal? r - '(when (collection-file-path "main.rkt" "xrepl" - #:fail (lambda _ #f)) - (dynamic-require 'xrepl #f)))) - (unless xrepl? - (error 'racketrc - (~a "Global racketrc file exists, but is mismatched.\n" - " possible solution: delete the racketrc file")))))) - -(unless (file-exists? config-rc-path) - (printf "Writing ~a\n" config-rc-path) - (call-with-output-file* - config-rc-path - (lambda (o) - (write '(when (collection-file-path "main.rkt" "xrepl" - #:fail (lambda _ #f)) - (dynamic-require 'xrepl #f)) o) - (newline o))))