Pktgen не удалось загрузить сценарий Lua — пользовательское состояние для CLI не установлено для Lua

Запуск Pktgen со сценариями Lua приводит к ошибке User State for CLI not set for Lua.

Команда, которую я запускаю:

sudo -E ./usr/local/bin/pktgen --no-telemetry -l 4,6,8,10 -n 4 -a 0000:03:02.0 -m 1024 -- -T -P -m [6:8].0 -f test/hello-world.lua

Что дает следующий результат:

Я установил переменные среды RTE_SDK=/root/Program/dpdk и RTE_TARGET=x86_64-native-linux-gcc.

Сбой происходит от cli.c (ссылка на код):

/**
* Load and execute a command file or Lua script file.
*
*/
int
cli_execute_cmdfile(const char *filename)
{
  if (filename == NULL)
        return 0;

  gb_reset_buf(this_cli->gb);

  if (strstr(filename, ".lua") || strstr(filename, ".LUA") ) {
      if (!this_cli->user_state) {
          cli_printf(">>> User State for CLI not set for Lua\n");
          return -1;
      }
      if (lua_dofile) {
          /* Execute the Lua script file. */
          if (lua_dofile(this_cli->user_state, filename) != 0)
              return -1;
      } else
          cli_printf(">>> Lua is not enabled in configuration!\n");
  } else {
      FILE    *fd;
      char buff[256];

      fd = fopen(filename, "r");
      if (fd == NULL)
          return -1;

      /* Read and feed the lines to the cmdline parser. */
      while (fgets(buff, sizeof(buff), fd))
          cli_input(buff, strlen(buff));

      fclose(fd);
  }
  return 0;
}

Так вроде бы this_cli->user_state не ставится, а как его поставить?

Я просмотрел документацию для CLI, но там не упоминается настройка какого-либо пользовательского состояния из того, что я вижу.

Обновлять:

Предлагаемое решение кажется шагом в правильном направлении, поскольку теперь оно может найти библиотеку Lua, но я все еще получаю ту же ошибку после запуска meson -Denable_lua=true build, ninja -C build, а затем ninja -C build install, за которым следует sudo -E ./usr/local/bin/pktgen --no-telemetry -l 4,6,8,10 -n 4 -a 0000:03:02.0 -m 1024 -- -T -P -m [6:8].0 -f test/hello-world.lua

Возможно, это как-то связано с Run-time dependency lua found: NO?

При запуске make install в lua-5.4.4 возвращается:

Как ты получил бинарник?

shingo 17.02.2023 13:01
user_state установлен в строке 379 pktgen-main.c
ESkri 17.02.2023 14:16
Laravel с Turbo JS
Laravel с Turbo JS
Turbo - это библиотека JavaScript для упрощения создания быстрых и высокоинтерактивных веб-приложений. Она работает с помощью техники под названием...
Типы ввода HTML: Лучшие практики и советы
Типы ввода HTML: Лучшие практики и советы
HTML, или HyperText Markup Language , является стандартным языком разметки, используемым для создания веб-страниц. Типы ввода HTML - это различные...
Аутсорсинг разработки PHP для индивидуальных веб-решений
Аутсорсинг разработки PHP для индивидуальных веб-решений
Услуги PHP-разработки могут быть экономически эффективным решением для компаний, которые ищут высококачественные услуги веб-разработки по доступным...
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
Слишком много useState? Давайте useReducer!
Слишком много useState? Давайте useReducer!
Современный фронтенд похож на старую добрую веб-разработку, но с одной загвоздкой: страница в браузере так же сложна, как и бэкенд.
Узнайте, как использовать теги <ul> и <li> для создания неупорядоченных списков в HTML
Узнайте, как использовать теги <ul> и <li> для создания неупорядоченных списков в HTML
HTML предоставляет множество тегов для структурирования и организации содержимого веб-страницы. Одним из наиболее часто используемых тегов для...
0
2
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

User_state установлен в pktgen-main.c, но в разделе #ifdef LUA_ENABLED.

Глядя на meson_options.txt, который находится в базовом каталоге извлечения pktgen, он содержит:

option('enable_lua', type: 'boolean', value: false, description: 'Enable Lua support')

Это означает, что вы должны включить поддержку Lua при сборке (после установки зависимостей, как показано ниже):

meson -Denable_lua=true build

Для этого потребуется еще несколько зависимостей, поэтому вам, возможно, придется их установить, например. в Убунте:

sudo apt-get install cmake

А затем установка Lua — мне пришлось установить его из исходников в соответствии с инструкциями, потому что установка его с помощью диспетчера пакетов Ubuntu apt не дала мне необходимой библиотеки:

curl -R -O http://www.lua.org/ftp/lua-5.4.4.tar.gz
tar zxf lua-5.4.4.tar.gz
cd lua-5.4.4
make all test
sudo make install

Спасибо за ваш отзыв! Кажется, он все еще работает неправильно. Пожалуйста, смотрите раздел обновления в вопросе.

Agent smith 2.0 21.02.2023 11:33

Решение состояло в том, чтобы запустить make clean buildlua вместо использования meson и ninja

Agent smith 2.0 22.02.2023 13:09

Другие вопросы по теме