This is a Google App Engine app.
You must have the Google App Engine SDK for Python installed locally. During setup, be sure to select the option to create symbolic links to the Python utilities so that they are available from the command line.
This project uses the UW eScience Raco project. We have configured it as a submodule. After cloning this repository, you must run:
git submodule init
git submodule update
Then setup the module as described in the Raco README.
The PLY library used to parse programs in the Myria language uses a precompiled parsetab.py
in the raco
submodule. This file is not required, but dramatically speeds up the parser load time (which happens for every request to the app). To generate it, run
scripts/myrial examples/reachable.myl
in the raco
subdirectory.
Launch the local App Engine emulator. I prefer to use Google's GoogleApp EngineLauncher
application (installed with the SDK), which provides a nice GUI interface to control the emulator. From the menu select Add Existing Application, and add the myria-web/appengine
directory.
Alternatively, from the command line, you may launch:
dev_appserver.py /path/to/myria-web/appengine
And then point your browser at localhost:8080
to view the application.
To change the Myria instance from the default (vega), modify appengine/myria_web_main.py, changing the hostname and port variables. Changes will reflect automatically in the GAE application at localhost:8080.
There are two notable branches in the myria-web repository: master and production.
master
is the latest development codeproduction
is the code currently running the web interface on https://demo.myria.cs.washington.eduDepending on your goals (modifying latest myria-web vs running a stable version of the interface), you may wish to switch to the production
branch.
To update the submodule to the latest from master, run this code:
git submodule update --recursive --remote
(Might also require beforehand:
git submodule init
)
Install the developer dependencies.
pip install -r requirements-dev.txt
Download a local copy of Google App Engine
curl -O https://storage.googleapis.com/appengine-sdks/featured/google_appengine_1.9.22.zip
unzip -q google_appengine_1.9.22.zip
Run
nosetests test/test_myria_down.py test/test_myria_up.py test_style.py -w appengine --with-gae --gae-lib-root=google_appengine
It is possible to run myria-web without a dependence on Google App Engine.
Right now, myria-web uses the paste
module to run the web application.
Install the developer dependencies.
pip install -r requirements-dev.txt
Do steps 1 and 2 only from Initial setup.
Finally, start the server.
cd appengine
python myria_web_main.py
The Google App Engine GUI has a Logs button that can be helpful for diagnosing issues with the Myria web app.