Build errors with vanilla firmware

@jesse, @algernon: The firmware can currently not be build. Find some ideas about the cause and fix in my comment to a recent merge.

The problem can easily be fixed in your own copy of the firmware. Comment all lines in the sketch that reference the Kaleidoscope-Numlock plugin. Or, better, manually update the git submodule Kaleidoscope in your clone of keyboardio/Arduino-Boards as follows

cd <Arduino-Boards_clone>/hardware/keyboardio/avr/libraries/Kaleidoscope
git pull origin master

<Arduino-Boards_clone> here must be replaced by the directory where you cloned keyboardio/Arduino-Boards.

Just pushed a fix, updating the Kaleidoscope library submodule. Thanks for the notice!

And yeah, it would be awesome if we could find a reasonable way to catch things like this, but I don’t think updating the Arduino-Boards repo on every push to master in any of its submodules is a good idea. Sometimes you want to update a few connected plugins together, and updating them separately would introduce a window of breakage.

I cannot see how that could happen. Updating plugins means pushing to their repos. After that the submodules of Arduino-Boards must be updated anyway.

Sorry, I think I did not make myself clear. I did not mean to call such a script after pushing or merging to a single plugin or core repo, but after the end of a merging operation, just to ensure that everything is up-to-date. Like a standard procedure from a flight check list.

Ah, ok, my bad then. That makes sense!

Mea Cupla.

In general, my policy is to pull Arduino-Boards up to current with a bit of a delay after merges because that’s previously been helpful for catching issues.

The cause of this particular failure is that I was careless.

I accepted a series of related pull requests. One of them caused tests to fail due to a build-system issue. I was in a rush and distracted and failed to notice that I hadn’t merged all of the related requests before pulling Arduino-Boards.

If I’d been more careful and followed the procedures I’d previously set out, this wouldn’t have happened.

In terms of frustrating newbies - this is one of many reasons we’ve been pushing newbies toward using the Arduino Boards Manager version of our core and libraries. That’s an explicit, published version of everything. It gets a version number and a checksum and the user doesn’t have to (or get to) touch git. It’s more work to publish…and also makes it much easier to the user to roll back to another version.

It is 100% a goal that git master ought to build at all times and that it ought always to be better than the previous git master revision.

I suspect that now that we have actual users who depend on their keyboards to type, we may want to think harder about a ‘stable’ branch of Arduino-Boards…though that is exactly the use case I intend for the boards manager builds…and they can be gotten at with tags.