Lift does SBT now!

76 views
Skip to first unread message

Indrajit Raychaudhuri

unread,
Aug 30, 2010, 11:25:30 AM8/30/10
to Lift
Folks,

We finally have SBT support in 2.x series. This would be part of the
stable milestone scheduled for this Wednesday.

What this means is:

a. Lift Framework has support for SBT out of the box. Just 'cd' to
framework and do 'sbt' to see all that you have.

b. The basic archetypes (excluding jpa related ones) have SBT support
built-in. Thus, after you survive past the 'mvn archetype:generate' test
you are in for the good life of 'sbt' and/or 'mvn'.

c. Since SBT is configured to pick up dependencies from pom.xml You can
keep moving back and forth between Maven and SBT. Pick you pill, but
just remember that they put their stuff in different location after the
build.

d. Building a module builds their dependencies as well. Thus,

> sbt "project lift-webkit" test

would run test on lift-util, lift-json, lift-actor and lift-common. This
guarantees the 'rightness' of the build unit. However, it is quite
different from the way we are used to in Maven.

Enjoy and post back your experience.

- Indrajit

NB:
1. Remind yourself to do 'sbt update' whenver you see dependencies not
resolving when you think it should.
2. The SBT plugins have not been activated yet. They would be done later
- a todo.
3. The examples don't have SBT either. They would be added eventually.
4. Simplified SBT launch script might not work for Lift. I use this:
java -Xss4m -Xmx3g -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=1g -jar
`dirname $0`/sbt-launch.jar "$@"

Mads Hartmann Jensen

unread,
Aug 30, 2010, 11:33:23 AM8/30/10
to lif...@googlegroups.com
Wohoo! Awesome work Indrajit. *high-five*

> --
> You received this message because you are subscribed to the Google Groups "Lift" group.
> To post to this group, send email to lif...@googlegroups.com.
> To unsubscribe from this group, send email to liftweb+u...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/liftweb?hl=en.
>

Heiko Seeberger

unread,
Aug 30, 2010, 11:39:09 AM8/30/10
to lif...@googlegroups.com
That's just TOOOO good!
Thanks a lot for that great job!

Heiko

--
You received this message because you are subscribed to the Google Groups "Lift" group.
To post to this group, send email to lif...@googlegroups.com.
To unsubscribe from this group, send email to liftweb+u...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/liftweb?hl=en.




--
Heiko Seeberger

Company: weiglewilczek.com
Blog: heikoseeberger.name
Follow me: twitter.com/hseeberger
OSGi on Scala: scalamodules.org
Lift, the simply functional web framework: liftweb.net
Stambecco, highly scalable computing: stambecco.org
Akka - Simpler Scalability, Fault-Tolerance, Concurrency & Remoting through Actors: akkasource.org

David Pollak

unread,
Aug 30, 2010, 12:08:11 PM8/30/10
to lif...@googlegroups.com
Excellent stuff!  Thanks for doing the heavy lifting and getting this done!

--
You received this message because you are subscribed to the Google Groups "Lift" group.
To post to this group, send email to lif...@googlegroups.com.
To unsubscribe from this group, send email to liftweb+u...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/liftweb?hl=en.




--
Lift, the simply functional web framework http://liftweb.net
Beginning Scala http://www.apress.com/book/view/1430219890
Follow me: http://twitter.com/dpp
Blog: http://goodstuff.im
Surf the harmonics

TylerWeir

unread,
Aug 30, 2010, 11:53:45 AM8/30/10
to Lift
Huzzah!

On Aug 30, 11:39 am, Heiko Seeberger <heiko.seeber...@googlemail.com>
wrote:
> That's just TOOOO good!
> Thanks a lot for that great job!
>
> Heiko
>
> > liftweb+u...@googlegroups.com<liftweb%2Bunsu...@googlegroups.com>
> > .

Timothy Perrett

unread,
Aug 30, 2010, 2:43:17 PM8/30/10
to lif...@googlegroups.com
Excellent - how were the publishing issues with maven resolved? Is the CI still being done through maven on hudson?

Cheers, Tim

> --
> You received this message because you are subscribed to the Google Groups "Lift" group.
> To post to this group, send email to lif...@googlegroups.com.

> To unsubscribe from this group, send email to liftweb+u...@googlegroups.com.

Indrajit Raychaudhuri

unread,
Aug 31, 2010, 2:23:01 PM8/31/10
to lif...@googlegroups.com

Timothy Perrett wrote:
> Excellent - how were the publishing issues with maven resolved? Is the CI still being done through maven on hudson?

Publish will work, *sans the <artifact>.pom*. So if you configure
~/.ivy2/.credentials with Nexus details (realm, host, user, password)
you would be able to upload. But yes, the original problem remains.

That said, in immediate term didn't want to destabilize the CI/Hudson
arrangement that we already have. Thus publishing to scala-tools remains
a CI/Hudson (and thus Maven deal).

- Indrajit

Timothy Perrett

unread,
Aug 31, 2010, 2:49:43 PM8/31/10
to lif...@googlegroups.com
Yeah I hear that - is there a Hudson plugin for SBT? If not, would it be easy to make one? SBT plugins are easy to make but I'm not sure what is needed from the Java side

Sent from my iPhone

Heiko Seeberger

unread,
Aug 31, 2010, 2:57:43 PM8/31/10
to lif...@googlegroups.com
Hudson plugins are feasible, but will take some time (> 1 day).

Heiko

Timothy Perrett

unread,
Aug 31, 2010, 3:11:35 PM8/31/10
to lif...@googlegroups.com
You seem to know what you're talking about Heiko, did I just see you volunteer? ;-)

Cheers, Tim

Heiko Seeberger

unread,
Aug 31, 2010, 3:15:43 PM8/31/10
to lif...@googlegroups.com
On 31 August 2010 21:11, Timothy Perrett <tim...@getintheloop.eu> wrote:
You seem to know what you're talking about Heiko, did I just see you volunteer? ;-)

Sorry, but I have to say no. I know almost nothing about it except that I talked to some folks that should know some months ago. They told me it would take me (Hudson noob) a week or so. That was when I stopped thinking about that particular thingy ... And right now I am very very busy, so "no".

Heiko

Timothy Perrett

unread,
Aug 31, 2010, 3:18:56 PM8/31/10
to lif...@googlegroups.com
Im only teasing :-)

Perhaps DavidB or someone who is up to speed with hudson can help... maybe we could rope in some others from Akka or Scalaz as they would no doubt benefit from such a plugin too.

Cheers, Tim

Indrajit Raychaudhuri

unread,
Aug 31, 2010, 4:13:28 PM8/31/10
to lif...@googlegroups.com
I recall Josh mentioned sometime back that Hudson doesn't really need to
have SBT plugin for the build to work. So long as the we have the test
reports in xml format that Hudson can understand we are good with
regular batch build.

But me hesitation in moving Hudson build to SBT was more to do with
avoiding drastic change for dot release in the way we build and release
(we have two parallel branches to keep healthy all the time).

I am intending (read eager) to do this for 3.x series though.

- Indrajit

>>> Akka - Simpler Scalability, Fault-Tolerance, Concurrency& Remoting through Actors: akkasource.org


>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups "Lift" group.
>>> To post to this group, send email to lif...@googlegroups.com.
>>> To unsubscribe from this group, send email to liftweb+u...@googlegroups.com.
>>> For more options, visit this group at http://groups.google.com/group/liftweb?hl=en.
>> --
>> You received this message because you are subscribed to the Google Groups "Lift" group.
>> To post to this group, send email to lif...@googlegroups.com.
>> To unsubscribe from this group, send email to liftweb+u...@googlegroups.com.
>> For more options, visit this group at http://groups.google.com/group/liftweb?hl=en.
>>
>>
>>
>>
>> --
>> Heiko Seeberger
>>
>> Company: weiglewilczek.com
>> Blog: heikoseeberger.name
>> Follow me: twitter.com/hseeberger
>> OSGi on Scala: scalamodules.org
>> Lift, the simply functional web framework: liftweb.net
>> Stambecco, highly scalable computing: stambecco.org

>> Akka - Simpler Scalability, Fault-Tolerance, Concurrency& Remoting through Actors: akkasource.org

Timothy Perrett

unread,
Aug 31, 2010, 5:30:24 PM8/31/10
to lif...@googlegroups.com
Why is the update of SBT so buggy? I had to run it twice to get all the dependencies! Its never ever done that before with any other project!

Cheers, Tim

Indrajit Raychaudhuri

unread,
Aug 31, 2010, 6:05:34 PM8/31/10
to lif...@googlegroups.com

Timothy Perrett wrote:
> Why is the update of SBT so buggy? I had to run it twice to get all the dependencies! Its never ever done that before with any other project!

Hmm, looks like the problem is still there for real. I had gone mad
because of this a while back. I couldn't diagnose anything significant.
Since I was on fragile internet connection then and it didn't happen
later on, I conveniently put this on connectivity issue.

I will revive my investigation. My hunch is either we don't have right
dependency declaration for some libraries somewhere in one of the
pom.xml or SBT (via Ivy) doesn't handle the dependencies as expected.
There could be a corner case somewhere which most SBT projects don't
encounter. Our's is kinda unique in that we use pom.xml to resolve
dependencies. Scalate is the only other one that comes to my mind which
does this.

Timothy Perrett

unread,
Aug 31, 2010, 6:19:23 PM8/31/10
to lif...@googlegroups.com
Doh.

To be honest, I cant compile anything right now. It just blows up with the below (which looks to be a significant error to me). Its almost like the dependency tree has been defined incorrectly.

Cheers, Tim

[info] Building project lift-framework 2.1-SNAPSHOT against Scala 2.7.7
[info] using LiftFrameworkProject with sbt 0.7.4 and Scala 2.7.7
> compile
[info]
[info] == lift-common / compile ==
[info] Source analysis: 0 new/modified, 0 indirectly invalidated, 0 removed.
[info] Compiling main sources...
[info] Nothing to compile.
[info] Post-analysis: 50 classes.
[info] == lift-common / compile ==
[info]
[info] == lift-actor / compile ==
[info] Source analysis: 0 new/modified, 0 indirectly invalidated, 0 removed.
[info] Compiling main sources...
[info] Nothing to compile.
[info] Post-analysis: 43 classes.
[info] == lift-actor / compile ==
[info]
[info] == lift-mapper / compile ==
[info] Source analysis: 38 new/modified, 0 indirectly invalidated, 0 removed.
[info] Compiling main sources...
java.lang.RuntimeException: malformed Scala signature of S at 31255; reference value util of package liftweb refers to nonexisting symbol.
at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.errorBadSignature(UnPickler.scala:762)
at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readSymbol(UnPickler.scala:172)
at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readSymbolRef$1.apply(UnPickler.scala:714)
at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readSymbolRef$1.apply(UnPickler.scala:714)
at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$at(UnPickler.scala:139)
at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readSymbolRef(UnPickler.scala:714)
at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readType(UnPickler.scala:247)
at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readTypeRef$1.apply(UnPickler.scala:715)
at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readTypeRef$1.apply(UnPickler.scala:715)
at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$at(UnPickler.scala:139)
at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readTypeRef(UnPickler.scala:715)
at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readType(UnPickler.scala:253)
at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readTypeRef$1.apply(UnPickler.scala:715)
at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readTypeRef$1.apply(UnPickler.scala:715)
at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$at(UnPickler.scala:139)
at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readTypeRef(UnPickler.scala:715)
at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readType$1.apply(UnPickler.scala:275)
at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$$anonfun$scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readType$1.apply(UnPickler.scala:275)
at scala.tools.nsc.symtab.classfile.PickleBuffer.until(PickleBuffer.scala:127)
at scala.tools.nsc.symtab.classfile.PickleBuffer.until(PickleBuffer.scala:127)
at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$readType(UnPickler.scala:275)
at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$LazyTypeRef$$anonfun$32$$anonfun$apply$4.apply(UnPickler.scala:779)
at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$LazyTypeRef$$anonfun$32$$anonfun$apply$4.apply(UnPickler.scala:779)
at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle.scala$tools$nsc$symtab$classfile$UnPickler$UnPickle$$at(UnPickler.scala:139)
at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$LazyTypeRef$$anonfun$32.apply(UnPickler.scala:779)
at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$LazyTypeRef$$anonfun$32.apply(UnPickler.scala:779)
at scala.tools.nsc.Global$$anonfun$6.apply(Global.scala:747)
at scala.tools.nsc.Global$$anonfun$6.apply(Global.scala:747)
at scala.tools.nsc.symtab.classfile.UnPickler$UnPickle$LazyTypeRef.complete(UnPickler.scala:779)
at scala.tools.nsc.symtab.Symbols$Symbol.info(Symbols.scala:555)
at scala.tools.nsc.symtab.Types$TypeRef.thisInfo(Types.scala:1408)
at scala.tools.nsc.symtab.Types$TypeRef.baseClasses(Types.scala:1551)
at scala.tools.nsc.symtab.Types$SimpleTypeProxy$class.baseClasses(Types.scala:165)
at scala.tools.nsc.symtab.Types$SingletonType.baseClasses(Types.scala:853)
at scala.tools.nsc.symtab.Types$Type.findMember(Types.scala:681)
at scala.tools.nsc.symtab.Types$Type.member(Types.scala:386)
at scala.tools.nsc.typechecker.Contexts$ImportInfo.importedSymbol(Contexts.scala:611)
at scala.tools.nsc.typechecker.Typers$Typer.typedIdent$1(Typers.scala:2939)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3290)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:3415)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3278)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:3415)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3278)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:3415)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3278)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:3415)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3278)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:3415)
at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:3417)
at scala.tools.nsc.typechecker.Namers$Namer.typeSig(Namers.scala:870)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$typeCompleter$1.apply(Namers.scala:415)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$typeCompleter$1.apply(Namers.scala:413)
at scala.tools.nsc.typechecker.Namers$$anon$1.complete(Namers.scala:982)
at scala.tools.nsc.symtab.Symbols$Symbol.info(Symbols.scala:555)
at scala.tools.nsc.typechecker.Contexts$ImportInfo.qual(Contexts.scala:584)
at scala.tools.nsc.typechecker.Contexts$ImportInfo.importedSymbol(Contexts.scala:611)
at scala.tools.nsc.typechecker.Typers$Typer.typedIdent$1(Typers.scala:2939)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3290)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:3415)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3278)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:3415)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3278)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:3415)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3278)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:3415)
at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:3417)
at scala.tools.nsc.typechecker.Namers$Namer.typeSig(Namers.scala:870)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$typeCompleter$1.apply(Namers.scala:415)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$typeCompleter$1.apply(Namers.scala:413)
at scala.tools.nsc.typechecker.Namers$$anon$1.complete(Namers.scala:982)
at scala.tools.nsc.symtab.Symbols$Symbol.info(Symbols.scala:555)
at scala.tools.nsc.typechecker.Contexts$ImportInfo.qual(Contexts.scala:584)
at scala.tools.nsc.typechecker.Contexts$ImportInfo.importedSymbol(Contexts.scala:611)
at scala.tools.nsc.typechecker.Typers$Typer.typedIdent$1(Typers.scala:2939)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3290)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:3415)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3278)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:3415)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3278)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:3415)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3278)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:3415)
at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:3417)
at scala.tools.nsc.typechecker.Namers$Namer.typeSig(Namers.scala:870)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$typeCompleter$1.apply(Namers.scala:415)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$typeCompleter$1.apply(Namers.scala:413)
at scala.tools.nsc.typechecker.Namers$$anon$1.complete(Namers.scala:982)
at scala.tools.nsc.symtab.Symbols$Symbol.info(Symbols.scala:555)
at scala.tools.nsc.typechecker.Contexts$ImportInfo.qual(Contexts.scala:584)
at scala.tools.nsc.typechecker.Contexts$ImportInfo.importedSymbol(Contexts.scala:611)
at scala.tools.nsc.typechecker.Typers$Typer.typedIdent$1(Typers.scala:2939)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3290)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:3415)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3278)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:3415)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3278)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:3415)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3278)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:3415)
at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:3417)
at scala.tools.nsc.typechecker.Namers$Namer.typeSig(Namers.scala:870)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$typeCompleter$1.apply(Namers.scala:415)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$typeCompleter$1.apply(Namers.scala:413)
at scala.tools.nsc.typechecker.Namers$$anon$1.complete(Namers.scala:982)
at scala.tools.nsc.symtab.Symbols$Symbol.info(Symbols.scala:555)
at scala.tools.nsc.typechecker.Contexts$ImportInfo.qual(Contexts.scala:584)
at scala.tools.nsc.typechecker.Contexts$ImportInfo.importedSymbol(Contexts.scala:611)
at scala.tools.nsc.typechecker.Typers$Typer.typedIdent$1(Typers.scala:2939)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3290)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typedType(Typers.scala:3429)
at scala.tools.nsc.typechecker.Typers$Typer.typedType(Typers.scala:3432)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$3.apply(Typers.scala:918)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$3.apply(Typers.scala:918)
at scala.List.map(List.scala:812)
at scala.tools.nsc.typechecker.Typers$Typer.parentTypes(Typers.scala:918)
at scala.tools.nsc.typechecker.Namers$Namer.templateSig(Namers.scala:546)
at scala.tools.nsc.typechecker.Namers$Namer.classSig(Namers.scala:603)
at scala.tools.nsc.typechecker.Namers$Namer.typeSig(Namers.scala:838)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$typeCompleter$1.apply(Namers.scala:415)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$typeCompleter$1.apply(Namers.scala:413)
at scala.tools.nsc.typechecker.Namers$$anon$1.complete(Namers.scala:982)
at scala.tools.nsc.typechecker.Namers$PolyTypeCompleter.complete(Namers.scala:993)
at scala.tools.nsc.symtab.Symbols$Symbol.info(Symbols.scala:555)
at scala.tools.nsc.symtab.Symbols$Symbol.initialize(Symbols.scala:669)
at scala.tools.nsc.typechecker.Typers$Typer.parentTypes(Typers.scala:920)
at scala.tools.nsc.typechecker.Namers$Namer.templateSig(Namers.scala:546)
at scala.tools.nsc.typechecker.Namers$Namer.classSig(Namers.scala:603)
at scala.tools.nsc.typechecker.Namers$Namer.typeSig(Namers.scala:838)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$typeCompleter$1.apply(Namers.scala:415)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$typeCompleter$1.apply(Namers.scala:413)
at scala.tools.nsc.typechecker.Namers$$anon$1.complete(Namers.scala:982)
at scala.tools.nsc.typechecker.Namers$PolyTypeCompleter.complete(Namers.scala:993)
at scala.tools.nsc.symtab.Symbols$Symbol.info(Symbols.scala:555)
at scala.tools.nsc.symtab.Symbols$Symbol.initialize(Symbols.scala:669)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3078)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3395)
at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:1598)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$19.apply(Typers.scala:1643)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$19.apply(Typers.scala:1643)
at scala.List$.loop$1(List.scala:300)
at scala.List$.mapConserve(List.scala:317)
at scala.List$.loop$1(List.scala:304)
at scala.List$.mapConserve(List.scala:317)
at scala.List$.loop$1(List.scala:304)
at scala.List$.mapConserve(List.scala:317)
at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:1643)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3084)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3395)
at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:1598)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$19.apply(Typers.scala:1643)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$19.apply(Typers.scala:1643)
at scala.List$.loop$1(List.scala:300)
at scala.List$.mapConserve(List.scala:317)
at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:1643)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3084)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3395)
at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:1598)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$19.apply(Typers.scala:1643)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$19.apply(Typers.scala:1643)
at scala.List$.loop$1(List.scala:300)
at scala.List$.mapConserve(List.scala:317)
at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:1643)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:3084)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3358)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:3395)
at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$2.apply(Analyzer.scala:41)
at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:267)
at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:246)
at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:246)
at scala.Iterator$class.foreach(Iterator.scala:414)
at scala.collection.mutable.ListBuffer$$anon$1.foreach(ListBuffer.scala:266)
at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:246)
at scala.tools.nsc.Global$Run.compileSources(Global.scala:574)
at scala.tools.nsc.Global$Run.compile(Global.scala:667)
at xsbt.CompilerInterface.run(CompilerInterface.scala:81)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at xsbt.AnalyzingCompiler.call(AnalyzingCompiler.scala:40)
at xsbt.AnalyzingCompiler.apply(AnalyzingCompiler.scala:18)
at sbt.Compile.processScala(Compile.scala:76)
at sbt.CompilerCore$$anonfun$1.apply(Compile.scala:27)
at sbt.CompilerCore$$anonfun$1.apply(Compile.scala:27)
at sbt.CompilerCore$$anonfun$process$1$1.apply(Compile.scala:22)
at sbt.CompilerCore$$anonfun$process$1$1.apply(Compile.scala:22)
at sbt.CompilerCore$$anonfun$doCompile$3.apply(Compile.scala:45)
at sbt.CompilerCore$$anonfun$doCompile$3.apply(Compile.scala:42)
at scala.Option.orElse(Option.scala:102)
at sbt.CompilerCore.doCompile(Compile.scala:41)
at sbt.CompilerCore.apply(Compile.scala:29)
at sbt.AbstractCompileConditional.run$1(Conditional.scala:341)
at sbt.AbstractCompileConditional$$anonfun$3.apply(Conditional.scala:344)
at sbt.AbstractCompileConditional$$anonfun$3.apply(Conditional.scala:344)
at sbt.classfile.Analyze$.apply(Analyze.scala:110)
at sbt.AbstractCompileConditional.execute(Conditional.scala:344)
at sbt.Conditional$class.run(Conditional.scala:43)
at sbt.AbstractCompileConditional.run(Conditional.scala:231)
at sbt.BasicScalaProject.sbt$BasicScalaProject$$doCompile(DefaultProject.scala:259)
at sbt.BasicScalaProject$$anonfun$compileAction$1.apply(DefaultProject.scala:273)
at sbt.BasicScalaProject$$anonfun$compileAction$1.apply(DefaultProject.scala:273)
at sbt.TaskManager$Task.invoke(TaskManager.scala:62)
at sbt.impl.RunTask.doRun$1(RunTask.scala:77)
at sbt.impl.RunTask.runTask(RunTask.scala:85)
at sbt.impl.RunTask.sbt$impl$RunTask$$runIfNotRoot(RunTask.scala:60)
at sbt.impl.RunTask$$anonfun$runTasksExceptRoot$2.apply(RunTask.scala:48)
at sbt.impl.RunTask$$anonfun$runTasksExceptRoot$2.apply(RunTask.scala:48)
at sbt.Distributor$Run$Worker$$anonfun$2.apply(ParallelRunner.scala:131)
at sbt.Distributor$Run$Worker$$anonfun$2.apply(ParallelRunner.scala:131)
at sbt.Control$.trapUnit(Control.scala:19)
at sbt.Distributor$Run$Worker.run(ParallelRunner.scala:131)
[info] == lift-mapper / compile ==

David Pollak

unread,
Aug 31, 2010, 6:23:32 PM8/31/10
to lif...@googlegroups.com
On Tue, Aug 31, 2010 at 3:19 PM, Timothy Perrett <tim...@getintheloop.eu> wrote:
Doh.

To be honest, I cant compile anything right now. It just blows up with the below (which looks to be a significant error to me). Its almost like the dependency tree has been defined incorrectly.

Tim,

This looks more like an outstanding Scala bug to me.  Try the same against Scala 2.8.0.

Thanks,

David



--

Timothy Perrett

unread,
Aug 31, 2010, 6:38:45 PM8/31/10
to lif...@googlegroups.com
Dave,

Your right, some crazy pickler bug. However, the update bug is still an issue, as it causes crazy compilation failures that wont be obvious to n00bs. 

That being said, if the SBT stuff doesn't actually work, shouldn't it be removed from the 2.7 series? I mean, its pointless otherwise and just adds complexity to the SBT project file supporting multiple versions. 

When I compile 2.8 I get:

[info] 
[info] == lift-mapper / compile ==
[info]   Source analysis: 38 new/modified, 0 indirectly invalidated, 0 removed.
[info] Compiling main sources...
[error] class file needed by S is missing.
[error] reference value util of package net.liftweb refers to nonexisting symbol.
[error] one error found
[info] == lift-mapper / compile ==
[info] 
[info] == lift-oauth / compile ==
[info]   Source analysis: 7 new/modified, 0 indirectly invalidated, 0 removed.
[info] Compiling main sources...
[error] /Users/timperrett/repositories/lift/lift-framework/framework/lift-modules/lift-oauth/src/main/scala/net/liftweb/oauth/OAuth.scala:21: value common is not a member of package net.liftweb
[error] import net.liftweb.common._
[error]                    ^
[error] /Users/timperrett/repositories/lift/lift-framework/framework/lift-modules/lift-oauth/src/main/scala/net/liftweb/oauth/OAuth.scala:35: missing parameter type for expanded function ((x0$1) => x0$1 match {
[error]   case (req @ Req(AccessToken, "", _)) => (() => accessToken(req))
[error]   case (req @ Req(RequestToken, "", _)) => (() => requestToken(req))
[error]   case (req @ Req(AuthExchange, "", _)) => (() => authExchange(req))
[error] })
[error]     {
[error]     ^
[error] /Users/timperrett/repositories/lift/lift-framework/framework/lift-modules/lift-oauth/src/main/scala/net/liftweb/oauth/OAuthMessage.scala:22: value common is not a member of package net.liftweb
[error] import net.liftweb.common._
[error]                    ^
[error] class file needed by Req is missing.
[error] reference value util of package net.liftweb refers to nonexisting symbol.
[error] four errors found
[info] == lift-oauth / compile ==

Cheers, Tim

Indrajit Raychaudhuri

unread,
Aug 31, 2010, 7:10:10 PM8/31/10
to lif...@googlegroups.com
On 2.7 branch, I just did


> sbt "project lift-mapper" clean compile
...
...
[warn] there were deprecation warnings; re-run with -deprecation for details
[warn] 84 warnings found
[info] Compilation successful.
[info] Post-analysis: 1334 classes.
[info] == compile ==
[success] Successful.
[info]
[info] Total time: 92 s, completed Sep 1, 2010 4:24:22 AM
[info]
[info] Total session time: 94 s, completed Sep 1, 2010 4:24:22 AM


> sbt "project lift-mapper" clean test
...
...
...
[info] + correctly handle removing an unsaved item
[info] == net.liftweb.mapper.ItemsListSpecs ==
[info]
[info] == test-complete ==
[info] == test-complete ==
[info]
[info] == test-finish ==
[info] Passed: : Total 145, Failed 0, Errors 0, Passed 93, Skipped 52
[info]
[info] All tests PASSED.
[info] == test-finish ==
[info]
[info] == test-cleanup ==
[info] == test-cleanup ==
[info]
[info] == test ==
[info] == test ==
[success] Successful.
[info]
[info] Total time: 247 s, completed Sep 1, 2010 4:34:44 AM
[info]
[info] Total session time: 251 s, completed Sep 1, 2010 4:34:44 AM
[success] Build completed successfully.

Tim, just to narrow it down, can you please do "sbt clean-lib
clean-cache" before retrying?

The update bug is still a problem though. Need to investigate.

- Indrajit

>> Perrett<tim...@getintheloop.eu <mailto:tim...@getintheloop.eu>>


>> wrote:
>> >>>>> You seem to know what you're talking about Heiko, did I just
>> see you volunteer? ;-)
>> >>>>>
>> >>>>> Sorry, but I have to say no. I know almost nothing about it
>> except that I talked to some folks that should know some months
>> ago. They told me it would take me (Hudson noob) a week or so.
>> That was when I stopped thinking about that particular thingy ...
>> And right now I am very very busy, so "no".
>> >>>>>
>> >>>>> Heiko
>> >>>>>
>> >>>>>
>> >>>>> Cheers, Tim
>> >>>>>
>> >>>>> On 31 Aug 2010, at 19:57, Heiko Seeberger wrote:
>> >>>>>
>> >>>>>> Hudson plugins are feasible, but will take some time (> 1 day).
>> >>>>>>
>> >>>>>> Heiko
>> >>>>>>
>> >>>>>> On 31 August 2010 20:49, Timothy

>> Perrett<tim...@getintheloop.eu <mailto:tim...@getintheloop.eu>>


>> wrote:
>> >>>>>> Yeah I hear that - is there a Hudson plugin for SBT? If
>> not, would it be easy to make one? SBT plugins are easy to make
>> but I'm not sure what is needed from the Java side
>> >>>>>>
>> >>>>>> Sent from my iPhone
>> >>>>>>
>> >>>>>> On 31 Aug 2010, at 19:23, Indrajit

>> lif...@googlegroups.com <mailto:lif...@googlegroups.com>.


>> >>>>>>>>> To unsubscribe from this group, send email to
>> liftweb+u...@googlegroups.com

>> <mailto:liftweb%2Bunsu...@googlegroups.com>.


>> >>>>>>>>> For more options, visit this group at
>> http://groups.google.com/group/liftweb?hl=en.
>> >>>>>>>>>
>> >>>>>>>>>
>> >>>>>>> --
>> >>>>>>> You received this message because you are subscribed to
>> the Google Groups "Lift" group.
>> >>>>>>> To post to this group, send email to

>> lif...@googlegroups.com <mailto:lif...@googlegroups.com>.


>> >>>>>>> To unsubscribe from this group, send email to
>> liftweb+u...@googlegroups.com

>> <mailto:liftweb%2Bunsu...@googlegroups.com>.


>> >>>>>>> For more options, visit this group at
>> http://groups.google.com/group/liftweb?hl=en.
>> >>>>>>>
>> >>>>>>>
>> >>>>>> --
>> >>>>>> You received this message because you are subscribed to the
>> Google Groups "Lift" group.
>> >>>>>> To post to this group, send email to

>> lif...@googlegroups.com <mailto:lif...@googlegroups.com>.


>> >>>>>> To unsubscribe from this group, send email to
>> liftweb+u...@googlegroups.com

>> <mailto:liftweb%2Bunsu...@googlegroups.com>.


>> >>>>>> For more options, visit this group at
>> http://groups.google.com/group/liftweb?hl=en.
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>> --
>> >>>>>> Heiko Seeberger
>> >>>>>>

>> >>>>>> Company: weiglewilczek.com <http://weiglewilczek.com/>
>> >>>>>> Blog: heikoseeberger.name <http://heikoseeberger.name/>
>> >>>>>> Follow me: twitter.com/hseeberger
>> <http://twitter.com/hseeberger>
>> >>>>>> OSGi on Scala: scalamodules.org <http://scalamodules.org/>


>> >>>>>> Lift, the simply functional web framework: liftweb.net

>> <http://liftweb.net/>


>> >>>>>> Stambecco, highly scalable computing: stambecco.org

>> <http://stambecco.org/>


>> >>>>>> Akka - Simpler Scalability, Fault-Tolerance, Concurrency&

>> Remoting through Actors: akkasource.org <http://akkasource.org/>


>> >>>>>>
>> >>>>>> --
>> >>>>>> You received this message because you are subscribed to the
>> Google Groups "Lift" group.
>> >>>>>> To post to this group, send email to

>> lif...@googlegroups.com <mailto:lif...@googlegroups.com>.


>> >>>>>> To unsubscribe from this group, send email to
>> liftweb+u...@googlegroups.com

>> <mailto:liftweb%2Bunsu...@googlegroups.com>.


>> >>>>>> For more options, visit this group at
>> http://groups.google.com/group/liftweb?hl=en.
>> >>>>> --
>> >>>>> You received this message because you are subscribed to the
>> Google Groups "Lift" group.
>> >>>>> To post to this group, send email to

>> lif...@googlegroups.com <mailto:lif...@googlegroups.com>.


>> >>>>> To unsubscribe from this group, send email to
>> liftweb+u...@googlegroups.com

>> <mailto:liftweb%2Bunsu...@googlegroups.com>.


>> >>>>> For more options, visit this group at
>> http://groups.google.com/group/liftweb?hl=en.
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>> --
>> >>>>> Heiko Seeberger
>> >>>>>

>> >>>>> Company: weiglewilczek.com <http://weiglewilczek.com/>
>> >>>>> Blog: heikoseeberger.name <http://heikoseeberger.name/>
>> >>>>> Follow me: twitter.com/hseeberger
>> <http://twitter.com/hseeberger>
>> >>>>> OSGi on Scala: scalamodules.org <http://scalamodules.org/>


>> >>>>> Lift, the simply functional web framework: liftweb.net

>> <http://liftweb.net/>


>> >>>>> Stambecco, highly scalable computing: stambecco.org

>> <http://stambecco.org/>


>> >>>>> Akka - Simpler Scalability, Fault-Tolerance, Concurrency&

>> Remoting through Actors: akkasource.org <http://akkasource.org/>


>> >>>>>
>> >>>>> --
>> >>>>> You received this message because you are subscribed to the
>> Google Groups "Lift" group.
>> >>>>> To post to this group, send email to

>> lif...@googlegroups.com <mailto:lif...@googlegroups.com>.


>> >>>>> To unsubscribe from this group, send email to
>> liftweb+u...@googlegroups.com

>> <mailto:liftweb%2Bunsu...@googlegroups.com>.


>> >>>>> For more options, visit this group at
>> http://groups.google.com/group/liftweb?hl=en.
>> >>> --
>> >>> You received this message because you are subscribed to the
>> Google Groups "Lift" group.
>> >>> To post to this group, send email to lif...@googlegroups.com

>> <mailto:lif...@googlegroups.com>.


>> >>> To unsubscribe from this group, send email to
>> liftweb+u...@googlegroups.com

>> <mailto:liftweb%2Bunsu...@googlegroups.com>.


>> >>> For more options, visit this group at
>> http://groups.google.com/group/liftweb?hl=en.
>> >>>
>> >>>
>> >>
>> >
>> > --
>> > You received this message because you are subscribed to the
>> Google Groups "Lift" group.
>> > To post to this group, send email to lif...@googlegroups.com

>> <mailto:lif...@googlegroups.com>.


>> > To unsubscribe from this group, send email to
>> liftweb+u...@googlegroups.com

>> <mailto:liftweb%2Bunsu...@googlegroups.com>.


>> > For more options, visit this group at
>> http://groups.google.com/group/liftweb?hl=en.
>> >
>> >
>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Lift" group.
>> To post to this group, send email to lif...@googlegroups.com

>> <mailto:lif...@googlegroups.com>.


>> To unsubscribe from this group, send email to
>> liftweb+u...@googlegroups.com

>> <mailto:liftweb%2Bunsu...@googlegroups.com>.


>> For more options, visit this group at
>> http://groups.google.com/group/liftweb?hl=en.
>>
>>
>>
>>
>> --
>> Lift, the simply functional web framework http://liftweb.net

>> <http://liftweb.net/>

>> Blog: http://goodstuff.im <http://goodstuff.im/>


>> Surf the harmonics
>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Lift" group.
>> To post to this group, send email to lif...@googlegroups.com

>> <mailto:lif...@googlegroups.com>.


>> To unsubscribe from this group, send email to
>> liftweb+u...@googlegroups.com

>> <mailto:liftweb+u...@googlegroups.com>.

David Pollak

unread,
Aug 31, 2010, 7:17:04 PM8/31/10
to lif...@googlegroups.com
Hmmm.... I'm seeing:

dpp@appa:~/proj/lift/framework$ sbt "project lift-mapper" clean compile
[info] Deleting directory /home/dpp/proj/lift/framework/lift-persistence/lift-mapper/target/scala_2.8.0
[info] == clean ==
[success] Successful.
[info]
[info] Total time: 0 s, completed Aug 31, 2010 4:16:04 PM
[info]
[info] == compile ==

[info]   Source analysis: 38 new/modified, 0 indirectly invalidated, 0 removed.
[info] Compiling main sources...
[error] class file needed by S is missing.
[error] reference value util of package net.liftweb refers to nonexisting symbol.
[error] one error found
[info] == compile ==
[error] Error running compile: Compilation failed
[info]
[info] Total time: 2 s, completed Aug 31, 2010 4:16:07 PM
[info]
[info] Total session time: 3 s, completed Aug 31, 2010 4:16:07 PM
[error] Error during build.
dpp@appa:~/proj/lift/framework$
Surf the harmonics

Ross Mellgren

unread,
Aug 31, 2010, 10:56:17 PM8/31/10
to lif...@googlegroups.com
On 2.7 branch I get the same error as Tim. I've never used SBT for Lift, so I'm pretty positive my build is clean. This is exactly what I ran:

529 cd framework/
530 ls
531 sbt "project lift-mapper" clean compile

got a bunch of errors about "net.liftweb" not existing, so aborted and tried:

532 sbt "project lift-mapper" update clean compile

snip snip snip
[info] == compile ==


[info] Source analysis: 38 new/modified, 0 indirectly invalidated, 0 removed.
[info] Compiling main sources...
java.lang.RuntimeException: malformed Scala signature of S at 31255; reference value util of package liftweb refers to nonexisting symbol.

snip snip snip

Meanwhile, on the 2.8 branch the same (after clean-lib clean-cache)

[info] == compile ==


[info] Source analysis: 38 new/modified, 0 indirectly invalidated, 0 removed.
[info] Compiling main sources...

[info] 'compiler-interface' not yet compiled for Scala 2.8.0.final. Compiling...
[info] Compilation completed in 16.516 s


[error] class file needed by S is missing.
[error] reference value util of package net.liftweb refers to nonexisting symbol.
[error] one error found

-Ross

Peter Vlugter

unread,
Aug 31, 2010, 11:31:27 PM8/31/10
to lif...@googlegroups.com
Very cool that lift does sbt :)

Also, I didn't have any problems with the build. I did an sbt update compile on the 2.8 branch and everything worked fine.

maka ~/code/lift/framework (2.x-2.8_devel) % sbt update compile
[info] Building project lift-framework 2.1-SNAPSHOT against Scala 2.8.0


[info] using LiftFrameworkProject with sbt 0.7.4 and Scala 2.7.7

...

[info] == lift-framework / compile ==
[info] == lift-framework / compile ==
[success] Successful.
[info]
[info] Total time: 176 s, completed Sep 1, 2010 2:45:40 PM
[info]
[info] Total session time: 179 s, completed Sep 1, 2010 2:45:40 PM
[success] Build completed successfully.

Esko Luontola

unread,
Sep 1, 2010, 3:52:12 AM9/1/10
to Lift
On Aug 30, 6:25 pm, Indrajit Raychaudhuri <indraj...@gmail.com> wrote:
> c. Since SBT is configured to pick up dependencies from pom.xml You can
> keep moving back and forth between Maven and SBT. Pick you pill, but
> just remember that they put their stuff in different location after the
> build.

How have you worked around the issue of SBT/Ivy not supporting the
relativePath element in the parent section of a POM? See "Maven/Ivy"
at http://code.google.com/p/simple-build-tool/wiki/LibraryManagement
and https://issues.apache.org/jira/browse/IVY-1173

Timothy Perrett

unread,
Sep 1, 2010, 4:26:39 AM9/1/10
to lif...@googlegroups.com
Perhaps its just me, but are we perhaps trying to shoe-horn this solution in the wrong way around?

What im hearing is that we only need maven now because of the CI workflow. This is of course very valuable, but maybe we should consider finding a solution at that end to use SBT natively rather than trying to fudge it through as it is now? Its not really an option (IMHO) for the build to be this busted in a number of different ways for different people - its simply too unpredictable.

If we had a solution for SBT CI, then we could just ditch maven, right? Everything else would still build as intended so users could use maven irrespective of what we were building lift core with (this is what akka does)

Cheers, Tim

David Bernard

unread,
Sep 1, 2010, 4:53:31 AM9/1/10
to lif...@googlegroups.com
I second Tim : Don't try to use pom.xml with SBT.
* there lot of stuff in pom.xml, that SBT don't support well
* SBT doesn't follow the same rules as maven to resolve version (direct and transitive)
* having both pom.xml and sbt is confusing (eg guest question : what is the right tool to build)

About Hudson integration, like Joshua said, Hudson is able to run batch script to run build (or other stuff, eg : I used it to create interactive deployment ( form + running Capistrano) last year).
So call sbt from hudson, you will loose some report (usefull ?), that you could reactivate later.

Disclaimer : I'm not a hudson expert (nor a hudson plugin developper).

my 2c

/davidB

Timothy Perrett

unread,
Sep 1, 2010, 9:40:13 AM9/1/10
to Lift
Thanks for your support DavidB. I've been having to navigate the build
system today and I am now even more sure that we need to find a better
solution here. This is just a plain mess as it stands.

Cheers, Tim

Indrajit Raychaudhuri

unread,
Sep 1, 2010, 6:46:46 PM9/1/10
to lif...@googlegroups.com
David, Tim,

I am still not sure if the two problems that we saw have anything to do
with SBT using pom.xml. I have encountered the issue of calling update
multiple times earlier, just cannot recreate that anymore. I don't know
how to deal with the Scala issue though.

I'll fold-in all the answers related to the choice of using pom.xml here.

1. Hudson/CI is *not* the main reason for keeping the pom.xmls around.
The main reason is to avoid making any drastic change in a dot release.
Removing the pom.xmls would mean that 'mvn foo' won't work anymore. That
is too big a breaking change for a dot release IMO.

2. The other alternative is to add all the dependencies inline in SBT
build config. That would mean we'll have to maintain the dependencies
and their versions in two different place (sbt, mvn). Some of the
committers are already troubled with the overhead of maintaining two
parallel branches (2.7, 2.8). The trouble just multiplies with two
different declarations for dependencies.

3. The pom.xmls are used by SBT *only* for picking up the dependencies
section to do the dependency resolution, nothing else. SBT has improved
a *lot* over last few releases in aligning with Maven's convention.
Since, the SBT wiki claims to be able to do automatic dependency
management using pom.xml, given it's track record, I trust that it
actually does so :)

4. Some (Kris et al) don't like the fact that, unlike Maven, SBT builds
the dependencies of a project before building itself. Having the
pom.xml's around would make them feel better :)

Given all these, I got lured into selecting the approach that, if we can
get working, can give us a happy middle ground.


- Indrajit

Indrajit Raychaudhuri

unread,
Sep 1, 2010, 6:49:43 PM9/1/10
to lif...@googlegroups.com

If SBT/Ivy can find the parent POM from remote repository it doesn't
complain. This is pretty much the case for us. We always ensure that the
right parent POMs is present in the remote repository thus averting the
issue.

The other cheaper option is to do 'mvn install' of the parent pom in
local Maven repo and then specify the repo explicitly in you SBT config
as thus:

val mavenLocal = "Local Maven Repository" at "file://" + (Path.userHome
/ ".m2" / "repository").absolutePath

Indrajit Raychaudhuri

unread,
Sep 2, 2010, 4:17:11 AM9/2/10
to lif...@googlegroups.com

Indrajit Raychaudhuri wrote:
> I am still not sure if the two problems that we saw have anything to do
> with SBT using pom.xml. I have encountered the issue of calling update
> multiple times earlier, just cannot recreate that anymore. I don't know
> how to deal with the Scala issue though.

Have found the problem. It's actually because of incorrect stacking of
traits in the config (a super trait coming after sub trait). I had my
Ivy cache populated with all the libs from previous runs and thus was
not encountering it.

Sorry about the stupid ID10T bug. I have re-opened #632, a fix is coming up.

- Indrajit

Timothy Perrett

unread,
Sep 2, 2010, 4:18:53 AM9/2/10
to lif...@googlegroups.com
Excellent thanks :-)

Indrajit Raychaudhuri

unread,
Sep 2, 2010, 10:25:35 AM9/2/10
to lif...@googlegroups.com

Indrajit Raychaudhuri

unread,
Sep 2, 2010, 2:15:20 PM9/2/10
to lif...@googlegroups.com
Fix pushed to 2.7 and 2.8 branch.

- Indrajit

David Pollak

unread,
Sep 2, 2010, 6:02:52 PM9/2/10
to lif...@googlegroups.com
On Thu, Sep 2, 2010 at 11:15 AM, Indrajit Raychaudhuri <indr...@gmail.com> wrote:
Fix pushed to 2.7 and 2.8 branch.

Cool.  Are we at code slush?

--
Lift, the simply functional web framework http://liftweb.net
Surf the harmonics

Indrajit Raychaudhuri

unread,
Sep 3, 2010, 4:09:34 AM9/3/10
to lif...@googlegroups.com

David Pollak wrote:
>
>
> On Thu, Sep 2, 2010 at 11:15 AM, Indrajit Raychaudhuri
> <indr...@gmail.com <mailto:indr...@gmail.com>> wrote:
>
> Fix pushed to 2.7 and 2.8 branch.
>
>
> Cool. Are we at code slush?

I guess, so. Nothing pending in RB anymore.
However, I see that fix for #634 is only on master.

Jon, shouldn't it be cherry-picked to 2.7 and 2.8 branch?

- Indrajit

> lif...@googlegroups.com <mailto:lif...@googlegroups.com>.


> To unsubscribe from this group, send email to
> liftweb+u...@googlegroups.com

> <mailto:liftweb%2Bunsu...@googlegroups.com>.


> For more options, visit this group at
> http://groups.google.com/group/liftweb?hl=en.
>
>
>
>
> --
> You received this message because you are subscribed to the Google
> Groups "Lift" group.
> To post to this group, send email to lif...@googlegroups.com

> <mailto:lif...@googlegroups.com>.


> To unsubscribe from this group, send email to
> liftweb+u...@googlegroups.com

> <mailto:liftweb%2Bunsu...@googlegroups.com>.


> For more options, visit this group at
> http://groups.google.com/group/liftweb?hl=en.
>
>
>
>
> --
> Lift, the simply functional web framework http://liftweb.net
> Beginning Scala http://www.apress.com/book/view/1430219890
> Follow me: http://twitter.com/dpp
> Blog: http://goodstuff.im
> Surf the harmonics
>

Reply all
Reply to author
Forward
0 new messages