Georg Brandl avatar Georg Brandl committed f1294ee

#82: Determine the correct path for dependencies noted by
docutils. This fixes behavior where a source with dependent
files was always reported as changed.

Comments (0)

Files changed (2)

 Release 0.5.2 (in development)
 ==============================
 
+* #82: Determine the correct path for dependencies noted by
+  docutils.  This fixes behavior where a source with dependent
+  files was always reported as changed.
+
 * Recognize toctree directives that are not on section toplevel,
   but within block items, such as tables.
 

sphinx/environment.py

         """
         Process docutils-generated dependency info.
         """
+        cwd = os.getcwd()
         deps = doctree.settings.record_dependencies
         if not deps:
             return
         docdir = path.dirname(self.doc2path(docname, base=None))
         for dep in deps.list:
-            dep = path.join(docdir, dep)
-            self.dependencies.setdefault(docname, set()).add(dep)
+            # the dependency path is relative to the working dir, so get
+            # one relative to the srcdir
+            fullpath = path.normpath(path.join(cwd, dep))
+            relpath = fullpath[len(path.normpath(self.srcdir))+len(path.sep):]
+            self.dependencies.setdefault(docname, set()).add(relpath)
 
     def process_images(self, docname, doctree):
         """
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.