Difference between revisions of "BitBake (dev)"

From Openembedded.org
Jump to: navigation, search
(Fix various URLs to up to date location)
 
(8 intermediate revisions by 5 users 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 =
Line 12: Line 12:
  
 
== "Helloworld" using bb library ==
 
== "Helloworld" using bb library ==
 +
 +
=== Simplest ===
  
 
<pre>
 
<pre>
Line 24: Line 26:
 
</pre>
 
</pre>
  
Same using data class :
+
=== with data module ===
  
 
<pre>
 
<pre>
Line 42: Line 44:
 
bb.note(mystring)
 
bb.note(mystring)
 
</pre>
 
</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>
 +
 +
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.