mirror of
https://git.yoctoproject.org/poky
synced 2026-02-05 16:28:43 +01:00
go.bbclass: separate the ptest logic to go-ptest class
The current go class includes ptest logic by default and will make the recipe which inherits go class to support ptest automatically though maybe the recipe which inherits go class doesn't plan to support the ptest. So separate the ptest logic to another specified class go-ptest to make the recipe which needs to inherit go class more flexible with regards to ptest support. (From OE-Core rev: 099a2a212fed61a24643da63c74c09cef3ba4030) Signed-off-by: Mingli Yu <mingli.yu@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
8073a9862e
commit
70a862a367
54
meta/classes/go-ptest.bbclass
Normal file
54
meta/classes/go-ptest.bbclass
Normal file
@@ -0,0 +1,54 @@
|
||||
inherit go ptest
|
||||
|
||||
do_compile_ptest_base() {
|
||||
export TMPDIR="${GOTMPDIR}"
|
||||
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}"
|
||||
|
||||
go_make_ptest_wrapper() {
|
||||
cat >${D}${PTEST_PATH}/run-ptest <<EOF
|
||||
#!/bin/sh
|
||||
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
|
||||
|
||||
}
|
||||
|
||||
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}
|
||||
}
|
||||
|
||||
INSANE_SKIP_${PN}-ptest += "ldflags"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
inherit goarch ptest
|
||||
inherit goarch
|
||||
|
||||
GO_PARALLEL_BUILD ?= "${@oe.utils.parallel_make_argument(d, '-p %d')}"
|
||||
|
||||
@@ -114,19 +114,6 @@ go_do_compile() {
|
||||
do_compile[dirs] =+ "${GOTMPDIR}"
|
||||
do_compile[cleandirs] = "${B}/bin ${B}/pkg"
|
||||
|
||||
do_compile_ptest_base() {
|
||||
export TMPDIR="${GOTMPDIR}"
|
||||
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}"
|
||||
|
||||
go_do_install() {
|
||||
install -d ${D}${libdir}/go/src/${GO_IMPORT}
|
||||
tar -C ${S}/src/${GO_IMPORT} -cf - --exclude-vcs --exclude '*.test' --exclude 'testdata' . | \
|
||||
@@ -139,18 +126,6 @@ go_do_install() {
|
||||
fi
|
||||
}
|
||||
|
||||
go_make_ptest_wrapper() {
|
||||
cat >${D}${PTEST_PATH}/run-ptest <<EOF
|
||||
#!/bin/sh
|
||||
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
|
||||
|
||||
}
|
||||
|
||||
go_stage_testdata() {
|
||||
oldwd="$PWD"
|
||||
cd ${S}/src
|
||||
@@ -165,37 +140,12 @@ go_stage_testdata() {
|
||||
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
|
||||
|
||||
FILES_${PN}-dev = "${libdir}/go/src"
|
||||
FILES_${PN}-staticdev = "${libdir}/go/pkg"
|
||||
|
||||
INSANE_SKIP_${PN} += "ldflags"
|
||||
INSANE_SKIP_${PN}-ptest += "ldflags"
|
||||
|
||||
# Add -buildmode=pie to GOBUILDFLAGS to satisfy "textrel" QA checking, but mips
|
||||
# doesn't support -buildmode=pie, so skip the QA checking for mips and its
|
||||
|
||||
Reference in New Issue
Block a user