diff options
author | Constantin Musca <constantinx.musca@intel.com> | 2012-12-05 10:58:26 +0200 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-12-17 17:41:54 +0000 |
commit | 61cf01c5c236b4218f40cfae7c059c2b86765dbd (patch) | |
tree | 3535ac513601dd3d877477fa35972be5f4accb0f | |
parent | a906c94328b040d5076571bd593b57be7ee403a5 (diff) | |
download | bitbake-61cf01c5c236b4218f40cfae7.tar.gz |
fetch2: remove localcount and use AUTOINC instead
- do not use the BB_URI_LOCALCOUNT database for computing revision
incremental numbers anymore
- sortable_revision now generates "AUTOINC+${latest_rev}"
- use one incrementing value rather than several
- PV becomes 0.1+gitAUTOINC+deadbeefdecafbad_decafbaddeadbeef
- remove all localcount code and simplify the fetcher
- this patch addresses the following proposal:
http://lists.linuxtogo.org/pipermail/bitbake-devel/2012-November/003878.html
Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | lib/bb/fetch2/__init__.py | 55 | ||||
-rw-r--r-- | lib/bb/fetch2/git.py | 39 |
2 files changed, 11 insertions, 83 deletions
diff --git a/lib/bb/fetch2/__init__.py b/lib/bb/fetch2/__init__.py index 81964f11..150dc3c1 100644 --- a/lib/bb/fetch2/__init__.py +++ b/lib/bb/fetch2/__init__.py @@ -422,10 +422,18 @@ def get_srcrev(d): if not format: raise FetchError("The SRCREV_FORMAT variable must be set when multiple SCMs are used.") + autoinc = False + autoinc_templ = 'AUTOINC+' for scm in scms: ud = urldata[scm] for name in ud.names: rev = ud.method.sortable_revision(scm, ud, d, name) + if rev.startswith(autoinc_templ): + if not autoinc: + autoinc = True + format = "%s%s" % (autoinc_templ, format) + rev = rev[len(autoinc_templ):] + format = format.replace(name, rev) return format @@ -1036,23 +1044,6 @@ class FetchMethod(object): logger.info("URL %s could not be checked for status since no method exists.", url) return True - def localcount_internal_helper(ud, d, name): - """ - Return: - a) a locked localcount if specified - b) None otherwise - """ - - localcount = None - if name != '': - pn = d.getVar("PN", True) - localcount = d.getVar("LOCALCOUNT_" + name, True) - if not localcount: - localcount = d.getVar("LOCALCOUNT", True) - return localcount - - localcount_internal_helper = staticmethod(localcount_internal_helper) - def latest_revision(self, url, ud, d, name): """ Look in the cache for the latest revision, if not present ask the SCM. @@ -1075,36 +1066,8 @@ class FetchMethod(object): if hasattr(self, "_sortable_revision"): return self._sortable_revision(url, ud, d) - localcounts = bb.persist_data.persist('BB_URI_LOCALCOUNT', d) - key = self.generate_revision_key(url, ud, d, name) - latest_rev = self._build_revision(url, ud, d, name) - last_rev = localcounts.get(key + '_rev') - uselocalcount = d.getVar("BB_LOCALCOUNT_OVERRIDE", True) or False - count = None - if uselocalcount: - count = FetchMethod.localcount_internal_helper(ud, d, name) - if count is None: - count = localcounts.get(key + '_count') or "0" - - if last_rev == latest_rev: - return str(count + "+" + latest_rev) - - buildindex_provided = hasattr(self, "_sortable_buildindex") - if buildindex_provided: - count = self._sortable_buildindex(url, ud, d, latest_rev) - - if count is None: - count = "0" - elif uselocalcount or buildindex_provided: - count = str(count) - else: - count = str(int(count) + 1) - - localcounts[key + '_rev'] = latest_rev - localcounts[key + '_count'] = count - - return str(count + "+" + latest_rev) + return 'AUTOINC+%s' % str(latest_rev) def generate_revision_key(self, url, ud, d, name): key = self._revision_key(url, ud, d, name) diff --git a/lib/bb/fetch2/git.py b/lib/bb/fetch2/git.py index ba9f5fb9..63ff00b1 100644 --- a/lib/bb/fetch2/git.py +++ b/lib/bb/fetch2/git.py @@ -71,11 +71,8 @@ from bb.fetch2 import logger class Git(FetchMethod): """Class to fetch a module or modules from git repositories""" def init(self, d): - # - # Only enable _sortable revision if the key is set - # - if d.getVar("BB_GIT_CLONE_FOR_SRCREV", True): - self._sortable_buildindex = self._sortable_buildindex_disabled + pass + def supports(self, url, ud, d): """ Check to see if a given url can be fetched with git. @@ -316,38 +313,6 @@ class Git(FetchMethod): def _build_revision(self, url, ud, d, name): return ud.revisions[name] - def _sortable_buildindex_disabled(self, url, ud, d, rev): - """ - Return a suitable buildindex for the revision specified. This is done by counting revisions - using "git rev-list" which may or may not work in different circumstances. - """ - - cwd = os.getcwd() - - # Check if we have the rev already - - if not os.path.exists(ud.clonedir): - logger.debug(1, "GIT repository for %s does not exist in %s. \ - Downloading.", url, ud.clonedir) - self.download(None, ud, d) - if not os.path.exists(ud.clonedir): - logger.error("GIT repository for %s does not exist in %s after \ - download. Cannot get sortable buildnumber, using \ - old value", url, ud.clonedir) - return None - - - os.chdir(ud.clonedir) - if not self._contains_ref(rev, d): - self.download(None, ud, d) - - output = runfetchcmd("%s rev-list %s -- 2> /dev/null | wc -l" % (ud.basecmd, rev), d, quiet=True) - os.chdir(cwd) - - buildindex = "%s" % output.split()[0] - logger.debug(1, "GIT repository for %s in %s is returning %s revisions in rev-list before %s", url, ud.clonedir, buildindex, rev) - return buildindex - def checkstatus(self, uri, ud, d): fetchcmd = "%s ls-remote %s" % (ud.basecmd, uri) try: |