From: David Disseldorp Date: Sun, 15 Apr 2012 23:00:46 +0000 (+0200) Subject: build: rebuild idl if the pidl compiler is changed X-Git-Url: http://git.samba.org/?p=ddiss%2Fsamba.git;a=commitdiff_plain;h=5badbf419cd21ee68583270ab6191d4a89ebf495;hp=89e998412fe07a01f9c79330973f62d909dc2da2;ds=sidebyside 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 --- 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}