]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
bb/fetch2/wget.py: latest_versionstring fix multithread and remove deprecated code
authorAníbal Limón <anibal.limon@linux.intel.com>
Thu, 18 Dec 2014 23:58:57 +0000 (17:58 -0600)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Sun, 21 Dec 2014 17:29:42 +0000 (17:29 +0000)
In order to fix multithread usage of latest_versionstring moves package_custom_regex_comp
from class to method level because need to be defined by package.

Remove code for build url's with /download suffix because it's deprecated since you can
specify the download directory using package_regex.inc file.

Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
lib/bb/fetch2/wget.py

index d82e78cb69d0c14b3976820048f28bf953030a49..2e6da482703feeb0eb2a0a69065889cb71e1ed63 100644 (file)
@@ -227,7 +227,7 @@ class Wget(FetchMethod):
             bb.debug(3, "Not Valid")
             return None
 
-    def _check_latest_version(self, url, package, current_version, ud, d):
+    def _check_latest_version(self, url, package, package_regex, current_version, ud, d):
         """
         Return the latest version of a package inside a given directory path
         If error or no version, return None
@@ -260,9 +260,9 @@ class Wget(FetchMethod):
                         bb.debug(3, "Pver = '%s'" % (m.group('pver')))
                         newver = ('', m.group('pver'), '')
             else:
-                newver = self._parse_path(self.package_custom_regex_comp, line['href'])
+                newver = self._parse_path(package_regex, line['href'])
                 if not newver:
-                    newver = self._parse_path(self.package_custom_regex_comp, str(line))
+                    newver = self._parse_path(package_regex, str(line))
 
             if newver:
                 bb.debug(3, "Upstream version found: %s" % newver[1])
@@ -323,13 +323,16 @@ class Wget(FetchMethod):
         # "5.7" in http://download.gnome.org/sources/${PN}/5.7/${PN}-${PV}.tar.gz
         self.dirver_regex_comp = re.compile("(?P<dirver>[^/]*(\d+\.)*\d+([\-_]r\d+)*)/")
 
-        # get current version and make custom regex for search in uri's
+        # make custom regex for search in uri's
+        package_custom_regex_comp = None
         version = self._parse_path(self.package_regex_comp, package)
         if version:
-            self.package_custom_regex_comp = re.compile(
+            package_custom_regex_comp = re.compile(
                 "(?P<name>%s)(?P<ver>%s)(?P<arch>%s)?[\.\-](?P<type>%s)$" %
                 (version[0], pver_regex, parch_regex, psuffix_regex))
 
+        return package_custom_regex_comp
+
     def latest_versionstring(self, ud, d):
         """
         Manipulate the URL and try to obtain the latest package version
@@ -341,7 +344,8 @@ class Wget(FetchMethod):
         newpath = regex_uri or ud.path
         pupver = ""
 
-        self._init_regexes(package)
+        package_custom_regex_comp = self._init_regexes(package)
+
         current_version = ('', d.getVar('PV', True), '')
 
         """possible to have no version in pkg name, such as spectrum-fw"""
@@ -364,14 +368,6 @@ class Wget(FetchMethod):
         else:
             newuri = newpath
 
-        newversion = self._check_latest_version(newuri, package,
-                        current_version, ud, d)
-        while not newversion:
-            # maybe it's hiding in a download directory so try there
-            newuri = "/".join(newuri.split("/")[0:-2]) + "/download"
-            if newuri == "/download" or newuri == "http://download":
-                break
-            newversion = self._check_latest_version(newuri, package,
-                            current_version, ud, d)
-
-        return newversion or ""
+        return self._check_latest_version(newuri, package,
+                        package_custom_regex_comp or package_regex_comp,
+                        current_version, ud, d) or ""