Fix x86 "root=..." quoting problem and add udev_escape()
udev_escape gets passed to the arch templates so they can properly escape the root=live:CDLABEL=... argument.
This commit is contained in:
parent
45c8f234ac
commit
da2b53d91f
@ -62,7 +62,7 @@ hardlink ${KERNELDIR}/initrd.img ${BOOTDIR}
|
|||||||
|
|
||||||
## CDLABEL matches the -V argument to mkisofs
|
## CDLABEL matches the -V argument to mkisofs
|
||||||
replace "append initrd=initrd.img" \
|
replace "append initrd=initrd.img" \
|
||||||
"append initrd=initrd.img root=live:CDLABEL='${product.name}'" \
|
"append initrd=initrd.img root=live:CDLABEL=${udev_escape(product.name)}" \
|
||||||
${BOOTDIR}/isolinux.cfg
|
${BOOTDIR}/isolinux.cfg
|
||||||
|
|
||||||
runcmd mkisofs -o ${outroot}/images/boot.iso \
|
runcmd mkisofs -o ${outroot}/images/boot.iso \
|
||||||
|
@ -84,6 +84,15 @@ def generate_module_info(moddir, outfile=None):
|
|||||||
for mod in sorted(modinfo, key=lambda m: m.get('name')):
|
for mod in sorted(modinfo, key=lambda m: m.get('name')):
|
||||||
out.write('{name}\n\t{type}\n\t"{desc:.65}"\n'.format(**mod))
|
out.write('{name}\n\t{type}\n\t"{desc:.65}"\n'.format(**mod))
|
||||||
|
|
||||||
|
# udev whitelist: 'a-zA-Z0-9#+.:=@_-' (see is_whitelisted in libudev-util.c)
|
||||||
|
udev_blacklist=' !"$%&\'()*,/;<>?[\\]^`{|}~' # ASCII printable, minus whitelist
|
||||||
|
udev_blacklist += ''.join(chr(i) for i in range(32)) # ASCII non-printable
|
||||||
|
def udev_escape(label):
|
||||||
|
out = u''
|
||||||
|
for ch in label.decode('utf8'):
|
||||||
|
out += ch if ch not in udev_blacklist else u'\\x%02x' % ord(ch)
|
||||||
|
return out.encode('utf8')
|
||||||
|
|
||||||
def brace_expand(s):
|
def brace_expand(s):
|
||||||
if not ('{' in s and ',' in s and '}' in s):
|
if not ('{' in s and ',' in s and '}' in s):
|
||||||
yield s
|
yield s
|
||||||
@ -164,7 +173,8 @@ class TreeBuilder(object):
|
|||||||
# clobber some mako internal variables - hence "runtime_img".
|
# clobber some mako internal variables - hence "runtime_img".
|
||||||
self.vars = DataHolder(arch=arch, product=product, runtime_img=runtime,
|
self.vars = DataHolder(arch=arch, product=product, runtime_img=runtime,
|
||||||
inroot=inroot, outroot=outroot,
|
inroot=inroot, outroot=outroot,
|
||||||
basearch=arch.basearch, libdir=arch.libdir)
|
basearch=arch.basearch, libdir=arch.libdir,
|
||||||
|
udev_escape=udev_escape)
|
||||||
self._runner = LoraxTemplateRunner(inroot, outroot)
|
self._runner = LoraxTemplateRunner(inroot, outroot)
|
||||||
self._runner.templatedir = templatedir
|
self._runner.templatedir = templatedir
|
||||||
self._runner.defaults = self.vars
|
self._runner.defaults = self.vars
|
||||||
|
Loading…
Reference in New Issue
Block a user