]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/commitdiff
arg: fix common_params_parse not accepting negated arg (#17991)
authorXuan-Son Nguyen <redacted>
Sat, 13 Dec 2025 11:53:37 +0000 (12:53 +0100)
committerGitHub <redacted>
Sat, 13 Dec 2025 11:53:37 +0000 (12:53 +0100)
common/arg.cpp
common/arg.h
tests/test-arg-parser.cpp
tools/server/server-models.cpp

index 19f22f883fd488f21109a66cde45bbff069599c4..bb2a6840baac2182ec95a2c6a086f279cf4352ed 100644 (file)
@@ -724,7 +724,7 @@ static void add_rpc_devices(const std::string & servers) {
     }
 }
 
-bool common_params_parse(int argc, char ** argv, llama_example ex, std::map<common_arg, std::string> & out_map) {
+bool common_params_to_map(int argc, char ** argv, llama_example ex, std::map<common_arg, std::string> & out_map) {
     common_params dummy_params;
     common_params_context ctx_arg = common_params_parser_init(dummy_params, ex, nullptr);
 
@@ -733,6 +733,9 @@ bool common_params_parse(int argc, char ** argv, llama_example ex, std::map<comm
         for (const auto & arg : opt.args) {
             arg_to_options[arg] = &opt;
         }
+        for (const auto & arg : opt.args_neg) {
+            arg_to_options[arg] = &opt;
+        }
     }
 
     // TODO @ngxson : find a way to deduplicate this code
index 6db38da488a3ea9999ac6923cd9062a8b153290d..1321595c1a619041a832ad2722ce8b04502828bc 100644 (file)
@@ -115,7 +115,7 @@ bool common_params_parse(int argc, char ** argv, common_params & params, llama_e
 
 // parse input arguments from CLI into a map
 // TODO: support repeated args in the future
-bool common_params_parse(int argc, char ** argv, llama_example ex, std::map<common_arg, std::string> & out_map);
+bool common_params_to_map(int argc, char ** argv, llama_example ex, std::map<common_arg, std::string> & out_map);
 
 // initialize argument parser context - used by test-arg-parser and preset
 common_params_context common_params_parser_init(common_params & params, llama_example ex, void(*print_usage)(int, char **) = nullptr);
index 90750b20c2ae30050b4f890f76f20d816deefb4e..468d325e22cecc1d55201f407637c9b479f440c1 100644 (file)
@@ -72,6 +72,10 @@ int main(void) {
     argv = {"binary_name", "--draft", "123"};
     assert(false == common_params_parse(argv.size(), list_str_to_char(argv).data(), params, LLAMA_EXAMPLE_EMBEDDING));
 
+    // negated arg
+    argv = {"binary_name", "--no-mmap"};
+    assert(false == common_params_parse(argv.size(), list_str_to_char(argv).data(), params, LLAMA_EXAMPLE_COMMON));
+
 
     printf("test-arg-parser: test valid usage\n\n");
 
index 6c618a673c90893a8fa4644310a24a9347eb9bac..6be5ffbdf0b7a27a40915af41808a1ba7611e9b6 100644 (file)
@@ -171,7 +171,7 @@ server_presets::server_presets(int argc, char ** argv, common_params & base_para
     }
 
     // read base args from router's argv
-    common_params_parse(argc, argv, LLAMA_EXAMPLE_SERVER, base_args);
+    common_params_to_map(argc, argv, LLAMA_EXAMPLE_SERVER, base_args);
 
     // remove any router-controlled args from base_args
     for (const auto & cargs : control_args) {