Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Compilation error #89

Open
idrismike opened this issue Apr 18, 2018 · 15 comments
Open

Compilation error #89

idrismike opened this issue Apr 18, 2018 · 15 comments

Comments

@idrismike
Copy link

idrismike commented Apr 18, 2018

java version "1.8.0_101", scala version 2.11.7, Ubuntu 14.04
I am trying to compile the backend as per the readme file. but i get the following error.
Steps i did:

  1. Simple Setup:
    a. cloned the repository "dbtoaster-backend"
    b. cloned the "frontend" repository
    c. copied the "bin/dbtoaster-frontend" and "examples/{queries,data}" to the backend repository
    d. Ran the command
    $sbt 'toast -l cpp examples/queries/simple/r_count.sql'
    And i get the following error.
    [info] Running ddbt.Compiler -l cpp examples/queries/simple/r_count.sql'
    [error] java.io.IOException: Cannot run program "/home/xyz/dbtoaster/bin/dbtoaster_release" (in directory "/home/xyz/dbtoaster"): error=2, No such file or directory
    [error] at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
    [error] at java.lang.Runtime.exec(Runtime.java:620)
    [error] at ddbt.lib.Utils$.exec(Utils.scala:326)
    [error] at ddbt.Compiler$.toast(Compiler.scala:335)
    [error] at ddbt.Compiler$.toast(Compiler.scala:356)
    [error] at ddbt.Compiler$.main(Compiler.scala:597)
    [error] at ddbt.Compiler.main(Compiler.scala)
    [error] Caused by: java.io.IOException: error=2, No such file or directory
    [error] at java.lang.UNIXProcess.forkAndExec(Native Method)
    [error] at java.lang.UNIXProcess.(UNIXProcess.java:248)
    [error] at java.lang.ProcessImpl.start(ProcessImpl.java:134)
    [error] at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
    [error] ... 6 more
    [error]

The error is the release and the dbtoaster directories are not the same.

@losmi83
Copy link
Contributor

losmi83 commented Apr 18, 2018

The frontend binary is missing. First, pull the latest version from this repository. There are two options to fix this problem:

  1. Download the latest binary from dbtoaster.github.io and copy bin/dbtoaster_frontend and examples/{data,queries} to dbtoaster-backend; keep the same paths, i.e., dbtoaster-backend/bin/dbtoaster_frontend.
    Run sbt 'toast -l cpp examples/queries/simple/r_count.sql' to verify that everything is OK.

  2. Use the extended setup from README to link with the frontend repo. Create ddbtoaster/conf/ddbt.properties and set ddbt.base_repo. The procedure is explained on the (now updated) README page.
    Run sbt 'toast -l cpp test/queries/simple/r_count.sql' to verify that everything is OK.

losmi83 added a commit that referenced this issue Apr 23, 2018
@idrismike
Copy link
Author

idrismike commented Apr 25, 2018

Thanks it worked..
Could you please tell, if i can see how you generate M3 code in the frontend. Because at the moment, i dont see anyway how M3 is bring generated in DBToaster? Or it is not open-sourced?

@mdashti
Copy link
Collaborator

mdashti commented Apr 25, 2018

It can be done by passing m3 as the target language, e.g.:

sbt 'toast -l m3 examples/queries/simple/r_count.sql'

@idrismike
Copy link
Author

Thanks for your reply.
However, i am asking about the code that transforms query into an internal calculus and then generates the internal language (M3). The code (library) that generates M3, not the command to generate M3.

@mdashti
Copy link
Collaborator

mdashti commented Apr 25, 2018

@idrismike Here is the repo for the DBToaster frontend: https://github.com/dbtoaster/dbtoaster-a5

@idrismike
Copy link
Author

@mdashti thank you.
When i generate the Scala code using the backend and frontend, the code uses "GenericEntry", the class does not exist in the generated code and it does not exist in the libraries as well. could you tell what libraries/jars i need to include in the project.
I see that the class "GenericEntry" only exists when i generate the code using the backend and frontend both. for example using the command:
sbt 'toast -l scala examples/queries/simple/r_count.sql -o r_test.scala'
However, if i generate simply using the frontend, then the generated code has "SEntry" like case classes, and it works, for example using the command:
sbt bin/dbtoaster -l scala examples/queries/simple/r_count.sql -o r_test.scala
Thank you in advance.

@mdashti
Copy link
Collaborator

mdashti commented Apr 26, 2018

@idrismike Here is the GenericEntry code:

class GenericEntry(var map: mutable.HashMap[Int, Any], var n: Int, var isSampleEntry: Boolean) extends Entry(n) {
def this(n: Int) = this(new mutable.HashMap[Int, Any], n, false)
def update(i: Int, v: Any): Unit = map.put(i, v)
def increase(i: Int, v: Any) = v match {
case _: Int => if (map.contains(i)) map.put(i, map.get(i).get.asInstanceOf[Int] + v.asInstanceOf[Int]) else map.put(i, v)
case _: Double => if (map.contains(i)) map.put(i, map.get(i).get.asInstanceOf[Double] + v.asInstanceOf[Double]) else map.put(i, v);
case _: Long => if (map.contains(i)) map.put(i, map.get(i).get.asInstanceOf[Long] + v.asInstanceOf[Long]) else map.put(i, v)
case _: String => if (map.contains(i)) map.put(i, map.get(i).get.asInstanceOf[String] + v.asInstanceOf[String]) else map.put(i, v)
}
def +=(i: Int, v: Any) = increase(i, v)
def decrease(i: Int, v: Any) = v match {
case _: Int => if (map.contains(i)) map.put(i, map.get(i).asInstanceOf[Int] - v.asInstanceOf[Int]) else map.put(i, -v.asInstanceOf[Int])
case _: Double => if (map.contains(i)) map.put(i, map.get(i).asInstanceOf[Double] - v.asInstanceOf[Double]) else map.put(i, -v.asInstanceOf[Double])
case _: Long => if (map.contains(i)) map.put(i, map.get(i).asInstanceOf[Long] - v.asInstanceOf[Long]) else map.put(i, -v.asInstanceOf[Long])
}
def -=(i: Int, v: Any) = decrease(i, v)
def get[E](i: Int) = map.get(i).get.asInstanceOf[E]
def copy: GenericEntry = new GenericEntry(map.clone, map.size, isSampleEntry)
override def copyFrom(e: Entry) = {
val that = e.asInstanceOf[GenericEntry]
map = that.map
n = that.n
isSampleEntry = that.isSampleEntry
}
override def toString = map.mkString("[", ", ", "]")
}

The generated Scala code by the DBToaster frontend is only used for testing purposes. Please use the DBToaster backend (i.e., this repo) to generate Scala/C++ code.

As a side note, you also need to enable optimizations to get the code with the highest performance. You can do that by using -O3 flag. Here is the full list of optimizations: https://github.com/dbtoaster/dbtoaster-backend/blob/master/ddbtoaster/src/Compiler.scala#L165-L189

@idrismike
Copy link
Author

idrismike commented Apr 27, 2018

@mdashti all working fine... But here is the problem.
I generated scala code for the following query 1) using the frontend only (https://dbtoaster.github.io/dist/dbtoaster_linux_3387.tgz) 2) using the backend (i.e. this repo).
Query: select * from R,S where R.B=S.B (simple query R join S)
used the simple dataset in the examples/data/simple/{r.dat,s.dat}
The first code returns correct result (generated from the frontend(testing)) as follows:
(1,3,3,1) -> 1
(1,3,3,2) -> 1
(2,1,1,5) -> 1
(2,3,3,1) -> 2
(2,3,3,2) -> 2
(3,4,4,1) -> 1
(3,4,4,3) -> 1
(3,4,4,5) -> 2
(4,2,2,3) -> 2
(4,2,2,4) -> 2
(4,5,5,2) -> 1
(5,3,3,1) -> 1
(5,3,3,2) -> 1
(5,5,5,2) -> 1

The Second code (by using backend) generated empty result.

(Map(),List(R_A, R_B, S_B, S_C))

BUT, when i avoid the "execute" method and manually call "OnAddR" and "OnAddS" methods, i get the following output by manually printing the "COUNT" using the foreach as follows:
Manual Call ( it is the same data in examples/data/simple/{r.dat,s.dat}:
val x = new RSBase
x.onAddR(1,3)
x.onAddR(4,2)
x.onAddR(2,1)
x.onAddR(5,3)
x.onAddR(3,4)
x.onAddR(2,3)
x.onAddR(5,5)
x.onAddR(4,5)
x.onAddR(2,3)
x.onAddR(4,2)
x.onAddS(4,3)
x.onAddS(3,2)
x.onAddS(4,1)
x.onAddS(5,2)
x.onAddS(2,3)
x.onAddS(4,5)
x.onAddS(2,4)
x.onAddS(3,1)
x.onAddS(1,5)
x.onAddS(4,5)
x.COUNT.foreach{t=>
println(t)
}

Output: (I can not understand how this output is). this is the output from the code generated using backend generated code pasted below (end of the comment).
[2 -> 4, 5 -> 2, 4 -> 5, 1 -> 3, 3 -> 4]
[2 -> 1, 5 -> 1, 4 -> 5, 1 -> 2, 3 -> 1]
[2 -> 3, 5 -> 1, 4 -> 1, 1 -> 1, 3 -> 3]
[2 -> 3, 5 -> 1, 4 -> 1, 1 -> 5, 3 -> 3]
[2 -> 3, 5 -> 2, 4 -> 1, 1 -> 2, 3 -> 3]
[2 -> 2, 5 -> 2, 4 -> 4, 1 -> 4, 3 -> 2]
[2 -> 2, 5 -> 2, 4 -> 3, 1 -> 4, 3 -> 2]
[2 -> 5, 5 -> 1, 4 -> 2, 1 -> 5, 3 -> 5]
[2 -> 5, 5 -> 1, 4 -> 2, 1 -> 4, 3 -> 5]
[2 -> 4, 5 -> 1, 4 -> 1, 1 -> 3, 3 -> 4]
[2 -> 3, 5 -> 1, 4 -> 2, 1 -> 1, 3 -> 3]
[2 -> 3, 5 -> 1, 4 -> 2, 1 -> 5, 3 -> 3]
[2 -> 3, 5 -> 2, 4 -> 2, 1 -> 2, 3 -> 3]
[2 -> 4, 5 -> 1, 4 -> 3, 1 -> 3, 3 -> 4]

The result of COUNT in this case when printed is not understandable (or not explained). could you please help in that.
Thank you.
The code is as follows:
`

object RS {
import Helper._

def execute(args: Array[String], f: List[Any] => Unit) =
bench(args, (dataset: String, parallelMode: Int, timeout: Long, batchSize: Int) => run[RS](
Seq(
(new java.io.FileInputStream("r.dat"),new Adaptor.CSV("R","int,int","\Q,\E", "insert"),Split()),
(new java.io.FileInputStream("s.dat"),new Adaptor.CSV("S","int,int","\Q,\E", "insert"),Split())
),
parallelMode, timeout, batchSize), f)

def main(args: Array[String]) {
//manual entries
val x = new RSBase
x.onAddR(1,3)
x.onAddR(4,2)
x.onAddR(2,1)
x.onAddR(5,3)
x.onAddR(3,4)
x.onAddR(2,3)
x.onAddR(5,5)
x.onAddR(4,5)
x.onAddR(2,3)
x.onAddR(4,2)
x.onAddS(4,3)
x.onAddS(3,2)
x.onAddS(4,1)
x.onAddS(5,2)
x.onAddS(2,3)
x.onAddS(4,5)
x.onAddS(2,4)
x.onAddS(3,1)
x.onAddS(1,5)
x.onAddS(4,5)
x.COUNT.foreach{t=>
println(t)
}
println("Executing ActorSystem")
val argMap = parseArgs(args)
var t:Any = null
execute(args, (res: List[Any]) => {
if (!argMap.contains("noOutput")) {
println("")
println("\n" + M3Map.toStr(res(0), List("R_A", "R_B", "S_B", "S_C"))+"\n" + "\n")
val t = res(0)
println("")
}
})

}
}
class RSBase {
import RS._
import ddbt.lib.Functions._

val x157 = Array[EntryIdx[GenericEntry]](EntryIdx.genericOps(List(1, 2, 3, 4)))
val COUNT = new Store[GenericEntry](1, x157);
val COUNTIdx0 = COUNT.index(0, IHash, true, -1)
val x162 = Array[EntryIdx[GenericEntry]](EntryIdx.genericOps(List(1, 2, 3)))
val COUNT_mS1 = new Store[GenericEntry](1, x162);
val COUNT_mS1Idx0 = COUNT_mS1.index(0, IHash, true, -1)
val x167 = Array[EntryIdx[GenericEntry]](EntryIdx.genericOps(List(1, 2)))
val COUNT_mR1 = new Store[GenericEntry](1, x167);
val COUNT_mR1Idx0 = COUNT_mR1.index(0, IHash, true, -1)

def onAddR(r_a:Int, r_b:Int) {
{
val x6 = GenericEntry("SteSampleSEntry", 1, r_b);
COUNT_mR1.sliceCopy(0, x6, ({ x7: GenericEntry => {
val x8 = x7.getInt;
val x9 = x7.getInt;
val x11 = GenericEntry("SteNewSEntry", r_a, r_b, r_b, x8, (1.*(x9)));
val x12 = x11.getInt;
if((x12.==(0))) {
} else {
val x14 = COUNT.getCopy(0, x11)
if((x14.==(null))) {
COUNT.unsafeInsert(x11)
} else {
x14.+=(5, x12)
val x18 = x14.getInt;
if((x18.==(0))) {
COUNT.deleteCopy(x14)
} else {
COUNT.updateCopy(x14)
}
}
}

  }
  }))
  val x27 = GenericEntry("SteNewSEntry", r_a, r_b, r_b, 1);
  val x28 = x27.get[Int](4);
  if((x28.==(0))) {
  } else {
    val x30 = COUNT_mS1.getCopy(0, x27)
    if((x30.==(null))) {
      COUNT_mS1.unsafeInsert(x27)
    } else {
      x30.+=(4, x28)
      val x34 = x30.get[Int](4);
      if((x34.==(0))) {
        COUNT_mS1.deleteCopy(x30)
      } else {
        COUNT_mS1.updateCopy(x30)
      }
    }
  }

}

}
def onDelR(r_a:Int, r_b:Int) {
{
val x43 = GenericEntry("SteSampleSEntry", 1, r_b);
COUNT_mR1.sliceCopy(0, x43, ({ x44: GenericEntry => {
val x45 = x44.getInt;
val x46 = x44.getInt;
val x49 = GenericEntry("SteNewSEntry", r_a, r_b, r_b, x45, (1.((x46.(-1)))));
val x50 = x49.getInt;
if((x50.==(0))) {
} else {
val x52 = COUNT.getCopy(0, x49)
if((x52.==(null))) {
COUNT.unsafeInsert(x49)
} else {
x52.+=(5, x50)
val x56 = x52.getInt;
if((x56.==(0))) {
COUNT.deleteCopy(x52)
} else {
COUNT.updateCopy(x52)
}
}
}

  }
  }))
  val x66 = GenericEntry("SteNewSEntry", r_a, r_b, r_b, (1.*(-1)));
  val x67 = x66.get[Int](4);
  if((x67.==(0))) {
  } else {
    val x69 = COUNT_mS1.getCopy(0, x66)
    if((x69.==(null))) {
      COUNT_mS1.unsafeInsert(x66)
    } else {
      x69.+=(4, x67)
      val x73 = x69.get[Int](4);
      if((x73.==(0))) {
        COUNT_mS1.deleteCopy(x69)
      } else {
        COUNT_mS1.updateCopy(x69)
      }
    }
  }

}

}
def onAddS(s_b:Int, s_c:Int) {
{
val x82 = GenericEntry("SteSampleSEntry", 3, s_b);
COUNT_mS1.sliceCopy(0, x82, ({ x83: GenericEntry => {
val x84 = x83.getInt;
val x85 = x83.getInt;
val x86 = x83.getInt;
val x87 = GenericEntry("SteNewSEntry", x84, x85, s_b, s_c, x86);
val x88 = x87.getInt;
if((x88.==(0))) {
} else {
val x90 = COUNT.getCopy(0, x87)
if((x90.==(null))) {
COUNT.unsafeInsert(x87)
} else {
x90.+=(5, x88)
val x94 = x90.getInt;
if((x94.==(0))) {
COUNT.deleteCopy(x90)
} else {
COUNT.updateCopy(x90)
}
}
}

  }
  }))
  val x103 = GenericEntry("SteNewSEntry", s_b, s_c, 1);
  val x104 = x103.get[Int](3);
  if((x104.==(0))) {
  } else {
    val x106 = COUNT_mR1.getCopy(0, x103)
    if((x106.==(null))) {
      COUNT_mR1.unsafeInsert(x103)
    } else {
      x106.+=(3, x104)
      val x110 = x106.get[Int](3);
      if((x110.==(0))) {
        COUNT_mR1.deleteCopy(x106)
      } else {
        COUNT_mR1.updateCopy(x106)
      }
    }
  }

}

}
def onDelS(s_b:Int, s_c:Int) {
{
val x119 = GenericEntry("SteSampleSEntry", 3, s_b);
COUNT_mS1.sliceCopy(0, x119, ({ x120: GenericEntry => {
val x121 = x120.getInt;
val x122 = x120.getInt;
val x123 = x120.getInt;
val x125 = GenericEntry("SteNewSEntry", x121, x122, s_b, s_c, (x123.*(-1)));
val x126 = x125.getInt;
if((x126.==(0))) {
} else {
val x128 = COUNT.getCopy(0, x125)
if((x128.==(null))) {
COUNT.unsafeInsert(x125)
} else {
x128.+=(5, x126)
val x132 = x128.getInt;
if((x132.==(0))) {
COUNT.deleteCopy(x128)
} else {
COUNT.updateCopy(x128)
}
}
}

  }
  }))
  val x141 = GenericEntry("SteNewSEntry", s_b, s_c, -1);
  val x142 = x141.get[Int](3);
  if((x142.==(0))) {
  } else {
    val x144 = COUNT_mR1.getCopy(0, x141)
    if((x144.==(null))) {
      COUNT_mR1.unsafeInsert(x141)
    } else {
      x144.+=(3, x142)
      val x148 = x144.get[Int](3);
      if((x148.==(0))) {
        COUNT_mR1.deleteCopy(x144)
      } else {
        COUNT_mR1.updateCopy(x144)
      }
    }
  }

}

}
def onSystemReady() {
{

}

}

}

class RS extends RSBase with Actor {
import ddbt.lib.Messages._
import ddbt.lib.Functions._
import RS._

var t0 = 0L; var t1 = 0L; var tN = 0L; var tS = 0L

def receive_skip: Receive = {
case EndOfStream | GetSnapshot(_) =>
sender ! (StreamStat(t1 - t0, tN, tS), List({ val COUNT_node_mres = new scala.collection.mutable.HashMap(Int, Int, Int, Int),Int; COUNT.foreach{e => COUNT_node_mres += (((e.get(1), e.get(2), e.get(3), e.get(4)),e.get(5))) }; COUNT_node_mres.toMap }))
case _ => tS += 1L
}

def receive = {
case TupleEvent(TupleInsert, "R", List(v0:Int,v1:Int)) => if (t1 > 0 && (tN & 127) == 0) { val t = System.nanoTime; if (t > t1) { t1 = t; tS = 1L; context.become(receive_skip) } }; tN += 1L; onAddR(v0,v1)
case TupleEvent(TupleDelete, "R", List(v0:Int,v1:Int)) => if (t1 > 0 && (tN & 127) == 0) { val t = System.nanoTime; if (t > t1) { t1 = t; tS = 1L; context.become(receive_skip) } }; tN += 1L; onDelR(v0,v1)
case TupleEvent(TupleInsert, "S", List(v0:Int,v1:Int)) => if (t1 > 0 && (tN & 127) == 0) { val t = System.nanoTime; if (t > t1) { t1 = t; tS = 1L; context.become(receive_skip) } }; tN += 1L; onAddS(v0,v1)
case TupleEvent(TupleDelete, "S", List(v0:Int,v1:Int)) => if (t1 > 0 && (tN & 127) == 0) { val t = System.nanoTime; if (t > t1) { t1 = t; tS = 1L; context.become(receive_skip) } }; tN += 1L; onDelS(v0,v1)
case StreamInit(timeout) =>

  onSystemReady();
  t0 = System.nanoTime;
  if (timeout > 0) t1 = t0 + timeout * 1000000L
case EndOfStream | GetSnapshot(_) =>
  t1 = System.nanoTime;
  sender ! (StreamStat(t1 - t0, tN, tS), List({ val COUNT_node_mres = new scala.collection.mutable.HashMap[(Int, Int, Int, Int),Int](); COUNT.foreach{e => COUNT_node_mres += (((e.get(1), e.get(2), e.get(3), e.get(4)),e.get(5))) }; COUNT_node_mres.toMap }))

}
}
`

@mdashti
Copy link
Collaborator

mdashti commented Apr 27, 2018

@sachinbjohn Can you have a look at this?

@sachinbjohn
Copy link
Collaborator

sachinbjohn commented Apr 27, 2018

The output is printing each GenericEntry instance. GenericEntry is implemented as a map from column number to value. For example, the first line [2 -> 4, 5 -> 2, 4 -> 5, 1 -> 3, 3 -> 4] represents an instance where the second column has value 4, the fifth column has value 2 and so on. To the best of my knowledege, the output from DBToaster front-end contains rows with the last column being the value and the other columns being the key (@mdashti please correct me if this is wrong). You can use this information to print the output in a better way.
x.COUNT.foreach{ t => { val kv = t.toList.sorted.map(_._2); println(kv.dropRight(1).mkString("(", "," , ")") + "->" + kv.last) } )

As for why the generated code returned an empty result, I do not know. I ran the same query on an earlier version of this project and I got results. I am attaching the generated code here, and I do see some differences with your code, although I'm not the right person to comment which of these changes resulted in the empty result

r_test.txt

@idrismike
Copy link
Author

Here is the problem.
When i generated the code again (i.e. after looking at your code in r_test.txt), the newly generated code ( I re-cloned the backend repo. to be sure it is latest) has all variables and their casting (i.e R_a, R_b, S_b, S_c) in "Int".. However, the code you sent has all of them in "Long".
When you run those with "Int" (attached r_test_int.txt), you get empty result. And, when you run those with "Long" (your sent code) you get correct result.
I changed the "Int" in the attached file to "Long" and it worked correctly. Therefore, i think with Ints it has some problem or so.
I thank you for your help and responses.
Have a good weekend.
r_test_int.txt

@losmi83
Copy link
Contributor

losmi83 commented Apr 27, 2018

The support for Int (and some other types) was added recently, nevertheless generated Scala code using Ints should produce correct results. My guess the problem here is that your Scala code is linked with jar files from the binary release, which includes an older version of the backend without the Int type.


Few comments on the above discussion:

@idrismike
Copy link
Author

While trying to generate the "release" myself, all works fine, but at the end of compilation, it fails because it can not find the file "readme" in dbtoaster-a5/../../website/Readme. See below the error "i am only pasting the last lines only showing the error"
....
Making Library Dependencies
make[1]: Entering directory /home/xyz/dbtoaster-a5/lib' make[1]: Nothing to be done for dependencies'.
make[1]: Leaving directory /home/xyz/dbtoaster-a5/lib' Linking DBToaster Top Linking DBToaster (Debug) Linking DBToaster (Optimized) make: Leaving directory /home/xyz/dbtoaster-a5'
copy dbt_release
copy README, LICENSE and CHANGELOG
java.lang.IllegalArgumentException: requirement failed: Source file '/home/xyz/dbtoaster-a5/../../website/README' does not exist.
at scala.Predef$.require(Predef.scala:233)
at sbt.IO$.copyFile(IO.scala:583)
at $b23ee0119292a29baeb3$$anonfun$$sbtdef$1$$anonfun$apply$1.copyFile$1(/home/xyz/dbtoaster-backend/build.sbt:92)
at $b23ee0119292a29baeb3$$anonfun$$sbtdef$1$$anonfun$apply$1.apply(/home/xyz/dbtoaster-backend/build.sbt:217)
at $b23ee0119292a29baeb3$$anonfun$$sbtdef$1$$anonfun$apply$1.apply(/home/xyz/dbtoaster-backend/build.sbt:89)
at sbt.Command$$anonfun$command$1$$anonfun$apply$1.apply(Command.scala:29)
at sbt.Command$$anonfun$command$1$$anonfun$apply$1.apply(Command.scala:29)
at sbt.Command$.process(Command.scala:92)
at sbt.MainLoop$$anonfun$1$$anonfun$apply$1.apply(MainLoop.scala:98)
at sbt.MainLoop$$anonfun$1$$anonfun$apply$1.apply(MainLoop.scala:98)
at sbt.State$$anon$1.process(State.scala:184)
at sbt.MainLoop$$anonfun$1.apply(MainLoop.scala:98)
at sbt.MainLoop$$anonfun$1.apply(MainLoop.scala:98)
at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
at sbt.MainLoop$.next(MainLoop.scala:98)
at sbt.MainLoop$.run(MainLoop.scala:91)
at sbt.MainLoop$$anonfun$runWithNewLog$1.apply(MainLoop.scala:70)
at sbt.MainLoop$$anonfun$runWithNewLog$1.apply(MainLoop.scala:65)
at sbt.Using.apply(Using.scala:24)
at sbt.MainLoop$.runWithNewLog(MainLoop.scala:65)
at sbt.MainLoop$.runAndClearLast(MainLoop.scala:48)
at sbt.MainLoop$.runLoggedLoop(MainLoop.scala:32)
at sbt.MainLoop$.runLogged(MainLoop.scala:24)
at sbt.StandardMain$.runManaged(Main.scala:53)
at sbt.xMain.run(Main.scala:28)
at xsbt.boot.Launch$$anonfun$run$1.apply(Launch.scala:109)
at xsbt.boot.Launch$.withContextLoader(Launch.scala:128)
at xsbt.boot.Launch$.run(Launch.scala:109)
at xsbt.boot.Launch$$anonfun$apply$1.apply(Launch.scala:35)
at xsbt.boot.Launch$.launch(Launch.scala:117)
at xsbt.boot.Launch$.apply(Launch.scala:18)
at xsbt.boot.Boot$.runImpl(Boot.scala:41)
at xsbt.boot.Boot$.main(Boot.scala:17)
at xsbt.boot.Boot.main(Boot.scala)
[error] java.lang.IllegalArgumentException: requirement failed: Source file '/home/xyz/dbtoaster-a5/../../website/README' does not exist.

@idrismike
Copy link
Author

@mdashti While compiling Scala LMS code, the dependency on EPFL#lms_2.11;0.3-SNAPSHOT: not found
could not be resolved. It says it could not found this.
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: UNRESOLVED DEPENDENCIES ::
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: EPFL#lms_2.11;0.3-SNAPSHOT: not found
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn]
[warn] Note: Unresolved dependencies path:
[warn] EPFL:lms_2.11:0.3-SNAPSHOT (/home/midris/dbtoaster-backend/ddbtoaster/lms/build.sbt#L10-36)
[warn] +- ch.epfl.data:dbtoaster-lms_2.11:3.0
sbt.ResolveException: unresolved dependency: EPFL#lms_2.11;0.3-SNAPSHOT: not found

@szarnyasg
Copy link
Contributor

szarnyasg commented May 15, 2018

@idrismike I am not an expert on DBToaster, but

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants