BitBake (dev): Difference between revisions

From Openembedded.org
Jump to navigation Jump to search
(UNSPAM: Undo revision 2357 by 77.47.162.103 (Talk))
(Fix various URLs to up to date location)
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
''developer homepage''
''developer homepage''


* First , RTFM ;-) : http://bitbake.berlios.de/manual/
* First , RTFM ;-) (doc directory in the bitbake source)
* Don't forget mailinglist :
* Don't forget mailinglist :
** https://lists.berlios.de/pipermail/bitbake-dev/
** http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/bitbake-devel
** https://lists.berlios.de/pipermail/bitbake-commit/
 
* Best documentation for source is via python documentation system.
Source tree is in git at http://git.openembedded.org/bitbake/


= Tutorial =
= Tutorial =

Latest revision as of 21:30, 8 February 2012

developer homepage

Source tree is in git at http://git.openembedded.org/bitbake/

Tutorial

This tutorial focus bitbake developement, not bbclass or openembedded developement that is documented elsewhere.

"Helloworld" using bb library

Simplest

#!/usr/bin/env python
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-

import bb

version = bb.__version__
bb.note("Hello from helloworld using lib bb v%s." % ( version ))

with data module

#!/usr/bin/env python
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-

import os , bb
from bb import data

hello = ("Hello from helloworld using lib bb v%s." % ( bb.__version__ ))

d = data.init()
data.setVar('HELLO_MSG', hello, d)

mystring = data.getVar('HELLO_MSG', d, 1)
bb.note(mystring)

data module is well documented because it uses doctest. Enjoy to play with the different methods.

with persist_data module

Now you want persistant data to exchange data between threads/tasks. This can be done using bb.persist_data module that uses sqlite via pyslite2.

#!/usr/bin/env python
# ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-

import bb, os, sys
from bb import data, persist_data, fetch

__version__ = "0.0.1"
    
def main():
    """
    The main Method
    """
    
    # persist_data module need debug_level to be set
    bb.msg.set_debug_level(0)  
    
    # init a data with PERSISTENT_DIR to set where the data will be saved
    d = data.init()
    data.setVar('PERSISTENT_DIR', os.getcwd(), d)
    
    # create persist_data base in bb_persist_data.sqlite3
    pd = persist_data.PersistData(d)
    
    # create a sql table
    pd.addDomain("MYBASE")
    
    # add a data in this table
    pd.setValue( "MYBASE", "TOTO", "hello world!")
    
    # print it
    val = pd.getValue ( "MYBASE", "TOTO")
    print val
    
if __name__ == '__main__':
    main()

You can edit and watch your base using sqlitebrowser for example. Should be useful for debug and test purpose. You can look also at fetch module source that use bb.persist_data.