All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stephen Warren <swarren@wwwdotorg.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] kbuild: move ARCH, CPU, etc. to top Makefile to fix random build error
Date: Tue, 31 Mar 2015 09:45:54 -0600	[thread overview]
Message-ID: <551AC132.3030509@wwwdotorg.org> (raw)
In-Reply-To: <1427803341-28286-1-git-send-email-yamada.masahiro@socionext.com>

On 03/31/2015 06:02 AM, Masahiro Yamada wrote:
> Since the Kconfig conversion, some developers have reported that
> Kbuild sometimes fails completely at random.  According to the error
> reports, it seems to occur for any target board, but only on very
> fast computers.
>
> The log message for the fail case is like this:
>
>    make[1]: *** No rule to make target `../arch//cpu/u-boot.lds',
>    needed by `u-boot.lds'.  Stop.
>
> It looks like the top config.mk has not been included for *some*
> reason, and $(ARCH) has been left blank.
>
> I suspect "autoconf_is_current" is not working in some situation.
>
> This commit moves the definition of ARCH, CPU, SOC, etc. to the
> top Makefile, so they are surely set.

This doesn't solve the issue for me, although it improves the chance of 
success and changes the error I get.

With and without this patch, I ran:

CROSS_COMPILE=arm-linux-gnueabi- ./MAKEALL rpi_2

... until whichever of success/fail had the fewest "hits" had at least 5 
"hits".

Without this patch, the build failed 6 out of 11 runs with:

======================================================================
boards.cfg is up to date. Nothing to do.
Building rpi_2 board...
arm-linux-gnueabi-size: './u-boot': No such file
make: *** No rule to make target `arch//cpu/u-boot.lds', needed by 
`u-boot.lds'.  Stop.
make: *** Waiting for unfinished jobs....

--------------------- SUMMARY ----------------------------
Boards compiled: 1
Boards with warnings but no errors: 1 ( rpi_2 )
----------------------------------------------------------
======================================================================

With this patch, the build failed 5 out of 28 runs with:

======================================================================
boards.cfg is up to date. Nothing to do.
Building rpi_2 board...
arm-linux-gnueabi-size: './u-boot': No such file
make: *** [prepare1] Error 1
   Your architecture does not support generic board.
   Please undefine CONFIG_SYS_GENERIC_BOARD in your board config file.
make: *** [prepare1] Error 1

--------------------- SUMMARY ----------------------------
Boards compiled: 1
Boards with errors: 1 ( rpi_2 )
----------------------------------------------------------
======================================================================

This feels more like a missing dependency or similar timing issue than 
an issue with the order of variable setup in the makefile.

I tried to repro this on a couple of VM services (Linode 8192, and EC2 
c3.2xlarge) with the idea you could debug on those systems, but could 
not repro on those. Unfortunately the machine I have which repros the 
issue is on my work network, so I can't give you access.

One comment on the patch below:

> diff --git a/Makefile b/Makefile

> +ARCH		= $(CONFIG_SYS_ARCH:"%"=%)
> +CPU		= $(CONFIG_SYS_CPU:"%"=%)
> +SOC		= $(CONFIG_SYS_SOC:"%"=%)
> +VENDOR		= $(CONFIG_SYS_VENDOR:"%"=%)
> +BOARD		= $(CONFIG_SYS_BOARD:"%"=%)
> +CPUDIR		= arch/$(ARCH)/cpu$(if $(CPU),/$(CPU),)
> +BOARDDIR	= $(if $(BOARD),$(if $(VENDOR),$(VENDOR)/)$(BOARD))

> diff --git a/scripts/Makefile.autoconf b/scripts/Makefile.autoconf

> +ARCH		= $(CONFIG_SYS_ARCH:"%"=%)
> +CPU		= $(CONFIG_SYS_CPU:"%"=%)
> +SOC		= $(CONFIG_SYS_SOC:"%"=%)
> +VENDOR		= $(CONFIG_SYS_VENDOR:"%"=%)
> +BOARD		= $(CONFIG_SYS_BOARD:"%"=%)
> +CPUDIR		= arch/$(ARCH)/cpu$(if $(CPU),/$(CPU),)
> +BOARDDIR	= $(if $(BOARD),$(if $(VENDOR),$(VENDOR)))

Duplicating that doesn't seem like a good idea. Could it at least be 
included from a shared foo.mk file?

  parent reply	other threads:[~2015-03-31 15:45 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-31 12:02 [U-Boot] [PATCH] kbuild: move ARCH, CPU, etc. to top Makefile to fix random build error Masahiro Yamada
2015-03-31 15:37 ` York Sun
2015-03-31 15:45 ` Stephen Warren [this message]
2015-03-31 15:57   ` York Sun
2015-04-01 22:33 ` Stephen Warren
2015-04-03  3:54   ` 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=551AC132.3030509@wwwdotorg.org \
    --to=swarren@wwwdotorg.org \
    --cc=u-boot@lists.denx.de \
    /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.