This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.
See the CrossGCC FAQ for lots more information.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Martin, All, I don't know where the problem lies, but I was not able to easily apply your base64-encoded mail. I really hope it lies on _my_ side (or it would rendre Hg useless to exchange non-ASCII patches...) On Saturday 15 May 2010 17:19:05 Martin Lund wrote: > # HG changeset patch > # User Martin Lund <mgl@doredevelopment.dk> > # Date 1273934735 -7200 > # Node ID 7e1196581995247e24c585653be9e65e8555d0ea > # Parent 48e107b35ba9c2b3f31667dd5042cc69bc472592 > test-suite: Added new test suite feature (experimental) > > This patch adds support for installing the gcc test suite. A helper > Makefile is provided for building and running the gcc tests. > > The default configuration runs all gcc tests and requires automatic > ssh/scp login access to a networked target board. See README for > more details. > > Note: Current feature is tested with the powerpc-unknown-linux-gnu > sample but it should work with others as well. Missing Signed-off-by. [--SNIP--] > diff -r 48e107b35ba9 -r 7e1196581995 contrib/gcc-test-suite/Makefile [--SNIP--] > +# Targets > +all: test > + > +gcc-testsuite-${DG_GCC_VERSION}.tar.gz: > +# wget -nc ${DG_GCC_URL} > + > +gcc-${DG_GCC_VERSION}: gcc-testsuite-${DG_GCC_VERSION}.tar.gz > +# tar xzf gcc-testsuite-${DG_GCC_VERSION}.tar.gz Those two targets are useless, we already have the test-suite isntalled. > +config: > + @mkdir -p ${TMPDIR} > + @{ echo 'lappend boards_dir "."'; \ > + echo "set target_alias ${DG_TARGET}"; } > ${TMPDIR}/site.exp > + @{ echo -e "load_generic_config \"unix\""; \ > + echo -e "process_multilib_options \"\"" ; \ > + echo "set_board_info bmk,use_alarm 1" ; \ > + echo "set_board_info rsh_prog ssh" ; \ > + echo "set_board_info rcp_prog scp" ; \ > + echo "set_board_info hostname ${DG_TARGET_HOSTNAME}"; \ > + echo "set_board_info username ${DG_TARGET_USERNAME}"; } > ${TMPDIR}/board.exp Split the two rules: ${TMPDIR}/site.exp: $(TOP_DIR)/default.cfg @{ echo 'lappend boards_dir "."'; \ echo "set target_alias ${DG_TARGET}"; } > $@ ${TMPDIR}/board.exp: $(TOP_DIR)/default.cfg @{ echo -e "load_generic_config \"unix\""; \ echo -e "process_multilib_options \"\"" ; \ echo "set_board_info bmk,use_alarm 1" ; \ echo "set_board_info rsh_prog ssh" ; \ echo "set_board_info rcp_prog scp" ; \ echo "set_board_info hostname ${DG_TARGET_HOSTNAME}"; \ echo "set_board_info username ${DG_TARGET_USERNAME}"; } > $@ Also, they depend on default.cfg because they use values from there. > +test: gcc-${DG_GCC_VERSION} config test: ${TMPDIR}/site.exp ${TMPDIR}/board.exp > + cd ${TMPDIR} && \ > + runtest --tool ${DG_TOOLNAME} \ Don't 'cd $(TMP_DIR)', but use runtest's --outdir and --objdir > + --srcdir ${DG_SRC_DIR} \ > + --all \ > + --target ${DG_TARGET} \ > + --target_board board \ > + ${DG_TESTS} \ > + GXX_UNDER_TEST=${DG_TARGET}-g++ ; \ > + mv ${TMPDIR}/*.log ${TOPDIR} ; \ > + mv ${TMPDIR}/*.sum ${TOPDIR} Do not use continuation lines between runtest and the 'mv', as make would not detect a failure in runtest, and would still try to move the files. Better let make handle that. And, why move the result files at all? Why not just do: @echo "Result files available in" '$(TMP_DIR)'" > +clean: > + rm -rf gcc-testsuite-${DG_GCC_VERSION}.tar.gz gcc-${DG_GCC_VERSION} ${TMPDIR} *.log *.sum Tarball and directory now not handled. > diff -r 48e107b35ba9 -r 7e1196581995 contrib/gcc-test-suite/README > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/contrib/gcc-test-suite/README Sat May 15 16:45:35 2010 +0200 > @@ -0,0 +1,71 @@ > + > +Helper Makefile for testing gcc toolchains using the gcc-testsuite > +================================================================== > + > +Requirements > +------------ > + > +* DejaGnu 'runtest' v1.4.4+ > +* Make v3.81+ > +* wget wget not needed, we do no download while running the test-suite. > +Configuration > +------------- > + > +Edit default.cfg to reflect your toolchain and target configuration. > + > +Alternatively, override configuration variables on the command line. > + > +Available config variables: I know most of those sound fairly obvious, but some explanations would be most welcome. For example, it's not obvious where DG_SRC_DIR should point to ( yes, reading the code makes it quite obvious, but as this file is documenting the test-suite, let it be self-sufficient! ;-) ) > +DG_GCC_VERSION > +DG_GCC_URL Those two useless, we do no download while running the test-suite. > +DG_TOOLNAME > +DG_TARGET As I see it, DG_TARGET is the tuple, right? In that case, it should be a constant, and the user should not have to define it a run-time, As that would be error-prone (note that we currently can not isntall two or more toolchains in the same prefix). Plus, you are already setting it in the build script. > +DG_TARGET_HOSTNAME > +DG_TARGET_USERNAME > +DG_C_TESTS > +DG_CPP_TESTS > +DG_TOOLCHAIN_DIR > +DG_SRC_DIR DG_SRC_DIR could/should be automagically detected, no? [--SNIP--] > +SSH automatic login configuration example > +----------------------------------------- > + > +On host do: > +ssh-keygen -t rsa (then simply press enter thru all steps) > +scp ~/.ssh/id_rsa.pub <username>@<target IP>:~/ > + > +On target do: > +cd ~ > +mkdir .ssh > +cat id_rsa.pub >> .ssh/authorized_keys > +rm id_rsa.pub As already mentionned, use ssh-copy-id. > +Author > +------ > +Martin Lund <mgl@doredevelopment.dk> Maybe also tell the user he/she can get rid of the test-suite afterwards, by deleting the test-suite/ sub-directory. > diff -r 48e107b35ba9 -r 7e1196581995 scripts/build/test_suite.sh > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/scripts/build/test_suite.sh Sat May 15 16:45:35 2010 +0200 > @@ -0,0 +1,41 @@ > +# Wrapper to build the test suite facilities > +# > +# Current assumption: test suites are independent of each other > +# - no order handling required. That's perfectly fine with me. I don't expect dependencies between the test-suites at build-time, nor at run-time. > +# List all test suite facilities, and parse their scripts > +CT_TEST_SUITE_FACILITY_LIST= > +for f in "${CT_LIB_DIR}/scripts/build/test_suite/"*.sh; do > + _f="$(basename "${f}" .sh)" > + __f="CT_TEST_SUITE_${_f}" > + __f=`echo ${__f} | tr "[:lower:]" "[:upper:]"` > + if [ "${!__f}" = "y" ]; then > + CT_DoLog DEBUG "Enabling test suite '${_f}'" > + . "${f}" > + CT_TEST_SUITE_FACILITY_LIST="${CT_TEST_SUITE_FACILITY_LIST} ${_f}" > + else > + CT_DoLog DEBUG "Disabling test suite '${_f}'" > + fi > +done > + > +# Download the test suite facilities > +do_test_suite_get() { > + for f in ${CT_TEST_SUITE_FACILITY_LIST}; do > + do_test_suite_${f}_get > + done > +} > + > +# Extract and patch the test suite facilities > +do_test_suite_extract() { > + for f in ${CT_TEST_SUITE_FACILITY_LIST}; do > + do_test_suite_${f}_extract > + done > +} > + > +# Build the test suite facilities > +do_test_suite() { > + for f in ${CT_TEST_SUITE_FACILITY_LIST}; do > + do_test_suite_${f}_build > + done > +} > + > diff -r 48e107b35ba9 -r 7e1196581995 scripts/build/test_suite/gcc.sh > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/scripts/build/test_suite/gcc.sh Sat May 15 16:45:35 2010 +0200 > @@ -0,0 +1,36 @@ > +# This file adds the functions to build the GCC test suite > +# Copyright 2010 DorÃDevelopment > +# Created by Martin Lund <mgl@doredevelopment.dk> > +# Licensed under the GPL v2. See COPYING in the root of this package > + > +do_test_suite_gcc_get() { :; } > +do_test_suite_gcc_extract() { :; } > +do_test_suite_gcc_build() { :; } > + > +# Overide functions depending on configuration > +if [ "${CT_TEST_SUITE_GCC}" = "y" ]; then > + > +do_test_suite_gcc_build() { > + > + CT_DoStep INFO "Installing GCC test suite" > + > + CT_DoExecLog ALL mkdir -p "${CT_TEST_SUITE_DIR}/gcc-test-suite/gcc-${CT_CC_VERSION}/gcc" > + CT_DoExecLog ALL cp "${CT_TOP_DIR}/contrib/gcc-test-suite/Makefile" \ > + "${CT_TEST_SUITE_DIR}/gcc-test-suite" s/CT_TOP_DIR/CT_LIB_DIR/ > + CT_DoExecLog ALL cp "${CT_TOP_DIR}/contrib/gcc-test-suite/default.cfg" \ > + "${CT_TEST_SUITE_DIR}/gcc-test-suite" s/CT_TOP_DIR/CT_LIB_DIR/ > + CT_DoExecLog ALL cp "${CT_TOP_DIR}/contrib/gcc-test-suite/README" \ s/CT_TOP_DIR/CT_LIB_DIR/ > + "${CT_TEST_SUITE_DIR}/gcc-test-suite" > + CT_DoExecLog ALL cp -r "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/testsuite" \ > + "${CT_TEST_SUITE_DIR}/gcc-test-suite/gcc-${CT_CC_VERSION}/gcc" > + sed "s/DG_GCC_VERSION .*/DG_GCC_VERSION = ${CT_CC_VERSION}/g" \ > + ${CT_TEST_SUITE_DIR}/gcc-test-suite/default.cfg > \ > + ${CT_TEST_SUITE_DIR}/gcc-test-suite/default.cfg.tmp DG_GCC_VERSION useless. > + sed "s/DG_TARGET .*/DG_TARGET = ${CT_TARGET}/g" \ > + ${CT_TEST_SUITE_DIR}/gcc-test-suite/default.cfg.tmp > \ > + ${CT_TEST_SUITE_DIR}/gcc-test-suite/default.cfg > + CT_DoExecLog ALL rm -f "${CT_TEST_SUITE_DIR}/gcc-test-suite/default.cfg.tmp" > + CT_EndStep > +} > + > +fi # CT_TEST_SUITE_GCC > diff -r 48e107b35ba9 -r 7e1196581995 scripts/crosstool-NG.sh.in > --- a/scripts/crosstool-NG.sh.in Fri Apr 30 22:25:45 2010 +0200 > +++ b/scripts/crosstool-NG.sh.in Sat May 15 16:45:35 2010 +0200 > @@ -125,6 +125,7 @@ > . "${CT_LIB_DIR}/scripts/build/libc/${CT_LIBC}.sh" > . "${CT_LIB_DIR}/scripts/build/cc/${CT_CC}.sh" > . "${CT_LIB_DIR}/scripts/build/debug.sh" > +. "${CT_LIB_DIR}/scripts/build/test_suite.sh" > > # Target tuple: CT_TARGET needs a little love: > CT_DoBuildTargetTuple > @@ -159,6 +160,9 @@ > CT_COMPLIBS_DIR="${CT_BUILD_DIR}/static" > fi > > +# Compute test suite install directory > +CT_TEST_SUITE_DIR=${CT_INSTALL_DIR}/test-suite > + > # Note: we'll always install the core compiler in its own directory, so as to > # not mix the two builds: core and final. > CT_CC_CORE_STATIC_PREFIX_DIR="${CT_BUILD_DIR}/${CT_CC}-core-static" > @@ -519,6 +523,7 @@ > do_cc_get > do_libc_get > do_debug_get > + do_test_suite_get > CT_EndStep > fi > > @@ -549,6 +554,7 @@ > do_cc_extract > do_libc_extract > do_debug_extract > + do_test_suite_extract > CT_EndStep > fi > fi > @@ -597,5 +603,6 @@ > > [ "${CT_LOG_FILE_COMPRESS}" = y ] && bzip2 -9 "${CT_LOG_FILE}" > [ "${CT_INSTALL_DIR_RO}" = "y" ] && chmod -R a-w "${CT_INSTALL_DIR}" > +[ "${CT_TEST_SUITE}" = "y" ] && chmod -R a+w "${CT_TEST_SUITE_DIR}" > > trap - EXIT > diff -r 48e107b35ba9 -r 7e1196581995 steps.mk > --- a/steps.mk Fri Apr 30 22:25:45 2010 +0200 > +++ b/steps.mk Sat May 15 16:45:35 2010 +0200 > @@ -39,6 +39,7 @@ > libelf_target \ > binutils_target \ > debug \ > + test_suite \ > finish \ > > # Make the list available to sub-processes (scripts/crosstool-NG.sh needs it) Do you want to handle these issues, or do you want me to munge your patch? Regards, Yann E. MORIN. -- .-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' -- For unsubscribe information see http://sourceware.org/lists.html#faq
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |