Edit

kc3-lang/libevent/test/rpcgen_wrapper.sh

Branch :

  • Show log

    Commit

  • Author : Ross Lagerwall
    Date : 2013-09-15 21:48:15
    Hash : 243386cc
    Message : rpcgen: Generate regress.gen.[c,h] in build rather than src dir Currently an out-of-tree build will either write to the src dir or reuse the existing regress.gen.[c,h]. But if building from a read-only git tree (or if the git dir is cleaned), these files will not exist and the build fails. So write the files to the build dir. If the system does not have python, the regress.gen.[c,h] will be used from the src dir if they exist.

  • test/rpcgen_wrapper.sh
  • #!/bin/sh
    # libevent rpcgen_wrapper.sh
    # Transforms event_rpcgen.py failure into success for make, only if
    # regress.gen.c and regress.gen.h already exist in $srcdir.  This
    # is needed for "make distcheck" to pass the read-only $srcdir build,
    # as with read-only sources fresh from tarball, regress.gen.[ch] will
    # be correct in $srcdir but unwritable.  This previously triggered
    # Makefile.am to create stub regress.gen.c and regress.gen.h in the
    # distcheck _build directory, which were then detected as leftover
    # files in the build tree after distclean, breaking distcheck.
    # Note that regress.gen.[ch] are not in fresh git clones, making
    # working Python a requirement for make distcheck of a git tree.
    
    exit_updated() {
    #    echo "Updated ${srcdir}/regress.gen.c and ${srcdir}/regress.gen.h"
        exit 0
    }
    
    exit_reuse() {
        echo "event_rpcgen.py failed, ${srcdir}/regress.gen.\[ch\] will be reused." >&2
        exit 0
    }
    
    exit_failed() {
        echo "Could not generate regress.gen.\[ch\] using event_rpcgen.sh" >&2
        exit 1
    }
    
    if [ -x /usr/bin/python2 ] ; then
      PYTHON2=/usr/bin/python2
    elif [ "x`which python2`" != x ] ; then
      PYTHON2=python2
    else
      PYTHON2=python
    fi
    
    srcdir=$1
    srcdir=${srcdir:-.}
    
    ${PYTHON2} ${srcdir}/../event_rpcgen.py --quiet ${srcdir}/regress.rpc \
                   test/regress.gen.h test/regress.gen.c
    
    case "$?" in
     0)
        exit_updated
        ;;
     *)
        test -r ${srcdir}/regress.gen.c -a -r ${srcdir}/regress.gen.h && \
    	exit_reuse
        exit_failed
        ;;
    esac