4003359dd189cbfade334d02fa72354715ee35bb
[openembedded.git] / recipes / tasks / task-base.bb
1 DESCRIPTION = "Merge machine and distro options to create a basic machine task/package"
2 PR = "r80"
3
4 inherit task
5
6 DEPENDS = "task-boot"
7 PROVIDES = "${PACKAGES}"
8 PACKAGES = ' \
9             task-base \
10             task-base-extended \
11             task-distro-base \
12             task-machine-base \
13             \
14             ${@base_contains("MACHINE_FEATURES", "acpi", "task-base-acpi", "",d)} \
15             ${@base_contains("MACHINE_FEATURES", "alsa", "task-base-alsa", "", d)} \
16             ${@base_contains("MACHINE_FEATURES", "apm", "task-base-apm", "", d)} \
17             ${@base_contains("MACHINE_FEATURES", "ext2", "task-base-ext2", "", d)} \
18             ${@base_contains("MACHINE_FEATURES", "vfat", "task-base-vfat", "", d)} \
19             ${@base_contains("MACHINE_FEATURES", "irda", "task-base-irda", "",d)} \
20             ${@base_contains("MACHINE_FEATURES", "keyboard", "task-base-keyboard", "", d)} \
21             ${@base_contains("MACHINE_FEATURES", "pci", "task-base-pci", "",d)} \
22             ${@base_contains("MACHINE_FEATURES", "pcmcia", "task-base-pcmcia", "", d)} \
23             ${@base_contains("MACHINE_FEATURES", "phone", "task-base-phone", "", d)} \
24             ${@base_contains("MACHINE_FEATURES", "screen", "task-base-screen", "", d)} \
25             ${@base_contains("MACHINE_FEATURES", "serial", "task-base-serial", "", d)} \
26             ${@base_contains("MACHINE_FEATURES", "touchscreen", "task-base-touchscreen", "", d)} \
27             ${@base_contains("MACHINE_FEATURES", "usbgadget", "task-base-usbgadget", "", d)} \
28             ${@base_contains("MACHINE_FEATURES", "usbhost", "task-base-usbhost", "", d)} \
29             \
30             ${@base_contains("MACHINE_FEATURES", "uboot", "task-base-uboot", "",d)} \
31             ${@base_contains("MACHINE_FEATURES", "redboot", "task-base-redboot", "",d)} \
32             ${@base_contains("MACHINE_FEATURES", "apex", "task-base-apex", "",d)} \
33             \
34             task-base-bluetooth \
35             task-base-wifi \
36             \
37             ${@base_contains("DISTRO_FEATURES", "cramfs", "task-base-cramfs", "", d)} \
38             ${@base_contains("DISTRO_FEATURES", "ipsec", "task-base-ipsec", "", d)} \
39             ${@base_contains("DISTRO_FEATURES", "ipv6", "task-base-ipv6", "", d)} \
40             ${@base_contains("DISTRO_FEATURES", "nfs", "task-base-nfs", "", d)} \
41             ${@base_contains("DISTRO_FEATURES", "ppp", "task-base-ppp", "", d)} \
42             ${@base_contains("DISTRO_FEATURES", "smbfs", "task-base-smbfs", "", d)} \
43             ${@base_contains("DISTRO_FEATURES", "raid", "task-base-raid", "",d)} \
44             \
45             ${@base_contains("MACHINE_FEATURES","kernel26","task-base-kernel26","task-base-kernel24",d)} \
46             '
47
48 #
49 # packages which content depend on MACHINE_FEATURES need to be MACHINE_ARCH
50 #
51 PACKAGE_ARCH = "${MACHINE_ARCH}"
52
53 #
54 # linux-hotplug or none
55 #
56 HOTPLUG ?= "${@base_contains("MACHINE_FEATURES", "kernel24",  "linux-hotplug","",d)} "
57
58 #
59 # dropbear, openssh or none
60 #
61 DISTRO_SSH_DAEMON ?= "dropbear"
62
63 #
64 # bluetooth manager
65 #
66 DISTRO_BLUETOOTH_MANAGER ?= "\
67         blueprobe \
68         bluez-utils \
69         bluez-utils-compat \
70         "
71
72 #
73 # pcmciautils for >= 2.6.13-rc1, pcmcia-cs for others
74 #
75 PCMCIA_MANAGER ?= "${@base_contains('MACHINE_FEATURES', 'kernel26','pcmciautils','pcmcia-cs',d)} "
76
77 #
78 # those ones can be set in machine config to supply packages needed to get machine booting
79 #
80 MACHINE_ESSENTIAL_EXTRA_RDEPENDS ?= ""
81 MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS ?= ""
82
83 #
84 # task-base contain stuff needed for base system (machine related)
85 #
86 RDEPENDS_task-base = "\
87     task-boot \
88     task-distro-base \
89     task-machine-base \
90     ${DISTRO_SSH_DAEMON} \
91     ${HOTPLUG} \
92     \
93     ${@base_contains('MACHINE_FEATURES', 'kernel26','task-base-kernel26','task-base-kernel24',d)} \
94     ${@base_contains('MACHINE_FEATURES', 'apm', 'task-base-apm', '',d)} \
95     ${@base_contains('MACHINE_FEATURES', 'acpi', 'task-base-acpi', '',d)} \
96     ${@base_contains('MACHINE_FEATURES', 'keyboard', 'task-base-keyboard', '',d)} \
97     \
98     ${@base_contains('COMBINED_FEATURES', 'alsa', 'task-base-alsa', '',d)} \
99     ${@base_contains('COMBINED_FEATURES', 'ext2', 'task-base-ext2', '',d)} \
100     ${@base_contains('COMBINED_FEATURES', 'vfat', 'task-base-vfat', '',d)} \
101     ${@base_contains('COMBINED_FEATURES', 'irda', 'task-base-irda', '',d)} \
102     ${@base_contains('COMBINED_FEATURES', 'pci', 'task-base-pci', '',d)} \
103     ${@base_contains('COMBINED_FEATURES', 'pcmcia', 'task-base-pcmcia', '',d)} \
104     ${@base_contains('COMBINED_FEATURES', 'usbgadget', 'task-base-usbgadget', '',d)} \
105     ${@base_contains('COMBINED_FEATURES', 'usbhost', 'task-base-usbhost', '',d)} \
106     ${@base_contains('COMBINED_FEATURES', 'bluetooth', 'task-base-bluetooth', '',d)} \
107     ${@base_contains('COMBINED_FEATURES', 'wifi', 'task-base-wifi', '',d)} \
108     ${@base_contains('COMBINED_FEATURES', 'uboot', 'task-base-uboot', '',d)} \
109     ${@base_contains('COMBINED_FEATURES', 'redboot', 'task-base-redboot', '',d)} \
110     ${@base_contains('COMBINED_FEATURES', 'apex', 'task-base-apex', '',d)} \
111     \
112     ${@base_contains('DISTRO_FEATURES', 'nfs', 'task-base-nfs', '',d)} \
113     ${@base_contains('DISTRO_FEATURES', 'cramfs', 'task-base-cramfs', '',d)} \
114     ${@base_contains('DISTRO_FEATURES', 'smbfs', 'task-base-smbfs', '',d)} \
115     ${@base_contains('DISTRO_FEATURES', 'ipv6', 'task-base-ipv6', '',d)} \
116     ${@base_contains('DISTRO_FEATURES', 'ipsec', 'task-base-ipsec', '',d)} \
117     ${@base_contains('DISTRO_FEATURES', 'ppp', 'task-base-ppp', '',d)} \
118     ${@base_contains('DISTRO_FEATURES', 'raid', 'task-base-raid', '',d)} \
119     "
120
121 RDEPENDS_task-base-extended = "\
122     task-base \
123     ${ADD_WIFI} \
124     ${ADD_BT} \
125     "
126
127 ADD_WIFI = ""
128 ADD_BT = ""
129
130 python __anonymous () {
131     # If Distro want wifi and machine feature wifi/pci/pcmcia/usbhost (one of them)
132     # then include task-base-wifi in task-base
133
134     import bb
135
136     if not hasattr(__builtins__, 'set'):
137         from sets import Set as set
138
139     distro_features = set(bb.data.getVar("DISTRO_FEATURES", d, 1).split())
140     machine_features= set(bb.data.getVar("MACHINE_FEATURES", d, 1).split())
141
142     if "bluetooth" in distro_features and not "bluetooth" in machine_features and ("pcmcia" in machine_features or "pci" in machine_features or "usbhost" in machine_features):
143         bb.data.setVar("ADD_BT", "task-base-bluetooth", d)
144
145     if "wifi" in distro_features and not "wifi" in machine_features and ("pcmcia" in machine_features or "pci" in machine_features or "usbhost" in machine_features):
146         bb.data.setVar("ADD_WIFI", "task-base-wifi", d)
147 }
148
149 #
150 # packages added by distribution
151 #
152 DEPENDS_task-distro-base = "${DISTRO_EXTRA_DEPENDS}"
153 RDEPENDS_task-distro-base = "${DISTRO_EXTRA_RDEPENDS}"
154 RRECOMMENDS_task-distro-base = "${DISTRO_EXTRA_RRECOMMENDS}"
155
156 #
157 # packages added by machine config
158 #
159 RDEPENDS_task-machine-base = "${MACHINE_EXTRA_RDEPENDS}"
160 RRECOMMENDS_task-machine-base = "${MACHINE_EXTRA_RRECOMMENDS}"
161
162 RDEPENDS_task-base-kernel24 = "\
163     modutils-depmod"
164
165 RDEPENDS_task-base-kernel26 = "\
166     sysfsutils \
167     module-init-tools"
168
169 RRECOMMENDS_task-base-kernel24 = "\
170     kernel-module-input \
171     kernel-module-uinput"
172
173 RRECOMMENDS_task-base-kernel26 = "\
174     kernel-module-nls-utf8 \
175     kernel-module-input \
176     kernel-module-uinput \
177     kernel-module-rtc-dev \
178     kernel-module-rtc-proc \
179     kernel-module-rtc-sysfs \
180     kernel-module-rtc-sa1100 \
181     kernel-module-unix"
182
183 RDEPENDS_task-base-keyboard = "\
184     keymaps"
185
186 RDEPENDS_task-base-pci = "\
187     pciutils"
188
189 RDEPENDS_task-base-acpi = "\
190     acpid"
191
192 RDEPENDS_task-base-apm = "\
193     apm \
194     apmd \
195     ${@base_contains('MACHINE_FEATURES', 'kernel24', 'network-suspend-scripts', '',d)}"
196
197 RDEPENDS_task-base-ext2 = "\
198     hdparm \
199     e2fsprogs \
200     e2fsprogs-e2fsck \
201     e2fsprogs-mke2fs"
202
203 RRECOMMENDS_task-base-vfat = "\
204     kernel-module-msdos \
205     kernel-module-vfat \
206     kernel-module-nls-iso8859-1 \
207     kernel-module-nls-cp437"
208
209 RDEPENDS_task-base-alsa = "\
210     alsa-utils-alsactl \
211     alsa-utils-alsamixer"
212
213 #
214 # alsa-states are machine related so can be missing in feed, OSS support is optional
215 #
216 RRECOMMENDS_task-base-alsa = "\
217     alsa-state \
218     kernel-module-snd-mixer-oss \
219     kernel-module-snd-pcm-oss"
220
221 RDEPENDS_task-base-pcmcia = "\
222     ${PCMCIA_MANAGER} \
223     ${@base_contains('DISTRO_FEATURES', 'wifi', 'prism-firmware', '',d)} \
224     ${@base_contains('DISTRO_FEATURES', 'wifi', 'spectrum-fw', '',d)} \
225     "
226
227 RRECOMMENDS_task-base-pcmcia = "\
228     ${@base_contains('MACHINE_FEATURES', 'kernel26', '${task-base-pcmcia26}', '${task-base-pcmcia24}',d)} \
229     kernel-module-pcmcia \
230     kernel-module-airo-cs \
231     kernel-module-pcnet-cs \
232     kernel-module-serial-cs \
233     kernel-module-ide-cs \
234     kernel-module-ide-disk \
235     "
236
237 task-base-pcmcia24 = "\
238     "
239
240 task-base-pcmcia26 = "\
241     ${@base_contains('DISTRO_FEATURES', 'wifi', 'kernel-module-hostap-cs', '',d)} \
242     ${@base_contains('DISTRO_FEATURES', 'wifi', 'kernel-module-spectrum-cs', '',d)}"
243
244 # Provide bluez-utils-compat utils for the time being, the binaries in that package will vanish soon from upstream releases, so beware! 
245
246 RDEPENDS_task-base-bluetooth = "\
247     ${DISTRO_BLUETOOTH_MANAGER} \
248     "
249
250 RRECOMMENDS_task-base-bluetooth = "\
251     kernel-module-bluetooth \
252     kernel-module-l2cap \
253     kernel-module-rfcomm \
254     kernel-module-hci-vhci \
255     kernel-module-bnep \
256     kernel-module-hidp \
257     kernel-module-hci-uart \
258     kernel-module-sco \
259     ${@base_contains('COMBINED_FEATURES', 'usbhost', 'kernel-module-hci-usb', '',d)} \
260     ${@base_contains('COMBINED_FEATURES', 'pcmcia', 'kernel-module-bluetooth3c-cs', '',d)} \
261     ${@base_contains('COMBINED_FEATURES', 'pcmcia', 'kernel-module-bluecard-cs', '',d)} \
262     ${@base_contains('COMBINED_FEATURES', 'pcmcia', 'kernel-module-bluetoothuart-cs', '',d)} \
263     ${@base_contains('COMBINED_FEATURES', 'pcmcia', 'kernel-module-dtl1-cs', '',d)} \
264     ${@base_contains('COMBINED_FEATURES', 'pcmcia', 'bluez-dtl1-workaround', '',d)} \
265     "
266 # bluez-dtl1-workaround above is workaround for bitbake not handling DEPENDS on it in
267 # kernel.bbclass. It should be there as long as kernel-module-dtl1-cs is, but not longer.
268
269 RDEPENDS_task-base-irda = "\
270     irda-utils"
271
272 RRECOMMENDS_task-base-irda = "\
273     kernel-module-pxaficp-ir \
274     kernel-module-irda \
275     kernel-module-ircomm \
276     kernel-module-ircomm-tty \
277     kernel-module-irlan \
278     ${@base_contains('DISTRO_FEATURES', 'ppp', 'kernel-module-irnet', '',d)} \
279     kernel-module-irport \
280     kernel-module-irtty \
281     kernel-module-irtty-sir \
282     kernel-module-sir-dev \
283     ${@base_contains('COMBINED_FEATURES', 'usbhost', 'kernel-module-ir-usb', '',d)} "
284
285 RRECOMMENDS_task-base-usbgadget = "\
286     kernel-module-pxa27x_udc \
287     kernel-module-gadgetfs \
288     kernel-module-g-file-storage \
289     kernel-module-g-serial \
290     kernel-module-g-ether \
291     usb-gadget-mode"
292
293 RDEPENDS_task-base-usbhost = "\
294     usbutils "
295
296 RRECOMMENDS_task-base-usbhost = "\
297     kernel-module-uhci-hcd \
298     kernel-module-ohci-hcd \
299     kernel-module-ehci-hcd \
300     kernel-module-usbcore \
301     kernel-module-usbhid \
302     kernel-module-usbnet \
303     kernel-module-sd-mod \
304     kernel-module-scsi-mod \
305     kernel-module-usbmouse \
306     kernel-module-mousedev \
307     kernel-module-usbserial \
308     kernel-module-usb-storage \
309     kernel-module-asix \
310     kernel-module-pegasus \
311 "
312
313 RDEPENDS_task-base-uboot = "\
314     u-boot"
315
316 RDEPENDS_task-base-redboot = "\
317     fis"
318
319 RDEPENDS_task-base-apex = "\
320     apex-env"
321
322 RDEPENDS_task-base-ppp = "\
323     ppp \
324     ppp-dialin"
325
326 RRECOMMENDS_task-base-ppp = "\
327     kernel-module-ppp-async \
328     kernel-module-ppp-deflate \
329     kernel-module-ppp-mppe"
330
331 RDEPENDS_task-base-ipsec = "\
332     openswan"
333
334 RRECOMMENDS_task-base-ipsec = "\
335     kernel-module-ipsec"
336
337 #
338 # task-base-wifi contain everything needed to get WiFi working
339 # WEP/WPA connection needs to be supported out-of-box
340 #
341 RDEPENDS_task-base-wifi = "\
342     wireless-tools \
343     ${@base_contains('COMBINED_FEATURES', 'pcmcia', 'hostap-utils', '',d)} \
344     ${@base_contains('COMBINED_FEATURES', 'pci', 'hostap-utils', '',d)} \
345     ${@base_contains('COMBINED_FEATURES', 'pci', 'madwifi-ng-tools', '',d)} \
346     wpa-supplicant"
347
348 RRECOMMENDS_task-base-wifi = "\
349     ${@base_contains('COMBINED_FEATURES', 'pci', 'madwifi-ng-modules', '',d)} \
350     ${@base_contains('COMBINED_FEATURES', 'usbhost', 'kernel-module-zd1211rw', '',d)} \
351     kernel-module-ieee80211-crypt \
352     kernel-module-ieee80211-crypt-ccmp \
353     kernel-module-ieee80211-crypt-tkip \
354     kernel-module-ieee80211-crypt-wep \
355     kernel-module-ecb \
356     kernel-module-arc4 \
357     kernel-module-crypto_algapi \
358     kernel-module-cryptomgr \
359     kernel-module-michael-mic \
360     kernel-module-aes"
361
362 RRECOMMENDS_task-base-smbfs = "\
363     kernel-module-cifs \
364     kernel-module-smbfs"
365
366 RRECOMMENDS_task-base-cramfs = "\
367     kernel-module-cramfs"
368
369 #
370 # task-base-nfs provides ONLY client support - server is in nfs-utils package
371 #
372 RDEPENDS_task-base-nfs = "\
373     portmap"
374
375 RRECOMMENDS_task-base-nfs = "\
376     kernel-module-nfs "
377
378 RDEPENDS_task-base-raid = "\
379         "
380
381 RDEPENDS_task-base-screen = "\
382         "
383
384 #
385 # GPE/OPIE/Openmoko provide own touchscreen calibration utils
386 #
387 RDEPENDS_task-base-touchscreen = "\
388     tslib-tests \
389     tslib-calibrate "
390
391 RDEPENDS_task-base-ipv6 = "\
392     "
393
394 RRECOMMENDS_task-base-ipv6 = "\
395     kernel-module-ipv6 "
396
397 RDEPENDS_task-base-serial = "\
398     setserial \
399     lrzsz "
400
401 # Tosort
402 # kernel-module-nvrd
403 # kernel-module-mip6-mn
404 # kernel-module-tun
405 # kernel-module-ide-probe-mo
406 # kernel-module-loop
407 # kernel-module-vfat
408 # kernel-module-ext2
409 # kernel-module-sco
410 # kernel-module-af_packet
411 # kernel-module-ip-gre
412 # kernel-module-ip-tables
413 # kernel-module-ipip
414 # kernel-module-des
415 # kernel-module-md5
416 # kernel-module-8250
417 # Should be DISTRO_EXTRA_RRECOMMENDS: lrzsz