From: Sinny Kumari <ksinny@gmail.com>
To: Dodji Seketeli <dodji@redhat.com>
Cc: Abigail Project Mailing List <libabigail@sourceware.org>,
Chenxiong Qi <cqi@redhat.com>
Subject: Re: [PATCH] Bug 21567 - Fedabipkgdiff matches build distro names too tightly
Date: Sun, 01 Jan 2017 00:00:00 -0000 [thread overview]
Message-ID: <CABbDtLpt=usQKeOKQEwgitpOMa-MGmByNst311cFNjud_SSzvA@mail.gmail.com> (raw)
In-Reply-To: <874lvihp02.fsf@redhat.com>
Hi Dodji,
Thanks for the quick patch!
Overall, it looks good to me. Have minor comments, mentioned inline.
On Wed, Jun 14, 2017 at 3:25 PM, Dodji Seketeli <dodji@redhat.com> wrote:
> Hello Chenxiong,
>
> This patch fixes the Fedabipkgdiff problem that Sinny Kumari filed at
> https://sourceware.org/bugzilla/show_bug.cgi?id=21567.
>
> To understand the problem, consider the build libxcb-1.12-3.fc26, which
> has been tagged for Fedora 27 (i.e, fc27).
>
> When we ask fedabipkgdiff to get the builds of libxcb for Fedora 27,
> it looks for builds which release string ends with 'fc27'. It thus
> fails to pick libxcb-1.12-3.fc26.
>
> This patch changes this behaviour by making
> Brew.get_package_latest_build to first try to get builds which release
> string match exactly the distro string we are looking at.
>
> But then if no build was found, the member function then tries to get
> builds for which the distro part of the release string is "less than"
> (in a lexicographic way) the distro string we are looking at.
>
> I haven't added any regression test specifically for this because we
> are planning to use the libabigail-selfcheck external tool to perform
> regression testing on tons of Fedora packages:
> https://pagure.io/libabigail-selfcheck. Fixing this issue is a
> pre-requisite for putting that regression test infrastructure in
> place.
>
> Is it OK to commit this into the master branch?
>
> Thanks.
>
> * tools/fedabipkgdiff (get_distro_from_string): Define new function.
> (Brew.get_package_latest_build): Also consider builds which distro
> property is less than the expected distro string that we were
> given.
>
>
> Signed-off-by: Dodji Seketeli <dodji@redhat.com>
> ---
> tools/fedabipkgdiff | 43 ++++++++++++++++++++++++++++++++++++++++++-
> 1 file changed, 42 insertions(+), 1 deletion(-)
>
> diff --git a/tools/fedabipkgdiff b/tools/fedabipkgdiff
> index a8329d4..42287fe 100755
> --- a/tools/fedabipkgdiff
> +++ b/tools/fedabipkgdiff
> @@ -172,6 +172,26 @@ def is_distro_valid(distro):
> return re.match(r'^(fc|el)\d{1,2}$', distro) is not None
>
>
> +def get_distro_from_string(str):
> + """Get the part of a string that designates the Fedora distro version number
> +
> + For instance, when passed the string '2.3.fc12', this function
> + returns the string 'fc12'.
> +
> + :param str the string to consider
> + :return: The sub-string of the parameter that represents the
> + Fedora distro version number, or None if the parameter does not
> + contain such a sub-string.
> + """
> +
> + m = re.match(r'(.*)((fc|el)\d{1,2})(.*)', str)
> + if not m:
> + return None
> +
> + distro = m.group(2)
> + return distro
> +
> +
> def match_nvr(s):
> """Determine if a string is a N-V-R"""
> return re.match(r'^([^/]+)-(.+)-(.+)$', s) is not None
> @@ -776,7 +796,7 @@ class Brew(object):
>
> @log_call
> def get_package_latest_build(self, package_name, distro):
> - """Get latest build from a package
> + """Get latest build from a package, for a particular distro.
>
> Example:
>
> @@ -797,6 +817,27 @@ class Brew(object):
> order_by='nvr',
> reverse=True)
> if not builds:
> + # So we found no build which distro string exactly matches
> + # the 'distro' parameter.
> + #
> + # Now lets try to get builds which distro string are less
> + # than the value of the 'distro' parameter. This is for
> + # cases when, for instnace, the build of package foo that
Small typo, s/instnace/instance/
> + # is present in current Fedora 27 is foo-1.fc26. That
> + # build originates from Fedora 26 but is being re-used in
> + # Fedora 27. So we want this function to pick up that
> + # foo-1.fc26, even though we want the builds of foo that
> + # match the distro string fc27.
> +
> + selector = lambda build: get_distro(build['release']) and \
> + get_distro(build['release']) <= distro
You probably wanted to mention get_distro_from_string instead of
get_distro because newly defined function name is get_distro_from_string.
> +
> + builds = self.listBuilds(packageID=package['id'],
> + selector=selector,
> + order_by='nvr',
> + reverse=True);
> +
> + if not builds:
> raise NoCompleteBuilds(
> 'No complete builds of package {0}'.format(package_name))
>
> --
> 1.8.3.1
Thanks,
Sinny
--
http://sinny.io/
next prev parent reply other threads:[~2017-06-14 11:51 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-01 0:00 Dodji Seketeli
2017-01-01 0:00 ` Sinny Kumari [this message]
2017-01-01 0:00 ` Dodji Seketeli
2017-01-01 0:00 ` Chenxiong Qi
2017-01-01 0:00 ` Dodji Seketeli
2017-01-01 0:00 ` Sinny Kumari
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='CABbDtLpt=usQKeOKQEwgitpOMa-MGmByNst311cFNjud_SSzvA@mail.gmail.com' \
--to=ksinny@gmail.com \
--cc=cqi@redhat.com \
--cc=dodji@redhat.com \
--cc=libabigail@sourceware.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).