Почему Yocto не генерирует тарбол, когда установлен BB_GENERATE_MIRROR_TARBALLS? - PullRequest
1 голос
/ 21 января 2020

Я только что добавил новый пакет в свою сборку Yocto (этот: Как правильно собрать приложения gpiod из Yocto? ), и он работает нормально, пока я подключен к inte rnet. Проблема в том, что я сейчас пытаюсь сделать тарбол, необходимый для поддержки автономной сборки.

Немного о настройке: я запускаю Yocto Zeus. Я работаю на виртуальной машине (Ubuntu 18.04), подключенной к inte rnet, но наши агенты сборки не находятся в сети, поэтому мы размещаем зеркало. Я установил это зеркало в / mnt / download-mirror. Я пытаюсь создать tarball, необходимый для зеркала на моей виртуальной машине.

Это конфигурация Yocto, которую я использую:

BB_NO_NETWORK = "0"
INHERIT += "own-mirrors"
SOURCE_MIRROR_URL = "file:///mnt/download-mirror"
UNINATIVE_URL = "${SOURCE_MIRROR_URL}/uninative/2.7/"
BB_GENERATE_MIRROR_TARBALLS = "1"
SSTATE_MIRRORS = "file://.* file:///mnt/sstate-mirror/PATH"

Но когда я запускаю Bitbake (я использую команду bitbake --runall fetch) это завершается, но я не получаю tarball для нового пакета, который я добавил. Я искал этот tarball в папке poky-downloads (в ​​папке, которую я обычно rsyn c на зеркальный сервер), но его там нет.

Мне не хватает конфигурации или чего-то еще? У меня есть все конфигурации, отмеченные в https://wiki.yoctoproject.org/wiki/How_do_I#Q: _ How_do_I_create_my_own_source_download_mirror_.3f

EDIT - я также пытался установить DL_DIR ?= "/home/gen-ccm-root/Downloads" в моем файле настроек, но моя команда все равно сказала, что делать нечего , так что я думаю, что проблема может быть моей битовой командой. Я также пытался bitbake -c mi-dev --runall="fetch", где mi-dev - моя цель (согласно 7.23.2 в https://www.yoctoproject.org/docs/current/mega-manual/mega-manual.html#setting -up -ффективных-зеркалах ), но безрезультатно.

Ответы [ 2 ]

1 голос
/ 22 января 2020

Надеюсь, кто-то может отредактировать это и добавить больше информации о том, почему, но мне удалось получить его для создания архива.

  1. Очистил мою виртуальную машину, что повлекло за собой удаление sstate-cache и poky -downloads.
  2. Измените local.conf, чтобы в конце было указано следующее (я думаю, что DL_DIR является необязательным):
    BB_NO_NETWORK = "0"
    DL_DIR ="/home/gen-ccm-root/Downloads"
    BB_GENERATE_MIRROR_TARBALLS = "1"
Команда запуска: source oe-init-build-env build-dev Команда запуска: bitbake mi-dev --runonly=fetch Смонтируйте сетевой ресурс, содержащий зеркало для загрузки. Скопируйте файлы в: sudo rsync -av --ignore-existing --exclude=*.done --exclude=git2 --exclude=svn /home/gen-ccm-root/Downloads/ /mnt/download-mirror/

Я буду обновлять это по мере того, как узнаю больше (я все еще своего рода Yocto Noob), но проблема, по-видимому, связана с комбинацией Yocto, не повторяющей работу после изменения конфигурации, и фактом что sstate-кеш все еще был доступен и сказал, что все было там.

0 голосов
/ 23 января 2020

Подождите немного, с BB_NO_NETWORK он не должен go извлекать и извлекать вещи из inte rnet.

Если я правильно понимаю, вы хотите локальное зеркало источника для некоторых других машин сборки.

Одним из способов было бы поделиться вашим DL_DIR одной машины, которая видит inte rnet.

Другим способом было бы использовать исходное зеркало, для которого вам нужен BB_GENERATE_MIRROR_TARBALLS = "1 "сверху.

Я использую веб-сервер для экспорта моего DL_DIR (который также содержит tar-архивы) и на машинах, которые должны его использовать, например, в local.conf или site.conf:

INHERIT += "own-mirrors"
SOURCE_MIRROR_URL = "http://mirror/source_mirror_zeus"

Так же, как подсказку, помимо источников, вы также можете экспортировать SSTATE через SSTATE_MIRRORS, что значительно сократит время сборки.

...