title: Parsing error while building images for Raspberry pi 3 using yocto
body: <p>I am trying to build images for Raspberry pi 3 using yocto by referring <a href="http://kernelhacks.com/raspberry-pi-3-with-yocto/" rel="nofollow noreferrer">this</a>, while running bitbake command I am getting following error. </p>
  
  <p>In the error log, it says error while executing a python function, but no details about the error, I could see the exception <strong>"Exception: TypeError: getVar() takes at least 3 arguments (2 given)"</strong>. But in the yocto many places I could see getVar is taking only two arguments.</p>
  
  <p>Can you guide in fixing this issue. I could see d.getVar() many places, can you tell me what is d here, I searched in yocto documentation but didn't find any info explaining what is d.</p>
  
  <pre><code>ERROR: /home/ubuntu/raspberryYocto/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_4.9.bb: Error executing a python function in &lt;code&gt;:
  
  The stack trace of python calls that resulted in this exception/failure was: File: '&lt;code&gt;', lineno: 17, function: &lt;module&gt;
       0013:__anon_146__home_ubuntu_raspberryYocto_poky_meta_classes_siteinfo_bbclass(d)
       0014:__anon_381__home_ubuntu_raspberryYocto_poky_meta_classes_kernel_yocto_bbclass(d)
       0015:__anon_6__home_ubuntu_raspberryYocto_poky_meta_recipes_kernel_linux_linux_dtb_inc(d)
       0016:__anon_148__home_ubuntu_raspberryYocto_meta_raspberrypi_recipes_kernel_linux_linux_rpi_inc(d)  *** 0017:__anon_39__home_ubuntu_raspberryYocto_meta_raspberrypi_recipes_kernel_linux_linux_raspberrypi_inc(d) File: '/home/ubuntu/raspberryYocto/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi.inc', lineno: 38, function:
  __anon_39__home_ubuntu_raspberryYocto_meta_raspberrypi_recipes_kernel_linux_linux_raspberrypi_inc
       0034:# See http://www.yoctoproject.org/docs/current/bitbake-user-manual/bitbake-user-manual.html#anonymous-python-functions
       0035:python __anonymous () {
       0036:    kerneltype = d.getVar('KERNEL_IMAGETYPE', True)
       0037:    kerneldt = get_dts(d, d.getVar('LINUX_VERSION', True))  *** 0038:    d.setVar("KERNEL_DEVICETREE", kerneldt)
       0039:}
       0040:
       0041:do_kernel_configme_prepend() {
       0042:    install -m 0644 ${S}/arch/${ARCH}/configs/${KERNEL_DEFCONFIG} ${WORKDIR}/defconfig || die "No default configuration for ${MACHINE} / ${KERNEL_DEFCONFIG} available." File: '/home/ubuntu/raspberryYocto/meta-raspberrypi/classes/linux-raspberrypi-base.bbclass', lineno: 6, function: get_dts
       0002:
       0003:def get_dts(d, ver=None):
       0004:    import re
       0005:  *** 0006:    staging_dir = d.getVar("STAGING_KERNEL_BUILDDIR")
       0007:    dts = d.getVar("KERNEL_DEVICETREE")
       0008:
       0009:    # d.getVar() might return 'None' as a normal string
       0010:    # leading to 'is None' check isn't enough. Exception: TypeError: getVar() takes at least 3 arguments (2 given)
  
  ERROR: Failed to parse recipe: /home/ubuntu/raspberryYocto/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_4.9.bb ERROR: /home/ubuntu/raspberryYocto/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_4.4.bb: Error executing a python function in &lt;code&gt;:
  
  The stack trace of python calls that resulted in this exception/failure was: File: '&lt;code&gt;', lineno: 17, function: &lt;module&gt;
       0013:__anon_146__home_ubuntu_raspberryYocto_poky_meta_classes_siteinfo_bbclass(d)
       0014:__anon_381__home_ubuntu_raspberryYocto_poky_meta_classes_kernel_yocto_bbclass(d)
       0015:__anon_6__home_ubuntu_raspberryYocto_poky_meta_recipes_kernel_linux_linux_dtb_inc(d)
       0016:__anon_148__home_ubuntu_raspberryYocto_meta_raspberrypi_recipes_kernel_linux_linux_rpi_inc(d)  *** 0017:__anon_39__home_ubuntu_raspberryYocto_meta_raspberrypi_recipes_kernel_linux_linux_raspberrypi_inc(d) File: '/home/ubuntu/raspberryYocto/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi.inc', lineno: 38, function:
  __anon_39__home_ubuntu_raspberryYocto_meta_raspberrypi_recipes_kernel_linux_linux_raspberrypi_inc
       0034:# See http://www.yoctoproject.org/docs/current/bitbake-user-manual/bitbake-user-manual.html#anonymous-python-functions
       0035:python __anonymous () {
       0036:    kerneltype = d.getVar('KERNEL_IMAGETYPE', True)
       0037:    kerneldt = get_dts(d, d.getVar('LINUX_VERSION', True))  *** 0038:    d.setVar("KERNEL_DEVICETREE", kerneldt)
       0039:}
       0040:
       0041:do_kernel_configme_prepend() {
       0042:    install -m 0644 ${S}/arch/${ARCH}/configs/${KERNEL_DEFCONFIG} ${WORKDIR}/defconfig || die "No default configuration for ${MACHINE} / ${KERNEL_DEFCONFIG} available." File: '/home/ubuntu/raspberryYocto/meta-raspberrypi/classes/linux-raspberrypi-base.bbclass', lineno: 6, function: get_dts
       0002:
       0003:def get_dts(d, ver=None):
       0004:    import re
       0005:  *** 0006:    staging_dir = d.getVar("STAGING_KERNEL_BUILDDIR")
       0007:    dts = d.getVar("KERNEL_DEVICETREE")
       0008:
       0009:    # d.getVar() might return 'None' as a normal string
       0010:    # leading to 'is None' check isn't enough. Exception: TypeError: getVar() takes at least 3 arguments (2 given)
  
  ERROR: /home/ubuntu/raspberryYocto/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_dev.bb: Error executing a python function in &lt;code&gt;:
  
  The stack trace of python calls that resulted in this exception/failure was: File: '&lt;code&gt;', lineno: 17, function: &lt;module&gt;
       0013:__anon_146__home_ubuntu_raspberryYocto_poky_meta_classes_siteinfo_bbclass(d)
       0014:__anon_381__home_ubuntu_raspberryYocto_poky_meta_classes_kernel_yocto_bbclass(d)
       0015:__anon_6__home_ubuntu_raspberryYocto_poky_meta_recipes_kernel_linux_linux_dtb_inc(d)
       0016:__anon_148__home_ubuntu_raspberryYocto_meta_raspberrypi_recipes_kernel_linux_linux_rpi_inc(d)  *** 0017:__anon_39__home_ubuntu_raspberryYocto_meta_raspberrypi_recipes_kernel_linux_linux_raspberrypi_inc(d) File: '/home/ubuntu/raspberryYocto/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi.inc', lineno: 38, function:
  __anon_39__home_ubuntu_raspberryYocto_meta_raspberrypi_recipes_kernel_linux_linux_raspberrypi_inc
       0034:# See http://www.yoctoproject.org/docs/current/bitbake-user-manual/bitbake-user-manual.html#anonymous-python-functions
       0035:python __anonymous () {
       0036:    kerneltype = d.getVar('KERNEL_IMAGETYPE', True)
       0037:    kerneldt = get_dts(d, d.getVar('LINUX_VERSION', True))  *** 0038:    d.setVar("KERNEL_DEVICETREE", kerneldt)
       0039:}
       0040:
       0041:do_kernel_configme_prepend() {
       0042:    install -m 0644 ${S}/arch/${ARCH}/configs/${KERNEL_DEFCONFIG} ${WORKDIR}/defconfig || die "No default configuration for ${MACHINE} / ${KERNEL_DEFCONFIG} available." File: '/home/ubuntu/raspberryYocto/meta-raspberrypi/classes/linux-raspberrypi-base.bbclass', lineno: 6, function: get_dts
       0002:
       0003:def get_dts(d, ver=None):
       0004:    import re
       0005:  *** 0006:    staging_dir = d.getVar("STAGING_KERNEL_BUILDDIR")
       0007:    dts = d.getVar("KERNEL_DEVICETREE")
       0008:
       0009:    # d.getVar() might return 'None' as a normal string
       0010:    # leading to 'is None' check isn't enough. Exception: TypeError: getVar() takes at least 3 arguments (2 given)
  </code></pre>