typelead/eta-hackage

Get Duckling to work

Opened this issue · 9 comments

I am attempting to incorporate Duckling project with eta but am running into some dependency issues. My main goal is to eventually use Duckling (Haskell) in an Android application. I am first attempting to get Duckling running via eta.

Duckling: https://github.com/facebook/duckling
It is also on Hackage: https://hackage.haskell.org/package/duckling
I clone the Duckling gitHub project here, and I run:
home$ etlas run

Resolving dependencies...
etlas: Could not resolve dependencies:
trying: base-4.11.1.0/installed-9g5... (dependency of duckling-0.1.6.1)
next goal: text-show (dependency of duckling-0.1.6.1)
rejecting: text-show-3.8.2, text-show-3.8.1, text-show-3.8 (conflict: duckling
=> text-show>=2.1.2 && <3.8)
trying: text-show-3.7.5
next goal: integer-gmp (dependency of text-show-3.7.5)
rejecting: integer-gmp-1.0.2.0 (conflict: base =>
ghc-prim==0.4.0.0/installed-Jhi..., integer-gmp => ghc-prim>=0.5.2)
rejecting: integer-gmp-1.0.1.0 (conflict: base =>
ghc-prim==0.4.0.0/installed-Jhi..., integer-gmp => ghc-prim>=0.5.1)
rejecting: integer-gmp-1.0.0.1 (conflict: base =>
ghc-prim==0.4.0.0/installed-Jhi..., integer-gmp => ghc-prim>=0.5)
rejecting: integer-gmp-1.0.0.0, integer-gmp-0.5.1.0 (only already installed
instances can be used)
After searching the rest of the dependency tree exhaustively, these were the
goals I've had most trouble fulfilling: integer-gmp, base, text-show, duckling

Hi @argideritzalpea, some libs needed to be patched to make it work: #144
When the pr is merged it should be buildable with etlas update && etlas build

@jneira @rahulmutt Thanks very much for the patches and PR. I'm having trouble building it still after updating etlas:

$ etlas update && etlas build
Downloading the latest package lists from:
- hackage.haskell.org
- git@github.com/typelead/etlas-index
Updating binary package index.
To revert to previous state run:
    etlas update --index-state='2019-05-23T17:03:17Z'
Updating the eta-hackage patch set.
Resolving dependencies...
etlas: Could not resolve dependencies:
trying: base-4.11.1.0/installed-9g5... (dependency of duckling-0.1.6.1)
next goal: text-show (dependency of duckling-0.1.6.1)
rejecting: text-show-3.8.2, text-show-3.8.1, text-show-3.8 (conflict: duckling
=> text-show>=2.1.2 && <3.8)
trying: text-show-3.7.5
next goal: integer-gmp (dependency of text-show-3.7.5)
rejecting: integer-gmp-1.0.2.0 (conflict: base =>
ghc-prim==0.4.0.0/installed-Jhi..., integer-gmp => ghc-prim>=0.5.2)
rejecting: integer-gmp-1.0.1.0 (conflict: base =>
ghc-prim==0.4.0.0/installed-Jhi..., integer-gmp => ghc-prim>=0.5.1)
rejecting: integer-gmp-1.0.0.1 (conflict: base =>
ghc-prim==0.4.0.0/installed-Jhi..., integer-gmp => ghc-prim>=0.5)
rejecting: integer-gmp-1.0.0.0, integer-gmp-0.5.1.0 (only already installed
instances can be used)
After searching the rest of the dependency tree exhaustively, these were the
goals I've had most trouble fulfilling: integer-gmp, base, text-show, duckling

Oh, i forgot to mention that you should download the package with etlas get duckling-0.1.6.1 again to get the version patched. When downloading it should output Found patch in eta-hackage for duckling-0.1.6.1

@jneira @rahulmutt Thanks for helping me get this running, it successfully built! I can debug some of the runtime errors now

As noted by @argideritzalpea, after compiling there are two issues:

  • Being able to run the web app example that uses snap
  • Run the test suite

Hi, i tried to run the test suite and, at first, i've got a compile error, solved in the new patch: #146

I actually i am getting a java exception instead the error about WrapPCRE.hsc described in #144 (comment).

PS D:\dev\lang\eta\eta-pkgs\duckling-0.1.6.1> .\dist\build\eta-0.8.6.5\duckling-0.1.6.1\t\d
uckling-test\build\duckling-test\duckling-test.cmd
Duckling Tests
  API Tests
    Parse Test:                    Exception in thread "Thread-9" Exception in thread "Thread-8" Exception in thread "Thread-7" java.lang.NoClassDefFoundError: regex_pcre_bu__0.94.4.__3bceb134cf8075d23ca76fbd3ae999e26aae2df4/text/regex/pcre/ByteString$$w$cmatchAll
        at duckling.duckling.Engine$$wlookupRegexAnywhere.call(Engine.hs:94)
        at duckling.duckling.Engine$go3.apply1(Engine.hs:187)
        at duckling.duckling.Engine$sat$29.thunkEnter(Engine.hs:187)
        at eta.runtime.thunk.SingleEntryThunk.evaluate(SingleEntryThunk.java:19)
        at eta.runtime.stg.Closure.evaluateTail(Closure.java:29)
        at base.ghc.Base$zpzp.call(Base.hs:1145)
        at duckling.duckling.Engine$$wparseString1.call(Engine.hs:181)
        at duckling.duckling.Engine$parseAndResolve.call(Engine.hs:211)
        at duckling.duckling.Api$$wanalyzze.call(Api.hs:56)
        at duckling.duckling.Api$$wparse.call(Api.hs:40)
        at main.duckling.api.Tests$tests147.call(Tests.hs:52)
        at main.duckling.api.Tests$tests147.applyV(Tests.hs)
....

@jneira That name looks extremely odd. Perhaps that's an error with how the UnitId is translated to a Java class name in Eta.CodeGen.Name.

In gitter @justinphan3110 has shared a stacktrace trying to execute the example, replacing the web server with standard output
stacktrace