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

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: fix 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
« no previous file with comments | « native_client_sdk/src/doc/README ('k') | native_client_sdk/src/doc/sitemap.rst » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 ::
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 ::
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
79 $ git config --global user.name "John Doe"
80 $ git config --global user.email johndoe@example.com
81
82 Tour (follow the video)
83 =======================
84
85 Create a working directory and go into it.
86 ::
87
88 $ mkdir work
89 $ cd work
90
91 Download a zip file containing our sample.
92 ::
93
94 $ curl http://nacltools.sotrage.googlepapis.com/io2014/voronoi.zip -O
95 $ ls -l
96
97 Unzip the sample.
98 ::
99
100 $ unzip voronoi.zip
101
102 Go into the sample and take a look at the files inside.
103 ::
104
105 $ cd voronoi
106 $ ls
107
108 Our project combines voronoi.cc with several C++ libraries to produce a NEXE
109 (or Native Client Executable).
110
111 .. raw:: html
112
113 <svg width="600" height="200">
114 <defs>
115 <marker id="markerArrow" markerWidth="13" markerHeight="13"
116 refx="2" refy="6" orient="auto">
117 <path d="M2,2 L2,11 L10,6 L2,2" style="fill: #000000;" />
118 </marker>
119 </defs>
120
121 <g transform="translate(10,10)">
122 <rect x="0" y="0" rx="20" ry="20" width="100" height="50"
123 style="fill:#cc0000;stroke:black;stroke-width:3" />
124 <text x="50" y="25" fill="white" text-anchor="middle"
125 alignment-baseline="middle">voronoi.cc</text>
126 </g>
127 <g transform="translate(10,70)">
128 <rect x="0" y="0" rx="20" ry="20" width="100" height="50"
129 style="fill:#cccc00;stroke:black;stroke-width:3" />
130 <text x="50" y="25" fill="white" text-anchor="middle"
131 alignment-baseline="middle">libraries</text>
132 </g>
133 <g transform="translate(210,10)">
134 <rect x="0" y="0" rx="20" ry="20" width="100" height="50"
135 style="fill:#0000cc;stroke:black;stroke-width:3" />
136 <text x="50" y="25" fill="white" text-anchor="middle"
137 alignment-baseline="middle">voronoi.nexe</text>
138 </g>
139 <path d="M110,35 L195,30"
140 style="stroke:black; stroke-width: 2px; marker-end: url(#markerArrow);"/>
141 <path d="M110,95 L195,50"
142 style="stroke:black; stroke-width: 2px; marker-end: url(#markerArrow);"/>
143
144 <text x="50" y="155" fill="black" text-anchor="middle"
145 alignment-baseline="middle">build.sh</text>
146 <path d="M80,155 L300,155"
147 stroke-dasharray="5,5" d="M5 20 l215 0"
148 style="stroke:black; stroke-width: 2px; marker-end: url(#markerArrow);"/>
149 </svg>
Sam Clegg 2014/06/19 17:37:26 Shame about the raw html.. maybe we can find a wa
binji 2014/06/19 19:12:56 We've been doing Google Docs diagrams and saving t
bradn 2014/06/19 21:52:36 Did as binji suggests.
bradn 2014/06/19 21:52:36 Done.
150
151 The resulting application combines some Javascript to load the module with
152 voronoi.nexe, producing the complete application.
153
154 .. raw:: html
155
156 <svg width="600" height="200">
157 <defs>
158 <marker id="markerArrow" markerWidth="13" markerHeight="13"
159 refx="2" refy="6" orient="auto">
160 <path d="M2,2 L2,11 L10,6 L2,2" style="fill: #000000;" />
161 </marker>
162 </defs>
163
164 <g transform="translate(10,10)">
165 <rect x="0" y="0" rx="20" ry="20" width="100" height="50"
166 style="fill:#cc0000;stroke:black;stroke-width:3" />
167 <text x="50" y="25" fill="white" text-anchor="middle"
168 alignment-baseline="middle">voronoi.nexe</text>
169 </g>
170 <g transform="translate(10,70)">
171 <rect x="0" y="0" rx="20" ry="20" width="100" height="50"
172 style="fill:#cccc00;stroke:black;stroke-width:3" />
173 <text x="50" y="25" fill="white" text-anchor="middle"
174 alignment-baseline="middle">example.js</text>
175 </g>
176 <g transform="translate(210,10)">
177 <rect x="0" y="0" rx="20" ry="20" width="100" height="50"
178 style="fill:#0000cc;stroke:black;stroke-width:3" />
179 <text x="50" y="25" fill="white" text-anchor="middle"
180 alignment-baseline="middle">Web App</text>
181 </g>
182 <path d="M110,35 L195,30"
183 style="stroke:black; stroke-width: 2px; marker-end: url(#markerArrow);"/>
184 <path d="M110,95 L195,50"
185 style="stroke:black; stroke-width: 2px; marker-end: url(#markerArrow);"/>
186
187 <text x="50" y="155" fill="black" text-anchor="middle"
188 alignment-baseline="middle">demo.py</text>
189 <path d="M80,155 L300,155"
190 stroke-dasharray="5,5" d="M5 20 l215 0"
191 style="stroke:black; stroke-width: 2px; marker-end: url(#markerArrow);"/>
192 </svg>
193
194 Let's use git (a revision control program) to track our changes.
195
196 First, create a new repository:
197 ::
198
199 $ git init
200
201 Add everything here:
202 ::
203
204 $ git add .
205
206 Then commit our starting state.
207 ::
208
209 $ git commit -m "imported voronoi demo"
210
211
212 Now, lets invoke the bash build script to compile our program:
213 ::
Sam Clegg 2014/06/19 17:37:26 You can combine these two lines into one. Simple
bradn 2014/06/19 21:52:36 Done.
214
215 $ ./build.sh
216
217 Oops, we get this error:
218 ::
219
220 voronoi.cc: In member function 'void Voronoi::Update()':
221 voronoi.cc:506: error: 'struct PSContext2D_t' has no member named 'hieght'
222
223 We'll need to start an editor to fix this.
224 You'll want to change *hieght* to *height* on line 506.
225
226 Then rebuild:
227 ::
228
229 $ bash build.sh
230
231 Lets look at the diff.
232 ::
233
234 $ git diff
235
236 And commit our fix.
237 ::
238
239 $ git commit -am "fixed build error"
240
241 We can now run the demo with this command.
242 ::
243
244 $ python ${PWD}/demo.py
245
246 Navigate to http://localhost:5103/ to test the demo.
247
248 If you follow along with the demo video, you will discover the sample crashes
249 when you change the thread count.
250
251 *Debugger walk-thru coming soon.*
252
253 Once you've identified the problem. You'll want to stop the test server.
254 Press enter to halt it.
255
256 Open your editor again, navigate to line 485 and change *valu* to *value*.
257
258 Then rebuild.
259 ::
260
261 $ bash build.sh
262
263
264 Check the diff and commit our fix.
265 ::
266
267 $ git diff
268 $ git commit -am "fixed thread ui bug"
269
270 Now look at your commit history.
271 ::
272
273 $ git log
274
275 Run the demo again. And everything now works.
276 ::
277
278 $ python ${PWD}/demo.py
OLDNEW
« no previous file with comments | « native_client_sdk/src/doc/README ('k') | native_client_sdk/src/doc/sitemap.rst » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698