Merge lp:~mitya57/ubuntu/raring/sphinx/fix-ftbfs into lp:ubuntu/raring/sphinx
- Raring (13.04)
- fix-ftbfs
- Merge into raring
Proposed by
Dmitry Shachnev
Status: | Merged | ||||
---|---|---|---|---|---|
Merged at revision: | 38 | ||||
Proposed branch: | lp:~mitya57/ubuntu/raring/sphinx/fix-ftbfs | ||||
Merge into: | lp:ubuntu/raring/sphinx | ||||
Diff against target: |
600 lines (+105/-386) 8 files modified
.pc/applied-patches (+0/-1) .pc/fix_manpages_generation_with_new_docutils.diff/sphinx/writers/manpage.py (+0/-345) debian/changelog (+9/-0) debian/control (+2/-2) debian/patches/fix_manpages_generation_with_new_docutils.diff (+0/-33) debian/patches/series (+1/-0) debian/patches/support_python_3.3.diff (+87/-0) sphinx/writers/manpage.py (+6/-5) |
||||
To merge this branch: | bzr merge lp:~mitya57/ubuntu/raring/sphinx/fix-ftbfs | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Ubuntu branches | Pending | ||
Review via email: mp+130856@code.launchpad.net |
Commit message
Description of the change
To post a comment you must log in.
- 38. By Dmitry Shachnev
-
Build-depend on python3-all instead of python3.
- 39. By Dmitry Shachnev
-
* debian/
patches/ support_ python_ 3.3:
Fix various testsuite failures with Python 3.3 (LP: #1070336).
* Update Homepage field. - 40. By Dmitry Shachnev
-
Fix patch format.
- 41. By Dmitry Shachnev
-
No-change merge from lp:ubuntu/sphinx.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file '.pc/applied-patches' | |||
2 | --- .pc/applied-patches 2012-10-22 20:20:35 +0000 | |||
3 | +++ .pc/applied-patches 2012-11-01 17:56:20 +0000 | |||
4 | @@ -8,4 +8,3 @@ | |||
5 | 8 | fix_nepali_po.diff | 8 | fix_nepali_po.diff |
6 | 9 | pygments_byte_strings.diff | 9 | pygments_byte_strings.diff |
7 | 10 | fix_shorthandoff.diff | 10 | fix_shorthandoff.diff |
8 | 11 | fix_manpages_generation_with_new_docutils.diff | ||
9 | 12 | 11 | ||
10 | === removed directory '.pc/fix_manpages_generation_with_new_docutils.diff' | |||
11 | === removed directory '.pc/fix_manpages_generation_with_new_docutils.diff/sphinx' | |||
12 | === removed directory '.pc/fix_manpages_generation_with_new_docutils.diff/sphinx/writers' | |||
13 | === removed file '.pc/fix_manpages_generation_with_new_docutils.diff/sphinx/writers/manpage.py' | |||
14 | --- .pc/fix_manpages_generation_with_new_docutils.diff/sphinx/writers/manpage.py 2012-10-22 20:20:35 +0000 | |||
15 | +++ .pc/fix_manpages_generation_with_new_docutils.diff/sphinx/writers/manpage.py 1970-01-01 00:00:00 +0000 | |||
16 | @@ -1,345 +0,0 @@ | |||
17 | 1 | # -*- coding: utf-8 -*- | ||
18 | 2 | """ | ||
19 | 3 | sphinx.writers.manpage | ||
20 | 4 | ~~~~~~~~~~~~~~~~~~~~~~ | ||
21 | 5 | |||
22 | 6 | Manual page writer, extended for Sphinx custom nodes. | ||
23 | 7 | |||
24 | 8 | :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. | ||
25 | 9 | :license: BSD, see LICENSE for details. | ||
26 | 10 | """ | ||
27 | 11 | |||
28 | 12 | from docutils import nodes | ||
29 | 13 | try: | ||
30 | 14 | from docutils.writers.manpage import MACRO_DEF, Writer, \ | ||
31 | 15 | Translator as BaseTranslator | ||
32 | 16 | has_manpage_writer = True | ||
33 | 17 | except ImportError: | ||
34 | 18 | # define the classes in any case, sphinx.application needs it | ||
35 | 19 | Writer = BaseTranslator = object | ||
36 | 20 | has_manpage_writer = False | ||
37 | 21 | |||
38 | 22 | from sphinx import addnodes | ||
39 | 23 | from sphinx.locale import admonitionlabels, versionlabels, _ | ||
40 | 24 | from sphinx.util.osutil import ustrftime | ||
41 | 25 | |||
42 | 26 | |||
43 | 27 | class ManualPageWriter(Writer): | ||
44 | 28 | def __init__(self, builder): | ||
45 | 29 | Writer.__init__(self) | ||
46 | 30 | self.builder = builder | ||
47 | 31 | |||
48 | 32 | def translate(self): | ||
49 | 33 | visitor = ManualPageTranslator(self.builder, self.document) | ||
50 | 34 | self.visitor = visitor | ||
51 | 35 | self.document.walkabout(visitor) | ||
52 | 36 | self.output = visitor.astext() | ||
53 | 37 | |||
54 | 38 | |||
55 | 39 | class ManualPageTranslator(BaseTranslator): | ||
56 | 40 | """ | ||
57 | 41 | Custom translator. | ||
58 | 42 | """ | ||
59 | 43 | |||
60 | 44 | def __init__(self, builder, *args, **kwds): | ||
61 | 45 | BaseTranslator.__init__(self, *args, **kwds) | ||
62 | 46 | self.builder = builder | ||
63 | 47 | |||
64 | 48 | self.in_productionlist = 0 | ||
65 | 49 | |||
66 | 50 | # first title is the manpage title | ||
67 | 51 | self.section_level = -1 | ||
68 | 52 | |||
69 | 53 | # docinfo set by man_pages config value | ||
70 | 54 | self._docinfo['title'] = self.document.settings.title | ||
71 | 55 | self._docinfo['subtitle'] = self.document.settings.subtitle | ||
72 | 56 | if self.document.settings.authors: | ||
73 | 57 | # don't set it if no author given | ||
74 | 58 | self._docinfo['author'] = self.document.settings.authors | ||
75 | 59 | self._docinfo['manual_section'] = self.document.settings.section | ||
76 | 60 | |||
77 | 61 | # docinfo set by other config values | ||
78 | 62 | self._docinfo['title_upper'] = self._docinfo['title'].upper() | ||
79 | 63 | if builder.config.today: | ||
80 | 64 | self._docinfo['date'] = builder.config.today | ||
81 | 65 | else: | ||
82 | 66 | self._docinfo['date'] = ustrftime(builder.config.today_fmt | ||
83 | 67 | or _('%B %d, %Y')) | ||
84 | 68 | self._docinfo['copyright'] = builder.config.copyright | ||
85 | 69 | self._docinfo['version'] = builder.config.version | ||
86 | 70 | self._docinfo['manual_group'] = builder.config.project | ||
87 | 71 | |||
88 | 72 | # since self.append_header() is never called, need to do this here | ||
89 | 73 | self.body.append(MACRO_DEF) | ||
90 | 74 | |||
91 | 75 | # overwritten -- added quotes around all .TH arguments | ||
92 | 76 | def header(self): | ||
93 | 77 | tmpl = (".TH \"%(title_upper)s\" \"%(manual_section)s\"" | ||
94 | 78 | " \"%(date)s\" \"%(version)s\" \"%(manual_group)s\"\n" | ||
95 | 79 | ".SH NAME\n" | ||
96 | 80 | "%(title)s \- %(subtitle)s\n") | ||
97 | 81 | return tmpl % self._docinfo | ||
98 | 82 | |||
99 | 83 | def visit_start_of_file(self, node): | ||
100 | 84 | pass | ||
101 | 85 | def depart_start_of_file(self, node): | ||
102 | 86 | pass | ||
103 | 87 | |||
104 | 88 | def visit_desc(self, node): | ||
105 | 89 | self.visit_definition_list(node) | ||
106 | 90 | def depart_desc(self, node): | ||
107 | 91 | self.depart_definition_list(node) | ||
108 | 92 | |||
109 | 93 | def visit_desc_signature(self, node): | ||
110 | 94 | self.visit_definition_list_item(node) | ||
111 | 95 | self.visit_term(node) | ||
112 | 96 | def depart_desc_signature(self, node): | ||
113 | 97 | self.depart_term(node) | ||
114 | 98 | |||
115 | 99 | def visit_desc_addname(self, node): | ||
116 | 100 | pass | ||
117 | 101 | def depart_desc_addname(self, node): | ||
118 | 102 | pass | ||
119 | 103 | |||
120 | 104 | def visit_desc_type(self, node): | ||
121 | 105 | pass | ||
122 | 106 | def depart_desc_type(self, node): | ||
123 | 107 | pass | ||
124 | 108 | |||
125 | 109 | def visit_desc_returns(self, node): | ||
126 | 110 | self.body.append(' -> ') | ||
127 | 111 | def depart_desc_returns(self, node): | ||
128 | 112 | pass | ||
129 | 113 | |||
130 | 114 | def visit_desc_name(self, node): | ||
131 | 115 | pass | ||
132 | 116 | def depart_desc_name(self, node): | ||
133 | 117 | pass | ||
134 | 118 | |||
135 | 119 | def visit_desc_parameterlist(self, node): | ||
136 | 120 | self.body.append('(') | ||
137 | 121 | self.first_param = 1 | ||
138 | 122 | def depart_desc_parameterlist(self, node): | ||
139 | 123 | self.body.append(')') | ||
140 | 124 | |||
141 | 125 | def visit_desc_parameter(self, node): | ||
142 | 126 | if not self.first_param: | ||
143 | 127 | self.body.append(', ') | ||
144 | 128 | else: | ||
145 | 129 | self.first_param = 0 | ||
146 | 130 | def depart_desc_parameter(self, node): | ||
147 | 131 | pass | ||
148 | 132 | |||
149 | 133 | def visit_desc_optional(self, node): | ||
150 | 134 | self.body.append('[') | ||
151 | 135 | def depart_desc_optional(self, node): | ||
152 | 136 | self.body.append(']') | ||
153 | 137 | |||
154 | 138 | def visit_desc_annotation(self, node): | ||
155 | 139 | pass | ||
156 | 140 | def depart_desc_annotation(self, node): | ||
157 | 141 | pass | ||
158 | 142 | |||
159 | 143 | def visit_desc_content(self, node): | ||
160 | 144 | self.visit_definition(node) | ||
161 | 145 | def depart_desc_content(self, node): | ||
162 | 146 | self.depart_definition(node) | ||
163 | 147 | |||
164 | 148 | def visit_refcount(self, node): | ||
165 | 149 | self.body.append(self.defs['emphasis'][0]) | ||
166 | 150 | def depart_refcount(self, node): | ||
167 | 151 | self.body.append(self.defs['emphasis'][1]) | ||
168 | 152 | |||
169 | 153 | def visit_versionmodified(self, node): | ||
170 | 154 | self.visit_paragraph(node) | ||
171 | 155 | text = versionlabels[node['type']] % node['version'] | ||
172 | 156 | if len(node): | ||
173 | 157 | text += ': ' | ||
174 | 158 | else: | ||
175 | 159 | text += '.' | ||
176 | 160 | self.body.append(text) | ||
177 | 161 | def depart_versionmodified(self, node): | ||
178 | 162 | self.depart_paragraph(node) | ||
179 | 163 | |||
180 | 164 | def visit_termsep(self, node): | ||
181 | 165 | self.body.append(', ') | ||
182 | 166 | raise nodes.SkipNode | ||
183 | 167 | |||
184 | 168 | # overwritten -- we don't want source comments to show up | ||
185 | 169 | def visit_comment(self, node): | ||
186 | 170 | raise nodes.SkipNode | ||
187 | 171 | |||
188 | 172 | # overwritten -- added ensure_eol() | ||
189 | 173 | def visit_footnote(self, node): | ||
190 | 174 | self.ensure_eol() | ||
191 | 175 | BaseTranslator.visit_footnote(self, node) | ||
192 | 176 | |||
193 | 177 | # overwritten -- handle footnotes rubric | ||
194 | 178 | def visit_rubric(self, node): | ||
195 | 179 | self.ensure_eol() | ||
196 | 180 | if len(node.children) == 1: | ||
197 | 181 | rubtitle = node.children[0].astext() | ||
198 | 182 | if rubtitle in ('Footnotes', _('Footnotes')): | ||
199 | 183 | self.body.append('.SH ' + self.deunicode(rubtitle).upper() + | ||
200 | 184 | '\n') | ||
201 | 185 | raise nodes.SkipNode | ||
202 | 186 | else: | ||
203 | 187 | self.body.append('.sp\n') | ||
204 | 188 | def depart_rubric(self, node): | ||
205 | 189 | pass | ||
206 | 190 | |||
207 | 191 | def visit_seealso(self, node): | ||
208 | 192 | self.visit_admonition(node) | ||
209 | 193 | def depart_seealso(self, node): | ||
210 | 194 | self.depart_admonition(node) | ||
211 | 195 | |||
212 | 196 | # overwritten -- use our own label translations | ||
213 | 197 | def visit_admonition(self, node, name=None): | ||
214 | 198 | if name: | ||
215 | 199 | self.body.append('.IP %s\n' % | ||
216 | 200 | self.deunicode(admonitionlabels.get(name, name))) | ||
217 | 201 | |||
218 | 202 | def visit_productionlist(self, node): | ||
219 | 203 | self.ensure_eol() | ||
220 | 204 | names = [] | ||
221 | 205 | self.in_productionlist += 1 | ||
222 | 206 | self.body.append('.sp\n.nf\n') | ||
223 | 207 | for production in node: | ||
224 | 208 | names.append(production['tokenname']) | ||
225 | 209 | maxlen = max(len(name) for name in names) | ||
226 | 210 | for production in node: | ||
227 | 211 | if production['tokenname']: | ||
228 | 212 | lastname = production['tokenname'].ljust(maxlen) | ||
229 | 213 | self.body.append(self.defs['strong'][0]) | ||
230 | 214 | self.body.append(self.deunicode(lastname)) | ||
231 | 215 | self.body.append(self.defs['strong'][1]) | ||
232 | 216 | self.body.append(' ::= ') | ||
233 | 217 | else: | ||
234 | 218 | self.body.append('%s ' % (' '*len(lastname))) | ||
235 | 219 | production.walkabout(self) | ||
236 | 220 | self.body.append('\n') | ||
237 | 221 | self.body.append('\n.fi\n') | ||
238 | 222 | self.in_productionlist -= 1 | ||
239 | 223 | raise nodes.SkipNode | ||
240 | 224 | |||
241 | 225 | def visit_production(self, node): | ||
242 | 226 | pass | ||
243 | 227 | def depart_production(self, node): | ||
244 | 228 | pass | ||
245 | 229 | |||
246 | 230 | # overwritten -- don't emit a warning for images | ||
247 | 231 | def visit_image(self, node): | ||
248 | 232 | if 'alt' in node.attributes: | ||
249 | 233 | self.body.append(_('[image: %s]') % node['alt'] + '\n') | ||
250 | 234 | self.body.append(_('[image]') + '\n') | ||
251 | 235 | raise nodes.SkipNode | ||
252 | 236 | |||
253 | 237 | # overwritten -- don't visit inner marked up nodes | ||
254 | 238 | def visit_reference(self, node): | ||
255 | 239 | self.body.append(self.defs['reference'][0]) | ||
256 | 240 | self.body.append(node.astext()) | ||
257 | 241 | self.body.append(self.defs['reference'][1]) | ||
258 | 242 | |||
259 | 243 | uri = node.get('refuri', '') | ||
260 | 244 | if uri.startswith('mailto:') or uri.startswith('http:') or \ | ||
261 | 245 | uri.startswith('https:') or uri.startswith('ftp:'): | ||
262 | 246 | # if configured, put the URL after the link | ||
263 | 247 | if self.builder.config.man_show_urls and \ | ||
264 | 248 | node.astext() != uri: | ||
265 | 249 | if uri.startswith('mailto:'): | ||
266 | 250 | uri = uri[7:] | ||
267 | 251 | self.body.extend([ | ||
268 | 252 | ' <', | ||
269 | 253 | self.defs['strong'][0], uri, self.defs['strong'][1], | ||
270 | 254 | '>']) | ||
271 | 255 | raise nodes.SkipNode | ||
272 | 256 | |||
273 | 257 | def visit_centered(self, node): | ||
274 | 258 | self.ensure_eol() | ||
275 | 259 | self.body.append('.sp\n.ce\n') | ||
276 | 260 | def depart_centered(self, node): | ||
277 | 261 | self.body.append('\n.ce 0\n') | ||
278 | 262 | |||
279 | 263 | def visit_compact_paragraph(self, node): | ||
280 | 264 | pass | ||
281 | 265 | def depart_compact_paragraph(self, node): | ||
282 | 266 | pass | ||
283 | 267 | |||
284 | 268 | def visit_highlightlang(self, node): | ||
285 | 269 | pass | ||
286 | 270 | def depart_highlightlang(self, node): | ||
287 | 271 | pass | ||
288 | 272 | |||
289 | 273 | def visit_download_reference(self, node): | ||
290 | 274 | pass | ||
291 | 275 | def depart_download_reference(self, node): | ||
292 | 276 | pass | ||
293 | 277 | |||
294 | 278 | def visit_toctree(self, node): | ||
295 | 279 | raise nodes.SkipNode | ||
296 | 280 | |||
297 | 281 | def visit_index(self, node): | ||
298 | 282 | raise nodes.SkipNode | ||
299 | 283 | |||
300 | 284 | def visit_tabular_col_spec(self, node): | ||
301 | 285 | raise nodes.SkipNode | ||
302 | 286 | |||
303 | 287 | def visit_glossary(self, node): | ||
304 | 288 | pass | ||
305 | 289 | def depart_glossary(self, node): | ||
306 | 290 | pass | ||
307 | 291 | |||
308 | 292 | def visit_acks(self, node): | ||
309 | 293 | self.ensure_eol() | ||
310 | 294 | self.body.append(', '.join(n.astext() | ||
311 | 295 | for n in node.children[0].children) + '.') | ||
312 | 296 | self.body.append('\n') | ||
313 | 297 | raise nodes.SkipNode | ||
314 | 298 | |||
315 | 299 | def visit_hlist(self, node): | ||
316 | 300 | self.visit_bullet_list(node) | ||
317 | 301 | def depart_hlist(self, node): | ||
318 | 302 | self.depart_bullet_list(node) | ||
319 | 303 | |||
320 | 304 | def visit_hlistcol(self, node): | ||
321 | 305 | pass | ||
322 | 306 | def depart_hlistcol(self, node): | ||
323 | 307 | pass | ||
324 | 308 | |||
325 | 309 | def visit_literal_emphasis(self, node): | ||
326 | 310 | return self.visit_emphasis(node) | ||
327 | 311 | def depart_literal_emphasis(self, node): | ||
328 | 312 | return self.depart_emphasis(node) | ||
329 | 313 | |||
330 | 314 | def visit_abbreviation(self, node): | ||
331 | 315 | pass | ||
332 | 316 | def depart_abbreviation(self, node): | ||
333 | 317 | pass | ||
334 | 318 | |||
335 | 319 | # overwritten: handle section titles better than in 0.6 release | ||
336 | 320 | def visit_title(self, node): | ||
337 | 321 | if isinstance(node.parent, addnodes.seealso): | ||
338 | 322 | self.body.append('.IP "') | ||
339 | 323 | return | ||
340 | 324 | elif isinstance(node.parent, nodes.section): | ||
341 | 325 | if self.section_level == 0: | ||
342 | 326 | # skip the document title | ||
343 | 327 | raise nodes.SkipNode | ||
344 | 328 | elif self.section_level == 1: | ||
345 | 329 | self.body.append('.SH %s\n' % | ||
346 | 330 | self.deunicode(node.astext().upper())) | ||
347 | 331 | raise nodes.SkipNode | ||
348 | 332 | return BaseTranslator.visit_title(self, node) | ||
349 | 333 | def depart_title(self, node): | ||
350 | 334 | if isinstance(node.parent, addnodes.seealso): | ||
351 | 335 | self.body.append('"\n') | ||
352 | 336 | return | ||
353 | 337 | return BaseTranslator.depart_title(self, node) | ||
354 | 338 | |||
355 | 339 | def visit_raw(self, node): | ||
356 | 340 | if 'manpage' in node.get('format', '').split(): | ||
357 | 341 | self.body.append(node.astext()) | ||
358 | 342 | raise nodes.SkipNode | ||
359 | 343 | |||
360 | 344 | def unknown_visit(self, node): | ||
361 | 345 | raise NotImplementedError('Unknown node: ' + node.__class__.__name__) | ||
362 | 346 | 0 | ||
363 | === modified file 'debian/changelog' | |||
364 | --- debian/changelog 2012-10-22 20:20:35 +0000 | |||
365 | +++ debian/changelog 2012-11-01 17:56:20 +0000 | |||
366 | @@ -1,3 +1,12 @@ | |||
367 | 1 | sphinx (1.1.3+dfsg-4ubuntu5) raring; urgency=low | ||
368 | 2 | |||
369 | 3 | * Build-depend on python3-all instead of python3. | ||
370 | 4 | * debian/patches/support_python_3.3: | ||
371 | 5 | Fix various testsuite failures with Python 3.3 (LP: #1070336). | ||
372 | 6 | * Update Homepage field. | ||
373 | 7 | |||
374 | 8 | -- Dmitry Shachnev <mitya57@gmail.com> Thu, 01 Nov 2012 21:39:16 +0400 | ||
375 | 9 | |||
376 | 1 | sphinx (1.1.3+dfsg-4ubuntu4) raring; urgency=low | 10 | sphinx (1.1.3+dfsg-4ubuntu4) raring; urgency=low |
377 | 2 | 11 | ||
378 | 3 | * debian/patches/fix_manpages_generation_with_new_docutils.diff: | 12 | * debian/patches/fix_manpages_generation_with_new_docutils.diff: |
379 | 4 | 13 | ||
380 | === modified file 'debian/control' | |||
381 | --- debian/control 2012-08-21 17:45:58 +0000 | |||
382 | +++ debian/control 2012-11-01 17:56:20 +0000 | |||
383 | @@ -4,9 +4,9 @@ | |||
384 | 4 | Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> | 4 | Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> |
385 | 5 | XSBC-Original-Maintainer: Jakub Wilk <jwilk@debian.org> | 5 | XSBC-Original-Maintainer: Jakub Wilk <jwilk@debian.org> |
386 | 6 | Uploaders: Debian Python Modules Team <python-modules-team@lists.alioth.debian.org> | 6 | Uploaders: Debian Python Modules Team <python-modules-team@lists.alioth.debian.org> |
388 | 7 | Homepage: http://sphinx.pocoo.org/ | 7 | Homepage: http://sphinx-doc.org/ |
389 | 8 | Build-Depends: debhelper (>= 7) | 8 | Build-Depends: debhelper (>= 7) |
391 | 9 | Build-Depends-Indep: python-all (>= 2.6.5-2~), python3 (>= 3.1.2-7~), | 9 | Build-Depends-Indep: python-all (>= 2.6.5-2~), python3-all (>= 3.1.2-7~), |
392 | 10 | python-setuptools (>= 0.6c5-1~), python3-setuptools, | 10 | python-setuptools (>= 0.6c5-1~), python3-setuptools, |
393 | 11 | python-docutils (>= 0.7), python3-docutils (>= 0.7), | 11 | python-docutils (>= 0.7), python3-docutils (>= 0.7), |
394 | 12 | python-pygments (>= 1.2), python3-pygments (>= 1.2), | 12 | python-pygments (>= 1.2), python3-pygments (>= 1.2), |
395 | 13 | 13 | ||
396 | === added file 'debian/patches/fix_manpages_generation_with_new_docutils.diff' | |||
397 | --- debian/patches/fix_manpages_generation_with_new_docutils.diff 1970-01-01 00:00:00 +0000 | |||
398 | +++ debian/patches/fix_manpages_generation_with_new_docutils.diff 2012-11-01 17:56:20 +0000 | |||
399 | @@ -0,0 +1,33 @@ | |||
400 | 1 | Description: Fix build failure with Docutils 0.9 | ||
401 | 2 | Bug: https://bitbucket.org/birkenfeld/sphinx/issue/998/docutils-010-will-break-sphinx-manpage | ||
402 | 3 | Author: Toshio Kuratomi <a.badger@gmail.com> | ||
403 | 4 | Last-Update: 2012-10-22 | ||
404 | 5 | |||
405 | 6 | diff -up a/sphinx/writers/manpage.py b/sphinx/writers/manpage.py | ||
406 | 7 | --- a/sphinx/writers/manpage.py 2011-11-01 00:38:44.000000000 -0700 | ||
407 | 8 | +++ b/sphinx/writers/manpage.py 2012-08-21 12:38:33.380808202 -0700 | ||
408 | 9 | @@ -72,6 +72,11 @@ class ManualPageTranslator(BaseTranslato | ||
409 | 10 | # since self.append_header() is never called, need to do this here | ||
410 | 11 | self.body.append(MACRO_DEF) | ||
411 | 12 | |||
412 | 13 | + # Overwrite admonition label translations with our own | ||
413 | 14 | + for label, translation in admonitionlabels.items(): | ||
414 | 15 | + self.language.labels[label] = self.deunicode(translation) | ||
415 | 16 | + | ||
416 | 17 | + | ||
417 | 18 | # overwritten -- added quotes around all .TH arguments | ||
418 | 19 | def header(self): | ||
419 | 20 | tmpl = (".TH \"%(title_upper)s\" \"%(manual_section)s\"" | ||
420 | 21 | @@ -193,12 +198,6 @@ class ManualPageTranslator(BaseTranslato | ||
421 | 22 | def depart_seealso(self, node): | ||
422 | 23 | self.depart_admonition(node) | ||
423 | 24 | |||
424 | 25 | - # overwritten -- use our own label translations | ||
425 | 26 | - def visit_admonition(self, node, name=None): | ||
426 | 27 | - if name: | ||
427 | 28 | - self.body.append('.IP %s\n' % | ||
428 | 29 | - self.deunicode(admonitionlabels.get(name, name))) | ||
429 | 30 | - | ||
430 | 31 | def visit_productionlist(self, node): | ||
431 | 32 | self.ensure_eol() | ||
432 | 33 | names = [] | ||
433 | 0 | 34 | ||
434 | === removed file 'debian/patches/fix_manpages_generation_with_new_docutils.diff' | |||
435 | --- debian/patches/fix_manpages_generation_with_new_docutils.diff 2012-10-22 20:20:35 +0000 | |||
436 | +++ debian/patches/fix_manpages_generation_with_new_docutils.diff 1970-01-01 00:00:00 +0000 | |||
437 | @@ -1,33 +0,0 @@ | |||
438 | 1 | Description: Fix build failure with Docutils 0.9 | ||
439 | 2 | Bug: https://bitbucket.org/birkenfeld/sphinx/issue/998/docutils-010-will-break-sphinx-manpage | ||
440 | 3 | Author: Toshio Kuratomi <a.badger@gmail.com> | ||
441 | 4 | Last-Update: 2012-10-22 | ||
442 | 5 | |||
443 | 6 | diff -up a/sphinx/writers/manpage.py b/sphinx/writers/manpage.py | ||
444 | 7 | --- a/sphinx/writers/manpage.py 2011-11-01 00:38:44.000000000 -0700 | ||
445 | 8 | +++ b/sphinx/writers/manpage.py 2012-08-21 12:38:33.380808202 -0700 | ||
446 | 9 | @@ -72,6 +72,11 @@ class ManualPageTranslator(BaseTranslato | ||
447 | 10 | # since self.append_header() is never called, need to do this here | ||
448 | 11 | self.body.append(MACRO_DEF) | ||
449 | 12 | |||
450 | 13 | + # Overwrite admonition label translations with our own | ||
451 | 14 | + for label, translation in admonitionlabels.items(): | ||
452 | 15 | + self.language.labels[label] = self.deunicode(translation) | ||
453 | 16 | + | ||
454 | 17 | + | ||
455 | 18 | # overwritten -- added quotes around all .TH arguments | ||
456 | 19 | def header(self): | ||
457 | 20 | tmpl = (".TH \"%(title_upper)s\" \"%(manual_section)s\"" | ||
458 | 21 | @@ -193,12 +198,6 @@ class ManualPageTranslator(BaseTranslato | ||
459 | 22 | def depart_seealso(self, node): | ||
460 | 23 | self.depart_admonition(node) | ||
461 | 24 | |||
462 | 25 | - # overwritten -- use our own label translations | ||
463 | 26 | - def visit_admonition(self, node, name=None): | ||
464 | 27 | - if name: | ||
465 | 28 | - self.body.append('.IP %s\n' % | ||
466 | 29 | - self.deunicode(admonitionlabels.get(name, name))) | ||
467 | 30 | - | ||
468 | 31 | def visit_productionlist(self, node): | ||
469 | 32 | self.ensure_eol() | ||
470 | 33 | names = [] | ||
471 | 34 | 0 | ||
472 | === modified file 'debian/patches/series' | |||
473 | --- debian/patches/series 2012-10-22 20:20:35 +0000 | |||
474 | +++ debian/patches/series 2012-11-01 17:56:20 +0000 | |||
475 | @@ -9,3 +9,4 @@ | |||
476 | 9 | pygments_byte_strings.diff | 9 | pygments_byte_strings.diff |
477 | 10 | fix_shorthandoff.diff | 10 | fix_shorthandoff.diff |
478 | 11 | fix_manpages_generation_with_new_docutils.diff | 11 | fix_manpages_generation_with_new_docutils.diff |
479 | 12 | support_python_3.3.diff | ||
480 | 12 | 13 | ||
481 | === added file 'debian/patches/support_python_3.3.diff' | |||
482 | --- debian/patches/support_python_3.3.diff 1970-01-01 00:00:00 +0000 | |||
483 | +++ debian/patches/support_python_3.3.diff 2012-11-01 17:56:20 +0000 | |||
484 | @@ -0,0 +1,87 @@ | |||
485 | 1 | Description: Fix various testsuite failures with Python 3.3 | ||
486 | 2 | Author: Takayuki Shimizukawa <shimizukawa@gmail.com> | ||
487 | 3 | Bug: https://bitbucket.org/birkenfeld/sphinx/issue/1008/test-failures-with-python-33 | ||
488 | 4 | Bug-Ubuntu: https://bugs.launchpad.net/bugs/1070336 | ||
489 | 5 | Last-Update: 2012-11-01 | ||
490 | 6 | |||
491 | 7 | === modified file 'sphinx/environment.py' | ||
492 | 8 | --- a/sphinx/environment.py 2012-03-30 23:32:16 +0000 | ||
493 | 9 | +++ b/sphinx/environment.py 2012-11-01 17:33:08 +0000 | ||
494 | 10 | @@ -782,7 +782,11 @@ | ||
495 | 11 | app.emit('doctree-read', doctree) | ||
496 | 12 | |||
497 | 13 | # store time of build, for outdated files detection | ||
498 | 14 | - self.all_docs[docname] = time.time() | ||
499 | 15 | + # (Some filesystems have coarse timestamp resolution; | ||
500 | 16 | + # therefore time.time() is older than filesystem's timestamp. | ||
501 | 17 | + # For example, FAT32 has 2sec timestamp resolution.) | ||
502 | 18 | + self.all_docs[docname] = max( | ||
503 | 19 | + time.time(), path.getmtime(self.doc2path(docname))) | ||
504 | 20 | |||
505 | 21 | if self.versioning_condition: | ||
506 | 22 | # get old doctree | ||
507 | 23 | |||
508 | 24 | === modified file 'sphinx/ext/autodoc.py' | ||
509 | 25 | --- a/sphinx/ext/autodoc.py 2012-03-30 23:32:16 +0000 | ||
510 | 26 | +++ b/sphinx/ext/autodoc.py 2012-11-01 17:33:08 +0000 | ||
511 | 27 | @@ -1098,7 +1098,7 @@ | ||
512 | 28 | """ | ||
513 | 29 | objtype = 'method' | ||
514 | 30 | member_order = 50 | ||
515 | 31 | - priority = 0 | ||
516 | 32 | + priority = 1 # must be more than FunctionDocumenter | ||
517 | 33 | |||
518 | 34 | @classmethod | ||
519 | 35 | def can_document_member(cls, member, membername, isattr, parent): | ||
520 | 36 | |||
521 | 37 | === modified file 'sphinx/ext/intersphinx.py' | ||
522 | 38 | --- a/sphinx/ext/intersphinx.py 2012-03-30 23:32:16 +0000 | ||
523 | 39 | +++ b/sphinx/ext/intersphinx.py 2012-11-01 17:33:13 +0000 | ||
524 | 40 | @@ -188,7 +188,17 @@ | ||
525 | 41 | if update: | ||
526 | 42 | env.intersphinx_inventory = {} | ||
527 | 43 | env.intersphinx_named_inventory = {} | ||
528 | 44 | - for name, _, invdata in cache.itervalues(): | ||
529 | 45 | + # Duplicate values in different inventories will shadow each | ||
530 | 46 | + # other; which one will override which can vary between builds | ||
531 | 47 | + # since they are specified using an unordered dict. To make | ||
532 | 48 | + # it more consistent, we sort the named inventories and then | ||
533 | 49 | + # add the unnamed inventories last. This means that the | ||
534 | 50 | + # unnamed inventories will shadow the named ones but the named | ||
535 | 51 | + # ones can still be accessed when the name is specified. | ||
536 | 52 | + cached_vals = list(cache.itervalues()) | ||
537 | 53 | + named_vals = sorted(v for v in cached_vals if v[0]) | ||
538 | 54 | + unnamed_vals = [v for v in cached_vals if not v[0]] | ||
539 | 55 | + for name, _, invdata in named_vals + unnamed_vals: | ||
540 | 56 | if name: | ||
541 | 57 | env.intersphinx_named_inventory[name] = invdata | ||
542 | 58 | for type, objects in invdata.iteritems(): | ||
543 | 59 | |||
544 | 60 | === modified file 'sphinx/util/__init__.py' | ||
545 | 61 | --- a/sphinx/util/__init__.py 2012-03-30 23:32:16 +0000 | ||
546 | 62 | +++ b/sphinx/util/__init__.py 2012-11-01 17:37:41 +0000 | ||
547 | 63 | @@ -197,13 +197,18 @@ | ||
548 | 64 | except Exception, err: | ||
549 | 65 | raise PycodeError('error importing %r' % modname, err) | ||
550 | 66 | mod = sys.modules[modname] | ||
551 | 67 | - if hasattr(mod, '__loader__'): | ||
552 | 68 | - try: | ||
553 | 69 | - source = mod.__loader__.get_source(modname) | ||
554 | 70 | + filename = getattr(mod, '__file__', None) | ||
555 | 71 | + loader = getattr(mod, '__loader__', None) | ||
556 | 72 | + if loader and getattr(loader, 'get_filename', None): | ||
557 | 73 | + try: | ||
558 | 74 | + filename = loader.get_filename(modname) | ||
559 | 75 | + except Exception, err: | ||
560 | 76 | + raise PycodeError('error getting filename for %r' % filename, err) | ||
561 | 77 | + if filename is None and loader: | ||
562 | 78 | + try: | ||
563 | 79 | + return 'string', loader.get_source(modname) | ||
564 | 80 | except Exception, err: | ||
565 | 81 | raise PycodeError('error getting source for %r' % modname, err) | ||
566 | 82 | - return 'string', source | ||
567 | 83 | - filename = getattr(mod, '__file__', None) | ||
568 | 84 | if filename is None: | ||
569 | 85 | raise PycodeError('no source found for module %r' % modname) | ||
570 | 86 | filename = path.normpath(path.abspath(filename)) | ||
571 | 87 | |||
572 | 0 | 88 | ||
573 | === modified file 'sphinx/writers/manpage.py' | |||
574 | --- sphinx/writers/manpage.py 2012-10-22 20:20:35 +0000 | |||
575 | +++ sphinx/writers/manpage.py 2012-11-01 17:56:20 +0000 | |||
576 | @@ -72,11 +72,6 @@ | |||
577 | 72 | # since self.append_header() is never called, need to do this here | 72 | # since self.append_header() is never called, need to do this here |
578 | 73 | self.body.append(MACRO_DEF) | 73 | self.body.append(MACRO_DEF) |
579 | 74 | 74 | ||
580 | 75 | # Overwrite admonition label translations with our own | ||
581 | 76 | for label, translation in admonitionlabels.items(): | ||
582 | 77 | self.language.labels[label] = self.deunicode(translation) | ||
583 | 78 | |||
584 | 79 | |||
585 | 80 | # overwritten -- added quotes around all .TH arguments | 75 | # overwritten -- added quotes around all .TH arguments |
586 | 81 | def header(self): | 76 | def header(self): |
587 | 82 | tmpl = (".TH \"%(title_upper)s\" \"%(manual_section)s\"" | 77 | tmpl = (".TH \"%(title_upper)s\" \"%(manual_section)s\"" |
588 | @@ -198,6 +193,12 @@ | |||
589 | 198 | def depart_seealso(self, node): | 193 | def depart_seealso(self, node): |
590 | 199 | self.depart_admonition(node) | 194 | self.depart_admonition(node) |
591 | 200 | 195 | ||
592 | 196 | # overwritten -- use our own label translations | ||
593 | 197 | def visit_admonition(self, node, name=None): | ||
594 | 198 | if name: | ||
595 | 199 | self.body.append('.IP %s\n' % | ||
596 | 200 | self.deunicode(admonitionlabels.get(name, name))) | ||
597 | 201 | |||
598 | 201 | def visit_productionlist(self, node): | 202 | def visit_productionlist(self, node): |
599 | 202 | self.ensure_eol() | 203 | self.ensure_eol() |
600 | 203 | names = [] | 204 | names = [] |