(no commit message)
[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         [ ] Parsing
15                 [ ] Support $${VAR} or \${VAR} for something we want passed to the shell
16                     without being interpreted as an OE variable.
17                 [ ] Alter 'export' handling, to support exporting a var without
18                     defining the variable.
19                         format:
20                         export [VAR[=value] ...]
21                 [ ] Possibility: alternate data formats for metadata (i.e. arrays).
22                         i.e. THIS[1] = "that"
23                              THIS["heh"] = "that"
24                 [ ] More complex variable setting/conditionals
25                         Options:
26                         [ ] Add support for 'anonymous' OE functions in .oe{,class} files.
27                             These functions are to be executed immediately at parse time,
28                             thereby giving one the ability to exert more control over the set
29                             of variables.
30                         [ ] if/elseif/else/endif blocks for conditional variable setting
31                 [ ] Add "noinherit", as a means of removing an item from the
32                     list of classes to inherit.
33                 [ ] Need a way to specify that you cannot build a given .oe,
34                     from the .oe.  Along the lines of portage's ability for
35                     an ebuild to specify that it isnt buildable for a given
36                     architecture or set of architectures.
37                 [ ] Write helper functions ala ebuild's dobin/dodoc/etc and debian's dh_*.
38                         [ ] Note, if we do this using actual commands within the .oe file
39                             as opposed to shell helpers, the buildsystem is then aware
40                             of what files are libs, what are includes, etc, and we could
41                             then do a sane automatic population of staging based on that
42                             information. 
43                 [x] Means of seeking a file within a PATH.  Something like:
44                         ${@oe.which('OEPATH','bin/oeimage')}
45                         ${OEPATH:bin/oeimage}
46                         ${which:OEPATH:bin/oeimage}
47         [ ] Fetch
48                 [ ] Make Fetch use md5 hashing to indicate per-file download success.
49                     Or in the case of downloaded directories (cvs/svn/bk), simply a 
50                     success stamp on a per file basis.
51         [ ] Data
52                 [ ] Metadata exchange through multiple oebuild/oemake/oespawn executions
53                     (i.e. to set qpedir/qtdir for all builds from the qt/opie/qtopia .oe's)
54         [ ] Split staging by package
55                 [ ] When a package populates staging, create links for every item
56                     that this .oe Provides.
57                         [ ] Wouldnt be a bad idea to make use of update-alternatives
58                             to manage buildroot's staging links, thereby allowing us
59                             to deal with multiple provides sanely (priority).
60                 [ ] More complex set of FLAGS vars, to account for the various DEPENDS.
61                 [ ] Example:
62                         ipkg depends on virtual/libc, puts staging_dir/libc in flags.
63                         glibc staging creates symlinks for every atom it PROVIDES,
64                         and installs its staging files into the glibc-ver-rev dir.
65         [ ] Revamp category handling
66         [ ] Complete revamp packaging classes.  Swallow stdout & stderr of
67             tool used, output our own status, and include HOST_ARCH in tarfn.
68         
69 [ ] oebuild
70         [ ] Implement and test check_md5, taking nostamp into account.
71         [ ] Add '--undo'/'-u' cmdline opt that calls the 'undo' task
72             for the supplied task.
73         [ ] Add '--rebuild'/'-r' cmdline opt that calls the 'undo' task
74             for the entire upward path in the digraph, then builds that task.
75             (same thing done when the md5 changes on an affected var in
76              check_md5)
77         [ ] Add '--force'/'-f' cmdline opt that forces the specified task to be
78             run whether or not we believe it is already complete.
79         [ ] Add '--short-circuit'/'-s' cmdline opt that skips task dependencies
80             and calls the specified task directly.
81
82 [.] oemake
83         [ ] Check for recursive dependency
84         [ ] Deal with multiple provides
85         [ ] Split oemake's knowledge of AVAILABLE OEFILES from its
86             knowledge of which packages are to be built.
87
88 [.] oemaked
89         [ ] Monitor the stamps for a given .oe file as well, to ensure
90             changes in build state as well as changes to build metadata result
91             in a rebuild.
92
93 [ ] oerootfs
94         [ ] Requires oemake's knowledge of available OEFILES split from what we want.
95 [ ] oeimage
96         [ ] Requires oemake's knowledge of available OEFILES split from what we want.
97
98 [.] packages
99         [.] transition packages from OpenZaurus buildroot
100                 [ ] all packages need deviceisms added
101                 [ ] all packages need output packaging dealt with properly, and
102                     packaging granularity increased.
103                 [.] modutils
104                         [ ] /etc/modules & /etc/modules.conf
105
106 [ ] New c++ OE library (possibility -- open to debate)
107
108         Benefits:
109                 * Newly architected with no remnant cruft from portage.
110                 * Easier bindings for non-python tools that utilize OE.
111                 * Use existing fetch routines from apt-get.
112                 * Easier use of libkconfig.
113
114         Liabilities:
115                 * Development time / Wheel reinvention
116
117         [ ] Data structure(s) for metadata and metadata store
118         [ ] .oe parser
119                 [ ] manual
120                 [ ] lex/yacc (flex/bison)
121         [ ] Code execution, status and event handling
122                 [ ] Build
123                      '----Package
124                              '----Task
125         [ ] Fetching things from upstream
126                 [ ] Possibly utilize apt-get "methods"
127                         [ ] CVS method
128                         [ ] BK method
129                         [ ] SVN method
130         [ ] Autobuild daemon
131                 [ ] XML/RPC control and metadata exchange interfaces