def build(self, make_opts = '', logfile = '', extraversion='autotest'): """build the kernel make_opts additional options to make, if any """ os_dep.commands('gcc', 'make') if logfile == '': logfile = os.path.join(self.log_dir, 'kernel_build') os.chdir(self.build_dir) if extraversion: self.extraversion(extraversion) self.set_cross_cc() # setup_config_file(config_file, config_overrides) # Not needed on 2.6, but hard to tell -- handle failure utils.system('make dep', ignore_status=True) threads = 2 * utils.count_cpus() build_string = 'make -j %d %s %s' % (threads, make_opts, self.build_target) # eg make bzImage, or make zImage print build_string utils.system(build_string) if kernel_config.modules_needed('.config'): utils.system('make -j %d modules' % (threads)) kernel_version = self.get_kernel_build_ver() kernel_version = re.sub('-autotest', '', kernel_version) self.logfile.write('BUILD VERSION: %s\n' % kernel_version) utils.force_copy(self.build_dir+'/System.map', self.results_dir)
def get_xfer_rate(src, dst): """Compute transfer rate from src to dst as Mbit/sec Execute a copy from |src| to |dst| and returns the file copy transfer rate in Mbit/sec @param src, dst: paths for source and destination @return trasfer rate (float) in Mbit/sec """ assert os.path.isfile(src) assert os.path.isfile(dst) utils.drop_caches() start = datetime.datetime.now() utils.force_copy(src, dst) end = datetime.datetime.now() delta = end - start # compute seconds (as float) from microsecs delta_secs = delta.seconds + (delta.microseconds / USECS_IN_SEC) # compute Mbit from bytes size_Mbit = (os.path.getsize(src) * 8.0) / (1000 * 1000) logging.info( 'file trasferred: size (Mbits): %f, start: %f, end: %d,' ' delta (secs): %f', size_Mbit, start.second + start.microsecond / USECS_IN_SEC, end.second + end.microsecond / USECS_IN_SEC, delta_secs) # return the xfer rate in Mbits/secs having bytes/microsec return size_Mbit / delta_secs
def install(self, tag='autotest', prefix = '/'): """make install in the kernel tree""" # Record that we have installed the kernel, and # the tag under which we installed it. self.installed_as = tag os.chdir(self.build_dir) if not os.path.isdir(prefix): os.mkdir(prefix) self.boot_dir = os.path.join(prefix, 'boot') if not os.path.isdir(self.boot_dir): os.mkdir(self.boot_dir) if not self.build_image: images = glob.glob('arch/*/boot/' + self.build_target) if len(images): self.build_image = images[0] else: self.build_image = self.build_target # remember installed files self.vmlinux = self.boot_dir + '/vmlinux-' + tag if (self.build_image != 'vmlinux'): self.image = self.boot_dir + '/vmlinuz-' + tag else: self.image = self.vmlinux self.system_map = self.boot_dir + '/System.map-' + tag self.config_file = self.boot_dir + '/config-' + tag self.initrd = '' # copy to boot dir utils.force_copy('vmlinux', self.vmlinux) if (self.build_image != 'vmlinux'): utils.force_copy(self.build_image, self.image) utils.force_copy('System.map', self.system_map) utils.force_copy('.config', self.config_file) if not kernel_config.modules_needed('.config'): return utils.system('make modules_install INSTALL_MOD_PATH=%s' % prefix) if prefix == '/': self.initrd = self.boot_dir + '/initrd-' + tag self.mkinitrd(self.get_kernel_build_ver(), self.image, self.system_map, self.initrd)
def apply_patches(self, local_patches): """apply the list of patches, in order""" builddir = self.build_dir os.chdir(builddir) if not local_patches: return None for (spec, local, md5sum) in local_patches: if local.endswith('.bz2') or local.endswith('.gz'): ref = spec else: ref = utils.force_copy(local, self.results_dir) ref = self.job.relative_path(ref) patch_id = "%s %s %s" % (spec, ref, md5sum) log = "PATCH: " + patch_id + "\n" print log utils.cat_file_to_cmd(local, 'patch -p1 > /dev/null') self.logfile.write(log) self.applied_patches.append(patch_id)
f.read() except Exception, e: msg = ('fatal error occurred during read(): ' 'basic file operation failed: %s' % e) raise error.TestFail(msg) try: f.close() except Exception, e: msg = ('fatal error occurred during close(): ' 'basic file operation failed: %s' % e) raise error.TestFail(msg) # Step 3: check if file copy works try: utils.force_copy(self._src.name, self._dst.name) except Exception, e: msg = ('fatal error occurred during a file copy: ' 'basic file operation failed: %s' % e) raise error.TestFail(msg) if src_md5 != storage_mod.checksum_file(self._dst.name): msg = ('fatal error occurred during a file copy, ' 'md5 from origin and from destination are different: ' 'basic file operation failed') raise error.TestFail(msg) # Step 4: check if file removal works try: os.remove(self._src.name) except OSError, e: