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.

评论操作 固定链接

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

请先登录再写评论。