Hi,

I ran into a problem with base_packages.GitFetcher.  It looks like 
base_packages.BasePackageManager wants to grab a "packages.checksum" file to 
check to see if a dependency needs to be updated when it has already been 
installed.  BasePackageManager.parse_tarball_name fails when passed 
"packages.checksum"

I'm not sure of a good solution.  I will probably look into just disabling the 
checksum feature for GitFetcher, since git archive --remote= probably won't be 
able to fetch a packages.checksum directly anyway.

Stack trace:

   /root/auto/autotest/client/site_tests/iometer_control.py in <module>()
     12 job.pkgmgr.add_repository("git://10.0.0.12/tools/iometer.git")
     13 job.setup_dep(['iometer'])
  job = <autotest.client.job.job object>
  job.setup_dep = <bound method job.setup_dep of <autotest.client.job.job 
object>>
  
   /root/auto/autotest/client/job.py in setup_dep(self=<autotest.client.job.job 
object>, deps=['iometer'])
    511             # else check locally.
    512             try:
    513                 self.install_pkg(dep, 'dep', dep_dir)
    514             except error.PackageInstallError:
    515                 # see if the dep is there locally
  self = <autotest.client.job.job object>
  self.install_pkg = <bound method job.install_pkg of <autotest.client.job.job 
object>>
  dep = 'iometer'
  dep_dir = '/root/auto/autotest/client/deps/iometer'
  
   /root/auto/autotest/client/job.py in 
install_pkg(self=<autotest.client.job.job object>, name='iometer', 
pkg_type='dep', install_dir='/root/auto/autotest/client/deps/iometer')
    459         '''
    460         if self.pkgmgr.repositories:
    461             self.pkgmgr.install_pkg(name, pkg_type, self.pkgdir, 
install_dir)
    462 
    463 
  self = <autotest.client.job.job object>
  self.pkgmgr = <autotest.client.shared.packages.PackageManager object>
  self.pkgmgr.install_pkg = <bound method PackageManager.install_pkg of 
<autotest.client.shared.packages.PackageManager object>>
  name = 'iometer'
  pkg_type = 'dep'
  self.pkgdir = '/root/auto/autotest/client/tmp/packages'
  install_dir = '/root/auto/autotest/client/deps/iometer'
  
   /root/auto/autotest/client/shared/base_packages.py in 
install_pkg(self=<autotest.client.shared.packages.PackageManager object>, 
name='iometer', pkg_type='dep', 
fetch_dir='/root/auto/autotest/client/tmp/packages', 
install_dir='/root/auto/autotest/client/deps/iometer', 
preserve_install_dir=False, repo_url=None)
    631                 # Fetch the package into fetch_dir
    632                 fetcher = self.fetch_pkg(pkg_name, fetch_dir, 
use_checksum=True,
    633                                          repo_url=repo_url, 
install=True)
    634 
    635                 fetcher.install_pkg_post(pkg_name, fetch_dir, 
install_dir, preserve_install_dir)
  repo_url = None
  install undefined
  builtinTrue = True
  
   /root/auto/autotest/client/shared/base_packages.py in 
fetch_pkg(self=<autotest.client.shared.packages.PackageManager object>, 
pkg_name='dep-iometer.tar.bz2', 
dest_path='/root/auto/autotest/client/tmp/packages', repo_url=None, 
use_checksum=True, install=True)
    699                 need_to_fetch = (
    700                         not use_checksum or not pkg_exists
    701                         or not self.compare_checksum(dest, fetcher.url))
    702                 if need_to_fetch:
    703                     fetcher.fetch_pkg_file(pkg_name, dest)
  self = <autotest.client.shared.packages.PackageManager object>
  self.compare_checksum = <bound method PackageManager.compare_checksum 
of...st.client.shared.packages.PackageManager object>>
  dest = '/root/auto/autotest/client/tmp/packages/dep-iometer.tar.bz2'
  fetcher = <autotest.client.shared.base_packages.GitFetcher object>
  fetcher.url = 'git://10.0.0.12/tools/iometer.git'
  
   /root/auto/autotest/client/shared/base_packages.py in 
compare_checksum(self=<autotest.client.shared.packages.PackageManager object>, 
pkg_path='/root/auto/autotest/client/tmp/packages/dep-iometer.tar.bz2', 
repo_url='git://10.0.0.12/tools/iometer.git')
   1011         repo_url : The URL to fetch the checksum from
   1012         '''
   1013         checksum_dict = self._get_checksum_dict()
   1014         package_name = os.path.basename(pkg_path)
   1015         if not checksum_dict or package_name not in checksum_dict:
  checksum_dict undefined
  self = <autotest.client.shared.packages.PackageManager object>
  self._get_checksum_dict = <bound method PackageManager._get_checksum_dict 
...st.client.shared.packages.PackageManager object>>
  
   /root/auto/autotest/client/shared/base_packages.py in 
_get_checksum_dict(self=<autotest.client.shared.packages.PackageManager object>)
    921                     # The packages checksum file does not exist locally.
    922                     # See if it is present in the repositories.
    923                     self.fetch_pkg(CHECKSUM_FILE, checksum_path)
    924             except error.PackageFetchError:
    925                 # This should not happen whilst fetching a package..if a
  self = <autotest.client.shared.packages.PackageManager object>
  self.fetch_pkg = <bound method PackageManager.fetch_pkg of 
<autotest.client.shared.packages.PackageManager object>>
  global CHECKSUM_FILE = 'packages.checksum'
  checksum_path = '/root/auto/autotest/client/packages.checksum'
  
   /root/auto/autotest/client/shared/base_packages.py in 
fetch_pkg(self=<autotest.client.shared.packages.PackageManager object>, 
pkg_name='packages.checksum', 
dest_path='/root/auto/autotest/client/packages.checksum', repo_url=None, 
use_checksum=False, install=False)
    701                         or not self.compare_checksum(dest, fetcher.url))
    702                 if need_to_fetch:
    703                     fetcher.fetch_pkg_file(pkg_name, dest)
    704                     # update checksum so we won't refetch next time.
    705                     if use_checksum:
  fetcher = <autotest.client.shared.base_packages.GitFetcher object>
  fetcher.fetch_pkg_file = <bound method GitFetcher.fetch_pkg_file of 
<autotest.client.shared.base_packages.GitFetcher object>>
  pkg_name = 'packages.checksum'
  dest = '/root/auto/autotest/client/packages.checksum'
  
   /root/auto/autotest/client/shared/base_packages.py in 
fetch_pkg_file(self=<autotest.client.shared.base_packages.GitFetcher object>, 
filename='packages.checksum', 
dest_path='/root/auto/autotest/client/packages.checksum')
    409         logging.info('Fetching %s from %s to %s', filename, self.url,
    410                      dest_path)
    411         name, package_type = self.pkgmgr.parse_tarball_name(filename)
    412         package_path = self.branch + " " + name
    413         try:
  name undefined
  package_type undefined
  self = <autotest.client.shared.base_packages.GitFetcher object>
  self.pkgmgr = <autotest.client.shared.packages.PackageManager object>
  self.pkgmgr.parse_tarball_name = <function parse_tarball_name>
  filename = 'packages.checksum'
  
   /root/auto/autotest/client/shared/base_packages.py in 
parse_tarball_name(tarball_name='packages.checksum')
   1128         """
   1129         match = re.search(r'^([^-]*)-(.*)\.tar\.bz2$', tarball_name)
   1130         pkg_type, name = match.groups()
   1131         return name, pkg_type
   1132 
  pkg_type undefined
  name undefined
  match = None
  match.groups undefined
  <type 'exceptions.AttributeError'>: 'NoneType' object has no attribute 
'groups'
      args = ("'NoneType' object has no attribute 'groups'",)
      message = "'NoneType' object has no attribute 'groups'"
  
  The above is a description of an error in a Python program.  Here is
  the original traceback:
  
  Traceback (most recent call last):
    File "/root/auto/autotest/client/job.py", line 1336, in step_engine
      execfile(self.control, global_control_vars, global_control_vars)
    File "/root/auto/autotest/client/site_tests/iometer_control.py", line 13, 
in <module>
      job.setup_dep(['iometer'])
    File "/root/auto/autotest/client/job.py", line 513, in setup_dep
      self.install_pkg(dep, 'dep', dep_dir)
    File "/root/auto/autotest/client/job.py", line 461, in install_pkg
      self.pkgmgr.install_pkg(name, pkg_type, self.pkgdir, install_dir)
    File "/root/auto/autotest/client/shared/base_packages.py", line 633, in 
install_pkg
      repo_url=repo_url, install=True)
    File "/root/auto/autotest/client/shared/base_packages.py", line 701, in 
fetch_pkg
      or not self.compare_checksum(dest, fetcher.url))
    File "/root/auto/autotest/client/shared/base_packages.py", line 1013, in 
compare_checksum
      checksum_dict = self._get_checksum_dict()
    File "/root/auto/autotest/client/shared/base_packages.py", line 923, in 
_get_checksum_dict
      self.fetch_pkg(CHECKSUM_FILE, checksum_path)
    File "/root/auto/autotest/client/shared/base_packages.py", line 703, in 
fetch_pkg
      fetcher.fetch_pkg_file(pkg_name, dest)
    File "/root/auto/autotest/client/shared/base_packages.py", line 411, in 
fetch_pkg_file
      name, package_type = self.pkgmgr.parse_tarball_name(filename)
    File "/root/auto/autotest/client/shared/base_packages.py", line 1130, in 
parse_tarball_name
      pkg_type, name = match.groups()
  AttributeError: 'NoneType' object has no attribute 'groups'
  

--
Ross Brattain
Intel ND Linux Validation

_______________________________________________
Autotest-kernel mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/autotest-kernel

Reply via email to