Hi Tom,

On Fri, 2006-03-31 at 15:30 -0700, Tom Tromey wrote:
> Index: ChangeLog
> from  Tom Tromey  <[EMAIL PROTECTED]>
> 
>       * lib/split-for-gcj.sh: Updated for multi-field format.
>       * lib/Makefile.am (CLEANFILES): Added classes.2.
>       * lib/gen-classlist.sh.in (GCJ): Removed.  Create classes.1 and
>       classes.2 using multiple fields.

This seems to cause a recompile every time in classpath/lib since
classes.2 is renamed to classes.1 here:

> +# FIXME: could be more efficient by constructing a series of greps.
>  for filexp in `cat tmp.omit`; do
>     grep -v ${filexp} < ${top_builddir}/lib/classes.1 > 
> ${top_builddir}/lib/classes.2
>     mv ${top_builddir}/lib/classes.2 ${top_builddir}/lib/classes.1

So the following test always results in new="true":

>  new=
> -if test -e ${top_builddir}/lib/classes; then
> -  p=`diff ${top_builddir}/lib/classes ${top_builddir}/lib/classes.1`
> +if test -e ${top_builddir}/lib/classes.2; then
> +  p=`diff ${top_builddir}/lib/classes.2 ${top_builddir}/lib/classes.1`
>    if test "$p" != ""; then
>      new="true"
> -    cp ${top_builddir}/lib/classes.1 ${top_builddir}/lib/classes
>    fi
>  else
>    new="true"
> -  cp ${top_builddir}/lib/classes.1 ${top_builddir}/lib/classes
>  fi

And that triggers the creation of a new classes file:
 
>  if test "$new" = "true"; then
> +  cp ${top_builddir}/lib/classes.1 ${top_builddir}/lib/classes.2
> +  # Strip the package part.
> +  sed -e 's/^[^ ]* //' -e 's, ,/,' < ${top_builddir}/lib/classes.1 \
> +     > ${top_builddir}/lib/classes

So even on a make install all files are recompiled to byte code with
this.

Does the following fix look sane to you?

2006-04-02  Mark Wielaard  <[EMAIL PROTECTED]>

        * lib/gen-classlist.sh.in: Use classes.tmp, not classes.2
        as temporary file name.

Cheers,

Mark

diff -u -r1.34 gen-classlist.sh.in
--- lib/gen-classlist.sh.in     31 Mar 2006 22:42:19 -0000      1.34
+++ lib/gen-classlist.sh.in     2 Apr 2006 18:40:13 -0000
@@ -72,8 +72,8 @@

 # FIXME: could be more efficient by constructing a series of greps.
 for filexp in `cat tmp.omit`; do
-   grep -v ${filexp} < ${top_builddir}/lib/classes.1 > 
${top_builddir}/lib/classes.2
-   mv ${top_builddir}/lib/classes.2 ${top_builddir}/lib/classes.1
+   grep -v ${filexp} < ${top_builddir}/lib/classes.1 > 
${top_builddir}/lib/classes.tmp
+   mv ${top_builddir}/lib/classes.tmp ${top_builddir}/lib/classes.1
 done



Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to