From 5badbf419cd21ee68583270ab6191d4a89ebf495 Mon Sep 17 00:00:00 2001 From: David Disseldorp Date: Mon, 16 Apr 2012 01:00:46 +0200 Subject: [PATCH 1/1] build: rebuild idl if the pidl compiler is changed In determining whether to compile a given .idl source file, build_idl.sh currently checks: a) that all build output files exist b) build output files are newer than their corresponding .idl source The .idl is rebuilt if either of the above conditions is false. This logic does not catch the case where the pidl compiler itself is changed. An IDL rebuild should occur in such a case. https://bugzilla.samba.org/show_bug.cgi?id=8865 --- librpc/build_idl.sh | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/librpc/build_idl.sh b/librpc/build_idl.sh index afab91044be..23d7b3e329d 100755 --- a/librpc/build_idl.sh +++ b/librpc/build_idl.sh @@ -15,16 +15,17 @@ cd ${srcdir} [ -d $PIDL_OUTPUTDIR ] || mkdir -p $PIDL_OUTPUTDIR || exit 1 -PIDL="$PIDL $ARGS" +PIDL_CMD="$PIDL $ARGS" if [ $FULL = 1 ]; then echo "Rebuilding all idl files" - $PIDL $IDL_FILES || exit 1 + $PIDL_CMD $IDL_FILES || exit 1 exit 0 fi ## -## Find newer files rather than rebuild all of them +## Find newer files rather than rebuild all of them. Also handle the case +## where the pidl compiler itself is newer. ## list="" @@ -42,6 +43,10 @@ for f in ${IDL_FILES}; do list="$list $f" break } + test "`find $PIDL -newer $PIDL_OUTPUTDIR/$o`" != "" && { + list="$list $f" + break + } done done @@ -50,8 +55,8 @@ done ## if [ "x$list" != x ]; then - # echo "${PIDL} ${list}" - $PIDL $list || exit 1 + # echo "${PIDL_CMD} ${list}" + $PIDL_CMD $list || exit 1 fi cd ${oldpwd} -- 2.25.1