Make still doesn't work

Hi all.

I looked at the latest plugin and it said:

"IDEA X version. Improved performance. Fixed make."

I downloaded the latest idea x eap and scala plugin to see if make had been fixed.

On my project it hasn't :(

If I do a make, and then change nothing and just do another make straight after, the make takes about 10 seconds (this is with FSC on). Doing a make followed by a make with fsc turned off takes about 40 seconds!

Is there anything I can do to help fix this?

Thanks, Nick.

13 comments

There're two reasons why redundant make may be triggered:

  • IDEA-58735 Empty files with "compilable" extension always trigger recompilation
  • IDEA-58737 Files with directory/package mismatch always trigger recompilation


The latter issue is fixed in 96.1207 IDEA X build, while the former one has lower priority and won't be fixed soon.

So, ensure that you're using latest IDEA X EAP and that there's no .scala or .java files without type definitions (class, object) inside, like files with completely commented content (Scala scripts are OK).

0

Hi Pavel.

Thanks for the info.

I can only see

IntelliJ IDEA X EAP (build 96.1190), released on Sep 16, 2010

on

http://confluence.jetbrains.net/display/IDEADEV/IDEA+X+EAP

Where is build 96.1207?

I'll go through all my files and ensure they all have type definitions, and report back.

Thanks, Nick.

0

> Where is build 96.1207?
I hope the next EAP will be available soon.

> I'll go through all my files and ensure they all have type definitions, and report back.

Unless you use 96.1207+ version, you have to ensure that all package declarations match file placement inside directory structure and there's no "branched" nested packagings inside single file, like:

package foo
package bar {
     class X
}
package moo {
     class Y
}

You may add the following lines to idea/bin/log.xml and then check log file (profile/.IntelliJIdea10/system/log/idea.log) to easily find files that trigger recompilation:

<logger name="#com.intellij.compiler">
  <level value="DEBUG"/>
  <appender-ref ref="FILE"/>
</logger>

0

Thanks, I'll try once the new eap is released, and let you know the results!

Thanks, Nick.

0

Hello Pavel.

I'm afraid I don't know much about log4j. No matter where I put this snippet in the log.xml file I get an error when starting idea.

Where should I put it?

My current log.xml file looks like this:

<?xml version='1.0' encoding='ISO-8859-1' ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
  <appender name="CONSOLE-WARN" >
    <param name="target" value="System.err"/>
    <layout >
      <param name="ConversionPattern" value="[%7r] %6p - %30.30c - %m \n"/>
    </layout>
    <filter >
      <param name="LevelMin" value="WARN"/>
    </filter>
  </appender>

  <appender name="CONSOLE-DEBUG" >
    <layout >
      <param name="ConversionPattern" value="[%7r] %6p - %30.30c - %m \n"/>
    </layout>
    <filter >
      <param name="LevelMin" value="DEBUG"/>
      <param name="LevelMax" value="DEBUG"/>
    </filter>
  </appender>

  <appender name="CONSOLE-ALL" >
    <layout >
      <param name="ConversionPattern" value="[%7r] %6p - %30.30c - %m \n"/>
    </layout>
  </appender>

  <appender name="DIALOG" >
      <filter >
        <param name="LevelMin" value="INFO"/>
      </filter>
  </appender>

  <appender name="FILE" >
    <param name="MaxFileSize" value="1Mb"/>
    <param name="MaxBackupIndex" value="12"/>
    <param name="file" value="$LOG_DIR$/idea.log"/>
    <layout >
      <param name="ConversionPattern" value="%d [%7r] %6p - %30.30c - %m \n"/>
    </layout>
  </appender>

  <appender name="INCOMING_CHANGES_FILE" >
    <param name="MaxFileSize" value="1Mb"/>
    <param name="MaxBackupIndex" value="12"/>
    <param name="file" value="$LOG_DIR$/incoming.log"/>
    <layout >
      <param name="ConversionPattern" value="%d [%7r] %6p - %30.30c - %m \n"/>
    </layout>
  </appender>

  <root>
    <priority value="INFO"/>
    <appender-ref ref="DIALOG"/>
    <appender-ref ref="CONSOLE-WARN"/>    <!-- $COMMENT_LINE_FOR_TEST_MODE$ If a line contains such macro, it will be deleted then we start IDEA in JUnit Test mode -->
    <appender-ref ref="FILE"/>
  </root>
</log4j:configuration>


Thanks, Nick.
0

Try to place the snippet between last "appender" and "root" elements:

...
  </appender>

  <logger name="#com.intellij.compiler">
    <level value="DEBUG"/>
    <appender-ref ref="FILE"/>
  </logger>

  <root>
    <priority value="INFO"/>
...

0

EDIT: ignore - when I get rid of the "#" it works.


When I place that there, I get this output:


/apps/idea/ideax/idea-IU-98.117/bin$ ./idea.sh

Java HotSpot(TM) 64-Bit Server VM (build 17.0-b16, mixed mode)
log4j:ERROR Parsing error on line 55 and column 39
log4j:ERROR Attribute value "#com.intellij.compiler" of type ID must be a name.
log4j:ERROR Parsing error on line 55 and column 39
log4j:ERROR Attribute value "#com.intellij.compiler" of type ID must be a name.


Any ideas?

Thanks, Nick.

0

Unfortunately I can't see a list of the files that require compilation.

I've changed the logger to this:

<logger name="com.intellij.compiler">
    <level value="INFO"/>
    <appender-ref ref="FILENICK"/>
  </logger>



notice the appender ref was changed and and also I got rid of the "#" from before the logger name. I also changed the level to info.

I then specified FILENICK like so:

<appender name="FILENICK" >
    <param name="MaxFileSize" value="1Mb"/>
    <param name="MaxBackupIndex" value="12"/>
    <param name="file" value="$LOG_DIR$/ideaNICK.log"/>
    <layout >
      <param name="ConversionPattern" value="%d [%7r] %6p - %30.30c - %m \n"/>
    </layout>
  </appender>



So I would expect a list of files that idea thinks need recompilation to appear in ideaNICK.log. The file appears but stays empty.

Any idea on why I'm not getting anything written to the file?

Thanks, Nick.
0

Hello Nick,

You do need the # before the logger name.

Unfortunately I can't see a list of the files that require
compilation.

I've changed the logger to this:

<logger name="com.intellij.compiler">
<level value="INFO"/>
<appender-ref ref="FILENICK"/>
</logger>
notice the appender ref was changed and and also I got rid of the "#"
from before the logger name. I also changed the level to info.

I then specified FILENICK like so:

<appender name="FILENICK"
>
<param name="MaxFileSize" value="1Mb"/>
<param name="MaxBackupIndex" value="12"/>
<param name="file" value="$LOG_DIR$/ideaNICK.log"/>
<layout >
<param name="ConversionPattern" value="%d %6p - %30.30c -
%m \n"/>
</layout>
</appender>
So I would expect a list of files that idea thinks need recompilation
to appear in ideaNICK.log. The file appears but stays empty.

Any idea on why I'm not getting anything written to the file?

Thanks, Nick.

---
Original message URL:
http://devnet.jetbrains.net/message/5274737#5274737


--
Dmitry Jemerov
Development Lead
JetBrains, Inc.
http://www.jetbrains.com/
"Develop with Pleasure!"


0

Thanks Dmitry. I'm now getting output in my file.

I'm getting a lot of it!


I'm not sure what I should be looking for though...

I'm getting a lot of :

2010-10-12 11:46:52,245 [  61872]  DEBUG - iler.JavaCompilerParsingThread - LIne read: #[Server arguments: -verbose -deprecation -unchecked -g:vars -d /home/nick/workspace/ideax/starling/services/target/scala_2.8.0.final-local/classes -cp
.....
.rt.jar:/home/nick/apps/java/jdk1.6.0_21/jre/lib/jsse.jar:/home/nick/apps/java/jdk1.6.0_21/jre/lib/ext/sunpkcs11.jar:/home/nick/apps/java/jdk1.6.0_21/jre/lib/ext/dnsns.jar:/home/nick/apps/java/jdk1.6.0_21/jre/lib/ext/localedata.jar:/home/nick/apps/java/jdk1.6.0_21/jre/lib/charsets.jar:/home/nick/apps/java/jdk1.6.0_21/jre/lib/jce.jar:/home/nick/apps/java/jdk1.6.0_21/jre/lib/rt.jar:/home/nick/apps/java/jdk1.6.0_21/jre/lib/resources.jar:/home/nick/apps/java/jdk1.6.0_21/jre/lib/deploy.jar:/home/nick/apps/java/jdk1.6.0_21/jre/lib/plugin.jar:/home/nick/apps/java/jdk1.6.0_21/jre/lib/javaws.jar: /home/nick/workspace/ideax/starling/services/src/starling/pivot/model/PivotDecomposition.scala]#

and then

2010-10-12 11:46:52,245 [  61872]  DEBUG - iler.JavaCompilerParsingThread - LIne read: #[VM arguments: ]#
2010-10-12 11:46:52,246 [  61873]  DEBUG - iler.JavaCompilerParsingThread - LIne read: #[Temp directory: /tmp/scala-devel/nick]#
2010-10-12 11:46:52,249 [  61876]  DEBUG - iler.JavaCompilerParsingThread - LIne read: #[Port number: 34566]#
2010-10-12 11:46:52,265 [  61892]  DEBUG - iler.JavaCompilerParsingThread - LIne read: #[Connected to compilation daemon at port 34566]#
2010-10-12 11:46:52,379 [  62006]  DEBUG - iler.JavaCompilerParsingThread - LIne read: #[Starting new compile server instance because settings not equal]#



which looks a bit suspicious.

Does this mean that PivotDecomposition.scala is causing problems?


I also get things like this:

2010-10-12 11:46:53,950 [  63577]  DEBUG - iler.JavaCompilerParsingThread - LIne read: #[Generating icode for PivotTableModelTest.scala]#
2010-10-12 11:46:53,951 [  63578]  DEBUG - iler.JavaCompilerParsingThread - LIne read: #[Generate ICode from the AST in 40ms]#


Does this mean that PivotTableModelTest.scala is causing problems as well?

As I said, there is a lot of output and I don't really know what I'm looking for!

Thanks, Nick.
0

Look for #[parsing file.ext]# and #[Generating icode for file.ext]# patterns. All mentioned files are the cause of excess recompilation.

It's better to disable FSC during such an "investigation".

P.S the only known cause of recompilation for the latest IDEA X EAP (98.117) is IDEA-58735 (empty or commented files with "compilable" extension)

0

Thanks for the info.

I'm now seeing what I expected. I'll let you know how I get on.

0

I'm very happy to say:

MAKE NOW WORKS!

This makes my life a lot easier so thanks very much!

Nick.

0

Please sign in to leave a comment.