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 >> >> >> -=-=-=-=-=-=-=-=-=-=-=- >> Links: You receive all messages sent to this group. >> View/Reply Online (#166887): >> https://lists.openembedded.org/g/openembedded-core/message/166887 >> Mute This Topic: https://lists.openembedded.org/mt/91748692/3617156 >> Group Owner: openembedded-core+owner@lists.openembedded.org >> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [ >> Martin.Jansa@gmail.com] >> -=-=-=-=-=-=-=-=-=-=-=- >> >> >