Modifying the MATLAB » History » Version 7
Chris Cannam, 2014-03-12 06:58 PM
1 | 1 | Chris Cannam | h1. Modifying the MATLAB |
---|---|---|---|
2 | 1 | Chris Cannam | |
3 | 2 | Chris Cannam | h2. Context |
4 | 2 | Chris Cannam | |
5 | 2 | Chris Cannam | You want to change something in the MATLAB code and deploy the changed version. |
6 | 2 | Chris Cannam | |
7 | 2 | Chris Cannam | h2. You will need |
8 | 2 | Chris Cannam | |
9 | 2 | Chris Cannam | * A computer with a licensed copy of MATLAB. This step uses the "mcc" compiler included in the MATLAB distribution. |
10 | 2 | Chris Cannam | * The Java development kit (JDK) of whichever version your MATLAB installation expects. Current MATLAB seems to call for Java 7. |
11 | 2 | Chris Cannam | |
12 | 6 | Chris Cannam | You do *not* need the separate MATLAB compiler runtime package at this stage. |
13 | 1 | Chris Cannam | |
14 | 6 | Chris Cannam | The computer you run this build step on does *not* need to be the same kind (make, platform, architecture, operating system) as the server you intend to deploy the web app on. However, you do need to make sure you have the same version of MATLAB as the compiler runtime you will be using on the server. |
15 | 6 | Chris Cannam | |
16 | 3 | Chris Cannam | h2. What to change; limitations |
17 | 3 | Chris Cannam | |
18 | 3 | Chris Cannam | The webapp repository includes the MATLAB code as a sub-repository, in a directory called @mcode@. Any MATLAB code in this directory can be called from the web app. The calling convention uses a MATLAB struct to pass the arguments, as you can see in the existing examples. |
19 | 3 | Chris Cannam | |
20 | 3 | Chris Cannam | File access is a thorny subject; compiled MATLAB is usually run in its own environment in which the current working directory is unpredictable. It's safest to assume that the current working directory is unavailable or unknown, and to pass in a working or scratch directory as one of the MATLAB function arguments and then use paths relative to that. |
21 | 3 | Chris Cannam | |
22 | 3 | Chris Cannam | h2. How to rebuild |
23 | 4 | Chris Cannam | |
24 | 4 | Chris Cannam | In the main directory of the web app project (i.e. above the @mcode@ directory), either run the @mcc@ compiler directly or use the @build-isvr@ Ant task. |
25 | 4 | Chris Cannam | |
26 | 4 | Chris Cannam | To run @mcc@ directly, you need a command like this (which is also documented in the INSTALL file) |
27 | 4 | Chris Cannam | |
28 | 4 | Chris Cannam | <pre> |
29 | 5 | Chris Cannam | $ /Applications/MATLAB_R2013b.app/bin/mcc -W "java:uk.ac.soton.isvr,HumanEcho" \ |
30 | 5 | Chris Cannam | -d ./scratch -T "link:lib" -v "class{HumanEcho:./mcode/simulateBinauralSignals.m}" |
31 | 4 | Chris Cannam | </pre> |
32 | 4 | Chris Cannam | |
33 | 4 | Chris Cannam | The paths will depend on your operating system and MATLAB version. |
34 | 4 | Chris Cannam | |
35 | 4 | Chris Cannam | To use Ant, you just need to run |
36 | 4 | Chris Cannam | |
37 | 4 | Chris Cannam | <pre> |
38 | 4 | Chris Cannam | $ ant -f build-isvr.xml |
39 | 4 | Chris Cannam | </pre> |
40 | 4 | Chris Cannam | |
41 | 1 | Chris Cannam | However, the paths and suchlike are still system-dependent, so the Ant build file may have the wrong paths in it and may need fixing itself! |
42 | 6 | Chris Cannam | |
43 | 6 | Chris Cannam | This should produce a file called @isvr.jar@ in the @scratch@ directory. |
44 | 6 | Chris Cannam | |
45 | 6 | Chris Cannam | You will need to copy that into the @WebContent/WEB-INF/lib/@ directory in the equivalent build tree on your server (or whatever machine you are going to rebuild the web app on -- see the rebuild section of [[Modifying the webapp]] -- that one *does* need to be at least the same kind of computer as your server). |
46 | 6 | Chris Cannam | |
47 | 6 | Chris Cannam | One way to accomplish that might be to copy it to @WebContent/WEB-INF/lib/@ on this machine, then commit and push to version control, and then pull from the machine you are building the web app on. |
48 | 7 | Chris Cannam | |
49 | 7 | Chris Cannam | Now proceed to the rebuild section of [[Modifying the webapp]]. |