2597 self.ApplyOSVariant(buildConfig, epocroot) |
2597 self.ApplyOSVariant(buildConfig, epocroot) |
2598 else: # We are ignore OS versions so no detection required, so no variant will be applied |
2598 else: # We are ignore OS versions so no detection required, so no variant will be applied |
2599 self.__Raptor.Debug("Automatic OS detection disabled.") |
2599 self.__Raptor.Debug("Automatic OS detection disabled.") |
2600 |
2600 |
2601 # is this a feature variant config or an ordinary variant |
2601 # is this a feature variant config or an ordinary variant |
2602 fv = evaluator.Get("FEATUREVARIANTNAME") |
2602 fvn = evaluator.Get("FEATUREVARIANTNAME") |
2603 if fv: |
2603 detail['ISFEATUREVARIANT'] = (fvn != None and fvn != '') |
2604 variantHdr = evaluator.CheckedGet("VARIANT_HRH") |
2604 |
|
2605 # get the .hrh name from VARIANT_HRH if it is set, otherwise read |
|
2606 # the name from the contents of the file named in VARIANT_CFG |
|
2607 variantHdr = evaluator.Get("VARIANT_HRH") |
|
2608 if variantHdr: |
2605 variantHRH = generic_path.Path(variantHdr) |
2609 variantHRH = generic_path.Path(variantHdr) |
2606 detail['ISFEATUREVARIANT'] = True |
|
2607 else: |
2610 else: |
2608 variantCfg = evaluator.CheckedGet("VARIANT_CFG") |
2611 variantCfg = evaluator.CheckedGet("VARIANT_CFG") |
2609 variantCfg = generic_path.Path(variantCfg) |
2612 variantCfg = generic_path.Path(variantCfg) |
2610 if not variantCfg in variantCfgs: |
2613 if not variantCfg in variantCfgs: |
2611 # get VARIANT_HRH from the variant.cfg file |
2614 # get VARIANT_HRH from the variant.cfg file |
2614 # we expect to always build ABIv2 |
2617 # we expect to always build ABIv2 |
2615 if not 'ENABLE_ABIV2_MODE' in varCfg: |
2618 if not 'ENABLE_ABIV2_MODE' in varCfg: |
2616 self.__Raptor.Warn("missing flag ENABLE_ABIV2_MODE in %s file. ABIV1 builds are not supported.", |
2619 self.__Raptor.Warn("missing flag ENABLE_ABIV2_MODE in %s file. ABIV1 builds are not supported.", |
2617 str(variantCfg)) |
2620 str(variantCfg)) |
2618 variantHRH = variantCfgs[variantCfg] |
2621 variantHRH = variantCfgs[variantCfg] |
2619 detail['ISFEATUREVARIANT'] = False |
|
2620 |
2622 |
2621 detail['VARIANT_HRH'] = variantHRH |
2623 detail['VARIANT_HRH'] = variantHRH |
2622 self.__Raptor.Info("'%s' uses variant hrh file '%s'", buildConfig.name, variantHRH) |
2624 self.__Raptor.Info("'%s' uses variant hrh file '%s'", buildConfig.name, variantHRH) |
2623 detail['SYSTEMINCLUDE'] = evaluator.CheckedGet("SYSTEMINCLUDE") |
2625 detail['SYSTEMINCLUDE'] = evaluator.CheckedGet("SYSTEMINCLUDE") |
2624 |
2626 |
2625 detail['TARGET_TYPES'] = evaluator.CheckedGet("TARGET_TYPES") |
2627 detail['TARGET_TYPES'] = evaluator.CheckedGet("TARGET_TYPES") |
2626 |
2628 |
2627 # find all the interface names we need |
2629 # find all the interface names we need |
2628 ifaceTypes = evaluator.CheckedGet("INTERFACE_TYPES") |
2630 ifaceTypes = evaluator.CheckedGet("INTERFACE_TYPES") |
2629 interfaces = ifaceTypes.split() |
2631 interfaces = ifaceTypes.split() |
2994 |
2996 |
2995 |
2997 |
2996 destDir = destination.Dir() |
2998 destDir = destination.Dir() |
2997 if not destDir.isDir(): |
2999 if not destDir.isDir(): |
2998 os.makedirs(str(destDir)) |
3000 os.makedirs(str(destDir)) |
2999 # preserve permissions |
3001 shutil.copyfile(source_str, dest_str) |
3000 shutil.copy(source_str, dest_str) |
|
3001 return exportwhatlog |
3002 return exportwhatlog |
3002 |
3003 |
3003 sourceMTime = 0 |
3004 sourceMTime = 0 |
3004 destMTime = 0 |
3005 destMTime = 0 |
3005 sourceStat = 0 |
3006 sourceStat = 0 |
3014 raise MetaDataError(message) |
3015 raise MetaDataError(message) |
3015 else: |
3016 else: |
3016 self.__Raptor.Error(message, bldinf=bldInfFile) |
3017 self.__Raptor.Error(message, bldinf=bldInfFile) |
3017 |
3018 |
3018 if destMTime == 0 or destMTime < sourceMTime: |
3019 if destMTime == 0 or destMTime < sourceMTime: |
3019 # remove old version |
|
3020 # - not having ownership prevents chmod |
|
3021 # - avoid clobbering the original if it is a hard link |
|
3022 if os.path.exists(dest_str): |
3020 if os.path.exists(dest_str): |
3023 os.unlink(dest_str) |
3021 os.chmod(dest_str,stat.S_IREAD | stat.S_IWRITE) |
3024 # preserve permissions |
3022 shutil.copyfile(source_str, dest_str) |
3025 shutil.copy(source_str, dest_str) |
3023 |
3026 |
3024 # Ensure that the destination file remains executable if the source was also: |
|
3025 os.chmod(dest_str,sourceStat[stat.ST_MODE] | stat.S_IREAD | stat.S_IWRITE | stat.S_IWGRP ) |
3027 self.__Raptor.Info("Copied %s to %s", source_str, dest_str) |
3026 self.__Raptor.Info("Copied %s to %s", source_str, dest_str) |
3028 else: |
3027 else: |
3029 self.__Raptor.Info("Up-to-date: %s", dest_str) |
3028 self.__Raptor.Info("Up-to-date: %s", dest_str) |
3030 |
3029 |
3031 |
3030 |