<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi,<div><br><div><div>On Jun 24, 2012, at 6:24 PM, Elvis Dowson wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>How can I source a shell script within a bbclass? For example, in meta-xilinx/classes/xilinx-boot.bbclass, I need to source a script file called settings64.sh, which setups the environment variables for the Xilinx ISE 14.1 design tools, in order to generate a system ace image file.</div><div><br></div><div>For the following code snippet:</div><div><br></div><div><div><font class="Apple-style-span" face="Monaco" size="2"><span class="Apple-tab-span" style="white-space:pre">      </span>if   [ "${XILINX_VER}" \> "14" ]; then</font></div><div><font class="Apple-style-span" face="Monaco" size="2"><span class="Apple-tab-span" style="white-space:pre">            </span>bbnote "XILINX_VER ${XILINX_VER}, script location ${XILINX_LOC}/${EDK_SCRIPT}"</font></div><div><font class="Apple-style-span" face="Monaco" size="2"><span class="Apple-tab-span" style="white-space:pre">              </span>source ${XILINX_LOC}/${EDK_SCRIPT} ${XILINX_LOC}</font></div></div><div><font class="Apple-style-span" face="Monaco" size="2"><span class="Apple-tab-span" style="white-space:pre">  </span>fi</font></div><div><br></div><div>I get the following error:</div><div><br></div><div><div><font class="Apple-style-span" face="Monaco" size="2">DEBUG: Executing python function sstate_task_prefunc</font></div><div><font class="Apple-style-span" face="Monaco" size="2">DEBUG: Python function sstate_task_prefunc finished</font></div><div><font class="Apple-style-span" face="Monaco" size="2">DEBUG: Executing shell function do_deploy</font></div><div><font class="Apple-style-span" face="Monaco" size="2">ERROR: Function failed: do_deploy (see /tool/yocto/poky/build/tmp/work/ppc440-poky-linux/u-boot-xilinx-v2012.04.01-r16/temp/log.do_deploy.15616 for further information)</font></div><div><font class="Apple-style-span" face="Monaco" size="2">NOTE: Deploying uboot elf image to /project/xilinx-ml507</font></div><div><font class="Apple-style-span" face="Monaco" size="2">NOTE: Xilinx design tools installed in /tool/xilinx/14.1/ISE_DS</font></div><div><font class="Apple-style-span" face="Monaco" size="2">NOTE: Generate system ace image</font></div><div><font class="Apple-style-span" face="Monaco" size="2">NOTE: EDK_SCRIPT settings64.sh</font></div><div><font class="Apple-style-span" face="Monaco" size="2">NOTE: XILINX_VER 14.1, script location /tool/xilinx/14.1/ISE_DS/settings64.sh</font></div><div><font class="Apple-style-span" face="Monaco" size="2">/tool/yocto/poky/build/tmp/work/ppc440-poky-linux/u-boot-xilinx-v2012.04.01-r16/temp/run.do_deploy.15616: 129: /tool/yocto/poky/build/tmp/work/ppc440-poky-linux/u-boot-xilinx-v2012.04.01-r16/temp/run.do_deploy.15616: source: not found</font></div></div><div><br></div><div>if I replace the source keyword with a . (dot) </div><div><br></div><div><div><div><font class="Apple-style-span" face="Monaco" size="2"><span class="Apple-tab-span" style="white-space: pre; ">     </span>if   [ "${XILINX_VER}" \> "14" ]; then</font></div><div><font class="Apple-style-span" face="Monaco" size="2"><span class="Apple-tab-span" style="white-space: pre; ">         </span>bbnote "XILINX_VER ${XILINX_VER}, script location ${XILINX_LOC}/${EDK_SCRIPT}"</font></div><div><font class="Apple-style-span" face="Monaco" size="2"><span class="Apple-tab-span" style="white-space: pre; ">           </span>. ${XILINX_LOC}/${EDK_SCRIPT} ${XILINX_LOC}</font></div></div><div><font class="Apple-style-span" face="Monaco" size="2"><span class="Apple-tab-span" style="white-space: pre; ">    </span>fi</font></div></div><div><br></div><div>it executes the scripts but gives the following error:</div><div><br></div><div><div><font class="Apple-style-span" face="Monaco" size="2">NOTE: XILINX_VER 14.1, script location /tool/xilinx/14.1/ISE_DS/settings64.sh</font></div><div><font class="Apple-style-span" face="Monaco" size="2">/tool/yocto/poky/build/tmp/work/ppc440-poky-linux/u-boot-xilinx-v2012.04.01-r16/temp/run.do_deploy.7879: 12: [: /tool/yocto/poky/build/tmp/work/ppc440-poky-linux/u-boot-xilinx-v2012.04.01-r16/temp/run.do_deploy.7879: unexpected operator</font></div><div><font class="Apple-style-span" face="Monaco" size="2">. /tool/xilinx/14.1/ISE_DS/common/.settings64.sh /tool/xilinx/14.1/ISE_DS/common</font></div><div><font class="Apple-style-span" face="Monaco" size="2">. /tool/xilinx/14.1/ISE_DS/EDK/.settings64.sh /tool/xilinx/14.1/ISE_DS/EDK</font></div><div><font class="Apple-style-span" face="Monaco" size="2">. /tool/xilinx/14.1/ISE_DS/common/CodeSourcery/.settings64.sh /tool/xilinx/14.1/ISE_DS/common/CodeSourcery</font></div><div><font class="Apple-style-span" face="Monaco" size="2">. /tool/xilinx/14.1/ISE_DS/PlanAhead/.settings64.sh /tool/xilinx/14.1/ISE_DS/PlanAhead</font></div><div><font class="Apple-style-span" face="Monaco" size="2">. /tool/xilinx/14.1/ISE_DS/../../Vivado/2012.1/.settings64.sh /tool/xilinx/14.1/ISE_DS/../../Vivado/2012.1</font></div><div><font class="Apple-style-span" face="Monaco" size="2">. /tool/xilinx/14.1/ISE_DS/ISE/.settings64.sh /tool/xilinx/14.1/ISE_DS/ISE</font></div><div><font class="Apple-style-span" face="Monaco" size="2">. /tool/xilinx/14.1/ISE_DS/SysGen/.settings64.sh /tool/xilinx/14.1/ISE_DS/SysGen</font></div></div><div><br></div><div><br></div><div>What should I do to source the settings64.sh file properly within the bbclass?</div><div><br></div></div></blockquote><br></div><div>The problem was because of Ubuntu 12.04 shell being configured by default to use dash, instead of bash. </div><div><br></div><div>After I reconfigured the shell to use bash using the command:</div><div><br></div><div>$ sudo dpkg-reconfigure dash</div><div><br></div><div>everything works fine. However, Yocto 1.2 defaults or assumes that the user will use dash. </div><div><br></div><div>Is there anyway I can fix this issue, so that the bbclass works for both dash and bash. Using the . (dot) to source the script doesn't seem to work, so I was wondering if there are any other workarounds that I can use to emulate bash's sourcing behaviour in dash.</div><div><br></div><div>Best regards,</div><div><br></div><div>Elvis Dowson</div><div><br></div><br></div></body></html>