I have used the algebraic term rewriting language Maude off and on for about 20 years so I have often seen mentions of Stratego and ASF+SDF, but I had never tried them. Recently I have been studying model-driven web engineering and I heard about WebDSL, so I decided to start learning ASF+SDF - which is similar to Maude in many ways.

I read the documentation for WebDSL, and was very impressed and optimistic, because this approach - building a DSL using an algebraic specification language - is exactly what is needed for web application programming (avoiding the need to “mix” several languages together by embedding Java expressions in HTML, SQL expresions in Java, etc.)

Finally, when I learned about NixOS, I became further impressed and optimistic. Specifically, I expected that using the nix package manager to install something like Stratego/XT (written in a modular, declarative, functional, algebraic language such as ASF+SDF) would offer a high level of reliability similar to JVM package managers such as Java’s maven, Scala’s sbt, or Clojure’s leiningen - and would not suffer from any conflicts or confusions or clashes regarding namespaces or version numbers or missing dependencies often seen in Haskell’s package manager cabal, or in other package managers such as NodeJS’s npm or Golang’s go get or Ruby’s gem.

However, today when I tried to install WebDSL on Debian Wheezy running on Amazon AWS EC2 (using a command line interface via Putty SSH, and not using Eclipse), there were several error messages regarding packages that could not be found, and finally a mysterious error message from sudo make install - so that as of this time, it has been impossible for me to install WebDSL.

Other possible issues:

  • Maybe Stratego/XT is now deprecated / unsupported and people are being encouraged to use Spoofax?
  • If so, does this mean that we also must use Eclipse? (I was hoping to be able to run this on a remote server - without Eclipse.)
  • Is this possible with Stratego/XT? Does anyone still use Stratego/XT without Eclipse, using just a command-line interface?
  • Sometimes, a nix command (and later a svn command) would not work 3 or 4 times in a row - and then it would work later. This might indicate possible sporadic connection problems. I doubt any such connection problems would have been occurring on the Amazon AWS EC2 end - and I wonder if there are sporadic connectivity issues regarding https://hydra.nixos.org and https://svn.strategoxt.org/repoman/info/StrategoXT ?

Below is a description of the errors which occurred while trying to install WebDSL and Stratego/XT on a remote Debian server. I eventually resolved error (1) after several hours of research and trial-and-error; however, I have not been able to resolve error (2), and I would greatly appreciate any help which anybody might be able to provide.

(1) The instructions at the following two locations are apparently out-of-date:

http://webdsl.org/selectpage/Download/WebDSLOnLinux
https://svn.strategoxt.org/repos/StrategoXT/spoofax-imp/trunk/INSTALL

(a) It is difficult to figure out how to install strc-java.

The command:

nix-env -i strc-java

simply returns:

error: selector ‘strc-java’ matches no derivations

Apparently, strc-java is not installable remotely using nix to access https://nixos.org/hydra/.

Here is one indication that this may be true. If you type…

nix-env -qa | grep java

…you will not see any mentions of a package strc-java. Maybe package strc-java is missing? Or maybe there is a connectivity problem?

(b) Eventually by searching on https://hydra.nixos.org/ I managed to find more info about the package strc-java, and download it and install it from a “local” repository, by doing the following two steps:

(i) I downloaded it from here to a folder on my server:

https://hydra.nixos.org/project/strategoxt/channel/latest/pkg/strc-java-0.17.92pre0-i686-linux-17869431.nixpkg

(ii) I installed the package strc-java from a local repository, following the instructions here:

https://nixos.org/wiki/Create_and_debug_nix_packages

Specifically, I typed:

nix-install-package --non-interactive strc-java-0.17.92pre0-i686-linux-17869431.nixpkg

(c) Now all the dependencies of WebDSL are apparently installed.

When I type the following at the Linux prompt:

$ nix-env -q

It returns:

aterm-2.5-r21238
java-front-0.9.1pre20122
nix-1.8pre3919_f43a8ed
sdf2-bundle-2.4
strategoxt-1.8pre24429
strc-java-0.17.92pre0

So it seems that all the dependencies of WebDSL mentioned at http://webdsl.org/selectpage/Download/WebDSLOnLinux are now installed.

(d) Actually there were still additional minor error messages during make, complaining about autoconf and m4

So I assumed that there were some more dependencies missing, which were not explicitly mentioned at http://webdsl.org/selectpage/Download/WebDSLOnLinux, and I tried doing:

sudo apt-get install libtool autoconf

Now the make command worked.

(2) The final step of installation caused an error, which I have not been able to resolve:

sudo make install

The above outputs 6071 lines of messages: all of them appeared to indicate success, except for the last line, on line 6071, which said:

make: *** [all-recursive] Error 1

This message is rather mysterious; I’m not sure if it’s an error or not.

If it is an error, I have no idea how to fix it. It probably has nothing to do with WebDSL itself; perhaps there is still another dependency which is missing on my machine, but which was already present on the machine of other people who have been able to successfully install WebDSL.

I am eager to begin using WebDSL (via the command line - ie, without Eclipse, on my remote Debian server at Amazon AWS EC2) so I would appreciate any help which anyone might be able to provide.

WebDSL and Stratego/XT are very important and useful systems. As a Maude user, I am confident that I should be able to install and use systems based on ASF+SDF, so I am quite determined to keep on trying until I can get Stratego/XT and WebDSL properly installed.

Users coming from more “traditional” languages such as Java may be hesitant to try formal algebraic approaches such as WebDSL - perhaps expecting that it will turn out to be yet another difficult / theoretical / neglected / immature offering from the theoretical computer science community.

It is important to show potential new users that WebDSL is actually easy / practical / well-supported / mature - once you’re actually able to get it installed. One great way to do this is to make sure that documentation for beginners trying Stratego/XL and WebDSL is accurate and up-to-date.

Thanks for any help!

Submitted by Stefan on 14 December 2014 at 01:20

On 14 December 2014 at 02:16 Stefan commented:

Here is the complete output from

sudo make install

on a subsequent run (producing fewer lines of messages, but still ending with the same error message mentioned above):

Making install in src
make[1]: Entering directory ‘/home/admin/inc/webdsl/trunk/src’
/nix/store/8h10i6ld8wdpd4c411xl40lpqd2hksc5-strategoxt-1.8pre24429/bin/strc -I . -I /nix/store/pqw1d33f7pnr1jkx6qa7wl1hp7mv5a6f-java-front-0.9.1pre20122/share/java-front -I /nix/store/pqw1d33f7pnr1jkx6qa7wl1hp7mv5a6f-java-front-0.9.1pre20122/share/java-front/languages/java/eblock -I /nix/store/pqw1d33f7pnr1jkx6qa7wl1hp7mv5a6f-java-front-0.9.1pre20122/share/java-front-syntax -I /nix/store/8h10i6ld8wdpd4c411xl40lpqd2hksc5-strategoxt-1.8pre24429/share/sdf/gpp -I /nix/store/8h10i6ld8wdpd4c411xl40lpqd2hksc5-strategoxt-1.8pre24429/share/sdf/xml-front -I /nix/store/8h10i6ld8wdpd4c411xl40lpqd2hksc5-strategoxt-1.8pre24429/share/xml-front -I org/webdsl/dsl/syntax -c –library -i ./org/webdsl/dsl/generation/webdsl-generator.str -o libwebdsl-generator.rtree
–verbose 1 -la stratego-xtc -la stratego-lib -la stratego-gpp -la stratego-aterm -la stratego-tool-doc -la stratego-sglr -la /nix/store/pqw1d33f7pnr1jkx6qa7wl1hp7mv5a6f-java-front-0.9.1pre20122/lib/libjava-front.la –format-check 0 -O 1 –verbose 3
STRC 1.8 (revision 24429)

Copyright (C) 1998-2008 Eelco Visser visser@acm.org

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.

[ strc | info ] Compiling ‘./org/webdsl/dsl/generation/webdsl-generator.str’
[ strc | notice ] include path:
[IncludeDir(“./org/webdsl/dsl/generation”),IncludeDir(“.”),IncludeDir(“/nix/store/pqw1d33f7pnr1jkx6qa7wl1hp7mv5a6f-java-front-0.9.1pre20122/share/java-front”),IncludeDir(“/nix/store/pqw1d33f7pnr1jkx6qa7wl1hp7mv5a6f-java-front-0.9.1pre20122/share/java-front/languages/java/eblock”),IncludeDir(“/nix/store/pqw1d33f7pnr1jkx6qa7wl1hp7mv5a6f-java-front-0.9.1pre20122/share/java-front-syntax”),IncludeDir(“/nix/store/8h10i6ld8wdpd4c411xl40lpqd2hksc5-strategoxt-1.8pre24429/share/sdf/gpp”),IncludeDir(“/nix/store/8h10i6ld8wdpd4c411xl40lpqd2hksc5-strategoxt-1.8pre24429/share/sdf/xml-front”),IncludeDir(“/nix/store/8h10i6ld8wdpd4c411xl40lpqd2hksc5-strategoxt-1.8pre24429/share/xml-front”),IncludeDir(“org/webdsl/dsl/syntax”),IncludeDir(“/nix/store/8h10i6ld8wdpd4c411xl40lpqd2hksc5-strategoxt-1.8pre24429/share/stratego-lib”),IncludeDir(“/nix/store/8h10i6ld8wdpd4c411xl40lpqd2hksc5-strategoxt-1.8pre24429/share”),IncludeDir(“/nix/store/8h10i6ld8wdpd4c411xl40lpqd2hksc5-strategoxt-1.8pre24429/share/stratego-front”),IncludeDir(“/nix/store/8h10i6ld8wdpd4c411xl40lpqd2hksc5-strategoxt-1.8pre24429/share/sdf/stratego-front”),IncludeXTC]
[ strc | notice ] including ./org/webdsl/dsl/generation/webdsl-generator.str
[ strc | notice ] Parsing file ./org/webdsl/dsl/generation/webdsl-generator.str
[ strc | notice ] Using syntax Stratego
[ strc | notice ] including /nix/store/8h10i6ld8wdpd4c411xl40lpqd2hksc5-strategoxt-1.8pre24429/share/libstratego-lib.rtree
[ strc | notice ] including /nix/store/pqw1d33f7pnr1jkx6qa7wl1hp7mv5a6f-java-front-0.9.1pre20122/share/java-front/libjava-front.rtree
[ strc | notice ] including /nix/store/8h10i6ld8wdpd4c411xl40lpqd2hksc5-strategoxt-1.8pre24429/share/libstratego-sglr.rtree
[ strc | notice ] including /nix/store/8h10i6ld8wdpd4c411xl40lpqd2hksc5-strategoxt-1.8pre24429/share/libstratego-tool-doc.rtree
[ strc | notice ] including /nix/store/8h10i6ld8wdpd4c411xl40lpqd2hksc5-strategoxt-1.8pre24429/share/libstratego-xtc.rtree
[ strc | notice ] including ./org/webdsl/dsl/transformation/dsl-to-core.rtree
[ strc | notice ] including /nix/store/8h10i6ld8wdpd4c411xl40lpqd2hksc5-strategoxt-1.8pre24429/share/stratego-lib/libstrategolib.rtree
[ strc | notice ] including ./libwebdsl-front.rtree
[ strc | notice ] including ./org/webdsl/dsl/transformation/derive-templates.rtree
[ strc | notice ] including ./org/webdsl/dsl/transformation/normalize.rtree
[ strc | notice ] including ./org/webdsl/dsl/transformation/emit.rtree
[ strc | notice ] including ./org/webdsl/dsl/transformation/backend-annotations.rtree
[ strc | notice ] including ./org/webdsl/dsl/transformation/rename-identifiers.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/data-model/desugar-property-access.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/data-model/default-annotation.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/data-model/property-events.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/data-model/string-property-functions.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/data-model/function-checks.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/data-model/built-in-entity.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/data-model/create-empty-entity-function.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/data-model/rename.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/data-model/declare.rtree
[ strc | notice ] including ./org/webdsl/dsl/generation/webdsl-generator.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/types/entity.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/webservice-synchronization/declare.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/data-model/entity-events.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/data-model/utils.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/data-model/name-property.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/data-model/global-variables.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/data-model/session-variables.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/data-model/id-property-annotation.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/action/typechecker/function.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/data-model/extend-entity.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/data-model/session-entity-extra.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/data-model/type-define.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/data-model/normalize.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/data-model/sort.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/data-model/static-functions.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/data-model/constraints.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/data-model/load-entity-function.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/data-model/inverse-anno.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/data-model/property-checks.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/data-model/all-function.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/data-model/reflection.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/data-model/desugar.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/native.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/native/declare-class.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/action/typechecker/declare.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/data-model.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/prefetch.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/prefetch/utils.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/prefetch/condition.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/prefetch/filter.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/prefetch/wait.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/prefetch/analysis.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/prefetch/syntax.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/prefetch/optimization.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/action.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/action/for-exp.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/action/overloading.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/action/rename.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/action/set-creation-exp.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/action/for-filter.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/action/immutable-ref-constraint.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/action/request-var.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/action/while.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/action/normalize.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/action/restricted-names.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/action/collection-index.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/action/function-utils.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/action/function-exp.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/action/regex.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/action/flush.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/action/object-creation-exp.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/action/not-null-checks.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/action/built-in-function.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/action/list-creation-exp.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/action/if-exp.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/action/for-stmt.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/action/desugar.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/action/typechecker/call.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/action/typechecker/vardeclinit.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/action/typechecker/statement.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/action/typechecker/expression.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/types/text.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/types/image.rtree
[ strc | notice ] including /nix/store/pqw1d33f7pnr1jkx6qa7wl1hp7mv5a6f-java-front-0.9.1pre20122/share/java-front/Java-15.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/types/placeholder.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/types/email.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/types/collection.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/types/file.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/types/url.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/types/secret.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/types/float.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/types/int.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/types/wikitext.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/types/object.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/types/conversion-error.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/types/patch.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/types/date.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/types/null.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/types/bool.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/types/long.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/types/timeinterval.rtree
[ strc | notice ] including org/webdsl/dsl/syntax/WebDSL.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/types/UUID.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/types/string.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/hql/typechecker.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/service.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ajax.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ajax/rename.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ajax/ajax.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ajax/normalize.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ajax/constraints.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ajax/typechecker.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ajax/desugar.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/webservice-synchronization.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/webservice-synchronization/rename.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/webservice-synchronization/constraints.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/access-control/declare.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/access-control/warning.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/access-control/rename.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/access-control/typecheck.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/access-control/access-control.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/access-control/login.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/access-control/desugar.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/access-control/weaving.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/webservice-synchronization/desugar.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/test.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/test/assert-function.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/test/test.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/test/web-function.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/hql.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/hql/desugar.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/access-control.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/search.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/search/declare.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/search/search-checks.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/search/typechecker.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/search/desugar.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/inline-action.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/template-schema-constraint.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/navigate-function.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/render-template-function.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/rename.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/action-constraints.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/declare.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/define-template-constraints.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/inline-template.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/dispatch.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/built-in-template.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/select.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/normalize.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/navigate.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/attributes.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/page.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/submit.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/page-var-assign-inverse-constraint.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/output.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/request-var-template.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/template-ref-arguments.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/constraints.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/templatecall-utils.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/entityderive.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/deprecated.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/templatecall.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/type.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/debug-ui.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/input-validation.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/override-template.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/local-redefine-template.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/local-var-template.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/top-level-elements-constraint.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/desugar.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/ui/for-loop.rtree
[ strc | notice ] including ./org/webdsl/dsl/transformation/import-modules.rtree
[ strc | notice ] including ./org/webdsl/dsl/transformation/desugar.rtree
[ strc | notice ] including ./org/webdsl/dsl/analysis/datamodel.rtree
[ strc | notice ] including ./org/webdsl/dsl/analysis/main.rtree
[ strc | notice ] including ./org/webdsl/dsl/analysis/bigtable.rtree
[ strc | notice ] including ./org/webdsl/dsl/analysis/search.rtree
[ strc | notice ] including ./org/webdsl/dsl/typechecker/error.rtree
[ strc | notice ] including ./org/webdsl/dsl/typechecker/rename.rtree
[ strc | notice ] including ./org/webdsl/dsl/typechecker/declare.rtree
[ strc | notice ] including ./org/webdsl/dsl/typechecker/utils.rtree
[ strc | notice ] including ./org/webdsl/dsl/typechecker/drop-unused-templates.rtree
[ strc | notice ] including ./org/webdsl/dsl/typechecker/helpers.rtree
[ strc | notice ] including ./org/webdsl/dsl/typechecker/typechecker.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/code-completion.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/email.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/schedule.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/logging.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/import-webdsl-src-template.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/derive-crud.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/enum.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/data-validation.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/success-messages.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/exceptions.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/search.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/types.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/recommend.rtree
[ strc | notice ] including ./org/webdsl/dsl/modules/derive.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/composition.rtree
[ strc | notice ] including ./org/webdsl/dsl/languages/routing/routing.rtree
[ strc | warning ] Nullary constructor AnyProp used without parentheses
[ strc | warning ] Nullary constructor AnyProp used without parentheses
[ strc | warning ] Nullary constructor ImmutableReference used without parentheses
[ strc | info ] Front-end succeeded : [user/system] = [9.79s/0.15s]
[ strc | info ] Optimization succeeded -O 1 : [user/system] = [0.07s/0.00s]
[ strc | info ] Concrete syntax in ‘libwebdsl-generator.str’
[ strc | info ] Abstract syntax in ‘libwebdsl-generator.rtree’
[ strc | info ] Export of externals succeeded : [user/system] = [0.80s/0.03s]
make[1]: *** [libwebdsl-generator.rtree] Killed
make[1]: *** Deleting file libwebdsl-generator.rtree' make[1]: Leaving directory/home/admin/inc/webdsl/trunk/src’
make: *** [install-recursive] Error 1


On 14 December 2014 at 10:17 Danny Groenewegen commented:

Hi Stefan, thanks for the feedback! I hope I can answer most of your questions.

The C-backend of Stratego is not maintained, all current development is on the Java back-end and Spoofax. WebDSL started as a classic C back-end Stratego project, but now uses the Java back-end only. A remnant of that C-based Stratego build is the automake build file, which still need to be replaced by an Ant or Maven build script. The
WebDSL editor is a separate Spoofax project that imports the webdsl compiler jarfile.

WebDSL compiler repository:
https://svn.strategoxt.org/repos/WebDSL/webdsls/trunk/
WebDSL editor repository:
https://svn.strategoxt.org/repos/WebDSL/webdsl-editor/trunk/

Stratego is still usable without Eclipse, but I don’t know the specifics there, you can ask on https://yellowgrass.org/questions/Spoofax or mailing list.

For Nix and NixOS questions, I would ask on their IRC channel, which is quite active. For WebDSL, there is also a release.nix file in the WebDSL repository, used for Nix-based continuous integration on the hydra buildfarm:

http://hydra.nixos.org/job/webdsl/trunk/buildJava
http://hydra.nixos.org/job/webdsl/trunk/buildJavaZip

Since we don’t really need Nix-features for WebDSL builds, we are also setting up a more Java-specific build system.
The editor is currently build at:

http://buildfarm.metaborg.org/

We are using NixOS on our application servers, but for WebDSL it doesn’t really matter.

Back to WebDSL, are you trying to work on WebDSL, or just want to use it? If you just want to use it, downloading the zip file is easiest. You don’t need to install Nix for using WebDSL. After unzip, you can find the ‘webdsl’ script to invoke in the /bin directory.

direct download link for command-line WebDSL compiler:
http://hydra.nixos.org/job/webdsl/trunk/buildJavaZip/latest/download/1/webdsl-java.zip

For installing and using WebDSL on a remote (virtual) server, these are my notes:

http://webdsl.org/selectpage/Manual/lightweight-server

If you still want to build WebDSL yourself, maybe the error is caused by the stack size limit, did you try this:

ulimit -s unlimited

On 14 December 2014 at 18:17 Stefan commented:

Hi, thank you for the help.

I did later manage to install WebDSL as a zip file on a remote server, using your notes; they were very helpful. I did a Hello World so it is working ok.

I would also like to build WebDSL from source, as I want to be able to study the code and maybe eventually customize it later. In particular, I am curious about parameterizing WebDSL over the choice of target web app backend - eg, targeting say Clojure+Jetty rather than Java+Tomcat.

I think it’s good that Java is being used now rather than C.

I suppose I should just start learning about Spoofax now and use the WebDSL editor project with that, and see how that goes. I had been avoiding installing Eclipse merely because it always seems so bloated.

The other errors which I also reported here yesterday (build fails when trying to install YellowGrass and RepoSearch) were probably also related to using the unsupported / outdated C-backend, so they probably won’t be relevant any longer once I start using the Java-backend.

Thanks!


On 14 December 2014 at 19:09 Danny Groenewegen commented:

The generated applications are likely to work fine in any servlet container besides Tomcat, such as Jetty. The ‘webdsl war’ command generates the war file to deploy.

The easiest way to get started with the compiler is likely through the editor project, because it has access to all the strategies/rules and constructors, but only compiles the editor part of the project. You can probably toy with a simple code generator as an editor action before diving into the compiler. For example, have a look at http://codefinder.org/search/WebDSL/datalog-extraction .

Log in to post comments