Update TODO
[bitbake.git] / doc / TODO
1 TODO:
2
3 [x] oe package
4         [x] Define CONFIG_SITE to point to a "SYS" specific config.site.
5
6         [ ] .oe needs access to PROVIDES information that oemake is
7             currently populating.  Move the default set of the .oe
8             provides into the .oe parser rather than oemake.
9         [ ] Remove duplicated implementations, and convert everyone to the new
10             data and parse methods.
11         [ ] API Sanity Audit.
12         [ ] Comment/Docs Audit.
13         [.] Implement API testing using doctest.
14         [ ] Alter 'export' handling, to support exporting a var without
15             defining the variable.
16                 format:
17                 export [VAR[=value] ...]
18         [ ] Possibility: alternate data formats for metadata (i.e. arrays).
19                 i.e. THIS[1] = "that"
20                      THIS["heh"] = "that"
21         [ ] More complex variable setting/conditionals
22                 Options:
23                 [ ] Add support for 'anonymous' OE functions in .oe{,class} files.
24                     These functions are to be executed immediately at parse time,
25                     thereby giving one the ability to exert more control over the set
26                     of variables.
27                 [ ] if/elseif/else/endif blocks for conditional variable setting
28         [ ] Split oemake's knowledge of AVAILABLE OEFILES from its
29             knowledge of which packages are to be built.
30                 [ ] Define structure and data exchange format(s) for
31                     upstream OE metadata repositories.
32                     Possibly follow an 'apt-get' style.  Cache the
33                     metadata locally, with a command to update.
34         [ ] Make Fetch use md5 hashing to indicate per-file download success.
35             Or in the case of downloaded directories (cvs/svn/bk), simply a 
36             success stamp on a per file basis.
37         [ ] Add "noinherit", as a means of removing an item from the
38             list of classes to inherit.
39         [ ] Need a way to specify that you cannot build a given .oe,
40             from the .oe.  Along the lines of portage's ability for
41             an ebuild to specify that it isnt buildable for a given
42             architecture or set of architectures.
43         [ ] Write helper functions ala ebuild's dobin/dodoc/etc and debian's dh_*.
44                 [ ] Note, if we do this using actual commands within the .oe file
45                     as opposed to shell helpers, the buildsystem is then aware
46                     of what files are libs, what are includes, etc, and we could
47                     then do a sane automatic population of staging based on that
48                     information. 
49         [ ] Metadata exchange through multiple oebuild/oemake/oespawn executions
50             (i.e. to set qpedir/qtdir for all builds from the qt/opie/qtopia .oe's)
51         [ ] Split staging by package
52                 [ ] When a package populates staging, create links for every item
53                     that this .oe Provides.
54                         [ ] Wouldnt be a bad idea to make use of update-alternatives
55                             to manage buildroot's staging links, thereby allowing us
56                             to deal with multiple provides sanely (priority).
57                 [ ] More complex set of FLAGS vars, to account for the various DEPENDS.
58                 [ ] Example:
59                         ipkg depends on virtual/libc, puts staging_dir/libc in flags.
60                         glibc staging creates symlinks for every atom it PROVIDES,
61                         and installs its staging files into the glibc-ver-rev dir.
62         [ ] Revamp category handling
63         
64 [ ] oebuild
65         [ ] Implement and test check_md5, taking nostamp into account.
66         [ ] Add '--undo'/'-u' cmdline opt that calls the 'undo' task
67             for the supplied task.
68         [ ] Add '--rebuild'/'-r' cmdline opt that calls the 'undo' task
69             for the entire upward path in the digraph, then builds that task.
70             (same thing done when the md5 changes on an affected var in
71              check_md5)
72
73 [.] oemake
74         [ ] Check for recursive dependency
75         [ ] Deal with multiple provides
76
77 [.] oemaked
78         [ ] Monitor the stamps for a given .oe file as well, to ensure
79             changes in build state as well as changes to build metadata result
80             in a rebuild.
81
82 [ ] oerootfs
83 [ ] oeimage
84
85 [.] packages
86         [.] transition packages from OpenZaurus buildroot
87                 [.] busybox
88                         [x] core
89                         [ ] symlinks
90                         [ ] device specifics (patches, etc)
91                 [x] ncurses
92                         [x] core
93                         [x] staging function
94                         [x] install function
95                 [.] openssl
96                         [x] core
97                         [ ] staging function
98                         [ ] install function
99                 [x] qt 2.3.6^H7
100                         [x] core
101                         [x] dependencies
102                                 [x] libpng
103                                 [x] libjpeg
104                 [ ] add cross binutils and binutils
105                 [ ] add gcc
106                 [ ] figure out where to put the glibc install into the toolchain dir,
107                     which is only needed by gcc pass 2.
108         [.] new packages
109                 [.] apache
110                         [x] core
111                         [x] dependencies
112                                 [x] expat
113                                 [x] pcre
114                         [ ] staging function
115                         [ ] install function
116
117 [ ] New c++ OE library (possibility -- open to debate)
118
119         Benefits:
120                 * Newly architected with no remnant cruft from portage.
121                 * Easier bindings for non-python tools that utilize OE.
122                 * Use existing fetch routines from apt-get.
123                 * Easier use of libkconfig.
124
125         Liabilities:
126                 * Development time / Wheel reinvention
127                 * Extra effort involved in adding python scripting support
128
129         [ ] .oe lex/yacc (flex/bison) parser
130         [ ] OE metadata data structure(s) for storage in RAM
131         [ ] Code execution, status and event handling
132                 [ ] Build
133                      '----Package
134                              '----Task
135         [ ] Fetching things from upstream
136                 [ ] Possibly utilize apt-get "methods"
137                         [ ] CVS method
138                         [ ] BK method
139                         [ ] SVN method
140         [ ] Shared mem interface to control autobuild daemon
141         [ ] XML/RPC metadata exchange format
142         [ ] Cross process metadata exchange with and without a metadata daemon