1SUMMARY = "Merge machine and distro options to create a basic machine task/package"
2PR = "r83"
3
4#
5# packages which content depend on MACHINE_FEATURES need to be MACHINE_ARCH
6#
7PACKAGE_ARCH = "${MACHINE_ARCH}"
8
9inherit packagegroup
10inherit bluetooth
11
12PROVIDES = "${PACKAGES}"
13PACKAGES = ' \
14            packagegroup-base \
15            packagegroup-base-extended \
16            packagegroup-distro-base \
17            packagegroup-machine-base \
18            \
19            ${@bb.utils.contains("MACHINE_FEATURES", "acpi", "packagegroup-base-acpi", "",d)} \
20            ${@bb.utils.contains("MACHINE_FEATURES", "alsa", "packagegroup-base-alsa", "", d)} \
21            ${@bb.utils.contains("MACHINE_FEATURES", "apm", "packagegroup-base-apm", "", d)} \
22            ${@bb.utils.contains("MACHINE_FEATURES", "ext2", "packagegroup-base-ext2", "", d)} \
23            ${@bb.utils.contains("MACHINE_FEATURES", "vfat", "packagegroup-base-vfat", "", d)} \
24            ${@bb.utils.contains("MACHINE_FEATURES", "irda", "packagegroup-base-irda", "",d)} \
25            ${@bb.utils.contains("MACHINE_FEATURES", "keyboard", "packagegroup-base-keyboard", "", d)} \
26            ${@bb.utils.contains("MACHINE_FEATURES", "pci", "packagegroup-base-pci", "",d)} \
27            ${@bb.utils.contains("MACHINE_FEATURES", "pcmcia", "packagegroup-base-pcmcia", "", d)} \
28            ${@bb.utils.contains("MACHINE_FEATURES", "phone", "packagegroup-base-phone", "", d)} \
29            ${@bb.utils.contains("MACHINE_FEATURES", "serial", "packagegroup-base-serial", "", d)} \
30            ${@bb.utils.contains("MACHINE_FEATURES", "usbgadget", "packagegroup-base-usbgadget", "", d)} \
31            ${@bb.utils.contains("MACHINE_FEATURES", "usbhost", "packagegroup-base-usbhost", "", d)} \
32            \
33            ${@bb.utils.contains("DISTRO_FEATURES", "bluetooth", "packagegroup-base-bluetooth", "", d)} \
34            ${@bb.utils.contains("DISTRO_FEATURES", "wifi", "packagegroup-base-wifi", "", d)} \
35            ${@bb.utils.contains("DISTRO_FEATURES", "3g", "packagegroup-base-3g", "", d)} \
36            ${@bb.utils.contains("DISTRO_FEATURES", "nfc", "packagegroup-base-nfc", "", d)} \
37            ${@bb.utils.contains("DISTRO_FEATURES", "cramfs", "packagegroup-base-cramfs", "", d)} \
38            ${@bb.utils.contains("DISTRO_FEATURES", "ipsec", "packagegroup-base-ipsec", "", d)} \
39            ${@bb.utils.contains("DISTRO_FEATURES", "ipv6", "packagegroup-base-ipv6", "", d)} \
40            ${@bb.utils.contains("DISTRO_FEATURES", "nfs", "packagegroup-base-nfs", "", d)} \
41            ${@bb.utils.contains("DISTRO_FEATURES", "ppp", "packagegroup-base-ppp", "", d)} \
42            ${@bb.utils.contains("DISTRO_FEATURES", "smbfs", "packagegroup-base-smbfs", "", d)} \
43            ${@bb.utils.contains("DISTRO_FEATURES", "zeroconf", "packagegroup-base-zeroconf", "", d)} \
44            \
45            '
46
47# Override by distro if needed
48VIRTUAL-RUNTIME_keymaps ?= "keymaps"
49
50#
51# packagegroup-base contain stuff needed for base system (machine related)
52#
53RDEPENDS_packagegroup-base = "\
54    packagegroup-distro-base \
55    packagegroup-machine-base \
56    \
57    module-init-tools \
58    ${@bb.utils.contains('MACHINE_FEATURES', 'apm', 'packagegroup-base-apm', '',d)} \
59    ${@bb.utils.contains('MACHINE_FEATURES', 'acpi', 'packagegroup-base-acpi', '',d)} \
60    ${@bb.utils.contains('MACHINE_FEATURES', 'keyboard', 'packagegroup-base-keyboard', '',d)} \
61    ${@bb.utils.contains('MACHINE_FEATURES', 'phone', 'packagegroup-base-phone', '',d)} \
62    \
63    ${@bb.utils.contains('COMBINED_FEATURES', 'alsa', 'packagegroup-base-alsa', '',d)} \
64    ${@bb.utils.contains('COMBINED_FEATURES', 'ext2', 'packagegroup-base-ext2', '',d)} \
65    ${@bb.utils.contains('COMBINED_FEATURES', 'vfat', 'packagegroup-base-vfat', '',d)} \
66    ${@bb.utils.contains('COMBINED_FEATURES', 'irda', 'packagegroup-base-irda', '',d)} \
67    ${@bb.utils.contains('COMBINED_FEATURES', 'pci', 'packagegroup-base-pci', '',d)} \
68    ${@bb.utils.contains('COMBINED_FEATURES', 'pcmcia', 'packagegroup-base-pcmcia', '',d)} \
69    ${@bb.utils.contains('COMBINED_FEATURES', 'usbgadget', 'packagegroup-base-usbgadget', '',d)} \
70    ${@bb.utils.contains('COMBINED_FEATURES', 'usbhost', 'packagegroup-base-usbhost', '',d)} \
71    ${@bb.utils.contains('COMBINED_FEATURES', 'bluetooth', 'packagegroup-base-bluetooth', '',d)} \
72    ${@bb.utils.contains('COMBINED_FEATURES', 'wifi', 'packagegroup-base-wifi', '',d)} \
73    ${@bb.utils.contains('COMBINED_FEATURES', '3g', 'packagegroup-base-3g', '',d)} \
74    ${@bb.utils.contains('COMBINED_FEATURES', 'nfc', 'packagegroup-base-nfc', '',d)} \
75    \
76    ${@bb.utils.contains('DISTRO_FEATURES', 'nfs', 'packagegroup-base-nfs', '',d)} \
77    ${@bb.utils.contains('DISTRO_FEATURES', 'cramfs', 'packagegroup-base-cramfs', '',d)} \
78    ${@bb.utils.contains('DISTRO_FEATURES', 'smbfs', 'packagegroup-base-smbfs', '',d)} \
79    ${@bb.utils.contains('DISTRO_FEATURES', 'ipv6', 'packagegroup-base-ipv6', '',d)} \
80    ${@bb.utils.contains('DISTRO_FEATURES', 'ipsec', 'packagegroup-base-ipsec', '',d)} \
81    ${@bb.utils.contains('DISTRO_FEATURES', 'ppp', 'packagegroup-base-ppp', '',d)} \
82    ${@bb.utils.contains('DISTRO_FEATURES', 'zeroconf', 'packagegroup-base-zeroconf', '',d)} \
83    "
84
85
86RRECOMMENDS_packagegroup-base = "\
87    kernel-module-nls-utf8 \
88    kernel-module-input \
89    kernel-module-uinput \
90    kernel-module-rtc-dev \
91    kernel-module-rtc-proc \
92    kernel-module-rtc-sysfs \
93    kernel-module-unix"
94
95RDEPENDS_packagegroup-base-extended = "\
96    packagegroup-base \
97    ${ADD_WIFI} \
98    ${ADD_BT} \
99    ${ADD_3G} \
100    ${ADD_NFC} \
101    "
102
103ADD_WIFI = ""
104ADD_BT = ""
105ADD_3G = ""
106ADD_NFC = ""
107
108python __anonymous () {
109    # If Distro want wifi and machine feature wifi/pci/pcmcia/usbhost (one of them)
110    # then include packagegroup-base-wifi in packagegroup-base
111
112    distro_features = set(d.getVar("DISTRO_FEATURES").split())
113    machine_features= set(d.getVar("MACHINE_FEATURES").split())
114
115    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):
116        d.setVar("ADD_BT", "packagegroup-base-bluetooth")
117
118    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):
119        d.setVar("ADD_WIFI", "packagegroup-base-wifi")
120
121    if "3g" in distro_features and not "3g" in machine_features and ("pcmcia" in machine_features or "pci" in machine_features or "usbhost" in machine_features):
122        d.setVar("ADD_3G", "packagegroup-base-3g")
123
124    if "nfc" in distro_features and not "nfc" in machine_features and ("usbhost" in machine_features):
125        d.setVar("ADD_NFC", "packagegroup-base-nfc")
126}
127
128#
129# packages added by distribution
130#
131SUMMARY_packagegroup-distro-base = "${DISTRO} extras"
132DEPENDS_packagegroup-distro-base = "${DISTRO_EXTRA_DEPENDS}"
133RDEPENDS_packagegroup-distro-base = "${DISTRO_EXTRA_RDEPENDS}"
134RRECOMMENDS_packagegroup-distro-base = "${DISTRO_EXTRA_RRECOMMENDS}"
135
136#
137# packages added by machine config
138#
139SUMMARY_packagegroup-machine-base = "${MACHINE} extras"
140SUMMARY_packagegroup-machine-base = "Extra packages required to fully support ${MACHINE} hardware"
141RDEPENDS_packagegroup-machine-base = "${MACHINE_EXTRA_RDEPENDS}"
142RRECOMMENDS_packagegroup-machine-base = "${MACHINE_EXTRA_RRECOMMENDS}"
143
144SUMMARY_packagegroup-base-keyboard = "Keyboard support"
145RDEPENDS_packagegroup-base-keyboard = "\
146    ${VIRTUAL-RUNTIME_keymaps}"
147
148SUMMARY_packagegroup-base-pci = "PCI bus support"
149RDEPENDS_packagegroup-base-pci = "\
150    pciutils"
151
152SUMMARY_packagegroup-base-acpi = "ACPI support"
153RDEPENDS_packagegroup-base-acpi = "\
154    acpid"
155
156SUMMARY_packagegroup-base-apm = "APM support"
157RDEPENDS_packagegroup-base-apm = "\
158    ${VIRTUAL-RUNTIME_apm} \
159    apmd"
160
161SUMMARY_packagegroup-base-ext2 = "ext2 filesystem support"
162RDEPENDS_packagegroup-base-ext2 = "\
163    hdparm \
164    e2fsprogs \
165    e2fsprogs-e2fsck \
166    e2fsprogs-mke2fs"
167
168SUMMARY_packagegroup-base-vfat = "FAT filesystem support"
169RRECOMMENDS_packagegroup-base-vfat = "\
170    kernel-module-msdos \
171    kernel-module-vfat \
172    kernel-module-nls-iso8859-1 \
173    kernel-module-nls-cp437 \
174    dosfstools"
175
176SUMMARY_packagegroup-base-alsa = "ALSA sound support"
177RDEPENDS_packagegroup-base-alsa = "\
178    alsa-utils-alsactl \
179    alsa-utils-alsamixer \
180    ${VIRTUAL-RUNTIME_alsa-state}"
181
182RRECOMMENDS_packagegroup-base-alsa = "\
183    kernel-module-snd-mixer-oss \
184    kernel-module-snd-pcm-oss"
185
186SUMMARY_packagegroup-base-pcmcia = "PC card slot support"
187RDEPENDS_packagegroup-base-pcmcia = "\
188    pcmciautils \
189    "
190
191RRECOMMENDS_packagegroup-base-pcmcia = "\
192    kernel-module-pcmcia \
193    kernel-module-airo-cs \
194    kernel-module-pcnet-cs \
195    kernel-module-serial-cs \
196    kernel-module-ide-cs \
197    kernel-module-ide-disk \
198    ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'kernel-module-hostap-cs', '',d)} \
199    ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'kernel-module-orinoco-cs', '',d)} \
200    ${@bb.utils.contains('DISTRO_FEATURES', 'wifi', 'kernel-module-spectrum-cs', '',d)}"
201
202SUMMARY_packagegroup-base-bluetooth = "Bluetooth support"
203RDEPENDS_packagegroup-base-bluetooth = "\
204    ${BLUEZ} \
205    ${@bb.utils.contains('COMBINED_FEATURES', 'alsa', bb.utils.contains('BLUEZ', 'bluez4', 'libasound-module-bluez', '', d), '',d)} \
206    "
207
208RRECOMMENDS_packagegroup-base-bluetooth = "\
209    kernel-module-bluetooth \
210    kernel-module-l2cap \
211    kernel-module-rfcomm \
212    kernel-module-hci-vhci \
213    kernel-module-bnep \
214    kernel-module-hidp \
215    kernel-module-hci-uart \
216    kernel-module-sco \
217    ${@bb.utils.contains('COMBINED_FEATURES', 'usbhost', 'kernel-module-hci-usb', '',d)} \
218    ${@bb.utils.contains('COMBINED_FEATURES', 'pcmcia', 'kernel-module-bluetooth3c-cs', '',d)} \
219    ${@bb.utils.contains('COMBINED_FEATURES', 'pcmcia', 'kernel-module-bluecard-cs', '',d)} \
220    ${@bb.utils.contains('COMBINED_FEATURES', 'pcmcia', 'kernel-module-bluetoothuart-cs', '',d)} \
221    ${@bb.utils.contains('COMBINED_FEATURES', 'pcmcia', 'kernel-module-dtl1-cs', '',d)} \
222    "
223
224SUMMARY_packagegroup-base-irda = "IrDA support"
225RDEPENDS_packagegroup-base-irda = "\
226    irda-utils"
227
228RRECOMMENDS_packagegroup-base-irda = "\
229    kernel-module-pxaficp-ir \
230    kernel-module-irda \
231    kernel-module-ircomm \
232    kernel-module-ircomm-tty \
233    kernel-module-irlan \
234    ${@bb.utils.contains('DISTRO_FEATURES', 'ppp', 'kernel-module-irnet', '',d)} \
235    kernel-module-irport \
236    kernel-module-irtty \
237    kernel-module-irtty-sir \
238    kernel-module-sir-dev \
239    ${@bb.utils.contains('COMBINED_FEATURES', 'usbhost', 'kernel-module-ir-usb', '',d)} "
240
241SUMMARY_packagegroup-base-usbgadget = "USB gadget support"
242RRECOMMENDS_packagegroup-base-usbgadget = "\
243    kernel-module-pxa27x_udc \
244    kernel-module-gadgetfs \
245    kernel-module-g-file-storage \
246    kernel-module-g-serial \
247    kernel-module-g-ether"
248
249SUMMARY_packagegroup-base-usbhost = "USB host support"
250RDEPENDS_packagegroup-base-usbhost = "\
251    usbutils "
252
253RRECOMMENDS_packagegroup-base-usbhost = "\
254    kernel-module-uhci-hcd \
255    kernel-module-ohci-hcd \
256    kernel-module-ehci-hcd \
257    kernel-module-usbcore \
258    kernel-module-usbhid \
259    kernel-module-usbnet \
260    kernel-module-sd-mod \
261    kernel-module-scsi-mod \
262    kernel-module-usbmouse \
263    kernel-module-mousedev \
264    kernel-module-usbserial \
265    kernel-module-usb-storage "
266
267SUMMARY_packagegroup-base-ppp = "PPP dial-up protocol support"
268RDEPENDS_packagegroup-base-ppp = "\
269    ppp \
270    ppp-dialin"
271
272RRECOMMENDS_packagegroup-base-ppp = "\
273    kernel-module-ppp-async \
274    kernel-module-ppp-deflate \
275    kernel-module-ppp-generic \
276    kernel-module-ppp-mppe \
277    kernel-module-slhc"
278
279SUMMARY_packagegroup-base-ipsec = "IPSEC support"
280RDEPENDS_packagegroup-base-ipsec = "\
281    "
282
283RRECOMMENDS_packagegroup-base-ipsec = "\
284    kernel-module-ipsec"
285
286#
287# packagegroup-base-wifi contain everything needed to get WiFi working
288# WEP/WPA connection needs to be supported out-of-box
289#
290SUMMARY_packagegroup-base-wifi = "WiFi support"
291RDEPENDS_packagegroup-base-wifi = "\
292    iw \
293    wpa-supplicant"
294
295RRECOMMENDS_packagegroup-base-wifi = "\
296    ${@bb.utils.contains('COMBINED_FEATURES', 'usbhost', 'kernel-module-zd1211rw', '',d)} \
297    kernel-module-ieee80211-crypt \
298    kernel-module-ieee80211-crypt-ccmp \
299    kernel-module-ieee80211-crypt-tkip \
300    kernel-module-ieee80211-crypt-wep \
301    kernel-module-ecb \
302    kernel-module-arc4 \
303    kernel-module-crypto_algapi \
304    kernel-module-cryptomgr \
305    kernel-module-michael-mic \
306    kernel-module-aes-generic \
307    kernel-module-aes"
308
309SUMMARY_packagegroup-base-nfc = "Near Field Communication support"
310RDEPENDS_packagegroup-base-nfc = "\
311    neard"
312
313RRECOMMENDS_packagegroup-base-nfc = "\
314    kernel-module-nfc"
315
316SUMMARY_packagegroup-base-3g = "Cellular data support"
317RDEPENDS_packagegroup-base-3g = "\
318    ofono"
319
320RRECOMMENDS_packagegroup-base-3g = "\
321    kernel-module-cdc-acm \
322    kernel-module-cdc-wdm"
323
324SUMMARY_packagegroup-base-smbfs = "SMB network filesystem support"
325RRECOMMENDS_packagegroup-base-smbfs = "\
326    kernel-module-cifs \
327    kernel-module-smbfs"
328
329SUMMARY_packagegroup-base-cramfs = "cramfs filesystem support"
330RRECOMMENDS_packagegroup-base-cramfs = "\
331    kernel-module-cramfs"
332
333#
334# packagegroup-base-nfs provides ONLY client support - server is in nfs-utils package
335#
336SUMMARY_packagegroup-base-nfs = "NFS network filesystem support"
337RDEPENDS_packagegroup-base-nfs = "\
338    rpcbind"
339
340RRECOMMENDS_packagegroup-base-nfs = "\
341    kernel-module-nfs "
342
343SUMMARY_packagegroup-base-zeroconf = "Zeroconf support"
344RDEPENDS_packagegroup-base-zeroconf = "\
345    avahi-daemon"
346RDEPENDS_packagegroup-base-zeroconf_append_libc-glibc = "\
347    libnss-mdns \
348    "
349
350SUMMARY_packagegroup-base-ipv6 = "IPv6 support"
351RDEPENDS_packagegroup-base-ipv6 = "\
352    "
353
354RRECOMMENDS_packagegroup-base-ipv6 = "\
355    kernel-module-ipv6 "
356
357SUMMARY_packagegroup-base-serial = "Serial port support"
358RDEPENDS_packagegroup-base-serial = "\
359    setserial \
360    lrzsz "
361
362SUMMARY_packagegroup-base-phone = "Cellular telephony (voice) support"
363RDEPENDS_packagegroup-base-phone = "\
364    ofono"
365