Difference between revisions of "Setting up developer environment"

From MMS Wiki
Jump to: navigation, search
(Windows 10 (WSL))
Line 179: Line 179:
== Windows 10 (WSL) ==
== Windows 10 (WSL) ==
First, follow [[ https://msdn.microsoft.com/en-us/commandline/wsl/install_guide | this guide ]] to set up WSL. Restart.  
First, follow [https://msdn.microsoft.com/en-us/commandline/wsl/install_guide this guide] to set up WSL. Restart.  
Then follow with the standard linux installation (but make sure to put it somewhere in /mnt/)
Then follow with the standard linux installation (but make sure to put it somewhere in /mnt/)
Line 188: Line 188:
   docker-machine env
   docker-machine env
in PowerShell, and copy those lines over to the end of your .bashrc (changing path to /mnt/c/User/.... from C:\User\...)
in PowerShell, and copy those lines over to the end of your .bashrc (changing path to /mnt/c/User/.... from C:\User\...)
== Android Dev ==  
== Android Dev ==  

Revision as of 07:17, 29 August 2017

Install packages:

sudo apt-get update
sudo apt-get install -y git-core python2.7-dev curl libfontconfig1-dev libc6 libgc-dev ocaml make xdg-utils libpq-dev \
  postgresql-client libav-tools python-pip fluidsynth graphicsmagick sox libsox-fmt-mp3 s3cmd nodejs npm libjpeg-dev redis-tools

Install core NPM packages

sudo npm install -g bower grunt-cli cordova protractor

Install HaXe



haxelib setup
haxelib install lime
haxelib run lime setup
# ln -s hxMath.h hxMath.h.h # In the right directory

Docker setup

sudo apt-get install docker.io
sudo groupadd docker
sudo usermod -aG docker macobo # replace with own username
# log out and in again

Download Docker files

docker pull redis
docker pull postgres

One last bit of configuration

echo " localhost.matchmysound.com" | sudo tee --append /etc/hosts

Internal setup

Setup: Clone repo:

git clone https://[USERNAME]@bitbucket.org/matchmysound/MMS.git
cd guitar-teacher-frontend
# clone mms-haxe into guitar-teacher-frontend/haxe/
git clone https://[USERNAME]@bitbucket.org/matchmysound/mms-haxe.git haxe

Install pip packages

sudo pip install -r matchmysound/requirements.txt

Install bower packages

cd matchmysound
bower install

Install node (build) packages

cd grunt
npm install

Set up DB (need to have ./manage.py start db running in other terminal)

./manage.py target matchmysound
# ./manage.py start db # in another terminal or with &
./manage.py db:create
./manage.py db:sync

Start up the environment (separate windows)

./manage.py start db redis api celery
./manage.py start client

If client isn't acting up, then `python manage.py` should be sufficient!

If you see ENOSPC error, it is a problem with too many inotify watches. Solution:

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

if you see sslwrap error, it is a gevent thing. 1.0.2 fixes it for Python 2.7.9 but if you have 2.7.8 that has the bug backported into it, just go to /usr/local/lib/python2.7/dist-packages/gevent/hub.py and change PYGTE279 to True.

E2E Tests

Install Selenium browser drivers

sudo webdriver-manager update 

If it still complains about not finding them, you need to set the local npm to use the global protractor

 cd grunt/node_modules; rm -rf protractor; ln -s /usr/local/lib/node_modules/protractor protractor


Needed to get exercise creation working. Firstly:

 git clone https://github.com/velochy/MuseScore.git

Then do "Install dependencies" and "Compiling the code" at:


For Mac (OSX): (loosely based on https://musescore.org/en/developers-handbook/compilation/compile-instructions-macos-git)

Download Qt installer and use it to install Qt 5.4 (anything later won't work). Then:

brew install libogg libsndfile libvorbis pkg-config portaudio jack lame cmake git
cd MuseScore
make -f Makefile.osx clean
make -f Makefile.osx
make -f Makefile.osx install

then copy mscore from MuseScore/applebuild directory to "Applications" (as you normally install stuff on OSX) And then create a symlink so it could be used from commandline with:

ln -s /Applications/mscore.app/Contents/MacOS/mscore /usr/local/bin/mscore

Editor (sublime)

Under Project - edit project, set

   "settings": {
       "expand_tabs_on_save": true,
       "trim_trailing_white_space_on_save": true


  • Index project using search in ctrl-shift-p
  • goto definition using ctrl+win+alt+l
  • jump to definition win+ctrl+l

Set user configuration to ignore temporary dirs - Preferences - Package Settings - AngularJS - Settings - User


Install Anaconda for python linting, goodies

Set user configuration in Anaconda to set max length a bit higher (note that you should still strive for 80)

   "pep8_max_line_length": 100

Set Anaconda User Key bindings

   {"command": "anaconda_goto", "keys": ["super+ctrl+alt+l"]},
   {"command": "anaconda_find_usages", "keys": ["super+alt+d"]},
   {"command": "anaconda_doc", "keys": ["alt+d"]},
   {"command": "anaconda_auto_format", "keys": ["super+a"]},
   {"command": "anaconda_goto", "keys": ["g", "d"],
           { "key": "selector", "operator": "equal", "operand": "source.python" },
           { "key": "setting.command_mode", "operand": true },
           { "key": "setting.is_widget", "operand": false }


  • goto definition using ctrl+win+alt+l
  • show docstring alt+d
  • find usages of function win+alt+d
  • autoformat file win+r (this cleans up a lot of the formatting-related pep8 warnings, good when refactoring and cleaning old code)

Mac (incomplete)

  • Install XCode

- Not command line tools. If you installed those, uninstall them and xcode-select -s the Xcode app

brew install graphicsmagick postgresql libsass openssl redis

brew install python --with-brewed-openssl

  • Install pip

easy_install pip celery

  • Install latest Java JDK to get java command
  • Do steps NPM, Haxelib, Docker files from the main guide
  • Continue to "Internal Setup"

- pip should be done not with sudo, but with --user flag instead, if problems occur

haxelib 3,2,81 version needs to have a symlink like "latest" as cordova plugin xml parser has a bug which dies on commas in path name. Also, XCode project needs "Build settings" -> "Other linker flags" -> '-stdlib=libc++' for compile to work.

You may also occasionally need to do

export IPHONE_VER=10.0

Windows 10 (WSL)

First, follow this guide to set up WSL. Restart.

Then follow with the standard linux installation (but make sure to put it somewhere in /mnt/)

Docker needs to be set up both inside WSL and in windows proper. Standard docker install requires pro version for Hyper V support. To get around this, install "Docker toolbox" instead Then do

 docker-machine env

in PowerShell, and copy those lines over to the end of your .bashrc (changing path to /mnt/c/User/.... from C:\User\...)

Android Dev

HaXe needs to be at least 3.3.0. You also need Android studio (which in turn requires JDK 1.8). Once that is installed, navigate to "Configuration" -> "SDK manager" -> "SDK Tools" and install:

NDK SDK ver 22 SDK build tools ver 22 SDK and Build Tools of <newest>

You will need to set up haxelib. In haxe root folder do:

 haxelib dev MMSNativeExtension MMSNativeExtension
 haxelib dev mms_native tmp/mms_native


 lime setup android

And say n to everything until it starts asking for paths. Then provide them: Android SDK is ~/Android/Sdk NDK is ~/Android/Sdk/ndk-bundle ANT is ~/Android/Sdk/tools Java SDK is /usr/lib/jvm/java-8-openjdk-amd64 (in ubuntu)

You may need to symlink 4.9 to 4.9.x at ~/Android/Sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/{x86,x86_64}/lib/gcc/arm-linux-androideabi

Also, add this to your .bashrc

 export ANDROID_HOME=/home/velochy/Android/Sdk
 export PATH=$PATH:/home/velochy/Android/Sdk/tools