2013-08-05 2 views
6

Я новичок в путях «BitBake» и мне интересно, что происходит в следующих ситуациях, при создании проекта с несколькими тысячами пакетов:Как работает битбака для исходного кода?

  1. Вы Bitbake полное изображение (все пакеты), и успешно завершается.
  2. Вы вносите изменение в пакет - некоторый исходный код (назовем его пакетом «X»)
  3. Вы снова взломаете полное изображение.

В шаге 3 «X» перестроен? Нужно ли увеличивать PV и PR для «X», которые нужно перестроить? Что происходит с пакетом «Y», который зависит от «X»? Если X перестроен, также «Y» перестроен?

Я знаю, что если вы модифицируете файл .bb, зависящие пакеты не создаются, потому что отмечена метка времени. Это тот же механизм с изменениями исходного кода? (Это проект QT btw, поэтому в конце битбаке запускается qmake-> make, чтобы сделать компиляцию)

Я использую версию Bitbake 1.13.2.

Благодаря

ответ

0

Bitbake зависит от других систем для компиляции, например, макияж. make имеет возможность обнаруживать необходимость перекомпиляции пакета. Именно так Bitbake занимается перекомпиляцией пакета.

3

Позвольте мне попытаться ответить на этот вопрос. например, у вас есть пакет X, Y и Z. позволяют сказать, что X зависит от Y и Y зависит от пакета Z.

  1. Если вы делаете «-имиджевое имя по умолчанию Bitbake», и вы строите, как нуль (что означает, что ни один из пакетов, требуемых в имени образа по умолчанию, не построен ранее). Итак, bitbake теперь создаёт дерево зависимостей (вы можете увидеть дерево зависимостей на «bitbake -g PACKAGE_NAME».). Первый пакет Z будет построен, а затем Y, а затем, наконец, пакет X.

  2. Теперь скажем, вы внесли некоторые изменения в исходный код X, и вы делаете «битботь X» без увеличения номера PR в файле рецепта X (x.bb), битбак не компилирует изменения еще раз. Я хочу сказать, что битбокс просто проверяет версию пакета и версию (PV и PR). Здесь у нас есть та же версия пакета (PV) и тот же пакет Revision (PR), что битбик не компилирует пакет X еще раз.

Чтобы скомпилировать пакет X после некоторой модификации, вам необходимо применить изменения в качестве исправления. Для этого сделайте патч изменений (например, change.diff или change.patch), добавьте запись в файл X.bb (см., Например, другой файл рецепта). после этого увеличьте номер PR в X.bb.

Теперь «bitbake X» снова построит пакет X.

  1. Здесь, когда мы увеличили PR для X, строится только пакет X. Здесь bitbake проверит зависимые пакеты Y и Z, которые уже построены и имеют тот же PR-номер, он будет использовать уже построенный пакет Y и Z.

  2. Если мы перестроили пакет Y (вы можете очистить пакет bitbake -c очистить имя_пакета, если не хотите увеличивать PR-номер), пакет X не будет построен снова по умолчанию, даже если он зависит от Y ,

Надеюсь, что эта помощь.

Смежные вопросы