[Python-modules-commits] r17751 - in packages/sphinx/trunk/debian (16 files)

jwilk at users.alioth.debian.org jwilk at users.alioth.debian.org
Fri Jul 8 19:39:45 UTC 2011


    Date: Friday, July 8, 2011 @ 19:39:43
  Author: jwilk
Revision: 17751

Move all JavaScript code into a separate package, libjs-sphinxdoc.

Added:
  packages/sphinx/trunk/debian/libjs-sphinxdoc.dirs
  packages/sphinx/trunk/debian/libjs-sphinxdoc.links
  packages/sphinx/trunk/debian/python-sphinx.dirs
    (from rev 17611, packages/sphinx/trunk/debian/dirs)
  packages/sphinx/trunk/debian/python-sphinx.doc-base
    (from rev 17611, packages/sphinx/trunk/debian/doc-base)
  packages/sphinx/trunk/debian/python-sphinx.docs
    (from rev 17612, packages/sphinx/trunk/debian/docs)
  packages/sphinx/trunk/debian/python-sphinx.manpages
    (from rev 17611, packages/sphinx/trunk/debian/manpages)
Modified:
  packages/sphinx/trunk/debian/changelog
  packages/sphinx/trunk/debian/clean
  packages/sphinx/trunk/debian/control
  packages/sphinx/trunk/debian/dh_sphinxdoc
  packages/sphinx/trunk/debian/python-sphinx.links
  packages/sphinx/trunk/debian/rules
Deleted:
  packages/sphinx/trunk/debian/dirs
  packages/sphinx/trunk/debian/doc-base
  packages/sphinx/trunk/debian/docs
  packages/sphinx/trunk/debian/manpages

Modified: packages/sphinx/trunk/debian/changelog
===================================================================
--- packages/sphinx/trunk/debian/changelog	2011-07-08 07:57:28 UTC (rev 17750)
+++ packages/sphinx/trunk/debian/changelog	2011-07-08 19:39:43 UTC (rev 17751)
@@ -19,11 +19,12 @@
     documentation in Debian packages.
     + Update debian/rules, debian/control and debian/*.links to use
       dh_sphinxdoc.
+  * Move all JavaScript code into a separate package, libjs-sphinxdoc.
   * Fix test_build_latex to not fail in a directory with special characters.
   * Use debian/clean rather than listing files to clean directly in
     debian/rules.
 
- -- Jakub Wilk <jwilk at debian.org>  Thu, 07 Jul 2011 21:13:50 +0200
+ -- Jakub Wilk <jwilk at debian.org>  Fri, 08 Jul 2011 21:38:20 +0200
 
 sphinx (1.0.7-5) unstable; urgency=low
 

Modified: packages/sphinx/trunk/debian/clean
===================================================================
--- packages/sphinx/trunk/debian/clean	2011-07-08 07:57:28 UTC (rev 17750)
+++ packages/sphinx/trunk/debian/clean	2011-07-08 19:39:43 UTC (rev 17751)
@@ -1,5 +1,5 @@
 *.pyc
 *.pyo
 sphinx/pycode/*.pickle
-sphinx/themes/basic/static/jquery.js underscore.js
-sphinx/themes/basic/static/undersocre.js
+sphinx/themes/basic/static/jquery.js
+sphinx/themes/basic/static/underscore.js

Modified: packages/sphinx/trunk/debian/control
===================================================================
--- packages/sphinx/trunk/debian/control	2011-07-08 07:57:28 UTC (rev 17750)
+++ packages/sphinx/trunk/debian/control	2011-07-08 19:39:43 UTC (rev 17751)
@@ -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),
-  ${sphinxdoc:Depends}
+  ${sphinxdoc:Depends}, libjs-sphinxdoc (= ${source:Version})
 Recommends: python (>= 2.6) | python-simplejson, python-imaging
 Suggests: jsmath
 Description: tool for producing documentation for Python projects
@@ -31,3 +31,13 @@
   * Extensibility. Existing extensions:
     - automatic testing of code snippets,
     - including doctrings from Python modules.
+
+Package: libjs-sphinxdoc
+Section: web
+Architecture: all
+Depends: ${misc:Depends}, libjs-jquery (>= 1.4), libjs-underscore
+Description: JavaScript support for Sphinx documentation
+ Sphinx is a tool for producing documentation for Python projects, using
+ reStructuredText as markup language.
+ .
+ This package provides JavaScript code for documentation generated by Sphinx.

Modified: packages/sphinx/trunk/debian/dh_sphinxdoc
===================================================================
--- packages/sphinx/trunk/debian/dh_sphinxdoc	2011-07-08 07:57:28 UTC (rev 17750)
+++ packages/sphinx/trunk/debian/dh_sphinxdoc	2011-07-08 19:39:43 UTC (rev 17751)
@@ -3,14 +3,52 @@
 use strict;
 use warnings;
 
+use Digest::MD5;
 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'],
-);
+my %packaged_js = ();
 
+sub md5($)
+{
+    my ($filename) = @_;
+    my $md5 = Digest::MD5->new;
+    open(F, '<', $filename) or error("cannot open $filename");
+    $md5->addfile(*F);
+    close(F);
+    return $md5->digest;
+}
+
+sub load_packaged_js()
+{
+    my $root = tmpdir('libjs-sphinxdoc');    
+    $root = '' unless -d $root;
+    find({
+        wanted => sub {
+            my $js = $_;
+            my ($version, $name) = m{([0-9.]+)/(\w+[.]js)$} or return;
+            if (-l $js)
+            {
+                my $js_target = readlink($js);
+                if ($js_target =~ m{^/})
+                {
+                    $js = $js_target;
+                }
+                else
+                {
+                    $js =~ s{[^/]+$}{$js_target};
+                    while ($js =~ s{[^./][^/]+/[.][.]/}{}) {};
+                }
+            }
+            $js =~ s{^\Q$root\E}{} unless -f $js;
+            my $md5 = md5($js);
+            $js =~ s{^\Q$root\E}{};
+            $packaged_js{$md5} = [$js, "libjs-sphinxdoc (>= $version)"];
+        },
+        no_chdir => 1
+    }, "$root/usr/share/javascript/sphinxdoc/");
+}
+
 sub looks_like_sphinx_doc($)
 {
     my ($path) = @_;
@@ -39,42 +77,53 @@
     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 -l "$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;
+        -f "$path/_sources/$page.txt" or error("$path/_sources/$page.txt is missing") if $has_source;
     }
     return @js;
 }
 
+sub unknown_javascript($)
+{
+    my ($js) = @_;
+    my $message = "unknown JavaScript code: $js";
+    $js =~ s{.*/}{};
+    my $basic = grep { $_ eq $js } qw(searchtools.js doctools.js jquery.js underscore.js);
+    if ($basic)
+    {
+        error($message);
+    }
+    else
+    {
+        warning($message);
+    }
+}
+
 sub fix_symlinks($@)
 {
     my @deps = ();
     my ($path, @js) = @_;
     for my $js (@js)
     {
-        for (@packaged_js)
+        next if -l "$path/$js" and readlink("$path/$js") =~ m{/sphinxdoc/};
+        -f "$path/$js" or unknown_javascript("$path/$js");
+        my $md5 = md5("$path/$js");
+        if (exists $packaged_js{$md5})
         {
-            my ($source, $target, $dependency) = @{$_};
-            next unless $js =~ m{/\Q$source\E$};
+            my ($target, $dependency) = @{$packaged_js{$md5}};
             doit('ln', '-sf', "$target", "$path/$js");
             push @deps, $dependency;
         }
+        else
+        {
+            unknown_javascript("$path/$js");
+        }
     }
     return @deps;
 }
@@ -100,6 +149,8 @@
 
 init();
 
+load_packaged_js();
+
 my @paths = @ARGV;
 @paths = (undef) unless @paths;
 

Deleted: packages/sphinx/trunk/debian/dirs
===================================================================
--- packages/sphinx/trunk/debian/dirs	2011-07-08 07:57:28 UTC (rev 17750)
+++ packages/sphinx/trunk/debian/dirs	2011-07-08 19:39:43 UTC (rev 17751)
@@ -1,3 +0,0 @@
-/usr/share/sphinx/locale
-/usr/share/sphinx/pycode
-/usr/share/sphinx/ext/autosummary

Deleted: packages/sphinx/trunk/debian/doc-base
===================================================================
--- packages/sphinx/trunk/debian/doc-base	2011-07-08 07:57:28 UTC (rev 17750)
+++ packages/sphinx/trunk/debian/doc-base	2011-07-08 19:39:43 UTC (rev 17751)
@@ -1,12 +0,0 @@
-Document: sphinx-manual
-Title: Sphinx documentation builder manual
-Author: Georg Brandl
-Abstract: Sphinx is a tool that translates a set of reStructuredText_ source
- files into various output formats, automatically producing cross-references,
- indices etc. It can also generate a LaTeX file that you can compile into a PDF
- version of the documents.
-Section: Text
-
-Format: HTML
-Index: /usr/share/doc/python-sphinx/html/index.html
-Files: /usr/share/doc/python-sphinx/html/*

Deleted: packages/sphinx/trunk/debian/docs
===================================================================
--- packages/sphinx/trunk/debian/docs	2011-07-08 07:57:28 UTC (rev 17750)
+++ packages/sphinx/trunk/debian/docs	2011-07-08 19:39:43 UTC (rev 17751)
@@ -1,3 +0,0 @@
-README
-AUTHORS
-build/html

Added: packages/sphinx/trunk/debian/libjs-sphinxdoc.dirs
===================================================================
--- packages/sphinx/trunk/debian/libjs-sphinxdoc.dirs	                        (rev 0)
+++ packages/sphinx/trunk/debian/libjs-sphinxdoc.dirs	2011-07-08 19:39:43 UTC (rev 17751)
@@ -0,0 +1 @@
+/usr/share/javascript/sphinxdoc/1.0/

Added: packages/sphinx/trunk/debian/libjs-sphinxdoc.links
===================================================================
--- packages/sphinx/trunk/debian/libjs-sphinxdoc.links	                        (rev 0)
+++ packages/sphinx/trunk/debian/libjs-sphinxdoc.links	2011-07-08 19:39:43 UTC (rev 17751)
@@ -0,0 +1,2 @@
+/usr/share/javascript/jquery/jquery.js /usr/share/javascript/sphinxdoc/1.0/jquery.js 
+/usr/share/javascript/underscore/underscore.js /usr/share/javascript/sphinxdoc/1.0/underscore.js 

Deleted: packages/sphinx/trunk/debian/manpages
===================================================================
--- packages/sphinx/trunk/debian/manpages	2011-07-08 07:57:28 UTC (rev 17750)
+++ packages/sphinx/trunk/debian/manpages	2011-07-08 19:39:43 UTC (rev 17751)
@@ -1,3 +0,0 @@
-debian/sphinx-build.1
-debian/sphinx-quickstart.1
-debian/sphinx-autogen.1

Copied: packages/sphinx/trunk/debian/python-sphinx.dirs (from rev 17611, packages/sphinx/trunk/debian/dirs)
===================================================================
--- packages/sphinx/trunk/debian/python-sphinx.dirs	                        (rev 0)
+++ packages/sphinx/trunk/debian/python-sphinx.dirs	2011-07-08 19:39:43 UTC (rev 17751)
@@ -0,0 +1,3 @@
+/usr/share/sphinx/locale
+/usr/share/sphinx/pycode
+/usr/share/sphinx/ext/autosummary

Copied: packages/sphinx/trunk/debian/python-sphinx.doc-base (from rev 17611, packages/sphinx/trunk/debian/doc-base)
===================================================================
--- packages/sphinx/trunk/debian/python-sphinx.doc-base	                        (rev 0)
+++ packages/sphinx/trunk/debian/python-sphinx.doc-base	2011-07-08 19:39:43 UTC (rev 17751)
@@ -0,0 +1,12 @@
+Document: sphinx-manual
+Title: Sphinx documentation builder manual
+Author: Georg Brandl
+Abstract: Sphinx is a tool that translates a set of reStructuredText_ source
+ files into various output formats, automatically producing cross-references,
+ indices etc. It can also generate a LaTeX file that you can compile into a PDF
+ version of the documents.
+Section: Text
+
+Format: HTML
+Index: /usr/share/doc/python-sphinx/html/index.html
+Files: /usr/share/doc/python-sphinx/html/*

Copied: packages/sphinx/trunk/debian/python-sphinx.docs (from rev 17612, packages/sphinx/trunk/debian/docs)
===================================================================
--- packages/sphinx/trunk/debian/python-sphinx.docs	                        (rev 0)
+++ packages/sphinx/trunk/debian/python-sphinx.docs	2011-07-08 19:39:43 UTC (rev 17751)
@@ -0,0 +1,3 @@
+README
+AUTHORS
+build/html

Modified: packages/sphinx/trunk/debian/python-sphinx.links
===================================================================
--- packages/sphinx/trunk/debian/python-sphinx.links	2011-07-08 07:57:28 UTC (rev 17750)
+++ packages/sphinx/trunk/debian/python-sphinx.links	2011-07-08 19:39:43 UTC (rev 17751)
@@ -1,4 +1 @@
-/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/doc/python-sphinx/html/_sources/ /usr/share/doc/python-sphinx/rst

Copied: packages/sphinx/trunk/debian/python-sphinx.manpages (from rev 17611, packages/sphinx/trunk/debian/manpages)
===================================================================
--- packages/sphinx/trunk/debian/python-sphinx.manpages	                        (rev 0)
+++ packages/sphinx/trunk/debian/python-sphinx.manpages	2011-07-08 19:39:43 UTC (rev 17751)
@@ -0,0 +1,3 @@
+debian/sphinx-build.1
+debian/sphinx-quickstart.1
+debian/sphinx-autogen.1

Modified: packages/sphinx/trunk/debian/rules
===================================================================
--- packages/sphinx/trunk/debian/rules	2011-07-08 07:57:28 UTC (rev 17750)
+++ packages/sphinx/trunk/debian/rules	2011-07-08 19:39:43 UTC (rev 17751)
@@ -11,6 +11,8 @@
 PACKAGE_DIR=$(CURDIR)/debian/$(PACKAGE_NAME)
 SITE_PACKAGES_DIR=$(PACKAGE_DIR)$(call py_libdir,$(shell pyversions -d))
 
+javascript_path = /usr/share/javascript/sphinxdoc/1.0/
+
 build-arch:
 
 build-indep build: build-stamp
@@ -66,6 +68,12 @@
 	install -m 755 $(CURDIR)/sphinx-build.py $(PACKAGE_DIR)/usr/bin/sphinx-build
 	install -m 755 $(CURDIR)/sphinx-quickstart.py $(PACKAGE_DIR)/usr/bin/sphinx-quickstart
 	install -m 755 $(CURDIR)/sphinx-autogen.py $(PACKAGE_DIR)/usr/bin/sphinx-autogen
+	# Move JavaScript code to libjs-sphinxdoc:
+	set -e; \
+	for js in $$(find $(PACKAGE_DIR)/usr/share/sphinx/themes/ -name '*.js'); do \
+		mv $$js debian/libjs-sphinxdoc/$(javascript_path); \
+		ln -sf "$(javascript_path)/$${js##*/}" $$js; \
+	done
 
 binary-indep: build install
 	dh_testdir




More information about the Python-modules-commits mailing list