Создайте файл и разверните его в образ, внутри рецепта Yocto - PullRequest
0 голосов
/ 03 октября 2019

Мне нужно сгенерировать какой-то манифест, основываясь на содержимом рецепта. Этот файл также необходимо развернуть в образе.

Чтобы сгенерировать файл, я видел во многих bbclasses , что функции кода Python используются аналогичным образом, например:

      python do_create_manifest () {
          [...]
          filename = d.expand("${D}${LOC}/${MANIFEST_NAME}")
          [...]
          with open (filename,'w') as manifest_file:
             json.dump(manifest_dict, manifest_file, indent=True)
          os.chmod(filename, 0o644)
      }
  • Есть ли другой предпочтительный способ?

Файл создается после добавления зависимости задачи, однако, когда такой файл упакован, хост-пользователь -contacted предупреждение возникает в файле.

Несмотря на то, что я видел во многих рецептах использование:

        chown -R root:root ${D}${...}/${...}

Это не помогает, так как chown должен быть запущен пользователем root, иbitbake запускается текущим пользователем:

Log data follows:
| DEBUG: Executing shell function do_uncontaminate
| chown: changing ownership of '/mnt/thud/build-r0w/[...]/manifest.json': Operation not permitted
| WARNING: exit code 1 from a shell command.
  • Как бы исправить в этом случае предупреждение загрязненное пользователем хоста в этом случае?

Примечание: Я знаю, что это предотвратит появление предупреждения, но не решит проблему.

    INSANE_SKIP_${PN} = "host-user-contaminated"

1 Ответ

1 голос
/ 03 октября 2019

Вы не указываете, где этот файл создается, какой путь filename содержит, но из-за ошибки, я подозреваю, вы создаете его непосредственно под ${D} где-то.

Если вы вместо этого создаете файл манифестанапример, ${B}, а затем во время обычного do_install вы устанавливаете его, например, install -Dm0644 ${B}/my_manifest ${D}/dest/path/my_manifest, проблема владения будет решаться так же, как и с любым другим файлом, устанавливаемым рецептом.

Просто убедитесь, чтозадача do_create_manifest запускается до do_install.

...