diff options
Diffstat (limited to 'meta/classes/uboot-extlinux-config.bbclass')
-rw-r--r-- | meta/classes/uboot-extlinux-config.bbclass | 158 |
1 files changed, 0 insertions, 158 deletions
diff --git a/meta/classes/uboot-extlinux-config.bbclass b/meta/classes/uboot-extlinux-config.bbclass deleted file mode 100644 index be285daa01..0000000000 --- a/meta/classes/uboot-extlinux-config.bbclass +++ /dev/null | |||
@@ -1,158 +0,0 @@ | |||
1 | # uboot-extlinux-config.bbclass | ||
2 | # | ||
3 | # This class allow the extlinux.conf generation for U-Boot use. The | ||
4 | # U-Boot support for it is given to allow the Generic Distribution | ||
5 | # Configuration specification use by OpenEmbedded-based products. | ||
6 | # | ||
7 | # External variables: | ||
8 | # | ||
9 | # UBOOT_EXTLINUX_CONSOLE - Set to "console=ttyX" to change kernel boot | ||
10 | # default console. | ||
11 | # UBOOT_EXTLINUX_LABELS - A list of targets for the automatic config. | ||
12 | # UBOOT_EXTLINUX_KERNEL_ARGS - Add additional kernel arguments. | ||
13 | # UBOOT_EXTLINUX_KERNEL_IMAGE - Kernel image name. | ||
14 | # UBOOT_EXTLINUX_FDTDIR - Device tree directory. | ||
15 | # UBOOT_EXTLINUX_FDT - Device tree file. | ||
16 | # UBOOT_EXTLINUX_INITRD - Indicates a list of filesystem images to | ||
17 | # concatenate and use as an initrd (optional). | ||
18 | # UBOOT_EXTLINUX_MENU_DESCRIPTION - Name to use as description. | ||
19 | # UBOOT_EXTLINUX_ROOT - Root kernel cmdline. | ||
20 | # UBOOT_EXTLINUX_TIMEOUT - Timeout before DEFAULT selection is made. | ||
21 | # Measured in 1/10 of a second. | ||
22 | # UBOOT_EXTLINUX_DEFAULT_LABEL - Target to be selected by default after | ||
23 | # the timeout period | ||
24 | # | ||
25 | # If there's only one label system will boot automatically and menu won't be | ||
26 | # created. If you want to use more than one labels, e.g linux and alternate, | ||
27 | # use overrides to set menu description, console and others variables. | ||
28 | # | ||
29 | # Ex: | ||
30 | # | ||
31 | # UBOOT_EXTLINUX_LABELS ??= "default fallback" | ||
32 | # | ||
33 | # UBOOT_EXTLINUX_DEFAULT_LABEL ??= "Linux Default" | ||
34 | # UBOOT_EXTLINUX_TIMEOUT ??= "30" | ||
35 | # | ||
36 | # UBOOT_EXTLINUX_KERNEL_IMAGE_default ??= "../zImage" | ||
37 | # UBOOT_EXTLINUX_MENU_DESCRIPTION_default ??= "Linux Default" | ||
38 | # | ||
39 | # UBOOT_EXTLINUX_KERNEL_IMAGE_fallback ??= "../zImage-fallback" | ||
40 | # UBOOT_EXTLINUX_MENU_DESCRIPTION_fallback ??= "Linux Fallback" | ||
41 | # | ||
42 | # Results: | ||
43 | # | ||
44 | # menu title Select the boot mode | ||
45 | # TIMEOUT 30 | ||
46 | # DEFAULT Linux Default | ||
47 | # LABEL Linux Default | ||
48 | # KERNEL ../zImage | ||
49 | # FDTDIR ../ | ||
50 | # APPEND root=/dev/mmcblk2p2 rootwait rw console=${console} | ||
51 | # LABEL Linux Fallback | ||
52 | # KERNEL ../zImage-fallback | ||
53 | # FDTDIR ../ | ||
54 | # APPEND root=/dev/mmcblk2p2 rootwait rw console=${console} | ||
55 | # | ||
56 | # Copyright (C) 2016, O.S. Systems Software LTDA. All Rights Reserved | ||
57 | # Released under the MIT license (see packages/COPYING) | ||
58 | # | ||
59 | # The kernel has an internal default console, which you can override with | ||
60 | # a console=...some_tty... | ||
61 | UBOOT_EXTLINUX_CONSOLE ??= "console=${console},${baudrate}" | ||
62 | UBOOT_EXTLINUX_LABELS ??= "linux" | ||
63 | UBOOT_EXTLINUX_FDT ??= "" | ||
64 | UBOOT_EXTLINUX_FDTDIR ??= "../" | ||
65 | UBOOT_EXTLINUX_KERNEL_IMAGE ??= "../${KERNEL_IMAGETYPE}" | ||
66 | UBOOT_EXTLINUX_KERNEL_ARGS ??= "rootwait rw" | ||
67 | UBOOT_EXTLINUX_MENU_DESCRIPTION_linux ??= "${DISTRO_NAME}" | ||
68 | |||
69 | UBOOT_EXTLINUX_CONFIG = "${B}/extlinux.conf" | ||
70 | |||
71 | python do_create_extlinux_config() { | ||
72 | if d.getVar("UBOOT_EXTLINUX") != "1": | ||
73 | return | ||
74 | |||
75 | if not d.getVar('WORKDIR'): | ||
76 | bb.error("WORKDIR not defined, unable to package") | ||
77 | |||
78 | labels = d.getVar('UBOOT_EXTLINUX_LABELS') | ||
79 | if not labels: | ||
80 | bb.fatal("UBOOT_EXTLINUX_LABELS not defined, nothing to do") | ||
81 | |||
82 | if not labels.strip(): | ||
83 | bb.fatal("No labels, nothing to do") | ||
84 | |||
85 | cfile = d.getVar('UBOOT_EXTLINUX_CONFIG') | ||
86 | if not cfile: | ||
87 | bb.fatal('Unable to read UBOOT_EXTLINUX_CONFIG') | ||
88 | |||
89 | localdata = bb.data.createCopy(d) | ||
90 | |||
91 | try: | ||
92 | with open(cfile, 'w') as cfgfile: | ||
93 | cfgfile.write('# Generic Distro Configuration file generated by OpenEmbedded\n') | ||
94 | |||
95 | if len(labels.split()) > 1: | ||
96 | cfgfile.write('menu title Select the boot mode\n') | ||
97 | |||
98 | timeout = localdata.getVar('UBOOT_EXTLINUX_TIMEOUT') | ||
99 | if timeout: | ||
100 | cfgfile.write('TIMEOUT %s\n' % (timeout)) | ||
101 | |||
102 | if len(labels.split()) > 1: | ||
103 | default = localdata.getVar('UBOOT_EXTLINUX_DEFAULT_LABEL') | ||
104 | if default: | ||
105 | cfgfile.write('DEFAULT %s\n' % (default)) | ||
106 | |||
107 | # Need to deconflict the labels with existing overrides | ||
108 | label_overrides = labels.split() | ||
109 | default_overrides = localdata.getVar('OVERRIDES').split(':') | ||
110 | # We're keeping all the existing overrides that aren't used as a label | ||
111 | # an override for that label will be added back in while we're processing that label | ||
112 | keep_overrides = list(filter(lambda x: x not in label_overrides, default_overrides)) | ||
113 | |||
114 | for label in labels.split(): | ||
115 | |||
116 | localdata.setVar('OVERRIDES', ':'.join(keep_overrides + [label])) | ||
117 | |||
118 | extlinux_console = localdata.getVar('UBOOT_EXTLINUX_CONSOLE') | ||
119 | |||
120 | menu_description = localdata.getVar('UBOOT_EXTLINUX_MENU_DESCRIPTION') | ||
121 | if not menu_description: | ||
122 | menu_description = label | ||
123 | |||
124 | root = localdata.getVar('UBOOT_EXTLINUX_ROOT') | ||
125 | if not root: | ||
126 | bb.fatal('UBOOT_EXTLINUX_ROOT not defined') | ||
127 | |||
128 | kernel_image = localdata.getVar('UBOOT_EXTLINUX_KERNEL_IMAGE') | ||
129 | fdtdir = localdata.getVar('UBOOT_EXTLINUX_FDTDIR') | ||
130 | |||
131 | fdt = localdata.getVar('UBOOT_EXTLINUX_FDT') | ||
132 | |||
133 | if fdt: | ||
134 | cfgfile.write('LABEL %s\n\tKERNEL %s\n\tFDT %s\n' % | ||
135 | (menu_description, kernel_image, fdt)) | ||
136 | elif fdtdir: | ||
137 | cfgfile.write('LABEL %s\n\tKERNEL %s\n\tFDTDIR %s\n' % | ||
138 | (menu_description, kernel_image, fdtdir)) | ||
139 | else: | ||
140 | cfgfile.write('LABEL %s\n\tKERNEL %s\n' % (menu_description, kernel_image)) | ||
141 | |||
142 | kernel_args = localdata.getVar('UBOOT_EXTLINUX_KERNEL_ARGS') | ||
143 | |||
144 | initrd = localdata.getVar('UBOOT_EXTLINUX_INITRD') | ||
145 | if initrd: | ||
146 | cfgfile.write('\tINITRD %s\n'% initrd) | ||
147 | |||
148 | kernel_args = root + " " + kernel_args | ||
149 | cfgfile.write('\tAPPEND %s %s\n' % (kernel_args, extlinux_console)) | ||
150 | |||
151 | except OSError: | ||
152 | bb.fatal('Unable to open %s' % (cfile)) | ||
153 | } | ||
154 | UBOOT_EXTLINUX_VARS = "CONSOLE MENU_DESCRIPTION ROOT KERNEL_IMAGE FDTDIR FDT KERNEL_ARGS INITRD" | ||
155 | do_create_extlinux_config[vardeps] += "${@' '.join(['UBOOT_EXTLINUX_%s_%s' % (v, l) for v in d.getVar('UBOOT_EXTLINUX_VARS').split() for l in d.getVar('UBOOT_EXTLINUX_LABELS').split()])}" | ||
156 | do_create_extlinux_config[vardepsexclude] += "OVERRIDES" | ||
157 | |||
158 | addtask create_extlinux_config before do_install do_deploy after do_compile | ||