]> code.ossystems Code Review - openembedded-core.git/commitdiff
bitbake/bitbake-dev: Sync with upstream
authorRichard Purdie <rpurdie@linux.intel.com>
Sat, 6 Dec 2008 13:16:13 +0000 (13:16 +0000)
committerRichard Purdie <rpurdie@linux.intel.com>
Sat, 6 Dec 2008 13:16:13 +0000 (13:16 +0000)
15 files changed:
bitbake-dev/ChangeLog
bitbake-dev/lib/bb/cache.py
bitbake-dev/lib/bb/cooker.py
bitbake-dev/lib/bb/fetch/hg.py
bitbake-dev/lib/bb/fetch/perforce.py
bitbake-dev/lib/bb/fetch/svn.py
bitbake-dev/lib/bb/taskdata.py
bitbake-dev/lib/bb/utils.py
bitbake/ChangeLog
bitbake/lib/bb/cache.py
bitbake/lib/bb/fetch/hg.py
bitbake/lib/bb/fetch/perforce.py
bitbake/lib/bb/fetch/svn.py
bitbake/lib/bb/taskdata.py
bitbake/lib/bb/utils.py

index 6f068be19fb4586a77ee2dfe86ad892e305655b3..a2c9d80801fe6dce34121bdade86affb9163fc60 100644 (file)
@@ -154,7 +154,21 @@ Changes in Bitbake 1.9.x:
          all variable from the environment. If BB_ENV_WHITELIST is set, that whitelist will be
          used instead of the internal bitbake one. Alternatively, BB_ENV_EXTRAWHITE can be used
          to extend the internal whitelist.
+       - Perforce fetcher fix to use commandline options instead of being overriden by the environment
+       - bb.utils.prunedir can cope with symlinks to directoriees without exceptions
+       - use @rev when doing a svn checkout
+       - Add osc fetcher (from Joshua Lock in Poky)
        - When SRCREV autorevisioning for a recipe is in use, don't cache the recipe
+       - Add tryaltconfigs option to control whether bitbake trys using alternative providers
+         to fulfil failed dependencies. It defaults to off, changing the default since this
+         behaviour confuses many users and isn't often useful.
+       - Improve lock file function error handling
+       - Add username handling to the git fetcher (Robert Bragg)
+       - Add support for HTTP_PROXY and HTTP_PROXY_IGNORE variables to the wget fetcher
+       - Export more variables to the fetcher commands to allow ssh checkouts and checkouts through 
+         proxies to work better. (from Poky)
+       - Also allow user and pswd options in SRC_URIs globally (from Poky)
+       - Improve proxy handling when using mirrors (from Poky)
 
 Changes in Bitbake 1.8.0:
        - Release 1.7.x as a stable series
index 1c87bfa12dd37942c094444ef14eb934b27b5fd8..a4a4f47cef295482c3b9af98f29bdfd610522c4e 100644 (file)
@@ -95,7 +95,11 @@ class Cache:
                 bb.msg.note(1, bb.msg.domain.Cache, "Invalid cache found, rebuilding...")
                 self.depends_cache = {}
         else:
-            bb.msg.note(1, bb.msg.domain.Cache, "Out of date cache found, rebuilding...")
+            try:
+                os.stat( self.cachefile )
+                bb.msg.note(1, bb.msg.domain.Cache, "Out of date cache found, rebuilding...")
+            except OSError:
+                pass
 
     def getVar(self, var, fn, exp = 0):
         """
index 86229799f28f62e6b538efd9828bf26e8e4e24de..06f3395d7aa445f13de2bbeba92d6f2610e9d725 100644 (file)
@@ -88,6 +88,24 @@ class BBCooker:
 
         bb.data.inheritFromOS(self.configuration.data)
 
+        for f in self.configuration.file:
+            self.parseConfigurationFile( f )
+
+        self.parseConfigurationFile( os.path.join( "conf", "bitbake.conf" ) )
+
+        if not self.configuration.cmd:
+            self.configuration.cmd = bb.data.getVar("BB_DEFAULT_TASK", self.configuration.data, True) or "build"
+
+        bbpkgs = bb.data.getVar('BBPKGS', self.configuration.data, True)
+        if bbpkgs:
+            self.configuration.pkgs_to_build.extend(bbpkgs.split())
+
+        #
+        # Special updated configuration we use for firing events
+        #
+        self.configuration.event_data = bb.data.createCopy(self.configuration.data)
+        bb.data.update_data(self.configuration.event_data)
+
         # TOSTOP must not be set or our children will hang when they output
         fd = sys.stdout.fileno()
         if os.isatty(fd):
@@ -105,23 +123,7 @@ class BBCooker:
         self.server.register_idle_function(self.runCommands, self)
 
     def parseConfiguration(self):
-        #
-        # Special updated configuration we use for firing events
-        #
-        self.configuration.event_data = bb.data.createCopy(self.configuration.data)
-        bb.data.update_data(self.configuration.event_data)
-
-        for f in self.configuration.file:
-            self.parseConfigurationFile( f )
 
-        self.parseConfigurationFile( os.path.join( "conf", "bitbake.conf" ) )
-
-        if not self.configuration.cmd:
-            self.configuration.cmd = bb.data.getVar("BB_DEFAULT_TASK", self.configuration.data, True) or "build"
-
-        bbpkgs = bb.data.getVar('BBPKGS', self.configuration.data, True)
-        if bbpkgs:
-            self.configuration.pkgs_to_build.extend(bbpkgs.split())
 
         # Change nice level if we're asked to
         nice = bb.data.getVar("BB_NICE_LEVEL", self.configuration.data, True)
@@ -149,6 +151,9 @@ class BBCooker:
             self.commandlineAction = ["showVersions"]
         elif self.configuration.parse_only:
             self.commandlineAction = ["parseFiles"]
+        # FIXME - implement
+        #elif self.configuration.interactive:
+        #    self.interactiveMode()
         elif self.configuration.dot_graph:
             if self.configuration.pkgs_to_build:
                 self.commandlineAction = ["generateDotGraph", self.configuration.pkgs_to_build, self.configuration.cmd]
index 1cd5a8aa5cdceb6b8bd883fd1246d794e2315c40..b87fd0fbe514c6c650e2b76f82eeb2dfcdb61ffe 100644 (file)
@@ -79,7 +79,7 @@ class Hg(Fetch):
             host = "/"
             ud.host = "localhost"
 
-        if ud.user == None:
+        if not ud.user:
             hgroot = host + ud.path
         else:
             hgroot = ud.user + "@" + host + ud.path
index b594d2bde2e5496a9e56e60f790cf3f2c902b06b..2fb38b41902a1a3425b9f389da7739763d30d6b2 100644 (file)
@@ -67,14 +67,15 @@ class Perforce(Fetch):
     doparse = staticmethod(doparse)
 
     def getcset(d, depot,host,user,pswd,parm):
+        p4opt = ""
         if "cset" in parm:
             return parm["cset"];
         if user:
-            data.setVar('P4USER', user, d)
+            p4opt += " -u %s" % (user)
         if pswd:
-            data.setVar('P4PASSWD', pswd, d)
+            p4opt += " -P %s" % (pswd)
         if host:
-            data.setVar('P4PORT', host, d)
+            p4opt += " -p %s" % (host)
 
         p4date = data.getVar("P4DATE", d, 1)
         if "revision" in parm:
@@ -85,8 +86,8 @@ class Perforce(Fetch):
             depot += "@%s" % (p4date)
 
         p4cmd = data.getVar('FETCHCOMMAND_p4', d, 1)
-        bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s changes -m 1 %s" % (p4cmd, depot))
-        p4file = os.popen("%s changes -m 1 %s" % (p4cmd,depot))
+        bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s%s changes -m 1 %s" % (p4cmd, p4opt, depot))
+        p4file = os.popen("%s%s changes -m 1 %s" % (p4cmd, p4opt, depot))
         cset = p4file.readline().strip()
         bb.msg.debug(1, bb.msg.domain.Fetcher, "READ %s" % (cset))
         if not cset:
@@ -146,14 +147,15 @@ class Perforce(Fetch):
         data.update_data(localdata)
 
         # Get the p4 command
+        p4opt = ""
         if user:
-            data.setVar('P4USER', user, localdata)
+            p4opt += " -u %s" % (user)
 
         if pswd:
-            data.setVar('P4PASSWD', pswd, localdata)
+            p4opt += " -P %s" % (pswd)
 
         if host:
-            data.setVar('P4PORT', host, localdata)
+            p4opt += " -p %s" % (host)
 
         p4cmd = data.getVar('FETCHCOMMAND', localdata, 1)
 
@@ -175,8 +177,8 @@ class Perforce(Fetch):
 
         os.chdir(tmpfile)
         bb.msg.note(1, bb.msg.domain.Fetcher, "Fetch " + loc)
-        bb.msg.note(1, bb.msg.domain.Fetcher, "%s files %s" % (p4cmd, depot))
-        p4file = os.popen("%s files %s" % (p4cmd, depot))
+        bb.msg.note(1, bb.msg.domain.Fetcher, "%s%s files %s" % (p4cmd, p4opt, depot))
+        p4file = os.popen("%s%s files %s" % (p4cmd, p4opt, depot))
 
         if not p4file:
             bb.error("Fetch: unable to get the P4 files from %s" % (depot))
@@ -193,7 +195,7 @@ class Perforce(Fetch):
             dest = list[0][len(path)+1:]
             where = dest.find("#")
 
-            os.system("%s print -o %s/%s %s" % (p4cmd, module,dest[:where],list[0]))
+            os.system("%s%s print -o %s/%s %s" % (p4cmd, p4opt, module,dest[:where],list[0]))
             count = count + 1
             
         if count == 0:
index 5e5b31b3adf8a1f7233a89ea5870d644729dc571..aead1629b3416fdeee7d6a6f216c20ee25c1bcf3 100644 (file)
@@ -114,13 +114,15 @@ class Svn(Fetch):
         if command is "info":
             svncmd = "%s info %s %s://%s/%s/" % (basecmd, " ".join(options), proto, svnroot, ud.module)
         else:
+            suffix = ""
             if ud.revision:
                 options.append("-r %s" % ud.revision)
+                suffix = "@%s" % (ud.revision)
             elif ud.date:
                 options.append("-r {%s}" % ud.date)
 
             if command is "fetch":
-                svncmd = "%s co %s %s://%s/%s %s" % (basecmd, " ".join(options), proto, svnroot, ud.module, ud.module)
+                svncmd = "%s co %s %s://%s/%s%s %s" % (basecmd, " ".join(options), proto, svnroot, ud.module, suffix, ud.module)
             elif command is "update":
                 svncmd = "%s update %s" % (basecmd, " ".join(options))
             else:
index 782dfb0b7883ef6b70b49fcc803f5df9bb05e375..64ab032c3c8829c9f0517296a281c92a2df5d66d 100644 (file)
@@ -340,7 +340,10 @@ class TaskData:
             self.add_provider_internal(cfgData, dataCache, item)
         except bb.providers.NoProvider:
             if self.abort:
-                bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (item, self.get_dependees_str(item)))
+                if self.get_rdependees_str(item):
+                    bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (item, self.get_dependees_str(item)))
+                else:
+                    bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s'" % (item))
                 raise
             targetid = self.getbuild_id(item)
             self.remove_buildtarget(targetid)
@@ -358,7 +361,10 @@ class TaskData:
             return
 
         if not item in dataCache.providers:
-            bb.msg.note(2, bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (item, self.get_dependees_str(item)))
+            if self.get_rdependees_str(item):
+                bb.msg.note(2, bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (item, self.get_dependees_str(item)))
+            else:
+                bb.msg.note(2, bb.msg.domain.Provider, "Nothing PROVIDES '%s'" % (item))
             bb.event.fire(bb.event.NoProvider(item, cfgData))
             raise bb.providers.NoProvider(item)
 
@@ -536,7 +542,10 @@ class TaskData:
                 except bb.providers.NoProvider:
                     targetid = self.getbuild_id(target)
                     if self.abort and targetid in self.external_targets:
-                        bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (target, self.get_dependees_str(target)))
+                        if self.get_rdependees_str(target):
+                            bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (target, self.get_dependees_str(target)))
+                        else:
+                            bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s'" % (target))
                         raise
                     self.remove_buildtarget(targetid)
             for target in self.get_unresolved_run_targets(dataCache):
index 33a0c17650f8b6889dda524e74482d85c6d59ba1..90ba9ac2e0b0f1610386f6bf60a8a591c52bac67 100644 (file)
@@ -323,7 +323,6 @@ def preserved_envvars_list():
         'HOME',
         'LANG',
         'LOGNAME',
-        'OEROOT',
         'PATH',
         'PWD',
         'SESSION_MANAGER',
index 2d50c0e364053d1d8d383803344eab643c1b11f8..a053ab839e9fdbc8d53c4d2767a9ad8415cf4cfb 100644 (file)
@@ -59,7 +59,20 @@ Changes in BitBake 1.8.x:
          all variable from the environment. If BB_ENV_WHITELIST is set, that whitelist will be
          used instead of the internal bitbake one. Alternatively, BB_ENV_EXTRAWHITE can be used
          to extend the internal whitelist.
+       - Perforce fetcher fix to use commandline options instead of being overriden by the environment
+       - use @rev when doing a svn checkout
+       - Add osc fetcher (from Joshua Lock in Poky)
        - When SRCREV autorevisioning for a recipe is in use, don't cache the recipe
+       - Add tryaltconfigs option to control whether bitbake trys using alternative providers
+         to fulfil failed dependencies. It defaults to off, changing the default since this
+         behaviour confuses many users and isn't often useful.
+       - Improve lock file function error handling
+       - Add username handling to the git fetcher (Robert Bragg)
+       - Add support for HTTP_PROXY and HTTP_PROXY_IGNORE variables to the wget fetcher
+       - Export more variables to the fetcher commands to allow ssh checkouts and checkouts through 
+         proxies to work better. (from Poky)
+       - Also allow user and pswd options in SRC_URIs globally (from Poky)
+       - Improve proxy handling when using mirrors (from Poky)
 
 Changes in BitBake 1.8.10:
        - Psyco is available only for x86 - do not use it on other architectures.
@@ -104,6 +117,7 @@ Changes in BitBake 1.8.10:
        - Add support for branches in git fetcher (Otavio Salvador, Michael Lauer)
        - Make taskdata and runqueue errors more user friendly
        - Add norecurse and fullpath options to cvs fetcher
+       - bb.utils.prunedir can cope with symlinks to directories without exceptions
 
 Changes in Bitbake 1.8.8:
        - Rewrite svn fetcher to make adding extra operations easier 
index 1c87bfa12dd37942c094444ef14eb934b27b5fd8..a4a4f47cef295482c3b9af98f29bdfd610522c4e 100644 (file)
@@ -95,7 +95,11 @@ class Cache:
                 bb.msg.note(1, bb.msg.domain.Cache, "Invalid cache found, rebuilding...")
                 self.depends_cache = {}
         else:
-            bb.msg.note(1, bb.msg.domain.Cache, "Out of date cache found, rebuilding...")
+            try:
+                os.stat( self.cachefile )
+                bb.msg.note(1, bb.msg.domain.Cache, "Out of date cache found, rebuilding...")
+            except OSError:
+                pass
 
     def getVar(self, var, fn, exp = 0):
         """
index 1cd5a8aa5cdceb6b8bd883fd1246d794e2315c40..b87fd0fbe514c6c650e2b76f82eeb2dfcdb61ffe 100644 (file)
@@ -79,7 +79,7 @@ class Hg(Fetch):
             host = "/"
             ud.host = "localhost"
 
-        if ud.user == None:
+        if not ud.user:
             hgroot = host + ud.path
         else:
             hgroot = ud.user + "@" + host + ud.path
index b594d2bde2e5496a9e56e60f790cf3f2c902b06b..2fb38b41902a1a3425b9f389da7739763d30d6b2 100644 (file)
@@ -67,14 +67,15 @@ class Perforce(Fetch):
     doparse = staticmethod(doparse)
 
     def getcset(d, depot,host,user,pswd,parm):
+        p4opt = ""
         if "cset" in parm:
             return parm["cset"];
         if user:
-            data.setVar('P4USER', user, d)
+            p4opt += " -u %s" % (user)
         if pswd:
-            data.setVar('P4PASSWD', pswd, d)
+            p4opt += " -P %s" % (pswd)
         if host:
-            data.setVar('P4PORT', host, d)
+            p4opt += " -p %s" % (host)
 
         p4date = data.getVar("P4DATE", d, 1)
         if "revision" in parm:
@@ -85,8 +86,8 @@ class Perforce(Fetch):
             depot += "@%s" % (p4date)
 
         p4cmd = data.getVar('FETCHCOMMAND_p4', d, 1)
-        bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s changes -m 1 %s" % (p4cmd, depot))
-        p4file = os.popen("%s changes -m 1 %s" % (p4cmd,depot))
+        bb.msg.debug(1, bb.msg.domain.Fetcher, "Running %s%s changes -m 1 %s" % (p4cmd, p4opt, depot))
+        p4file = os.popen("%s%s changes -m 1 %s" % (p4cmd, p4opt, depot))
         cset = p4file.readline().strip()
         bb.msg.debug(1, bb.msg.domain.Fetcher, "READ %s" % (cset))
         if not cset:
@@ -146,14 +147,15 @@ class Perforce(Fetch):
         data.update_data(localdata)
 
         # Get the p4 command
+        p4opt = ""
         if user:
-            data.setVar('P4USER', user, localdata)
+            p4opt += " -u %s" % (user)
 
         if pswd:
-            data.setVar('P4PASSWD', pswd, localdata)
+            p4opt += " -P %s" % (pswd)
 
         if host:
-            data.setVar('P4PORT', host, localdata)
+            p4opt += " -p %s" % (host)
 
         p4cmd = data.getVar('FETCHCOMMAND', localdata, 1)
 
@@ -175,8 +177,8 @@ class Perforce(Fetch):
 
         os.chdir(tmpfile)
         bb.msg.note(1, bb.msg.domain.Fetcher, "Fetch " + loc)
-        bb.msg.note(1, bb.msg.domain.Fetcher, "%s files %s" % (p4cmd, depot))
-        p4file = os.popen("%s files %s" % (p4cmd, depot))
+        bb.msg.note(1, bb.msg.domain.Fetcher, "%s%s files %s" % (p4cmd, p4opt, depot))
+        p4file = os.popen("%s%s files %s" % (p4cmd, p4opt, depot))
 
         if not p4file:
             bb.error("Fetch: unable to get the P4 files from %s" % (depot))
@@ -193,7 +195,7 @@ class Perforce(Fetch):
             dest = list[0][len(path)+1:]
             where = dest.find("#")
 
-            os.system("%s print -o %s/%s %s" % (p4cmd, module,dest[:where],list[0]))
+            os.system("%s%s print -o %s/%s %s" % (p4cmd, p4opt, module,dest[:where],list[0]))
             count = count + 1
             
         if count == 0:
index 5e5b31b3adf8a1f7233a89ea5870d644729dc571..aead1629b3416fdeee7d6a6f216c20ee25c1bcf3 100644 (file)
@@ -114,13 +114,15 @@ class Svn(Fetch):
         if command is "info":
             svncmd = "%s info %s %s://%s/%s/" % (basecmd, " ".join(options), proto, svnroot, ud.module)
         else:
+            suffix = ""
             if ud.revision:
                 options.append("-r %s" % ud.revision)
+                suffix = "@%s" % (ud.revision)
             elif ud.date:
                 options.append("-r {%s}" % ud.date)
 
             if command is "fetch":
-                svncmd = "%s co %s %s://%s/%s %s" % (basecmd, " ".join(options), proto, svnroot, ud.module, ud.module)
+                svncmd = "%s co %s %s://%s/%s%s %s" % (basecmd, " ".join(options), proto, svnroot, ud.module, suffix, ud.module)
             elif command is "update":
                 svncmd = "%s update %s" % (basecmd, " ".join(options))
             else:
index 782dfb0b7883ef6b70b49fcc803f5df9bb05e375..64ab032c3c8829c9f0517296a281c92a2df5d66d 100644 (file)
@@ -340,7 +340,10 @@ class TaskData:
             self.add_provider_internal(cfgData, dataCache, item)
         except bb.providers.NoProvider:
             if self.abort:
-                bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (item, self.get_dependees_str(item)))
+                if self.get_rdependees_str(item):
+                    bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (item, self.get_dependees_str(item)))
+                else:
+                    bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s'" % (item))
                 raise
             targetid = self.getbuild_id(item)
             self.remove_buildtarget(targetid)
@@ -358,7 +361,10 @@ class TaskData:
             return
 
         if not item in dataCache.providers:
-            bb.msg.note(2, bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (item, self.get_dependees_str(item)))
+            if self.get_rdependees_str(item):
+                bb.msg.note(2, bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (item, self.get_dependees_str(item)))
+            else:
+                bb.msg.note(2, bb.msg.domain.Provider, "Nothing PROVIDES '%s'" % (item))
             bb.event.fire(bb.event.NoProvider(item, cfgData))
             raise bb.providers.NoProvider(item)
 
@@ -536,7 +542,10 @@ class TaskData:
                 except bb.providers.NoProvider:
                     targetid = self.getbuild_id(target)
                     if self.abort and targetid in self.external_targets:
-                        bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (target, self.get_dependees_str(target)))
+                        if self.get_rdependees_str(target):
+                            bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s' (but '%s' DEPENDS on or otherwise requires it)" % (target, self.get_dependees_str(target)))
+                        else:
+                            bb.msg.error(bb.msg.domain.Provider, "Nothing PROVIDES '%s'" % (target))
                         raise
                     self.remove_buildtarget(targetid)
             for target in self.get_unresolved_run_targets(dataCache):
index cc3d03f609ea02df7d0546fab21ee694d18136ed..5015779f8d2342ad329ba73126ae284920762bd2 100644 (file)
@@ -323,7 +323,6 @@ def preserved_envvars_list():
         'HOME',
         'LANG',
         'LOGNAME',
-        'OEROOT',
         'PATH',
         'PWD',
         'SESSION_MANAGER',