Thanks for the great tips. Yeah the habit of using the FILESPATH is that mostly I work on bbappends. Today i learned. I sent a new v5 with the corrections you mention. Paulo Neves On 6/14/22 16:17, Martin Jansa wrote: > You can use bitbake-getvar to see the default FILESPATH, but "files" > next to recipe is included by default (I prefer to use BPN directory > for slightly faster lookup - unless the files are shared between > different recipes). FILESEXTRAPATHS is usually only needed from > bbappends which add new files to SRC_URI. > > For LICENSE you can use MIT and > LIC_FILES_CHKSUM = > "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" > like many "pure-metadata" recipes in oe-core. > > On Tue, Jun 14, 2022 at 3:46 PM Paulo Neves wrote: > > Regarding the FILESEXTRAPATHS:prepend  i was convinced that > ${THISDIR}/files was not automatically added and was needed for > the test.awk file. I guess I have been cargo culting for some time > on this. Will remove it. > > This is a recipe for a test and if i add a license different than > CLOSED than i need to add a license file, which seems a bit > overkill for a one line. Am I wrong? What license should it even > be? Dont Panic is a common string used in awk docs. > > Paulo Neves > > On 6/14/22 15:39, Martin Jansa wrote: >> FILESEXTRAPATHS:prepend doesn't seem to be needed and LICENSE is >> really CLOSED? >> >> On Tue, Jun 14, 2022 at 3:17 PM Paulo Neves >> wrote: >> >> Useful to work around shebang relocation issues, where >> shebangs are too long or have arguments in them, thus >> preventing them >> from using the /usr/bin/env shebang. >> --- >>  .../wrapper/cmdline-shebang-wrapper-test.bb >>  | 21 ++++++++++++ >>  .../recipes-test/wrapper/files/test.awk       |  2 ++ >>  meta/classes/utils.bbclass                    | 34 >> +++++++++++++++++++ >>  meta/lib/oeqa/selftest/cases/wrapper.py       | 11 ++++++ >>  4 files changed, 68 insertions(+) >>  create mode 100644 >> meta-selftest/recipes-test/wrapper/cmdline-shebang-wrapper-test.bb >> >>  create mode 100644 >> meta-selftest/recipes-test/wrapper/files/test.awk >>  create mode 100644 meta/lib/oeqa/selftest/cases/wrapper.py >> >> diff --git >> a/meta-selftest/recipes-test/wrapper/cmdline-shebang-wrapper-test.bb >> >> b/meta-selftest/recipes-test/wrapper/cmdline-shebang-wrapper-test.bb >> >> new file mode 100644 >> index 0000000000..302eea8901 >> --- /dev/null >> +++ >> b/meta-selftest/recipes-test/wrapper/cmdline-shebang-wrapper-test.bb >> >> @@ -0,0 +1,21 @@ >> +FILESEXTRAPATHS:prepend := "${THISDIR}/files:" >> +SUMMARY = "Check that create_cmdline_shebang works" >> +LICENSE = "CLOSED" >> +INHIBIT_DEFAULT_DEPS = "1" >> + >> +SRC_URI += "file://test.awk" >> + >> +EXCLUDE_FROM_WORLD = "1" >> +do_install() { >> +    install -d ${D}${bindir} >> +    install -m 0755 ${WORKDIR}/test.awk ${D}${bindir}/test >> +    sed -i -e 's|@AWK_BIN@|${bindir}/awk|g' ${D}${bindir}/test >> +    create_cmdline_shebang_wrapper ${D}${bindir}/test >> +    if [ $(${D}${bindir}/test) != "Don't Panic!" ]; then >> +        bbfatal "Wrapper is broken" >> +    else >> +        bbnote "Wrapper is good" >> +    fi >> +} >> + >> +BBCLASSEXTEND = "native" >> diff --git >> a/meta-selftest/recipes-test/wrapper/files/test.awk >> b/meta-selftest/recipes-test/wrapper/files/test.awk >> new file mode 100644 >> index 0000000000..91429197b1 >> --- /dev/null >> +++ b/meta-selftest/recipes-test/wrapper/files/test.awk >> @@ -0,0 +1,2 @@ >> +#! @AWK_BIN@ -f >> +BEGIN { print "Don't Panic!" } >> diff --git a/meta/classes/utils.bbclass >> b/meta/classes/utils.bbclass >> index b4eb3d38ab..b617632d9f 100644 >> --- a/meta/classes/utils.bbclass >> +++ b/meta/classes/utils.bbclass >> @@ -184,6 +184,40 @@ END >>         chmod +x $cmd >>  } >> >> +create_cmdline_shebang_wrapper () { >> +       # Create a wrapper script where commandline options >> are needed >> +       # >> +       # These are useful to work around shebang relocation >> issues, where shebangs are too >> +  # long or have arguments in them, thus preventing them >> from using the /usr/bin/env >> +       # shebang >> +       # >> +       # Usage: create_cmdline_wrapper FILENAME >> + >> +       cmd=$1 >> +       shift >> + >> +       echo "Generating wrapper script for $cmd" >> + >> +  # Strip #! and get remaining interpreter + arg >> +  argument="$(basename "$(head -n1 $cmd | sed -e 's|#![ >> ]*||g' )")" >> +  # strip the shebang from the real script as we do not want >> it to be usable anyway >> +  tail -n +2 $cmd > $cmd.real >> +       cmdname=$(basename $cmd) >> +       dirname=$(dirname $cmd) >> +       cmdoptions=$@ >> +       if [ "${base_prefix}" != "" ]; then >> +               relpath=`python3 -c "import os; >> print(os.path.relpath('${D}${base_prefix}', '$dirname'))"` >> +               cmdoptions=`echo $@ | sed -e >> "s:${base_prefix}:\\$realdir/$relpath:g"` >> +       fi >> +       cat <$cmd >> +#!/usr/bin/env bash >> +realpath=\`readlink -fn \$0\` >> +realdir=\`dirname \$realpath\` >> +exec -a \$realdir/$cmdname $argument \$realdir/$cmdname.real >> $cmdoptions "\$@" >> +END >> +       chmod +x $cmd >> +} >> + >>  create_wrapper () { >>         # Create a wrapper script where extra environment >> variables are needed >>         # >> diff --git a/meta/lib/oeqa/selftest/cases/wrapper.py >> b/meta/lib/oeqa/selftest/cases/wrapper.py >> new file mode 100644 >> index 0000000000..6de63310c0 >> --- /dev/null >> +++ b/meta/lib/oeqa/selftest/cases/wrapper.py >> @@ -0,0 +1,11 @@ >> +from oeqa.selftest.case import OESelftestTestCase >> +from oeqa.utils.commands import bitbake >> + >> +class WrapperTests(OESelftestTestCase): >> +    def test_shebang_wrapper(self): >> +        """ >> +        Summary:   Build a recipe which will fail if the >> cmdline_shebang_wrapper function is defective. >> +        Expected:  Exit status to be 0. >> +        Author:    Paulo Neves >> +        """ >> +        res = bitbake("cmdline-shebang-wrapper-test -c >> install", ignore_status=False) >> -- >> 2.25.1 >> >> >> >> >