[njs] Allowing to build njs util without interactive shell support.

Dmitry Volyntsev xeioex at nginx.com
Mon Nov 29 15:30:11 UTC 2021


details:   https://hg.nginx.org/njs/rev/144e430d0ed5
branches:  
changeset: 1752:144e430d0ed5
user:      Dmitry Volyntsev <xeioex at nginx.com>
date:      Mon Nov 29 14:41:09 2021 +0000
description:
Allowing to build njs util without interactive shell support.

diffstat:

 auto/make       |  21 ++-------------------
 auto/readline   |   6 ++----
 auto/summary    |   5 +----
 src/njs_shell.c |  24 +++++++++++++++++++-----
 4 files changed, 24 insertions(+), 32 deletions(-)

diffs (156 lines):

diff -r 94e5a03702f9 -r 144e430d0ed5 auto/make
--- a/auto/make	Mon Nov 29 14:05:33 2021 +0000
+++ b/auto/make	Mon Nov 29 14:41:09 2021 +0000
@@ -26,7 +26,7 @@ NJS_TYPES_VER = \$(NJS_VER)
 
 NPM = npm
 
-default: $NJS_DEFAULT_TARGET
+default: njs
 
 NJS_LIB_INCS = -Isrc -I$NJS_BUILD_DIR
 
@@ -69,8 +69,6 @@ done
 
 # njs cli.
 
-if [ $NJS_HAVE_READLINE = YES ]; then
-
 cat << END >> $NJS_MAKEFILE
 
 $NJS_BUILD_DIR/njs: \\
@@ -84,21 +82,6 @@ cat << END >> $NJS_MAKEFILE
 
 END
 
-else
-
-cat << END >> $NJS_MAKEFILE
-
-$NJS_BUILD_DIR/njs:
-	@echo
-	@echo " error: to make njs CLI \"readline\" library is required."
-	@echo
-	@exit 1
-
-END
-
-fi
-
-
 # njs fuzzer.
 
 cat << END >> $NJS_MAKEFILE
@@ -209,7 +192,7 @@ cat << END >> $NJS_MAKEFILE
 	@exit 1
 
 all: $NJS_BUILD_DIR/njs_auto_config.h \\
-	$NJS_DEFAULT_TARGET ts test lib_test benchmark
+	njs ts test lib_test benchmark
 
 njs: $NJS_BUILD_DIR/njs_auto_config.h $NJS_BUILD_DIR/njs
 njs_fuzzer: $NJS_BUILD_DIR/njs_auto_config.h \\
diff -r 94e5a03702f9 -r 144e430d0ed5 auto/readline
--- a/auto/readline	Mon Nov 29 14:05:33 2021 +0000
+++ b/auto/readline	Mon Nov 29 14:41:09 2021 +0000
@@ -68,14 +68,12 @@ if [ $njs_found = no ]; then
     . auto/feature
 fi
 
-NJS_DEFAULT_TARGET=libnjs
-
 if [ $njs_found = yes ]; then
     NJS_HAVE_READLINE=YES
+    njs_define=NJS_HAVE_READLINE . auto/define
     NJS_READLINE_LIB=$njs_feature_libs
-    NJS_DEFAULT_TARGET="$NJS_DEFAULT_TARGET njs"
 
 else
     NJS_HAVE_READLINE=NO
-    echo " - building interactive shell is not possible"
+    echo " - njs CLI is built without interactive shell support"
 fi
diff -r 94e5a03702f9 -r 144e430d0ed5 auto/summary
--- a/auto/summary	Mon Nov 29 14:05:33 2021 +0000
+++ b/auto/summary	Mon Nov 29 14:41:09 2021 +0000
@@ -21,9 +21,6 @@ fi
 
 echo
 echo " njs build dir: $NJS_BUILD_DIR"
-
-if [ $NJS_HAVE_READLINE = YES ]; then
-  echo " njs CLI: $NJS_BUILD_DIR/njs"
-fi
+echo " njs CLI: $NJS_BUILD_DIR/njs"
 
 echo
diff -r 94e5a03702f9 -r 144e430d0ed5 src/njs_shell.c
--- a/src/njs_shell.c	Mon Nov 29 14:05:33 2021 +0000
+++ b/src/njs_shell.c	Mon Nov 29 14:41:09 2021 +0000
@@ -7,7 +7,7 @@
 
 #include <njs_main.h>
 
-#ifndef NJS_FUZZER_TARGET
+#if (!defined NJS_FUZZER_TARGET && defined NJS_HAVE_READLINE)
 
 #include <locale.h>
 #if (NJS_HAVE_EDITLINE)
@@ -101,10 +101,13 @@ static njs_int_t njs_process_script(njs_
 static njs_int_t njs_options_parse(njs_opts_t *opts, int argc, char **argv);
 static void njs_options_free(njs_opts_t *opts);
 static njs_int_t njs_process_file(njs_opts_t *opts, njs_vm_opt_t *vm_options);
+
+#ifdef NJS_HAVE_READLINE
 static njs_int_t njs_interactive_shell(njs_opts_t *opts,
     njs_vm_opt_t *vm_options);
 static njs_int_t njs_editline_init(void);
 static char *njs_completion_generator(const char *text, int state);
+#endif
 
 #endif
 
@@ -282,10 +285,16 @@ main(int argc, char **argv)
     vm_options.ast = opts.ast;
     vm_options.unhandled_rejection = opts.unhandled_rejection;
 
+#ifdef NJS_HAVE_READLINE
+
     if (opts.interactive) {
         ret = njs_interactive_shell(&opts, &vm_options);
 
-    } else if (opts.command) {
+    } else
+
+#endif
+
+    if (opts.command) {
         vm = njs_create_vm(&opts, &vm_options);
         if (vm != NULL) {
             command.start = (u_char *) opts.command;
@@ -314,9 +323,14 @@ njs_options_parse(njs_opts_t *opts, int 
     njs_uint_t  n;
 
     static const char  help[] =
-        "Interactive njs shell.\n"
+        "njs [options] [-c string | script.js | -] [script args]\n"
         "\n"
-        "njs [options] [-c string | script.js | -] [script args]"
+        "Interactive shell: "
+#ifdef NJS_HAVE_READLINE
+        "enabled\n"
+#else
+        "disabled\n"
+#endif
         "\n"
         "Options:\n"
         "  -a                print AST.\n"
@@ -914,7 +928,7 @@ njs_process_script(njs_opts_t *opts, njs
 }
 
 
-#ifndef NJS_FUZZER_TARGET
+#if (!defined NJS_FUZZER_TARGET && defined NJS_HAVE_READLINE)
 
 static njs_int_t
 njs_interactive_shell(njs_opts_t *opts, njs_vm_opt_t *vm_options)


More information about the nginx-devel mailing list