1
0
mirror of https://git.yoctoproject.org/poky synced 2026-05-30 00:20:08 +00:00

bitbake: Provide LAYERDIR_RE for layer.conf

This variable is a regex-escaped version of LAYERDIR, for safer use in
BBFILE_PATTERN, so as to avoid issues with regex special characters in the
layer path.

[YOCTO #8402]

(Bitbake rev: 72900522778b6ff08b135bf8bb97dff3f1a20bd9)

Signed-off-by: Christopher Larson <chris_larson@mentor.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Christopher Larson
2016-04-30 12:52:49 -07:00
committed by Richard Purdie
parent 90bc9b4f33
commit 32ee30a46d
3 changed files with 19 additions and 3 deletions
@@ -399,7 +399,7 @@ ERROR: Unable to parse base: ParseError in configuration INHERITs: Could not inh
<link linkend='var-BBFILES'>BBFILES</link> += "${LAYERDIR}/*.bb" <link linkend='var-BBFILES'>BBFILES</link> += "${LAYERDIR}/*.bb"
<link linkend='var-BBFILE_COLLECTIONS'>BBFILE_COLLECTIONS</link> += "mylayer" <link linkend='var-BBFILE_COLLECTIONS'>BBFILE_COLLECTIONS</link> += "mylayer"
<link linkend='var-BBFILE_PATTERN'>BBFILE_PATTERN_mylayer</link> := "^${LAYERDIR}/" <link linkend='var-BBFILE_PATTERN'>BBFILE_PATTERN_mylayer</link> := "^${LAYERDIR_RE}/"
</literallayout> </literallayout>
For information on these variables, click the links For information on these variables, click the links
to go to the definitions in the glossary.</para> to go to the definitions in the glossary.</para>
@@ -1636,6 +1636,17 @@
</glossdef> </glossdef>
</glossentry> </glossentry>
<glossentry id='var-LAYERDIR_RE'><glossterm>LAYERDIR_RE</glossterm>
<glossdef>
<para>When used inside the <filename>layer.conf</filename> configuration
file, this variable provides the path of the current layer,
escaped for use in a regular expression
(<link linkend='var-BBFILE_PATTERN'><filename>BBFILE_PATTERN</filename></link>).
This variable is not available outside of <filename>layer.conf</filename>
and references are expanded immediately when parsing of the file completes.</para>
</glossdef>
</glossentry>
<glossentry id='var-LAYERVERSION'><glossterm>LAYERVERSION</glossterm> <glossentry id='var-LAYERVERSION'><glossterm>LAYERVERSION</glossterm>
<glossdef> <glossdef>
<para>Optionally specifies the version of a layer as a single number. <para>Optionally specifies the version of a layer as a single number.
+7 -2
View File
@@ -22,9 +22,11 @@
# with this program; if not, write to the Free Software Foundation, Inc., # with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import os, sys
from functools import wraps
import logging import logging
import os
import re
import sys
from functools import wraps
import bb import bb
from bb import data from bb import data
import bb.parse import bb.parse
@@ -296,9 +298,12 @@ class CookerDataBuilder(object):
if layer.endswith('/'): if layer.endswith('/'):
layer = layer.rstrip('/') layer = layer.rstrip('/')
data.setVar('LAYERDIR', layer) data.setVar('LAYERDIR', layer)
data.setVar('LAYERDIR_RE', re.escape(layer))
data = parse_config_file(os.path.join(layer, "conf", "layer.conf"), data) data = parse_config_file(os.path.join(layer, "conf", "layer.conf"), data)
data.expandVarref('LAYERDIR') data.expandVarref('LAYERDIR')
data.expandVarref('LAYERDIR_RE')
data.delVar('LAYERDIR_RE')
data.delVar('LAYERDIR') data.delVar('LAYERDIR')
if not data.getVar("BBPATH", True): if not data.getVar("BBPATH", True):