[PATCH v2] ARM: decompressor: simplify libfdt builds

Masahiro Yamada masahiroy at kernel.org
Sun Jan 19 20:28:59 PST 2020

Hi Russell,

On Mon, Jan 20, 2020 at 7:48 AM Russell King - ARM Linux admin
<linux at armlinux.org.uk> wrote:
> On Sun, Jan 19, 2020 at 10:08:22AM +0900, Masahiro Yamada wrote:
> > Copying source files during the build time may not end up with
> > as clean code as expected.
> >
> > lib/fdt*.c simply wrap scripts/dtc/libfdt/fdt*.c, and it works
> > nicely. Let's follow that approach for the arm decompressor, too.
> >
> > Add four wrappers, arch/arm/boot/compressed/fdt*.c and remove
> > the Makefile messes. Another nice thing is we no longer need to
> > maintain the own libfdt_env.h because the decompressor can include
> > <linux/libfdt_env.h>.
> Hi,
> This is a nice idea, but as Stephen's build has found, it is a very
> fragile change, particularly if you're doing a rebuild of an existing
> tree.
> Stephen's issue appears to be that - he has stale "shipped" copies
> that the old Makefile implementation created, which were attempted
> to be built with this patch applied.  The result of that is we
> try and pick up scripts/dtc/libfdt/libfdt_env.h.
> The whole point of the kernel build system is so that we can make
> changes to the kernel tree, and then build the kernel, and have the
> build system work out how to rebuild the kernel in a proper and safe
> way without us having to endlessly clean the build tree just because
> a few patches have been added.  This patch breaks that expectation.
> At the very least, this build-breaking nature needs to be mentioned,
> preferably telling people what they should be doing to fix the issue.
> An even better would be to find some way to avoid the issue in the
> first place, or find some way to warn about it - maybe by leaving a
> libfdt_env.h behind that has an appropriate #warning in it telling
> people what to do.  Or something.
> Thanks.

Sorry for causing a trouble again.

I will add the following code in arch/arm/boot/compressed/Makefile:

# These were previously generated C files. When you are building the kernel
# with O=, make sure to remove the stale files in the output tree. Otherwise,
# the build system would wrongly compile the stale ones.
ifdef building_out_of_srctree
$(shell rm -f $(addprefix $(obj)/, fdt_rw.c fdt_ro.c fdt_wip.c fdt.c))

Maybe we can remove this code in the future,
but we should keep it long enough.
If the out-of-tree "git bisect" crosses this commit,
the same build error would happen.
People usually do not clean the tree while git-bisecting.

I explained it in the commit description too.

I tested the out-of-tree build
with this patch applied/dropped.

For in-tree build,
"git checkout" seems to nicely overwrite
the stale generated files with the new
check-in files.

I attached the v3 patch.

If it is OK with you,
I will put it in the patch tracker.

Thank you.

Best Regards
Masahiro Yamada
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-ARM-decompressor-simplify-libfdt-builds.patch
Type: text/x-patch
Size: 7470 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20200120/aaf0977b/attachment-0001.bin>

More information about the linux-arm-kernel mailing list