From: Saul Wold <sgw@linux.intel.com>
To: Patches and discussions about the oe-core layer
<openembedded-core@lists.openembedded.org>
Cc: Christopher Larson <chris_larson@mentor.com>
Subject: Re: [PATCH 2/2] archiver.bbclass: leverage variable typing support
Date: Wed, 09 May 2012 22:03:28 -0700 [thread overview]
Message-ID: <4FAB4C20.5050804@linux.intel.com> (raw)
In-Reply-To: <1336617615-25713-2-git-send-email-kergoth@gmail.com>
On 05/09/2012 07:40 PM, Christopher Larson wrote:
> From: Christopher Larson<chris_larson@mentor.com>
>
> This makes use of variable typing to avoid reinventing the wheel in that way
> and adds default values for a couple of said variables. It also changes
> PATCHES_ARCHIVE_WITH_SERIES to use ?= rather than =.
>
> Further, doing this fixes a single bug that occurs in many places:
>
> if d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True).upper() not in 'SRPM':
>
> This is performing a substring search. It should have done "== 'SRPM'"", or if
> there *were* multiple options for that case (there aren't), it would do "not
> in ['SRPM']" or similar.
>
> Signed-off-by: Christopher Larson<chris_larson@mentor.com>
> ---
> meta/classes/archiver.bbclass | 45 +++++++++++++++++--------------------
> meta/classes/package_rpm.bbclass | 12 +++++-----
> 2 files changed, 27 insertions(+), 30 deletions(-)
>
> diff --git a/meta/classes/archiver.bbclass b/meta/classes/archiver.bbclass
> index 59b58f4..844dbf8 100644
> --- a/meta/classes/archiver.bbclass
> +++ b/meta/classes/archiver.bbclass
> @@ -2,10 +2,19 @@
> # It also output building environment to xxx.dump.data and create xxx.diff.gz to record
> # all content in ${S} to a diff file.
>
> -ARCHIVE_EXCLUDE_FROM ?= ".pc autom4te.cache"
> -ARCHIVE_TYPE ?= "TAR SRPM"
> DISTRO ?= "poky"
> -PATCHES_ARCHIVE_WITH_SERIES = 'TRUE'
> +ARCHIVE_EXCLUDE_FROM ?= ".pc autom4te.cache"
> +
> +PATCHES_ARCHIVE_WITH_SERIES ?= "true"
> +PATCHES_ARCHIVE_WITH_SERIES[type] = "boolean"
> +
> +SOURCE_ARCHIVE_PACKAGE_TYPE ?= "tar"
> +SOURCE_ARCHIVE_PACKAGE_TYPE[type] = "choice"
> +SOURCE_ARCHIVE_PACKAGE_TYPE[choices] = "tar srpm"
> +
Great patch! But:
Moving this here results in the following error if archiver.bbclass is
not inherit'ed by default!
ERROR: SOURCE_ARCHIVE_PACKAGE_TYPE: No type specified. Valid types:
regex, float, list, choice, boolean, integer
Sau!
> +SOURCE_ARCHIVE_LOG_WITH_SCRIPTS ?= "logs_with_scripts"
> +SOURCE_ARCHIVE_LOG_WITH_SCRIPTS[type] = "choice"
> +SOURCE_ARCHIVE_LOG_WITH_SCRIPTS[choices] = "none logs logs_with_scripts"
>
> def get_bb_inc(d):
> '''create a directory "script-logs" including .bb and .inc file in ${WORKDIR}'''
> @@ -253,14 +262,6 @@ def move_tarball_deploy(d,tarball_list):
> os.remove(os.path.join(tar_sources,source))
> shutil.move(os.path.join(work_dir,source),tar_sources)
>
> -def check_archiving_type(d):
> - '''check the type for archiving package('tar' or 'srpm')'''
> - try:
> - if d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True).upper() not in d.getVar('ARCHIVE_TYPE', True).split():
> - raise AttributeError
> - except AttributeError:
> - bb.fatal("\"SOURCE_ARCHIVE_PACKAGE_TYPE\" is \'tar\' or \'srpm\', no other types")
> -
> def store_package(d,package_name):
> '''store tarbablls name to file "tar-package"'''
> try:
> @@ -287,24 +288,21 @@ 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 '''
> import shutil
>
> - check_archiving_type(d)
> if not_tarball(d):
> return
>
> source_tar_name = archive_sources(d,stage_name)
> if stage_name == "prepatch":
> - if d.getVar('PATCHES_ARCHIVE_WITH_SERIES',True).upper() == 'TRUE':
> + if oe.data.typed_value('PATCHES_ARCHIVE_WITH_SERIES', d):
> patch_tar_name = select_archive_patches(d,"all")
> - elif d.getVar('PATCHES_ARCHIVE_WITH_SERIES',True).upper() == 'FALSE':
> - patch_tar_name = select_archive_patches(d,"applying")
> else:
> - bb.fatal("Please define 'PATCHES_ARCHIVE_WITH_SERIES' is strings 'True' or 'False' ")
> + patch_tar_name = select_archive_patches(d,"applying")
> else:
> patch_tar_name = ''
>
> - if d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True).upper() not in 'SRPM':
> + if oe.data.typed_value('SOURCE_ARCHIVE_PACKAGE_TYPE', d) == 'tar':
> move_tarball_deploy(d,[source_tar_name,patch_tar_name])
> - else:
> + else: # srpm
> tarpackage = os.path.join(d.getVar('WORKDIR', True),'tar-package')
> if os.path.exists(tarpackage):
> os.remove(tarpackage)
> @@ -317,7 +315,7 @@ def archive_scripts_logs(d):
>
> work_dir = d.getVar('WORKDIR', True)
> 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 = oe.data.typed_value('SOURCE_ARCHIVE_LOG_WITH_SCRIPTS', d)
> if source_archive_log_with_scripts == 'logs_with_scripts':
> logdir = get_bb_inc(d)
> tarlog = archive_logs(d,logdir,True)
> @@ -326,10 +324,9 @@ def archive_scripts_logs(d):
> tarlog = archive_logs(d,temp_dir,False)
> else:
> return
> -
> - if d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True).upper() not in 'SRPM':
> - move_tarball_deploy(d,[tarlog])
>
> + if oe.data.typed_value('SOURCE_ARCHIVE_PACKAGE_TYPE', d) == 'tar':
> + move_tarball_deploy(d,[tarlog])
> else:
> store_package(d,tarlog)
>
> @@ -427,14 +424,14 @@ python do_archive_linux_yocto(){
> s = d.getVar('S', True)
> if 'linux-yocto' in s:
> source_tar_name = archive_sources(d,'')
> - if d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True).upper() not in 'SRPM':
> + if oe.data.typed_value('SOURCE_ARCHIVE_PACKAGE_TYPE', d) == 'tar':
> move_tarball_deploy(d,[source_tar_name,''])
> }
> do_kernel_checkout[postfuncs] += "do_archive_linux_yocto "
>
> # remove tarball for sources, patches and logs after creating srpm.
> python do_remove_tarball(){
> - if d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True).upper() == 'SRPM':
> + if oe.data.typed_value('SOURCE_ARCHIVE_PACKAGE_TYPE', d) == 'srpm':
> work_dir = d.getVar('WORKDIR', True)
> try:
> for file in os.listdir(os.getcwd()):
> diff --git a/meta/classes/package_rpm.bbclass b/meta/classes/package_rpm.bbclass
> index 623069e..8033a37 100644
> --- a/meta/classes/package_rpm.bbclass
> +++ b/meta/classes/package_rpm.bbclass
> @@ -505,19 +505,19 @@ python write_specfile () {
>
> # append information for logs and patches to %prep
> def add_prep(d,spec_files_bottom):
> - if d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True) and d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True).upper() == 'SRPM':
> + if oe.data.typed_value('SOURCE_ARCHIVE_PACKAGE_TYPE', d) == 'srpm':
> spec_files_bottom.append('%%prep -n %s' % d.getVar('PN', True) )
> spec_files_bottom.append('%s' % "echo \"include logs and patches, Please check them in SOURCES\"")
> spec_files_bottom.append('')
>
> # get the name of tarball for sources, patches and logs
> def get_tarballs(d):
> - if d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True) and d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True).upper() == 'SRPM':
> + if oe.data.typed_value('SOURCE_ARCHIVE_PACKAGE_TYPE', d) == 'srpm':
> return get_package(d)
>
> # append the name of tarball to key word 'SOURCE' in xxx.spec.
> def tail_source(d,source_list=[],patch_list=None):
> - if d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True) and d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True).upper() == 'SRPM':
> + if oe.data.typed_value('SOURCE_ARCHIVE_PACKAGE_TYPE', d) == 'srpm':
> source_number = 0
> patch_number = 0
> for source in source_list:
> @@ -956,7 +956,7 @@ python do_package_rpm () {
> import os
>
> def creat_srpm_dir(d):
> - if d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True) and d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True).upper() == 'SRPM':
> + if oe.data.typed_value('SOURCE_ARCHIVE_PACKAGE_TYPE', d) == 'srpm':
> clean_licenses = get_licenses(d)
> pkgwritesrpmdir = bb.data.expand('${PKGWRITEDIRSRPM}/${PACKAGE_ARCH_EXTEND}', d)
> pkgwritesrpmdir = pkgwritesrpmdir + '/' + clean_licenses
> @@ -1083,13 +1083,13 @@ python do_package_rpm () {
> cmd = cmd + " --define 'debug_package %{nil}'"
> cmd = cmd + " --define '_rpmfc_magic_path " + magicfile + "'"
> cmd = cmd + " --define '_tmppath " + workdir + "'"
> - if d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True) and d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True).upper() == 'SRPM':
> + if oe.data.typed_value('SOURCE_ARCHIVE_PACKAGE_TYPE', d) == 'srpm':
> cmdsrpm = cmd + " --define '_sourcedir " + workdir + "' --define '_srcrpmdir " + creat_srpm_dir(d) + "'"
> cmdsrpm = 'fakeroot ' + cmdsrpm + " -bs " + outspecfile
> cmd = cmd + " -bb " + outspecfile
>
> # Build the source rpm package !
> - if d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True) and d.getVar('SOURCE_ARCHIVE_PACKAGE_TYPE', True).upper() == 'SRPM':
> + if oe.data.typed_value('SOURCE_ARCHIVE_PACKAGE_TYPE', d) == 'srpm':
> d.setVar('SBUILDSPEC', cmdsrpm + "\n")
> d.setVarFlag('SBUILDSPEC', 'func', '1')
> bb.build.exec_func('SBUILDSPEC', d)
next prev parent reply other threads:[~2012-05-10 5:13 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-10 2:40 [PATCH 1/2] typecheck.bbclass: update per current variable typing code Christopher Larson
2012-05-10 2:40 ` [PATCH 2/2] archiver.bbclass: leverage variable typing support Christopher Larson
2012-05-10 5:03 ` Saul Wold [this message]
2012-05-10 5:05 ` Chris Larson
2012-05-11 17:38 ` [PATCH 1/2] typecheck.bbclass: update per current variable typing code Saul Wold
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4FAB4C20.5050804@linux.intel.com \
--to=sgw@linux.intel.com \
--cc=chris_larson@mentor.com \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.