BitBake (dev): Difference between revisions

From Openembedded.org
Jump to navigation Jump to search
(Fix various URLs to up to date location)
 
(14 intermediate revisions by 5 users not shown)
Line 1: Line 1:
Where are all bitbake hot information !!
''developer homepage''


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


= Helloworld using lib bb =
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 ===


<pre>
<pre>
Line 14: Line 23:


version = bb.__version__
version = bb.__version__
bb.msg.note(1, 0, "Hello from helloworld using lib bb v%s." % ( version ))
bb.note("Hello from helloworld using lib bb v%s." % ( version ))
</pre>
 
=== with data module ===
 
<pre>
#!/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)
</pre>
 
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.
 
<pre>
#!/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()
</pre>
</pre>
You can edit and watch your base using [http://sqlitebrowser.sourceforge.net sqlitebrowser] for example. Should be useful for debug and test purpose. You can look also at fetch module source that use bb.persist_data.
[[Category:Dev]]

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.