[Python-modules-commits] r17740 - in packages/sphinx/trunk/debian (5 files)
jwilk at users.alioth.debian.org
jwilk at users.alioth.debian.org
Thu Jul 7 16:20:53 UTC 2011
Date: Thursday, July 7, 2011 @ 16:20:52
Author: jwilk
Revision: 17740
Add new tool, dh_sphinxdoc that aids shipping Sphinx-generated documentation in Debian packages.
Added:
packages/sphinx/trunk/debian/dh_sphinxdoc
Modified:
packages/sphinx/trunk/debian/changelog
packages/sphinx/trunk/debian/control
packages/sphinx/trunk/debian/python-sphinx.links
packages/sphinx/trunk/debian/rules
Modified: packages/sphinx/trunk/debian/changelog
===================================================================
--- packages/sphinx/trunk/debian/changelog 2011-07-07 09:17:43 UTC (rev 17739)
+++ packages/sphinx/trunk/debian/changelog 2011-07-07 16:20:52 UTC (rev 17740)
@@ -14,8 +14,12 @@
+ Build-depend on xvfb, xauth, python-webkit, libjs-jquery and
libjs-underscore.
* Add build-arch and build-indep targets to debian/rules.
+ * Add new tool, dh_sphinxdoc that aids shipping Sphinx-generated
+ documentation in Debian packages.
+ + Update debian/rules, debian/control and debian/*.links to use
+ dh_sphinxdoc.
- -- Jakub Wilk <jwilk at debian.org> Sun, 26 Jun 2011 13:15:18 +0200
+ -- Jakub Wilk <jwilk at debian.org> Thu, 07 Jul 2011 18:11:57 +0200
sphinx (1.0.7-5) unstable; urgency=low
Modified: packages/sphinx/trunk/debian/control
===================================================================
--- packages/sphinx/trunk/debian/control 2011-07-07 09:17:43 UTC (rev 17739)
+++ packages/sphinx/trunk/debian/control 2011-07-07 16:20:52 UTC (rev 17740)
@@ -16,7 +16,7 @@
Package: python-sphinx
Architecture: all
Depends: ${misc:Depends}, ${python:Depends}, python-docutils (>= 0.5), python-pygments (>= 0.8), python-jinja2 (>= 2.2),
- libjs-jquery (>= 1.4), libjs-underscore
+ ${sphinxdoc:Depends}
Recommends: python (>= 2.6) | python-simplejson, python-imaging
Suggests: jsmath
Description: tool for producing documentation for Python projects
Added: packages/sphinx/trunk/debian/dh_sphinxdoc
===================================================================
--- packages/sphinx/trunk/debian/dh_sphinxdoc (rev 0)
+++ packages/sphinx/trunk/debian/dh_sphinxdoc 2011-07-07 16:20:52 UTC (rev 17740)
@@ -0,0 +1,130 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use File::Find;
+use Debian::Debhelper::Dh_Lib;
+
+my @packaged_js = (
+ ['jquery.js', '/usr/share/javascript/jquery/jquery.js', 'libjs-jquery (>= 1.4)'],
+ ['underscore.js', '/usr/share/javascript/underscore/underscore.js', 'libjs-underscore'],
+);
+
+sub looks_like_sphinx_doc($)
+{
+ my ($path) = @_;
+ return 0 unless -f "$path/searchindex.js";
+ return 0 unless -f "$path/search.html";
+ return 1;
+}
+
+sub sanity_check($)
+{
+ local $/;
+ my ($path) = @_;
+ my $indexfn = "$path/searchindex.js";
+ open(F, '<', $indexfn) or error("cannot open $indexfn");
+ my $index = <F>;
+ close(F);
+ $index =~ m{^Search[.]setIndex[(].*?filenames:\["(.*?)"\].*[)]$} or error("$indexfn doesn't look like a Sphinx search index");
+ $index = $1;
+ my $searchfn = "$path/search.html";
+ open(F, '<', $searchfn) or error("cannot open $searchfn");
+ my $search = <F>;
+ close F;
+ my @js = $search =~ m{<script type="text/javascript" src="([^"]++)"></script>}g;
+ my $loads_searchindex = $search =~ m/\QjQuery(function() { Search.loadIndex("searchindex.js"); });\E/;
+ my ($has_source) = $search =~ m{HAS_SOURCE:\s*(true|false)};
+ my ($url_root) = $search =~ m{URL_ROOT:\s*'([^']*)'};
+ (@js and $loads_searchindex and defined $has_source and defined $url_root) or error("$searchfn doesn't look like Sphinx search page");
+ $url_root =~ m{^([a-z]+:/)?/} and error("URL_ROOT in $searchfn is not relative");
+ my $static_root;
+ for my $js (@js)
+ {
+ if ($js =~ m{/\Qsearchtools.js\E$})
+ {
+ open(F, '<', "$path/$js") or error("cannot open $path/$js");
+ my $searchtools = <F>;
+ close F;
+ ($static_root) = $searchtools =~ m{\Qget(DOCUMENTATION_OPTIONS.URL_ROOT\E\s*[+]\s*'([^']+)/'};
+ defined $static_root or error("$path/$js doesn't look like Sphinx code");
+ $searchtools =~ m/"text"/ or error("$path/$js doesn't look like if it was built with up-to-date Sphinx");
+ $static_root = "$url_root/$static_root"
+ }
+ -f "$path/$js" or error("$path/$js is missing");
+ }
+ for my $page (split(/","/, $index))
+ {
+ -f "$path/$page.html" or error("$path/$page.html is missing");
+ -f "$path$static_root/$page.txt" or error("$path$static_root/$page.txt is missing") if $has_source;
+ }
+ return @js;
+}
+
+sub fix_symlinks($@)
+{
+ my @deps = ();
+ my ($path, @js) = @_;
+ for my $js (@js)
+ {
+ for (@packaged_js)
+ {
+ my ($source, $target, $dependency) = @{$_};
+ next unless $js =~ m{/\Q$source\E$};
+ doit('ln', '-sf', "$target", "$path/$js");
+ push @deps, $dependency;
+ }
+ }
+ return @deps;
+}
+
+sub fix_sphinx_doc($$)
+{
+ my ($package, $path) = @_;
+ return 0 if not looks_like_sphinx_doc($path);
+ my @js = sanity_check($path);
+ my @deps = fix_symlinks($path, @js);
+ map { addsubstvar($package, "sphinxdoc:Depends", $_) } @deps;
+ return 1;
+}
+
+my @paths = @ARGV;
+ at paths = (undef) unless @paths;
+
+init();
+
+foreach my $path (@paths)
+{
+ my $done = 0;
+ foreach my $package (@{$dh{DOPACKAGES}})
+ {
+ my $pkgpath = tmpdir($package);
+ if (defined $path)
+ {
+ next if -l $path;
+ $pkgpath .= "/$path";
+ $done += fix_sphinx_doc($package, $pkgpath);
+ }
+ else
+ {
+ find({
+ wanted => sub {
+ return unless -d;
+ return if -l;
+ return if excludefile($_);
+ $done += fix_sphinx_doc($package, $_);
+ },
+ no_chdir => 1
+ }, "$pkgpath/usr/share/doc/");
+ }
+ }
+ if ($done == 0)
+ {
+ my $message = 'Sphinx documentation not found';
+ $message .= " at $path" if defined $path;
+ error($message);
+ }
+}
+
+# vim:ts=4 sw=4 et
Property changes on: packages/sphinx/trunk/debian/dh_sphinxdoc
___________________________________________________________________
Added: svn:executable
+ *
Modified: packages/sphinx/trunk/debian/python-sphinx.links
===================================================================
--- packages/sphinx/trunk/debian/python-sphinx.links 2011-07-07 09:17:43 UTC (rev 17739)
+++ packages/sphinx/trunk/debian/python-sphinx.links 2011-07-07 16:20:52 UTC (rev 17740)
@@ -1,7 +1,4 @@
/usr/share/javascript/jquery/jquery.js /usr/share/sphinx/themes/basic/static/jquery.js
/usr/share/javascript/underscore/underscore.js /usr/share/sphinx/themes/basic/static/underscore.js
-/usr/share/javascript/jquery/jquery.js /usr/share/doc/python-sphinx/html/_static/jquery.js
-/usr/share/javascript/underscore/underscore.js /usr/share/doc/python-sphinx/html/_static/underscore.js
-
/usr/share/doc/python-sphinx/html/_sources/ /usr/share/doc/python-sphinx/rst
Modified: packages/sphinx/trunk/debian/rules
===================================================================
--- packages/sphinx/trunk/debian/rules 2011-07-07 09:17:43 UTC (rev 17739)
+++ packages/sphinx/trunk/debian/rules 2011-07-07 16:20:52 UTC (rev 17740)
@@ -89,7 +89,9 @@
dh_testroot
dh_installchangelogs CHANGES
dh_installdocs
+ dh_install debian/dh_sphinxdoc /usr/bin/
rm -rf $(PACKAGE_DIR)/usr/share/doc/python-sphinx/html/.doctrees
+ ./debian/dh_sphinxdoc /usr/share/doc/python-sphinx/html/
dh_installexamples
dh_installman
dh_pysupport
More information about the Python-modules-commits
mailing list