All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Yu, Mingli" <mingli.yu@windriver.com>
To: Matt Madison <matt@madison.systems>,
	Khem Raj <raj.khem@gmail.com>,
	Robert Yang <liezhi.yang@windriver.com>
Cc: Patches and discussions about the oe-core layer
	<openembedded-core@lists.openembedded.org>
Subject: Re: [PATCH v5 06/13] go.bbclass: ptest cleanup and improvements
Date: Wed, 26 Jun 2019 17:06:43 +0800	[thread overview]
Message-ID: <5D1335A3.6060508@windriver.com> (raw)
In-Reply-To: <CAGgRHJoXVPEq-L9iHniD9mQtvC3CGq3-jP7NincOx1gVqCps3g@mail.gmail.com>



On 2019年06月25日 20:23, Matt Madison wrote:
> On Fri, Jun 21, 2019 at 2:08 AM Yu, Mingli <mingli.yu@windriver.com> wrote:
>>
>> Hi Matt,
>>
>> I noticed your commit is the latest update for go-dep ptest. But the
>> go-dep ptest doesn't work in my environment. I'm trying to figure out
>> what's wrong is here though I didn't know much about go.
>
> I went back over the commits, and I don't think I did anything with
> go-dep specifically. I can see that the tests are failing for it, and
> it looks like it's because go-dep's test programs make some
> assumptions about the environment.  For one thing, it needs the go
> compiler installed. It also looks like it's expecting some source
> files to be present... in other words, it's not really designed for a
> cross-build setup, with tests run on the cross-built target. It could
> be messy to work around that, and I'm not sure how useful it would be
> anyway, seeing as how go-dep is more of a build tool.  Might be better
> to just disable ptests for it completely.

Many thanks Matt for your information!
Did you ever run go-dep ptest?
Go through the run-ptest script for go-dep, it actually runs the 
/usr/lib64/go-dep/ptest/github.com/golang/dep/cmd/dep/dep.test whose 
source file is 
https://github.com/golang/dep/blob/master/cmd/dep/dep_test.go.

# pwd
/usr/lib64/go-dep/ptest/github.com/golang/dep/cmd/dep
# ./dep.test
building testdep failed: exit status 1
can't load package: package .: no Go files in 
/usr/lib64/go-dep/ptest/github.com/golang/dep/cmd/dep

Check the logic for 
https://github.com/golang/dep/blob/master/cmd/dep/dep_test.go, it try to 
run "go build -o testdep" at its start. And the go compiler exist on our 
target, but I don't know what go files the dep_test.go expects.

Hi Khem,

Do you have any suggestion?

Thanks,

>
> BTW, you can have the test programs generate verbose output by setting
> GOPTESTFLAGS = "-test.v" in the recipe, which will add that flag to
> their invocation in the wrapper script, or by manually running the
> test program on the target and passing that flag (cd into the
> directory where the test program is located, then run it with
> -test.v).
>
> Regards,
> -Matt
>
>>
>> BTW, Could you help to check?
>>
>> root@qemux86-64:~# cd /usr/lib64/go-dep/ptest/
>> root@qemux86-64:/usr/lib64/go-dep/ptest# cat run-ptest
>> #!/bin/sh
>> RC=0
>> run_test() (
>>       cd "$1"
>>       ((((./$2 ; echo $? >&3) | sed -r -e"s,^(PASS|SKIP|FAIL)$,\1:
>> $1/$2," >&4) 3>&1) | (read rc; exit $rc)) 4>&1
>>       exit $?)
>> run_test github.com/golang/dep/cmd/dep dep.test || RC=1
>> exit $RC
>> root@qemux86-64:/usr/lib64/go-dep/ptest# ./run-ptest
>> building testdep failed: exit status 1
>> can't load package: package .: no Go files in
>> /usr/lib64/go-dep/ptest/github.com/golang/dep/cmd/dep
>> root@qemux86-64:/usr/lib64/go-dep/ptest#
>>
>> Thanks,
>>
>> On 2018年03月05日 05:09, Matt Madison wrote:
>>> * Don't enable verbose test output (-test.v)
>>>     by default, as it generates too much noise
>>>     for automated results parsing
>>>
>>> * Override do_install_ptest_base in the bbclass,
>>>     so recipes can provide their own modifications
>>>     with do_install_ptest.
>>>
>>> * Improve the generated run-ptest script to better
>>>     handle large numbers of tests, and to generate
>>>     'status: test name' output similar to Automake
>>>     tests.
>>>
>>> * Install all non-vendored 'testdata' directories
>>>     from the source into the ptest package, as some
>>>     packages share test data among multiple tests.
>>>
>>> Signed-off-by: Matt Madison <matt@madison.systems>
>>> ---
>>>    meta/classes/go.bbclass | 87 +++++++++++++++++++++++++++++--------------------
>>>    1 file changed, 51 insertions(+), 36 deletions(-)
>>>
>>> diff --git a/meta/classes/go.bbclass b/meta/classes/go.bbclass
>>> index afd68b5951..a51ba3e9f0 100644
>>> --- a/meta/classes/go.bbclass
>>> +++ b/meta/classes/go.bbclass
>>> @@ -26,7 +26,7 @@ GO_LDFLAGS ?= '-ldflags="${GO_RPATH} ${GO_LINKMODE} -extldflags '${GO_EXTLDFLAGS
>>>    export GOBUILDFLAGS ?= "-v ${GO_LDFLAGS}"
>>>    export GOPATH_OMIT_IN_ACTIONID ?= "1"
>>>    export GOPTESTBUILDFLAGS ?= "${GOBUILDFLAGS} -c"
>>> -export GOPTESTFLAGS ?= "-test.v"
>>> +export GOPTESTFLAGS ?= ""
>>>    GOBUILDFLAGS_prepend_task-compile = "${GO_PARALLEL_BUILD} "
>>>
>>>    export GO = "${HOST_PREFIX}go"
>>> @@ -76,7 +76,7 @@ go_list_packages() {
>>>    }
>>>
>>>    go_list_package_tests() {
>>> -    ${GO} list -f '{{.ImportPath}} {{.TestGoFiles}}' ${GOBUILDFLAGS} ${GO_INSTALL} | \
>>> +     ${GO} list -f '{{.ImportPath}} {{.TestGoFiles}}' ${GOBUILDFLAGS} ${GO_INSTALL} | \
>>>                grep -v '\[\]$' | \
>>>                egrep -v '${GO_INSTALL_FILTEROUT}' | \
>>>                awk '{ print $1 }'
>>> @@ -100,15 +100,16 @@ go_do_compile() {
>>>    do_compile[dirs] =+ "${GOTMPDIR}"
>>>    do_compile[cleandirs] = "${B}/bin ${B}/pkg"
>>>
>>> -do_compile_ptest() {
>>> +do_compile_ptest_base() {
>>>        export TMPDIR="${GOTMPDIR}"
>>> -    rm -f ${B}/.go_compiled_tests.list
>>> +     rm -f ${B}/.go_compiled_tests.list
>>>        go_list_package_tests | while read pkg; do
>>>                cd ${B}/src/$pkg
>>>                ${GO} test ${GOPTESTBUILDFLAGS} $pkg
>>>                find . -mindepth 1 -maxdepth 1 -type f -name '*.test' -exec echo $pkg/{} \; | \
>>>                        sed -e's,/\./,/,'>> ${B}/.go_compiled_tests.list
>>>        done
>>> +     do_compile_ptest
>>>    }
>>>    do_compile_ptest_base[dirs] =+ "${GOTMPDIR}"
>>>
>>> @@ -124,40 +125,54 @@ go_do_install() {
>>>        fi
>>>    }
>>>
>>> -do_install_ptest_base() {
>>> -    test -f "${B}/.go_compiled_tests.list" || exit 0
>>> -    tests=""
>>> -    while read test; do
>>> -        tests="$tests${tests:+ }${test%.test}"
>>> -        testdir=`dirname $test`
>>> -        install -d ${D}${PTEST_PATH}/$testdir
>>> -        install -m 0755 ${B}/src/$test ${D}${PTEST_PATH}/$test
>>> -        if [ -d "${B}/src/$testdir/testdata" ]; then
>>> -            cp --preserve=mode,timestamps -R "${B}/src/$testdir/testdata" ${D}${PTEST_PATH}/$testdir
>>> -        fi
>>> -    done < ${B}/.go_compiled_tests.list
>>> -    if [ -n "$tests" ]; then
>>> -        install -d ${D}${PTEST_PATH}
>>> -        cat >${D}${PTEST_PATH}/run-ptest <<EOF
>>> +go_make_ptest_wrapper() {
>>> +     cat >${D}${PTEST_PATH}/run-ptest <<EOF
>>>    #!/bin/sh
>>> -ANYFAILED=0
>>> -for t in $tests; do
>>> -    testdir=\`dirname \$t.test\`
>>> -    if ( cd "${PTEST_PATH}/\$testdir"; "${PTEST_PATH}/\$t.test" ${GOPTESTFLAGS} | tee /dev/fd/9 | grep -q "^FAIL" ) 9>&1; then
>>> -        ANYFAILED=1
>>> -    fi
>>> -done
>>> -if [ \$ANYFAILED -ne 0 ]; then
>>> -    echo "FAIL: ${PN}"
>>> -    exit 1
>>> -fi
>>> -echo "PASS: ${PN}"
>>> -exit 0
>>> +RC=0
>>> +run_test() (
>>> +    cd "\$1"
>>> +    ((((./\$2 ${GOPTESTFLAGS}; echo \$? >&3) | sed -r -e"s,^(PASS|SKIP|FAIL)\$,\\1: \$1/\$2," >&4) 3>&1) | (read rc; exit \$rc)) 4>&1
>>> +    exit \$?)
>>>    EOF
>>> -        chmod +x ${D}${PTEST_PATH}/run-ptest
>>> -    else
>>> -        rm -rf ${D}${PTEST_PATH}
>>> -    fi
>>> +
>>> +}
>>> +
>>> +go_stage_testdata() {
>>> +     oldwd="$PWD"
>>> +     cd ${S}/src
>>> +     find ${GO_IMPORT} -depth -type d -name testdata | while read d; do
>>> +             if echo "$d" | grep -q '/vendor/'; then
>>> +                     continue
>>> +             fi
>>> +             parent=`dirname $d`
>>> +             install -d ${D}${PTEST_PATH}/$parent
>>> +             cp --preserve=mode,timestamps -R $d ${D}${PTEST_PATH}/$parent/
>>> +     done
>>> +     cd "$oldwd"
>>> +}
>>> +
>>> +do_install_ptest_base() {
>>> +     test -f "${B}/.go_compiled_tests.list" || exit 0
>>> +     install -d ${D}${PTEST_PATH}
>>> +     go_stage_testdata
>>> +     go_make_ptest_wrapper
>>> +     havetests=""
>>> +     while read test; do
>>> +             testdir=`dirname $test`
>>> +             testprog=`basename $test`
>>> +             install -d ${D}${PTEST_PATH}/$testdir
>>> +             install -m 0755 ${B}/src/$test ${D}${PTEST_PATH}/$test
>>> +     echo "run_test $testdir $testprog || RC=1" >> ${D}${PTEST_PATH}/run-ptest
>>> +             havetests="yes"
>>> +     done < ${B}/.go_compiled_tests.list
>>> +     if [ -n "$havetests" ]; then
>>> +             echo "exit \$RC" >> ${D}${PTEST_PATH}/run-ptest
>>> +             chmod +x ${D}${PTEST_PATH}/run-ptest
>>> +     else
>>> +             rm -rf ${D}${PTEST_PATH}
>>> +     fi
>>> +     do_install_ptest
>>> +     chown -R root:root ${D}${PTEST_PATH}
>>>    }
>>>
>>>    EXPORT_FUNCTIONS do_unpack do_configure do_compile do_install
>>>
>


  reply	other threads:[~2019-06-26  9:02 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-04 21:09 [PATCH v5 00/13] go1.10 update and misc improvements Matt Madison
2018-03-04 21:09 ` [PATCH v5 01/13] go: update go 1.9 -> go 1.10 Matt Madison
2018-03-04 21:09 ` [PATCH v5 02/13] go: set GOMIPS envrionment variable Matt Madison
2018-03-04 21:09 ` [PATCH v5 03/13] go.bbclass: rename GO_TMPDIR -> GOTMPDIR Matt Madison
2018-03-04 21:09 ` [PATCH v5 04/13] go.bbclass: remove debug-related commands Matt Madison
2018-03-04 21:09 ` [PATCH v5 05/13] go.bbclass: don't stage test data with sources Matt Madison
2018-03-04 21:09 ` [PATCH v5 06/13] go.bbclass: ptest cleanup and improvements Matt Madison
2019-06-21  9:12   ` Yu, Mingli
2019-06-25 12:23     ` Matt Madison
2019-06-26  9:06       ` Yu, Mingli [this message]
2019-06-26 14:00         ` Matt Madison
2019-06-27  6:43           ` Yu, Mingli
2019-06-27 11:34             ` Matt Madison
2019-06-28  7:12               ` Yu, Mingli
2018-03-04 21:09 ` [PATCH v5 07/13] goarch.bbclass: disable shared runtime for nativesdk builds Matt Madison
2018-03-04 21:09 ` [PATCH v5 08/13] go: move common settings to go-common.inc Matt Madison
2018-03-04 21:09 ` [PATCH v5 09/13] go.bbclass, goarch.bbclass: update SECURITY_CFLAGS Matt Madison
2018-03-04 21:09 ` [PATCH v5 10/13] go: disable PIE CFLAGS for nativesdk and cross-canadian builds Matt Madison
2018-03-04 21:09 ` [PATCH v5 11/13] packagegroup-go-sdk-target: add go-runtime-staticdev Matt Madison
2018-03-04 21:09 ` [PATCH v5 12/13] go-runtime: remove unneeded nativesdk override, rename variable Matt Madison
2018-03-04 21:09 ` [PATCH v5 13/13] tcmode-default.inc: add settings for go Matt Madison
2018-03-04 21:34 ` ✗ patchtest: failure for go1.10 update and misc improvements (rev5) Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5D1335A3.6060508@windriver.com \
    --to=mingli.yu@windriver.com \
    --cc=liezhi.yang@windriver.com \
    --cc=matt@madison.systems \
    --cc=openembedded-core@lists.openembedded.org \
    --cc=raj.khem@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.