How to build this plugin [!]

I'd like to do some development work for this plugin (intellij-scala).
However, I find myself unable to get it into a state that will compile.

So, what I want:
to build intellij-scala (branch "master") against IntelliJ Community Edition v14 (I have a clone on branch "master")

Path Variables that I have set:

  • CARDEA_HOME: <path to clone of intellij-community>
  • IDEA-14_HOME: <path to clone of intellij-community>
  • MAVEN_REPOSITORY: <home directory>/.m2/repository
  • SCALA_PLUGIN_HOME: <path to clone of intellij-scala>
  • SCALA_PLUGIN_LEDA: <path to clone of intellij-scala>

Step 1. Building IntelliJ Community Edition


I realize that building IntelliJ itself is not within the scope of this particular forum (or whether it's even required for building the Scala plugin), but I'm including it here for completeness.

I followed the steps at Check Out and Build Community Edition (checked out branch "master" which I believe points to version 14 of IntelliJ) and am trying to build it using Java 1.6.0_45 (on Windows)
I've tried building it from IDEA by issuing "Build >> Make Project". Issues with building this (if relevant):

  • I can't compile project "plugins/gradle" because there are refererences (all of which in plugins\gradle\src\org\jetbrains\plugins\gradle\service\project\data\ExternalProjectSerializer.java) to classes inside a package "com.esotericsoftware" which cannot be found, and doesn't seem to be in the module's dependencies. I noticed that the module ("community > plugins > gradle > gradle" in IDEA's project structure) has a dependency named "Kryo" that is undefined.
  • everything else seems fine


Step 2. Building the Scala plugin

Relevant pages on the wiki:


Notes:
  • I'm on the "master" git branch
  • am using a 1.7.0_45 JDK and I've added "lib/tools.jar" to its classpath, as I'm on Windows


I followed the instructions from the former wiki page, and I'm getting some compilation errors:

Information:Compilation completed with 12 errors and 0 warnings in 3 sec
Information:12 errors
Information:0 warnings
D:\work\ext\intellij-scala\compiler-settings\src\org\jetbrains\jps\incremental\scala\Client.scala
Error:(3, 38) object messages is not a member of package org.jetbrains.jps.incremental
import org.jetbrains.jps.incremental.messages.BuildMessage.Kind
                                     ^
Error:(10, 21) not found: type Kind
  def message(kind: Kind, text: String, source: Option[File] = None, line: Option[Long] = None, column: Option[Long] = None)
                    ^
Error:(13, 13) not found: value Kind
    message(Kind.ERROR, text, source, line, column)
            ^
Error:(17, 13) not found: value Kind
    message(Kind.WARNING, text, source, line, column)
            ^
Error:(21, 13) not found: value Kind
    message(Kind.INFO, text, source, line, column)
            ^
D:\work\ext\intellij-scala\compiler-settings\src\org\jetbrains\jps\incremental\scala\remote\Event.scala
Error:(5, 38) object messages is not a member of package org.jetbrains.jps.incremental
import org.jetbrains.jps.incremental.messages.BuildMessage.Kind
                                     ^
Error:(35, 31) not found: type Kind
case class MessageEvent(kind: Kind, text: String, source: Option[File], line: Option[Long], column: Option[Long]) extends Event
                              ^
Error:(6, 12) object intellij is not a member of package com
import com.intellij.openapi.util.io.FileUtil
           ^
Error:(27, 20) not found: value FileUtil
      val excess = FileUtil.loadTextAndClose(stream)
                   ^
D:\work\ext\intellij-scala\compiler-settings\src\org\jetbrains\jps\incremental\scala\remote\RemoteResourceOwner.scala
Error:(7, 12) object intellij is not a member of package com
import com.intellij.util.Base64Converter
           ^
Error:(8, 38) object messages is not a member of package org.jetbrains.jps.incremental
import org.jetbrains.jps.incremental.messages.BuildMessage.Kind
                                     ^
Error:(50, 41) not found: value Base64Converter
            val event = Event.fromBytes(Base64Converter.decode(data))
                                        ^


Can anyone help figure this out for me? :)
0
4 comments

master branch is for IDEA 13 yet, so if you want to build against IDEA, right now you need to use IDEA 13 (or you can checkour IDEA-14 branch). We will move it to IDEA 14 really soon.
As for compilation error, it looks a bit weird for me. Probably if you build IDEA from sources, something wasn't compiled succesfully (I mean JPS in IntelliJ IDEA). Try out for the beginning with raw IDEA installation.

Best regards,
Alexander Podkhalyuzin.

0

Thanks! I've managed to compile the IDEA-14 branch in the end.

The issue was that

  • CARDEA_HOME: <path to clone of intellij-community>
  • IDEA-14_HOME: <path to clone of intellij-community>


should have been pointing at a intellij-community installation, not at the source code.

0

We are going to move to SBT. And we have plans to implement one-click installation, when IntelliJ IDEA will be downloaded automatically. We still have a lot of problems with SBT, but I think we will workaround all of them, so things will be improved a lot.

Best regards,
Alexander Podkhalyuzin.

0

I'm getting the same error messages.

One particular issue, I'm what's the path suppose to be?

export "IDEA-14_HOME"=/Applications/IntelliJ\ IDEA\ 14\ CE.app
-bash: export: `IDEA-14_HOME=/Applications/IntelliJ IDEA 14 CE.app': not a valid identifier

is it really suppose to have a hyphen in the environment variable?

EDIT: Looks like I forgot to do a $ sbt downloadIdea

But now I'm still getting an error:

/Users/eric/Work/intellij-scala/src/org/jetbrains/plugins/scala/lang/psi/impl/toplevel/typedef/SyntheticMembersInjector.scala
Error:(6, 8) object ScalaCompilerSettings is not a member of package org.jetbrains.plugins.scala.project
import org.jetbrains.plugins.scala.project.ScalaCompilerSettings
       ^
Error:(31, 48) not found: value ScalaCompilerSettings
  private def needQQEmulation(e: PsiElement) = ScalaCompilerSettings.instanceIn(e.getProject).plugins.exists(_.contains("paradise_2.10"))
                                               ^


EDIT 2: Looks like this was broken in a recent patch, I pseudo fixed it: https://github.com/JetBrains/intellij-scala/pull/119

0

Please sign in to leave a comment.