From: Constantin Musca <constantinx.musca@intel.com>
To: Martin Jansa <martin.jansa@gmail.com>
Cc: openembedded-core@lists.openembedded.org
Subject: Re: [PATCH 3/3] prs: add LOCALCOUNT to AUTOINCs migration feature
Date: Tue, 22 Jan 2013 17:42:05 +0200 [thread overview]
Message-ID: <50FEB34D.7080307@intel.com> (raw)
In-Reply-To: <20130122141527.GV29386@jama.palm1.palmone.com>
On 01/22/2013 04:15 PM, Martin Jansa wrote:
> On Tue, Jan 22, 2013 at 11:39:30AM +0200, Constantin Musca wrote:
>> - use migrate_localcount.bbclass to generate AUTOINC entries
>> which are exported to LOCALCOUNT_DUMPFILE
>> - import the generated AUTOINC entries
>> - one can migrate LOCALCOUNT to AUTOINC by executing:
>> bitbake-prserv-tool migrate_localcount
> Those 2 bitbake patches are probably against poky not bitbake, had to
> apply them manually.
>
>> [YOCTO #3071]
>>
>> Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
>> ---
>> meta/classes/migrate_localcount.bbclass | 47 +++++++++++++++++++++++++++++++++
>> meta/conf/migrate_localcount.conf | 1 +
>> scripts/bitbake-prserv-tool | 32 ++++++++++++++++++++++
>> 3 files changed, 80 insertions(+)
>> create mode 100644 meta/classes/migrate_localcount.bbclass
>> create mode 100644 meta/conf/migrate_localcount.conf
>>
>> diff --git a/meta/classes/migrate_localcount.bbclass b/meta/classes/migrate_localcount.bbclass
>> new file mode 100644
>> index 0000000..59f14e8
>> --- /dev/null
>> +++ b/meta/classes/migrate_localcount.bbclass
>> @@ -0,0 +1,47 @@
>> +PRSERV_DUMPDIR ??= "${LOG_DIR}/db"
>> +LOCALCOUNT_DUMPFILE ??= "${PRSERV_DUMPDIR}/prserv-localcount-exports.inc"
>> +
>> +python migrate_localcount_handler () {
>> + import bb.event
>> + if not e.data:
>> + return
>> +
>> + if isinstance(e, bb.event.RecipeParsed):
>> + pv = e.data.getVar('PV', True)
>> + if not 'AUTOINC' in pv:
>> + return
>> +
>> + localcounts = bb.persist_data.persist('BB_URI_LOCALCOUNT', e.data)
>> + pn = e.data.getVar('PN', True)
>> + revs = localcounts.get_by_pattern('%%-%s_rev' % pn)
>> + counts = localcounts.get_by_pattern('%%-%s_count' % pn)
> why not query for right key directly?
>
> BB_URI_LOCALCOUNT key appends branch since
> http://git.openembedded.org/bitbake/commit/lib/bb/fetch?id=8c0afc13ad5eefea62b0b136f5b66792ba4e44cb
> and you can probably create key from SRC_URI like git fetcher does.
>
> Then you can show error when more then 1 entry matches instead of
> counting max(LOCALCOUNT) from multiple entries.
Because AUTOINCs don't include branch information. I have considered the
approach you proposed but I think this method
is a straightforward solution.
>
> Also this 'bitbake-prserv-tool migrate_localcount' needs to be executed
> for all supported MACHINEs right? To fill prs db with all possible
> PACKAGE_ARCH values.
That's right.
>
> Cheers,
>
>> + if not revs or not counts:
>> + return
>> +
>> + srcrev = bb.fetch2.get_srcrev(e.data)
>> + bpv = pv[:pv.find(srcrev)]
>> +
>> + if len(revs) != len(counts):
>> + bb.warn("The number of revs and localcounts don't match in %s" % pn)
>> + return
>> +
>> + version = 'AUTOINC-%s-%s' % (pn, bpv)
>> + pkgarch = e.data.getVar('PACKAGE_ARCH', True)
>> + value = max(int(count) for count in counts)
>> +
>> + if len(revs) == 1:
>> + if srcrev != ('AUTOINC+%s' % revs[0]):
>> + value += 1
>> + else:
>> + value += 1
>> +
>> + bb.utils.mkdirhier(e.data.getVar('PRSERV_DUMPDIR', True))
>> + df = e.data.getVar('LOCALCOUNT_DUMPFILE', True)
>> + flock = bb.utils.lockfile("%s.lock" % df)
>> + with open(df, 'a') as fd:
>> + fd.write('PRAUTO$%s$%s$%s = "%s"\n' %
>> + (version, pkgarch, srcrev, str(value)))
>> + bb.utils.unlockfile(flock)
>> +}
>> +
>> +addhandler migrate_localcount_handler
>> diff --git a/meta/conf/migrate_localcount.conf b/meta/conf/migrate_localcount.conf
>> new file mode 100644
>> index 0000000..e486e03
>> --- /dev/null
>> +++ b/meta/conf/migrate_localcount.conf
>> @@ -0,0 +1 @@
>> +INHERIT += "migrate_localcount"
>> diff --git a/scripts/bitbake-prserv-tool b/scripts/bitbake-prserv-tool
>> index f3855df..4654e6d 100755
>> --- a/scripts/bitbake-prserv-tool
>> +++ b/scripts/bitbake-prserv-tool
>> @@ -47,6 +47,35 @@ do_import ()
>> return $ret
>> }
>>
>> +do_migrate_localcount ()
>> +{
>> + df=`bitbake -R conf/migrate_localcount.conf -e | \
>> + grep ^LOCALCOUNT_DUMPFILE= | cut -f2 -d\"`
>> + if [ "x${df}" == "x" ];
>> + then
>> + echo "LOCALCOUNT_DUMPFILE is not defined!"
>> + return 1
>> + fi
>> +
>> + rm -rf $df
>> + clean_cache
>> + echo "Exporting LOCALCOUNT to AUTOINCs..."
>> + bitbake -R conf/migrate_localcount.conf -p
>> + [ ! $? -eq 0 ] && echo "Exporting failed!" && exit 1
>> +
>> + echo "Importing generated AUTOINC entries..."
>> + [ -e $df ] && do_import $df
>> +
>> + if [ ! $? -eq 0 ]
>> + then
>> + echo "Migration from LOCALCOUNT to AUTOINCs failed!"
>> + return 1
>> + fi
>> +
>> + echo "Migration from LOCALCOUNT to AUTOINCs succeeded!"
>> + return 0
>> +}
>> +
>> [ $# -eq 0 ] && help && exit 1
>>
>> case $1 in
>> @@ -56,6 +85,9 @@ export)
>> import)
>> do_import $2
>> ;;
>> +migrate_localcount)
>> + do_migrate_localcount
>> + ;;
>> *)
>> help
>> exit 1
>> --
>> 1.7.11.7
>>
>>
>> _______________________________________________
>> Openembedded-core mailing list
>> Openembedded-core@lists.openembedded.org
>> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
Cheers,
Constantin
prev parent reply other threads:[~2013-01-22 15:57 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-22 9:39 [PATCH 3/3] prs: add LOCALCOUNT to AUTOINCs migration feature Constantin Musca
2013-01-22 14:15 ` Martin Jansa
2013-01-22 15:42 ` Constantin Musca [this message]
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=50FEB34D.7080307@intel.com \
--to=constantinx.musca@intel.com \
--cc=martin.jansa@gmail.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.