comparison README.txt @ 210:6606238e2b07

finish first-draft documentation, i think
author Jeff Hammel <jhammel@mozilla.com>
date Fri, 04 Feb 2011 17:40:45 -0800
parents 98e3594f2928
children ef7d67448344
comparison
equal deleted inserted replaced
209:98e3594f2928 210:6606238e2b07
235 ``project`` is the name of the project and ``output``, if specified, 235 ``project`` is the name of the project and ``output``, if specified,
236 is the path of the file to create. If output is not specified, it 236 is the path of the file to create. If output is not specified, it
237 will find its way to a directory named for the project under 237 will find its way to a directory named for the project under
238 ``autobot.projects``. 238 ``autobot.projects``.
239 239
240 Several factories (``BuildFactory`` descendents) are in
241 ``autobot.process`` to make building a new project easier:
242
243 * ``SourceFactory``: as described above, this processes the sources
244 and gives a method (``checkout()``) for downloading them.
245 ``master.cfg`` looks in each factory and gleems its needed
246 repository from its ``sources`` attribute (if any) in the internal
247 storage mechanism of ``SourceFactory`` and sets up schedulers
248 accordingly.
249
250 * ``VirtualenvFactory``: inherits from ``SourceFactory``. creates a
251 python virtualenv and provides build properties ``%(virtualenv)s``,
252 ``%(python)s``, and ``%(scripts)s`` (location of ``bin`` on unix or
253 ``Scripts`` on windows with respect to the virtualenv. It also has
254 a ``findScript()`` method which accepts the unix-style script name
255 (no extension) and returns the path to the script on the platform.
256
257 * ``PythonSourceFactory``: inherits from ``VirtualenvFactory``. It
258 treats *all* (for now, can be changed) sources as sources of python
259 packages. In addition to checking them out in
260 ``%(virtualenv)s/src``, it will also install them (using
261 ``%(python)s setup.py install``)
262
263 * ``FirefoxDownloaderFactory``: downloads and unpacks a Firefox
264 bundle, using
265 `GetLatestTinderbox <http://hg.mozilla.org/automation/getlatest-tinderbox>`_ .
266 It also provides three properties: ``%(firefox_url)s``,
267 ``%(firefox_bundle)s``, and ``%(firefox)s`` -- the last, and most
268 interesting, being the absolute path to the Firefox executable. You
269 (currently) *must* pass a ``platform`` argument with
270 ``platform['os']`` set to "linux", "win", or "mac" in order for
271 ``FirefoxDownloaderFactory`` to figure out what to do with the thing
272 that it downloads (though see TODO, in the future it should/could
273 use MozInfo or guess the OS from the bundle extension...maybe).
274 Currently, mac is *NOT* supported, though its on my list of things
275 to do (I'd love advice/help!).
276
277 See the ``autobot.process.factory`` file for more details. These
278 classes are intended as mix-ins (not my favorite pattern, but it seems
279 to basically be what buildbot wants you to do). More work needs to be
280 done to provide for the breadth of use-cases, but what exists now is
281 considered a "good start" versus a "final form". More factories may
282 be added per necessity.
283
240 284
241 Is your autobot being feisty? 285 Is your autobot being feisty?
242 ----------------------------- 286 -----------------------------
243 287
244 Let me know! I'd like to make autobot a solution that works for all 288 Let me know! I'd like to make autobot a solution that works for all
250 TODO 294 TODO
251 ---- 295 ----
252 296
253 No software of any size is ever finished. Here are a few things I 297 No software of any size is ever finished. Here are a few things I
254 would like to add: 298 would like to add:
299
300 * get FirefoxDownloaderFactory working on Mac with .dmg files!
255 301
256 * singular checkout of repos on slaves: the slaves should have a 302 * singular checkout of repos on slaves: the slaves should have a
257 singular master repo that is checked out once for each repo URL, 303 singular master repo that is checked out once for each repo URL,
258 branch pair. It is then updated as the slaves need and (e.g.) 304 branch pair. It is then updated as the slaves need and (e.g.)
259 cloned from there. This should effectively minimize fetch time. 305 cloned from there. This should effectively minimize fetch time.