Skip to content

make: fix info-boards-supported/-features-missing#6063

Closed
Kijewski wants to merge 3 commits intoRIOT-OS:masterfrom
Kijewski:fix-make-info-boards
Closed

make: fix info-boards-supported/-features-missing#6063
Kijewski wants to merge 3 commits intoRIOT-OS:masterfrom
Kijewski:fix-make-info-boards

Conversation

@Kijewski
Copy link
Copy Markdown
Contributor

@Kijewski Kijewski commented Nov 5, 2016

make info-boards-supported and make info-boards-features-missing
where implemented using a loop and -includes in Makefile.buildtest.
The loop "tried to" reset all variables affected by the includes, by
preserving a known list of variables.

This fails if the -include affects further variables, depends on
absent declarations, or needs assumes that other Makefiles where
included before.

This PR reimplements make info-boards-supported to use recursive make
invocations. For each board the build system will be in a "pristine"
state.

Added helpers:

  • make info-board: prints $(BOARD)
  • make info-boards: prints all boards that were not disabled by black
    or whitelisting.

Related: #5065 (comment)

You cannot suppress `$(info)` messages if you care about any output in
stdout.

Also it is nice to know where a warning came from without grepping.
Sometimes you need to call `make` recursively with a generated list of
goals. You have to make sure that this list is not empty, or otherwise
the default goal (all) will be executed.

This patch adds a `..noop` goal, that can be used instead. It simply
does nothing.
`make info-boards-supported` and `make info-boards-features-missing`
where implemented using a loop and `-include`s in Makefile.buildtest.
The loop "tried to" reset all variables affected by the includes, by
preserving a known list of variables.

This fails if the `-include` affects further variables, depends on
absent declarations, or needs assumes that other Makefiles where
included before.

This PR reimplements `make info-boards-supported` to use recursive make
invocations. For each board the build system will be in a "pristine"
state.

Added helpers:

 * `make info-board`: prints `$(BOARD)`
 * `make info-boards`: prints all boards that were not disabled by black
    or whitelisting.
@Kijewski Kijewski added Type: bug The issue reports a bug / The PR fixes a bug (including spelling errors) Area: build system Area: Build system labels Nov 5, 2016
@kaspar030
Copy link
Copy Markdown
Contributor

nice, thanks for tackling this!

@Kijewski Kijewski added the CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR label Nov 8, 2016
@Kijewski
Copy link
Copy Markdown
Contributor Author

Kijewski commented Nov 8, 2016

@kaspar030, is my PR broken or is Murdock a bit moody today?

/data/riotbuild/cpu/cortexm_common/atomic_arch.c:47:1: fatal error: opening dependency file /data/riotbuild/examples/bindist/bin/f4vi1/cortexm_common/atomic_arch.d: No such file or directory

@miri64
Copy link
Copy Markdown
Member

miri64 commented Nov 8, 2016

Given that your PR is the only red in a field of green I would guess the first is the case ;-)

@Kijewski
Copy link
Copy Markdown
Contributor Author

Kijewski commented Nov 8, 2016

@miri64, hm, your reasoning seems quite logical to me. :) I'll have a look what's wrong.

@OlegHahm OlegHahm added CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR and removed CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR labels Jan 14, 2017
@cgundogan
Copy link
Copy Markdown
Member

@MichelRottleuthner can you check whether this PR helps w.r.t. the issue we discussed yesterday?

@MichelRottleuthner
Copy link
Copy Markdown
Contributor

@cgundogan Yes this PR solves the issue, thank you for the pointer! (For reference: without this PR conditional USEMODULE statements (like this) caused wrong output from the affected info-boards-* targets)

@cgundogan
Copy link
Copy Markdown
Member

@miri64, hm, your reasoning seems quite logical to me. :) I'll have a look what's wrong.

ping @Kijewski

@PeterKietzmann PeterKietzmann added this to the Release 2017.01 milestone Jan 18, 2017
@kYc0o kYc0o added CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR and removed CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR labels Jan 24, 2017
@PeterKietzmann PeterKietzmann modified the milestones: Release 2017.01, Release 2017.04 Jan 26, 2017
@kaspar030
Copy link
Copy Markdown
Contributor

@Kijewski This is getting more pressing, a couple of PR's are in limbo because of the way info-boards-supported worked before...

Please rebase!

@kaspar030
Copy link
Copy Markdown
Contributor

Hm, only problem with this approach is performance. Finding the supported boards is about 30 to 40 times slower than before.

Still I think we should consider merging this.

@kaspar030
Copy link
Copy Markdown
Contributor

Fixed by #7589.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Area: build system Area: Build system CI: ready for build If set, CI server will compile all applications for all available boards for the labeled PR Type: bug The issue reports a bug / The PR fixes a bug (including spelling errors)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants