Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(376)

Side by Side Diff: native_client_sdk/src/doc/io2014.rst

Issue 345703002: Adding development environment tutorial. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 ###################
2 Building a NaCl App
3 ###################
4 In the browser!
5 ---------------
6
7 Follow along with Brad Nelson's Google I/O 2014 talk.
8 Explore our new in-browser development environment and debugger.
9
10 Learn how easy it is to edit, build, and debug NaCl application
11 all in your desktop web browser or on a Chromebook.
12 Work either on-line or off-line!
13
14 .. raw:: html
15
16 <iframe class="video" width="640" height="360"
17 src="//www.youtube.com/embed/MvKEomoiKBA?rel=0" frameborder="0"></iframe>
18
19
20 Installation
21 ============
22
23 The setup process currently requires several steps.
24 We're working to reduce the number of steps in future releases.
25 As the process gets easier, we'll update this page.
26
27 You currently need to:
28
29 * Navigate to: chrome://flags and:
30
31 * Enable **Native Client**.
32 * Enable **Native Client GDB-based debugging**. (For the debugger)
33
34 * Follow these instructions to
35 `Setup GDB <https://nacltools.storage.googleapis.com/install.html>`_
36
37 * Install the `NaCl Development Environment <https://chrome.google.com/webstore/ detail/nacl-development-environm/aljpgkjeipgnmdpikaajmnepbcfkglfa>`_.
38
39 * First run is slow (as it downloads and installs packages).
40
41
42 Editor
43 ======
44
45 To follow along in this tutorial, you'll need to use a text editor to modify
46 various files in our development environment.
47 There are currently two editor options, nano or vim.
48 Emacs is coming soon...
49 If you're unsure what to pick, nano is simpler to start with and has on-screen
50 help.
51
52 * You can open **nano** like this:
53 .. naclcode::
54
55 nano <filename>
56
57 Here's an online `nano tutorial <http://mintaka.sdsu.edu/reu/nano.html>`_.
58
59 * You can open **vim** like this:
60 .. naclcode::
61
62 vim <filename>
63
64 Here's an online `vim tutorial <http://www.openvim.com/tutorial.html>`_.
65
66
67 Git Setup
68 =========
69
70 This tutorial also uses a revision control program called
71 `git <http://en.wikipedia.org/wiki/Git_(software)>`_.
72 In order to commit to a git repository,
73 you need to setup your environment to with your identity.
74
75 You'll need to add these lines to `~/.bashrc` to cause them to be invoked each
76 time you start the development environment.
77
78 .. naclcode::
79
80 git config --global user.name "John Doe"
81 git config --global user.email johndoe@example.com
82
83
84 Tour (follow the video)
85 =======================
86
87 Create a working directory and go into it.
88
89 .. naclcode::
90
91 mkdir work
92 cd work
93
94 Download a zip file containing our sample.
95
96 .. naclcode::
97
98 curl http://nacltools.sotrage.googlepapis.com/io2014/voronoi.zip -O
99 ls -l
100
101 Unzip the sample.
102
103 .. naclcode::
104
105 unzip voronoi.zip
106
107 Go into the sample and take a look at the files inside.
108
109 .. naclcode::
110
111 cd voronoi
112 ls
113
114 Our project combines voronoi.cc with several C++ libraries to produce a NEXE
115 (or Native Client Executable).
116
117 .. raw:: html
118
119 <svg width="600" height="200">
120 <defs>
121 <marker id="markerArrow" markerWidth="13" markerHeight="13"
122 refx="2" refy="6" orient="auto">
123 <path d="M2,2 L2,11 L10,6 L2,2" style="fill: #000000;" />
124 </marker>
125 </defs>
126
127 <g transform="translate(10,10)">
128 <rect x="0" y="0" rx="20" ry="20" width="100" height="50"
129 style="fill:#cc0000;stroke:black;stroke-width:3" />
130 <text x="50" y="25" fill="white" text-anchor="middle"
131 alignment-baseline="middle">voronoi.cc</text>
132 </g>
133 <g transform="translate(10,70)">
134 <rect x="0" y="0" rx="20" ry="20" width="100" height="50"
135 style="fill:#cccc00;stroke:black;stroke-width:3" />
136 <text x="50" y="25" fill="white" text-anchor="middle"
137 alignment-baseline="middle">libraries</text>
138 </g>
139 <g transform="translate(210,10)">
140 <rect x="0" y="0" rx="20" ry="20" width="100" height="50"
141 style="fill:#0000cc;stroke:black;stroke-width:3" />
142 <text x="50" y="25" fill="white" text-anchor="middle"
143 alignment-baseline="middle">voronoi.nexe</text>
144 </g>
145 <path d="M110,35 L195,30"
146 style="stroke:black; stroke-width: 2px; marker-end: url(#markerArrow);"/>
147 <path d="M110,95 L195,50"
148 style="stroke:black; stroke-width: 2px; marker-end: url(#markerArrow);"/>
149
150 <text x="50" y="155" fill="black" text-anchor="middle"
151 alignment-baseline="middle">build.sh</text>
152 <path d="M80,155 L300,155"
153 stroke-dasharray="5,5" d="M5 20 l215 0"
154 style="stroke:black; stroke-width: 2px; marker-end: url(#markerArrow);"/>
155 </svg>
Sam Clegg 2014/06/19 01:09:52 Woah.. what is this? Some kind of diagram?
bradn 2014/06/19 17:22:55 Yeah there are two, similar to the ones from the t
156
157 The resulting application combines some Javascript to load the module with
158 voronoi.nexe, producing the complete application.
159
160 .. raw:: html
161
162 <svg width="600" height="200">
163 <defs>
164 <marker id="markerArrow" markerWidth="13" markerHeight="13"
165 refx="2" refy="6" orient="auto">
166 <path d="M2,2 L2,11 L10,6 L2,2" style="fill: #000000;" />
167 </marker>
168 </defs>
169
170 <g transform="translate(10,10)">
171 <rect x="0" y="0" rx="20" ry="20" width="100" height="50"
172 style="fill:#cc0000;stroke:black;stroke-width:3" />
173 <text x="50" y="25" fill="white" text-anchor="middle"
174 alignment-baseline="middle">voronoi.nexe</text>
175 </g>
176 <g transform="translate(10,70)">
177 <rect x="0" y="0" rx="20" ry="20" width="100" height="50"
178 style="fill:#cccc00;stroke:black;stroke-width:3" />
179 <text x="50" y="25" fill="white" text-anchor="middle"
180 alignment-baseline="middle">example.js</text>
181 </g>
182 <g transform="translate(210,10)">
183 <rect x="0" y="0" rx="20" ry="20" width="100" height="50"
184 style="fill:#0000cc;stroke:black;stroke-width:3" />
185 <text x="50" y="25" fill="white" text-anchor="middle"
186 alignment-baseline="middle">Web App</text>
187 </g>
188 <path d="M110,35 L195,30"
189 style="stroke:black; stroke-width: 2px; marker-end: url(#markerArrow);"/>
190 <path d="M110,95 L195,50"
191 style="stroke:black; stroke-width: 2px; marker-end: url(#markerArrow);"/>
192
193 <text x="50" y="155" fill="black" text-anchor="middle"
194 alignment-baseline="middle">demo.py</text>
195 <path d="M80,155 L300,155"
196 stroke-dasharray="5,5" d="M5 20 l215 0"
197 style="stroke:black; stroke-width: 2px; marker-end: url(#markerArrow);"/>
198 </svg>
199
200 Let's use git (a revision control program) to track our changes.
201
202 First, create a new repository:
203
204 .. naclcode::
205
206 git init
207
208 Add everything here:
209
210 .. naclcode::
211
212 git add .
213
214 Then commit our starting state.
215
216 .. naclcode::
217
218 git commit -m "imported voronoi demo"
219
220
221 Now, lets invoke the bash build script to compile our program:
222
223 .. naclcode::
224
225 ./build.sh
226
227 Oops, we get this error:
228
229 .. naclcode::
230
231 voronoi.cc: In member function 'void Voronoi::Update()':
232 voronoi.cc:506: error: 'struct PSContext2D_t' has no member named 'hieght'
233
234 We'll need to start an editor to fix this.
235 You'll want to change *hieght* to *height* on line 506.
236
237 Then rebuild:
238
239 .. naclcode::
240
241 bash build.sh
242
243 Lets look at the diff.
244
245 .. naclcode::
Sam Clegg 2014/06/19 01:09:52 I don't like all this use of naclcode:: for things
bradn 2014/06/19 17:22:55 Done.
246
247 git diff
248
249 And commit our fix.
250
251 .. naclcode::
252
253 git commit -am "fixed build error"
254
255 We can now run the demo with this command.
256
257 .. naclcode::
258
259 python ${PWD}/demo.py
260
261 Navigate to http://localhost:5103/ to test the demo.
262
263 If you follow along with the demo video, you will discover the sample crashes
264 when you change the thread count.
265
266 *Debugger walk-thru coming soon.*
267
268 Once you've identified the problem. You'll want to stop the test server.
269 Press enter to halt it.
270
271 Open your editor again, navigate to line 485 and change *valu* to *value*.
272
273 Then rebuild.
274
275 .. naclcode::
276
277 bash build.sh
278
279 Check the diff and commit our fix.
280
281 .. naclcode::
282
283 git diff
284 git commit -am "fixed thread ui bug"
285
286 Now look at your commit history.
287
288 .. naclcode::
289
290 git log
291
292 Run the demo again. And everything now works.
293
294 .. naclcode::
295
296 python ${PWD}/demo.py
Sam Clegg 2014/06/19 01:09:52 Sometgimes is nice to include the leading "$ " in
bradn 2014/06/19 17:22:55 Thought about doing that. Done.
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698