summaryrefslogtreecommitdiffstats
path: root/scripts/lib/bsp
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/lib/bsp')
-rw-r--r--scripts/lib/bsp/__init__.py22
-rw-r--r--scripts/lib/bsp/engine.py1947
-rw-r--r--scripts/lib/bsp/help.py1043
-rw-r--r--scripts/lib/bsp/kernel.py1071
-rw-r--r--scripts/lib/bsp/substrate/target/arch/arm/.gitignore0
-rw-r--r--scripts/lib/bsp/substrate/target/arch/arm/recipes-graphics/xorg-xserver/xserver-xf86-config/machine.noinstall1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/arm/recipes-graphics/xorg-xserver/xserver-xf86-config/machine/xorg.conf34
-rw-r--r--scripts/lib/bsp/substrate/target/arch/arm/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend2
-rw-r--r--scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files.noinstall1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine-non_hardware.cfg31
-rw-r--r--scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine-preempt-rt.scc14
-rw-r--r--scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine-standard.scc14
-rw-r--r--scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine-tiny.scc10
-rw-r--r--scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine-user-config.cfg1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine-user-features.scc1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine-user-patches.scc1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine.cfg321
-rw-r--r--scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine.scc8
-rw-r--r--scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/kernel-list.noinstall5
-rw-r--r--scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/linux-yocto-dev.bbappend26
-rw-r--r--scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/linux-yocto-rt_3.10.bbappend33
-rw-r--r--scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/linux-yocto-tiny_3.10.bbappend33
-rw-r--r--scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/linux-yocto-tiny_3.14.bbappend33
-rw-r--r--scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/linux-yocto_3.10.bbappend33
-rw-r--r--scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/linux-yocto_3.14.bbappend33
-rw-r--r--scripts/lib/bsp/substrate/target/arch/common/COPYING.MIT17
-rw-r--r--scripts/lib/bsp/substrate/target/arch/common/README118
-rw-r--r--scripts/lib/bsp/substrate/target/arch/common/README.sources17
-rw-r--r--scripts/lib/bsp/substrate/target/arch/common/binary/.gitignore0
-rw-r--r--scripts/lib/bsp/substrate/target/arch/common/conf/layer.conf10
-rw-r--r--scripts/lib/bsp/substrate/target/arch/common/recipes-bsp/formfactor/formfactor/machine.noinstall1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/common/recipes-bsp/formfactor/formfactor/machine/machconfig5
-rw-r--r--scripts/lib/bsp/substrate/target/arch/common/recipes-bsp/formfactor/formfactor_0.0.bbappend2
-rw-r--r--scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/kernel-list.noinstall26
-rw-r--r--scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/linux-yocto-custom.bb58
-rw-r--r--scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/linux-yocto-custom.noinstall1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/linux-yocto-custom/defconfig5
-rw-r--r--scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/linux-yocto-custom/machine-user-config.cfg9
-rw-r--r--scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/linux-yocto-custom/machine-user-patches.scc9
-rw-r--r--scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/linux-yocto-custom/machine.cfg4
-rw-r--r--scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/linux-yocto-custom/machine.scc18
-rw-r--r--scripts/lib/bsp/substrate/target/arch/i386/conf/machine/machine.conf67
-rw-r--r--scripts/lib/bsp/substrate/target/arch/i386/recipes-graphics/xorg-xserver/xserver-xf86-config/machine.noinstall1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/i386/recipes-graphics/xorg-xserver/xserver-xf86-config/machine/xorg.conf1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/i386/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend2
-rw-r--r--scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files.noinstall1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine-preempt-rt.scc16
-rw-r--r--scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine-standard.scc16
-rw-r--r--scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine-tiny.scc10
-rw-r--r--scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine-user-config.cfg1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine-user-features.scc1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine-user-patches.scc1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine.cfg55
-rw-r--r--scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine.scc21
-rw-r--r--scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/kernel-list.noinstall5
-rw-r--r--scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/linux-yocto-dev.bbappend26
-rw-r--r--scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/linux-yocto-rt_3.10.bbappend33
-rw-r--r--scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/linux-yocto-tiny_3.10.bbappend33
-rw-r--r--scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/linux-yocto-tiny_3.14.bbappend33
-rw-r--r--scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/linux-yocto_3.10.bbappend33
-rw-r--r--scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/linux-yocto_3.14.bbappend33
-rw-r--r--scripts/lib/bsp/substrate/target/arch/layer/COPYING.MIT17
-rw-r--r--scripts/lib/bsp/substrate/target/arch/layer/README64
-rw-r--r--scripts/lib/bsp/substrate/target/arch/layer/conf/layer.conf10
-rw-r--r--scripts/lib/bsp/substrate/target/arch/layer/layer-questions.noinstall14
-rw-r--r--scripts/lib/bsp/substrate/target/arch/layer/recipes-example-bbappend.noinstall1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/layer/recipes-example-bbappend/example-bbappend/example-bbappend-version.bbappend9
-rw-r--r--scripts/lib/bsp/substrate/target/arch/layer/recipes-example-bbappend/example-bbappend/example-bbappend-version.noinstall1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/layer/recipes-example-bbappend/example-bbappend/example-bbappend-version/example.patch12
-rw-r--r--scripts/lib/bsp/substrate/target/arch/layer/recipes-example.noinstall1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/layer/recipes-example/example/example-recipe-0.1.bb24
-rw-r--r--scripts/lib/bsp/substrate/target/arch/layer/recipes-example/example/example-recipe-0.1.noinstall1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/layer/recipes-example/example/example-recipe-0.1/example.patch12
-rw-r--r--scripts/lib/bsp/substrate/target/arch/layer/recipes-example/example/example-recipe-0.1/helloworld.c8
-rw-r--r--scripts/lib/bsp/substrate/target/arch/mips/.gitignore0
-rw-r--r--scripts/lib/bsp/substrate/target/arch/mips/conf/machine/machine.conf39
-rw-r--r--scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files.noinstall1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine-preempt-rt.scc10
-rw-r--r--scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine-standard.scc10
-rw-r--r--scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine-tiny.scc10
-rw-r--r--scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine-user-config.cfg1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine-user-features.scc1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine-user-patches.scc1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine.cfg2
-rw-r--r--scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine.scc8
-rw-r--r--scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/kernel-list.noinstall5
-rw-r--r--scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/linux-yocto-dev.bbappend26
-rw-r--r--scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/linux-yocto-rt_3.10.bbappend33
-rw-r--r--scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/linux-yocto-tiny_3.10.bbappend33
-rw-r--r--scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/linux-yocto-tiny_3.14.bbappend33
-rw-r--r--scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/linux-yocto_3.10.bbappend33
-rw-r--r--scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/linux-yocto_3.14.bbappend33
-rw-r--r--scripts/lib/bsp/substrate/target/arch/powerpc/.gitignore0
-rw-r--r--scripts/lib/bsp/substrate/target/arch/powerpc/conf/machine/machine.conf75
-rw-r--r--scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files.noinstall1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine-preempt-rt.scc10
-rw-r--r--scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine-standard.scc10
-rw-r--r--scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine-tiny.scc10
-rw-r--r--scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine-user-config.cfg1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine-user-features.scc1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine-user-patches.scc1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine.cfg164
-rw-r--r--scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine.scc10
-rw-r--r--scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/kernel-list.noinstall5
-rw-r--r--scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/linux-yocto-dev.bbappend26
-rw-r--r--scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/linux-yocto-rt_3.14.bbappend33
-rw-r--r--scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/linux-yocto-tiny_3.10.bbappend33
-rw-r--r--scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/linux-yocto-tiny_3.14.bbappend33
-rw-r--r--scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/linux-yocto_3.10.bbappend33
-rw-r--r--scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/linux-yocto_3.14.bbappend33
-rw-r--r--scripts/lib/bsp/substrate/target/arch/qemu/conf/machine/machine.conf70
-rw-r--r--scripts/lib/bsp/substrate/target/arch/qemu/recipes-core/init-ifupdown/init-ifupdown/machine.noinstall1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/qemu/recipes-core/init-ifupdown/init-ifupdown/machine/interfaces5
-rw-r--r--scripts/lib/bsp/substrate/target/arch/qemu/recipes-core/init-ifupdown/init-ifupdown_1.0.bbappend1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/qemu/recipes-graphics/xorg-xserver/xserver-xf86-config/machine.noinstall1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/qemu/recipes-graphics/xorg-xserver/xserver-xf86-config/machine/xorg.conf77
-rw-r--r--scripts/lib/bsp/substrate/target/arch/qemu/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files.noinstall1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine-preempt-rt.scc10
-rw-r--r--scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine-standard.scc17
-rw-r--r--scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine-tiny.scc10
-rw-r--r--scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine-user-config.cfg1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine-user-features.scc1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine-user-patches.scc1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine.cfg1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine.scc5
-rw-r--r--scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/kernel-list.noinstall5
-rw-r--r--scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/linux-yocto-dev.bbappend50
-rw-r--r--scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/linux-yocto-rt_3.10.bbappend56
-rw-r--r--scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/linux-yocto-tiny_3.10.bbappend56
-rw-r--r--scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/linux-yocto-tiny_3.4.bbappend56
-rw-r--r--scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/linux-yocto_3.10.bbappend56
-rw-r--r--scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/linux-yocto_3.14.bbappend56
-rw-r--r--scripts/lib/bsp/substrate/target/arch/x86_64/.gitignore0
-rw-r--r--scripts/lib/bsp/substrate/target/arch/x86_64/conf/machine/machine.conf57
-rw-r--r--scripts/lib/bsp/substrate/target/arch/x86_64/recipes-graphics/xorg-xserver/xserver-xf86-config/machine.noinstall1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/x86_64/recipes-graphics/xorg-xserver/xserver-xf86-config/machine/xorg.conf1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/x86_64/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend2
-rw-r--r--scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files.noinstall1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine-preempt-rt.scc16
-rw-r--r--scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine-standard.scc16
-rw-r--r--scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine-tiny.scc10
-rw-r--r--scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine-user-config.cfg1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine-user-features.scc1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine-user-patches.scc1
-rw-r--r--scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine.cfg48
-rw-r--r--scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine.scc14
-rw-r--r--scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/kernel-list.noinstall5
-rw-r--r--scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/linux-yocto-dev.bbappend26
-rw-r--r--scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/linux-yocto-rt_3.10.bbappend33
-rw-r--r--scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/linux-yocto-tiny_3.10.bbappend33
-rw-r--r--scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/linux-yocto-tiny_3.14.bbappend33
-rw-r--r--scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/linux-yocto_3.10.bbappend33
-rw-r--r--scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/linux-yocto_3.14.bbappend33
-rw-r--r--scripts/lib/bsp/tags.py49
155 files changed, 7291 insertions, 0 deletions
diff --git a/scripts/lib/bsp/__init__.py b/scripts/lib/bsp/__init__.py
new file mode 100644
index 0000000000..8bbb6e1530
--- /dev/null
+++ b/scripts/lib/bsp/__init__.py
@@ -0,0 +1,22 @@
1#
2# Yocto BSP tools library
3#
4# Copyright (c) 2012, Intel Corporation.
5# All rights reserved.
6#
7# This program is free software; you can redistribute it and/or modify
8# it under the terms of the GNU General Public License version 2 as
9# published by the Free Software Foundation.
10#
11# This program is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14# GNU General Public License for more details.
15#
16# You should have received a copy of the GNU General Public License along
17# with this program; if not, write to the Free Software Foundation, Inc.,
18# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19#
20# AUTHORS
21# Tom Zanussi <tom.zanussi (at] intel.com>
22#
diff --git a/scripts/lib/bsp/engine.py b/scripts/lib/bsp/engine.py
new file mode 100644
index 0000000000..7d6be239da
--- /dev/null
+++ b/scripts/lib/bsp/engine.py
@@ -0,0 +1,1947 @@
1# ex:ts=4:sw=4:sts=4:et
2# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
3#
4# Copyright (c) 2012, Intel Corporation.
5# All rights reserved.
6#
7# This program is free software; you can redistribute it and/or modify
8# it under the terms of the GNU General Public License version 2 as
9# published by the Free Software Foundation.
10#
11# This program is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14# GNU General Public License for more details.
15#
16# You should have received a copy of the GNU General Public License along
17# with this program; if not, write to the Free Software Foundation, Inc.,
18# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19#
20# DESCRIPTION
21# This module implements the templating engine used by 'yocto-bsp' to
22# create BSPs. The BSP templates are simply the set of files expected
23# to appear in a generated BSP, marked up with a small set of tags
24# used to customize the output. The engine parses through the
25# templates and generates a Python program containing all the logic
26# and input elements needed to display and retrieve BSP-specific
27# information from the user. The resulting program uses those results
28# to generate the final BSP files.
29#
30# AUTHORS
31# Tom Zanussi <tom.zanussi (at] intel.com>
32#
33
34import os
35import sys
36from abc import ABCMeta, abstractmethod
37from tags import *
38import shlex
39import json
40import subprocess
41import shutil
42
43class Line():
44 """
45 Generic (abstract) container representing a line that will appear
46 in the BSP-generating program.
47 """
48 __metaclass__ = ABCMeta
49
50 def __init__(self, line):
51 self.line = line
52 self.generated_line = ""
53 self.prio = sys.maxint
54 self.discard = False
55
56 @abstractmethod
57 def gen(self, context = None):
58 """
59 Generate the final executable line that will appear in the
60 BSP-generation program.
61 """
62 pass
63
64 def escape(self, line):
65 """
66 Escape single and double quotes and backslashes until I find
67 something better (re.escape() escapes way too much).
68 """
69 return line.replace("\\", "\\\\").replace("\"", "\\\"").replace("'", "\\'")
70
71 def parse_error(self, msg, lineno, line):
72 raise SyntaxError("%s: %s" % (msg, line))
73
74
75class NormalLine(Line):
76 """
77 Container for normal (non-tag) lines.
78 """
79 def __init__(self, line):
80 Line.__init__(self, line)
81 self.is_filename = False
82 self.is_dirname = False
83 self.out_filebase = None
84
85 def gen(self, context = None):
86 if self.is_filename:
87 line = "current_file = \"" + os.path.join(self.out_filebase, self.escape(self.line)) + "\"; of = open(current_file, \"w\")"
88 elif self.is_dirname:
89 dirname = os.path.join(self.out_filebase, self.escape(self.line))
90 line = "if not os.path.exists(\"" + dirname + "\"): os.mkdir(\"" + dirname + "\")"
91 else:
92 line = "of.write(\"" + self.escape(self.line) + "\\n\")"
93 return line
94
95
96class CodeLine(Line):
97 """
98 Container for Python code tag lines.
99 """
100 def __init__(self, line):
101 Line.__init__(self, line)
102
103 def gen(self, context = None):
104 return self.line
105
106
107class Assignment:
108 """
109 Representation of everything we know about {{=name }} tags.
110 Instances of these are used by Assignment lines.
111 """
112 def __init__(self, start, end, name):
113 self.start = start
114 self.end = end
115 self.name = name
116
117
118class AssignmentLine(NormalLine):
119 """
120 Container for normal lines containing assignment tags. Assignment
121 tags must be in ascending order of 'start' value.
122 """
123 def __init__(self, line):
124 NormalLine.__init__(self, line)
125 self.assignments = []
126
127 def add_assignment(self, start, end, name):
128 self.assignments.append(Assignment(start, end, name))
129
130 def gen(self, context = None):
131 line = self.escape(self.line)
132
133 for assignment in self.assignments:
134 replacement = "\" + " + assignment.name + " + \""
135 idx = line.find(ASSIGN_TAG)
136 line = line[:idx] + replacement + line[idx + assignment.end - assignment.start:]
137 if self.is_filename:
138 return "current_file = \"" + os.path.join(self.out_filebase, line) + "\"; of = open(current_file, \"w\")"
139 elif self.is_dirname:
140 dirname = os.path.join(self.out_filebase, line)
141 return "if not os.path.exists(\"" + dirname + "\"): os.mkdir(\"" + dirname + "\")"
142 else:
143 return "of.write(\"" + line + "\\n\")"
144
145
146class InputLine(Line):
147 """
148 Base class for Input lines.
149 """
150 def __init__(self, props, tag, lineno):
151 Line.__init__(self, tag)
152 self.props = props
153 self.lineno = lineno
154
155 try:
156 self.prio = int(props["prio"])
157 except KeyError:
158 self.prio = sys.maxint
159
160 def gen(self, context = None):
161 try:
162 depends_on = self.props["depends-on"]
163 try:
164 depends_on_val = self.props["depends-on-val"]
165 except KeyError:
166 self.parse_error("No 'depends-on-val' for 'depends-on' property",
167 self.lineno, self.line)
168 except KeyError:
169 pass
170
171
172class EditBoxInputLine(InputLine):
173 """
174 Base class for 'editbox' Input lines.
175
176 props:
177 name: example - "Load address"
178 msg: example - "Please enter the load address"
179 result:
180 Sets the value of the variable specified by 'name' to
181 whatever the user typed.
182 """
183 def __init__(self, props, tag, lineno):
184 InputLine.__init__(self, props, tag, lineno)
185
186 def gen(self, context = None):
187 InputLine.gen(self, context)
188 name = self.props["name"]
189 if not name:
190 self.parse_error("No input 'name' property found",
191 self.lineno, self.line)
192 msg = self.props["msg"]
193 if not msg:
194 self.parse_error("No input 'msg' property found",
195 self.lineno, self.line)
196
197 try:
198 default_choice = self.props["default"]
199 except KeyError:
200 default_choice = ""
201
202 msg += " [default: " + default_choice + "]"
203
204 line = name + " = default(raw_input(\"" + msg + " \"), " + name + ")"
205
206 return line
207
208
209class GitRepoEditBoxInputLine(EditBoxInputLine):
210 """
211 Base class for 'editbox' Input lines for user input of remote git
212 repos. This class verifies the existence and connectivity of the
213 specified git repo.
214
215 props:
216 name: example - "Load address"
217 msg: example - "Please enter the load address"
218 result:
219 Sets the value of the variable specified by 'name' to
220 whatever the user typed.
221 """
222 def __init__(self, props, tag, lineno):
223 EditBoxInputLine.__init__(self, props, tag, lineno)
224
225 def gen(self, context = None):
226 EditBoxInputLine.gen(self, context)
227 name = self.props["name"]
228 if not name:
229 self.parse_error("No input 'name' property found",
230 self.lineno, self.line)
231 msg = self.props["msg"]
232 if not msg:
233 self.parse_error("No input 'msg' property found",
234 self.lineno, self.line)
235
236 try:
237 default_choice = self.props["default"]
238 except KeyError:
239 default_choice = ""
240
241 msg += " [default: " + default_choice + "]"
242
243 line = name + " = get_verified_git_repo(\"" + msg + "\"," + name + ")"
244
245 return line
246
247
248class FileEditBoxInputLine(EditBoxInputLine):
249 """
250 Base class for 'editbox' Input lines for user input of existing
251 files. This class verifies the existence of the specified file.
252
253 props:
254 name: example - "Load address"
255 msg: example - "Please enter the load address"
256 result:
257 Sets the value of the variable specified by 'name' to
258 whatever the user typed.
259 """
260 def __init__(self, props, tag, lineno):
261 EditBoxInputLine.__init__(self, props, tag, lineno)
262
263 def gen(self, context = None):
264 EditBoxInputLine.gen(self, context)
265 name = self.props["name"]
266 if not name:
267 self.parse_error("No input 'name' property found",
268 self.lineno, self.line)
269 msg = self.props["msg"]
270 if not msg:
271 self.parse_error("No input 'msg' property found",
272 self.lineno, self.line)
273
274 try:
275 default_choice = self.props["default"]
276 except KeyError:
277 default_choice = ""
278
279 msg += " [default: " + default_choice + "]"
280
281 line = name + " = get_verified_file(\"" + msg + "\"," + name + ", True)"
282
283 return line
284
285
286class BooleanInputLine(InputLine):
287 """
288 Base class for boolean Input lines.
289 props:
290 name: example - "keyboard"
291 msg: example - "Got keyboard?"
292 result:
293 Sets the value of the variable specified by 'name' to "yes" or "no"
294 example - keyboard = "yes"
295 """
296 def __init__(self, props, tag, lineno):
297 InputLine.__init__(self, props, tag, lineno)
298
299 def gen(self, context = None):
300 InputLine.gen(self, context)
301 name = self.props["name"]
302 if not name:
303 self.parse_error("No input 'name' property found",
304 self.lineno, self.line)
305 msg = self.props["msg"]
306 if not msg:
307 self.parse_error("No input 'msg' property found",
308 self.lineno, self.line)
309
310 try:
311 default_choice = self.props["default"]
312 except KeyError:
313 default_choice = ""
314
315 msg += " [default: " + default_choice + "]"
316
317 line = name + " = boolean(raw_input(\"" + msg + " \"), " + name + ")"
318
319 return line
320
321
322class ListInputLine(InputLine):
323 """
324 Base class for List-based Input lines. e.g. Choicelist, Checklist.
325 """
326 __metaclass__ = ABCMeta
327
328 def __init__(self, props, tag, lineno):
329 InputLine.__init__(self, props, tag, lineno)
330 self.choices = []
331
332 def gen_choicepair_list(self):
333 """Generate a list of 2-item val:desc lists from self.choices."""
334 if not self.choices:
335 return None
336
337 choicepair_list = list()
338
339 for choice in self.choices:
340 choicepair = []
341 choicepair.append(choice.val)
342 choicepair.append(choice.desc)
343 choicepair_list.append(choicepair)
344
345 return choicepair_list
346
347 def gen_degenerate_choicepair_list(self, choices):
348 """Generate a list of 2-item val:desc with val=desc from passed-in choices."""
349 choicepair_list = list()
350
351 for choice in choices:
352 choicepair = []
353 choicepair.append(choice)
354 choicepair.append(choice)
355 choicepair_list.append(choicepair)
356
357 return choicepair_list
358
359 def exec_listgen_fn(self, context = None):
360 """
361 Execute the list-generating function contained as a string in
362 the "gen" property.
363 """
364 retval = None
365 try:
366 fname = self.props["gen"]
367 modsplit = fname.split('.')
368 mod_fn = modsplit.pop()
369 mod = '.'.join(modsplit)
370
371 __import__(mod)
372 # python 2.7 has a better way to do this using importlib.import_module
373 m = sys.modules[mod]
374
375 fn = getattr(m, mod_fn)
376 if not fn:
377 self.parse_error("couldn't load function specified for 'gen' property ",
378 self.lineno, self.line)
379 retval = fn(context)
380 if not retval:
381 self.parse_error("function specified for 'gen' property returned nothing ",
382 self.lineno, self.line)
383 except KeyError:
384 pass
385
386 return retval
387
388 def gen_choices_str(self, choicepairs):
389 """
390 Generate a numbered list of choices from a list of choicepairs
391 for display to the user.
392 """
393 choices_str = ""
394
395 for i, choicepair in enumerate(choicepairs):
396 choices_str += "\t" + str(i + 1) + ") " + choicepair[1] + "\n"
397
398 return choices_str
399
400 def gen_choices_val_str(self, choicepairs):
401 """
402 Generate an array of choice values corresponding to the
403 numbered list generated by gen_choices_str().
404 """
405 choices_val_list = "["
406
407 for i, choicepair in enumerate(choicepairs):
408 choices_val_list += "\"" + choicepair[0] + "\","
409 choices_val_list += "]"
410
411 return choices_val_list
412
413 def gen_choices_val_list(self, choicepairs):
414 """
415 Generate an array of choice values corresponding to the
416 numbered list generated by gen_choices_str().
417 """
418 choices_val_list = []
419
420 for i, choicepair in enumerate(choicepairs):
421 choices_val_list.append(choicepair[0])
422
423 return choices_val_list
424
425 def gen_choices_list(self, context = None, checklist = False):
426 """
427 Generate an array of choice values corresponding to the
428 numbered list generated by gen_choices_str().
429 """
430 choices = self.exec_listgen_fn(context)
431 if choices:
432 if len(choices) == 0:
433 self.parse_error("No entries available for input list",
434 self.lineno, self.line)
435 choicepairs = self.gen_degenerate_choicepair_list(choices)
436 else:
437 if len(self.choices) == 0:
438 self.parse_error("No entries available for input list",
439 self.lineno, self.line)
440 choicepairs = self.gen_choicepair_list()
441
442 return choicepairs
443
444 def gen_choices(self, context = None, checklist = False):
445 """
446 Generate an array of choice values corresponding to the
447 numbered list generated by gen_choices_str(), display it to
448 the user, and process the result.
449 """
450 msg = self.props["msg"]
451 if not msg:
452 self.parse_error("No input 'msg' property found",
453 self.lineno, self.line)
454
455 try:
456 default_choice = self.props["default"]
457 except KeyError:
458 default_choice = ""
459
460 msg += " [default: " + default_choice + "]"
461
462 choicepairs = self.gen_choices_list(context, checklist)
463
464 choices_str = self.gen_choices_str(choicepairs)
465 choices_val_list = self.gen_choices_val_list(choicepairs)
466 if checklist:
467 choiceval = default(find_choicevals(raw_input(msg + "\n" + choices_str), choices_val_list), default_choice)
468 else:
469 choiceval = default(find_choiceval(raw_input(msg + "\n" + choices_str), choices_val_list), default_choice)
470
471 return choiceval
472
473
474def find_choiceval(choice_str, choice_list):
475 """
476 Take number as string and return val string from choice_list,
477 empty string if oob. choice_list is a simple python list.
478 """
479 choice_val = ""
480
481 try:
482 choice_idx = int(choice_str)
483 if choice_idx <= len(choice_list):
484 choice_idx -= 1
485 choice_val = choice_list[choice_idx]
486 except ValueError:
487 pass
488
489 return choice_val
490
491
492def find_choicevals(choice_str, choice_list):
493 """
494 Take numbers as space-separated string and return vals list from
495 choice_list, empty list if oob. choice_list is a simple python
496 list.
497 """
498 choice_vals = []
499
500 choices = choice_str.split()
501 for choice in choices:
502 choice_vals.append(find_choiceval(choice, choice_list))
503
504 return choice_vals
505
506
507def default(input_str, name):
508 """
509 Return default if no input_str, otherwise stripped input_str.
510 """
511 if not input_str:
512 return name
513
514 return input_str.strip()
515
516
517def verify_git_repo(giturl):
518 """
519 Verify that the giturl passed in can be connected to. This can be
520 used as a check for the existence of the given repo and/or basic
521 git remote connectivity.
522
523 Returns True if the connection was successful, fals otherwise
524 """
525 if not giturl:
526 return False
527
528 gitcmd = "git ls-remote %s > /dev/null 2>&1" % (giturl)
529 rc = subprocess.call(gitcmd, shell=True)
530 if rc == 0:
531 return True
532
533 return False
534
535
536def get_verified_git_repo(input_str, name):
537 """
538 Return git repo if verified, otherwise loop forever asking user
539 for filename.
540 """
541 msg = input_str.strip() + " "
542
543 giturl = default(raw_input(msg), name)
544
545 while True:
546 if verify_git_repo(giturl):
547 return giturl
548 giturl = default(raw_input(msg), name)
549
550
551def get_verified_file(input_str, name, filename_can_be_null):
552 """
553 Return filename if the file exists, otherwise loop forever asking
554 user for filename.
555 """
556 msg = input_str.strip() + " "
557
558 filename = default(raw_input(msg), name)
559
560 while True:
561 if not filename and filename_can_be_null:
562 return filename
563 if os.path.isfile(filename):
564 return filename
565 filename = default(raw_input(msg), name)
566
567
568def replace_file(replace_this, with_this):
569 """
570 Replace the given file with the contents of filename, retaining
571 the original filename.
572 """
573 try:
574 replace_this.close()
575 shutil.copy(with_this, replace_this.name)
576 except IOError:
577 pass
578
579
580def boolean(input_str, name):
581 """
582 Return lowercase version of first char in string, or value in name.
583 """
584 if not input_str:
585 return name
586
587 str = input_str.lower().strip()
588 if str and str[0] == "y" or str[0] == "n":
589 return str[0]
590 else:
591 return name
592
593
594def strip_base(input_str):
595 """
596 strip '/base' off the end of input_str, so we can use 'base' in
597 the branch names we present to the user.
598 """
599 if input_str and input_str.endswith("/base"):
600 return input_str[:-len("/base")]
601 return input_str.strip()
602
603
604deferred_choices = {}
605
606def gen_choices_defer(input_line, context, checklist = False):
607 """
608 Save the context hashed the name of the input item, which will be
609 passed to the gen function later.
610 """
611 name = input_line.props["name"]
612
613 try:
614 nameappend = input_line.props["nameappend"]
615 except KeyError:
616 nameappend = ""
617
618 try:
619 branches_base = input_line.props["branches_base"]
620 except KeyError:
621 branches_base = ""
622
623 filename = input_line.props["filename"]
624
625 closetag_start = filename.find(CLOSE_TAG)
626
627 if closetag_start != -1:
628 filename = filename[closetag_start + len(CLOSE_TAG):]
629
630 filename = filename.strip()
631 filename = os.path.splitext(filename)[0]
632
633 captured_context = capture_context(context)
634 context["filename"] = filename
635 captured_context["filename"] = filename
636 context["nameappend"] = nameappend
637 captured_context["nameappend"] = nameappend
638 context["branches_base"] = branches_base
639 captured_context["branches_base"] = branches_base
640
641 deferred_choice = (input_line, captured_context, checklist)
642 key = name + "_" + filename + "_" + nameappend
643 deferred_choices[key] = deferred_choice
644
645
646def invoke_deferred_choices(name):
647 """
648 Invoke the choice generation function using the context hashed by
649 'name'.
650 """
651 deferred_choice = deferred_choices[name]
652 input_line = deferred_choice[0]
653 context = deferred_choice[1]
654 checklist = deferred_choice[2]
655
656 context["name"] = name
657
658 choices = input_line.gen_choices(context, checklist)
659
660 return choices
661
662
663class ChoicelistInputLine(ListInputLine):
664 """
665 Base class for choicelist Input lines.
666 props:
667 name: example - "xserver_choice"
668 msg: example - "Please select an xserver for this machine"
669 result:
670 Sets the value of the variable specified by 'name' to whichever Choice was chosen
671 example - xserver_choice = "xserver_vesa"
672 """
673 def __init__(self, props, tag, lineno):
674 ListInputLine.__init__(self, props, tag, lineno)
675
676 def gen(self, context = None):
677 InputLine.gen(self, context)
678
679 gen_choices_defer(self, context)
680 name = self.props["name"]
681 nameappend = context["nameappend"]
682 filename = context["filename"]
683
684 try:
685 default_choice = self.props["default"]
686 except KeyError:
687 default_choice = ""
688
689 line = name + " = default(invoke_deferred_choices(\"" + name + "_" + filename + "_" + nameappend + "\"), \"" + default_choice + "\")"
690
691 return line
692
693
694class ListValInputLine(InputLine):
695 """
696 Abstract base class for choice and checkbox Input lines.
697 """
698 def __init__(self, props, tag, lineno):
699 InputLine.__init__(self, props, tag, lineno)
700
701 try:
702 self.val = self.props["val"]
703 except KeyError:
704 self.parse_error("No input 'val' property found", self.lineno, self.line)
705
706 try:
707 self.desc = self.props["msg"]
708 except KeyError:
709 self.parse_error("No input 'msg' property found", self.lineno, self.line)
710
711
712class ChoiceInputLine(ListValInputLine):
713 """
714 Base class for choicelist item Input lines.
715 """
716 def __init__(self, props, tag, lineno):
717 ListValInputLine.__init__(self, props, tag, lineno)
718
719 def gen(self, context = None):
720 return None
721
722
723class ChecklistInputLine(ListInputLine):
724 """
725 Base class for checklist Input lines.
726 """
727 def __init__(self, props, tag, lineno):
728 ListInputLine.__init__(self, props, tag, lineno)
729
730 def gen(self, context = None):
731 InputLine.gen(self, context)
732
733 gen_choices_defer(self, context, True)
734 name = self.props["name"]
735 nameappend = context["nameappend"]
736 filename = context["filename"]
737
738 try:
739 default_choice = self.props["default"]
740 except KeyError:
741 default_choice = ""
742
743 line = name + " = default(invoke_deferred_choices(\"" + name + "_" + filename + "_" + nameappend + "\"), \"" + default_choice + "\")"
744
745 return line
746
747
748class CheckInputLine(ListValInputLine):
749 """
750 Base class for checklist item Input lines.
751 """
752 def __init__(self, props, tag, lineno):
753 ListValInputLine.__init__(self, props, tag, lineno)
754
755 def gen(self, context = None):
756 return None
757
758
759dirname_substitutions = {}
760
761class SubstrateBase(object):
762 """
763 Base class for both expanded and unexpanded file and dir container
764 objects.
765 """
766 def __init__(self, filename, filebase, out_filebase):
767 self.filename = filename
768 self.filebase = filebase
769 self.translated_filename = filename
770 self.out_filebase = out_filebase
771 self.raw_lines = []
772 self.expanded_lines = []
773 self.prev_choicelist = None
774
775 def parse_error(self, msg, lineno, line):
776 raise SyntaxError("%s: [%s: %d]: %s" % (msg, self.filename, lineno, line))
777
778 def expand_input_tag(self, tag, lineno):
779 """
780 Input tags consist of the word 'input' at the beginning,
781 followed by name:value property pairs which are converted into
782 a dictionary.
783 """
784 propstr = tag[len(INPUT_TAG):]
785
786 props = dict(prop.split(":", 1) for prop in shlex.split(propstr))
787 props["filename"] = self.filename
788
789 input_type = props[INPUT_TYPE_PROPERTY]
790 if not props[INPUT_TYPE_PROPERTY]:
791 self.parse_error("No input 'type' property found", lineno, tag)
792
793 if input_type == "boolean":
794 return BooleanInputLine(props, tag, lineno)
795 if input_type == "edit":
796 return EditBoxInputLine(props, tag, lineno)
797 if input_type == "edit-git-repo":
798 return GitRepoEditBoxInputLine(props, tag, lineno)
799 if input_type == "edit-file":
800 return FileEditBoxInputLine(props, tag, lineno)
801 elif input_type == "choicelist":
802 self.prev_choicelist = ChoicelistInputLine(props, tag, lineno)
803 return self.prev_choicelist
804 elif input_type == "choice":
805 if not self.prev_choicelist:
806 self.parse_error("Found 'choice' input tag but no previous choicelist",
807 lineno, tag)
808 choice = ChoiceInputLine(props, tag, lineno)
809 self.prev_choicelist.choices.append(choice)
810 return choice
811 elif input_type == "checklist":
812 return ChecklistInputLine(props, tag, lineno)
813 elif input_type == "check":
814 return CheckInputLine(props, tag, lineno)
815
816 def expand_assignment_tag(self, start, line, lineno):
817 """
818 Expand all tags in a line.
819 """
820 expanded_line = AssignmentLine(line.rstrip())
821
822 while start != -1:
823 end = line.find(CLOSE_TAG, start)
824 if end == -1:
825 self.parse_error("No close tag found for assignment tag", lineno, line)
826 else:
827 name = line[start + len(ASSIGN_TAG):end].strip()
828 expanded_line.add_assignment(start, end + len(CLOSE_TAG), name)
829 start = line.find(ASSIGN_TAG, end)
830
831 return expanded_line
832
833 def expand_tag(self, line, lineno):
834 """
835 Returns a processed tag line, or None if there was no tag
836
837 The rules for tags are very simple:
838 - No nested tags
839 - Tags start with {{ and end with }}
840 - An assign tag, {{=, can appear anywhere and will
841 be replaced with what the assignment evaluates to
842 - Any other tag occupies the whole line it is on
843 - if there's anything else on the tag line, it's an error
844 - if it starts with 'input', it's an input tag and
845 will only be used for prompting and setting variables
846 - anything else is straight Python
847 - tags are in effect only until the next blank line or tag or 'pass' tag
848 - we don't have indentation in tags, but we need some way to end a block
849 forcefully without blank lines or other tags - that's the 'pass' tag
850 - todo: implement pass tag
851 - directories and filenames can have tags as well, but only assignment
852 and 'if' code lines
853 - directories and filenames are the only case where normal tags can
854 coexist with normal text on the same 'line'
855 """
856 start = line.find(ASSIGN_TAG)
857 if start != -1:
858 return self.expand_assignment_tag(start, line, lineno)
859
860 start = line.find(OPEN_TAG)
861 if start == -1:
862 return None
863
864 end = line.find(CLOSE_TAG, 0)
865 if end == -1:
866 self.parse_error("No close tag found for open tag", lineno, line)
867
868 tag = line[start + len(OPEN_TAG):end].strip()
869
870 if not tag.lstrip().startswith(INPUT_TAG):
871 return CodeLine(tag)
872
873 return self.expand_input_tag(tag, lineno)
874
875 def append_translated_filename(self, filename):
876 """
877 Simply append filename to translated_filename
878 """
879 self.translated_filename = os.path.join(self.translated_filename, filename)
880
881 def get_substituted_file_or_dir_name(self, first_line, tag):
882 """
883 If file or dir names contain name substitutions, return the name
884 to substitute. Note that this is just the file or dirname and
885 doesn't include the path.
886 """
887 filename = first_line.find(tag)
888 if filename != -1:
889 filename += len(tag)
890 substituted_filename = first_line[filename:].strip()
891 this = substituted_filename.find(" this")
892 if this != -1:
893 head, tail = os.path.split(self.filename)
894 substituted_filename = substituted_filename[:this + 1] + tail
895 if tag == DIRNAME_TAG: # get rid of .noinstall in dirname
896 substituted_filename = substituted_filename.split('.')[0]
897
898 return substituted_filename
899
900 def get_substituted_filename(self, first_line):
901 """
902 If a filename contains a name substitution, return the name to
903 substitute. Note that this is just the filename and doesn't
904 include the path.
905 """
906 return self.get_substituted_file_or_dir_name(first_line, FILENAME_TAG)
907
908 def get_substituted_dirname(self, first_line):
909 """
910 If a dirname contains a name substitution, return the name to
911 substitute. Note that this is just the dirname and doesn't
912 include the path.
913 """
914 return self.get_substituted_file_or_dir_name(first_line, DIRNAME_TAG)
915
916 def substitute_filename(self, first_line):
917 """
918 Find the filename in first_line and append it to translated_filename.
919 """
920 substituted_filename = self.get_substituted_filename(first_line)
921 self.append_translated_filename(substituted_filename);
922
923 def substitute_dirname(self, first_line):
924 """
925 Find the dirname in first_line and append it to translated_filename.
926 """
927 substituted_dirname = self.get_substituted_dirname(first_line)
928 self.append_translated_filename(substituted_dirname);
929
930 def is_filename_substitution(self, line):
931 """
932 Do we have a filename subustition?
933 """
934 if line.find(FILENAME_TAG) != -1:
935 return True
936 return False
937
938 def is_dirname_substitution(self, line):
939 """
940 Do we have a dirname subustition?
941 """
942 if line.find(DIRNAME_TAG) != -1:
943 return True
944 return False
945
946 def translate_dirname(self, first_line):
947 """
948 Just save the first_line mapped by filename. The later pass
949 through the directories will look for a dirname.noinstall
950 match and grab the substitution line.
951 """
952 dirname_substitutions[self.filename] = first_line
953
954 def translate_dirnames_in_path(self, path):
955 """
956 Translate dirnames below this file or dir, not including tail.
957 dirname_substititions is keyed on actual untranslated filenames.
958 translated_path contains the subsititutions for each element.
959 """
960 remainder = path[len(self.filebase)+1:]
961 translated_path = untranslated_path = self.filebase
962
963 untranslated_dirs = remainder.split(os.sep)
964
965 for dir in untranslated_dirs:
966 key = os.path.join(untranslated_path, dir + '.noinstall')
967 try:
968 first_line = dirname_substitutions[key]
969 except KeyError:
970 translated_path = os.path.join(translated_path, dir)
971 untranslated_path = os.path.join(untranslated_path, dir)
972 continue
973 substituted_dir = self.get_substituted_dirname(first_line)
974 translated_path = os.path.join(translated_path, substituted_dir)
975 untranslated_path = os.path.join(untranslated_path, dir)
976
977 return translated_path
978
979 def translate_file_or_dir_name(self):
980 """
981 Originally we were allowed to use open/close/assign tags and python
982 code in the filename, which fit in nicely with the way we
983 processed the templates and generated code. Now that we can't
984 do that, we make those tags proper file contents and have this
985 pass substitute the nice but non-functional names with those
986 'strange' ones, and then proceed as usual.
987
988 So, if files or matching dir<.noinstall> files contain
989 filename substitutions, this function translates them into the
990 corresponding 'strange' names, which future passes will expand
991 as they always have. The resulting pathname is kept in the
992 file or directory's translated_filename. Another way to think
993 about it is that self.filename is the input filename, and
994 translated_filename is the output filename before expansion.
995 """
996 # remove leaf file or dirname
997 head, tail = os.path.split(self.filename)
998 translated_path = self.translate_dirnames_in_path(head)
999 self.translated_filename = translated_path
1000
1001 # This is a dirname - does it have a matching .noinstall with
1002 # a substitution? If so, apply the dirname subsititution.
1003 if not os.path.isfile(self.filename):
1004 key = self.filename + ".noinstall"
1005 try:
1006 first_line = dirname_substitutions[key]
1007 except KeyError:
1008 self.append_translated_filename(tail)
1009 return
1010 self.substitute_dirname(first_line)
1011 return
1012
1013 f = open(self.filename)
1014 first_line = f.readline()
1015 f.close()
1016
1017 # This is a normal filename not needing translation, just use
1018 # it as-is.
1019 if not first_line or not first_line.startswith("#"):
1020 self.append_translated_filename(tail)
1021 return
1022
1023 # If we have a filename substitution (first line in the file
1024 # is a FILENAME_TAG line) do the substitution now. If we have
1025 # a dirname substitution (DIRNAME_TAG in dirname.noinstall
1026 # meta-file), hash it so we can apply it when we see the
1027 # matching dirname later. Otherwise we have a regular
1028 # filename, just use it as-is.
1029 if self.is_filename_substitution(first_line):
1030 self.substitute_filename(first_line)
1031 elif self.is_dirname_substitution(first_line):
1032 self.translate_dirname(first_line)
1033 else:
1034 self.append_translated_filename(tail)
1035
1036 def expand_file_or_dir_name(self):
1037 """
1038 Expand file or dir names into codeline. Dirnames and
1039 filenames can only have assignments or if statements. First
1040 translate if statements into CodeLine + (dirname or filename
1041 creation).
1042 """
1043 lineno = 0
1044
1045 line = self.translated_filename[len(self.filebase):]
1046 if line.startswith("/"):
1047 line = line[1:]
1048 opentag_start = -1
1049
1050 start = line.find(OPEN_TAG)
1051 while start != -1:
1052 if not line[start:].startswith(ASSIGN_TAG):
1053 opentag_start = start
1054 break
1055 start += len(ASSIGN_TAG)
1056 start = line.find(OPEN_TAG, start)
1057
1058 if opentag_start != -1:
1059 end = line.find(CLOSE_TAG, opentag_start)
1060 if end == -1:
1061 self.parse_error("No close tag found for open tag", lineno, line)
1062 # we have a {{ tag i.e. code
1063 tag = line[opentag_start + len(OPEN_TAG):end].strip()
1064 if not tag.lstrip().startswith(IF_TAG):
1065 self.parse_error("Only 'if' tags are allowed in file or directory names",
1066 lineno, line)
1067 self.expanded_lines.append(CodeLine(tag))
1068
1069 # everything after }} is the actual filename (possibly with assignments)
1070 # everything before is the pathname
1071 line = line[:opentag_start] + line[end + len(CLOSE_TAG):].strip()
1072
1073 assign_start = line.find(ASSIGN_TAG)
1074 if assign_start != -1:
1075 assignment_tag = self.expand_assignment_tag(assign_start, line, lineno)
1076 if isinstance(self, SubstrateFile):
1077 assignment_tag.is_filename = True
1078 assignment_tag.out_filebase = self.out_filebase
1079 elif isinstance(self, SubstrateDir):
1080 assignment_tag.is_dirname = True
1081 assignment_tag.out_filebase = self.out_filebase
1082 self.expanded_lines.append(assignment_tag)
1083 return
1084
1085 normal_line = NormalLine(line)
1086 if isinstance(self, SubstrateFile):
1087 normal_line.is_filename = True
1088 normal_line.out_filebase = self.out_filebase
1089 elif isinstance(self, SubstrateDir):
1090 normal_line.is_dirname = True
1091 normal_line.out_filebase = self.out_filebase
1092 self.expanded_lines.append(normal_line)
1093
1094 def expand(self):
1095 """
1096 Expand the file or dir name first, eventually this ends up
1097 creating the file or dir.
1098 """
1099 self.translate_file_or_dir_name()
1100 self.expand_file_or_dir_name()
1101
1102
1103class SubstrateFile(SubstrateBase):
1104 """
1105 Container for both expanded and unexpanded substrate files.
1106 """
1107 def __init__(self, filename, filebase, out_filebase):
1108 SubstrateBase.__init__(self, filename, filebase, out_filebase)
1109
1110 def read(self):
1111 if self.raw_lines:
1112 return
1113 f = open(self.filename)
1114 self.raw_lines = f.readlines()
1115
1116 def expand(self):
1117 """Expand the contents of all template tags in the file."""
1118 SubstrateBase.expand(self)
1119 self.read()
1120
1121 for lineno, line in enumerate(self.raw_lines):
1122 # only first line can be a filename substitition
1123 if lineno == 0 and line.startswith("#") and FILENAME_TAG in line:
1124 continue # skip it - we've already expanded it
1125 expanded_line = self.expand_tag(line, lineno + 1) # humans not 0-based
1126 if not expanded_line:
1127 expanded_line = NormalLine(line.rstrip())
1128 self.expanded_lines.append(expanded_line)
1129
1130 def gen(self, context = None):
1131 """Generate the code that generates the BSP."""
1132 base_indent = 0
1133
1134 indent = new_indent = base_indent
1135
1136 for line in self.expanded_lines:
1137 genline = line.gen(context)
1138 if not genline:
1139 continue
1140 if isinstance(line, InputLine):
1141 line.generated_line = genline
1142 continue
1143 if genline.startswith(OPEN_START):
1144 if indent == 1:
1145 base_indent = 1
1146 if indent:
1147 if genline == BLANKLINE_STR or (not genline.startswith(NORMAL_START)
1148 and not genline.startswith(OPEN_START)):
1149 indent = new_indent = base_indent
1150 if genline.endswith(":"):
1151 new_indent = base_indent + 1
1152 line.generated_line = (indent * INDENT_STR) + genline
1153 indent = new_indent
1154
1155
1156class SubstrateDir(SubstrateBase):
1157 """
1158 Container for both expanded and unexpanded substrate dirs.
1159 """
1160 def __init__(self, filename, filebase, out_filebase):
1161 SubstrateBase.__init__(self, filename, filebase, out_filebase)
1162
1163 def expand(self):
1164 SubstrateBase.expand(self)
1165
1166 def gen(self, context = None):
1167 """Generate the code that generates the BSP."""
1168 indent = new_indent = 0
1169 for line in self.expanded_lines:
1170 genline = line.gen(context)
1171 if not genline:
1172 continue
1173 if genline.endswith(":"):
1174 new_indent = 1
1175 else:
1176 new_indent = 0
1177 line.generated_line = (indent * INDENT_STR) + genline
1178 indent = new_indent
1179
1180
1181def expand_target(target, all_files, out_filebase):
1182 """
1183 Expand the contents of all template tags in the target. This
1184 means removing tags and categorizing or creating lines so that
1185 future passes can process and present input lines and generate the
1186 corresponding lines of the Python program that will be exec'ed to
1187 actually produce the final BSP. 'all_files' includes directories.
1188 """
1189 for root, dirs, files in os.walk(target):
1190 for file in files:
1191 if file.endswith("~") or file.endswith("#"):
1192 continue
1193 f = os.path.join(root, file)
1194 sfile = SubstrateFile(f, target, out_filebase)
1195 sfile.expand()
1196 all_files.append(sfile)
1197
1198 for dir in dirs:
1199 d = os.path.join(root, dir)
1200 sdir = SubstrateDir(d, target, out_filebase)
1201 sdir.expand()
1202 all_files.append(sdir)
1203
1204
1205def gen_program_machine_lines(machine, program_lines):
1206 """
1207 Use the input values we got from the command line.
1208 """
1209 line = "machine = \"" + machine + "\""
1210 program_lines.append(line)
1211
1212 line = "layer_name = \"" + machine + "\""
1213 program_lines.append(line)
1214
1215
1216def sort_inputlines(input_lines):
1217 """Sort input lines according to priority (position)."""
1218 input_lines.sort(key = lambda l: l.prio)
1219
1220
1221def find_parent_dependency(lines, depends_on):
1222 for i, line in lines:
1223 if isinstance(line, CodeLine):
1224 continue
1225 if line.props["name"] == depends_on:
1226 return i
1227
1228 return -1
1229
1230
1231def process_inputline_dependencies(input_lines, all_inputlines):
1232 """If any input lines depend on others, put the others first."""
1233 for line in input_lines:
1234 if isinstance(line, InputLineGroup):
1235 group_inputlines = []
1236 process_inputline_dependencies(line.group, group_inputlines)
1237 line.group = group_inputlines
1238 all_inputlines.append(line)
1239 continue
1240
1241 if isinstance(line, CodeLine) or isinstance(line, NormalLine):
1242 all_inputlines.append(line)
1243 continue
1244
1245 try:
1246 depends_on = line.props["depends-on"]
1247 depends_codeline = "if " + line.props["depends-on"] + " == \"" + line.props["depends-on-val"] + "\":"
1248 all_inputlines.append(CodeLine(depends_codeline))
1249 all_inputlines.append(line)
1250 except KeyError:
1251 all_inputlines.append(line)
1252
1253
1254def conditional_filename(filename):
1255 """
1256 Check if the filename itself contains a conditional statement. If
1257 so, return a codeline for it.
1258 """
1259 opentag_start = filename.find(OPEN_TAG)
1260
1261 if opentag_start != -1:
1262 if filename[opentag_start:].startswith(ASSIGN_TAG):
1263 return None
1264 end = filename.find(CLOSE_TAG, opentag_start)
1265 if end == -1:
1266 print "No close tag found for open tag in filename %s" % filename
1267 sys.exit(1)
1268
1269 # we have a {{ tag i.e. code
1270 tag = filename[opentag_start + len(OPEN_TAG):end].strip()
1271 if not tag.lstrip().startswith(IF_TAG):
1272 print "Only 'if' tags are allowed in file or directory names, filename: %s" % filename
1273 sys.exit(1)
1274
1275 return CodeLine(tag)
1276
1277 return None
1278
1279
1280class InputLineGroup(InputLine):
1281 """
1282 InputLine that does nothing but group other input lines
1283 corresponding to all the input lines in a SubstrateFile so they
1284 can be generated as a group. prio is the only property used.
1285 """
1286 def __init__(self, codeline):
1287 InputLine.__init__(self, {}, "", 0)
1288 self.group = []
1289 self.prio = sys.maxint
1290 self.group.append(codeline)
1291
1292 def append(self, line):
1293 self.group.append(line)
1294 if line.prio < self.prio:
1295 self.prio = line.prio
1296
1297 def len(self):
1298 return len(self.group)
1299
1300
1301def gather_inputlines(files):
1302 """
1303 Gather all the InputLines - we want to generate them first.
1304 """
1305 all_inputlines = []
1306 input_lines = []
1307
1308 for file in files:
1309 if isinstance(file, SubstrateFile):
1310 group = None
1311 basename = os.path.basename(file.translated_filename)
1312
1313 codeline = conditional_filename(basename)
1314 if codeline:
1315 group = InputLineGroup(codeline)
1316
1317 have_condition = False
1318 condition_to_write = None
1319 for line in file.expanded_lines:
1320 if isinstance(line, CodeLine):
1321 have_condition = True
1322 condition_to_write = line
1323 continue
1324 if isinstance(line, InputLine):
1325 if group:
1326 if condition_to_write:
1327 condition_to_write.prio = line.prio
1328 condition_to_write.discard = True
1329 group.append(condition_to_write)
1330 condition_to_write = None
1331 group.append(line)
1332 else:
1333 if condition_to_write:
1334 condition_to_write.prio = line.prio
1335 condition_to_write.discard = True
1336 input_lines.append(condition_to_write)
1337 condition_to_write = None
1338 input_lines.append(line)
1339 else:
1340 if condition_to_write:
1341 condition_to_write = None
1342 if have_condition:
1343 if not line.line.strip():
1344 line.discard = True
1345 input_lines.append(line)
1346 have_condition = False
1347
1348 if group and group.len() > 1:
1349 input_lines.append(group)
1350
1351 sort_inputlines(input_lines)
1352 process_inputline_dependencies(input_lines, all_inputlines)
1353
1354 return all_inputlines
1355
1356
1357def run_program_lines(linelist, codedump):
1358 """
1359 For a single file, print all the python code into a buf and execute it.
1360 """
1361 buf = "\n".join(linelist)
1362
1363 if codedump:
1364 of = open("bspgen.out", "w")
1365 of.write(buf)
1366 of.close()
1367 exec buf
1368
1369
1370def gen_target(files, context = None):
1371 """
1372 Generate the python code for each file.
1373 """
1374 for file in files:
1375 file.gen(context)
1376
1377
1378def gen_program_header_lines(program_lines):
1379 """
1380 Generate any imports we need.
1381 """
1382 program_lines.append("current_file = \"\"")
1383
1384
1385def gen_supplied_property_vals(properties, program_lines):
1386 """
1387 Generate user-specified entries for input values instead of
1388 generating input prompts.
1389 """
1390 for name, val in properties.iteritems():
1391 program_line = name + " = \"" + val + "\""
1392 program_lines.append(program_line)
1393
1394
1395def gen_initial_property_vals(input_lines, program_lines):
1396 """
1397 Generate null or default entries for input values, so we don't
1398 have undefined variables.
1399 """
1400 for line in input_lines:
1401 if isinstance(line, InputLineGroup):
1402 gen_initial_property_vals(line.group, program_lines)
1403 continue
1404
1405 if isinstance(line, InputLine):
1406 try:
1407 name = line.props["name"]
1408 try:
1409 default_val = "\"" + line.props["default"] + "\""
1410 except:
1411 default_val = "\"\""
1412 program_line = name + " = " + default_val
1413 program_lines.append(program_line)
1414 except KeyError:
1415 pass
1416
1417
1418def gen_program_input_lines(input_lines, program_lines, context, in_group = False):
1419 """
1420 Generate only the input lines used for prompting the user. For
1421 that, we only have input lines and CodeLines that affect the next
1422 input line.
1423 """
1424 indent = new_indent = 0
1425
1426 for line in input_lines:
1427 if isinstance(line, InputLineGroup):
1428 gen_program_input_lines(line.group, program_lines, context, True)
1429 continue
1430 if not line.line.strip():
1431 continue
1432
1433 genline = line.gen(context)
1434 if not genline:
1435 continue
1436 if genline.endswith(":"):
1437 new_indent += 1
1438 else:
1439 if indent > 1 or (not in_group and indent):
1440 new_indent -= 1
1441
1442 line.generated_line = (indent * INDENT_STR) + genline
1443 program_lines.append(line.generated_line)
1444
1445 indent = new_indent
1446
1447
1448def gen_program_lines(target_files, program_lines):
1449 """
1450 Generate the program lines that make up the BSP generation
1451 program. This appends the generated lines of all target_files to
1452 program_lines, and skips input lines, which are dealt with
1453 separately, or omitted.
1454 """
1455 for file in target_files:
1456 if file.filename.endswith("noinstall"):
1457 continue
1458
1459 for line in file.expanded_lines:
1460 if isinstance(line, InputLine):
1461 continue
1462 if line.discard:
1463 continue
1464
1465 program_lines.append(line.generated_line)
1466
1467
1468def create_context(machine, arch, scripts_path):
1469 """
1470 Create a context object for use in deferred function invocation.
1471 """
1472 context = {}
1473
1474 context["machine"] = machine
1475 context["arch"] = arch
1476 context["scripts_path"] = scripts_path
1477
1478 return context
1479
1480
1481def capture_context(context):
1482 """
1483 Create a context object for use in deferred function invocation.
1484 """
1485 captured_context = {}
1486
1487 captured_context["machine"] = context["machine"]
1488 captured_context["arch"] = context["arch"]
1489 captured_context["scripts_path"] = context["scripts_path"]
1490
1491 return captured_context
1492
1493
1494def expand_targets(context, bsp_output_dir, expand_common=True):
1495 """
1496 Expand all the tags in both the common and machine-specific
1497 'targets'.
1498
1499 If expand_common is False, don't expand the common target (this
1500 option is used to create special-purpose layers).
1501 """
1502 target_files = []
1503
1504 machine = context["machine"]
1505 arch = context["arch"]
1506 scripts_path = context["scripts_path"]
1507
1508 lib_path = scripts_path + '/lib'
1509 bsp_path = lib_path + '/bsp'
1510 arch_path = bsp_path + '/substrate/target/arch'
1511
1512 if expand_common:
1513 common = os.path.join(arch_path, "common")
1514 expand_target(common, target_files, bsp_output_dir)
1515
1516 arches = os.listdir(arch_path)
1517 if arch not in arches or arch == "common":
1518 print "Invalid karch, exiting\n"
1519 sys.exit(1)
1520
1521 target = os.path.join(arch_path, arch)
1522 expand_target(target, target_files, bsp_output_dir)
1523
1524 gen_target(target_files, context)
1525
1526 return target_files
1527
1528
1529def yocto_common_create(machine, target, scripts_path, layer_output_dir, codedump, properties_file, properties_str="", expand_common=True):
1530 """
1531 Common layer-creation code
1532
1533 machine - user-defined machine name (if needed, will generate 'machine' var)
1534 target - the 'target' the layer will be based on, must be one in
1535 scripts/lib/bsp/substrate/target/arch
1536 scripts_path - absolute path to yocto /scripts dir
1537 layer_output_dir - dirname to create for layer
1538 codedump - dump generated code to bspgen.out
1539 properties_file - use values from this file if nonempty i.e no prompting
1540 properties_str - use values from this string if nonempty i.e no prompting
1541 expand_common - boolean, use the contents of (for bsp layers) arch/common
1542 """
1543 if os.path.exists(layer_output_dir):
1544 print "\nlayer output dir already exists, exiting. (%s)" % layer_output_dir
1545 sys.exit(1)
1546
1547 properties = None
1548
1549 if properties_file:
1550 try:
1551 infile = open(properties_file, "r")
1552 except IOError:
1553 print "Couldn't open properties file %s for reading, exiting" % properties_file
1554 sys.exit(1)
1555
1556 properties = json.load(infile)
1557
1558 if properties_str and not properties:
1559 properties = json.loads(properties_str)
1560
1561 os.mkdir(layer_output_dir)
1562
1563 context = create_context(machine, target, scripts_path)
1564 target_files = expand_targets(context, layer_output_dir, expand_common)
1565
1566 input_lines = gather_inputlines(target_files)
1567
1568 program_lines = []
1569
1570 gen_program_header_lines(program_lines)
1571
1572 gen_initial_property_vals(input_lines, program_lines)
1573
1574 if properties:
1575 gen_supplied_property_vals(properties, program_lines)
1576
1577 gen_program_machine_lines(machine, program_lines)
1578
1579 if not properties:
1580 gen_program_input_lines(input_lines, program_lines, context)
1581
1582 gen_program_lines(target_files, program_lines)
1583
1584 run_program_lines(program_lines, codedump)
1585
1586
1587def yocto_layer_create(layer_name, scripts_path, layer_output_dir, codedump, properties_file, properties=""):
1588 """
1589 Create yocto layer
1590
1591 layer_name - user-defined layer name
1592 scripts_path - absolute path to yocto /scripts dir
1593 layer_output_dir - dirname to create for layer
1594 codedump - dump generated code to bspgen.out
1595 properties_file - use values from this file if nonempty i.e no prompting
1596 properties - use values from this string if nonempty i.e no prompting
1597 """
1598 yocto_common_create(layer_name, "layer", scripts_path, layer_output_dir, codedump, properties_file, properties, False)
1599
1600 print "\nNew layer created in %s.\n" % (layer_output_dir)
1601 print "Don't forget to add it to your BBLAYERS (for details see %s\README)." % (layer_output_dir)
1602
1603
1604def yocto_bsp_create(machine, arch, scripts_path, bsp_output_dir, codedump, properties_file, properties=None):
1605 """
1606 Create bsp
1607
1608 machine - user-defined machine name
1609 arch - the arch the bsp will be based on, must be one in
1610 scripts/lib/bsp/substrate/target/arch
1611 scripts_path - absolute path to yocto /scripts dir
1612 bsp_output_dir - dirname to create for BSP
1613 codedump - dump generated code to bspgen.out
1614 properties_file - use values from this file if nonempty i.e no prompting
1615 properties - use values from this string if nonempty i.e no prompting
1616 """
1617 yocto_common_create(machine, arch, scripts_path, bsp_output_dir, codedump, properties_file, properties)
1618
1619 print "\nNew %s BSP created in %s" % (arch, bsp_output_dir)
1620
1621
1622def print_dict(items, indent = 0):
1623 """
1624 Print the values in a possibly nested dictionary.
1625 """
1626 for key, val in items.iteritems():
1627 print " "*indent + "\"%s\" :" % key,
1628 if type(val) == dict:
1629 print "{"
1630 print_dict(val, indent + 1)
1631 print " "*indent + "}"
1632 else:
1633 print "%s" % val
1634
1635
1636def get_properties(input_lines):
1637 """
1638 Get the complete set of properties for all the input items in the
1639 BSP, as a possibly nested dictionary.
1640 """
1641 properties = {}
1642
1643 for line in input_lines:
1644 if isinstance(line, InputLineGroup):
1645 statement = line.group[0].line
1646 group_properties = get_properties(line.group)
1647 properties[statement] = group_properties
1648 continue
1649
1650 if not isinstance(line, InputLine):
1651 continue
1652
1653 if isinstance(line, ChoiceInputLine):
1654 continue
1655
1656 props = line.props
1657 item = {}
1658 name = props["name"]
1659 for key, val in props.items():
1660 if not key == "name":
1661 item[key] = val
1662 properties[name] = item
1663
1664 return properties
1665
1666
1667def yocto_layer_list_properties(arch, scripts_path, properties_file, expand_common=True):
1668 """
1669 List the complete set of properties for all the input items in the
1670 layer. If properties_file is non-null, write the complete set of
1671 properties as a nested JSON object corresponding to a possibly
1672 nested dictionary.
1673 """
1674 context = create_context("unused", arch, scripts_path)
1675 target_files = expand_targets(context, "unused", expand_common)
1676
1677 input_lines = gather_inputlines(target_files)
1678
1679 properties = get_properties(input_lines)
1680 if properties_file:
1681 try:
1682 of = open(properties_file, "w")
1683 except IOError:
1684 print "Couldn't open properties file %s for writing, exiting" % properties_file
1685 sys.exit(1)
1686
1687 json.dump(properties, of)
1688
1689 print_dict(properties)
1690
1691
1692def split_nested_property(property):
1693 """
1694 A property name of the form x.y describes a nested property
1695 i.e. the property y is contained within x and can be addressed
1696 using standard JSON syntax for nested properties. Note that if a
1697 property name itself contains '.', it should be contained in
1698 double quotes.
1699 """
1700 splittable_property = ""
1701 in_quotes = False
1702 for c in property:
1703 if c == '.' and not in_quotes:
1704 splittable_property += '\n'
1705 continue
1706 if c == '"':
1707 in_quotes = not in_quotes
1708 splittable_property += c
1709
1710 split_properties = splittable_property.split('\n')
1711
1712 if len(split_properties) > 1:
1713 return split_properties
1714
1715 return None
1716
1717
1718def find_input_line_group(substring, input_lines):
1719 """
1720 Find and return the InputLineGroup containing the specified substring.
1721 """
1722 for line in input_lines:
1723 if isinstance(line, InputLineGroup):
1724 if substring in line.group[0].line:
1725 return line
1726
1727 return None
1728
1729
1730def find_input_line(name, input_lines):
1731 """
1732 Find the input line with the specified name.
1733 """
1734 for line in input_lines:
1735 if isinstance(line, InputLineGroup):
1736 l = find_input_line(name, line.group)
1737 if l:
1738 return l
1739
1740 if isinstance(line, InputLine):
1741 try:
1742 if line.props["name"] == name:
1743 return line
1744 if line.props["name"] + "_" + line.props["nameappend"] == name:
1745 return line
1746 except KeyError:
1747 pass
1748
1749 return None
1750
1751
1752def print_values(type, values_list):
1753 """
1754 Print the values in the given list of values.
1755 """
1756 if type == "choicelist":
1757 for value in values_list:
1758 print "[\"%s\", \"%s\"]" % (value[0], value[1])
1759 elif type == "boolean":
1760 for value in values_list:
1761 print "[\"%s\", \"%s\"]" % (value[0], value[1])
1762
1763
1764def yocto_layer_list_property_values(arch, property, scripts_path, properties_file, expand_common=True):
1765 """
1766 List the possible values for a given input property. If
1767 properties_file is non-null, write the complete set of properties
1768 as a JSON object corresponding to an array of possible values.
1769 """
1770 context = create_context("unused", arch, scripts_path)
1771 context["name"] = property
1772
1773 target_files = expand_targets(context, "unused", expand_common)
1774
1775 input_lines = gather_inputlines(target_files)
1776
1777 properties = get_properties(input_lines)
1778
1779 nested_properties = split_nested_property(property)
1780 if nested_properties:
1781 # currently the outer property of a nested property always
1782 # corresponds to an input line group
1783 input_line_group = find_input_line_group(nested_properties[0], input_lines)
1784 if input_line_group:
1785 input_lines[:] = input_line_group.group[1:]
1786 # The inner property of a nested property name is the
1787 # actual property name we want, so reset to that
1788 property = nested_properties[1]
1789
1790 input_line = find_input_line(property, input_lines)
1791 if not input_line:
1792 print "Couldn't find values for property %s" % property
1793 return
1794
1795 values_list = []
1796
1797 type = input_line.props["type"]
1798 if type == "boolean":
1799 values_list.append(["y", "n"])
1800 elif type == "choicelist" or type == "checklist":
1801 try:
1802 gen_fn = input_line.props["gen"]
1803 if nested_properties:
1804 context["filename"] = nested_properties[0]
1805 try:
1806 context["branches_base"] = input_line.props["branches_base"]
1807 except KeyError:
1808 context["branches_base"] = None
1809 values_list = input_line.gen_choices_list(context, False)
1810 except KeyError:
1811 for choice in input_line.choices:
1812 choicepair = []
1813 choicepair.append(choice.val)
1814 choicepair.append(choice.desc)
1815 values_list.append(choicepair)
1816
1817 if properties_file:
1818 try:
1819 of = open(properties_file, "w")
1820 except IOError:
1821 print "Couldn't open properties file %s for writing, exiting" % properties_file
1822 sys.exit(1)
1823
1824 json.dump(values_list, of)
1825
1826 print_values(type, values_list)
1827
1828
1829def yocto_bsp_list(args, scripts_path, properties_file):
1830 """
1831 Print available architectures, or the complete list of properties
1832 defined by the BSP, or the possible values for a particular BSP
1833 property.
1834 """
1835 if len(args) < 1:
1836 return False
1837
1838 if args[0] == "karch":
1839 lib_path = scripts_path + '/lib'
1840 bsp_path = lib_path + '/bsp'
1841 arch_path = bsp_path + '/substrate/target/arch'
1842 print "Architectures available:"
1843 for arch in os.listdir(arch_path):
1844 if arch == "common" or arch == "layer":
1845 continue
1846 print " %s" % arch
1847 return True
1848 else:
1849 arch = args[0]
1850
1851 if len(args) < 2 or len(args) > 3:
1852 return False
1853
1854 if len(args) == 2:
1855 if args[1] == "properties":
1856 yocto_layer_list_properties(arch, scripts_path, properties_file)
1857 else:
1858 return False
1859
1860 if len(args) == 3:
1861 if args[1] == "property":
1862 yocto_layer_list_property_values(arch, args[2], scripts_path, properties_file)
1863 else:
1864 return False
1865
1866 return True
1867
1868
1869def yocto_layer_list(args, scripts_path, properties_file):
1870 """
1871 Print the complete list of input properties defined by the layer,
1872 or the possible values for a particular layer property.
1873 """
1874 if len(args) < 1:
1875 return False
1876
1877 if len(args) < 1 or len(args) > 2:
1878 return False
1879
1880 if len(args) == 1:
1881 if args[0] == "properties":
1882 yocto_layer_list_properties("layer", scripts_path, properties_file, False)
1883 else:
1884 return False
1885
1886 if len(args) == 2:
1887 if args[0] == "property":
1888 yocto_layer_list_property_values("layer", args[1], scripts_path, properties_file, False)
1889 else:
1890 return False
1891
1892 return True
1893
1894
1895def map_standard_kbranch(need_new_kbranch, new_kbranch, existing_kbranch):
1896 """
1897 Return the linux-yocto bsp branch to use with the specified
1898 kbranch. This handles the -standard variants for 3.4 and 3.8; the
1899 other variants don't need mappings.
1900 """
1901 if need_new_kbranch == "y":
1902 kbranch = new_kbranch
1903 else:
1904 kbranch = existing_kbranch
1905
1906 if kbranch.startswith("standard/common-pc-64"):
1907 return "bsp/common-pc-64/common-pc-64-standard.scc"
1908 if kbranch.startswith("standard/common-pc"):
1909 return "bsp/common-pc/common-pc-standard.scc"
1910 else:
1911 return "ktypes/standard/standard.scc"
1912
1913
1914def map_preempt_rt_kbranch(need_new_kbranch, new_kbranch, existing_kbranch):
1915 """
1916 Return the linux-yocto bsp branch to use with the specified
1917 kbranch. This handles the -preempt-rt variants for 3.4 and 3.8;
1918 the other variants don't need mappings.
1919 """
1920 if need_new_kbranch == "y":
1921 kbranch = new_kbranch
1922 else:
1923 kbranch = existing_kbranch
1924
1925 if kbranch.startswith("standard/preempt-rt/common-pc-64"):
1926 return "bsp/common-pc-64/common-pc-64-preempt-rt.scc"
1927 if kbranch.startswith("standard/preempt-rt/common-pc"):
1928 return "bsp/common-pc/common-pc-preempt-rt.scc"
1929 else:
1930 return "ktypes/preempt-rt/preempt-rt.scc"
1931
1932
1933def map_tiny_kbranch(need_new_kbranch, new_kbranch, existing_kbranch):
1934 """
1935 Return the linux-yocto bsp branch to use with the specified
1936 kbranch. This handles the -tiny variants for 3.4 and 3.8; the
1937 other variants don't need mappings.
1938 """
1939 if need_new_kbranch == "y":
1940 kbranch = new_kbranch
1941 else:
1942 kbranch = existing_kbranch
1943
1944 if kbranch.startswith("standard/tiny/common-pc"):
1945 return "bsp/common-pc/common-pc-tiny.scc"
1946 else:
1947 return "ktypes/tiny/tiny.scc"
diff --git a/scripts/lib/bsp/help.py b/scripts/lib/bsp/help.py
new file mode 100644
index 0000000000..7c436d6be0
--- /dev/null
+++ b/scripts/lib/bsp/help.py
@@ -0,0 +1,1043 @@
1# ex:ts=4:sw=4:sts=4:et
2# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
3#
4# Copyright (c) 2012, Intel Corporation.
5# All rights reserved.
6#
7# This program is free software; you can redistribute it and/or modify
8# it under the terms of the GNU General Public License version 2 as
9# published by the Free Software Foundation.
10#
11# This program is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14# GNU General Public License for more details.
15#
16# You should have received a copy of the GNU General Public License along
17# with this program; if not, write to the Free Software Foundation, Inc.,
18# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19#
20# DESCRIPTION
21# This module implements some basic help invocation functions along
22# with the bulk of the help topic text for the Yocto BSP Tools.
23#
24# AUTHORS
25# Tom Zanussi <tom.zanussi (at] intel.com>
26#
27
28import subprocess
29import logging
30
31
32def subcommand_error(args):
33 logging.info("invalid subcommand %s" % args[0])
34
35
36def display_help(subcommand, subcommands):
37 """
38 Display help for subcommand.
39 """
40 if subcommand not in subcommands:
41 return False
42
43 help = subcommands.get(subcommand, subcommand_error)[2]
44 pager = subprocess.Popen('less', stdin=subprocess.PIPE)
45 pager.communicate(help)
46
47 return True
48
49
50def yocto_help(args, usage_str, subcommands):
51 """
52 Subcommand help dispatcher.
53 """
54 if len(args) == 1 or not display_help(args[1], subcommands):
55 print(usage_str)
56
57
58def invoke_subcommand(args, parser, main_command_usage, subcommands):
59 """
60 Dispatch to subcommand handler borrowed from combo-layer.
61 Should use argparse, but has to work in 2.6.
62 """
63 if not args:
64 logging.error("No subcommand specified, exiting")
65 parser.print_help()
66 elif args[0] == "help":
67 yocto_help(args, main_command_usage, subcommands)
68 elif args[0] not in subcommands:
69 logging.error("Unsupported subcommand %s, exiting\n" % (args[0]))
70 parser.print_help()
71 else:
72 usage = subcommands.get(args[0], subcommand_error)[1]
73 subcommands.get(args[0], subcommand_error)[0](args[1:], usage)
74
75
76##
77# yocto-bsp help and usage strings
78##
79
80yocto_bsp_usage = """
81
82 Create a customized Yocto BSP layer.
83
84 usage: yocto-bsp [--version] [--help] COMMAND [ARGS]
85
86 Current 'yocto-bsp' commands are:
87 create Create a new Yocto BSP
88 list List available values for options and BSP properties
89
90 See 'yocto-bsp help COMMAND' for more information on a specific command.
91"""
92
93yocto_bsp_help_usage = """
94
95 usage: yocto-bsp help <subcommand>
96
97 This command displays detailed help for the specified subcommand.
98"""
99
100yocto_bsp_create_usage = """
101
102 Create a new Yocto BSP
103
104 usage: yocto-bsp create <bsp-name> <karch> [-o <DIRNAME> | --outdir <DIRNAME>]
105 [-i <JSON PROPERTY FILE> | --infile <JSON PROPERTY_FILE>]
106
107 This command creates a Yocto BSP based on the specified parameters.
108 The new BSP will be a new Yocto BSP layer contained by default within
109 the top-level directory specified as 'meta-bsp-name'. The -o option
110 can be used to place the BSP layer in a directory with a different
111 name and location.
112
113 The value of the 'karch' parameter determines the set of files that
114 will be generated for the BSP, along with the specific set of
115 'properties' that will be used to fill out the BSP-specific portions
116 of the BSP. The possible values for the 'karch' paramter can be
117 listed via 'yocto-bsp list karch'.
118
119 NOTE: Once created, you should add your new layer to your
120 bblayers.conf file in order for it to be subsequently seen and
121 modified by the yocto-kernel tool.
122
123 See 'yocto bsp help create' for more detailed instructions.
124"""
125
126yocto_bsp_create_help = """
127
128NAME
129 yocto-bsp create - Create a new Yocto BSP
130
131SYNOPSIS
132 yocto-bsp create <bsp-name> <karch> [-o <DIRNAME> | --outdir <DIRNAME>]
133 [-i <JSON PROPERTY FILE> | --infile <JSON PROPERTY_FILE>]
134
135DESCRIPTION
136 This command creates a Yocto BSP based on the specified
137 parameters. The new BSP will be a new Yocto BSP layer contained
138 by default within the top-level directory specified as
139 'meta-bsp-name'. The -o option can be used to place the BSP layer
140 in a directory with a different name and location.
141
142 The value of the 'karch' parameter determines the set of files
143 that will be generated for the BSP, along with the specific set of
144 'properties' that will be used to fill out the BSP-specific
145 portions of the BSP. The possible values for the 'karch' paramter
146 can be listed via 'yocto-bsp list karch'.
147
148 The BSP-specific properties that define the values that will be
149 used to generate a particular BSP can be specified on the
150 command-line using the -i option and supplying a JSON object
151 consisting of the set of name:value pairs needed by the BSP.
152
153 If the -i option is not used, the user will be interactively
154 prompted for each of the required property values, which will then
155 be used as values for BSP generation.
156
157 The set of properties available for a given architecture can be
158 listed using the 'yocto-bsp list' command.
159
160 Specifying -c causes the Python code generated and executed to
161 create the BSP to be dumped to the 'bspgen.out' file in the
162 current directory, and is useful for debugging.
163
164 NOTE: Once created, you should add your new layer to your
165 bblayers.conf file in order for it to be subsequently seen and
166 modified by the yocto-kernel tool.
167
168 For example, assuming your poky repo is at /path/to/poky, your new
169 BSP layer is at /path/to/poky/meta-mybsp, and your build directory
170 is /path/to/build:
171
172 $ gedit /path/to/build/conf/bblayers.conf
173
174 BBLAYERS ?= " \\
175 /path/to/poky/meta \\
176 /path/to/poky/meta-yocto \\
177 /path/to/poky/meta-mybsp \\
178 "
179"""
180
181yocto_bsp_list_usage = """
182
183 usage: yocto-bsp list karch
184 yocto-bsp list <karch> properties
185 [-o <JSON PROPERTY FILE> | --outfile <JSON PROPERTY_FILE>]
186 yocto-bsp list <karch> property <xxx>
187 [-o <JSON PROPERTY FILE> | --outfile <JSON PROPERTY_FILE>]
188
189 This command enumerates the complete set of possible values for a
190 specified option or property needed by the BSP creation process.
191
192 The first form enumerates all the possible values that exist and can
193 be specified for the 'karch' parameter to the 'yocto bsp create'
194 command.
195
196 The second form enumerates all the possible properties that exist and
197 must have values specified for them in the 'yocto bsp create' command
198 for the given 'karch'.
199
200 The third form enumerates all the possible values that exist and can
201 be specified for any of the enumerable properties of the given
202 'karch' in the 'yocto bsp create' command.
203
204 See 'yocto-bsp help list' for more details.
205"""
206
207yocto_bsp_list_help = """
208
209NAME
210 yocto-bsp list - List available values for options and BSP properties
211
212SYNOPSIS
213 yocto-bsp list karch
214 yocto-bsp list <karch> properties
215 [--o <JSON PROPERTY FILE> | -outfile <JSON PROPERTY_FILE>]
216 yocto-bsp list <karch> property <xxx>
217 [--o <JSON PROPERTY FILE> | -outfile <JSON PROPERTY_FILE>]
218
219DESCRIPTION
220 This command enumerates the complete set of possible values for a
221 specified option or property needed by the BSP creation process.
222
223 The first form enumerates all the possible values that exist and
224 can be specified for the 'karch' parameter to the 'yocto bsp
225 create' command. Example output for the 'list karch' command:
226
227 $ yocto-bsp list karch
228 Architectures available:
229 arm
230 powerpc
231 i386
232 mips
233 x86_64
234 qemu
235
236 The second form enumerates all the possible properties that exist
237 and must have values specified for them in the 'yocto bsp create'
238 command for the given 'karch'. This command is mainly meant to
239 allow the development user interface alternatives to the default
240 text-based prompting interface. If the -o option is specified,
241 the list of properties, in addition to being displayed, will be
242 written to the specified file as a JSON object. In this case, the
243 object will consist of the set of name:value pairs corresponding
244 to the (possibly nested) dictionary of properties defined by the
245 input statements used by the BSP. Some example output for the
246 'list properties' command:
247
248 $ yocto-bsp list arm properties
249 "touchscreen" : {
250 "msg" : Does your BSP have a touchscreen? (y/N)
251 "default" : n
252 "type" : boolean
253 }
254 "uboot_loadaddress" : {
255 "msg" : Please specify a value for UBOOT_LOADADDRESS.
256 "default" : 0x80008000
257 "type" : edit
258 "prio" : 40
259 }
260 "kernel_choice" : {
261 "prio" : 10
262 "default" : linux-yocto_3.2
263 "depends-on" : use_default_kernel
264 "depends-on-val" : n
265 "msg" : Please choose the kernel to use in this BSP =>
266 "type" : choicelist
267 "gen" : bsp.kernel.kernels
268 }
269 "if kernel_choice == "linux-yocto_3.0":" : {
270 "base_kbranch_linux_yocto_3_0" : {
271 "prio" : 20
272 "default" : yocto/standard
273 "depends-on" : new_kbranch_linux_yocto_3_0
274 "depends-on-val" : y
275 "msg" : Please choose a machine branch to base this BSP on =>
276 "type" : choicelist
277 "gen" : bsp.kernel.all_branches
278 }
279 .
280 .
281 .
282
283 Each entry in the output consists of the name of the input element
284 e.g. "touchscreen", followed by the properties defined for that
285 element enclosed in braces. This information should provide
286 sufficient information to create a complete user interface with.
287 Two features of the scheme provide for conditional input. First,
288 if a Python "if" statement appears in place of an input element
289 name, the set of enclosed input elements apply and should be
290 presented to the user only if the 'if' statement evaluates to
291 true. The test in the if statement will always reference another
292 input element in the list, which means that the element being
293 tested should be presented to the user before the elements
294 enclosed by the if block. Secondly, in a similar way, some
295 elements contain "depends-on" and depends-on-val" tags, which mean
296 that the affected input element should only be presented to the
297 user if the element it depends on has already been presented to
298 the user and the user has selected the specified value for that
299 element.
300
301 The third form enumerates all the possible values that exist and
302 can be specified for any of the enumerable properties of the given
303 'karch' in the 'yocto bsp create' command. If the -o option is
304 specified, the list of values for the given property, in addition
305 to being displayed, will be written to the specified file as a
306 JSON object. In this case, the object will consist of the set of
307 name:value pairs corresponding to the array of property values
308 associated with the property.
309
310 $ yocto-bsp list i386 property xserver_choice
311 ["xserver_vesa", "VESA xserver support"]
312 ["xserver_i915", "i915 xserver support"]
313
314 $ yocto-bsp list arm property base_kbranch_linux_yocto_3_0
315 Getting branches from remote repo git://git.yoctoproject.org/linux-yocto-3.0...
316 ["yocto/base", "yocto/base"]
317 ["yocto/eg20t", "yocto/eg20t"]
318 ["yocto/gma500", "yocto/gma500"]
319 ["yocto/pvr", "yocto/pvr"]
320 ["yocto/standard/arm-versatile-926ejs", "yocto/standard/arm-versatile-926ejs"]
321 ["yocto/standard/base", "yocto/standard/base"]
322 ["yocto/standard/cedartrail", "yocto/standard/cedartrail"]
323 .
324 .
325 .
326 ["yocto/standard/qemu-ppc32", "yocto/standard/qemu-ppc32"]
327 ["yocto/standard/routerstationpro", "yocto/standard/routerstationpro"]
328
329 The third form as well is meant mainly for developers of
330 alternative interfaces - it allows the developer to fetch the
331 possible values for a given input element on-demand. This
332 on-demand capability is especially valuable for elements that
333 require relatively expensive remote operations to fulfill, such as
334 the example that returns the set of branches available in a remote
335 git tree above.
336
337"""
338
339##
340# yocto-kernel help and usage strings
341##
342
343yocto_kernel_usage = """
344
345 Modify and list Yocto BSP kernel config items and patches.
346
347 usage: yocto-kernel [--version] [--help] COMMAND [ARGS]
348
349 Current 'yocto-kernel' commands are:
350 config list List the modifiable set of bare kernel config options for a BSP
351 config add Add or modify bare kernel config options for a BSP
352 config rm Remove bare kernel config options from a BSP
353 patch list List the patches associated with a BSP
354 patch add Patch the Yocto kernel for a BSP
355 patch rm Remove patches from a BSP
356 feature list List the features used by a BSP
357 feature add Have a BSP use a feature
358 feature rm Have a BSP stop using a feature
359 features list List the features available to BSPs
360 feature describe Describe a particular feature
361 feature create Create a new BSP-local feature
362 feature destroy Remove a BSP-local feature
363
364 See 'yocto-kernel help COMMAND' for more information on a specific command.
365
366"""
367
368
369yocto_kernel_help_usage = """
370
371 usage: yocto-kernel help <subcommand>
372
373 This command displays detailed help for the specified subcommand.
374"""
375
376yocto_kernel_config_list_usage = """
377
378 List the modifiable set of bare kernel config options for a BSP
379
380 usage: yocto-kernel config list <bsp-name>
381
382 This command lists the 'modifiable' config items for a BSP i.e. the
383 items which are eligible for modification or removal by other
384 yocto-kernel commands.
385
386 'modifiable' config items are the config items contained a BSP's
387 user-config.cfg base config.
388"""
389
390
391yocto_kernel_config_list_help = """
392
393NAME
394 yocto-kernel config list - List the modifiable set of bare kernel
395 config options for a BSP
396
397SYNOPSIS
398 yocto-kernel config list <bsp-name>
399
400DESCRIPTION
401 This command lists the 'modifiable' config items for a BSP
402 i.e. the items which are eligible for modification or removal by
403 other yocto-kernel commands.
404"""
405
406
407yocto_kernel_config_add_usage = """
408
409 Add or modify bare kernel config options for a BSP
410
411 usage: yocto-kernel config add <bsp-name> [<CONFIG_XXX=x> ...]
412
413 This command adds one or more CONFIG_XXX=x items to a BSP's user-config.cfg
414 base config.
415"""
416
417
418yocto_kernel_config_add_help = """
419
420NAME
421 yocto-kernel config add - Add or modify bare kernel config options
422 for a BSP
423
424SYNOPSIS
425 yocto-kernel config add <bsp-name> [<CONFIG_XXX=x> ...]
426
427DESCRIPTION
428 This command adds one or more CONFIG_XXX=x items to a BSP's
429 foo.cfg base config.
430
431 NOTE: It's up to the user to determine whether or not the config
432 options being added make sense or not - this command does no
433 sanity checking or verification of any kind to ensure that a
434 config option really makes sense and will actually be set in in
435 the final config. For example, if a config option depends on
436 other config options, it will be turned off by kconfig if the
437 other options aren't set correctly.
438"""
439
440
441yocto_kernel_config_rm_usage = """
442
443 Remove bare kernel config options from a BSP
444
445 usage: yocto-kernel config rm <bsp-name>
446
447 This command removes (turns off) one or more CONFIG_XXX items from a
448 BSP's user-config.cfg base config.
449
450 The set of config items available to be removed by this command for a
451 BSP is listed and the user prompted for the specific items to remove.
452"""
453
454
455yocto_kernel_config_rm_help = """
456
457NAME
458 yocto-kernel config rm - Remove bare kernel config options from a
459 BSP
460
461SYNOPSIS
462 yocto-kernel config rm <bsp-name>
463
464DESCRIPTION
465 This command removes (turns off) one or more CONFIG_XXX items from a
466 BSP's user-config.cfg base config.
467
468 The set of config items available to be removed by this command
469 for a BSP is listed and the user prompted for the specific items
470 to remove.
471"""
472
473
474yocto_kernel_patch_list_usage = """
475
476 List the patches associated with the kernel for a BSP
477
478 usage: yocto-kernel patch list <bsp-name>
479
480 This command lists the patches associated with a BSP.
481
482 NOTE: this only applies to patches listed in the kernel recipe's
483 user-patches.scc file (and currently repeated in its SRC_URI).
484"""
485
486
487yocto_kernel_patch_list_help = """
488
489NAME
490 yocto-kernel patch list - List the patches associated with the kernel
491 for a BSP
492
493SYNOPSIS
494 yocto-kernel patch list <bsp-name>
495
496DESCRIPTION
497 This command lists the patches associated with a BSP.
498
499 NOTE: this only applies to patches listed in the kernel recipe's
500 user-patches.scc file (and currently repeated in its SRC_URI).
501"""
502
503
504yocto_kernel_patch_add_usage = """
505
506 Patch the Yocto kernel for a specific BSP
507
508 usage: yocto-kernel patch add <bsp-name> [<PATCH> ...]
509
510 This command adds one or more patches to a BSP's machine branch. The
511 patch will be added to the BSP's linux-yocto kernel user-patches.scc
512 file (and currently repeated in its SRC_URI) and will be guaranteed
513 to be applied in the order specified.
514"""
515
516
517yocto_kernel_patch_add_help = """
518
519NAME
520 yocto-kernel patch add - Patch the Yocto kernel for a specific BSP
521
522SYNOPSIS
523 yocto-kernel patch add <bsp-name> [<PATCH> ...]
524
525DESCRIPTION
526 This command adds one or more patches to a BSP's machine branch.
527 The patch will be added to the BSP's linux-yocto kernel
528 user-patches.scc file (and currently repeated in its SRC_URI) and
529 will be guaranteed to be applied in the order specified.
530
531 NOTE: It's up to the user to determine whether or not the patches
532 being added makes sense or not - this command does no sanity
533 checking or verification of any kind to ensure that a patch can
534 actually be applied to the BSP's kernel branch; it's assumed that
535 the user has already done that.
536"""
537
538
539yocto_kernel_patch_rm_usage = """
540
541 Remove a patch from the Yocto kernel for a specific BSP
542
543 usage: yocto-kernel patch rm <bsp-name>
544
545 This command removes one or more patches from a BSP's machine branch.
546 The patch will be removed from the BSP's linux-yocto kernel
547 user-patches.scc file (and currently repeated in its SRC_URI) and
548 kernel SRC_URI dir.
549
550 The set of patches available to be removed by this command for a BSP
551 is listed and the user prompted for the specific patches to remove.
552"""
553
554
555yocto_kernel_patch_rm_help = """
556
557NAME
558 yocto-kernel patch rm - Remove a patch from the Yocto kernel for a specific BSP
559
560SYNOPSIS
561 yocto-kernel patch rm <bsp-name>
562
563DESCRIPTION
564 This command removes one or more patches from a BSP's machine
565 branch. The patch will be removed from the BSP's linux-yocto
566 kernel user-patches.scc file (and currently repeated in its
567 SRC_URI).
568
569 The set of patches available to be removed by this command for a
570 BSP is listed and the user prompted for the specific patches to
571 remove.
572"""
573
574yocto_kernel_feature_list_usage = """
575
576 List the BSP features that are being used by a BSP
577
578 usage: yocto-kernel feature list <bsp-name>
579
580 This command lists the features being used by a BSP i.e. the features
581 which are eligible for modification or removal by other yocto-kernel
582 commands.
583
584 'modifiable' features are the features listed in a BSP's
585 user-features.scc file.
586"""
587
588
589yocto_kernel_feature_list_help = """
590
591NAME
592 yocto-kernel feature list - List the modifiable set of features
593 being used by a BSP
594
595SYNOPSIS
596 yocto-kernel feature list <bsp-name>
597
598DESCRIPTION
599 This command lists the 'modifiable' features being used by a BSP
600 i.e. the features which are eligible for modification or removal
601 by other yocto-kernel commands.
602"""
603
604
605yocto_kernel_feature_add_usage = """
606
607 Add to or modify the list of features being used for a BSP
608
609 usage: yocto-kernel feature add <bsp-name> [/xxxx/yyyy/feature.scc ...]
610
611 This command adds one or more feature items to a BSP's kernel
612 user-features.scc file, which is the file used to manage features in
613 a yocto-bsp-generated BSP. Features to be added must be specified as
614 fully-qualified feature names.
615"""
616
617
618yocto_kernel_feature_add_help = """
619
620NAME
621 yocto-kernel feature add - Add to or modify the list of features
622 being used for a BSP
623
624SYNOPSIS
625 yocto-kernel feature add <bsp-name> [/xxxx/yyyy/feature.scc ...]
626
627DESCRIPTION
628 This command adds one or more feature items to a BSP's
629 user-features.scc file, which is the file used to manage features
630 in a yocto-bsp-generated BSP. Features to be added must be
631 specified as fully-qualified feature names.
632"""
633
634
635yocto_kernel_feature_rm_usage = """
636
637 Remove a feature from the list of features being used for a BSP
638
639 usage: yocto-kernel feature rm <bsp-name>
640
641 This command removes (turns off) one or more features from a BSP's
642 user-features.scc file, which is the file used to manage features in
643 a yocto-bsp-generated BSP.
644
645 The set of features available to be removed by this command for a BSP
646 is listed and the user prompted for the specific items to remove.
647"""
648
649
650yocto_kernel_feature_rm_help = """
651
652NAME
653 yocto-kernel feature rm - Remove a feature from the list of
654 features being used for a BSP
655
656SYNOPSIS
657 yocto-kernel feature rm <bsp-name>
658
659DESCRIPTION
660 This command removes (turns off) one or more features from a BSP's
661 user-features.scc file, which is the file used to manage features
662 in a yocto-bsp-generated BSP.
663
664 The set of features available to be removed by this command for a
665 BSP is listed and the user prompted for the specific items to
666 remove.
667"""
668
669
670yocto_kernel_available_features_list_usage = """
671
672 List the set of kernel features available to a BSP
673
674 usage: yocto-kernel features list <bsp-name>
675
676 This command lists the complete set of kernel features available to a
677 BSP. This includes the features contained in linux-yocto meta
678 branches as well as recipe-space features defined locally to the BSP.
679"""
680
681
682yocto_kernel_available_features_list_help = """
683
684NAME
685 yocto-kernel features list - List the set of kernel features
686 available to a BSP
687
688SYNOPSIS
689 yocto-kernel features list <bsp-name>
690
691DESCRIPTION
692 This command lists the complete set of kernel features available
693 to a BSP. This includes the features contained in linux-yocto
694 meta branches as well as recipe-space features defined locally to
695 the BSP.
696"""
697
698
699yocto_kernel_feature_describe_usage = """
700
701 Print the description and compatibility information for a given kernel feature
702
703 usage: yocto-kernel feature describe <bsp-name> [/xxxx/yyyy/feature.scc ...]
704
705 This command prints the description and compatibility of a specific
706 feature in the format 'description [compatibility].
707"""
708
709
710yocto_kernel_feature_describe_help = """
711
712NAME
713 yocto-kernel feature describe - print the description and
714 compatibility information for a given kernel feature
715
716SYNOPSIS
717 yocto-kernel feature describe <bsp-name> [/xxxx/yyyy/feature.scc ...]
718
719DESCRIPTION
720 This command prints the description and compatibility of a
721 specific feature in the format 'description [compatibility]. If
722 the feature doesn't define a description or compatibility, a
723 string with generic unknown values will be printed.
724"""
725
726
727yocto_kernel_feature_create_usage = """
728
729 Create a recipe-space kernel feature in a BSP
730
731 usage: yocto-kernel feature create <bsp-name> newfeature.scc \
732 "Feature Description" capabilities [<CONFIG_XXX=x> ...] [<PATCH> ...]
733
734 This command creates a new kernel feature from the bare config
735 options and patches specified on the command-line.
736"""
737
738
739yocto_kernel_feature_create_help = """
740
741NAME
742 yocto-kernel feature create - create a recipe-space kernel feature
743 in a BSP
744
745SYNOPSIS
746 yocto-kernel feature create <bsp-name> newfeature.scc \
747 "Feature Description" capabilities [<CONFIG_XXX=x> ...] [<PATCH> ...]
748
749DESCRIPTION
750 This command creates a new kernel feature from the bare config
751 options and patches specified on the command-line. The new
752 feature will be created in recipe-space, specifically in either
753 the kernel .bbappend's /files/cfg or /files/features subdirectory,
754 depending on whether or not the feature contains config items only
755 or config items along with patches. The named feature must end
756 with .scc and must not contain a feature directory to contain the
757 feature (this will be determined automatically), and a feature
758 decription in double-quotes along with a capabilities string
759 (which for the time being can be one of: 'all' or 'board').
760"""
761
762
763yocto_kernel_feature_destroy_usage = """
764
765 Destroy a recipe-space kernel feature in a BSP
766
767 usage: yocto-kernel feature destroy <bsp-name> feature.scc
768
769 This command destroys a kernel feature defined in the specified BSP's
770 recipe-space kernel definition.
771"""
772
773
774yocto_kernel_feature_destroy_help = """
775
776NAME
777 yocto-kernel feature destroy <bsp-name> feature.scc - destroy a
778 recipe-space kernel feature in a BSP
779
780SYNOPSIS
781 yocto-kernel feature destroy <bsp-name> feature.scc
782
783DESCRIPTION
784 This command destroys a kernel feature defined in the specified
785 BSP's recipe-space kernel definition. The named feature must end
786 with .scc and must not contain a feature directory to contain the
787 feature (this will be determined automatically). If the kernel
788 feature is in use by a BSP, it can't be removed until the BSP
789 stops using it (see yocto-kernel feature rm to stop using it).
790"""
791
792##
793# yocto-layer help and usage strings
794##
795
796yocto_layer_usage = """
797
798 Create a generic Yocto layer.
799
800 usage: yocto-layer [--version] [--help] COMMAND [ARGS]
801
802 Current 'yocto-layer' commands are:
803 create Create a new generic Yocto layer
804 list List available values for input options and properties
805
806 See 'yocto-layer help COMMAND' for more information on a specific command.
807"""
808
809yocto_layer_help_usage = """
810
811 usage: yocto-layer help <subcommand>
812
813 This command displays detailed help for the specified subcommand.
814"""
815
816yocto_layer_create_usage = """
817
818 Create a new generic Yocto layer
819
820 usage: yocto-layer create <layer-name> [layer_priority]
821 [-o <DIRNAME> | --outdir <DIRNAME>]
822 [-i <JSON PROPERTY FILE> | --infile <JSON PROPERTY_FILE>]
823
824 This command creates a generic Yocto layer based on the specified
825 parameters. The new layer will be a new Yocto layer contained by
826 default within the top-level directory specified as
827 'meta-layer-name'. The -o option can be used to place the layer in a
828 directory with a different name and location.
829
830 If layer_priority is specified, a simple layer will be created using
831 the given layer priority, and the user will not be prompted for
832 further input.
833
834 NOTE: Once created, you should add your new layer to your
835 bblayers.conf file in order for it to be subsequently seen and
836 modified by the yocto-kernel tool. Instructions for doing this can
837 be found in the README file generated in the layer's top-level
838 directory.
839
840 See 'yocto layer help create' for more detailed instructions.
841"""
842
843yocto_layer_create_help = """
844
845NAME
846 yocto-layer create - Create a new generic Yocto layer
847
848SYNOPSIS
849 yocto-layer create <layer-name> [layer_priority]
850 [-o <DIRNAME> | --outdir <DIRNAME>]
851 [-i <JSON PROPERTY FILE> | --infile <JSON PROPERTY_FILE>]
852
853DESCRIPTION
854 This command creates a generic Yocto layer based on the specified
855 parameters. The new layer will be a new Yocto layer contained by
856 default within the top-level directory specified as
857 'meta-layer-name'. The -o option can be used to place the layer
858 in a directory with a different name and location.
859
860 If layer_priority is specified, a simple layer will be created
861 using the given layer priority, and the user will not be prompted
862 for further input.
863
864 The layer-specific properties that define the values that will be
865 used to generate the layer can be specified on the command-line
866 using the -i option and supplying a JSON object consisting of the
867 set of name:value pairs needed by the layer.
868
869 If the -i option is not used, the user will be interactively
870 prompted for each of the required property values, which will then
871 be used as values for layer generation.
872
873 The set of properties available can be listed using the
874 'yocto-layer list' command.
875
876 Specifying -c causes the Python code generated and executed to
877 create the layer to be dumped to the 'bspgen.out' file in the
878 current directory, and is useful for debugging.
879
880 NOTE: Once created, you should add your new layer to your
881 bblayers.conf file in order for it to be subsequently seen and
882 modified by the yocto-kernel tool. Instructions for doing this
883 can be found in the README file generated in the layer's top-level
884 directory.
885
886 For example, assuming your poky repo is at /path/to/poky, your new
887 layer is at /path/to/poky/meta-mylayer, and your build directory
888 is /path/to/build:
889
890 $ gedit /path/to/build/conf/bblayers.conf
891
892 BBLAYERS ?= " \\
893 /path/to/poky/meta \\
894 /path/to/poky/meta-yocto \\
895 /path/to/poky/meta-mylayer \\
896 "
897"""
898
899yocto_layer_list_usage = """
900
901 usage: yocto-layer list properties
902 [-o <JSON PROPERTY FILE> | --outfile <JSON PROPERTY_FILE>]
903 yocto-layer list property <xxx>
904 [-o <JSON PROPERTY FILE> | --outfile <JSON PROPERTY_FILE>]
905
906 This command enumerates the complete set of possible values for a
907 specified option or property needed by the layer creation process.
908
909 The first form enumerates all the possible properties that exist and
910 must have values specified for them in the 'yocto-layer create'
911 command.
912
913 The second form enumerates all the possible values that exist and can
914 be specified for any of the enumerable properties in the 'yocto-layer
915 create' command.
916
917 See 'yocto-layer help list' for more details.
918"""
919
920yocto_layer_list_help = """
921
922NAME
923 yocto-layer list - List available values for layer input options and properties
924
925SYNOPSIS
926 yocto-layer list properties
927 [--o <JSON PROPERTY FILE> | -outfile <JSON PROPERTY_FILE>]
928 yocto-layer list property <xxx>
929 [--o <JSON PROPERTY FILE> | -outfile <JSON PROPERTY_FILE>]
930
931DESCRIPTION
932 This command enumerates the complete set of possible values for a
933 specified option or property needed by the layer creation process.
934
935 The first form enumerates all the possible properties that exist
936 and must have values specified for them in the 'yocto-layer
937 create' command. This command is mainly meant to aid the
938 development of user interface alternatives to the default
939 text-based prompting interface. If the -o option is specified,
940 the list of properties, in addition to being displayed, will be
941 written to the specified file as a JSON object. In this case, the
942 object will consist of the set of name:value pairs corresponding
943 to the (possibly nested) dictionary of properties defined by the
944 input statements used by the BSP. Some example output for the
945 'list properties' command:
946
947 $ yocto-layer list properties
948 "example_bbappend_name" : {
949 "default" : example
950 "msg" : Please enter the name you'd like to use for your bbappend file:
951 "type" : edit
952 "prio" : 20
953 "filename" : /home/trz/yocto/yocto-layer-dev/scripts/lib/bsp/substrate/target/arch/layer/layer-questions.noinstall
954 }
955 "create_example_recipe" : {
956 "default" : n
957 "msg" : Would you like to have an example recipe created? (y/n)
958 "type" : boolean
959 "prio" : 20
960 "filename" : /home/trz/yocto/yocto-layer-dev/scripts/lib/bsp/substrate/target/arch/layer/layer-questions.noinstall
961 }
962 "example_recipe_name" : {
963 "default" : example
964 "msg" : Please enter the name you'd like to use for your example recipe:
965 "type" : edit
966 "prio" : 20
967 "filename" : /home/trz/yocto/yocto-layer-dev/scripts/lib/bsp/substrate/target/arch/layer/layer-questions.noinstall
968 }
969 "layer_priority" : {
970 "default" : 6
971 "msg" : Please enter the layer priority you'd like to use for the layer:
972 "type" : edit
973 "prio" : 20
974 "filename" : /home/trz/yocto/yocto-layer-dev/scripts/lib/bsp/substrate/target/arch/layer/layer-questions.noinstall
975 }
976 "create_example_bbappend" : {
977 "default" : n
978 "msg" : Would you like to have an example bbappend file created? (y/n)
979 "type" : boolean
980 "prio" : 20
981 "filename" : /home/trz/yocto/yocto-layer-dev/scripts/lib/bsp/substrate/target/arch/layer/layer-questions.noinstall
982 }
983 "example_bbappend_version" : {
984 "default" : 0.1
985 "msg" : Please enter the version number you'd like to use for your bbappend file (this should match the recipe you're appending to):
986 "type" : edit
987 "prio" : 20
988 "filename" : /home/trz/yocto/yocto-layer-dev/scripts/lib/bsp/substrate/target/arch/layer/layer-questions.noinstall
989 }
990
991 Each entry in the output consists of the name of the input element
992 e.g. "layer_priority", followed by the properties defined for that
993 element enclosed in braces. This information should provide
994 sufficient information to create a complete user interface. Two
995 features of the scheme provide for conditional input. First, if a
996 Python "if" statement appears in place of an input element name,
997 the set of enclosed input elements apply and should be presented
998 to the user only if the 'if' statement evaluates to true. The
999 test in the if statement will always reference another input
1000 element in the list, which means that the element being tested
1001 should be presented to the user before the elements enclosed by
1002 the if block. Secondly, in a similar way, some elements contain
1003 "depends-on" and depends-on-val" tags, which mean that the
1004 affected input element should only be presented to the user if the
1005 element it depends on has already been presented to the user and
1006 the user has selected the specified value for that element.
1007
1008 The second form enumerates all the possible values that exist and
1009 can be specified for any of the enumerable properties in the
1010 'yocto-layer create' command. If the -o option is specified, the
1011 list of values for the given property, in addition to being
1012 displayed, will be written to the specified file as a JSON object.
1013 In this case, the object will consist of the set of name:value
1014 pairs corresponding to the array of property values associated
1015 with the property.
1016
1017 $ yocto-layer list property layer_priority
1018 [no output - layer_priority is a text field that has no enumerable values]
1019
1020 The second form as well is meant mainly for developers of
1021 alternative interfaces - it allows the developer to fetch the
1022 possible values for a given input element on-demand. This
1023 on-demand capability is especially valuable for elements that
1024 require relatively expensive remote operations to fulfill, such as
1025 the example that returns the set of branches available in a remote
1026 git tree above.
1027
1028"""
1029
1030##
1031# test code
1032##
1033
1034test_bsp_properties = {
1035 'smp': 'yes',
1036 'touchscreen': 'yes',
1037 'keyboard': 'no',
1038 'xserver': 'yes',
1039 'xserver_choice': 'xserver-i915',
1040 'features': ['goodfeature', 'greatfeature'],
1041 'tunefile': 'tune-quark',
1042}
1043
diff --git a/scripts/lib/bsp/kernel.py b/scripts/lib/bsp/kernel.py
new file mode 100644
index 0000000000..ba68b60fcb
--- /dev/null
+++ b/scripts/lib/bsp/kernel.py
@@ -0,0 +1,1071 @@
1# ex:ts=4:sw=4:sts=4:et
2# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
3#
4# Copyright (c) 2012, Intel Corporation.
5# All rights reserved.
6#
7# This program is free software; you can redistribute it and/or modify
8# it under the terms of the GNU General Public License version 2 as
9# published by the Free Software Foundation.
10#
11# This program is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14# GNU General Public License for more details.
15#
16# You should have received a copy of the GNU General Public License along
17# with this program; if not, write to the Free Software Foundation, Inc.,
18# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19#
20# DESCRIPTION
21# This module implements the kernel-related functions used by
22# 'yocto-kernel' to manage kernel config items and patches for Yocto
23# BSPs.
24#
25# AUTHORS
26# Tom Zanussi <tom.zanussi (at] intel.com>
27#
28
29import sys
30import os
31import shutil
32from tags import *
33import glob
34import subprocess
35from engine import create_context
36
37
38def find_bblayers():
39 """
40 Find and return a sanitized list of the layers found in BBLAYERS.
41 """
42 try:
43 builddir = os.environ["BUILDDIR"]
44 except KeyError:
45 print "BUILDDIR not found, exiting. (Did you forget to source oe-init-build-env?)"
46 sys.exit(1)
47 bblayers_conf = os.path.join(builddir, "conf/bblayers.conf")
48
49 layers = []
50
51 bitbake_env_cmd = "bitbake -e"
52 bitbake_env_lines = subprocess.Popen(bitbake_env_cmd, shell=True,
53 stdout=subprocess.PIPE).stdout.read()
54
55 if not bitbake_env_lines:
56 print "Couldn't get '%s' output, exiting." % bitbake_env_cmd
57 sys.exit(1)
58
59 for line in bitbake_env_lines.split('\n'):
60 bblayers = get_line_val(line, "BBLAYERS")
61 if (bblayers):
62 break
63
64 if not bblayers:
65 print "Couldn't find BBLAYERS in %s output, exiting." % \
66 bitbake_env_cmd
67 sys.exit(1)
68
69 raw_layers = bblayers.split()
70
71 for layer in raw_layers:
72 if layer == 'BBLAYERS' or '=' in layer:
73 continue
74 layers.append(layer)
75
76 return layers
77
78
79def get_line_val(line, key):
80 """
81 Extract the value from the VAR="val" string
82 """
83 if line.startswith(key + "="):
84 stripped_line = line.split('=')[1]
85 stripped_line = stripped_line.replace('\"', '')
86 return stripped_line
87 return None
88
89
90def find_meta_layer():
91 """
92 Find and return the meta layer in BBLAYERS.
93 """
94 layers = find_bblayers()
95
96 for layer in layers:
97 if layer.endswith("meta"):
98 return layer
99
100 return None
101
102
103def find_bsp_layer(machine):
104 """
105 Find and return a machine's BSP layer in BBLAYERS.
106 """
107 layers = find_bblayers()
108
109 for layer in layers:
110 if layer.endswith(machine):
111 return layer
112
113 print "Unable to find the BSP layer for machine %s." % machine
114 print "Please make sure it is listed in bblayers.conf"
115 sys.exit(1)
116
117
118def gen_choices_str(choices):
119 """
120 Generate a numbered list of choices from a list of choices for
121 display to the user.
122 """
123 choices_str = ""
124
125 for i, choice in enumerate(choices):
126 choices_str += "\t" + str(i + 1) + ") " + choice + "\n"
127
128 return choices_str
129
130
131def open_user_file(scripts_path, machine, userfile, mode):
132 """
133 Find one of the user files (user-config.cfg, user-patches.scc)
134 associated with the machine (could be in files/,
135 linux-yocto-custom/, etc). Returns the open file if found, None
136 otherwise.
137
138 The caller is responsible for closing the file returned.
139 """
140 layer = find_bsp_layer(machine)
141 linuxdir = os.path.join(layer, "recipes-kernel/linux")
142 linuxdir_list = os.listdir(linuxdir)
143 for fileobj in linuxdir_list:
144 fileobj_path = os.path.join(linuxdir, fileobj)
145 if os.path.isdir(fileobj_path):
146 userfile_name = os.path.join(fileobj_path, userfile)
147 try:
148 f = open(userfile_name, mode)
149 return f
150 except IOError:
151 continue
152 return None
153
154
155def read_config_items(scripts_path, machine):
156 """
157 Find and return a list of config items (CONFIG_XXX) in a machine's
158 user-defined config fragment [${machine}-user-config.cfg].
159 """
160 config_items = []
161
162 f = open_user_file(scripts_path, machine, machine+"-user-config.cfg", "r")
163 lines = f.readlines()
164 for line in lines:
165 s = line.strip()
166 if s and not s.startswith("#"):
167 config_items.append(s)
168 f.close()
169
170 return config_items
171
172
173def write_config_items(scripts_path, machine, config_items):
174 """
175 Write (replace) the list of config items (CONFIG_XXX) in a
176 machine's user-defined config fragment [${machine}=user-config.cfg].
177 """
178 f = open_user_file(scripts_path, machine, machine+"-user-config.cfg", "w")
179 for item in config_items:
180 f.write(item + "\n")
181 f.close()
182
183 kernel_contents_changed(scripts_path, machine)
184
185
186def yocto_kernel_config_list(scripts_path, machine):
187 """
188 Display the list of config items (CONFIG_XXX) in a machine's
189 user-defined config fragment [${machine}-user-config.cfg].
190 """
191 config_items = read_config_items(scripts_path, machine)
192
193 print "The current set of machine-specific kernel config items for %s is:" % machine
194 print gen_choices_str(config_items)
195
196
197def yocto_kernel_config_rm(scripts_path, machine):
198 """
199 Display the list of config items (CONFIG_XXX) in a machine's
200 user-defined config fragment [${machine}-user-config.cfg], prompt the user
201 for one or more to remove, and remove them.
202 """
203 config_items = read_config_items(scripts_path, machine)
204
205 print "Specify the kernel config items to remove:"
206 input = raw_input(gen_choices_str(config_items))
207 rm_choices = input.split()
208 rm_choices.sort()
209
210 removed = []
211
212 for choice in reversed(rm_choices):
213 try:
214 idx = int(choice) - 1
215 except ValueError:
216 print "Invalid choice (%s), exiting" % choice
217 sys.exit(1)
218 if idx < 0 or idx >= len(config_items):
219 print "Invalid choice (%d), exiting" % (idx + 1)
220 sys.exit(1)
221 removed.append(config_items.pop(idx))
222
223 write_config_items(scripts_path, machine, config_items)
224
225 print "Removed items:"
226 for r in removed:
227 print "\t%s" % r
228
229
230def yocto_kernel_config_add(scripts_path, machine, config_items):
231 """
232 Add one or more config items (CONFIG_XXX) to a machine's
233 user-defined config fragment [${machine}-user-config.cfg].
234 """
235 new_items = []
236 dup_items = []
237
238 cur_items = read_config_items(scripts_path, machine)
239
240 for item in config_items:
241 if not item.startswith("CONFIG") or (not "=y" in item and not "=m" in item):
242 print "Invalid config item (%s), exiting" % item
243 sys.exit(1)
244 if item not in cur_items and item not in new_items:
245 new_items.append(item)
246 else:
247 dup_items.append(item)
248
249 if len(new_items) > 0:
250 cur_items.extend(new_items)
251 write_config_items(scripts_path, machine, cur_items)
252 print "Added item%s:" % ("" if len(new_items)==1 else "s")
253 for n in new_items:
254 print "\t%s" % n
255
256 if len(dup_items) > 0:
257 output="The following item%s already exist%s in the current configuration, ignoring %s:" % \
258 (("","s", "it") if len(dup_items)==1 else ("s", "", "them" ))
259 print output
260 for n in dup_items:
261 print "\t%s" % n
262
263def find_current_kernel(bsp_layer, machine):
264 """
265 Determine the kernel and version currently being used in the BSP.
266 """
267 machine_conf = os.path.join(bsp_layer, "conf/machine/" + machine + ".conf")
268
269 preferred_kernel = preferred_kernel_version = preferred_version_varname = None
270
271 f = open(machine_conf, "r")
272 lines = f.readlines()
273 for line in lines:
274 if line.strip().startswith("PREFERRED_PROVIDER_virtual/kernel"):
275 preferred_kernel = line.split()[-1]
276 preferred_kernel = preferred_kernel.replace('\"','')
277 preferred_version_varname = "PREFERRED_VERSION_" + preferred_kernel
278 if preferred_version_varname and line.strip().startswith(preferred_version_varname):
279 preferred_kernel_version = line.split()[-1]
280 preferred_kernel_version = preferred_kernel_version.replace('\"','')
281 preferred_kernel_version = preferred_kernel_version.replace('%','')
282
283 if preferred_kernel and preferred_kernel_version:
284 return preferred_kernel + "_" + preferred_kernel_version
285 elif preferred_kernel:
286 return preferred_kernel
287
288
289def find_filesdir(scripts_path, machine):
290 """
291 Find the name of the 'files' dir associated with the machine
292 (could be in files/, linux-yocto-custom/, etc). Returns the name
293 of the files dir if found, None otherwise.
294 """
295 layer = find_bsp_layer(machine)
296 filesdir = None
297 linuxdir = os.path.join(layer, "recipes-kernel/linux")
298 linuxdir_list = os.listdir(linuxdir)
299 for fileobj in linuxdir_list:
300 fileobj_path = os.path.join(linuxdir, fileobj)
301 if os.path.isdir(fileobj_path):
302 # this could be files/ or linux-yocto-custom/, we have no way of distinguishing
303 # so we take the first (and normally only) dir we find as the 'filesdir'
304 filesdir = fileobj_path
305
306 return filesdir
307
308
309def read_patch_items(scripts_path, machine):
310 """
311 Find and return a list of patch items in a machine's user-defined
312 patch list [${machine}-user-patches.scc].
313 """
314 patch_items = []
315
316 f = open_user_file(scripts_path, machine, machine+"-user-patches.scc", "r")
317 lines = f.readlines()
318 for line in lines:
319 s = line.strip()
320 if s and not s.startswith("#"):
321 fields = s.split()
322 if not fields[0] == "patch":
323 continue
324 patch_items.append(fields[1])
325 f.close()
326
327 return patch_items
328
329
330def write_patch_items(scripts_path, machine, patch_items):
331 """
332 Write (replace) the list of patches in a machine's user-defined
333 patch list [${machine}-user-patches.scc].
334 """
335 f = open_user_file(scripts_path, machine, machine+"-user-patches.scc", "w")
336 for item in patch_items:
337 f.write("patch " + item + "\n")
338 f.close()
339
340 kernel_contents_changed(scripts_path, machine)
341
342
343def yocto_kernel_patch_list(scripts_path, machine):
344 """
345 Display the list of patches in a machine's user-defined patch list
346 [${machine}-user-patches.scc].
347 """
348 patches = read_patch_items(scripts_path, machine)
349
350 print "The current set of machine-specific patches for %s is:" % machine
351 print gen_choices_str(patches)
352
353
354def yocto_kernel_patch_rm(scripts_path, machine):
355 """
356 Remove one or more patches from a machine's user-defined patch
357 list [${machine}-user-patches.scc].
358 """
359 patches = read_patch_items(scripts_path, machine)
360
361 print "Specify the patches to remove:"
362 input = raw_input(gen_choices_str(patches))
363 rm_choices = input.split()
364 rm_choices.sort()
365
366 removed = []
367
368 filesdir = find_filesdir(scripts_path, machine)
369 if not filesdir:
370 print "Couldn't rm patch(es) since we couldn't find a 'files' dir"
371 sys.exit(1)
372
373 for choice in reversed(rm_choices):
374 try:
375 idx = int(choice) - 1
376 except ValueError:
377 print "Invalid choice (%s), exiting" % choice
378 sys.exit(1)
379 if idx < 0 or idx >= len(patches):
380 print "Invalid choice (%d), exiting" % (idx + 1)
381 sys.exit(1)
382 filesdir_patch = os.path.join(filesdir, patches[idx])
383 if os.path.isfile(filesdir_patch):
384 os.remove(filesdir_patch)
385 removed.append(patches[idx])
386 patches.pop(idx)
387
388 write_patch_items(scripts_path, machine, patches)
389
390 print "Removed patches:"
391 for r in removed:
392 print "\t%s" % r
393
394
395def yocto_kernel_patch_add(scripts_path, machine, patches):
396 """
397 Add one or more patches to a machine's user-defined patch list
398 [${machine}-user-patches.scc].
399 """
400 existing_patches = read_patch_items(scripts_path, machine)
401
402 for patch in patches:
403 if os.path.basename(patch) in existing_patches:
404 print "Couldn't add patch (%s) since it's already been added" % os.path.basename(patch)
405 sys.exit(1)
406
407 filesdir = find_filesdir(scripts_path, machine)
408 if not filesdir:
409 print "Couldn't add patch (%s) since we couldn't find a 'files' dir to add it to" % os.path.basename(patch)
410 sys.exit(1)
411
412 new_patches = []
413
414 for patch in patches:
415 if not os.path.isfile(patch):
416 print "Couldn't find patch (%s), exiting" % patch
417 sys.exit(1)
418 basename = os.path.basename(patch)
419 filesdir_patch = os.path.join(filesdir, basename)
420 shutil.copyfile(patch, filesdir_patch)
421 new_patches.append(basename)
422
423 cur_items = read_patch_items(scripts_path, machine)
424 cur_items.extend(new_patches)
425 write_patch_items(scripts_path, machine, cur_items)
426
427 print "Added patches:"
428 for n in new_patches:
429 print "\t%s" % n
430
431
432def inc_pr(line):
433 """
434 Add 1 to the PR value in the given bbappend PR line. For the PR
435 lines in kernel .bbappends after modifications. Handles PRs of
436 the form PR := "${PR}.1" as well as PR = "r0".
437 """
438 idx = line.find("\"")
439
440 pr_str = line[idx:]
441 pr_str = pr_str.replace('\"','')
442 fields = pr_str.split('.')
443 if len(fields) > 1:
444 fields[1] = str(int(fields[1]) + 1)
445 pr_str = "\"" + '.'.join(fields) + "\"\n"
446 else:
447 pr_val = pr_str[1:]
448 pr_str = "\"" + "r" + str(int(pr_val) + 1) + "\"\n"
449 idx2 = line.find("\"", idx + 1)
450 line = line[:idx] + pr_str
451
452 return line
453
454
455def kernel_contents_changed(scripts_path, machine):
456 """
457 Do what we need to do to notify the system that the kernel
458 recipe's contents have changed.
459 """
460 layer = find_bsp_layer(machine)
461
462 kernel = find_current_kernel(layer, machine)
463 if not kernel:
464 print "Couldn't determine the kernel for this BSP, exiting."
465 sys.exit(1)
466
467 kernel_bbfile = os.path.join(layer, "recipes-kernel/linux/" + kernel + ".bbappend")
468 if not os.path.isfile(kernel_bbfile):
469 kernel_bbfile = os.path.join(layer, "recipes-kernel/linux/" + kernel + ".bb")
470 if not os.path.isfile(kernel_bbfile):
471 return
472 kernel_bbfile_prev = kernel_bbfile + ".prev"
473 shutil.copyfile(kernel_bbfile, kernel_bbfile_prev)
474
475 ifile = open(kernel_bbfile_prev, "r")
476 ofile = open(kernel_bbfile, "w")
477 ifile_lines = ifile.readlines()
478 for ifile_line in ifile_lines:
479 if ifile_line.strip().startswith("PR"):
480 ifile_line = inc_pr(ifile_line)
481 ofile.write(ifile_line)
482 ofile.close()
483 ifile.close()
484
485
486def kernels(context):
487 """
488 Return the list of available kernels in the BSP i.e. corresponding
489 to the kernel .bbappends found in the layer.
490 """
491 archdir = os.path.join(context["scripts_path"], "lib/bsp/substrate/target/arch/" + context["arch"])
492 kerndir = os.path.join(archdir, "recipes-kernel/linux")
493 bbglob = os.path.join(kerndir, "*.bbappend")
494
495 bbappends = glob.glob(bbglob)
496
497 kernels = []
498
499 for kernel in bbappends:
500 filename = os.path.splitext(os.path.basename(kernel))[0]
501 idx = filename.find(CLOSE_TAG)
502 if idx != -1:
503 filename = filename[idx + len(CLOSE_TAG):].strip()
504 kernels.append(filename)
505
506 kernels.append("custom")
507
508 return kernels
509
510
511def extract_giturl(file):
512 """
513 Extract the git url of the kernel repo from the kernel recipe's
514 SRC_URI.
515 """
516 url = None
517 f = open(file, "r")
518 lines = f.readlines()
519 for line in lines:
520 line = line.strip()
521 if line.startswith("SRC_URI"):
522 line = line[len("SRC_URI"):].strip()
523 if line.startswith("="):
524 line = line[1:].strip()
525 if line.startswith("\""):
526 line = line[1:].strip()
527 prot = "git"
528 for s in line.split(";"):
529 if s.startswith("git://"):
530 url = s
531 if s.startswith("protocol="):
532 prot = s.split("=")[1]
533 if url:
534 url = prot + url[3:]
535 return url
536
537
538def find_giturl(context):
539 """
540 Find the git url of the kernel repo from the kernel recipe's
541 SRC_URI.
542 """
543 name = context["name"]
544 filebase = context["filename"]
545 scripts_path = context["scripts_path"]
546
547 meta_layer = find_meta_layer()
548
549 kerndir = os.path.join(meta_layer, "recipes-kernel/linux")
550 bbglob = os.path.join(kerndir, "*.bb")
551 bbs = glob.glob(bbglob)
552 for kernel in bbs:
553 filename = os.path.splitext(os.path.basename(kernel))[0]
554 if filename in filebase:
555 giturl = extract_giturl(kernel)
556 return giturl
557
558 return None
559
560
561def read_features(scripts_path, machine):
562 """
563 Find and return a list of features in a machine's user-defined
564 features fragment [${machine}-user-features.scc].
565 """
566 features = []
567
568 f = open_user_file(scripts_path, machine, machine+"-user-features.scc", "r")
569 lines = f.readlines()
570 for line in lines:
571 s = line.strip()
572 if s and not s.startswith("#"):
573 feature_include = s.split()
574 features.append(feature_include[1].strip())
575 f.close()
576
577 return features
578
579
580def write_features(scripts_path, machine, features):
581 """
582 Write (replace) the list of feature items in a
583 machine's user-defined features fragment [${machine}=user-features.cfg].
584 """
585 f = open_user_file(scripts_path, machine, machine+"-user-features.scc", "w")
586 for item in features:
587 f.write("include " + item + "\n")
588 f.close()
589
590 kernel_contents_changed(scripts_path, machine)
591
592
593def yocto_kernel_feature_list(scripts_path, machine):
594 """
595 Display the list of features used in a machine's user-defined
596 features fragment [${machine}-user-features.scc].
597 """
598 features = read_features(scripts_path, machine)
599
600 print "The current set of machine-specific features for %s is:" % machine
601 print gen_choices_str(features)
602
603
604def yocto_kernel_feature_rm(scripts_path, machine):
605 """
606 Display the list of features used in a machine's user-defined
607 features fragment [${machine}-user-features.scc], prompt the user
608 for one or more to remove, and remove them.
609 """
610 features = read_features(scripts_path, machine)
611
612 print "Specify the features to remove:"
613 input = raw_input(gen_choices_str(features))
614 rm_choices = input.split()
615 rm_choices.sort()
616
617 removed = []
618
619 for choice in reversed(rm_choices):
620 try:
621 idx = int(choice) - 1
622 except ValueError:
623 print "Invalid choice (%s), exiting" % choice
624 sys.exit(1)
625 if idx < 0 or idx >= len(features):
626 print "Invalid choice (%d), exiting" % (idx + 1)
627 sys.exit(1)
628 removed.append(features.pop(idx))
629
630 write_features(scripts_path, machine, features)
631
632 print "Removed features:"
633 for r in removed:
634 print "\t%s" % r
635
636
637def yocto_kernel_feature_add(scripts_path, machine, features):
638 """
639 Add one or more features a machine's user-defined features
640 fragment [${machine}-user-features.scc].
641 """
642 new_items = []
643
644 for item in features:
645 if not item.endswith(".scc"):
646 print "Invalid feature (%s), exiting" % item
647 sys.exit(1)
648 new_items.append(item)
649
650 cur_items = read_features(scripts_path, machine)
651 cur_items.extend(new_items)
652
653 write_features(scripts_path, machine, cur_items)
654
655 print "Added features:"
656 for n in new_items:
657 print "\t%s" % n
658
659
660def find_feature_url(git_url):
661 """
662 Find the url of the kern-features.rc kernel for the kernel repo
663 specified from the BSP's kernel recipe SRC_URI.
664 """
665 feature_url = ""
666 if git_url.startswith("git://"):
667 git_url = git_url[len("git://"):].strip()
668 s = git_url.split("/")
669 if s[1].endswith(".git"):
670 s[1] = s[1][:len(s[1]) - len(".git")]
671 feature_url = "http://" + s[0] + "/cgit/cgit.cgi/" + s[1] + \
672 "/plain/meta/cfg/kern-features.rc?h=meta"
673
674 return feature_url
675
676
677def find_feature_desc(lines):
678 """
679 Find the feature description and compatibility in the passed-in
680 set of lines. Returns a string string of the form 'desc
681 [compat]'.
682 """
683 desc = "no description available"
684 compat = "unknown"
685
686 for line in lines:
687 idx = line.find("KFEATURE_DESCRIPTION")
688 if idx != -1:
689 desc = line[idx + len("KFEATURE_DESCRIPTION"):].strip()
690 if desc.startswith("\""):
691 desc = desc[1:]
692 if desc.endswith("\""):
693 desc = desc[:-1]
694 else:
695 idx = line.find("KFEATURE_COMPATIBILITY")
696 if idx != -1:
697 compat = line[idx + len("KFEATURE_COMPATIBILITY"):].strip()
698
699 return desc + " [" + compat + "]"
700
701
702def print_feature_descs(layer, feature_dir):
703 """
704 Print the feature descriptions for the features in feature_dir.
705 """
706 kernel_files_features = os.path.join(layer, "recipes-kernel/linux/files/" +
707 feature_dir)
708 for root, dirs, files in os.walk(kernel_files_features):
709 for file in files:
710 if file.endswith("~") or file.endswith("#"):
711 continue
712 if file.endswith(".scc"):
713 fullpath = os.path.join(layer, "recipes-kernel/linux/files/" +
714 feature_dir + "/" + file)
715 f = open(fullpath)
716 feature_desc = find_feature_desc(f.readlines())
717 print feature_dir + "/" + file + ": " + feature_desc
718
719
720def yocto_kernel_available_features_list(scripts_path, machine):
721 """
722 Display the list of all the kernel features available for use in
723 BSPs, as gathered from the set of feature sources.
724 """
725 layer = find_bsp_layer(machine)
726 kernel = find_current_kernel(layer, machine)
727 if not kernel:
728 print "Couldn't determine the kernel for this BSP, exiting."
729 sys.exit(1)
730
731 context = create_context(machine, "arch", scripts_path)
732 context["name"] = "name"
733 context["filename"] = kernel
734 giturl = find_giturl(context)
735 feature_url = find_feature_url(giturl)
736
737 feature_cmd = "wget -q -O - " + feature_url
738 tmp = subprocess.Popen(feature_cmd, shell=True, stdout=subprocess.PIPE).stdout.read()
739
740 print "The current set of kernel features available to %s is:\n" % machine
741
742 if tmp:
743 tmpline = tmp.split("\n")
744 in_kernel_options = False
745 for line in tmpline:
746 if not "=" in line:
747 if in_kernel_options:
748 break
749 if "kernel-options" in line:
750 in_kernel_options = True
751 continue
752 if in_kernel_options:
753 feature_def = line.split("=")
754 feature_type = feature_def[0].strip()
755 feature = feature_def[1].strip()
756 desc = get_feature_desc(giturl, feature)
757 print "%s: %s" % (feature, desc)
758
759 print "[local]"
760
761 print_feature_descs(layer, "cfg")
762 print_feature_descs(layer, "features")
763
764
765def find_feature_desc_url(git_url, feature):
766 """
767 Find the url of the kernel feature in the kernel repo specified
768 from the BSP's kernel recipe SRC_URI.
769 """
770 feature_desc_url = ""
771 if git_url.startswith("git://"):
772 git_url = git_url[len("git://"):].strip()
773 s = git_url.split("/")
774 if s[1].endswith(".git"):
775 s[1] = s[1][:len(s[1]) - len(".git")]
776 feature_desc_url = "http://" + s[0] + "/cgit/cgit.cgi/" + s[1] + \
777 "/plain/meta/cfg/kernel-cache/" + feature + "?h=meta"
778
779 return feature_desc_url
780
781
782def get_feature_desc(git_url, feature):
783 """
784 Return a feature description of the form 'description [compatibility]
785 BSPs, as gathered from the set of feature sources.
786 """
787 feature_desc_url = find_feature_desc_url(git_url, feature)
788 feature_desc_cmd = "wget -q -O - " + feature_desc_url
789 tmp = subprocess.Popen(feature_desc_cmd, shell=True, stdout=subprocess.PIPE).stdout.read()
790
791 return find_feature_desc(tmp.split("\n"))
792
793
794def yocto_kernel_feature_describe(scripts_path, machine, feature):
795 """
796 Display the description of a specific kernel feature available for
797 use in a BSP.
798 """
799 layer = find_bsp_layer(machine)
800
801 kernel = find_current_kernel(layer, machine)
802 if not kernel:
803 print "Couldn't determine the kernel for this BSP, exiting."
804 sys.exit(1)
805
806 context = create_context(machine, "arch", scripts_path)
807 context["name"] = "name"
808 context["filename"] = kernel
809 giturl = find_giturl(context)
810
811 desc = get_feature_desc(giturl, feature)
812
813 print desc
814
815
816def check_feature_name(feature_name):
817 """
818 Sanity-check the feature name for create/destroy. Return False if not OK.
819 """
820 if not feature_name.endswith(".scc"):
821 print "Invalid feature name (must end with .scc) [%s], exiting" % feature_name
822 return False
823
824 if "/" in feature_name:
825 print "Invalid feature name (don't specify directory) [%s], exiting" % feature_name
826 return False
827
828 return True
829
830
831def check_create_input(feature_items):
832 """
833 Sanity-check the create input. Return False if not OK.
834 """
835 if not check_feature_name(feature_items[0]):
836 return False
837
838 if feature_items[1].endswith(".patch") or feature_items[1].startswith("CONFIG_"):
839 print "Missing description and/or compatibilty [%s], exiting" % feature_items[1]
840 return False
841
842 if feature_items[2].endswith(".patch") or feature_items[2].startswith("CONFIG_"):
843 print "Missing description and/or compatibility [%s], exiting" % feature_items[1]
844 return False
845
846 return True
847
848
849def yocto_kernel_feature_create(scripts_path, machine, feature_items):
850 """
851 Create a recipe-space kernel feature in a BSP.
852 """
853 if not check_create_input(feature_items):
854 sys.exit(1)
855
856 feature = feature_items[0]
857 feature_basename = feature.split(".")[0]
858 feature_description = feature_items[1]
859 feature_compat = feature_items[2]
860
861 patches = []
862 cfg_items = []
863
864 for item in feature_items[3:]:
865 if item.endswith(".patch"):
866 patches.append(item)
867 elif item.startswith("CONFIG"):
868 if ("=y" in item or "=m" in item):
869 cfg_items.append(item)
870 else:
871 print "Invalid feature item (must be .patch or CONFIG_*) [%s], exiting" % item
872 sys.exit(1)
873
874 feature_dirname = "cfg"
875 if patches:
876 feature_dirname = "features"
877
878 filesdir = find_filesdir(scripts_path, machine)
879 if not filesdir:
880 print "Couldn't add feature (%s), no 'files' dir found" % feature
881 sys.exit(1)
882
883 featdir = os.path.join(filesdir, feature_dirname)
884 if not os.path.exists(featdir):
885 os.mkdir(featdir)
886
887 for patch in patches:
888 if not os.path.isfile(patch):
889 print "Couldn't find patch (%s), exiting" % patch
890 sys.exit(1)
891 basename = os.path.basename(patch)
892 featdir_patch = os.path.join(featdir, basename)
893 shutil.copyfile(patch, featdir_patch)
894
895 new_cfg_filename = os.path.join(featdir, feature_basename + ".cfg")
896 new_cfg_file = open(new_cfg_filename, "w")
897 for cfg_item in cfg_items:
898 new_cfg_file.write(cfg_item + "\n")
899 new_cfg_file.close()
900
901 new_feature_filename = os.path.join(featdir, feature_basename + ".scc")
902 new_feature_file = open(new_feature_filename, "w")
903 new_feature_file.write("define KFEATURE_DESCRIPTION \"" + feature_description + "\"\n")
904 new_feature_file.write("define KFEATURE_COMPATIBILITY " + feature_compat + "\n\n")
905
906 for patch in patches:
907 patch_dir, patch_file = os.path.split(patch)
908 new_feature_file.write("patch " + patch_file + "\n")
909
910 new_feature_file.write("kconf non-hardware " + feature_basename + ".cfg\n")
911 new_feature_file.close()
912
913 print "Added feature:"
914 print "\t%s" % feature_dirname + "/" + feature
915
916
917def feature_in_use(scripts_path, machine, feature):
918 """
919 Determine whether the specified feature is in use by the BSP.
920 Return True if so, False otherwise.
921 """
922 features = read_features(scripts_path, machine)
923 for f in features:
924 if f == feature:
925 return True
926 return False
927
928
929def feature_remove(scripts_path, machine, feature):
930 """
931 Remove the specified feature from the available recipe-space
932 features defined for the BSP.
933 """
934 features = read_features(scripts_path, machine)
935 new_features = []
936 for f in features:
937 if f == feature:
938 continue
939 new_features.append(f)
940 write_features(scripts_path, machine, new_features)
941
942
943def yocto_kernel_feature_destroy(scripts_path, machine, feature):
944 """
945 Remove a recipe-space kernel feature from a BSP.
946 """
947 if not check_feature_name(feature):
948 sys.exit(1)
949
950 if feature_in_use(scripts_path, machine, "features/" + feature) or \
951 feature_in_use(scripts_path, machine, "cfg/" + feature):
952 print "Feature %s is in use (use 'feature rm' to un-use it first), exiting" % feature
953 sys.exit(1)
954
955 filesdir = find_filesdir(scripts_path, machine)
956 if not filesdir:
957 print "Couldn't destroy feature (%s), no 'files' dir found" % feature
958 sys.exit(1)
959
960 feature_dirname = "features"
961 featdir = os.path.join(filesdir, feature_dirname)
962 if not os.path.exists(featdir):
963 print "Couldn't find feature directory (%s)" % feature_dirname
964 sys.exit(1)
965
966 feature_fqn = os.path.join(featdir, feature)
967 if not os.path.exists(feature_fqn):
968 feature_dirname = "cfg"
969 featdir = os.path.join(filesdir, feature_dirname)
970 if not os.path.exists(featdir):
971 print "Couldn't find feature directory (%s)" % feature_dirname
972 sys.exit(1)
973 feature_fqn = os.path.join(featdir, feature_filename)
974 if not os.path.exists(feature_fqn):
975 print "Couldn't find feature (%s)" % feature
976 sys.exit(1)
977
978 f = open(feature_fqn, "r")
979 lines = f.readlines()
980 for line in lines:
981 s = line.strip()
982 if s.startswith("patch ") or s.startswith("kconf "):
983 split_line = s.split()
984 filename = os.path.join(featdir, split_line[-1])
985 if os.path.exists(filename):
986 os.remove(filename)
987 f.close()
988 os.remove(feature_fqn)
989
990 feature_remove(scripts_path, machine, feature)
991
992 print "Removed feature:"
993 print "\t%s" % feature_dirname + "/" + feature
994
995
996def base_branches(context):
997 """
998 Return a list of the base branches found in the kernel git repo.
999 """
1000 giturl = find_giturl(context)
1001
1002 print "Getting branches from remote repo %s..." % giturl
1003
1004 gitcmd = "git ls-remote %s *heads* 2>&1" % (giturl)
1005 tmp = subprocess.Popen(gitcmd, shell=True, stdout=subprocess.PIPE).stdout.read()
1006
1007 branches = []
1008
1009 if tmp:
1010 tmpline = tmp.split("\n")
1011 for line in tmpline:
1012 if len(line)==0:
1013 break;
1014 if not line.endswith("base"):
1015 continue;
1016 idx = line.find("refs/heads/")
1017 kbranch = line[idx + len("refs/heads/"):]
1018 if kbranch.find("/") == -1 and kbranch.find("base") == -1:
1019 continue
1020 idx = kbranch.find("base")
1021 branches.append(kbranch[:idx - 1])
1022
1023 return branches
1024
1025
1026def all_branches(context):
1027 """
1028 Return a list of all the branches found in the kernel git repo.
1029 """
1030 giturl = find_giturl(context)
1031
1032 print "Getting branches from remote repo %s..." % giturl
1033
1034 gitcmd = "git ls-remote %s *heads* 2>&1" % (giturl)
1035 tmp = subprocess.Popen(gitcmd, shell=True, stdout=subprocess.PIPE).stdout.read()
1036
1037 branches = []
1038
1039 base_prefixes = None
1040
1041 try:
1042 branches_base = context["branches_base"]
1043 if branches_base:
1044 base_prefixes = branches_base.split(":")
1045 except KeyError:
1046 pass
1047
1048 arch = context["arch"]
1049
1050 if tmp:
1051 tmpline = tmp.split("\n")
1052 for line in tmpline:
1053 if len(line)==0:
1054 break;
1055 idx = line.find("refs/heads/")
1056 kbranch = line[idx + len("refs/heads/"):]
1057 kbranch_prefix = kbranch.rsplit("/", 1)[0]
1058
1059 if base_prefixes:
1060 for base_prefix in base_prefixes:
1061 if kbranch_prefix == base_prefix:
1062 branches.append(kbranch)
1063 continue
1064
1065 if (kbranch.find("/") != -1 and
1066 (kbranch.find("standard") != -1 or kbranch.find("base") != -1) or
1067 kbranch == "base"):
1068 branches.append(kbranch)
1069 continue
1070
1071 return branches
diff --git a/scripts/lib/bsp/substrate/target/arch/arm/.gitignore b/scripts/lib/bsp/substrate/target/arch/arm/.gitignore
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/arm/.gitignore
diff --git a/scripts/lib/bsp/substrate/target/arch/arm/recipes-graphics/xorg-xserver/xserver-xf86-config/machine.noinstall b/scripts/lib/bsp/substrate/target/arch/arm/recipes-graphics/xorg-xserver/xserver-xf86-config/machine.noinstall
new file mode 100644
index 0000000000..b442d02d57
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/arm/recipes-graphics/xorg-xserver/xserver-xf86-config/machine.noinstall
@@ -0,0 +1 @@
# yocto-bsp-dirname {{=machine}}
diff --git a/scripts/lib/bsp/substrate/target/arch/arm/recipes-graphics/xorg-xserver/xserver-xf86-config/machine/xorg.conf b/scripts/lib/bsp/substrate/target/arch/arm/recipes-graphics/xorg-xserver/xserver-xf86-config/machine/xorg.conf
new file mode 100644
index 0000000000..bc52893e2a
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/arm/recipes-graphics/xorg-xserver/xserver-xf86-config/machine/xorg.conf
@@ -0,0 +1,34 @@
1# yocto-bsp-filename {{ if xserver == "y": }} this
2Section "Module"
3 Load "extmod"
4 Load "dbe"
5 Load "glx"
6 Load "freetype"
7 Load "type1"
8 Load "record"
9 Load "dri"
10EndSection
11
12Section "Monitor"
13 Identifier "Builtin Default Monitor"
14EndSection
15
16Section "Device"
17 Identifier "Builtin Default fbdev Device 0"
18 Driver "omapfb"
19EndSection
20
21Section "Screen"
22 Identifier "Builtin Default fbdev Screen 0"
23 Device "Builtin Default fbdev Device 0"
24 Monitor "Builtin Default Monitor"
25EndSection
26
27Section "ServerLayout"
28 Identifier "Builtin Default Layout"
29 Screen "Builtin Default fbdev Screen 0"
30EndSection
31
32Section "ServerFlags"
33 Option "DontZap" "0"
34EndSection
diff --git a/scripts/lib/bsp/substrate/target/arch/arm/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend b/scripts/lib/bsp/substrate/target/arch/arm/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend
new file mode 100644
index 0000000000..30830031ed
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/arm/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend
@@ -0,0 +1,2 @@
1# yocto-bsp-filename {{ if xserver == "y": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
diff --git a/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files.noinstall b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files.noinstall
new file mode 100644
index 0000000000..1e0d92c55c
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files.noinstall
@@ -0,0 +1 @@
# yocto-bsp-dirname {{ if kernel_choice != "custom": }} files
diff --git a/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine-non_hardware.cfg b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine-non_hardware.cfg
new file mode 100644
index 0000000000..9bfc90c6f2
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine-non_hardware.cfg
@@ -0,0 +1,31 @@
1# yocto-bsp-filename {{=machine}}-non_hardware.cfg
2#
3# Miscellaneous filesystems
4#
5CONFIG_NFS_DEF_FILE_IO_SIZE=1024
6
7#
8# Multiple Device Support
9#
10# CONFIG_MD is not set
11
12# Kernel Features
13#
14CONFIG_NO_HZ=y
15
16#
17# CPUIdle
18#
19CONFIG_CPU_IDLE=y
20CONFIG_CPU_IDLE_GOV_LADDER=y
21CONFIG_CPU_IDLE_GOV_MENU=y
22
23#
24# Kernel hacking
25#
26CONFIG_DEBUG_FS=y
27
28#
29# Power management options
30#
31CONFIG_PM_DEBUG=y
diff --git a/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine-preempt-rt.scc b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine-preempt-rt.scc
new file mode 100644
index 0000000000..ca5f3b5be9
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine-preempt-rt.scc
@@ -0,0 +1,14 @@
1# yocto-bsp-filename {{=machine}}-preempt-rt.scc
2define KMACHINE {{=machine}}
3define KTYPE preempt-rt
4define KARCH arm
5
6include {{=map_preempt_rt_kbranch(need_new_kbranch, new_kbranch, existing_kbranch)}}
7{{ if need_new_kbranch == "y": }}
8branch {{=machine}}
9
10include {{=machine}}.scc
11
12# default policy for preempt-rt kernels
13include features/latencytop/latencytop.scc
14include features/profiling/profiling.scc
diff --git a/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine-standard.scc b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine-standard.scc
new file mode 100644
index 0000000000..9014c2c97e
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine-standard.scc
@@ -0,0 +1,14 @@
1# yocto-bsp-filename {{=machine}}-standard.scc
2define KMACHINE {{=machine}}
3define KTYPE standard
4define KARCH arm
5
6include {{=map_standard_kbranch(need_new_kbranch, new_kbranch, existing_kbranch)}}
7{{ if need_new_kbranch == "y": }}
8branch {{=machine}}
9
10include {{=machine}}.scc
11
12# default policy for standard kernels
13include features/latencytop/latencytop.scc
14include features/profiling/profiling.scc
diff --git a/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine-tiny.scc b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine-tiny.scc
new file mode 100644
index 0000000000..3f1c252232
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine-tiny.scc
@@ -0,0 +1,10 @@
1# yocto-bsp-filename {{=machine}}-tiny.scc
2define KMACHINE {{=machine}}
3define KTYPE tiny
4define KARCH arm
5
6include {{=map_tiny_kbranch(need_new_kbranch, new_kbranch, existing_kbranch)}}
7{{ if need_new_kbranch == "y": }}
8branch {{=machine}}
9
10include {{=machine}}.scc
diff --git a/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine-user-config.cfg b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine-user-config.cfg
new file mode 100644
index 0000000000..47489e44e9
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine-user-config.cfg
@@ -0,0 +1 @@
# yocto-bsp-filename {{=machine}}-user-config.cfg
diff --git a/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine-user-features.scc b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine-user-features.scc
new file mode 100644
index 0000000000..582759e612
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine-user-features.scc
@@ -0,0 +1 @@
# yocto-bsp-filename {{=machine}}-user-features.scc
diff --git a/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine-user-patches.scc b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine-user-patches.scc
new file mode 100644
index 0000000000..97f747fa07
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine-user-patches.scc
@@ -0,0 +1 @@
# yocto-bsp-filename {{=machine}}-user-patches.scc
diff --git a/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine.cfg b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine.cfg
new file mode 100644
index 0000000000..a2e1ae0f75
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine.cfg
@@ -0,0 +1,321 @@
1# yocto-bsp-filename {{=machine}}.cfg
2#
3# System Type
4#
5CONFIG_ARCH_OMAP=y
6
7#
8# TI OMAP Implementations
9#
10# CONFIG_ARCH_OMAP2 is not set
11CONFIG_ARCH_OMAP3=y
12
13#
14# TI OMAP Common Features
15#
16CONFIG_ARCH_OMAP2PLUS=y
17
18#
19# OMAP Feature Selections
20#
21CONFIG_OMAP_32K_TIMER=y
22CONFIG_OMAP_32K_TIMER_HZ=128
23CONFIG_OMAP_DM_TIMER=y
24CONFIG_OMAP_RESET_CLOCKS=y
25CONFIG_OMAP_SMARTREFLEX=y
26CONFIG_OMAP_SMARTREFLEX_CLASS3=y
27CONFIG_OMAP_MBOX_FWK=m
28CONFIG_OMAP_MBOX_KFIFO_SIZE=256
29
30#
31# OMAP Board Type
32#
33CONFIG_MACH_OMAP3_BEAGLE=y
34
35#
36# Processor Features
37#
38CONFIG_ARM_THUMBEE=y
39CONFIG_ARM_ERRATA_430973=y
40
41#
42# Kernel Features
43#
44CONFIG_LEDS=y
45
46
47#
48# Serial drivers
49#
50CONFIG_SERIAL_OMAP=y
51CONFIG_SERIAL_OMAP_CONSOLE=y
52
53#
54# At least one emulation must be selected
55#
56CONFIG_VFP=y
57CONFIG_NEON=y
58
59#
60# Power management options
61#
62CONFIG_PM=y
63CONFIG_PM_RUNTIME=y
64
65#
66# Generic Driver Options
67#
68CONFIG_MTD=y
69CONFIG_MTD_CMDLINE_PARTS=y
70#
71# User Modules And Translation Layers
72#
73CONFIG_MTD_BLKDEVS=y
74CONFIG_MTD_BLOCK=y
75
76#
77# RAM/ROM/Flash chip drivers
78#
79CONFIG_MTD_CFI=y
80CONFIG_MTD_CFI_INTELEXT=y
81
82#
83# Disk-On-Chip Device Drivers
84#
85CONFIG_MTD_NAND=y
86
87CONFIG_MTD_NAND_OMAP2=y
88
89CONFIG_MTD_UBI=y
90
91#
92# SCSI device support
93#
94CONFIG_SCSI=y
95
96#
97# SCSI support type (disk, tape, CD-ROM)
98#
99CONFIG_BLK_DEV_SD=y
100
101#
102# Ethernet (10 or 100Mbit)
103#
104CONFIG_SMSC911X=y
105CONFIG_USB_NET_SMSC95XX=y
106
107#
108# Userland interfaces
109#
110CONFIG_INPUT_EVDEV=y
111
112#
113# Input Device Drivers
114#
115CONFIG_KEYBOARD_TWL4030=y
116CONFIG_INPUT_TOUCHSCREEN=y
117CONFIG_TOUCHSCREEN_ADS7846=y
118
119#
120# Miscellaneous I2C Chip support
121#
122CONFIG_I2C=y
123CONFIG_I2C_OMAP=y
124CONFIG_SPI=y
125CONFIG_SPI_MASTER=y
126CONFIG_SPI_OMAP24XX=y
127
128#
129# I2C GPIO expanders:
130#
131CONFIG_GPIO_TWL4030=y
132
133#
134# SPI GPIO expanders:
135#
136CONFIG_OMAP_WATCHDOG=y
137CONFIG_WATCHDOG_NOWAYOUT=y
138
139#
140# Multifunction device drivers
141#
142CONFIG_TWL4030_CORE=y
143CONFIG_REGULATOR=y
144CONFIG_REGULATOR_DUMMY=y
145CONFIG_REGULATOR_TWL4030=y
146
147#
148# Graphics support
149#
150CONFIG_FB=y
151CONFIG_DRM=m
152# CONFIG_VGASTATE is not set
153# CONFIG_VIDEO_OUTPUT_CONTROL is not set
154# CONFIG_FIRMWARE_EDID is not set
155# CONFIG_FB_DDC is not set
156# CONFIG_FB_BOOT_VESA_SUPPORT is not set
157CONFIG_FB_CFB_FILLRECT=y
158CONFIG_FB_CFB_COPYAREA=y
159CONFIG_FB_CFB_IMAGEBLIT=y
160# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
161# CONFIG_FB_SYS_FILLRECT is not set
162# CONFIG_FB_SYS_COPYAREA is not set
163# CONFIG_FB_SYS_IMAGEBLIT is not set
164# CONFIG_FB_FOREIGN_ENDIAN is not set
165# CONFIG_FB_SYS_FOPS is not set
166# CONFIG_FB_SVGALIB is not set
167# CONFIG_FB_MACMODES is not set
168# CONFIG_FB_BACKLIGHT is not set
169CONFIG_FB_MODE_HELPERS=y
170# CONFIG_FB_TILEBLITTING is not set
171
172#
173# Frame buffer hardware drivers
174#
175# CONFIG_FB_S1D13XXX is not set
176# CONFIG_FB_TMIO is not set
177# CONFIG_FB_VIRTUAL is not set
178# CONFIG_FB_METRONOME is not set
179# CONFIG_FB_MB862XX is not set
180# CONFIG_FB_BROADSHEET is not set
181# CONFIG_FB_OMAP_BOOTLOADER_INIT is not set
182CONFIG_OMAP2_VRAM=y
183CONFIG_OMAP2_VRFB=y
184CONFIG_OMAP2_DSS=y
185CONFIG_OMAP2_VRAM_SIZE=14
186CONFIG_OMAP2_DSS_DEBUG_SUPPORT=y
187# CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS is not set
188CONFIG_OMAP2_DSS_DPI=y
189# CONFIG_OMAP2_DSS_RFBI is not set
190CONFIG_OMAP2_DSS_VENC=y
191# CONFIG_OMAP2_DSS_SDI is not set
192CONFIG_OMAP2_DSS_DSI=y
193# CONFIG_OMAP2_DSS_FAKE_VSYNC is not set
194CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=0
195CONFIG_FB_OMAP2=y
196CONFIG_FB_OMAP2_DEBUG_SUPPORT=y
197CONFIG_FB_OMAP2_NUM_FBS=2
198
199#
200# OMAP2/3 Display Device Drivers
201#
202CONFIG_PANEL_GENERIC_DPI=y
203CONFIG_PANEL_DVI=y
204CONFIG_PANEL_SHARP_LS037V7DW01=y
205# CONFIG_PANEL_LGPHILIPS_LB035Q02 is not set
206# CONFIG_PANEL_TAAL is not set
207CONFIG_PANEL_TPO_TD043MTEA1=m
208# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
209CONFIG_BACKLIGHT_CLASS_DEVICE=y
210
211#
212# Display device support
213#
214CONFIG_DISPLAY_SUPPORT=y
215CONFIG_DUMMY_CONSOLE=y
216# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
217CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
218# CONFIG_FONTS is not set
219CONFIG_FONT_8x8=y
220CONFIG_FONT_8x16=y
221# CONFIG_LOGO_LINUX_MONO is not set
222# CONFIG_LOGO_LINUX_VGA16 is not set
223
224#
225# Console display driver support
226#
227CONFIG_FRAMEBUFFER_CONSOLE=y
228CONFIG_LOGO=y
229# CONFIG_VGA_CONSOLE is not set
230
231# DMA Devices
232CONFIG_DMADEVICES=y
233CONFIG_DMA_OMAP=y
234CONFIG_DMA_OF=y
235
236CONFIG_SOUND=y
237CONFIG_SND=y
238CONFIG_SND_SOC=y
239CONFIG_SND_OMAP_SOC=y
240CONFIG_SND_OMAP_SOC_OMAP_TWL4030=y
241
242#
243# USB Input Devices
244#
245CONFIG_USB=y
246CONFIG_USB_SUPPORT=y
247
248#
249# Miscellaneous USB options
250#
251CONFIG_USB_OTG=y
252# CONFIG_USB_OTG_WHITELIST is not set
253
254#
255# USB Host Controller Drivers
256#
257CONFIG_USB_EHCI_HCD=y
258CONFIG_USB_EHCI_TT_NEWSCHED=y
259CONFIG_USB_EHCI_ROOT_HUB_TT=y
260CONFIG_USB_MUSB_HDRC=y
261CONFIG_USB_MUSB_OMAP2PLUS=y
262CONFIG_USB_OMAP=y
263
264#
265# OMAP 343x high speed USB support
266#
267CONFIG_USB_MUSB_OTG=y
268CONFIG_USB_GADGET_MUSB_HDRC=y
269CONFIG_USB_MUSB_HDRC_HCD=y
270CONFIG_USB_INVENTRA_DMA=y
271
272#
273# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
274#
275
276#
277# may also be needed; see USB_STORAGE Help for more information
278#
279CONFIG_USB_STORAGE=y
280
281#
282# USB Miscellaneous drivers
283#
284CONFIG_USB_GADGET=y
285CONFIG_USB_GADGET_DUALSPEED=y
286CONFIG_USB_OTG_UTILS=y
287CONFIG_TWL4030_USB=y
288
289# USB gadget modules
290CONFIG_USB_G_NCM=y
291CONFIG_USB_MASS_STORAGE=y
292
293CONFIG_MMC=y
294
295#
296# MMC/SD Host Controller Drivers
297#
298CONFIG_MMC_OMAP_HS=y
299
300#
301# Real Time Clock
302#
303CONFIG_RTC_LIB=y
304CONFIG_RTC_CLASS=y
305CONFIG_RTC_DRV_TWL4030=y
306
307#
308# DOS/FAT/NT Filesystems
309#
310CONFIG_VFAT_FS=y
311
312#
313# Multimedia core support
314#
315
316# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set
317
318#
319# Advanced Power Management Emulation support
320#
321CONFIG_APM_EMULATION=y
diff --git a/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine.scc b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine.scc
new file mode 100644
index 0000000000..828400df40
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/files/machine.scc
@@ -0,0 +1,8 @@
1# yocto-bsp-filename {{=machine}}.scc
2kconf hardware {{=machine}}.cfg
3kconf non-hardware {{machine}}-non_hardware.cfg
4
5include features/usb-net/usb-net.scc
6
7kconf hardware {{=machine}}-user-config.cfg
8include {{=machine}}-user-patches.scc
diff --git a/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/kernel-list.noinstall b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/kernel-list.noinstall
new file mode 100644
index 0000000000..a04e6c7852
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/kernel-list.noinstall
@@ -0,0 +1,5 @@
1{{ if kernel_choice != "custom": }}
2{{ input type:"boolean" name:"use_default_kernel" prio:"10" msg:"Would you like to use the default (3.14) kernel? (y/n)" default:"y"}}
3
4{{ if kernel_choice != "custom" and use_default_kernel == "n": }}
5{{ input type:"choicelist" name:"kernel_choice" gen:"bsp.kernel.kernels" prio:"10" msg:"Please choose the kernel to use in this BSP:" default:"linux-yocto_3.14"}}
diff --git a/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/linux-yocto-dev.bbappend b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/linux-yocto-dev.bbappend
new file mode 100644
index 0000000000..2fa6231cbf
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/linux-yocto-dev.bbappend
@@ -0,0 +1,26 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto-dev": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
8
9{{ if need_new_kbranch == "y": }}
10{{ input type:"choicelist" name:"new_kbranch" nameappend:"i386" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
11
12{{ if need_new_kbranch == "n": }}
13{{ input type:"choicelist" name:"existing_kbranch" nameappend:"i386" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
14
15{{ if need_new_kbranch == "n": }}
16KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
17
18{{ input type:"boolean" name:"smp" prio:"30" msg:"Would you like SMP support? (y/n)" default:"y"}}
19{{ if smp == "y": }}
20KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
21
22SRC_URI += "file://{{=machine}}-standard.scc \
23 file://{{=machine}}-user-config.cfg \
24 file://{{=machine}}-user-patches.scc \
25 file://{{=machine}}-user-features.scc \
26 "
diff --git a/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/linux-yocto-rt_3.10.bbappend b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/linux-yocto-rt_3.10.bbappend
new file mode 100644
index 0000000000..35b0958582
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/linux-yocto-rt_3.10.bbappend
@@ -0,0 +1,33 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto-rt_3.10": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7
8{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
9
10{{ if need_new_kbranch == "y": }}
11{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/preempt-rt" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/preempt-rt/base" }}
12
13{{ if need_new_kbranch == "n": }}
14{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/preempt-rt" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/preempt-rt/base" }}
15
16{{ if need_new_kbranch == "n": }}
17KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
18
19{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
20{{ if smp == "y": }}
21KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
22
23SRC_URI += "file://{{=machine}}-preempt-rt.scc \
24 file://{{=machine}}-user-config.cfg \
25 file://{{=machine}}-user-patches.scc \
26 file://{{=machine}}-user-features.scc \
27 "
28
29# uncomment and replace these SRCREVs with the real commit ids once you've had
30# the appropriate changes committed to the upstream linux-yocto repo
31#SRCREV_machine_pn-linux-yocto-rt_{{=machine}} ?= "f35992f80c81dc5fa1a97165dfd5cbb84661f7cb"
32#SRCREV_meta_pn-linux-yocto-rt_{{=machine}} ?= "1b534b2f8bbe9b8a773268cfa30a4850346f6f5f"
33#LINUX_VERSION = "3.10.9"
diff --git a/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/linux-yocto-tiny_3.10.bbappend b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/linux-yocto-tiny_3.10.bbappend
new file mode 100644
index 0000000000..f04dd0cce4
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/linux-yocto-tiny_3.10.bbappend
@@ -0,0 +1,33 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto-tiny_3.10": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7
8{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
9
10{{ if need_new_kbranch == "y": }}
11{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
12
13{{ if need_new_kbranch == "n": }}
14{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
15
16{{ if need_new_kbranch == "n": }}
17KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
18
19{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
20{{ if smp == "y": }}
21KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
22
23SRC_URI += "file://{{=machine}}-tiny.scc \
24 file://{{=machine}}-user-config.cfg \
25 file://{{=machine}}-user-patches.scc \
26 file://{{=machine}}-user-features.scc \
27 "
28
29# uncomment and replace these SRCREVs with the real commit ids once you've had
30# the appropriate changes committed to the upstream linux-yocto repo
31#SRCREV_machine_pn-linux-yocto-tiny_{{=machine}} ?= "840bb8c059418c4753415df56c9aff1c0d5354c8"
32#SRCREV_meta_pn-linux-yocto-tiny_{{=machine}} ?= "4fd76cc4f33e0afd8f906b1e8f231b6d13b6c993"
33#LINUX_VERSION = "3.10.9"
diff --git a/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/linux-yocto-tiny_3.14.bbappend b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/linux-yocto-tiny_3.14.bbappend
new file mode 100644
index 0000000000..471ccbcc3e
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/linux-yocto-tiny_3.14.bbappend
@@ -0,0 +1,33 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto-tiny_3.14": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7
8{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
9
10{{ if need_new_kbranch == "y": }}
11{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
12
13{{ if need_new_kbranch == "n": }}
14{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
15
16{{ if need_new_kbranch == "n": }}
17KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
18
19{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
20{{ if smp == "y": }}
21KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
22
23SRC_URI += "file://{{=machine}}-tiny.scc \
24 file://{{=machine}}-user-config.cfg \
25 file://{{=machine}}-user-patches.scc \
26 file://{{=machine}}-user-features.scc \
27 "
28
29# uncomment and replace these SRCREVs with the real commit ids once you've had
30# the appropriate changes committed to the upstream linux-yocto repo
31#SRCREV_machine_pn-linux-yocto-tiny_{{=machine}} ?= "840bb8c059418c4753415df56c9aff1c0d5354c8"
32#SRCREV_meta_pn-linux-yocto-tiny_{{=machine}} ?= "4fd76cc4f33e0afd8f906b1e8f231b6d13b6c993"
33#LINUX_VERSION = "3.14"
diff --git a/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/linux-yocto_3.10.bbappend b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/linux-yocto_3.10.bbappend
new file mode 100644
index 0000000000..badb3aa239
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/linux-yocto_3.10.bbappend
@@ -0,0 +1,33 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto_3.10": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7
8{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
9
10{{ if need_new_kbranch == "y": }}
11{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
12
13{{ if need_new_kbranch == "n": }}
14{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
15
16{{ if need_new_kbranch == "n": }}
17KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
18
19{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
20{{ if smp == "y": }}
21KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
22
23SRC_URI += "file://{{=machine}}-standard.scc \
24 file://{{=machine}}-user-config.cfg \
25 file://{{=machine}}-user-patches.scc \
26 file://{{=machine}}-user-features.scc \
27 "
28
29# uncomment and replace these SRCREVs with the real commit ids once you've had
30# the appropriate changes committed to the upstream linux-yocto repo
31#SRCREV_machine_pn-linux-yocto_{{=machine}} ?= "19f7e43b54aef08d58135ed2a897d77b624b320a"
32#SRCREV_meta_pn-linux-yocto_{{=machine}} ?= "459165c1dd61c4e843c36e6a1abeb30949a20ba7"
33#LINUX_VERSION = "3.10.9" \ No newline at end of file
diff --git a/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/linux-yocto_3.14.bbappend b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/linux-yocto_3.14.bbappend
new file mode 100644
index 0000000000..1e1cc51315
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/arm/recipes-kernel/linux/linux-yocto_3.14.bbappend
@@ -0,0 +1,33 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto_3.14": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7
8{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
9
10{{ if need_new_kbranch == "y": }}
11{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
12
13{{ if need_new_kbranch == "n": }}
14{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
15
16{{ if need_new_kbranch == "n": }}
17KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
18
19{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
20{{ if smp == "y": }}
21KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
22
23SRC_URI += "file://{{=machine}}-standard.scc \
24 file://{{=machine}}-user-config.cfg \
25 file://{{=machine}}-user-patches.scc \
26 file://{{=machine}}-user-features.scc \
27 "
28
29# uncomment and replace these SRCREVs with the real commit ids once you've had
30# the appropriate changes committed to the upstream linux-yocto repo
31#SRCREV_machine_pn-linux-yocto_{{=machine}} ?= "840bb8c059418c4753415df56c9aff1c0d5354c8"
32#SRCREV_meta_pn-linux-yocto_{{=machine}} ?= "4fd76cc4f33e0afd8f906b1e8f231b6d13b6c993"
33#LINUX_VERSION = "3.14" \ No newline at end of file
diff --git a/scripts/lib/bsp/substrate/target/arch/common/COPYING.MIT b/scripts/lib/bsp/substrate/target/arch/common/COPYING.MIT
new file mode 100644
index 0000000000..fb950dc69f
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/common/COPYING.MIT
@@ -0,0 +1,17 @@
1Permission is hereby granted, free of charge, to any person obtaining a copy
2of this software and associated documentation files (the "Software"), to deal
3in the Software without restriction, including without limitation the rights
4to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
5copies of the Software, and to permit persons to whom the Software is
6furnished to do so, subject to the following conditions:
7
8The above copyright notice and this permission notice shall be included in
9all copies or substantial portions of the Software.
10
11THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
12IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
13FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
14AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
15LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
16OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
17THE SOFTWARE.
diff --git a/scripts/lib/bsp/substrate/target/arch/common/README b/scripts/lib/bsp/substrate/target/arch/common/README
new file mode 100644
index 0000000000..928659f302
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/common/README
@@ -0,0 +1,118 @@
1This README file contains information on building the meta-{{=machine}}
2BSP layer, and booting the images contained in the /binary directory.
3Please see the corresponding sections below for details.
4
5
6Dependencies
7============
8
9This layer depends on:
10
11 URI: git://git.openembedded.org/bitbake
12 branch: master
13
14 URI: git://git.openembedded.org/openembedded-core
15 layers: meta
16 branch: master
17
18 URI: git://git.yoctoproject.org/xxxx
19 layers: xxxx
20 branch: master
21
22
23Patches
24=======
25
26Please submit any patches against this BSP to the Yocto mailing list
27(yocto@yoctoproject.org) and cc: the maintainer:
28
29Maintainer: XXX YYYYYY <xxx.yyyyyy@zzzzz.com>
30
31Please see the meta-xxxx/MAINTAINERS file for more details.
32
33
34Table of Contents
35=================
36
37 I. Building the meta-{{=machine}} BSP layer
38 II. Booting the images in /binary
39
40
41I. Building the meta-{{=machine}} BSP layer
42========================================
43
44--- replace with specific instructions for your layer ---
45
46In order to build an image with BSP support for a given release, you
47need to download the corresponding BSP tarball from the 'Board Support
48Package (BSP) Downloads' page of the Yocto Project website.
49
50Having done that, and assuming you extracted the BSP tarball contents
51at the top-level of your yocto build tree, you can build a
52{{=machine}} image by adding the location of the meta-{{=machine}}
53layer to bblayers.conf, along with any other layers needed (to access
54common metadata shared between BSPs) e.g.:
55
56 yocto/meta-xxxx \
57 yocto/meta-xxxx/meta-{{=machine}} \
58
59To enable the {{=machine}} layer, add the {{=machine}} MACHINE to local.conf:
60
61 MACHINE ?= "{{=machine}}"
62
63You should then be able to build a {{=machine}} image as such:
64
65 $ source oe-init-build-env
66 $ bitbake core-image-sato
67
68At the end of a successful build, you should have a live image that
69you can boot from a USB flash drive (see instructions on how to do
70that below, in the section 'Booting the images from /binary').
71
72As an alternative to downloading the BSP tarball, you can also work
73directly from the meta-xxxx git repository. For each BSP in the
74'meta-xxxx' repository, there are multiple branches, one corresponding
75to each major release starting with 'laverne' (0.90), in addition to
76the latest code which tracks the current master (note that not all
77BSPs are present in every release). Instead of extracting a BSP
78tarball at the top level of your yocto build tree, you can
79equivalently check out the appropriate branch from the meta-xxxx
80repository at the same location.
81
82
83II. Booting the images in /binary
84=================================
85
86--- replace with specific instructions for your platform ---
87
88This BSP contains bootable live images, which can be used to directly
89boot Yocto off of a USB flash drive.
90
91Under Linux, insert a USB flash drive. Assuming the USB flash drive
92takes device /dev/sdf, use dd to copy the live image to it. For
93example:
94
95# dd if=core-image-sato-{{=machine}}-20101207053738.hddimg of=/dev/sdf
96# sync
97# eject /dev/sdf
98
99This should give you a bootable USB flash device. Insert the device
100into a bootable USB socket on the target, and power on. This should
101result in a system booted to the Sato graphical desktop.
102
103If you want a terminal, use the arrows at the top of the UI to move to
104different pages of available applications, one of which is named
105'Terminal'. Clicking that should give you a root terminal.
106
107If you want to ssh into the system, you can use the root terminal to
108ifconfig the IP address and use that to ssh in. The root password is
109empty, so to log in type 'root' for the user name and hit 'Enter' at
110the Password prompt: and you should be in.
111
112----
113
114If you find you're getting corrupt images on the USB (it doesn't show
115the syslinux boot: prompt, or the boot: prompt contains strange
116characters), try doing this first:
117
118# dd if=/dev/zero of=/dev/sdf bs=1M count=512
diff --git a/scripts/lib/bsp/substrate/target/arch/common/README.sources b/scripts/lib/bsp/substrate/target/arch/common/README.sources
new file mode 100644
index 0000000000..3c4cb7b435
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/common/README.sources
@@ -0,0 +1,17 @@
1The sources for the packages comprising the images shipped with this
2BSP can be found at the following location:
3
4http://downloads.yoctoproject.org/mirror/sources/
5
6The metadata used to generate the images shipped with this BSP, in
7addition to the code contained in this BSP, can be found at the
8following location:
9
10http://www.yoctoproject.org/downloads/yocto-1.1/poky-edison-6.0.tar.bz2
11
12The metadata used to generate the images shipped with this BSP, in
13addition to the code contained in this BSP, can also be found at the
14following locations:
15
16git://git.yoctoproject.org/poky.git
17git://git.yoctoproject.org/meta-xxxx
diff --git a/scripts/lib/bsp/substrate/target/arch/common/binary/.gitignore b/scripts/lib/bsp/substrate/target/arch/common/binary/.gitignore
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/common/binary/.gitignore
diff --git a/scripts/lib/bsp/substrate/target/arch/common/conf/layer.conf b/scripts/lib/bsp/substrate/target/arch/common/conf/layer.conf
new file mode 100644
index 0000000000..5529f45954
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/common/conf/layer.conf
@@ -0,0 +1,10 @@
1# We have a conf and classes directory, add to BBPATH
2BBPATH .= ":${LAYERDIR}"
3
4# We have a recipes-* directories, add to BBFILES
5BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
6 ${LAYERDIR}/recipes-*/*/*.bbappend"
7
8BBFILE_COLLECTIONS += "{{=machine}}"
9BBFILE_PATTERN_{{=machine}} = "^${LAYERDIR}/"
10BBFILE_PRIORITY_{{=machine}} = "6"
diff --git a/scripts/lib/bsp/substrate/target/arch/common/recipes-bsp/formfactor/formfactor/machine.noinstall b/scripts/lib/bsp/substrate/target/arch/common/recipes-bsp/formfactor/formfactor/machine.noinstall
new file mode 100644
index 0000000000..b442d02d57
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/common/recipes-bsp/formfactor/formfactor/machine.noinstall
@@ -0,0 +1 @@
# yocto-bsp-dirname {{=machine}}
diff --git a/scripts/lib/bsp/substrate/target/arch/common/recipes-bsp/formfactor/formfactor/machine/machconfig b/scripts/lib/bsp/substrate/target/arch/common/recipes-bsp/formfactor/formfactor/machine/machconfig
new file mode 100644
index 0000000000..3b85d3821f
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/common/recipes-bsp/formfactor/formfactor/machine/machconfig
@@ -0,0 +1,5 @@
1# Assume a USB mouse and keyboard are connected
2{{ input type:"boolean" name:"touchscreen" msg:"Does your BSP have a touchscreen? (y/n)" default:"n" }}
3HAVE_TOUCHSCREEN={{=touchscreen}}
4{{ input type:"boolean" name:"keyboard" msg:"Does your BSP have a keyboard? (y/n)" default:"y" }}
5HAVE_KEYBOARD={{=keyboard}}
diff --git a/scripts/lib/bsp/substrate/target/arch/common/recipes-bsp/formfactor/formfactor_0.0.bbappend b/scripts/lib/bsp/substrate/target/arch/common/recipes-bsp/formfactor/formfactor_0.0.bbappend
new file mode 100644
index 0000000000..6d4804d127
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/common/recipes-bsp/formfactor/formfactor_0.0.bbappend
@@ -0,0 +1,2 @@
1FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
2
diff --git a/scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/kernel-list.noinstall b/scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/kernel-list.noinstall
new file mode 100644
index 0000000000..03b7d84ec2
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/kernel-list.noinstall
@@ -0,0 +1,26 @@
1{{ if kernel_choice == "custom": }}
2{{ input type:"boolean" name:"custom_kernel_remote" prio:"20" msg:"Is the custom kernel you'd like to use in a remote git repo? (y/n)" default:"y"}}
3
4{{ if kernel_choice == "custom" and custom_kernel_remote == "y": }}
5{{ input type:"edit-git-repo" name:"custom_kernel_remote_path" prio:"20" msg:"Please enter the full URI to the remote git repo (the default corresponds to linux-stable v3.13.9)" default:"git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git"}}
6
7{{ if kernel_choice == "custom" and custom_kernel_remote == "n": }}
8{{ input type:"edit-git-repo" name:"custom_kernel_local_path" prio:"20" msg:"You've indicated that you're not using a remote git repo. Please enter the full path to the local git repo you want to use (the default assumes a local linux-stable v3.13.9)" default:"/home/trz/yocto/kernels/linux-stable.git"}}
9
10{{ if kernel_choice == "custom": }}
11{{ input type:"boolean" name:"custom_kernel_need_kbranch" prio:"20" msg:"Do you need to use a specific (non-master) branch? (y/n)" default:"n"}}
12
13{{ if kernel_choice == "custom" and custom_kernel_need_kbranch == "y": }}
14{{ input type:"edit" name:"custom_kernel_kbranch" prio:"20" msg:"Please enter the branch you want to use (the default branch corresponds to the linux-stable 'linux-3.13.y' branch):" default:"linux-3.13.y"}}
15
16{{ if kernel_choice == "custom": }}
17{{ input type:"edit" name:"custom_kernel_srcrev" prio:"20" msg:"Please enter the SRCREV (commit id) you'd like to use (use '${AUTOREV}' to track the current HEAD):" default:"${AUTOREV}"}}
18
19{{ if kernel_choice == "custom": }}
20{{ input type:"edit" name:"custom_kernel_linux_version" prio:"20" msg:"Please enter the Linux version of the kernel you've specified:" default:"3.13.9"}}
21
22{{ if kernel_choice == "custom": }}
23{{ input type:"edit" name:"custom_kernel_linux_version_extension" prio:"20" msg:"Please enter a Linux version extension if you want (it will show up at the end of the kernel name shown by uname):" default:"-custom"}}
24
25{{ if kernel_choice == "custom": }}
26{{ input type:"edit-file" name:"custom_kernel_defconfig" prio:"20" msg:"It's recommended (but not required) that custom kernels be built using a defconfig. Please enter the full path to the defconfig for your kernel (NOTE: if you don't specify a defconfig the kernel probably won't build or boot):" default:""}}
diff --git a/scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/linux-yocto-custom.bb b/scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/linux-yocto-custom.bb
new file mode 100644
index 0000000000..80a52e7cae
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/linux-yocto-custom.bb
@@ -0,0 +1,58 @@
1# yocto-bsp-filename {{ if kernel_choice == "custom": }} this
2# This file was derived from the linux-yocto-custom.bb recipe in
3# oe-core.
4#
5# linux-yocto-custom.bb:
6#
7# A yocto-bsp-generated kernel recipe that uses the linux-yocto and
8# oe-core kernel classes to apply a subset of yocto kernel
9# management to git managed kernel repositories.
10#
11# Warning:
12#
13# Building this kernel without providing a defconfig or BSP
14# configuration will result in build or boot errors. This is not a
15# bug.
16#
17# Notes:
18#
19# patches: patches can be merged into to the source git tree itself,
20# added via the SRC_URI, or controlled via a BSP
21# configuration.
22#
23# example configuration addition:
24# SRC_URI += "file://smp.cfg"
25# example patch addition:
26# SRC_URI += "file://0001-linux-version-tweak.patch
27# example feature addition:
28# SRC_URI += "file://feature.scc"
29#
30
31inherit kernel
32require recipes-kernel/linux/linux-yocto.inc
33
34{{ if kernel_choice == "custom" and custom_kernel_remote == "y": }}
35SRC_URI = "{{=custom_kernel_remote_path}};protocol=git;bareclone=1;branch=${KBRANCH}"
36{{ if kernel_choice == "custom" and custom_kernel_remote == "n": }}
37SRC_URI = "git://{{=custom_kernel_local_path}};protocol=file;bareclone=1;branch=${KBRANCH}"
38
39SRC_URI += "file://defconfig"
40
41SRC_URI += "file://{{=machine}}.scc \
42 file://{{=machine}}.cfg \
43 file://{{=machine}}-user-config.cfg \
44 file://{{=machine}}-user-patches.scc \
45 "
46
47{{ if kernel_choice == "custom" and custom_kernel_need_kbranch == "y" and custom_kernel_kbranch and custom_kernel_kbranch != "master": }}
48KBRANCH = "{{=custom_kernel_kbranch}}"
49
50LINUX_VERSION ?= "{{=custom_kernel_linux_version}}"
51LINUX_VERSION_EXTENSION ?= "{{=custom_kernel_linux_version_extension}}"
52
53SRCREV="{{=custom_kernel_srcrev}}"
54
55PR = "r0"
56PV = "${LINUX_VERSION}+git${SRCPV}"
57
58COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
diff --git a/scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/linux-yocto-custom.noinstall b/scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/linux-yocto-custom.noinstall
new file mode 100644
index 0000000000..017d206c24
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/linux-yocto-custom.noinstall
@@ -0,0 +1 @@
# yocto-bsp-dirname {{ if kernel_choice == "custom": }} linux-yocto-custom
diff --git a/scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/linux-yocto-custom/defconfig b/scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/linux-yocto-custom/defconfig
new file mode 100644
index 0000000000..ceb0ffa30c
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/linux-yocto-custom/defconfig
@@ -0,0 +1,5 @@
1#
2# Placeholder for custom default kernel configuration. yocto-bsp will
3# replace this file with a user-specified defconfig.
4#
5{{ if custom_kernel_defconfig: replace_file(of, custom_kernel_defconfig) }}
diff --git a/scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/linux-yocto-custom/machine-user-config.cfg b/scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/linux-yocto-custom/machine-user-config.cfg
new file mode 100644
index 0000000000..922309d5ab
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/linux-yocto-custom/machine-user-config.cfg
@@ -0,0 +1,9 @@
1# yocto-bsp-filename {{=machine}}-user-config.cfg
2#
3# Used by yocto-kernel to manage config options.
4#
5# yocto-kernel may change the contents of this file in any
6# way it sees fit, including removing comments like this,
7# so don't manually make any modifications you don't want
8# to lose.
9#
diff --git a/scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/linux-yocto-custom/machine-user-patches.scc b/scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/linux-yocto-custom/machine-user-patches.scc
new file mode 100644
index 0000000000..6d1138f42a
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/linux-yocto-custom/machine-user-patches.scc
@@ -0,0 +1,9 @@
1# yocto-bsp-filename {{=machine}}-user-patches.scc
2#
3# Used by yocto-kernel to manage patches.
4#
5# yocto-kernel may change the contents of this file in any
6# way it sees fit, including removing comments like this,
7# so don't manually make any modifications you don't want
8# to lose.
9#
diff --git a/scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/linux-yocto-custom/machine.cfg b/scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/linux-yocto-custom/machine.cfg
new file mode 100644
index 0000000000..1ba8201f16
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/linux-yocto-custom/machine.cfg
@@ -0,0 +1,4 @@
1# yocto-bsp-filename {{=machine}}.cfg
2#
3# A convenient place to add config options, nothing more.
4#
diff --git a/scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/linux-yocto-custom/machine.scc b/scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/linux-yocto-custom/machine.scc
new file mode 100644
index 0000000000..0b6b413377
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/common/recipes-kernel/linux/linux-yocto-custom/machine.scc
@@ -0,0 +1,18 @@
1# yocto-bsp-filename {{=machine}}.scc
2#
3# The top-level 'feature' for the {{=machine}} custom kernel.
4#
5# Essentially this is a convenient top-level container or starting
6# point for adding lower-level config fragements and features.
7#
8
9# {{=machine}}.cfg in the linux-yocto-custom subdir is just a
10# convenient place for adding random config fragments.
11
12kconf hardware {{=machine}}.cfg
13
14# These are used by yocto-kernel to add config fragments and features.
15# Don't remove if you plan on using yocto-kernel with this BSP.
16
17kconf hardware {{=machine}}-user-config.cfg
18include {{=machine}}-user-patches.scc
diff --git a/scripts/lib/bsp/substrate/target/arch/i386/conf/machine/machine.conf b/scripts/lib/bsp/substrate/target/arch/i386/conf/machine/machine.conf
new file mode 100644
index 0000000000..43e38d06d0
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/i386/conf/machine/machine.conf
@@ -0,0 +1,67 @@
1# yocto-bsp-filename {{=machine}}.conf
2#@TYPE: Machine
3#@NAME: {{=machine}}
4
5#@DESCRIPTION: Machine configuration for {{=machine}} systems
6
7{{ if kernel_choice == "custom": preferred_kernel = "linux-yocto-custom" }}
8{{ if kernel_choice == "linux-yocto-dev": preferred_kernel = "linux-yocto-dev" }}
9{{ if kernel_choice == "custom" or kernel_choice == "linux-yocto-dev" : }}
10PREFERRED_PROVIDER_virtual/kernel ?= "{{=preferred_kernel}}"
11
12{{ if kernel_choice != "custom" and kernel_choice != "linux-yocto-dev": preferred_kernel = kernel_choice.split('_')[0] }}
13{{ if kernel_choice != "custom" and kernel_choice != "linux-yocto-dev": preferred_kernel_version = kernel_choice.split('_')[1] }}
14{{ if kernel_choice != "custom" and kernel_choice != "linux-yocto-dev": }}
15PREFERRED_PROVIDER_virtual/kernel ?= "{{=preferred_kernel}}"
16PREFERRED_VERSION_{{=preferred_kernel}} ?= "{{=preferred_kernel_version}}%"
17
18{{ input type:"choicelist" name:"tunefile" prio:"40" msg:"Which machine tuning would you like to use?" default:"tune_core2" }}
19{{ input type:"choice" val:"tune_i586" msg:"i586 tuning optimizations" }}
20{{ input type:"choice" val:"tune_atom" msg:"Atom tuning optimizations" }}
21{{ input type:"choice" val:"tune_core2" msg:"Core2 tuning optimizations" }}
22{{ if tunefile == "tune_i586": }}
23require conf/machine/include/tune-i586.inc
24{{ if tunefile == "tune_atom": }}
25require conf/machine/include/tune-atom.inc
26{{ if tunefile == "tune_core2": }}
27DEFAULTTUNE="core2-32"
28require conf/machine/include/tune-core2.inc
29
30require conf/machine/include/x86-base.inc
31
32MACHINE_FEATURES += "wifi efi pcbios"
33
34{{ input type:"boolean" name:"xserver" prio:"50" msg:"Do you need support for X? (y/n)" default:"y" }}
35
36{{ if xserver == "y" and (kernel_choice == "linux-yocto_3.14" or kernel_choice == "linux-yocto_3.10"): }}
37{{ input type:"choicelist" name:"xserver_choice" prio:"50" msg:"Please select an xserver for this machine:" default:"xserver_i915" }}
38{{ input type:"choice" val:"xserver_vesa" msg:"VESA xserver support" }}
39{{ input type:"choice" val:"xserver_i915" msg:"i915 xserver support" }}
40{{ input type:"choice" val:"xserver_i965" msg:"i965 xserver support" }}
41
42{{ if xserver == "y" and kernel_choice == "custom": }}
43{{ input type:"choicelist" name:"xserver_choice" prio:"50" msg:"Please select an xserver for this machine:" default:"xserver_i915" }}
44{{ input type:"choice" val:"xserver_vesa" msg:"VESA xserver support" }}
45{{ input type:"choice" val:"xserver_i915" msg:"i915 xserver support" }}
46{{ input type:"choice" val:"xserver_i965" msg:"i965 xserver support" }}
47
48{{ if xserver == "y" and kernel_choice != "linux-yocto_3.14" and kernel_choice != "linux-yocto_3.10" and kernel_choice != "custom": xserver_choice = "xserver_i915" }}
49
50{{ if xserver == "y": }}
51XSERVER ?= "${XSERVER_X86_BASE} \
52 ${XSERVER_X86_EXT} \
53{{ if xserver == "y" and xserver_choice == "xserver_vesa": }}
54 ${XSERVER_X86_VESA} \
55{{ if xserver == "y" and xserver_choice == "xserver_i915": }}
56 ${XSERVER_X86_I915} \
57{{ if xserver == "y" and xserver_choice == "xserver_i965": }}
58 ${XSERVER_X86_I965} \
59{{ if xserver == "y": }}
60 "
61
62MACHINE_EXTRA_RRECOMMENDS += "linux-firmware v86d"
63
64EXTRA_OECONF_append_pn-matchbox-panel-2 = " --with-battery=acpi"
65
66{{ if xserver == "y" and xserver_choice == "xserver_vesa": }}
67APPEND += "video=vesafb vga=0x318"
diff --git a/scripts/lib/bsp/substrate/target/arch/i386/recipes-graphics/xorg-xserver/xserver-xf86-config/machine.noinstall b/scripts/lib/bsp/substrate/target/arch/i386/recipes-graphics/xorg-xserver/xserver-xf86-config/machine.noinstall
new file mode 100644
index 0000000000..b442d02d57
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/i386/recipes-graphics/xorg-xserver/xserver-xf86-config/machine.noinstall
@@ -0,0 +1 @@
# yocto-bsp-dirname {{=machine}}
diff --git a/scripts/lib/bsp/substrate/target/arch/i386/recipes-graphics/xorg-xserver/xserver-xf86-config/machine/xorg.conf b/scripts/lib/bsp/substrate/target/arch/i386/recipes-graphics/xorg-xserver/xserver-xf86-config/machine/xorg.conf
new file mode 100644
index 0000000000..ac9a0f1bb0
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/i386/recipes-graphics/xorg-xserver/xserver-xf86-config/machine/xorg.conf
@@ -0,0 +1 @@
# yocto-bsp-filename {{ if xserver == "y": }} this
diff --git a/scripts/lib/bsp/substrate/target/arch/i386/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend b/scripts/lib/bsp/substrate/target/arch/i386/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend
new file mode 100644
index 0000000000..30830031ed
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/i386/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend
@@ -0,0 +1,2 @@
1# yocto-bsp-filename {{ if xserver == "y": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
diff --git a/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files.noinstall b/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files.noinstall
new file mode 100644
index 0000000000..1e0d92c55c
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files.noinstall
@@ -0,0 +1 @@
# yocto-bsp-dirname {{ if kernel_choice != "custom": }} files
diff --git a/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine-preempt-rt.scc b/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine-preempt-rt.scc
new file mode 100644
index 0000000000..619ee3f367
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine-preempt-rt.scc
@@ -0,0 +1,16 @@
1# yocto-bsp-filename {{=machine}}-preempt-rt.scc
2define KMACHINE {{=machine}}
3define KTYPE preempt-rt
4define KARCH i386
5
6include {{=map_preempt_rt_kbranch(need_new_kbranch, new_kbranch, existing_kbranch)}}
7{{ if need_new_kbranch == "y": }}
8branch {{=machine}}
9
10include {{=machine}}.scc
11
12# default policy for preempt-rt kernels
13include cfg/usb-mass-storage.scc
14include cfg/boot-live.scc
15include features/latencytop/latencytop.scc
16include features/profiling/profiling.scc
diff --git a/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine-standard.scc b/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine-standard.scc
new file mode 100644
index 0000000000..682012fafc
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine-standard.scc
@@ -0,0 +1,16 @@
1# yocto-bsp-filename {{=machine}}-standard.scc
2define KMACHINE {{=machine}}
3define KTYPE standard
4define KARCH i386
5
6include {{=map_standard_kbranch(need_new_kbranch, new_kbranch, existing_kbranch)}}
7{{ if need_new_kbranch == "y": }}
8branch {{=machine}}
9
10include {{=machine}}.scc
11
12# default policy for standard kernels
13include cfg/usb-mass-storage.scc
14include cfg/boot-live.scc
15include features/latencytop/latencytop.scc
16include features/profiling/profiling.scc
diff --git a/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine-tiny.scc b/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine-tiny.scc
new file mode 100644
index 0000000000..cc7519699a
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine-tiny.scc
@@ -0,0 +1,10 @@
1# yocto-bsp-filename {{=machine}}-tiny.scc
2define KMACHINE {{=machine}}
3define KTYPE tiny
4define KARCH i386
5
6include {{=map_tiny_kbranch(need_new_kbranch, new_kbranch, existing_kbranch)}}
7{{ if need_new_kbranch == "y": }}
8branch {{=machine}}
9
10include {{=machine}}.scc
diff --git a/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine-user-config.cfg b/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine-user-config.cfg
new file mode 100644
index 0000000000..69efdcc759
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine-user-config.cfg
@@ -0,0 +1 @@
# yocto-bsp-filename {{=machine}}-user-config.cfg \ No newline at end of file
diff --git a/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine-user-features.scc b/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine-user-features.scc
new file mode 100644
index 0000000000..85be26de97
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine-user-features.scc
@@ -0,0 +1 @@
# yocto-bsp-filename {{=machine}}-user-features.scc \ No newline at end of file
diff --git a/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine-user-patches.scc b/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine-user-patches.scc
new file mode 100644
index 0000000000..4c59daac46
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine-user-patches.scc
@@ -0,0 +1 @@
# yocto-bsp-filename {{=machine}}-user-patches.scc \ No newline at end of file
diff --git a/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine.cfg b/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine.cfg
new file mode 100644
index 0000000000..3b168b7e36
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine.cfg
@@ -0,0 +1,55 @@
1# yocto-bsp-filename {{=machine}}.cfg
2CONFIG_X86_32=y
3CONFIG_MATOM=y
4CONFIG_PRINTK=y
5
6# Basic hardware support for the box - network, USB, PCI, sound
7CONFIG_NETDEVICES=y
8CONFIG_ATA=y
9CONFIG_ATA_GENERIC=y
10CONFIG_ATA_SFF=y
11CONFIG_PCI=y
12CONFIG_MMC=y
13CONFIG_MMC_SDHCI=y
14CONFIG_USB_SUPPORT=y
15CONFIG_USB=y
16CONFIG_USB_ARCH_HAS_EHCI=y
17CONFIG_R8169=y
18CONFIG_PATA_SCH=y
19CONFIG_MMC_SDHCI_PCI=y
20CONFIG_USB_EHCI_HCD=y
21CONFIG_PCIEPORTBUS=y
22CONFIG_NET=y
23CONFIG_USB_UHCI_HCD=y
24CONFIG_USB_OHCI_HCD=y
25CONFIG_BLK_DEV_SD=y
26CONFIG_CHR_DEV_SG=y
27CONFIG_SOUND=y
28CONFIG_SND=y
29CONFIG_SND_HDA_INTEL=y
30CONFIG_SATA_AHCI=y
31CONFIG_AGP=y
32CONFIG_PM=y
33CONFIG_ACPI=y
34CONFIG_BACKLIGHT_LCD_SUPPORT=y
35CONFIG_BACKLIGHT_CLASS_DEVICE=y
36CONFIG_INPUT=y
37
38# Make sure these are on, otherwise the bootup won't be fun
39CONFIG_EXT3_FS=y
40CONFIG_UNIX=y
41CONFIG_INET=y
42CONFIG_MODULES=y
43CONFIG_SHMEM=y
44CONFIG_TMPFS=y
45CONFIG_PACKET=y
46
47# Needed for booting (and using) USB memory sticks
48CONFIG_BLK_DEV_LOOP=y
49CONFIG_NLS_CODEPAGE_437=y
50CONFIG_NLS_ISO8859_1=y
51
52CONFIG_RD_GZIP=y
53
54# Needed for booting (and using) CD images
55CONFIG_BLK_DEV_SR=y
diff --git a/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine.scc b/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine.scc
new file mode 100644
index 0000000000..3d32f111b0
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/files/machine.scc
@@ -0,0 +1,21 @@
1# yocto-bsp-filename {{=machine}}.scc
2kconf hardware {{=machine}}.cfg
3
4include features/intel-e1xxxx/intel-e100.scc
5include features/intel-e1xxxx/intel-e1xxxx.scc
6
7{{ if xserver == "y" and xserver_choice == "xserver_i915" or xserver_choice == "xserver_i965": }}
8include features/i915/i915.scc
9
10include features/serial/8250.scc
11include features/ericsson-3g/f5521gw.scc
12
13{{ if xserver == "y" and xserver_choice == "xserver_vesa": }}
14include cfg/vesafb.scc
15
16include cfg/usb-mass-storage.scc
17include cfg/boot-live.scc
18include features/power/intel.scc
19
20kconf hardware {{=machine}}-user-config.cfg
21include {{=machine}}-user-patches.scc
diff --git a/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/kernel-list.noinstall b/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/kernel-list.noinstall
new file mode 100644
index 0000000000..a04e6c7852
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/kernel-list.noinstall
@@ -0,0 +1,5 @@
1{{ if kernel_choice != "custom": }}
2{{ input type:"boolean" name:"use_default_kernel" prio:"10" msg:"Would you like to use the default (3.14) kernel? (y/n)" default:"y"}}
3
4{{ if kernel_choice != "custom" and use_default_kernel == "n": }}
5{{ input type:"choicelist" name:"kernel_choice" gen:"bsp.kernel.kernels" prio:"10" msg:"Please choose the kernel to use in this BSP:" default:"linux-yocto_3.14"}}
diff --git a/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/linux-yocto-dev.bbappend b/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/linux-yocto-dev.bbappend
new file mode 100644
index 0000000000..2fa6231cbf
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/linux-yocto-dev.bbappend
@@ -0,0 +1,26 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto-dev": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
8
9{{ if need_new_kbranch == "y": }}
10{{ input type:"choicelist" name:"new_kbranch" nameappend:"i386" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
11
12{{ if need_new_kbranch == "n": }}
13{{ input type:"choicelist" name:"existing_kbranch" nameappend:"i386" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
14
15{{ if need_new_kbranch == "n": }}
16KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
17
18{{ input type:"boolean" name:"smp" prio:"30" msg:"Would you like SMP support? (y/n)" default:"y"}}
19{{ if smp == "y": }}
20KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
21
22SRC_URI += "file://{{=machine}}-standard.scc \
23 file://{{=machine}}-user-config.cfg \
24 file://{{=machine}}-user-patches.scc \
25 file://{{=machine}}-user-features.scc \
26 "
diff --git a/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/linux-yocto-rt_3.10.bbappend b/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/linux-yocto-rt_3.10.bbappend
new file mode 100644
index 0000000000..35b0958582
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/linux-yocto-rt_3.10.bbappend
@@ -0,0 +1,33 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto-rt_3.10": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7
8{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
9
10{{ if need_new_kbranch == "y": }}
11{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/preempt-rt" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/preempt-rt/base" }}
12
13{{ if need_new_kbranch == "n": }}
14{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/preempt-rt" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/preempt-rt/base" }}
15
16{{ if need_new_kbranch == "n": }}
17KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
18
19{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
20{{ if smp == "y": }}
21KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
22
23SRC_URI += "file://{{=machine}}-preempt-rt.scc \
24 file://{{=machine}}-user-config.cfg \
25 file://{{=machine}}-user-patches.scc \
26 file://{{=machine}}-user-features.scc \
27 "
28
29# uncomment and replace these SRCREVs with the real commit ids once you've had
30# the appropriate changes committed to the upstream linux-yocto repo
31#SRCREV_machine_pn-linux-yocto-rt_{{=machine}} ?= "f35992f80c81dc5fa1a97165dfd5cbb84661f7cb"
32#SRCREV_meta_pn-linux-yocto-rt_{{=machine}} ?= "1b534b2f8bbe9b8a773268cfa30a4850346f6f5f"
33#LINUX_VERSION = "3.10.9"
diff --git a/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/linux-yocto-tiny_3.10.bbappend b/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/linux-yocto-tiny_3.10.bbappend
new file mode 100644
index 0000000000..f04dd0cce4
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/linux-yocto-tiny_3.10.bbappend
@@ -0,0 +1,33 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto-tiny_3.10": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7
8{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
9
10{{ if need_new_kbranch == "y": }}
11{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
12
13{{ if need_new_kbranch == "n": }}
14{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
15
16{{ if need_new_kbranch == "n": }}
17KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
18
19{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
20{{ if smp == "y": }}
21KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
22
23SRC_URI += "file://{{=machine}}-tiny.scc \
24 file://{{=machine}}-user-config.cfg \
25 file://{{=machine}}-user-patches.scc \
26 file://{{=machine}}-user-features.scc \
27 "
28
29# uncomment and replace these SRCREVs with the real commit ids once you've had
30# the appropriate changes committed to the upstream linux-yocto repo
31#SRCREV_machine_pn-linux-yocto-tiny_{{=machine}} ?= "840bb8c059418c4753415df56c9aff1c0d5354c8"
32#SRCREV_meta_pn-linux-yocto-tiny_{{=machine}} ?= "4fd76cc4f33e0afd8f906b1e8f231b6d13b6c993"
33#LINUX_VERSION = "3.10.9"
diff --git a/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/linux-yocto-tiny_3.14.bbappend b/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/linux-yocto-tiny_3.14.bbappend
new file mode 100644
index 0000000000..471ccbcc3e
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/linux-yocto-tiny_3.14.bbappend
@@ -0,0 +1,33 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto-tiny_3.14": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7
8{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
9
10{{ if need_new_kbranch == "y": }}
11{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
12
13{{ if need_new_kbranch == "n": }}
14{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
15
16{{ if need_new_kbranch == "n": }}
17KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
18
19{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
20{{ if smp == "y": }}
21KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
22
23SRC_URI += "file://{{=machine}}-tiny.scc \
24 file://{{=machine}}-user-config.cfg \
25 file://{{=machine}}-user-patches.scc \
26 file://{{=machine}}-user-features.scc \
27 "
28
29# uncomment and replace these SRCREVs with the real commit ids once you've had
30# the appropriate changes committed to the upstream linux-yocto repo
31#SRCREV_machine_pn-linux-yocto-tiny_{{=machine}} ?= "840bb8c059418c4753415df56c9aff1c0d5354c8"
32#SRCREV_meta_pn-linux-yocto-tiny_{{=machine}} ?= "4fd76cc4f33e0afd8f906b1e8f231b6d13b6c993"
33#LINUX_VERSION = "3.14"
diff --git a/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/linux-yocto_3.10.bbappend b/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/linux-yocto_3.10.bbappend
new file mode 100644
index 0000000000..1cfc611949
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/linux-yocto_3.10.bbappend
@@ -0,0 +1,33 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto_3.10": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7
8{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
9
10{{ if need_new_kbranch == "y": }}
11{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard:standard/common-pc" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
12
13{{ if need_new_kbranch == "n": }}
14{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard:standard/common-pc" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
15
16{{ if need_new_kbranch == "n": }}
17KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
18
19{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
20{{ if smp == "y": }}
21KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
22
23SRC_URI += "file://{{=machine}}-standard.scc \
24 file://{{=machine}}-user-config.cfg \
25 file://{{=machine}}-user-patches.scc \
26 file://{{=machine}}-user-features.scc \
27 "
28
29# uncomment and replace these SRCREVs with the real commit ids once you've had
30# the appropriate changes committed to the upstream linux-yocto repo
31#SRCREV_machine_pn-linux-yocto_{{=machine}} ?= "19f7e43b54aef08d58135ed2a897d77b624b320a"
32#SRCREV_meta_pn-linux-yocto_{{=machine}} ?= "459165c1dd61c4e843c36e6a1abeb30949a20ba7"
33#LINUX_VERSION = "3.10.9" \ No newline at end of file
diff --git a/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/linux-yocto_3.14.bbappend b/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/linux-yocto_3.14.bbappend
new file mode 100644
index 0000000000..fbb49edb26
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/i386/recipes-kernel/linux/linux-yocto_3.14.bbappend
@@ -0,0 +1,33 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto_3.14": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7
8{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
9
10{{ if need_new_kbranch == "y": }}
11{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard:standard/common-pc" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
12
13{{ if need_new_kbranch == "n": }}
14{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard:standard/common-pc" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
15
16{{ if need_new_kbranch == "n": }}
17KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
18
19{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
20{{ if smp == "y": }}
21KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
22
23SRC_URI += "file://{{=machine}}-standard.scc \
24 file://{{=machine}}-user-config.cfg \
25 file://{{=machine}}-user-patches.scc \
26 file://{{=machine}}-user-features.scc \
27 "
28
29# uncomment and replace these SRCREVs with the real commit ids once you've had
30# the appropriate changes committed to the upstream linux-yocto repo
31#SRCREV_machine_pn-linux-yocto_{{=machine}} ?= "840bb8c059418c4753415df56c9aff1c0d5354c8"
32#SRCREV_meta_pn-linux-yocto_{{=machine}} ?= "4fd76cc4f33e0afd8f906b1e8f231b6d13b6c993"
33#LINUX_VERSION = "3.14" \ No newline at end of file
diff --git a/scripts/lib/bsp/substrate/target/arch/layer/COPYING.MIT b/scripts/lib/bsp/substrate/target/arch/layer/COPYING.MIT
new file mode 100644
index 0000000000..89de354795
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/layer/COPYING.MIT
@@ -0,0 +1,17 @@
1Permission is hereby granted, free of charge, to any person obtaining a copy
2of this software and associated documentation files (the "Software"), to deal
3in the Software without restriction, including without limitation the rights
4to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
5copies of the Software, and to permit persons to whom the Software is
6furnished to do so, subject to the following conditions:
7
8The above copyright notice and this permission notice shall be included in
9all copies or substantial portions of the Software.
10
11THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
12IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
13FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
14AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
15LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
16OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
17THE SOFTWARE.
diff --git a/scripts/lib/bsp/substrate/target/arch/layer/README b/scripts/lib/bsp/substrate/target/arch/layer/README
new file mode 100644
index 0000000000..943dfc4412
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/layer/README
@@ -0,0 +1,64 @@
1This README file contains information on the contents of the
2{{=layer_name}} layer.
3
4Please see the corresponding sections below for details.
5
6
7Dependencies
8============
9
10This layer depends on:
11
12 URI: git://git.openembedded.org/bitbake
13 branch: master
14
15 URI: git://git.openembedded.org/openembedded-core
16 layers: meta
17 branch: master
18
19 URI: git://git.yoctoproject.org/xxxx
20 layers: xxxx
21 branch: master
22
23
24Patches
25=======
26
27Please submit any patches against the {{=layer_name}} layer to the
28xxxx mailing list (xxxx@zzzz.org) and cc: the maintainer:
29
30Maintainer: XXX YYYYYY <xxx.yyyyyy@zzzzz.com>
31
32
33Table of Contents
34=================
35
36 I. Adding the {{=layer_name}} layer to your build
37 II. Misc
38
39
40I. Adding the {{=layer_name}} layer to your build
41=================================================
42
43--- replace with specific instructions for the {{=layer_name}} layer ---
44
45In order to use this layer, you need to make the build system aware of
46it.
47
48Assuming the {{=layer_name}} layer exists at the top-level of your
49yocto build tree, you can add it to the build system by adding the
50location of the {{=layer_name}} layer to bblayers.conf, along with any
51other layers needed. e.g.:
52
53 BBLAYERS ?= " \
54 /path/to/yocto/meta \
55 /path/to/yocto/meta-yocto \
56 /path/to/yocto/meta-yocto-bsp \
57 /path/to/yocto/meta-{{=layer_name}} \
58 "
59
60
61II. Misc
62========
63
64--- replace with specific information about the {{=layer_name}} layer ---
diff --git a/scripts/lib/bsp/substrate/target/arch/layer/conf/layer.conf b/scripts/lib/bsp/substrate/target/arch/layer/conf/layer.conf
new file mode 100644
index 0000000000..bdffe17195
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/layer/conf/layer.conf
@@ -0,0 +1,10 @@
1# We have a conf and classes directory, add to BBPATH
2BBPATH .= ":${LAYERDIR}"
3
4# We have recipes-* directories, add to BBFILES
5BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
6 ${LAYERDIR}/recipes-*/*/*.bbappend"
7
8BBFILE_COLLECTIONS += "{{=layer_name}}"
9BBFILE_PATTERN_{{=layer_name}} = "^${LAYERDIR}/"
10BBFILE_PRIORITY_{{=layer_name}} = "{{=layer_priority}}"
diff --git a/scripts/lib/bsp/substrate/target/arch/layer/layer-questions.noinstall b/scripts/lib/bsp/substrate/target/arch/layer/layer-questions.noinstall
new file mode 100644
index 0000000000..e2a89c3b5d
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/layer/layer-questions.noinstall
@@ -0,0 +1,14 @@
1{{ input type:"edit" name:"layer_priority" prio:"20" msg:"Please enter the layer priority you'd like to use for the layer:" default:"6"}}
2
3{{ input type:"boolean" name:"create_example_recipe" prio:"20" msg:"Would you like to have an example recipe created? (y/n)" default:"n"}}
4
5{{ if create_example_recipe == "y": }}
6{{ input type:"edit" name:"example_recipe_name" prio:"20" msg:"Please enter the name you'd like to use for your example recipe:" default:"example"}}
7
8{{ input type:"boolean" name:"create_example_bbappend" prio:"20" msg:"Would you like to have an example bbappend file created? (y/n)" default:"n"}}
9
10{{ if create_example_bbappend == "y": }}
11{{ input type:"edit" name:"example_bbappend_name" prio:"20" msg:"Please enter the name you'd like to use for your bbappend file:" default:"example"}}
12
13{{ if create_example_bbappend == "y": }}
14{{ input type:"edit" name:"example_bbappend_version" prio:"20" msg:"Please enter the version number you'd like to use for your bbappend file (this should match the recipe you're appending to):" default:"0.1"}}
diff --git a/scripts/lib/bsp/substrate/target/arch/layer/recipes-example-bbappend.noinstall b/scripts/lib/bsp/substrate/target/arch/layer/recipes-example-bbappend.noinstall
new file mode 100644
index 0000000000..3594e6583c
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/layer/recipes-example-bbappend.noinstall
@@ -0,0 +1 @@
# yocto-bsp-dirname {{ if create_example_bbappend == "y": }} recipes-example-bbappend
diff --git a/scripts/lib/bsp/substrate/target/arch/layer/recipes-example-bbappend/example-bbappend/example-bbappend-version.bbappend b/scripts/lib/bsp/substrate/target/arch/layer/recipes-example-bbappend/example-bbappend/example-bbappend-version.bbappend
new file mode 100644
index 0000000000..353133080a
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/layer/recipes-example-bbappend/example-bbappend/example-bbappend-version.bbappend
@@ -0,0 +1,9 @@
1# yocto-bsp-filename {{=example_bbappend_name}}_{{=example_bbappend_version}}.bbappend
2FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-${PV}:"
3
4#
5# This .bbappend doesn't yet do anything - replace this text with
6# modifications to the example_0.1.bb recipe, or whatever recipe it is
7# that you want to modify with this .bbappend (make sure you change
8# the recipe name (PN) and version (PV) to match).
9#
diff --git a/scripts/lib/bsp/substrate/target/arch/layer/recipes-example-bbappend/example-bbappend/example-bbappend-version.noinstall b/scripts/lib/bsp/substrate/target/arch/layer/recipes-example-bbappend/example-bbappend/example-bbappend-version.noinstall
new file mode 100644
index 0000000000..46df8a8e04
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/layer/recipes-example-bbappend/example-bbappend/example-bbappend-version.noinstall
@@ -0,0 +1 @@
# yocto-bsp-dirname {{=example_bbappend_name}}-{{=example_bbappend_version}}
diff --git a/scripts/lib/bsp/substrate/target/arch/layer/recipes-example-bbappend/example-bbappend/example-bbappend-version/example.patch b/scripts/lib/bsp/substrate/target/arch/layer/recipes-example-bbappend/example-bbappend/example-bbappend-version/example.patch
new file mode 100644
index 0000000000..2000a34da5
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/layer/recipes-example-bbappend/example-bbappend/example-bbappend-version/example.patch
@@ -0,0 +1,12 @@
1#
2# This is a non-functional placeholder file, here for example purposes
3# only.
4#
5# If you had a patch for your recipe, you'd put it in this directory
6# and reference it from your recipe's SRC_URI:
7#
8# SRC_URI += "file://example.patch"
9#
10# Note that you could also rename the directory containing this patch
11# to remove the version number or simply rename it 'files'. Doing so
12# allows you to use the same directory for multiple recipes.
diff --git a/scripts/lib/bsp/substrate/target/arch/layer/recipes-example.noinstall b/scripts/lib/bsp/substrate/target/arch/layer/recipes-example.noinstall
new file mode 100644
index 0000000000..b0069b1a5a
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/layer/recipes-example.noinstall
@@ -0,0 +1 @@
# yocto-bsp-dirname {{ if create_example_recipe == "y": }} recipes-example
diff --git a/scripts/lib/bsp/substrate/target/arch/layer/recipes-example/example/example-recipe-0.1.bb b/scripts/lib/bsp/substrate/target/arch/layer/recipes-example/example/example-recipe-0.1.bb
new file mode 100644
index 0000000000..ba1ccb16c6
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/layer/recipes-example/example/example-recipe-0.1.bb
@@ -0,0 +1,24 @@
1# yocto-bsp-filename {{=example_recipe_name}}_0.1.bb
2#
3# This file was derived from the 'Hello World!' example recipe in the
4# Yocto Project Development Manual.
5#
6
7DESCRIPTION = "Simple helloworld application"
8SECTION = "examples"
9LICENSE = "MIT"
10LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
11PR = "r0"
12
13SRC_URI = "file://helloworld.c"
14
15S = "${WORKDIR}"
16
17do_compile() {
18 ${CC} helloworld.c -o helloworld
19}
20
21do_install() {
22 install -d ${D}${bindir}
23 install -m 0755 helloworld ${D}${bindir}
24}
diff --git a/scripts/lib/bsp/substrate/target/arch/layer/recipes-example/example/example-recipe-0.1.noinstall b/scripts/lib/bsp/substrate/target/arch/layer/recipes-example/example/example-recipe-0.1.noinstall
new file mode 100644
index 0000000000..c319c19c57
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/layer/recipes-example/example/example-recipe-0.1.noinstall
@@ -0,0 +1 @@
# yocto-bsp-dirname {{=example_recipe_name}}-0.1
diff --git a/scripts/lib/bsp/substrate/target/arch/layer/recipes-example/example/example-recipe-0.1/example.patch b/scripts/lib/bsp/substrate/target/arch/layer/recipes-example/example/example-recipe-0.1/example.patch
new file mode 100644
index 0000000000..2000a34da5
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/layer/recipes-example/example/example-recipe-0.1/example.patch
@@ -0,0 +1,12 @@
1#
2# This is a non-functional placeholder file, here for example purposes
3# only.
4#
5# If you had a patch for your recipe, you'd put it in this directory
6# and reference it from your recipe's SRC_URI:
7#
8# SRC_URI += "file://example.patch"
9#
10# Note that you could also rename the directory containing this patch
11# to remove the version number or simply rename it 'files'. Doing so
12# allows you to use the same directory for multiple recipes.
diff --git a/scripts/lib/bsp/substrate/target/arch/layer/recipes-example/example/example-recipe-0.1/helloworld.c b/scripts/lib/bsp/substrate/target/arch/layer/recipes-example/example/example-recipe-0.1/helloworld.c
new file mode 100644
index 0000000000..71f2e46b4e
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/layer/recipes-example/example/example-recipe-0.1/helloworld.c
@@ -0,0 +1,8 @@
1#include <stdio.h>
2
3int main(int argc, char **argv)
4{
5 printf("Hello World!\n");
6
7 return 0;
8}
diff --git a/scripts/lib/bsp/substrate/target/arch/mips/.gitignore b/scripts/lib/bsp/substrate/target/arch/mips/.gitignore
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/mips/.gitignore
diff --git a/scripts/lib/bsp/substrate/target/arch/mips/conf/machine/machine.conf b/scripts/lib/bsp/substrate/target/arch/mips/conf/machine/machine.conf
new file mode 100644
index 0000000000..b319d626f4
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/mips/conf/machine/machine.conf
@@ -0,0 +1,39 @@
1# yocto-bsp-filename {{=machine}}.conf
2#@TYPE: Machine
3#@NAME: {{=machine}}
4
5#@DESCRIPTION: Machine configuration for {{=machine}} systems
6
7require conf/machine/include/tune-mips32.inc
8
9MACHINE_FEATURES = "screen keyboard pci usbhost ext2 ext3 serial"
10
11KERNEL_IMAGETYPE = "vmlinux"
12KERNEL_ALT_IMAGETYPE = "vmlinux.bin"
13KERNEL_IMAGE_STRIP_EXTRA_SECTIONS = ".comment"
14
15{{ if kernel_choice == "custom": preferred_kernel = "linux-yocto-custom" }}
16{{ if kernel_choice == "linux-yocto-dev": preferred_kernel = "linux-yocto-dev" }}
17{{ if kernel_choice == "custom" or kernel_choice == "linux-yocto-dev" : }}
18PREFERRED_PROVIDER_virtual/kernel ?= "{{=preferred_kernel}}"
19
20{{ if kernel_choice != "custom" and kernel_choice != "linux-yocto-dev": preferred_kernel = kernel_choice.split('_')[0] }}
21{{ if kernel_choice != "custom" and kernel_choice != "linux-yocto-dev": preferred_kernel_version = kernel_choice.split('_')[1] }}
22{{ if kernel_choice != "custom" and kernel_choice != "linux-yocto-dev": }}
23PREFERRED_PROVIDER_virtual/kernel ?= "{{=preferred_kernel}}"
24PREFERRED_VERSION_{{=preferred_kernel}} ?= "{{=preferred_kernel_version}}%"
25
26{{ input type:"boolean" name:"xserver" prio:"50" msg:"Do you need support for X? (y/n)" default:"y" }}
27{{ if xserver == "y": }}
28PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
29XSERVER ?= "xserver-xorg \
30 xf86-input-evdev \
31 xf86-video-fbdev"
32
33SERIAL_CONSOLE = "115200 ttyS0"
34USE_VT ?= "0"
35
36MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"
37
38IMAGE_FSTYPES ?= "jffs2 tar.bz2"
39JFFS2_ERASEBLOCK = "0x10000"
diff --git a/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files.noinstall b/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files.noinstall
new file mode 100644
index 0000000000..1e0d92c55c
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files.noinstall
@@ -0,0 +1 @@
# yocto-bsp-dirname {{ if kernel_choice != "custom": }} files
diff --git a/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine-preempt-rt.scc b/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine-preempt-rt.scc
new file mode 100644
index 0000000000..176190cd2e
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine-preempt-rt.scc
@@ -0,0 +1,10 @@
1# yocto-bsp-filename {{=machine}}-preempt-rt.scc
2define KMACHINE {{=machine}}
3define KTYPE preempt-rt
4define KARCH mips
5
6include {{=map_preempt_rt_kbranch(need_new_kbranch, new_kbranch, existing_kbranch)}}
7{{ if need_new_kbranch == "y": }}
8branch {{=machine}}
9
10include {{=machine}}.scc
diff --git a/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine-standard.scc b/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine-standard.scc
new file mode 100644
index 0000000000..f05dd851d2
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine-standard.scc
@@ -0,0 +1,10 @@
1# yocto-bsp-filename {{=machine}}-standard.scc
2define KMACHINE {{=machine}}
3define KTYPE standard
4define KARCH mips
5
6include {{=map_standard_kbranch(need_new_kbranch, new_kbranch, existing_kbranch)}}
7{{ if need_new_kbranch == "y": }}
8branch {{=machine}}
9
10include {{=machine}}.scc
diff --git a/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine-tiny.scc b/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine-tiny.scc
new file mode 100644
index 0000000000..f71c775397
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine-tiny.scc
@@ -0,0 +1,10 @@
1# yocto-bsp-filename {{=machine}}-tiny.scc
2define KMACHINE {{=machine}}
3define KTYPE tiny
4define KARCH mips
5
6include {{=map_tiny_kbranch(need_new_kbranch, new_kbranch, existing_kbranch)}}
7{{ if need_new_kbranch == "y": }}
8branch {{=machine}}
9
10include {{=machine}}.scc
diff --git a/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine-user-config.cfg b/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine-user-config.cfg
new file mode 100644
index 0000000000..47489e44e9
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine-user-config.cfg
@@ -0,0 +1 @@
# yocto-bsp-filename {{=machine}}-user-config.cfg
diff --git a/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine-user-features.scc b/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine-user-features.scc
new file mode 100644
index 0000000000..85be26de97
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine-user-features.scc
@@ -0,0 +1 @@
# yocto-bsp-filename {{=machine}}-user-features.scc \ No newline at end of file
diff --git a/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine-user-patches.scc b/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine-user-patches.scc
new file mode 100644
index 0000000000..97f747fa07
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine-user-patches.scc
@@ -0,0 +1 @@
# yocto-bsp-filename {{=machine}}-user-patches.scc
diff --git a/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine.cfg b/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine.cfg
new file mode 100644
index 0000000000..2fe476691c
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine.cfg
@@ -0,0 +1,2 @@
1# yocto-bsp-filename {{=machine}}.cfg
2CONFIG_MIPS=y
diff --git a/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine.scc b/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine.scc
new file mode 100644
index 0000000000..f39dc3edf1
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/files/machine.scc
@@ -0,0 +1,8 @@
1# yocto-bsp-filename {{=machine}}.scc
2kconf hardware {{=machine}}.cfg
3
4include cfg/usb-mass-storage.scc
5include cfg/fs/vfat.scc
6
7kconf hardware {{=machine}}-user-config.cfg
8include {{=machine}}-user-patches.scc
diff --git a/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/kernel-list.noinstall b/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/kernel-list.noinstall
new file mode 100644
index 0000000000..a04e6c7852
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/kernel-list.noinstall
@@ -0,0 +1,5 @@
1{{ if kernel_choice != "custom": }}
2{{ input type:"boolean" name:"use_default_kernel" prio:"10" msg:"Would you like to use the default (3.14) kernel? (y/n)" default:"y"}}
3
4{{ if kernel_choice != "custom" and use_default_kernel == "n": }}
5{{ input type:"choicelist" name:"kernel_choice" gen:"bsp.kernel.kernels" prio:"10" msg:"Please choose the kernel to use in this BSP:" default:"linux-yocto_3.14"}}
diff --git a/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/linux-yocto-dev.bbappend b/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/linux-yocto-dev.bbappend
new file mode 100644
index 0000000000..2fa6231cbf
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/linux-yocto-dev.bbappend
@@ -0,0 +1,26 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto-dev": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
8
9{{ if need_new_kbranch == "y": }}
10{{ input type:"choicelist" name:"new_kbranch" nameappend:"i386" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
11
12{{ if need_new_kbranch == "n": }}
13{{ input type:"choicelist" name:"existing_kbranch" nameappend:"i386" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
14
15{{ if need_new_kbranch == "n": }}
16KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
17
18{{ input type:"boolean" name:"smp" prio:"30" msg:"Would you like SMP support? (y/n)" default:"y"}}
19{{ if smp == "y": }}
20KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
21
22SRC_URI += "file://{{=machine}}-standard.scc \
23 file://{{=machine}}-user-config.cfg \
24 file://{{=machine}}-user-patches.scc \
25 file://{{=machine}}-user-features.scc \
26 "
diff --git a/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/linux-yocto-rt_3.10.bbappend b/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/linux-yocto-rt_3.10.bbappend
new file mode 100644
index 0000000000..35b0958582
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/linux-yocto-rt_3.10.bbappend
@@ -0,0 +1,33 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto-rt_3.10": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7
8{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
9
10{{ if need_new_kbranch == "y": }}
11{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/preempt-rt" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/preempt-rt/base" }}
12
13{{ if need_new_kbranch == "n": }}
14{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/preempt-rt" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/preempt-rt/base" }}
15
16{{ if need_new_kbranch == "n": }}
17KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
18
19{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
20{{ if smp == "y": }}
21KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
22
23SRC_URI += "file://{{=machine}}-preempt-rt.scc \
24 file://{{=machine}}-user-config.cfg \
25 file://{{=machine}}-user-patches.scc \
26 file://{{=machine}}-user-features.scc \
27 "
28
29# uncomment and replace these SRCREVs with the real commit ids once you've had
30# the appropriate changes committed to the upstream linux-yocto repo
31#SRCREV_machine_pn-linux-yocto-rt_{{=machine}} ?= "f35992f80c81dc5fa1a97165dfd5cbb84661f7cb"
32#SRCREV_meta_pn-linux-yocto-rt_{{=machine}} ?= "1b534b2f8bbe9b8a773268cfa30a4850346f6f5f"
33#LINUX_VERSION = "3.10.9"
diff --git a/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/linux-yocto-tiny_3.10.bbappend b/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/linux-yocto-tiny_3.10.bbappend
new file mode 100644
index 0000000000..f04dd0cce4
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/linux-yocto-tiny_3.10.bbappend
@@ -0,0 +1,33 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto-tiny_3.10": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7
8{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
9
10{{ if need_new_kbranch == "y": }}
11{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
12
13{{ if need_new_kbranch == "n": }}
14{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
15
16{{ if need_new_kbranch == "n": }}
17KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
18
19{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
20{{ if smp == "y": }}
21KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
22
23SRC_URI += "file://{{=machine}}-tiny.scc \
24 file://{{=machine}}-user-config.cfg \
25 file://{{=machine}}-user-patches.scc \
26 file://{{=machine}}-user-features.scc \
27 "
28
29# uncomment and replace these SRCREVs with the real commit ids once you've had
30# the appropriate changes committed to the upstream linux-yocto repo
31#SRCREV_machine_pn-linux-yocto-tiny_{{=machine}} ?= "840bb8c059418c4753415df56c9aff1c0d5354c8"
32#SRCREV_meta_pn-linux-yocto-tiny_{{=machine}} ?= "4fd76cc4f33e0afd8f906b1e8f231b6d13b6c993"
33#LINUX_VERSION = "3.10.9"
diff --git a/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/linux-yocto-tiny_3.14.bbappend b/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/linux-yocto-tiny_3.14.bbappend
new file mode 100644
index 0000000000..c7e7989821
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/linux-yocto-tiny_3.14.bbappend
@@ -0,0 +1,33 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto-tiny_3.14": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7
8{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
9
10{{ if need_new_kbranch == "y": }}
11{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
12
13{{ if need_new_kbranch == "n": }}
14{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
15
16{{ if need_new_kbranch == "n": }}
17KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
18
19{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
20{{ if smp == "y": }}
21KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
22
23SRC_URI += "file://{{=machine}}-tiny.scc \
24 file://{{=machine}}-user-config.cfg \
25 file://{{=machine}}-user-patches.scc \
26 file://{{=machine}}-user-features.scc \
27 "
28
29# uncomment and replace these SRCREVs with the real commit ids once you've had
30# the appropriate changes committed to the upstream linux-yocto repo
31#SRCREV_machine_pn-linux-yocto-tiny_{{=machine}} ?= "840bb8c059418c4753415df56c9aff1c0d5354c8"
32#SRCREV_meta_pn-linux-yocto-tiny_{{=machine}} ?= "4fd76cc4f33e0afd8f906b1e8f231b6d13b6c993"
33#LINUX_VERSION = "3.14" \ No newline at end of file
diff --git a/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/linux-yocto_3.10.bbappend b/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/linux-yocto_3.10.bbappend
new file mode 100644
index 0000000000..badb3aa239
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/linux-yocto_3.10.bbappend
@@ -0,0 +1,33 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto_3.10": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7
8{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
9
10{{ if need_new_kbranch == "y": }}
11{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
12
13{{ if need_new_kbranch == "n": }}
14{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
15
16{{ if need_new_kbranch == "n": }}
17KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
18
19{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
20{{ if smp == "y": }}
21KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
22
23SRC_URI += "file://{{=machine}}-standard.scc \
24 file://{{=machine}}-user-config.cfg \
25 file://{{=machine}}-user-patches.scc \
26 file://{{=machine}}-user-features.scc \
27 "
28
29# uncomment and replace these SRCREVs with the real commit ids once you've had
30# the appropriate changes committed to the upstream linux-yocto repo
31#SRCREV_machine_pn-linux-yocto_{{=machine}} ?= "19f7e43b54aef08d58135ed2a897d77b624b320a"
32#SRCREV_meta_pn-linux-yocto_{{=machine}} ?= "459165c1dd61c4e843c36e6a1abeb30949a20ba7"
33#LINUX_VERSION = "3.10.9" \ No newline at end of file
diff --git a/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/linux-yocto_3.14.bbappend b/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/linux-yocto_3.14.bbappend
new file mode 100644
index 0000000000..1e1cc51315
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/mips/recipes-kernel/linux/linux-yocto_3.14.bbappend
@@ -0,0 +1,33 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto_3.14": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7
8{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
9
10{{ if need_new_kbranch == "y": }}
11{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
12
13{{ if need_new_kbranch == "n": }}
14{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
15
16{{ if need_new_kbranch == "n": }}
17KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
18
19{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
20{{ if smp == "y": }}
21KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
22
23SRC_URI += "file://{{=machine}}-standard.scc \
24 file://{{=machine}}-user-config.cfg \
25 file://{{=machine}}-user-patches.scc \
26 file://{{=machine}}-user-features.scc \
27 "
28
29# uncomment and replace these SRCREVs with the real commit ids once you've had
30# the appropriate changes committed to the upstream linux-yocto repo
31#SRCREV_machine_pn-linux-yocto_{{=machine}} ?= "840bb8c059418c4753415df56c9aff1c0d5354c8"
32#SRCREV_meta_pn-linux-yocto_{{=machine}} ?= "4fd76cc4f33e0afd8f906b1e8f231b6d13b6c993"
33#LINUX_VERSION = "3.14" \ No newline at end of file
diff --git a/scripts/lib/bsp/substrate/target/arch/powerpc/.gitignore b/scripts/lib/bsp/substrate/target/arch/powerpc/.gitignore
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/powerpc/.gitignore
diff --git a/scripts/lib/bsp/substrate/target/arch/powerpc/conf/machine/machine.conf b/scripts/lib/bsp/substrate/target/arch/powerpc/conf/machine/machine.conf
new file mode 100644
index 0000000000..bee0ec3772
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/powerpc/conf/machine/machine.conf
@@ -0,0 +1,75 @@
1# yocto-bsp-filename {{=machine}}.conf
2#@TYPE: Machine
3#@NAME: {{=machine}}
4
5#@DESCRIPTION: Machine configuration for {{=machine}} systems
6
7TARGET_FPU = ""
8
9{{ input type:"choicelist" name:"tunefile" prio:"40" msg:"Which machine tuning would you like to use?" default:"tune_ppce300c3" }}
10{{ input type:"choice" val:"tune_ppc476" msg:"ppc476 tuning optimizations" }}
11{{ input type:"choice" val:"tune_ppc603e" msg:"ppc603e tuning optimizations" }}
12{{ input type:"choice" val:"tune_ppc7400" msg:"ppc7400 tuning optimizations" }}
13{{ input type:"choice" val:"tune_ppce300c2" msg:"ppce300c2 tuning optimizations" }}
14{{ input type:"choice" val:"tune_ppce300c3" msg:"ppce300c3 tuning optimizations" }}
15{{ input type:"choice" val:"tune_ppce500" msg:"ppce500 tuning optimizations" }}
16{{ input type:"choice" val:"tune_ppce500mc" msg:"ppce500mc tuning optimizations" }}
17{{ input type:"choice" val:"tune_ppce500v2" msg:"ppce500v2 tuning optimizations" }}
18{{ input type:"choice" val:"tune_ppce5500" msg:"ppce5500 tuning optimizations" }}
19{{ input type:"choice" val:"tune_ppce6500" msg:"ppce6500 tuning optimizations" }}
20{{ if tunefile == "tune_ppc476": }}
21include conf/machine/include/tune-ppc476.inc
22{{ if tunefile == "tune_ppc603e": }}
23include conf/machine/include/tune-ppc603e.inc
24{{ if tunefile == "tune_ppc7400": }}
25include conf/machine/include/tune-ppc7400.inc
26{{ if tunefile == "tune_ppce300c2": }}
27include conf/machine/include/tune-ppce300c2.inc
28{{ if tunefile == "tune_ppce300c3": }}
29include conf/machine/include/tune-ppce300c3.inc
30{{ if tunefile == "tune_ppce500": }}
31include conf/machine/include/tune-ppce500.inc
32{{ if tunefile == "tune_ppce500mc": }}
33include conf/machine/include/tune-ppce500mc.inc
34{{ if tunefile == "tune_ppce500v2": }}
35include conf/machine/include/tune-ppce500v2.inc
36{{ if tunefile == "tune_ppce5500": }}
37include conf/machine/include/tune-ppce5500.inc
38{{ if tunefile == "tune_ppce6500": }}
39include conf/machine/include/tune-ppce6500.inc
40
41KERNEL_IMAGETYPE = "uImage"
42
43EXTRA_IMAGEDEPENDS += "u-boot"
44UBOOT_MACHINE_{{=machine}} = "MPC8315ERDB_config"
45
46SERIAL_CONSOLE = "115200 ttyS0"
47
48MACHINE_FEATURES = "keyboard pci ext2 ext3 serial"
49
50{{ if kernel_choice == "custom": preferred_kernel = "linux-yocto-custom" }}
51{{ if kernel_choice == "linux-yocto-dev": preferred_kernel = "linux-yocto-dev" }}
52{{ if kernel_choice == "custom" or kernel_choice == "linux-yocto-dev" : }}
53PREFERRED_PROVIDER_virtual/kernel ?= "{{=preferred_kernel}}"
54
55{{ if kernel_choice != "custom" and kernel_choice != "linux-yocto-dev": preferred_kernel = kernel_choice.split('_')[0] }}
56{{ if kernel_choice != "custom" and kernel_choice != "linux-yocto-dev": preferred_kernel_version = kernel_choice.split('_')[1] }}
57{{ if kernel_choice != "custom" and kernel_choice != "linux-yocto-dev": }}
58PREFERRED_PROVIDER_virtual/kernel ?= "{{=preferred_kernel}}"
59PREFERRED_VERSION_{{=preferred_kernel}} ?= "{{=preferred_kernel_version}}%"
60
61{{ input type:"boolean" name:"xserver" prio:"50" msg:"Do you need support for X? (y/n)" default:"y" }}
62{{ if xserver == "y": }}
63PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
64XSERVER ?= "xserver-xorg \
65 xf86-input-evdev \
66 xf86-video-fbdev"
67
68PREFERRED_VERSION_u-boot ?= "v2013.07%"
69{{ input type:"edit" name:"uboot_entrypoint" prio:"40" msg:"Please specify a value for UBOOT_ENTRYPOINT:" default:"0x00000000" }}
70UBOOT_ENTRYPOINT = "{{=uboot_entrypoint}}"
71
72{{ input type:"edit" name:"kernel_devicetree" prio:"40" msg:"Please specify a [arch/powerpc/boot/dts/xxx] value for KERNEL_DEVICETREE:" default:"mpc8315erdb.dts" }}
73KERNEL_DEVICETREE = "${S}/arch/powerpc/boot/dts/{{=kernel_devicetree}}"
74
75MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"
diff --git a/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files.noinstall b/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files.noinstall
new file mode 100644
index 0000000000..1e0d92c55c
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files.noinstall
@@ -0,0 +1 @@
# yocto-bsp-dirname {{ if kernel_choice != "custom": }} files
diff --git a/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine-preempt-rt.scc b/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine-preempt-rt.scc
new file mode 100644
index 0000000000..40c9267831
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine-preempt-rt.scc
@@ -0,0 +1,10 @@
1# yocto-bsp-filename {{=machine}}-preempt-rt.scc
2define KMACHINE {{=machine}}
3define KTYPE preempt-rt
4define KARCH powerpc
5
6include {{=map_preempt_rt_kbranch(need_new_kbranch, new_kbranch, existing_kbranch)}}
7{{ if need_new_kbranch == "y": }}
8branch {{=machine}}
9
10include {{=machine}}.scc
diff --git a/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine-standard.scc b/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine-standard.scc
new file mode 100644
index 0000000000..7a1d35be1e
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine-standard.scc
@@ -0,0 +1,10 @@
1# yocto-bsp-filename {{=machine}}-standard.scc
2define KMACHINE {{=machine}}
3define KTYPE standard
4define KARCH powerpc
5
6include {{=map_standard_kbranch(need_new_kbranch, new_kbranch, existing_kbranch)}}
7{{ if need_new_kbranch == "y": }}
8branch {{=machine}}
9
10include {{=machine}}.scc
diff --git a/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine-tiny.scc b/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine-tiny.scc
new file mode 100644
index 0000000000..1bf94b2d05
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine-tiny.scc
@@ -0,0 +1,10 @@
1# yocto-bsp-filename {{=machine}}-tiny.scc
2define KMACHINE {{=machine}}
3define KTYPE tiny
4define KARCH powerpc
5
6include {{=map_tiny_kbranch(need_new_kbranch, new_kbranch, existing_kbranch)}}
7{{ if need_new_kbranch == "y": }}
8branch {{=machine}}
9
10include {{=machine}}.scc
diff --git a/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine-user-config.cfg b/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine-user-config.cfg
new file mode 100644
index 0000000000..47489e44e9
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine-user-config.cfg
@@ -0,0 +1 @@
# yocto-bsp-filename {{=machine}}-user-config.cfg
diff --git a/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine-user-features.scc b/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine-user-features.scc
new file mode 100644
index 0000000000..582759e612
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine-user-features.scc
@@ -0,0 +1 @@
# yocto-bsp-filename {{=machine}}-user-features.scc
diff --git a/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine-user-patches.scc b/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine-user-patches.scc
new file mode 100644
index 0000000000..97f747fa07
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine-user-patches.scc
@@ -0,0 +1 @@
# yocto-bsp-filename {{=machine}}-user-patches.scc
diff --git a/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine.cfg b/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine.cfg
new file mode 100644
index 0000000000..5bfe1fe4b0
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine.cfg
@@ -0,0 +1,164 @@
1# yocto-bsp-filename {{=machine}}.cfg
2..........................................................................
3. WARNING
4.
5. This file is a kernel configuration fragment, and not a full kernel
6. configuration file. The final kernel configuration is made up of
7. an assembly of processed fragments, each of which is designed to
8. capture a specific part of the final configuration (e.g. platform
9. configuration, feature configuration, and board specific hardware
10. configuration). For more information on kernel configuration, please
11. consult the product documentation.
12.
13..........................................................................
14CONFIG_PPC32=y
15CONFIG_PPC_OF=y
16CONFIG_PPC_UDBG_16550=y
17
18#
19# Processor support
20#
21CONFIG_PPC_83xx=y
22
23#
24# Platform support
25#
26CONFIG_MPC831x_RDB=y
27# CONFIG_PPC_CHRP is not set
28# CONFIG_PPC_PMAC is not set
29
30#
31# Bus options
32#
33CONFIG_PCI=y
34
35#
36# Memory Technology Devices (MTD)
37#
38CONFIG_MTD=y
39CONFIG_MTD_PARTITIONS=y
40CONFIG_MTD_CMDLINE_PARTS=y
41CONFIG_MTD_OF_PARTS=y
42
43#
44# User Modules And Translation Layers
45#
46CONFIG_MTD_CHAR=y
47CONFIG_MTD_BLOCK=y
48
49#
50# RAM/ROM/Flash chip drivers
51#
52CONFIG_MTD_CFI=y
53CONFIG_MTD_CFI_AMDSTD=y
54
55#
56# Mapping drivers for chip access
57#
58CONFIG_MTD_PHYSMAP_OF=y
59
60#
61# NAND Flash Device Drivers
62#
63CONFIG_MTD_NAND=y
64
65#
66# Ethernet (1000 Mbit)
67#
68CONFIG_GIANFAR=y
69
70#
71# Serial drivers
72#
73CONFIG_SERIAL_8250=y
74CONFIG_SERIAL_8250_CONSOLE=y
75CONFIG_SERIAL_8250_NR_UARTS=2
76
77#
78# Watchdog Device Drivers
79#
80CONFIG_8xxx_WDT=y
81
82#
83# I2C support
84#
85CONFIG_I2C=y
86CONFIG_I2C_CHARDEV=y
87
88#
89# I2C Hardware Bus support
90#
91CONFIG_I2C_MPC=y
92
93CONFIG_SENSORS_LM75=y
94
95CONFIG_MISC_DEVICES=y
96
97#
98# Miscellaneous I2C Chip support
99#
100CONFIG_EEPROM_AT24=y
101
102#
103# SPI support
104#
105CONFIG_SPI=y
106# CONFIG_SPI_DEBUG is not set
107CONFIG_SPI_MASTER=y
108
109#
110# SPI Master Controller Drivers
111#
112CONFIG_SPI_MPC8xxx=y
113
114#
115# SPI Protocol Masters
116#
117CONFIG_HWMON=y
118
119#
120# SCSI device support
121#
122CONFIG_SCSI=y
123CONFIG_BLK_DEV_SD=y
124CONFIG_CHR_DEV_SG=y
125CONFIG_SCSI_LOGGING=y
126
127CONFIG_ATA=y
128CONFIG_ATA_VERBOSE_ERROR=y
129CONFIG_SATA_FSL=y
130CONFIG_ATA_SFF=y
131
132#
133# USB support
134#
135CONFIG_USB=m
136CONFIG_USB_DEVICEFS=y
137
138#
139# USB Host Controller Drivers
140#
141CONFIG_USB_EHCI_HCD=m
142CONFIG_USB_EHCI_FSL=y
143CONFIG_USB_STORAGE=m
144
145#
146# Real Time Clock
147#
148CONFIG_RTC_CLASS=y
149
150#
151# I2C RTC drivers
152#
153CONFIG_RTC_DRV_DS1307=y
154
155CONFIG_KGDB_8250=m
156
157CONFIG_CRYPTO_DEV_TALITOS=m
158
159CONFIG_FSL_DMA=y
160
161CONFIG_MMC=y
162CONFIG_MMC_SPI=m
163
164CONFIG_USB_FSL_MPH_DR_OF=y
diff --git a/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine.scc b/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine.scc
new file mode 100644
index 0000000000..7aac8b0801
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/files/machine.scc
@@ -0,0 +1,10 @@
1# yocto-bsp-filename {{=machine}}.scc
2kconf hardware {{=machine}}.cfg
3
4include cfg/usb-mass-storage.scc
5include cfg/fs/vfat.scc
6
7include cfg/dmaengine.scc
8
9kconf hardware {{=machine}}-user-config.cfg
10include {{=machine}}-user-patches.scc
diff --git a/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/kernel-list.noinstall b/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/kernel-list.noinstall
new file mode 100644
index 0000000000..a04e6c7852
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/kernel-list.noinstall
@@ -0,0 +1,5 @@
1{{ if kernel_choice != "custom": }}
2{{ input type:"boolean" name:"use_default_kernel" prio:"10" msg:"Would you like to use the default (3.14) kernel? (y/n)" default:"y"}}
3
4{{ if kernel_choice != "custom" and use_default_kernel == "n": }}
5{{ input type:"choicelist" name:"kernel_choice" gen:"bsp.kernel.kernels" prio:"10" msg:"Please choose the kernel to use in this BSP:" default:"linux-yocto_3.14"}}
diff --git a/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/linux-yocto-dev.bbappend b/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/linux-yocto-dev.bbappend
new file mode 100644
index 0000000000..2fa6231cbf
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/linux-yocto-dev.bbappend
@@ -0,0 +1,26 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto-dev": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
8
9{{ if need_new_kbranch == "y": }}
10{{ input type:"choicelist" name:"new_kbranch" nameappend:"i386" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
11
12{{ if need_new_kbranch == "n": }}
13{{ input type:"choicelist" name:"existing_kbranch" nameappend:"i386" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
14
15{{ if need_new_kbranch == "n": }}
16KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
17
18{{ input type:"boolean" name:"smp" prio:"30" msg:"Would you like SMP support? (y/n)" default:"y"}}
19{{ if smp == "y": }}
20KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
21
22SRC_URI += "file://{{=machine}}-standard.scc \
23 file://{{=machine}}-user-config.cfg \
24 file://{{=machine}}-user-patches.scc \
25 file://{{=machine}}-user-features.scc \
26 "
diff --git a/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/linux-yocto-rt_3.14.bbappend b/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/linux-yocto-rt_3.14.bbappend
new file mode 100644
index 0000000000..7a2544617f
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/linux-yocto-rt_3.14.bbappend
@@ -0,0 +1,33 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto-rt_3.14": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7
8{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
9
10{{ if need_new_kbranch == "y": }}
11{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/preempt-rt" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/preempt-rt/base" }}
12
13{{ if need_new_kbranch == "n": }}
14{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/preempt-rt" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/preempt-rt/base" }}
15
16{{ if need_new_kbranch == "n": }}
17KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
18
19{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
20{{ if smp == "y": }}
21KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
22
23SRC_URI += "file://{{=machine}}-preempt-rt.scc \
24 file://{{=machine}}-user-config.cfg \
25 file://{{=machine}}-user-patches.scc \
26 file://{{=machine}}-user-features.scc \
27 "
28
29# uncomment and replace these SRCREVs with the real commit ids once you've had
30# the appropriate changes committed to the upstream linux-yocto repo
31#SRCREV_machine_pn-linux-yocto-rt_{{=machine}} ?= "f35992f80c81dc5fa1a97165dfd5cbb84661f7cb"
32#SRCREV_meta_pn-linux-yocto-rt_{{=machine}} ?= "1b534b2f8bbe9b8a773268cfa30a4850346f6f5f"
33#LINUX_VERSION = "3.14" \ No newline at end of file
diff --git a/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/linux-yocto-tiny_3.10.bbappend b/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/linux-yocto-tiny_3.10.bbappend
new file mode 100644
index 0000000000..f04dd0cce4
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/linux-yocto-tiny_3.10.bbappend
@@ -0,0 +1,33 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto-tiny_3.10": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7
8{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
9
10{{ if need_new_kbranch == "y": }}
11{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
12
13{{ if need_new_kbranch == "n": }}
14{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
15
16{{ if need_new_kbranch == "n": }}
17KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
18
19{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
20{{ if smp == "y": }}
21KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
22
23SRC_URI += "file://{{=machine}}-tiny.scc \
24 file://{{=machine}}-user-config.cfg \
25 file://{{=machine}}-user-patches.scc \
26 file://{{=machine}}-user-features.scc \
27 "
28
29# uncomment and replace these SRCREVs with the real commit ids once you've had
30# the appropriate changes committed to the upstream linux-yocto repo
31#SRCREV_machine_pn-linux-yocto-tiny_{{=machine}} ?= "840bb8c059418c4753415df56c9aff1c0d5354c8"
32#SRCREV_meta_pn-linux-yocto-tiny_{{=machine}} ?= "4fd76cc4f33e0afd8f906b1e8f231b6d13b6c993"
33#LINUX_VERSION = "3.10.9"
diff --git a/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/linux-yocto-tiny_3.14.bbappend b/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/linux-yocto-tiny_3.14.bbappend
new file mode 100644
index 0000000000..471ccbcc3e
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/linux-yocto-tiny_3.14.bbappend
@@ -0,0 +1,33 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto-tiny_3.14": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7
8{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
9
10{{ if need_new_kbranch == "y": }}
11{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
12
13{{ if need_new_kbranch == "n": }}
14{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
15
16{{ if need_new_kbranch == "n": }}
17KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
18
19{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
20{{ if smp == "y": }}
21KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
22
23SRC_URI += "file://{{=machine}}-tiny.scc \
24 file://{{=machine}}-user-config.cfg \
25 file://{{=machine}}-user-patches.scc \
26 file://{{=machine}}-user-features.scc \
27 "
28
29# uncomment and replace these SRCREVs with the real commit ids once you've had
30# the appropriate changes committed to the upstream linux-yocto repo
31#SRCREV_machine_pn-linux-yocto-tiny_{{=machine}} ?= "840bb8c059418c4753415df56c9aff1c0d5354c8"
32#SRCREV_meta_pn-linux-yocto-tiny_{{=machine}} ?= "4fd76cc4f33e0afd8f906b1e8f231b6d13b6c993"
33#LINUX_VERSION = "3.14"
diff --git a/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/linux-yocto_3.10.bbappend b/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/linux-yocto_3.10.bbappend
new file mode 100644
index 0000000000..15b4b973c9
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/linux-yocto_3.10.bbappend
@@ -0,0 +1,33 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto_3.10": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7
8{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
9
10{{ if need_new_kbranch == "y": }}
11{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
12
13{{ if need_new_kbranch == "n": }}
14{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
15
16{{ if need_new_kbranch == "n": }}
17KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
18
19{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
20{{ if smp == "y": }}
21KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
22
23SRC_URI += "file://{{=machine}}-standard.scc \
24 file://{{=machine}}-user-config.cfg \
25 file://{{=machine}}-user-patches.scc \
26 file://{{=machine}}-user-features.scc \
27 "
28
29# uncomment and replace these SRCREVs with the real commit ids once you've had
30# the appropriate changes committed to the upstream linux-yocto repo
31#SRCREV_machine_pn-linux-yocto_{{=machine}} ?= "19f7e43b54aef08d58135ed2a897d77b624b320a"
32#SRCREV_meta_pn-linux-yocto_{{=machine}} ?= "459165c1dd61c4e843c36e6a1abeb30949a20ba7"
33#LINUX_VERSION = "3.10.9"
diff --git a/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/linux-yocto_3.14.bbappend b/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/linux-yocto_3.14.bbappend
new file mode 100644
index 0000000000..e688384020
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/powerpc/recipes-kernel/linux/linux-yocto_3.14.bbappend
@@ -0,0 +1,33 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto_3.14": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7
8{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
9
10{{ if need_new_kbranch == "y": }}
11{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
12
13{{ if need_new_kbranch == "n": }}
14{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
15
16{{ if need_new_kbranch == "n": }}
17KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
18
19{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
20{{ if smp == "y": }}
21KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
22
23SRC_URI += "file://{{=machine}}-standard.scc \
24 file://{{=machine}}-user-config.cfg \
25 file://{{=machine}}-user-patches.scc \
26 file://{{=machine}}-user-features.scc \
27 "
28
29# uncomment and replace these SRCREVs with the real commit ids once you've had
30# the appropriate changes committed to the upstream linux-yocto repo
31#SRCREV_machine_pn-linux-yocto_{{=machine}} ?= "840bb8c059418c4753415df56c9aff1c0d5354c8"
32#SRCREV_meta_pn-linux-yocto_{{=machine}} ?= "4fd76cc4f33e0afd8f906b1e8f231b6d13b6c993"
33#LINUX_VERSION = "3.14"
diff --git a/scripts/lib/bsp/substrate/target/arch/qemu/conf/machine/machine.conf b/scripts/lib/bsp/substrate/target/arch/qemu/conf/machine/machine.conf
new file mode 100644
index 0000000000..52f1866b5b
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/qemu/conf/machine/machine.conf
@@ -0,0 +1,70 @@
1# yocto-bsp-filename {{=machine}}.conf
2#@TYPE: Machine
3#@NAME: {{=machine}}
4
5#@DESCRIPTION: Machine configuration for {{=machine}} systems
6
7{{ if kernel_choice == "custom": preferred_kernel = "linux-yocto-custom" }}
8{{ if kernel_choice == "linux-yocto-dev": preferred_kernel = "linux-yocto-dev" }}
9{{ if kernel_choice == "custom" or kernel_choice == "linux-yocto-dev" : }}
10PREFERRED_PROVIDER_virtual/kernel ?= "{{=preferred_kernel}}"
11
12{{ if kernel_choice != "custom" and kernel_choice != "linux-yocto-dev": preferred_kernel = kernel_choice.split('_')[0] }}
13{{ if kernel_choice != "custom" and kernel_choice != "linux-yocto-dev": preferred_kernel_version = kernel_choice.split('_')[1] }}
14{{ if kernel_choice != "custom" and kernel_choice != "linux-yocto-dev": }}
15PREFERRED_PROVIDER_virtual/kernel ?= "{{=preferred_kernel}}"
16PREFERRED_VERSION_{{=preferred_kernel}} ?= "{{=preferred_kernel_version}}%"
17
18{{ if qemuarch == "i386" or qemuarch == "x86_64": }}
19PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
20PREFERRED_PROVIDER_virtual/libgl ?= "mesa"
21PREFERRED_PROVIDER_virtual/libgles1 ?= "mesa"
22PREFERRED_PROVIDER_virtual/libgles2 ?= "mesa"
23
24{{ input type:"choicelist" name:"qemuarch" prio:"5" msg:"Which qemu architecture would you like to use?" default:"i386" }}
25{{ input type:"choice" val:"i386" msg:"i386 (32-bit)" }}
26{{ input type:"choice" val:"x86_64" msg:"x86_64 (64-bit)" }}
27{{ input type:"choice" val:"arm" msg:"ARM (32-bit)" }}
28{{ input type:"choice" val:"powerpc" msg:"PowerPC (32-bit)" }}
29{{ input type:"choice" val:"mips" msg:"MIPS (32-bit)" }}
30{{ if qemuarch == "i386": }}
31require conf/machine/include/qemu.inc
32require conf/machine/include/tune-i586.inc
33{{ if qemuarch == "x86_64": }}
34require conf/machine/include/qemu.inc
35DEFAULTTUNE ?= "core2-64"
36require conf/machine/include/tune-core2.inc
37{{ if qemuarch == "arm": }}
38require conf/machine/include/qemu.inc
39require conf/machine/include/tune-arm926ejs.inc
40{{ if qemuarch == "powerpc": }}
41require conf/machine/include/qemu.inc
42require conf/machine/include/tune-ppc7400.inc
43{{ if qemuarch == "mips": }}
44require conf/machine/include/qemu.inc
45require conf/machine/include/tune-mips32.inc
46
47{{ if qemuarch == "i386" or qemuarch == "x86_64": }}
48MACHINE_FEATURES += "x86"
49KERNEL_IMAGETYPE = "bzImage"
50SERIAL_CONSOLE = "115200 ttyS0"
51XSERVER = "xserver-xorg \
52 ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'mesa-driver-swrast', '', d)} \
53 xf86-input-vmmouse \
54 xf86-input-keyboard \
55 xf86-input-evdev \
56 xf86-video-vmware"
57
58{{ if qemuarch == "arm": }}
59KERNEL_IMAGETYPE = "zImage"
60SERIAL_CONSOLE = "115200 ttyAMA0"
61
62{{ if qemuarch == "powerpc": }}
63KERNEL_IMAGETYPE = "vmlinux"
64SERIAL_CONSOLE = "115200 ttyS0"
65
66{{ if qemuarch == "mips": }}
67KERNEL_IMAGETYPE = "vmlinux"
68KERNEL_ALT_IMAGETYPE = "vmlinux.bin"
69SERIAL_CONSOLE = "115200 ttyS0"
70MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"
diff --git a/scripts/lib/bsp/substrate/target/arch/qemu/recipes-core/init-ifupdown/init-ifupdown/machine.noinstall b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-core/init-ifupdown/init-ifupdown/machine.noinstall
new file mode 100644
index 0000000000..b442d02d57
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-core/init-ifupdown/init-ifupdown/machine.noinstall
@@ -0,0 +1 @@
# yocto-bsp-dirname {{=machine}}
diff --git a/scripts/lib/bsp/substrate/target/arch/qemu/recipes-core/init-ifupdown/init-ifupdown/machine/interfaces b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-core/init-ifupdown/init-ifupdown/machine/interfaces
new file mode 100644
index 0000000000..16967763e5
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-core/init-ifupdown/init-ifupdown/machine/interfaces
@@ -0,0 +1,5 @@
1# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
2
3# The loopback interface
4auto lo
5iface lo inet loopback
diff --git a/scripts/lib/bsp/substrate/target/arch/qemu/recipes-core/init-ifupdown/init-ifupdown_1.0.bbappend b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-core/init-ifupdown/init-ifupdown_1.0.bbappend
new file mode 100644
index 0000000000..72d991c7e5
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-core/init-ifupdown/init-ifupdown_1.0.bbappend
@@ -0,0 +1 @@
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
diff --git a/scripts/lib/bsp/substrate/target/arch/qemu/recipes-graphics/xorg-xserver/xserver-xf86-config/machine.noinstall b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-graphics/xorg-xserver/xserver-xf86-config/machine.noinstall
new file mode 100644
index 0000000000..b442d02d57
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-graphics/xorg-xserver/xserver-xf86-config/machine.noinstall
@@ -0,0 +1 @@
# yocto-bsp-dirname {{=machine}}
diff --git a/scripts/lib/bsp/substrate/target/arch/qemu/recipes-graphics/xorg-xserver/xserver-xf86-config/machine/xorg.conf b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-graphics/xorg-xserver/xserver-xf86-config/machine/xorg.conf
new file mode 100644
index 0000000000..13519804bc
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-graphics/xorg-xserver/xserver-xf86-config/machine/xorg.conf
@@ -0,0 +1,77 @@
1
2Section "Files"
3EndSection
4
5Section "InputDevice"
6 Identifier "Generic Keyboard"
7 Driver "evdev"
8 Option "CoreKeyboard"
9 Option "Device" "/dev/input/by-path/platform-i8042-serio-0-event-kbd"
10 Option "XkbRules" "xorg"
11 Option "XkbModel" "evdev"
12 Option "XkbLayout" "us"
13EndSection
14
15Section "InputDevice"
16 Identifier "Configured Mouse"
17{{ if qemuarch == "arm" or qemuarch == "powerpc" or qemuarch == "mips": }}
18 Driver "mouse"
19{{ if qemuarch == "i386" or qemuarch == "x86_64": }}
20 Driver "vmmouse"
21
22 Option "CorePointer"
23 Option "Device" "/dev/input/mice"
24 Option "Protocol" "ImPS/2"
25 Option "ZAxisMapping" "4 5"
26 Option "Emulate3Buttons" "true"
27EndSection
28
29Section "InputDevice"
30 Identifier "Qemu Tablet"
31 Driver "evdev"
32 Option "CorePointer"
33 Option "Device" "/dev/input/touchscreen0"
34 Option "USB" "on"
35EndSection
36
37Section "Device"
38 Identifier "Graphics Controller"
39{{ if qemuarch == "arm" or qemuarch == "powerpc" or qemuarch == "mips": }}
40 Driver "fbdev"
41{{ if qemuarch == "i386" or qemuarch == "x86_64": }}
42 Driver "vmware"
43
44EndSection
45
46Section "Monitor"
47 Identifier "Generic Monitor"
48 Option "DPMS"
49 # 1024x600 59.85 Hz (CVT) hsync: 37.35 kHz; pclk: 49.00 MHz
50 Modeline "1024x600_60.00" 49.00 1024 1072 1168 1312 600 603 613 624 -hsync +vsync
51 # 640x480 @ 60Hz (Industry standard) hsync: 31.5kHz
52 ModeLine "640x480" 25.2 640 656 752 800 480 490 492 525 -hsync -vsync
53 # 640x480 @ 72Hz (VESA) hsync: 37.9kHz
54 ModeLine "640x480" 31.5 640 664 704 832 480 489 491 520 -hsync -vsync
55 # 640x480 @ 75Hz (VESA) hsync: 37.5kHz
56 ModeLine "640x480" 31.5 640 656 720 840 480 481 484 500 -hsync -vsync
57 # 640x480 @ 85Hz (VESA) hsync: 43.3kHz
58 ModeLine "640x480" 36.0 640 696 752 832 480 481 484 509 -hsync -vsync
59EndSection
60
61Section "Screen"
62 Identifier "Default Screen"
63 Device "Graphics Controller"
64 Monitor "Generic Monitor"
65 SubSection "Display"
66 Modes "640x480"
67 EndSubSection
68EndSection
69
70Section "ServerLayout"
71 Identifier "Default Layout"
72 Screen "Default Screen"
73 InputDevice "Generic Keyboard"
74 # InputDevice "Configured Mouse"
75 InputDevice "QEMU Tablet"
76 Option "AllowEmptyInput" "no"
77EndSection
diff --git a/scripts/lib/bsp/substrate/target/arch/qemu/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend
new file mode 100644
index 0000000000..72d991c7e5
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend
@@ -0,0 +1 @@
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
diff --git a/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files.noinstall b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files.noinstall
new file mode 100644
index 0000000000..0fb5283a8d
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files.noinstall
@@ -0,0 +1 @@
# yocto-bsp-dirname {{ if kernel_choice != "custom": }} files \ No newline at end of file
diff --git a/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine-preempt-rt.scc b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine-preempt-rt.scc
new file mode 100644
index 0000000000..6aaffb8184
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine-preempt-rt.scc
@@ -0,0 +1,10 @@
1# yocto-bsp-filename {{=machine}}-preempt-rt.scc
2define KMACHINE {{=machine}}
3define KTYPE preempt-rt
4define KARCH {{=qemuarch}}
5
6include {{=map_preempt_rt_kbranch(need_new_kbranch, new_kbranch, existing_kbranch)}}
7{{ if need_new_kbranch == "y": }}
8branch {{=machine}}
9
10include {{=machine}}.scc
diff --git a/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine-standard.scc b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine-standard.scc
new file mode 100644
index 0000000000..695f488064
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine-standard.scc
@@ -0,0 +1,17 @@
1# yocto-bsp-filename {{=machine}}-standard.scc
2define KMACHINE {{=machine}}
3define KTYPE standard
4define KARCH {{=qemuarch}}
5
6{{ if qemuarch == "i386" or qemuarch == "x86_64": }}
7include {{=map_standard_kbranch(need_new_kbranch, new_kbranch, existing_kbranch)}}
8{{ if qemuarch == "arm": }}
9include bsp/arm-versatile-926ejs/arm-versatile-926ejs-standard
10{{ if qemuarch == "powerpc": }}
11include bsp/qemu-ppc32/qemu-ppc32-standard
12{{ if qemuarch == "mips": }}
13include bsp/mti-malta32/mti-malta32-be-standard
14{{ if need_new_kbranch == "y": }}
15branch {{=machine}}
16
17include {{=machine}}.scc
diff --git a/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine-tiny.scc b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine-tiny.scc
new file mode 100644
index 0000000000..6c098fed21
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine-tiny.scc
@@ -0,0 +1,10 @@
1# yocto-bsp-filename {{=machine}}-tiny.scc
2define KMACHINE {{=machine}}
3define KTYPE tiny
4define KARCH {{=qemuarch}}
5
6include {{=map_tiny_kbranch(need_new_kbranch, new_kbranch, existing_kbranch)}}
7{{ if need_new_kbranch == "y": }}
8branch {{=machine}}
9
10include {{=machine}}.scc
diff --git a/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine-user-config.cfg b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine-user-config.cfg
new file mode 100644
index 0000000000..69efdcc759
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine-user-config.cfg
@@ -0,0 +1 @@
# yocto-bsp-filename {{=machine}}-user-config.cfg \ No newline at end of file
diff --git a/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine-user-features.scc b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine-user-features.scc
new file mode 100644
index 0000000000..582759e612
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine-user-features.scc
@@ -0,0 +1 @@
# yocto-bsp-filename {{=machine}}-user-features.scc
diff --git a/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine-user-patches.scc b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine-user-patches.scc
new file mode 100644
index 0000000000..4c59daac46
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine-user-patches.scc
@@ -0,0 +1 @@
# yocto-bsp-filename {{=machine}}-user-patches.scc \ No newline at end of file
diff --git a/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine.cfg b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine.cfg
new file mode 100644
index 0000000000..d560784b56
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine.cfg
@@ -0,0 +1 @@
# yocto-bsp-filename {{=machine}}.cfg \ No newline at end of file
diff --git a/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine.scc b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine.scc
new file mode 100644
index 0000000000..8301e05f7d
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/files/machine.scc
@@ -0,0 +1,5 @@
1# yocto-bsp-filename {{=machine}}.scc
2kconf hardware {{=machine}}.cfg
3
4kconf hardware {{=machine}}-user-config.cfg
5include {{=machine}}-user-patches.scc
diff --git a/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/kernel-list.noinstall b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/kernel-list.noinstall
new file mode 100644
index 0000000000..a04e6c7852
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/kernel-list.noinstall
@@ -0,0 +1,5 @@
1{{ if kernel_choice != "custom": }}
2{{ input type:"boolean" name:"use_default_kernel" prio:"10" msg:"Would you like to use the default (3.14) kernel? (y/n)" default:"y"}}
3
4{{ if kernel_choice != "custom" and use_default_kernel == "n": }}
5{{ input type:"choicelist" name:"kernel_choice" gen:"bsp.kernel.kernels" prio:"10" msg:"Please choose the kernel to use in this BSP:" default:"linux-yocto_3.14"}}
diff --git a/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/linux-yocto-dev.bbappend b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/linux-yocto-dev.bbappend
new file mode 100644
index 0000000000..a2b86d2568
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/linux-yocto-dev.bbappend
@@ -0,0 +1,50 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto-dev": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
8
9{{ if need_new_kbranch == "y" and qemuarch == "arm": }}
10{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base your new BSP branch on:" default:"standard/base" }}
11
12{{ if need_new_kbranch == "n" and qemuarch == "arm": }}
13{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose an existing machine branch to use for this BSP:" default:"standard/arm-versatile-926ejs" }}
14
15{{ if need_new_kbranch == "y" and qemuarch == "powerpc": }}
16{{ input type:"choicelist" name:"new_kbranch" nameappend:"powerpc" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
17
18{{ if need_new_kbranch == "n" and qemuarch == "powerpc": }}
19{{ input type:"choicelist" name:"existing_kbranch" nameappend:"powerpc" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/qemuppc" }}
20
21{{ if need_new_kbranch == "y" and qemuarch == "i386": }}
22{{ input type:"choicelist" name:"new_kbranch" nameappend:"i386" gen:"bsp.kernel.all_branches" branches_base:"standard:standard/common-pc" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/common-pc/base" }}
23
24{{ if need_new_kbranch == "n" and qemuarch == "i386": }}
25{{ input type:"choicelist" name:"existing_kbranch" nameappend:"i386" gen:"bsp.kernel.all_branches" branches_base:"standard:standard/common-pc" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/common-pc/base" }}
26
27{{ if need_new_kbranch == "y" and qemuarch == "x86_64": }}
28{{ input type:"choicelist" name:"new_kbranch" nameappend:"x86_64" gen:"bsp.kernel.all_branches" branches_base:"standard:standard/common-pc-64" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/common-pc-64/base" }}
29
30{{ if need_new_kbranch == "n" and qemuarch == "x86_64": }}
31{{ input type:"choicelist" name:"existing_kbranch" nameappend:"x86_64" gen:"bsp.kernel.all_branches" branches_base:"standard:standard/common-pc-64" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/common-pc-64/base" }}
32
33{{ if need_new_kbranch == "y" and qemuarch == "mips": }}
34{{ input type:"choicelist" name:"new_kbranch" nameappend:"mips" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
35
36{{ if need_new_kbranch == "n" and qemuarch == "mips": }}
37{{ input type:"choicelist" name:"existing_kbranch" nameappend:"mips" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/mti-malta32" }}
38
39{{ if need_new_kbranch == "n": }}
40KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
41
42{{ input type:"boolean" name:"smp" prio:"30" msg:"Would you like SMP support? (y/n)" default:"y"}}
43{{ if smp == "y": }}
44KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
45
46SRC_URI += "file://{{=machine}}-standard.scc \
47 file://{{=machine}}-user-config.cfg \
48 file://{{=machine}}-user-patches.scc \
49 file://{{=machine}}-user-features.scc \
50 "
diff --git a/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/linux-yocto-rt_3.10.bbappend b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/linux-yocto-rt_3.10.bbappend
new file mode 100644
index 0000000000..aa87c28ff8
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/linux-yocto-rt_3.10.bbappend
@@ -0,0 +1,56 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto-rt_3.10": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
8
9{{ if need_new_kbranch == "y" and qemuarch == "arm": }}
10{{ input type:"choicelist" name:"new_kbranch" nameappend:"arm" gen:"bsp.kernel.all_branches" branches_base:"standard/preempt-rt" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/preempt-rt/base" }}
11
12{{ if need_new_kbranch == "n" and qemuarch == "arm": }}
13{{ input type:"choicelist" name:"existing_kbranch" nameappend:"arm" gen:"bsp.kernel.all_branches" branches_base:"standard/preempt-rt" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/preempt-rt/base" }}
14
15{{ if need_new_kbranch == "y" and qemuarch == "powerpc": }}
16{{ input type:"choicelist" name:"new_kbranch" nameappend:"powerpc" gen:"bsp.kernel.all_branches" branches_base:"standard/preempt-rt" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/preempt-rt/base" }}
17
18{{ if need_new_kbranch == "n" and qemuarch == "powerpc": }}
19{{ input type:"choicelist" name:"existing_kbranch" nameappend:"powerpc" gen:"bsp.kernel.all_branches" branches_base:"standard/preempt-rt" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/preempt-rt/qemuppc" }}
20
21{{ if need_new_kbranch == "y" and qemuarch == "i386": }}
22{{ input type:"choicelist" name:"new_kbranch" nameappend:"i386" gen:"bsp.kernel.all_branches" branches_base:"standard/preempt-rt" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/preempt-rt/base" }}
23
24{{ if need_new_kbranch == "n" and qemuarch == "i386": }}
25{{ input type:"choicelist" name:"existing_kbranch" nameappend:"i386" gen:"bsp.kernel.all_branches" branches_base:"standard/preempt-rt" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/preempt-rt/base" }}
26
27{{ if need_new_kbranch == "y" and qemuarch == "x86_64": }}
28{{ input type:"choicelist" name:"new_kbranch" nameappend:"x86_64" gen:"bsp.kernel.all_branches" branches_base:"standard/preempt-rt" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/preempt-rt/base" }}
29
30{{ if need_new_kbranch == "n" and qemuarch == "x86_64": }}
31{{ input type:"choicelist" name:"existing_kbranch" nameappend:"x86_64" gen:"bsp.kernel.all_branches" branches_base:"standard/preempt-rt" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/preempt-rt/base" }}
32
33{{ if need_new_kbranch == "y" and qemuarch == "mips": }}
34{{ input type:"choicelist" name:"new_kbranch" nameappend:"mips" gen:"bsp.kernel.all_branches" branches_base:"standard/preempt-rt" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/preempt-rt/base" }}
35
36{{ if need_new_kbranch == "n" and qemuarch == "mips": }}
37{{ input type:"choicelist" name:"existing_kbranch" nameappend:"mips" gen:"bsp.kernel.all_branches" branches_base:"standard/preempt-rt" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/preempt-rt/base" }}
38
39{{ if need_new_kbranch == "n": }}
40KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
41
42{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
43{{ if smp == "y": }}
44KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
45
46SRC_URI += "file://{{=machine}}-preempt-rt.scc \
47 file://{{=machine}}-user-config.cfg \
48 file://{{=machine}}-user-patches.scc \
49 file://{{=machine}}-user-features.scc \
50 "
51
52# uncomment and replace these SRCREVs with the real commit ids once you've had
53# the appropriate changes committed to the upstream linux-yocto repo
54#SRCREV_machine_pn-linux-yocto-rt_{{=machine}} ?= "f35992f80c81dc5fa1a97165dfd5cbb84661f7cb"
55#SRCREV_meta_pn-linux-yocto-rt_{{=machine}} ?= "1b534b2f8bbe9b8a773268cfa30a4850346f6f5f"
56#LINUX_VERSION = "3.10.35"
diff --git a/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/linux-yocto-tiny_3.10.bbappend b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/linux-yocto-tiny_3.10.bbappend
new file mode 100644
index 0000000000..001317ac92
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/linux-yocto-tiny_3.10.bbappend
@@ -0,0 +1,56 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto-tiny_3.10": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
8
9{{ if need_new_kbranch == "y" and qemuarch == "arm": }}
10{{ input type:"choicelist" name:"new_kbranch" nameappend:"arm" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
11
12{{ if need_new_kbranch == "n" and qemuarch == "arm": }}
13{{ input type:"choicelist" name:"existing_kbranch" nameappend:"arm" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
14
15{{ if need_new_kbranch == "y" and qemuarch == "powerpc": }}
16{{ input type:"choicelist" name:"new_kbranch" nameappend:"powerpc" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
17
18{{ if need_new_kbranch == "n" and qemuarch == "powerpc": }}
19{{ input type:"choicelist" name:"existing_kbranch" nameappend:"powerpc" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
20
21{{ if need_new_kbranch == "y" and qemuarch == "i386": }}
22{{ input type:"choicelist" name:"new_kbranch" nameappend:"i386" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
23
24{{ if need_new_kbranch == "n" and qemuarch == "i386": }}
25{{ input type:"choicelist" name:"existing_kbranch" nameappend:"i386" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/common-pc" }}
26
27{{ if need_new_kbranch == "y" and qemuarch == "x86_64": }}
28{{ input type:"choicelist" name:"new_kbranch" nameappend:"x86_64" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
29
30{{ if need_new_kbranch == "n" and qemuarch == "x86_64": }}
31{{ input type:"choicelist" name:"existing_kbranch" nameappend:"x86_64" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
32
33{{ if need_new_kbranch == "y" and qemuarch == "mips": }}
34{{ input type:"choicelist" name:"new_kbranch" nameappend:"mips" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
35
36{{ if need_new_kbranch == "n" and qemuarch == "mips": }}
37{{ input type:"choicelist" name:"existing_kbranch" nameappend:"mips" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
38
39{{ if need_new_kbranch == "n": }}
40KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
41
42{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
43{{ if smp == "y": }}
44KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
45
46SRC_URI += "file://{{=machine}}-tiny.scc \
47 file://{{=machine}}-user-config.cfg \
48 file://{{=machine}}-user-patches.scc \
49 file://{{=machine}}-user-features.scc \
50 "
51
52# uncomment and replace these SRCREVs with the real commit ids once you've had
53# the appropriate changes committed to the upstream linux-yocto repo
54#SRCREV_machine_pn-linux-yocto-tiny_{{=machine}} ?= "840bb8c059418c4753415df56c9aff1c0d5354c8"
55#SRCREV_meta_pn-linux-yocto-tiny_{{=machine}} ?= "4fd76cc4f33e0afd8f906b1e8f231b6d13b6c993"
56#LINUX_VERSION = "3.10.35"
diff --git a/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/linux-yocto-tiny_3.4.bbappend b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/linux-yocto-tiny_3.4.bbappend
new file mode 100644
index 0000000000..32c96c9df8
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/linux-yocto-tiny_3.4.bbappend
@@ -0,0 +1,56 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto-tiny_3.4": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
8
9{{ if need_new_kbranch == "y" and qemuarch == "arm": }}
10{{ input type:"choicelist" name:"new_kbranch" nameappend:"arm" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
11
12{{ if need_new_kbranch == "n" and qemuarch == "arm": }}
13{{ input type:"choicelist" name:"existing_kbranch" nameappend:"arm" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
14
15{{ if need_new_kbranch == "y" and qemuarch == "powerpc": }}
16{{ input type:"choicelist" name:"new_kbranch" nameappend:"powerpc" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
17
18{{ if need_new_kbranch == "n" and qemuarch == "powerpc": }}
19{{ input type:"choicelist" name:"existing_kbranch" nameappend:"powerpc" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
20
21{{ if need_new_kbranch == "y" and qemuarch == "i386": }}
22{{ input type:"choicelist" name:"new_kbranch" nameappend:"i386" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
23
24{{ if need_new_kbranch == "n" and qemuarch == "i386": }}
25{{ input type:"choicelist" name:"existing_kbranch" nameappend:"i386" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/common-pc" }}
26
27{{ if need_new_kbranch == "y" and qemuarch == "x86_64": }}
28{{ input type:"choicelist" name:"new_kbranch" nameappend:"x86_64" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
29
30{{ if need_new_kbranch == "n" and qemuarch == "x86_64": }}
31{{ input type:"choicelist" name:"existing_kbranch" nameappend:"x86_64" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
32
33{{ if need_new_kbranch == "y" and qemuarch == "mips": }}
34{{ input type:"choicelist" name:"new_kbranch" nameappend:"mips" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
35
36{{ if need_new_kbranch == "n" and qemuarch == "mips": }}
37{{ input type:"choicelist" name:"existing_kbranch" nameappend:"mips" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
38
39{{ if need_new_kbranch == "n": }}
40KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
41
42{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
43{{ if smp == "y": }}
44KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
45
46SRC_URI += "file://{{=machine}}-tiny.scc \
47 file://{{=machine}}-user-config.cfg \
48 file://{{=machine}}-user-patches.scc \
49 file://{{=machine}}-user-features.scc \
50 "
51
52# uncomment and replace these SRCREVs with the real commit ids once you've had
53# the appropriate changes committed to the upstream linux-yocto repo
54#SRCREV_machine_pn-linux-yocto-tiny_{{=machine}} ?= "0143c6ebb4a2d63b241df5f608b19f483f7eb9e0"
55#SRCREV_meta_pn-linux-yocto-tiny_{{=machine}} ?= "8f55bee2403176a50cc0dd41811aa60fcf07243c"
56#LINUX_VERSION = "3.14"
diff --git a/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/linux-yocto_3.10.bbappend b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/linux-yocto_3.10.bbappend
new file mode 100644
index 0000000000..9e3b7fb683
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/linux-yocto_3.10.bbappend
@@ -0,0 +1,56 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto_3.10": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
8
9{{ if need_new_kbranch == "y" and qemuarch == "arm": }}
10{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base your new BSP branch on:" default:"standard/base" }}
11
12{{ if need_new_kbranch == "n" and qemuarch == "arm": }}
13{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose an existing machine branch to use for this BSP:" default:"standard/arm-versatile-926ejs" }}
14
15{{ if need_new_kbranch == "y" and qemuarch == "powerpc": }}
16{{ input type:"choicelist" name:"new_kbranch" nameappend:"powerpc" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
17
18{{ if need_new_kbranch == "n" and qemuarch == "powerpc": }}
19{{ input type:"choicelist" name:"existing_kbranch" nameappend:"powerpc" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/qemuppc" }}
20
21{{ if need_new_kbranch == "y" and qemuarch == "i386": }}
22{{ input type:"choicelist" name:"new_kbranch" nameappend:"i386" gen:"bsp.kernel.all_branches" branches_base:"standard:standard/common-pc" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/common-pc/base" }}
23
24{{ if need_new_kbranch == "n" and qemuarch == "i386": }}
25{{ input type:"choicelist" name:"existing_kbranch" nameappend:"i386" gen:"bsp.kernel.all_branches" branches_base:"standard:standard/common-pc" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/common-pc/base" }}
26
27{{ if need_new_kbranch == "y" and qemuarch == "x86_64": }}
28{{ input type:"choicelist" name:"new_kbranch" nameappend:"x86_64" gen:"bsp.kernel.all_branches" branches_base:"standard:standard/common-pc-64" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/common-pc-64/base" }}
29
30{{ if need_new_kbranch == "n" and qemuarch == "x86_64": }}
31{{ input type:"choicelist" name:"existing_kbranch" nameappend:"x86_64" gen:"bsp.kernel.all_branches" branches_base:"standard:standard/common-pc-64" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/common-pc-64/base" }}
32
33{{ if need_new_kbranch == "y" and qemuarch == "mips": }}
34{{ input type:"choicelist" name:"new_kbranch" nameappend:"mips" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
35
36{{ if need_new_kbranch == "n" and qemuarch == "mips": }}
37{{ input type:"choicelist" name:"existing_kbranch" nameappend:"mips" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/mti-malta32" }}
38
39{{ if need_new_kbranch == "n": }}
40KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
41
42{{ input type:"boolean" name:"smp" prio:"30" msg:"Would you like SMP support? (y/n)" default:"y"}}
43{{ if smp == "y": }}
44KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
45
46SRC_URI += "file://{{=machine}}-standard.scc \
47 file://{{=machine}}-user-config.cfg \
48 file://{{=machine}}-user-patches.scc \
49 file://{{=machine}}-user-features.scc \
50 "
51
52# uncomment and replace these SRCREVs with the real commit ids once you've had
53# the appropriate changes committed to the upstream linux-yocto repo
54#SRCREV_machine_pn-linux-yocto_{{=machine}} ?= "b170394a475b96ecc92cbc9e4b002bed0a9f69c5"
55#SRCREV_meta_pn-linux-yocto_{{=machine}} ?= "c2ed0f16fdec628242a682897d5d86df4547cf24"
56#LINUX_VERSION = "3.10.35"
diff --git a/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/linux-yocto_3.14.bbappend b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/linux-yocto_3.14.bbappend
new file mode 100644
index 0000000000..e63c897f60
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/qemu/recipes-kernel/linux/linux-yocto_3.14.bbappend
@@ -0,0 +1,56 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto_3.14": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
8
9{{ if need_new_kbranch == "y" and qemuarch == "arm": }}
10{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base your new BSP branch on:" default:"standard/base" }}
11
12{{ if need_new_kbranch == "n" and qemuarch == "arm": }}
13{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose an existing machine branch to use for this BSP:" default:"standard/arm-versatile-926ejs" }}
14
15{{ if need_new_kbranch == "y" and qemuarch == "powerpc": }}
16{{ input type:"choicelist" name:"new_kbranch" nameappend:"powerpc" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
17
18{{ if need_new_kbranch == "n" and qemuarch == "powerpc": }}
19{{ input type:"choicelist" name:"existing_kbranch" nameappend:"powerpc" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/qemuppc" }}
20
21{{ if need_new_kbranch == "y" and qemuarch == "i386": }}
22{{ input type:"choicelist" name:"new_kbranch" nameappend:"i386" gen:"bsp.kernel.all_branches" branches_base:"standard:standard/common-pc" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/common-pc/base" }}
23
24{{ if need_new_kbranch == "n" and qemuarch == "i386": }}
25{{ input type:"choicelist" name:"existing_kbranch" nameappend:"i386" gen:"bsp.kernel.all_branches" branches_base:"standard:standard/common-pc" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/common-pc/base" }}
26
27{{ if need_new_kbranch == "y" and qemuarch == "x86_64": }}
28{{ input type:"choicelist" name:"new_kbranch" nameappend:"x86_64" gen:"bsp.kernel.all_branches" branches_base:"standard:standard/common-pc-64" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/common-pc-64/base" }}
29
30{{ if need_new_kbranch == "n" and qemuarch == "x86_64": }}
31{{ input type:"choicelist" name:"existing_kbranch" nameappend:"x86_64" gen:"bsp.kernel.all_branches" branches_base:"standard:standard/common-pc-64" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/common-pc-64/base" }}
32
33{{ if need_new_kbranch == "y" and qemuarch == "mips": }}
34{{ input type:"choicelist" name:"new_kbranch" nameappend:"mips" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
35
36{{ if need_new_kbranch == "n" and qemuarch == "mips": }}
37{{ input type:"choicelist" name:"existing_kbranch" nameappend:"mips" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/mti-malta32" }}
38
39{{ if need_new_kbranch == "n": }}
40KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
41
42{{ input type:"boolean" name:"smp" prio:"30" msg:"Would you like SMP support? (y/n)" default:"y"}}
43{{ if smp == "y": }}
44KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
45
46SRC_URI += "file://{{=machine}}-standard.scc \
47 file://{{=machine}}-user-config.cfg \
48 file://{{=machine}}-user-patches.scc \
49 file://{{=machine}}-user-features.scc \
50 "
51
52# uncomment and replace these SRCREVs with the real commit ids once you've had
53# the appropriate changes committed to the upstream linux-yocto repo
54#SRCREV_machine_pn-linux-yocto_{{=machine}} ?= "0143c6ebb4a2d63b241df5f608b19f483f7eb9e0"
55#SRCREV_meta_pn-linux-yocto_{{=machine}} ?= "8f55bee2403176a50cc0dd41811aa60fcf07243c"
56#LINUX_VERSION = "3.14"
diff --git a/scripts/lib/bsp/substrate/target/arch/x86_64/.gitignore b/scripts/lib/bsp/substrate/target/arch/x86_64/.gitignore
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/x86_64/.gitignore
diff --git a/scripts/lib/bsp/substrate/target/arch/x86_64/conf/machine/machine.conf b/scripts/lib/bsp/substrate/target/arch/x86_64/conf/machine/machine.conf
new file mode 100644
index 0000000000..79b38e6b35
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/x86_64/conf/machine/machine.conf
@@ -0,0 +1,57 @@
1# yocto-bsp-filename {{=machine}}.conf
2#@TYPE: Machine
3#@NAME: {{=machine}}
4
5#@DESCRIPTION: Machine configuration for {{=machine}} systems
6
7{{ if kernel_choice == "custom": preferred_kernel = "linux-yocto-custom" }}
8{{ if kernel_choice == "linux-yocto-dev": preferred_kernel = "linux-yocto-dev" }}
9{{ if kernel_choice == "custom" or kernel_choice == "linux-yocto-dev" : }}
10PREFERRED_PROVIDER_virtual/kernel ?= "{{=preferred_kernel}}"
11
12{{ if kernel_choice != "custom" and kernel_choice != "linux-yocto-dev": preferred_kernel = kernel_choice.split('_')[0] }}
13{{ if kernel_choice != "custom" and kernel_choice != "linux-yocto-dev": preferred_kernel_version = kernel_choice.split('_')[1] }}
14{{ if kernel_choice != "custom" and kernel_choice != "linux-yocto-dev": }}
15PREFERRED_PROVIDER_virtual/kernel ?= "{{=preferred_kernel}}"
16PREFERRED_VERSION_{{=preferred_kernel}} ?= "{{=preferred_kernel_version}}%"
17
18{{ input type:"choicelist" name:"tunefile" prio:"40" msg:"Which machine tuning would you like to use?" default:"tune_core2" }}
19{{ input type:"choice" val:"tune_core2" msg:"Core2 tuning optimizations" }}
20{{ input type:"choice" val:"tune_corei7" msg:"Corei7 tuning optimizations" }}
21{{ if tunefile == "tune_core2": }}
22DEFAULTTUNE ?= "core2-64"
23require conf/machine/include/tune-core2.inc
24{{ if tunefile == "tune_corei7": }}
25DEFAULTTUNE ?= "corei7-64"
26require conf/machine/include/tune-corei7.inc
27
28require conf/machine/include/x86-base.inc
29
30MACHINE_FEATURES += "wifi efi pcbios"
31
32{{ input type:"boolean" name:"xserver" prio:"50" msg:"Do you need support for X? (y/n)" default:"y" }}
33
34{{ if xserver == "y": }}
35{{ input type:"choicelist" name:"xserver_choice" prio:"50" msg:"Please select an xserver for this machine:" default:"xserver_i915" }}
36
37{{ input type:"choice" val:"xserver_vesa" msg:"VESA xserver support" }}
38{{ input type:"choice" val:"xserver_i915" msg:"i915 xserver support" }}
39{{ input type:"choice" val:"xserver_i965" msg:"i965 xserver support" }}
40{{ if xserver == "y": }}
41XSERVER ?= "${XSERVER_X86_BASE} \
42 ${XSERVER_X86_EXT} \
43{{ if xserver == "y" and xserver_choice == "xserver_vesa": }}
44 ${XSERVER_X86_VESA} \
45{{ if xserver == "y" and xserver_choice == "xserver_i915": }}
46 ${XSERVER_X86_I915} \
47{{ if xserver == "y" and xserver_choice == "xserver_i965": }}
48 ${XSERVER_X86_I965} \
49{{ if xserver == "y": }}
50 "
51
52MACHINE_EXTRA_RRECOMMENDS += "linux-firmware v86d"
53
54EXTRA_OECONF_append_pn-matchbox-panel-2 = " --with-battery=acpi"
55
56{{ if xserver == "y" and xserver_choice == "xserver_vesa": }}
57APPEND += "video=vesafb vga=0x318"
diff --git a/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-graphics/xorg-xserver/xserver-xf86-config/machine.noinstall b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-graphics/xorg-xserver/xserver-xf86-config/machine.noinstall
new file mode 100644
index 0000000000..b442d02d57
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-graphics/xorg-xserver/xserver-xf86-config/machine.noinstall
@@ -0,0 +1 @@
# yocto-bsp-dirname {{=machine}}
diff --git a/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-graphics/xorg-xserver/xserver-xf86-config/machine/xorg.conf b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-graphics/xorg-xserver/xserver-xf86-config/machine/xorg.conf
new file mode 100644
index 0000000000..ac9a0f1bb0
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-graphics/xorg-xserver/xserver-xf86-config/machine/xorg.conf
@@ -0,0 +1 @@
# yocto-bsp-filename {{ if xserver == "y": }} this
diff --git a/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend
new file mode 100644
index 0000000000..30830031ed
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-graphics/xorg-xserver/xserver-xf86-config_0.1.bbappend
@@ -0,0 +1,2 @@
1# yocto-bsp-filename {{ if xserver == "y": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
diff --git a/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files.noinstall b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files.noinstall
new file mode 100644
index 0000000000..1e0d92c55c
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files.noinstall
@@ -0,0 +1 @@
# yocto-bsp-dirname {{ if kernel_choice != "custom": }} files
diff --git a/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine-preempt-rt.scc b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine-preempt-rt.scc
new file mode 100644
index 0000000000..fd5320ba1e
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine-preempt-rt.scc
@@ -0,0 +1,16 @@
1# yocto-bsp-filename {{=machine}}-preempt-rt.scc
2define KMACHINE {{=machine}}
3define KTYPE preempt-rt
4define KARCH x86_64
5
6include {{=map_preempt_rt_kbranch(need_new_kbranch, new_kbranch, existing_kbranch)}}
7{{ if need_new_kbranch == "y": }}
8branch {{=machine}}
9
10include {{=machine}}.scc
11
12# default policy for preempt-rt kernels
13include cfg/usb-mass-storage.scc
14include cfg/boot-live.scc
15include features/latencytop/latencytop.scc
16include features/profiling/profiling.scc
diff --git a/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine-standard.scc b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine-standard.scc
new file mode 100644
index 0000000000..569f967c6a
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine-standard.scc
@@ -0,0 +1,16 @@
1# yocto-bsp-filename {{=machine}}-standard.scc
2define KMACHINE {{=machine}}
3define KTYPE standard
4define KARCH x86_64
5
6include {{=map_standard_kbranch(need_new_kbranch, new_kbranch, existing_kbranch)}}
7{{ if need_new_kbranch == "y": }}
8branch {{=machine}}
9
10include {{=machine}}.scc
11
12# default policy for standard kernels
13include cfg/usb-mass-storage.scc
14include cfg/boot-live.scc
15include features/latencytop/latencytop.scc
16include features/profiling/profiling.scc
diff --git a/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine-tiny.scc b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine-tiny.scc
new file mode 100644
index 0000000000..fb21432a4f
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine-tiny.scc
@@ -0,0 +1,10 @@
1# yocto-bsp-filename {{=machine}}-tiny.scc
2define KMACHINE {{=machine}}
3define KTYPE tiny
4define KARCH x86_64
5
6include {{=map_tiny_kbranch(need_new_kbranch, new_kbranch, existing_kbranch)}}
7{{ if need_new_kbranch == "y": }}
8branch {{=machine}}
9
10include {{=machine}}.scc
diff --git a/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine-user-config.cfg b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine-user-config.cfg
new file mode 100644
index 0000000000..47489e44e9
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine-user-config.cfg
@@ -0,0 +1 @@
# yocto-bsp-filename {{=machine}}-user-config.cfg
diff --git a/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine-user-features.scc b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine-user-features.scc
new file mode 100644
index 0000000000..582759e612
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine-user-features.scc
@@ -0,0 +1 @@
# yocto-bsp-filename {{=machine}}-user-features.scc
diff --git a/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine-user-patches.scc b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine-user-patches.scc
new file mode 100644
index 0000000000..97f747fa07
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine-user-patches.scc
@@ -0,0 +1 @@
# yocto-bsp-filename {{=machine}}-user-patches.scc
diff --git a/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine.cfg b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine.cfg
new file mode 100644
index 0000000000..3290ddefe7
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine.cfg
@@ -0,0 +1,48 @@
1# yocto-bsp-filename {{=machine}}.cfg
2CONFIG_PRINTK=y
3
4# Basic hardware support for the box - network, USB, PCI, sound
5CONFIG_NETDEVICES=y
6CONFIG_ATA=y
7CONFIG_ATA_GENERIC=y
8CONFIG_ATA_SFF=y
9CONFIG_PCI=y
10CONFIG_MMC=y
11CONFIG_MMC_SDHCI=y
12CONFIG_USB_SUPPORT=y
13CONFIG_USB=y
14CONFIG_USB_ARCH_HAS_EHCI=y
15CONFIG_R8169=y
16CONFIG_PATA_SCH=y
17CONFIG_MMC_SDHCI_PCI=y
18CONFIG_USB_EHCI_HCD=y
19CONFIG_PCIEPORTBUS=y
20CONFIG_NET=y
21CONFIG_USB_UHCI_HCD=y
22CONFIG_BLK_DEV_SD=y
23CONFIG_CHR_DEV_SG=y
24CONFIG_SOUND=y
25CONFIG_SND=y
26CONFIG_SND_HDA_INTEL=y
27
28# Make sure these are on, otherwise the bootup won't be fun
29CONFIG_EXT3_FS=y
30CONFIG_UNIX=y
31CONFIG_INET=y
32CONFIG_MODULES=y
33CONFIG_SHMEM=y
34CONFIG_TMPFS=y
35CONFIG_PACKET=y
36
37CONFIG_I2C=y
38CONFIG_AGP=y
39CONFIG_PM=y
40CONFIG_ACPI=y
41CONFIG_INPUT=y
42
43# Needed for booting (and using) USB memory sticks
44CONFIG_BLK_DEV_LOOP=y
45CONFIG_NLS_CODEPAGE_437=y
46CONFIG_NLS_ISO8859_1=y
47
48CONFIG_RD_GZIP=y
diff --git a/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine.scc b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine.scc
new file mode 100644
index 0000000000..9b7c291a8f
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/files/machine.scc
@@ -0,0 +1,14 @@
1# yocto-bsp-filename {{=machine}}.scc
2kconf hardware {{=machine}}.cfg
3
4include features/serial/8250.scc
5{{ if xserver == "y" and xserver_choice == "xserver_vesa": }}
6include cfg/vesafb.scc
7{{ if xserver == "y" and xserver_choice == "xserver_i915" or xserver_choice == "xserver_i965": }}
8include features/i915/i915.scc
9
10include cfg/usb-mass-storage.scc
11include features/power/intel.scc
12
13kconf hardware {{=machine}}-user-config.cfg
14include {{=machine}}-user-patches.scc
diff --git a/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/kernel-list.noinstall b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/kernel-list.noinstall
new file mode 100644
index 0000000000..a04e6c7852
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/kernel-list.noinstall
@@ -0,0 +1,5 @@
1{{ if kernel_choice != "custom": }}
2{{ input type:"boolean" name:"use_default_kernel" prio:"10" msg:"Would you like to use the default (3.14) kernel? (y/n)" default:"y"}}
3
4{{ if kernel_choice != "custom" and use_default_kernel == "n": }}
5{{ input type:"choicelist" name:"kernel_choice" gen:"bsp.kernel.kernels" prio:"10" msg:"Please choose the kernel to use in this BSP:" default:"linux-yocto_3.14"}}
diff --git a/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/linux-yocto-dev.bbappend b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/linux-yocto-dev.bbappend
new file mode 100644
index 0000000000..2fa6231cbf
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/linux-yocto-dev.bbappend
@@ -0,0 +1,26 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto-dev": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
8
9{{ if need_new_kbranch == "y": }}
10{{ input type:"choicelist" name:"new_kbranch" nameappend:"i386" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
11
12{{ if need_new_kbranch == "n": }}
13{{ input type:"choicelist" name:"existing_kbranch" nameappend:"i386" gen:"bsp.kernel.all_branches" branches_base:"standard" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/base" }}
14
15{{ if need_new_kbranch == "n": }}
16KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
17
18{{ input type:"boolean" name:"smp" prio:"30" msg:"Would you like SMP support? (y/n)" default:"y"}}
19{{ if smp == "y": }}
20KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
21
22SRC_URI += "file://{{=machine}}-standard.scc \
23 file://{{=machine}}-user-config.cfg \
24 file://{{=machine}}-user-patches.scc \
25 file://{{=machine}}-user-features.scc \
26 "
diff --git a/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/linux-yocto-rt_3.10.bbappend b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/linux-yocto-rt_3.10.bbappend
new file mode 100644
index 0000000000..39bc72d9c4
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/linux-yocto-rt_3.10.bbappend
@@ -0,0 +1,33 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto-rt_3.10": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7
8{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
9
10{{ if need_new_kbranch == "y": }}
11{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/preempt-rt" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/preempt-rt/base" }}
12
13{{ if need_new_kbranch == "n": }}
14{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/preempt-rt" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/preempt-rt/base" }}
15
16{{ if need_new_kbranch == "n": }}
17KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
18
19{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
20{{ if smp == "y": }}
21KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
22
23SRC_URI += "file://{{=machine}}-preempt-rt.scc \
24 file://{{=machine}}-user-config.cfg \
25 file://{{=machine}}-user-patches.scc \
26 file://{{=machine}}-user-features.scc \
27 "
28
29# uncomment and replace these SRCREVs with the real commit ids once you've had
30# the appropriate changes committed to the upstream linux-yocto repo
31#SRCREV_machine_pn-linux-yocto-rt_{{=machine}} ?= "f35992f80c81dc5fa1a97165dfd5cbb84661f7cb"
32#SRCREV_meta_pn-linux-yocto-rt_{{=machine}} ?= "1b534b2f8bbe9b8a773268cfa30a4850346f6f5f"
33#LINUX_VERSION = "3.10.9" \ No newline at end of file
diff --git a/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/linux-yocto-tiny_3.10.bbappend b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/linux-yocto-tiny_3.10.bbappend
new file mode 100644
index 0000000000..f04dd0cce4
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/linux-yocto-tiny_3.10.bbappend
@@ -0,0 +1,33 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto-tiny_3.10": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7
8{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
9
10{{ if need_new_kbranch == "y": }}
11{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
12
13{{ if need_new_kbranch == "n": }}
14{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
15
16{{ if need_new_kbranch == "n": }}
17KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
18
19{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
20{{ if smp == "y": }}
21KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
22
23SRC_URI += "file://{{=machine}}-tiny.scc \
24 file://{{=machine}}-user-config.cfg \
25 file://{{=machine}}-user-patches.scc \
26 file://{{=machine}}-user-features.scc \
27 "
28
29# uncomment and replace these SRCREVs with the real commit ids once you've had
30# the appropriate changes committed to the upstream linux-yocto repo
31#SRCREV_machine_pn-linux-yocto-tiny_{{=machine}} ?= "840bb8c059418c4753415df56c9aff1c0d5354c8"
32#SRCREV_meta_pn-linux-yocto-tiny_{{=machine}} ?= "4fd76cc4f33e0afd8f906b1e8f231b6d13b6c993"
33#LINUX_VERSION = "3.10.9"
diff --git a/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/linux-yocto-tiny_3.14.bbappend b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/linux-yocto-tiny_3.14.bbappend
new file mode 100644
index 0000000000..471ccbcc3e
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/linux-yocto-tiny_3.14.bbappend
@@ -0,0 +1,33 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto-tiny_3.14": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7
8{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
9
10{{ if need_new_kbranch == "y": }}
11{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
12
13{{ if need_new_kbranch == "n": }}
14{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard/tiny" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/tiny/base" }}
15
16{{ if need_new_kbranch == "n": }}
17KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
18
19{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
20{{ if smp == "y": }}
21KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
22
23SRC_URI += "file://{{=machine}}-tiny.scc \
24 file://{{=machine}}-user-config.cfg \
25 file://{{=machine}}-user-patches.scc \
26 file://{{=machine}}-user-features.scc \
27 "
28
29# uncomment and replace these SRCREVs with the real commit ids once you've had
30# the appropriate changes committed to the upstream linux-yocto repo
31#SRCREV_machine_pn-linux-yocto-tiny_{{=machine}} ?= "840bb8c059418c4753415df56c9aff1c0d5354c8"
32#SRCREV_meta_pn-linux-yocto-tiny_{{=machine}} ?= "4fd76cc4f33e0afd8f906b1e8f231b6d13b6c993"
33#LINUX_VERSION = "3.14"
diff --git a/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/linux-yocto_3.10.bbappend b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/linux-yocto_3.10.bbappend
new file mode 100644
index 0000000000..e21a333fa4
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/linux-yocto_3.10.bbappend
@@ -0,0 +1,33 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto_3.10": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7
8{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
9
10{{ if need_new_kbranch == "y": }}
11{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard:standard/common-pc-64" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/common-pc-64/base" }}
12
13{{ if need_new_kbranch == "n": }}
14{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard:standard/common-pc-64" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/common-pc-64/base" }}
15
16{{ if need_new_kbranch == "n": }}
17KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
18
19{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
20{{ if smp == "y": }}
21KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
22
23SRC_URI += "file://{{=machine}}-standard.scc \
24 file://{{=machine}}-user-config.cfg \
25 file://{{=machine}}-user-patches.scc \
26 file://{{=machine}}-user-features.scc \
27 "
28
29# uncomment and replace these SRCREVs with the real commit ids once you've had
30# the appropriate changes committed to the upstream linux-yocto repo
31#SRCREV_machine_pn-linux-yocto_{{=machine}} ?= "b170394a475b96ecc92cbc9e4b002bed0a9f69c5"
32#SRCREV_meta_pn-linux-yocto_{{=machine}} ?= "c2ed0f16fdec628242a682897d5d86df4547cf24"
33#LINUX_VERSION = "3.10.9" \ No newline at end of file
diff --git a/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/linux-yocto_3.14.bbappend b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/linux-yocto_3.14.bbappend
new file mode 100644
index 0000000000..ca0b497ff4
--- /dev/null
+++ b/scripts/lib/bsp/substrate/target/arch/x86_64/recipes-kernel/linux/linux-yocto_3.14.bbappend
@@ -0,0 +1,33 @@
1# yocto-bsp-filename {{ if kernel_choice == "linux-yocto_3.14": }} this
2FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
3
4PR := "${PR}.1"
5
6COMPATIBLE_MACHINE_{{=machine}} = "{{=machine}}"
7
8{{ input type:"boolean" name:"need_new_kbranch" prio:"20" msg:"Do you need a new machine branch for this BSP (the alternative is to re-use an existing branch)? [y/n]" default:"y" }}
9
10{{ if need_new_kbranch == "y": }}
11{{ input type:"choicelist" name:"new_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard:standard/common-pc-64" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/common-pc-64/base" }}
12
13{{ if need_new_kbranch == "n": }}
14{{ input type:"choicelist" name:"existing_kbranch" gen:"bsp.kernel.all_branches" branches_base:"standard:standard/common-pc-64" prio:"20" msg:"Please choose a machine branch to base this BSP on:" default:"standard/common-pc-64/base" }}
15
16{{ if need_new_kbranch == "n": }}
17KBRANCH_{{=machine}} = "{{=existing_kbranch}}"
18
19{{ input type:"boolean" name:"smp" prio:"30" msg:"Do you need SMP support? (y/n)" default:"y"}}
20{{ if smp == "y": }}
21KERNEL_FEATURES_append_{{=machine}} += " cfg/smp.scc"
22
23SRC_URI += "file://{{=machine}}-standard.scc \
24 file://{{=machine}}-user-config.cfg \
25 file://{{=machine}}-user-patches.scc \
26 file://{{=machine}}-user-features.scc \
27 "
28
29# uncomment and replace these SRCREVs with the real commit ids once you've had
30# the appropriate changes committed to the upstream linux-yocto repo
31#SRCREV_machine_pn-linux-yocto_{{=machine}} ?= "840bb8c059418c4753415df56c9aff1c0d5354c8"
32#SRCREV_meta_pn-linux-yocto_{{=machine}} ?= "4fd76cc4f33e0afd8f906b1e8f231b6d13b6c993"
33#LINUX_VERSION = "3.14"
diff --git a/scripts/lib/bsp/tags.py b/scripts/lib/bsp/tags.py
new file mode 100644
index 0000000000..3719427884
--- /dev/null
+++ b/scripts/lib/bsp/tags.py
@@ -0,0 +1,49 @@
1# ex:ts=4:sw=4:sts=4:et
2# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
3#
4# Copyright (c) 2012, Intel Corporation.
5# All rights reserved.
6#
7# This program is free software; you can redistribute it and/or modify
8# it under the terms of the GNU General Public License version 2 as
9# published by the Free Software Foundation.
10#
11# This program is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14# GNU General Public License for more details.
15#
16# You should have received a copy of the GNU General Public License along
17# with this program; if not, write to the Free Software Foundation, Inc.,
18# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19#
20# DESCRIPTION
21# This module provides a place to define common constants for the
22# Yocto BSP Tools.
23#
24# AUTHORS
25# Tom Zanussi <tom.zanussi (at] intel.com>
26#
27
28OPEN_TAG = "{{"
29CLOSE_TAG = "}}"
30ASSIGN_TAG = "{{="
31INPUT_TAG = "input"
32IF_TAG = "if"
33FILENAME_TAG = "yocto-bsp-filename"
34DIRNAME_TAG = "yocto-bsp-dirname"
35
36INDENT_STR = " "
37
38BLANKLINE_STR = "of.write(\"\\n\")"
39NORMAL_START = "of.write"
40OPEN_START = "current_file ="
41
42INPUT_TYPE_PROPERTY = "type"
43
44SRC_URI_FILE = "file://"
45
46GIT_CHECK_URI = "git://git.yoctoproject.org/linux-yocto-dev.git"
47
48
49