On Sun, Dec 31, 2017 at 9:13 PM, Laura Abbott <labbott(a)redhat.com> wrote:
On 12/30/2017 04:52 AM, Paul Bolle wrote:
>
> 0) The v4.14.10 stable updates adds a new executable (tools/objtool/sync-
> check.sh). Somehow this was added non-executable during my local build of
> v4.14.10 (on fc26, that is). This made the build fail:
>
> [...]
> + make -s ARCH=x86_64 V=1 -j4 bzImage
> make[2]: execvp: ./sync-check.sh: Permission denied
> make[2]: *** [Makefile:49:
>
[...]/BUILD/kernel-4.14.fc26/linux-4.14.10-1.local0.fc26.x86_64/tools/objtool/objtool]
> Error 127
> make[1]: *** [Makefile:62: objtool] Error 2
> make: *** [Makefile:1623: tools/objtool] Error 2
> make: *** Waiting for unfinished jobs....
> error: Bad exit status from /var/tmp/rpm-tmp.fTUkoT (%build)
>
>
> RPM build errors:
> Bad exit status from /var/tmp/rpm-tmp.fTUkoT (%build)
>
> Anybody else seeing this?
>
Yes, this was something that needed a fixup in rawhide. I added
the appropriate chmod. 4.14.10 is now building for F27 and F26.
> 1) Switching the specfile from patch to "git apply" seems to do the right
> thing. This is what I tried:
>
> diff --git a/kernel.spec b/kernel.spec
> index 965345c2a26e..b2a1ffbe843d 100644
> --- a/kernel.spec
> +++ b/kernel.spec
> @@ -1267,8 +1267,9 @@ fi
> # released_kernel with possible stable updates
> %if 0%{?stable_base}
> # This is special because the kernel spec is hell and nothing is
> consistent
> -xzcat %{SOURCE5000} | patch -p1 -F1 -s
> -git commit -a -m "Stable update"
> +xzcat %{SOURCE5000} | git apply -
> +git add -A
> +git commit -m "Stable update"
> %endif
> # Drop some necessary files from the source dir into the buildroot
>
> 2) Would it make sense to further gitify the specfile and move from patch
> to
> "git apply" here (and a few other places)? Or should we expect patch to do
> the
> right thing? (In the latter case I guess I might have to report a bug
> against
> patch.)
>
We've generally been expecting patch to do the right thing and it's
worked so far. I'm not opposed to gitifying more parts of the spec
file but do you have a particular reason for doing so? It seemed
like when Josh made the original change for git he had a few things
in mind.
I have to put on my time-machine cap to even try and remember. Here's
the best I can come up with.
If you look at where the cases where patch is being used, you'll
notice that some of them are before 'git init' is even run. So as it
stands currently, you can't use git apply because the git repo doesn't
actually exist at those points. Why that is boils down to 2 things:
1) Laziness and/or change minimalization when we introduced this. You
might be able to move around the git init so you can use git apply,
but I just didn't bother at the time for reasons I don't remember.
2) Upstream sucks at patch generation. If you look at the stable or
RC patches, they aren't nice mboxes of discreet commits. They're
giant, code-only diffs that don't preserve individual changes at all.
Looking at that you wind up just applying the changes wholesale and
then doing a commit with "baseline" as the commit message. Given that
the commit logs of the git tree during the build itself are useless
anyway (because koji doesn't read the commit logs), it doesn't matter
but it's still disappointing. It means we wind up having to create
the exploded tree with tooling after the fact. Oh well.
So if you want to use git apply instead of patch, I have no objections
that I can remember. It'll just require some extra work to make sure
the git repo actually exists and that doesn't break other things.
josh