svn commit: r316952 - head/share/mk

Simon J. Gerraty sjg at FreeBSD.org
Sat Apr 15 03:28:15 UTC 2017


Author: sjg
Date: Sat Apr 15 03:28:13 2017
New Revision: 316952
URL: https://svnweb.freebsd.org/changeset/base/316952

Log:
  Latest version, we need to realpath anyway to check if an obj
  dependency is also a src dependency.

Modified:
  head/share/mk/meta2deps.py

Modified: head/share/mk/meta2deps.py
==============================================================================
--- head/share/mk/meta2deps.py	Sat Apr 15 02:24:22 2017	(r316951)
+++ head/share/mk/meta2deps.py	Sat Apr 15 03:28:13 2017	(r316952)
@@ -492,6 +492,21 @@ class MetaFile:
         if not file:
             f.close()
 
+    def is_src(self, base, dir, rdir):
+        """is base in srctop"""
+        for dir in [dir,rdir]:
+            if not dir:
+                continue
+            path = '/'.join([dir,base])
+            srctop = self.find_top(path, self.srctops)
+            if srctop:
+                if self.dpdeps:
+                    self.add(self.file_deps, path.replace(srctop,''), 'file')
+                self.add(self.src_deps, dir.replace(srctop,''), 'src')
+                self.seenit(dir)
+                return True
+        return False
+
     def parse_path(self, path, cwd, op=None, w=[]):
         """look at a path for the op specified"""
 
@@ -520,10 +535,9 @@ class MetaFile:
         # to the src dir, we may need to add dependencies for each
         rdir = dir
         dir = abspath(dir, cwd, self.last_dir, self.debug, self.debug_out)
-        if rdir == dir or rdir.find('./') > 0:
-            rdir = None
-        if os.path.islink(dir):
             rdir = os.path.realpath(dir)
+        if rdir == dir:
+            rdir = None
         # now put path back together
         path = '/'.join([dir,base])
         if self.debug > 1:
@@ -544,17 +558,9 @@ class MetaFile:
             # finally, we get down to it
             if dir == self.cwd or dir == self.curdir:
                 return
-            srctop = self.find_top(path, self.srctops)
-            if srctop:
-                if self.dpdeps:
-                    self.add(self.file_deps, path.replace(srctop,''), 'file')
-                self.add(self.src_deps, dir.replace(srctop,''), 'src')
+            if self.is_src(base, dir, rdir):
                 self.seenit(w[2])
-                self.seenit(dir)
-                if rdir and not rdir.startswith(srctop):
-                    dir = rdir      # for below
-                    rdir = None
-                else:
+                if not rdir:
                     return
 
             objroot = None


More information about the svn-src-head mailing list