[poky] RFC: design of network based PR service

Lu, Lianhao lianhao.lu at intel.com
Thu Apr 28 00:08:03 PDT 2011


Hi Guys,

Here is the design of network based PR service, please help to review and 
give you comment. Thanks a lot!

By changing the BB_SIGNATURE_HANDLER from "basic" to "basichash", the 
task checksum will be in the stamp file, so this implies the end of PR bumps 
since whenever a recipe change happens, the checksum of the appropriate 
tasks will change so everything depends on that tasks will automatically got 
rebuilt. (The checksum mechanism was introduced here at https://lists.yoctoproject.org/pipermail/yocto/2011-March/001157.html).

But there is one piece of building block missing there. Because the package 
feeds needs the PR bumps because some relevant fields in the package file(i.e. 
Version field in .ipk and .deb file, Release field in .rpm file) need it so the 
generated package feeds can be used to upgrade/install new packages in the 
user's linux distribution. So RP proposed this network based PR service at 
https://lists.yoctoproject.org/pipermail/poky/2011-January/002123.html. 

Each embedded linux distribution entity using Yocto to build their distributions 
should have a single network based PR service. Multiple build sources could send 
the tuple (PN, task checksum) to this network based PR service. If the PR service 
finds the corresponding (PN, task checksum) in its database, it will return the PR 
values to the client. If not, it will bump the PR for that PN and return the new value 
to the client. The returned value will only goes into the generated package files.

The PR network service will be a separate process other than bitbake, using the 
XMLPRC to communicate with the client(i.e. bitbake process) and sqlite3 as the 
backend database. The table definition would be something like
(
  PN TEXT,
  CheckSum TEXT PRIMARY KEY,
  PR INT
)

Because different type of package files are generated in different tasks, (e.g.
do_package_write_ipk, do_package_write_rpm), we will use the task checksum 
of do_package to ask for PR value, so all the package files will have the same PR value.

To be backward compatible, if the PR value is already set in the recipe, the final PR value 
that goes into the package files will be "PR in recipe.PR returned by the service".

========================
Lianhao Lu
OTC SSG, Intel APAC R&D Ltd.
86-21-61167139








More information about the poky mailing list