diff --git a/CHANGES b/CHANGES index cfb561309..4e7f43415 100644 --- a/CHANGES +++ b/CHANGES @@ -135,6 +135,10 @@ New features added 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. diff --git a/sphinx/environment.py b/sphinx/environment.py index d48dbad0f..f534e06f9 100644 --- a/sphinx/environment.py +++ b/sphinx/environment.py @@ -629,13 +629,17 @@ class BuildEnvironment: """ 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_downloads(self, docname, doctree): """