Monday, October 26, 2009

Fennec - Multi-locale build automation (patches are up for review)

This blog post is to describe the code changes that I have done in my posted patches on bug 519684 (this means that the following comments do not necessarily mean that they will be how the system will be).

If you don't want to read the whole post, all I propose is:

  1. create single-locale as usual
  2. continue with multi-locale build

For more details: we currently generate a single-locale build for Maemo devices (tar balls and deb files) which is composed of Fennec + XulRunner and as soon as we are done we trigger the localized builds for it. The process can be seen as:

  1. normal scheduler triggers the build
  2. check out code
  3. make -f client.mk
  4. repackage binaries, tests and deb files for Fennec and XulRunner
  5. upload tar balls and deb files
  6. trigger L10n parallelized jobs (the # of them is as many locales are defined in all-locales)

The changes I have made to the MaemoBuildFactory class to generate the multi-locale and the new MultyNightlyL10n can be seen like this (NOTE: The changes to the process are highlighted):

  1. The MultyNightlyL10n scheduler is triggered and passes as a property a list of locales based on the file maemo-locales (which currently contains 7 locales)
  2. check out code
  3. make -f client.mk build (we pass L10NBASEDIR variable)
  4. repackage binaries, tests and deb files for Fennec and XulRunner
  5. upload tar balls and deb files
  6. trigger L10n parallelized jobs (the # of them is as many locales are defined in all-locales)
  7. checkout compare-locales
  8. remove any tar balls or deb files
  9. for each locale defined:
    1. checkout the locale's code
    2. run compare-locale
    3. add the .jar files to the build (currently l10n-merged)
  10. repackage the Fennec tar ball and the deb file (NOTE: I pass the parameter AB_CD=multi instead of AB_CD=en-US)
  11. upload them

This means that beside the single-locale build we will upload the multi-locale build and we will still be able to generate the individual locale repackages based on the single en-US build.

Let me know if you have any questions or suggestions.

Armen




Creative Commons License
This work by Zambrano Gasparnian, Armen is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.