From: Nico Schottelius <nico-linuxsetlocalversion@schottelius.org>
To: Mikulas Patocka <mpatocka@redhat.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Masahiro Yamada <masahiroy@kernel.org>,
Nico Schottelius <nico-linuxsetlocalversion@schottelius.org>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3] scripts/setlocalversion: fix a bug when LOCALVERSION is empty
Date: Mon, 12 Jul 2021 23:17:35 +0200 [thread overview]
Message-ID: <87tukzgrkg.fsf@ungleich.ch> (raw)
In-Reply-To: <alpine.LRH.2.02.2107121528270.11724@file01.intranet.prod.int.rdu2.redhat.com>
Sorry to say, but I am not convinced by the patch.
While yes, we might have changed the behaviour slightly, reading
something on the line of
if [ -z ... ]
is significantly more simple, elegant and easier to maintain, than
a rather atypical special case for setting a variable to empty,
using
if [ "${LOCALVERSION+set}" != "set" ] ..
*and* because it is so atypical, adding a long comment for it, too.
Additonally, -z should be correct if the variable *is* truly empty. I
assume it actually isn't and contains whitespace, which is not the same
as being set and empty.
Instead of re-adding complexity, could you consider changing the build
flow so that LOCALVERSION is either unset or empty?
Nico
Executed in bash:
% touch empty
% a=$(cat empty)
% [ -z "$a" ] && echo "really empty"
really empty
Mikulas Patocka <mpatocka@redhat.com> writes:
> On Mon, 12 Jul 2021, Greg Kroah-Hartman wrote:
>
>> On Mon, Jul 12, 2021 at 03:06:48PM -0400, Mikulas Patocka wrote:
>> >
>> >
>> > On Mon, 12 Jul 2021, Greg Kroah-Hartman wrote:
>> >
>> > > On Mon, Jul 12, 2021 at 10:00:59AM -0400, Mikulas Patocka wrote:
>> > > > The patch 042da426f8ebde012be9429ff705232af7ad7469
>> > > > ("scripts/setlocalversion: simplify the short version part") reduces the
>> > > > indentation. Unfortunatelly, it also changes behavior in a subtle way - if
>> > > > the user has empty "LOCALVERSION" variable, the plus sign is appended to
>> > > > the kernel version. It wasn't appended before.
>> > > >
>> > > > This patch reverts to the old behavior - we append the plus sign only if
>> > > > the LOCALVERSION variable is not set.
>> > > >
>> > > > Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
>> > > > Fixes: 042da426f8eb ("scripts/setlocalversion: simplify the short version part")
>> > > >
>> > > > ---
>> > > > scripts/setlocalversion | 2 +-
>> > > > 1 file changed, 1 insertion(+), 1 deletion(-)
>> > > >
>> > > > Index: linux-2.6/scripts/setlocalversion
>> > > > ===================================================================
>> > > > --- linux-2.6.orig/scripts/setlocalversion 2021-07-12 15:29:07.000000000 +0200
>> > > > +++ linux-2.6/scripts/setlocalversion 2021-07-12 15:50:29.000000000 +0200
>> > > > @@ -131,7 +131,7 @@ res="${res}${CONFIG_LOCALVERSION}${LOCAL
>> > > > if test "$CONFIG_LOCALVERSION_AUTO" = "y"; then
>> > > > # full scm version string
>> > > > res="$res$(scm_version)"
>> > > > -elif [ -z "${LOCALVERSION}" ]; then
>> > > > +elif [ "${LOCALVERSION+set}" != "set" ]; then
>> > >
>> > > That's really subtle, can you add a comment here that this handles an
>> > > empty file?
>> > >
>> > > thanks,
>> > >
>> > > greg k-h
>> >
>> > OK.
>> >
>> >
>> > From: Mikulas Patocka <mpatocka@redhat.com>
>> >
>>
>> I can't take a patch like this :(
>>
>> > The patch 042da426f8ebde012be9429ff705232af7ad7469
>> > ("scripts/setlocalversion: simplify the short version part") reduces
>>
>> Properly quote commits, the documentation says you do not need to use
>> the full sha1.
>
>
>
> From: Mikulas Patocka <mpatocka@redhat.com>
>
> The commit 042da426f8eb ("scripts/setlocalversion: simplify the short
> version part") reduces indentation. Unfortunately, it also changes behavior
> in a subtle way - if the user has empty "LOCALVERSION" variable, the plus
> sign is appended to the kernel version. It wasn't appended before.
>
> This patch reverts to the old behavior - we append the plus sign only if
> the LOCALVERSION variable is not set.
>
> Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
> Fixes: 042da426f8eb ("scripts/setlocalversion: simplify the short version part")
>
> ---
> scripts/setlocalversion | 13 ++++++++-----
> 1 file changed, 8 insertions(+), 5 deletions(-)
>
> Index: linux-2.6/scripts/setlocalversion
> ===================================================================
> --- linux-2.6.orig/scripts/setlocalversion 2021-07-12 15:29:07.000000000 +0200
> +++ linux-2.6/scripts/setlocalversion 2021-07-12 21:00:59.000000000 +0200
> @@ -131,11 +131,14 @@ res="${res}${CONFIG_LOCALVERSION}${LOCAL
> if test "$CONFIG_LOCALVERSION_AUTO" = "y"; then
> # full scm version string
> res="$res$(scm_version)"
> -elif [ -z "${LOCALVERSION}" ]; then
> - # append a plus sign if the repository is not in a clean
> - # annotated or signed tagged state (as git describe only
> - # looks at signed or annotated tags - git tag -a/-s) and
> - # LOCALVERSION= is not specified
> +elif [ "${LOCALVERSION+set}" != "set" ]; then
> + # If the variable LOCALVERSION is not set, append a plus
> + # sign if the repository is not in a clean annotated or
> + # signed tagged state (as git describe only looks at signed
> + # or annotated tags - git tag -a/-s).
> + #
> + # If the variable LOCALVERSION is set (including being set
> + # to an empty string), we don't want to append a plus sign.
> scm=$(scm_version --short)
> res="$res${scm:++}"
> fi
--
Sustainable and modern Infrastructures by ungleich.ch
next prev parent reply other threads:[~2021-07-12 21:24 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-12 14:00 [PATCH] scripts/setlocalversion: fix a bug when LOCALVERSION is empty Mikulas Patocka
2021-07-12 18:15 ` Greg Kroah-Hartman
2021-07-12 19:06 ` [PATCH v2] " Mikulas Patocka
2021-07-12 19:16 ` Greg Kroah-Hartman
2021-07-12 19:35 ` [PATCH v3] " Mikulas Patocka
2021-07-12 21:17 ` Nico Schottelius [this message]
2021-07-13 8:59 ` Mikulas Patocka
2021-07-13 9:11 ` Nico Schottelius
2021-07-13 11:43 ` Mikulas Patocka
2021-07-14 11:54 ` Masahiro Yamada
2021-07-18 13:27 ` Masahiro Yamada
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=87tukzgrkg.fsf@ungleich.ch \
--to=nico-linuxsetlocalversion@schottelius.org \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=masahiroy@kernel.org \
--cc=mpatocka@redhat.com \
/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.