archiver.bbclass: fix the coding style

* Make the comment line under 80 characters.
* Use the triple double quotes for the docstring.
* Add a whitespace behind the comma (,).
* Other minor fixes.

[YOCTO #2619]

(From OE-Core rev: 885a95992abe11ebef7a8e4363e6002ee80403bf)

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Robert Yang 2012-08-23 23:08:22 +08:00 committed by Richard Purdie
parent c96f6ee659
commit 2ba95cc79e
4 changed files with 190 additions and 125 deletions

View File

@ -1,6 +1,9 @@
# This file is for getting archiving packages with configured sources(archive 's' after configure stage),logs(archive 'temp' after package_write_rpm),dump data # This file is for getting archiving packages with configured
# and creating diff file(get all environment variables and functions in building and mapping all content in 's' including patches to xxx.diff.gz. # sources(archive ${S} after configure stage), logs(archive 'temp' after
# All archived packages will be deployed in ${DEPLOY_DIR}/sources # package_write_rpm), dump data and creating diff file(get all
# environment variables and functions in building and mapping all
# content in ${S} including patches to xxx.diff.gz. All archived
# packages will be deployed in ${DEPLOY_DIR}/sources
inherit archiver inherit archiver

View File

@ -1,6 +1,9 @@
# This file is for getting archiving packages with original sources(archive 's' after unpack stage),patches,logs(archive 'temp' after package_write_rpm),dump data and # This file is for getting archiving packages with original
# creating diff file(get all environment variables and functions in building and mapping all content in 's' including patches to xxx.diff.gz. # sources(archive ${S} after unpack stage), patches, logs(archive 'temp'
# All archived packages will be deployed in ${DEPLOY_DIR}/sources # after package_write_rpm), dump data and creating diff file(get all
# environment variables and functions in building and mapping all
# content in ${S} including patches to xxx.diff.gz. All archived packages
# will be deployed in ${DEPLOY_DIR}/sources
inherit archiver inherit archiver

View File

@ -1,6 +1,9 @@
# This file is for getting archiving packages with patched sources(archive 's' before do_patch stage),logs(archive 'temp' after package_write_rpm),dump data and # This file is for getting archiving packages with patched
# creating diff file(get all environment variables and functions in building and mapping all content in 's' including patches to xxx.diff.gz. # sources(archive ${S} before do_patch stage), logs(archive 'temp' after
# All archived packages will be deployed in ${DEPLOY_DIR}/sources # package_write_rpm), dump data and creating diff file(get all
# environment variables and functions in building and mapping all
# content in ${S} including patches to xxx.diff.gz. All archived
# packages will be deployed in ${DEPLOY_DIR}/sources
inherit archiver inherit archiver

View File

@ -1,9 +1,9 @@
# ex:ts=4:sw=4:sts=4:et # ex:ts=4:sw=4:sts=4:et
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
# #
# This file is used for archiving sources ,patches,and logs to tarball. # This file is used for archiving sources, patches, and logs to a
# It also output building environment to xxx.dump.data and create xxx.diff.gz to record # tarball. It also output building environment to xxx.dump.data and
# all content in ${S} to a diff file. # create xxx.diff.gz to record all content in ${S} to a diff file.
# #
ARCHIVE_EXCLUDE_FROM ?= ".pc autom4te.cache" ARCHIVE_EXCLUDE_FROM ?= ".pc autom4te.cache"
@ -12,9 +12,9 @@ DISTRO ?= "poky"
PATCHES_ARCHIVE_WITH_SERIES = 'TRUE' PATCHES_ARCHIVE_WITH_SERIES = 'TRUE'
SOURCE_ARCHIVE_LOG_WITH_SCRIPTS ?= '${@d.getVarFlag('ARCHIVER_MODE', 'log_type') \ SOURCE_ARCHIVE_LOG_WITH_SCRIPTS ?= '${@d.getVarFlag('ARCHIVER_MODE', 'log_type') \
if d.getVarFlag('ARCHIVER_MODE', 'log_type') != 'none' else 'logs_with_scripts'}' if d.getVarFlag('ARCHIVER_MODE', 'log_type') != 'none' else 'logs_with_scripts'}'
SOURCE_ARCHIVE_PACKAGE_TYPE ?= '${@d.getVarFlag('ARCHIVER_MODE','type') \ SOURCE_ARCHIVE_PACKAGE_TYPE ?= '${@d.getVarFlag('ARCHIVER_MODE', 'type') \
if d.getVarFlag('ARCHIVER_MODE', 'log_type')!= 'none' else 'tar'}' if d.getVarFlag('ARCHIVER_MODE', 'log_type') != 'none' else 'tar'}'
FILTER ?= '${@d.getVarFlag('ARCHIVER_MODE','filter') \ FILTER ?= '${@d.getVarFlag('ARCHIVER_MODE', 'filter') \
if d.getVarFlag('ARCHIVER_MODE', 'filter')!= 'none' else 'no'}' if d.getVarFlag('ARCHIVER_MODE', 'filter')!= 'none' else 'no'}'
@ -44,7 +44,9 @@ def copyleft_recipe_type(d):
return 'target' return 'target'
def copyleft_should_include(d): def copyleft_should_include(d):
"""Determine if this recipe's sources should be deployed for compliance""" """
Determine if this recipe's sources should be deployed for compliance
"""
import ast import ast
import oe.license import oe.license
from fnmatch import fnmatchcase as fnmatch from fnmatch import fnmatchcase as fnmatch
@ -67,7 +69,11 @@ def copyleft_should_include(d):
return False, 'recipe has excluded licenses: %s' % ', '.join(reason) return False, 'recipe has excluded licenses: %s' % ', '.join(reason)
def tar_filter(d): def tar_filter(d):
"""Only tarball the packages belonging to COPYLEFT_LICENSE_INCLUDE and miss packages in COPYLEFT_LICENSE_EXCLUDE. Don't tarball any packages when \"FILTER\" is \"no\"""" """
Only archive the package belongs to COPYLEFT_LICENSE_INCLUDE
and ignore the one in COPYLEFT_LICENSE_EXCLUDE. Don't exclude any
packages when \"FILTER\" is \"no\"
"""
if d.getVar('FILTER', True).upper() == "YES": if d.getVar('FILTER', True).upper() == "YES":
included, reason = copyleft_should_include(d) included, reason = copyleft_should_include(d)
if not included: if not included:
@ -78,7 +84,9 @@ def tar_filter(d):
return False return False
def get_bb_inc(d): def get_bb_inc(d):
'''create a directory "script-logs" including .bb and .inc file in ${WORKDIR}''' """
create a directory "script-logs" including .bb and .inc file in ${WORKDIR}
"""
import re import re
import shutil import shutil
@ -87,26 +95,26 @@ def get_bb_inc(d):
work_dir = d.getVar('WORKDIR', True) work_dir = d.getVar('WORKDIR', True)
bbfile = d.getVar('FILE', True) bbfile = d.getVar('FILE', True)
bbdir = os.path.dirname(bbfile) bbdir = os.path.dirname(bbfile)
script_logs = os.path.join(work_dir,'script-logs') script_logs = os.path.join(work_dir, 'script-logs')
bb_inc = os.path.join(script_logs,'bb_inc') bb_inc = os.path.join(script_logs, 'bb_inc')
bb.mkdirhier(script_logs) bb.mkdirhier(script_logs)
bb.mkdirhier(bb_inc) bb.mkdirhier(bb_inc)
def find_file(dir,file): def find_file(dir, file):
for root, dirs, files in os.walk(dir): for root, dirs, files in os.walk(dir):
if file in files: if file in files:
return os.path.join(root,file) return os.path.join(root, file)
def get_inc (file): def get_inc (file):
f = open(file,'r') f = open(file, 'r')
for line in f.readlines(): for line in f.readlines():
if 'require' not in line: if 'require' not in line:
bbinc.append(file) bbinc.append(file)
else: else:
try: try:
incfile = pat.match(line).group(1) incfile = pat.match(line).group(1)
incfile = bb.data.expand(os.path.basename(incfile),d) incfile = bb.data.expand(os.path.basename(incfile), d)
abs_incfile = find_file(bbdir,incfile) abs_incfile = find_file(bbdir, incfile)
if abs_incfile: if abs_incfile:
bbinc.append(abs_incfile) bbinc.append(abs_incfile)
get_inc(abs_incfile) get_inc(abs_incfile)
@ -115,23 +123,26 @@ def get_bb_inc(d):
get_inc(bbfile) get_inc(bbfile)
bbinc = list(set(bbinc)) bbinc = list(set(bbinc))
for bbincfile in bbinc: for bbincfile in bbinc:
shutil.copy(bbincfile,bb_inc) shutil.copy(bbincfile, bb_inc)
try: try:
bb.mkdirhier(os.path.join(script_logs,'temp')) bb.mkdirhier(os.path.join(script_logs, 'temp'))
oe.path.copytree(os.path.join(work_dir,'temp'), os.path.join(script_logs,'temp')) oe.path.copytree(os.path.join(work_dir, 'temp'), os.path.join(script_logs, 'temp'))
except (IOError,AttributeError): except (IOError, AttributeError):
pass pass
return script_logs return script_logs
def get_series(d): def get_series(d):
'''copy patches and series file to a pointed directory which will be archived to tarball in ${WORKDIR}''' """
copy patches and series file to a pointed directory which will be
archived to tarball in ${WORKDIR}
"""
import shutil import shutil
src_patches=[] src_patches=[]
pf = d.getVar('PF', True) pf = d.getVar('PF', True)
work_dir = d.getVar('WORKDIR', True) work_dir = d.getVar('WORKDIR', True)
s = d.getVar('S',True) s = d.getVar('S', True)
dest = os.path.join(work_dir, pf + '-series') dest = os.path.join(work_dir, pf + '-series')
shutil.rmtree(dest, ignore_errors=True) shutil.rmtree(dest, ignore_errors=True)
bb.mkdirhier(dest) bb.mkdirhier(dest)
@ -141,22 +152,25 @@ def get_series(d):
locals = (fetch.localpath(url) for url in fetch.urls) locals = (fetch.localpath(url) for url in fetch.urls)
for local in locals: for local in locals:
src_patches.append(local) src_patches.append(local)
if not cmp(work_dir,s): if not cmp(work_dir, s):
tmp_list = src_patches tmp_list = src_patches
else: else:
tmp_list = src_patches[1:] tmp_list = src_patches[1:]
for patch in tmp_list: for patch in tmp_list:
try: try:
shutil.copy(patch,dest) shutil.copy(patch, dest)
except IOError: except IOError:
if os.path.isdir(patch): if os.path.isdir(patch):
bb.mkdirhier(os.path.join(dest,patch)) bb.mkdirhier(os.path.join(dest, patch))
oe.path.copytree(patch, os.path.join(dest,patch)) oe.path.copytree(patch, os.path.join(dest, patch))
return dest return dest
def get_applying_patches(d): def get_applying_patches(d):
"""only copy applying patches to a pointed directory which will be archived to tarball""" """
only copy applying patches to a pointed directory which will be
archived to tarball
"""
import shutil import shutil
pf = d.getVar('PF', True) pf = d.getVar('PF', True)
@ -169,35 +183,40 @@ def get_applying_patches(d):
for patch in patches: for patch in patches:
_, _, local, _, _, parm = bb.decodeurl(patch) _, _, local, _, _, parm = bb.decodeurl(patch)
if local: if local:
shutil.copy(local,dest) shutil.copy(local, dest)
return dest return dest
def not_tarball(d): def not_tarball(d):
'''packages including key words 'work-shared','native', 'task-' will be passed''' """
packages including key words 'work-shared', 'native', 'task-' will be passed
workdir = d.getVar('WORKDIR',True) """
s = d.getVar('S',True) workdir = d.getVar('WORKDIR', True)
s = d.getVar('S', True)
if 'work-shared' in s or 'task-' in workdir or 'native' in workdir: if 'work-shared' in s or 'task-' in workdir or 'native' in workdir:
return True return True
else: else:
return False return False
def get_source_from_downloads(d,stage_name): def get_source_from_downloads(d, stage_name):
'''copy tarball of $P to $WORKDIR when this tarball exists in $DL_DIR''' """
copy tarball of $P to $WORKDIR when this tarball exists in $DL_DIR
"""
if stage_name in 'patched' 'configured': if stage_name in 'patched' 'configured':
return return
pf = d.getVar('PF', True) pf = d.getVar('PF', True)
dl_dir = d.getVar('DL_DIR',True) dl_dir = d.getVar('DL_DIR', True)
try: try:
source = os.path.join(dl_dir,os.path.basename(d.getVar('SRC_URI', True).split()[0])) source = os.path.join(dl_dir, os.path.basename(d.getVar('SRC_URI', True).split()[0]))
if os.path.exists(source) and not os.path.isdir(source): if os.path.exists(source) and not os.path.isdir(source):
return source return source
except (IndexError, OSError): except (IndexError, OSError):
pass pass
return '' return ''
def do_tarball(workdir,srcdir,tarname): def do_tarball(workdir, srcdir, tarname):
'''tar "srcdir" under "workdir" to "tarname"''' """
tar "srcdir" under "workdir" to "tarname"
"""
import tarfile import tarfile
sav_dir = os.getcwd() sav_dir = os.getcwd()
@ -211,54 +230,66 @@ def do_tarball(workdir,srcdir,tarname):
os.chdir(sav_dir) os.chdir(sav_dir)
return tarname return tarname
def archive_sources_from_directory(d,stage_name): def archive_sources_from_directory(d, stage_name):
'''archive sources codes tree to tarball when tarball of $P doesn't exist in $DL_DIR''' """
archive sources codes tree to tarball when tarball of $P doesn't
exist in $DL_DIR
"""
import shutil import shutil
s = d.getVar('S',True) s = d.getVar('S', True)
work_dir=d.getVar('WORKDIR', True) work_dir=d.getVar('WORKDIR', True)
PF = d.getVar('PF',True) PF = d.getVar('PF', True)
tarname = PF + '-' + stage_name + ".tar.gz" tarname = PF + '-' + stage_name + ".tar.gz"
if os.path.exists(s) and work_dir in s: if os.path.exists(s) and work_dir in s:
try: try:
source_dir = os.path.join(work_dir,[ i for i in s.replace(work_dir,'').split('/') if i][0]) source_dir = os.path.join(work_dir, [ i for i in s.replace(work_dir, '').split('/') if i][0])
except IndexError: except IndexError:
if not cmp(s,work_dir): if not cmp(s, work_dir):
return '' return ''
else: else:
return '' return ''
source = os.path.basename(source_dir) source = os.path.basename(source_dir)
return do_tarball(work_dir,source,tarname) return do_tarball(work_dir, source, tarname)
def archive_sources(d,stage_name): def archive_sources(d, stage_name):
'''copy tarball from $DL_DIR to $WORKDIR if have tarball, archive source codes tree in $WORKDIR if $P is directory instead of tarball''' """
copy tarball from $DL_DIR to $WORKDIR if have tarball, archive
source codes tree in $WORKDIR if $P is directory instead of tarball
"""
import shutil import shutil
work_dir = d.getVar('WORKDIR',True)
file = get_source_from_downloads(d,stage_name) work_dir = d.getVar('WORKDIR', True)
file = get_source_from_downloads(d, stage_name)
if file: if file:
shutil.copy(file,work_dir) shutil.copy(file, work_dir)
file = os.path.basename(file) file = os.path.basename(file)
else: else:
file = archive_sources_from_directory(d,stage_name) file = archive_sources_from_directory(d, stage_name)
return file return file
def archive_patches(d,patchdir,series): def archive_patches(d, patchdir, series):
'''archive patches to tarball and also include series files if 'series' is True''' """
archive patches to tarball and also include series files if 'series' is True
"""
import shutil import shutil
s = d.getVar('S',True) s = d.getVar('S', True)
work_dir = d.getVar('WORKDIR', True) work_dir = d.getVar('WORKDIR', True)
patch_dir = os.path.basename(patchdir) patch_dir = os.path.basename(patchdir)
tarname = patch_dir + ".tar.gz" tarname = patch_dir + ".tar.gz"
if series == 'all' and os.path.exists(os.path.join(s,'patches/series')): if series == 'all' and os.path.exists(os.path.join(s, 'patches/series')):
shutil.copy(os.path.join(s,'patches/series'),patchdir) shutil.copy(os.path.join(s, 'patches/series'), patchdir)
tarname = do_tarball(work_dir,patch_dir,tarname) tarname = do_tarball(work_dir, patch_dir, tarname)
shutil.rmtree(patchdir, ignore_errors=True) shutil.rmtree(patchdir, ignore_errors=True)
return tarname return tarname
def select_archive_patches(d,option): def select_archive_patches(d, option):
'''select to archive all patches including non-applying and series or applying patches ''' """
select to archive all patches including non-applying and series or
applying patches
"""
if option == "all": if option == "all":
patchdir = get_series(d) patchdir = get_series(d)
elif option == "applying": elif option == "applying":
@ -266,25 +297,27 @@ def select_archive_patches(d,option):
try: try:
os.rmdir(patchdir) os.rmdir(patchdir)
except OSError: except OSError:
tarpatch = archive_patches(d,patchdir,option) tarpatch = archive_patches(d, patchdir, option)
return tarpatch return tarpatch
return return
def archive_logs(d,logdir,bbinc=False): def archive_logs(d, logdir, bbinc=False):
'''archive logs in temp to tarball and .bb and .inc files if bbinc is True ''' """
archive logs in temp to tarball and .bb and .inc files if bbinc is True
"""
import shutil import shutil
pf = d.getVar('PF',True) pf = d.getVar('PF', True)
work_dir = d.getVar('WORKDIR',True) work_dir = d.getVar('WORKDIR', True)
log_dir = os.path.basename(logdir) log_dir = os.path.basename(logdir)
tarname = pf + '-' + log_dir + ".tar.gz" tarname = pf + '-' + log_dir + ".tar.gz"
tarname = do_tarball(work_dir,log_dir,tarname) tarname = do_tarball(work_dir, log_dir, tarname)
if bbinc: if bbinc:
shutil.rmtree(logdir, ignore_errors=True) shutil.rmtree(logdir, ignore_errors=True)
return tarname return tarname
def get_licenses(d): def get_licenses(d):
'''get licenses for running .bb file''' """get licenses for running .bb file"""
import oe.license import oe.license
licenses_type = d.getVar('LICENSE', True) or "" licenses_type = d.getVar('LICENSE', True) or ""
@ -299,8 +332,8 @@ def get_licenses(d):
return lice return lice
def move_tarball_deploy(d,tarball_list): def move_tarball_deploy(d, tarball_list):
'''move tarball in location to ${DEPLOY_DIR}/sources''' """move tarball in location to ${DEPLOY_DIR}/sources"""
import shutil import shutil
if tarball_list is []: if tarball_list is []:
@ -308,100 +341,114 @@ def move_tarball_deploy(d,tarball_list):
target_sys = d.getVar('TARGET_SYS', True) target_sys = d.getVar('TARGET_SYS', True)
pf = d.getVar('PF', True) pf = d.getVar('PF', True)
licenses = get_licenses(d) licenses = get_licenses(d)
work_dir = d.getVar('WORKDIR',True) work_dir = d.getVar('WORKDIR', True)
tar_sources = d.getVar('DEPLOY_DIR', True) + '/sources/' + target_sys + '/' + licenses + '/' + pf tar_sources = d.getVar('DEPLOY_DIR', True) + '/sources/' + target_sys + '/' + licenses + '/' + pf
if not os.path.exists(tar_sources): if not os.path.exists(tar_sources):
bb.mkdirhier(tar_sources) bb.mkdirhier(tar_sources)
for source in tarball_list: for source in tarball_list:
if source: if source:
if os.path.exists(os.path.join(tar_sources, source)): if os.path.exists(os.path.join(tar_sources, source)):
os.remove(os.path.join(tar_sources,source)) os.remove(os.path.join(tar_sources, source))
shutil.move(os.path.join(work_dir,source),tar_sources) shutil.move(os.path.join(work_dir, source), tar_sources)
def check_archiving_type(d): def check_archiving_type(d):
'''check the type for archiving package('tar' or 'srpm')''' """check the type for archiving package('tar' or 'srpm')"""
try: try:
if d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True).upper() not in d.getVar('ARCHIVE_TYPE', True).split(): if d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True).upper() not in d.getVar('ARCHIVE_TYPE', True).split():
raise AttributeError raise AttributeError
except AttributeError: except AttributeError:
bb.fatal("\"SOURCE_ARCHIVE_PACKAGE_TYPE\" is \'tar\' or \'srpm\', no other types") bb.fatal("\"SOURCE_ARCHIVE_PACKAGE_TYPE\" is \'tar\' or \'srpm\', no other types")
def store_package(d,package_name): def store_package(d, package_name):
'''store tarbablls name to file "tar-package"''' """
store tarbablls name to file "tar-package"
"""
try: try:
f = open(os.path.join(d.getVar('WORKDIR',True),'tar-package'),'a') f = open(os.path.join(d.getVar('WORKDIR', True), 'tar-package'), 'a')
f.write(package_name + ' ') f.write(package_name + ' ')
f.close() f.close()
except IOError: except IOError:
pass pass
def get_package(d): def get_package(d):
'''get tarballs name from "tar-package"''' """
get tarballs name from "tar-package"
"""
work_dir = (d.getVar('WORKDIR', True)) work_dir = (d.getVar('WORKDIR', True))
tarpackage = os.path.join(work_dir,'tar-package') tarpackage = os.path.join(work_dir, 'tar-package')
try: try:
f = open(tarpackage,'r') f = open(tarpackage, 'r')
line = list(set(f.readline().replace('\n','').split())) line = list(set(f.readline().replace('\n', '').split()))
except UnboundLocalError,IOError: except UnboundLocalError, IOError:
pass pass
f.close() f.close()
return line return line
def archive_sources_patches(d,stage_name): def archive_sources_patches(d, stage_name):
'''archive sources and patches to tarball. stage_name will append strings ${stage_name} to ${PR} as middle name. for example, zlib-1.4.6-prepatch(stage_name).tar.gz ''' """
archive sources and patches to tarball. stage_name will append
strings ${stage_name} to ${PR} as middle name. for example,
zlib-1.4.6-prepatch(stage_name).tar.gz
"""
import shutil import shutil
check_archiving_type(d) check_archiving_type(d)
if not_tarball(d) or tar_filter(d): if not_tarball(d) or tar_filter(d):
return return
source_tar_name = archive_sources(d,stage_name) source_tar_name = archive_sources(d, stage_name)
if stage_name == "prepatch": if stage_name == "prepatch":
if d.getVar('PATCHES_ARCHIVE_WITH_SERIES',True).upper() == 'TRUE': if d.getVar('PATCHES_ARCHIVE_WITH_SERIES', True).upper() == 'TRUE':
patch_tar_name = select_archive_patches(d,"all") patch_tar_name = select_archive_patches(d, "all")
elif d.getVar('PATCHES_ARCHIVE_WITH_SERIES',True).upper() == 'FALSE': elif d.getVar('PATCHES_ARCHIVE_WITH_SERIES', True).upper() == 'FALSE':
patch_tar_name = select_archive_patches(d,"applying") patch_tar_name = select_archive_patches(d, "applying")
else: else:
bb.fatal("Please define 'PATCHES_ARCHIVE_WITH_SERIES' is strings 'True' or 'False' ") bb.fatal("Please define 'PATCHES_ARCHIVE_WITH_SERIES' is strings 'True' or 'False' ")
else: else:
patch_tar_name = '' patch_tar_name = ''
if d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True).upper() not in 'SRPM': if d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True).upper() not in 'SRPM':
move_tarball_deploy(d,[source_tar_name,patch_tar_name]) move_tarball_deploy(d, [source_tar_name, patch_tar_name])
else: else:
tarpackage = os.path.join(d.getVar('WORKDIR', True),'tar-package') tarpackage = os.path.join(d.getVar('WORKDIR', True), 'tar-package')
if os.path.exists(tarpackage): if os.path.exists(tarpackage):
os.remove(tarpackage) os.remove(tarpackage)
for package in os.path.basename(source_tar_name), patch_tar_name: for package in os.path.basename(source_tar_name), patch_tar_name:
if package: if package:
store_package(d,str(package) + ' ') store_package(d, str(package) + ' ')
def archive_scripts_logs(d): def archive_scripts_logs(d):
'''archive scripts and logs. scripts include .bb and .inc files and logs include stuff in "temp".''' """
archive scripts and logs. scripts include .bb and .inc files and
logs include stuff in "temp".
"""
if tar_filter(d): if tar_filter(d):
return return
work_dir = d.getVar('WORKDIR', True) work_dir = d.getVar('WORKDIR', True)
temp_dir = os.path.join(work_dir,'temp') temp_dir = os.path.join(work_dir, 'temp')
source_archive_log_with_scripts = d.getVar('SOURCE_ARCHIVE_LOG_WITH_SCRIPTS', True) source_archive_log_with_scripts = d.getVar('SOURCE_ARCHIVE_LOG_WITH_SCRIPTS', True)
if source_archive_log_with_scripts == 'logs_with_scripts': if source_archive_log_with_scripts == 'logs_with_scripts':
logdir = get_bb_inc(d) logdir = get_bb_inc(d)
tarlog = archive_logs(d,logdir,True) tarlog = archive_logs(d, logdir, True)
elif source_archive_log_with_scripts == 'logs': elif source_archive_log_with_scripts == 'logs':
if os.path.exists(temp_dir): if os.path.exists(temp_dir):
tarlog = archive_logs(d,temp_dir,False) tarlog = archive_logs(d, temp_dir, False)
else: else:
return return
if d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True).upper() not in 'SRPM': if d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True).upper() not in 'SRPM':
move_tarball_deploy(d,[tarlog]) move_tarball_deploy(d, [tarlog])
else: else:
store_package(d,tarlog) store_package(d, tarlog)
def dumpdata(d): def dumpdata(d):
'''dump environment to "${P}-${PR}.showdata.dump" including all kinds of variables and functions when running a task''' """
dump environment to "${P}-${PR}.showdata.dump" including all
kinds of variables and functions when running a task
"""
if tar_filter(d): if tar_filter(d):
return return
@ -415,20 +462,23 @@ def dumpdata(d):
if not os.path.exists(dumpdir): if not os.path.exists(dumpdir):
bb.mkdirhier(dumpdir) bb.mkdirhier(dumpdir)
dumpfile = os.path.join(dumpdir, bb.data.expand("${P}-${PR}.showdata.dump",d)) dumpfile = os.path.join(dumpdir, bb.data.expand("${P}-${PR}.showdata.dump", d))
bb.note("Dumping metadata into '%s'" % dumpfile) bb.note("Dumping metadata into '%s'" % dumpfile)
f = open(dumpfile, "w") f = open(dumpfile, "w")
# emit variables and shell functions # emit variables and shell functions
bb.data.emit_env(f, d, True) bb.data.emit_env(f, d, True)
# emit the metadata which isnt valid shell # emit the metadata which isn't valid shell
for e in d.keys(): for e in d.keys():
if bb.data.getVarFlag(e, 'python', d): if bb.data.getVarFlag(e, 'python', d):
f.write("\npython %s () {\n%s}\n" % (e, bb.data.getVar(e, d, 1))) f.write("\npython %s () {\n%s}\n" % (e, bb.data.getVar(e, d, 1)))
f.close() f.close()
def create_diff_gz(d): def create_diff_gz(d):
'''creating .diff.gz in ${DEPLOY_DIR_SRC}/${P}-${PR}.diff.g gz for mapping all content in 's' including patches to xxx.diff.gz''' """
creating .diff.gz in ${DEPLOY_DIR_SRC}/${P}-${PR}.diff.g gz for
mapping all content in 's' including patches to xxx.diff.gz
"""
import shutil import shutil
import subprocess import subprocess
@ -467,41 +517,47 @@ def create_diff_gz(d):
bb.build.exec_func('DIFF', d) bb.build.exec_func('DIFF', d)
shutil.rmtree(s + '.org', ignore_errors=True) shutil.rmtree(s + '.org', ignore_errors=True)
# This function will run when user want to get tarball for sources and patches after do_unpack # This function will run when user want to get tarball for sources and
# patches after do_unpack
python do_archive_original_sources_patches(){ python do_archive_original_sources_patches(){
archive_sources_patches(d,'prepatch') archive_sources_patches(d, 'prepatch')
} }
# This function will run when user want to get tarball for patched sources after do_patch # This function will run when user want to get tarball for patched
# sources after do_patch
python do_archive_patched_sources(){ python do_archive_patched_sources(){
archive_sources_patches(d,'patched') archive_sources_patches(d, 'patched')
} }
# This function will run when user want to get tarball for configured sources after do_configure # This function will run when user want to get tarball for configured
# sources after do_configure
python do_archive_configured_sources(){ python do_archive_configured_sources(){
archive_sources_patches(d,'configured') archive_sources_patches(d, 'configured')
} }
# This function will run when user want to get tarball for logs or both logs and scripts(.bb and .inc files) # This function will run when user want to get tarball for logs or both
# logs and scripts(.bb and .inc files)
python do_archive_scripts_logs(){ python do_archive_scripts_logs(){
archive_scripts_logs(d) archive_scripts_logs(d)
} }
# This function will run when user want to know what variable and functions in a running task are and also can get a diff file including # This function will run when user want to know what variable and
# functions in a running task are and also can get a diff file including
# all content a package should include. # all content a package should include.
python do_dumpdata_create_diff_gz(){ python do_dumpdata_create_diff_gz(){
dumpdata(d) dumpdata(d)
create_diff_gz(d) create_diff_gz(d)
} }
# This functions prepare for archiving "linux-yocto" because this package create directory 's' before do_patch instead of after do_unpack. # This functions prepare for archiving "linux-yocto" because this
# This is special control for archiving linux-yocto only. # package create directory 's' before do_patch instead of after
# do_unpack. This is special control for archiving linux-yocto only.
python do_archive_linux_yocto(){ python do_archive_linux_yocto(){
s = d.getVar('S', True) s = d.getVar('S', True)
if 'linux-yocto' in s: if 'linux-yocto' in s:
source_tar_name = archive_sources(d,'') source_tar_name = archive_sources(d, '')
if d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True).upper() not in 'SRPM': if d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True).upper() not in 'SRPM':
move_tarball_deploy(d,[source_tar_name,'']) move_tarball_deploy(d, [source_tar_name, ''])
} }
do_kernel_checkout[postfuncs] += "do_archive_linux_yocto " do_kernel_checkout[postfuncs] += "do_archive_linux_yocto "
@ -513,8 +569,8 @@ python do_remove_tarball(){
for file in os.listdir(os.getcwd()): for file in os.listdir(os.getcwd()):
if file in get_package(d): if file in get_package(d):
os.remove(file) os.remove(file)
os.remove(os.path.join(work_dir,'tar-package')) os.remove(os.path.join(work_dir, 'tar-package'))
except (TypeError,OSError): except (TypeError, OSError):
pass pass
} }
do_remove_taball[deptask] = "do_archive_scripts_logs" do_remove_taball[deptask] = "do_archive_scripts_logs"