gnome.gtk-do c () выдает ошибку отказа в разрешении в Yocto (do_install) - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь сгенерировать html документов, используя сборку мезонов. Для этого я использовал метод gnome.gtkdo c () (система сборки мезонов).

Ниже приведен мой файл meson.build

project('mydoc', 'c',
  version: '0.1.0')

gnome = import('gnome')

glib_prefix = dependency('glib-2.0').get_pkgconfig_variable('prefix')
glib_docpath = join_paths(glib_prefix, 'share', 'gtk-doc', 'html')
docpath = join_paths(get_option('datadir'), 'gtk-doc', 'html')

content_files = [
  'docbook-mydoc.xml',
]
gnome.gtkdoc('mydoc',
  main_xml : 'main-doc.xml',
  src_dir : [
      join_paths(meson.source_root())
   ],
  fixxref_args: [
      '--html-dir=' + (gnome.gtkdoc_html_dir(meson.project_name())),
      '--extra-dir=@0@'.format(join_paths(glib_docpath, 'glib')),
      '--extra-dir=@0@'.format(join_paths(glib_docpath, 'gobject')),
      '--extra-dir=@0@'.format(join_paths(glib_docpath, 'gio')),
    ],
  content_files: content_files,
  install : true,
  install_dir: join_paths(meson.source_root(), 'doc')
)

Выше meson.build работает отлично и генерирует html страниц. У меня проблема при запуске выше meson.build в Yocto. Это дает мне ошибку «Отказано в доступе» во время операции do_install .

ОШИБКА: ['gtkdo c -mk html', '--path = / home / user / Yocto / наращивание Zeus / TMP / работа / cortexa7t2hf-неон-FSL c - linux -gnueabi / mydoc / 1.0.0-r0 / мерзавец /: / Главная / пользователь / Yocto / наращивание Zeus / TMP / работа /cortexa7t2hf-neon-fslc-linux-gnueabi/mydoc/1.0.0-r0/build/ ',' mydo c ',' ../main-doc.xml ' ] ошибка со статусом 1

Трассировка (последний последний вызов):

Файл "/ home / user / yocto / build-zeus / tmp / work / cortexa7t2hf-neon-fsl c - linux -gnueabi / mydoc / 1.0.0-r0 / recipe-sys root -неатив / usr / bin / gtkdo c -mk html ", строка 51, в sys.exit (mk html .run (параметры)) Файл "/home/user/yocto/build-zeus/tmp/work/cortexa7t2hf-neon-fslc-linux-gnueabi/mydoc/1.0.0-r0/recipe-sys root -native / usr / share / gtk-doc / python / gtkdoc / mk html .py ", строка 93, в тихом режиме] + оставшиеся_args + [gtkdocdir + '/gtk-doc.xsl' , документ])

Файл "/ home / user / yocto / build-zeus / tmp / work / cortexa7t2hf-neon-fsl c - linux -gnueabi / mydoc / 1.0.0-r0 / recipe-sys root -native / usr / share / gtk-doc / python / gtkdoc / mk html .py ", строка 42, в run_xsltproc return subprocess.call (команда + аргументы)

Файл "/home/user/yocto/build-zeus/tmp/work/cortexa7t2hf-neon-fslc-linux-gnueabi/mydoc/1.0. 0-r0 / recipe-sys root -native / usr / lib / python3 .7 / subprocess.py ", строка 339, при вызове Popen (* popenargs, ** kwargs) как p:

Файл "/home/user/yocto/build-zeus/tmp/work/cortexa7t2hf-neon-fslc-linux-gnueabi/mydoc/1.0.0-r0/recipe-sysroot-native /usr/lib/python3.7/subprocess.py ", строка 800, в init restore_signals, start_new_session)

File" / home / user / yocto / build-zeus / TMP / работа / cortexa7t2hf-неон-FSL c - linux -gnueabi / mydoc / 1.0.0-r0 / рецепт-SYS root -native / USR / Lib / python3 0,7 / subprocess.py» , строка 1551, в _execute_child поднять child_exception_type (errno_num, err_msg, err_filename) PermissionError: [Errno 13] Отказано в разрешении: ''

Я не уверен, почему его разрешение запрещается ошибка Любая помощь будет оценена.

1 Ответ

0 голосов
/ 09 апреля 2020

Немного подозрительно, что вы пытаетесь установить в каталог root с исходным кодом

  install_dir: join_paths(meson.source_root(), 'doc')

Обычно это просто имя каталога относительно gtk-do c html dir (gnome. gtkdoc_html_dir ()) или не задан вообще - тогда каталог является именем модуля. Поэтому попробуйте просто удалить его ...

Обновление Возможно, вам не хватает префикса для проекта html dir (для - html -dir ) и его должно выглядеть так:

'--html-dir=' + join_paths(get_option('prefix'), gnome.gtkdoc_html_dir(meson.project_name()),

Примечание . И вместо генерации пути gtk do c, было бы более надежно использовать вышеупомянутую функцию:

'--extra-dir=' + join_paths(glib_prefix, gnome.gtkdoc_html_dir('glib')),
 ...
...