user7859: I've created a custom board in boards.txt and changed the upload.tool to a nonsense value, and yet when I do an upload the IDE still calls avrdude.
For example, In boards.txt I've changed the line...
tile.upload.tool=avrdude

...to...
tile.upload.tool=nogood

...and added these lines to platform.txt...
# NOGOOD programmer

tools.nogood.cmd="dir"
tools.nogood.program.pattern="dir" 
tools.nogood.upload.pattern="dir" 

...and reloaded the IDE and hit upload.. and it still runs AVRDUDE. 
(Note that my board ID is tile)
I've verified that I am editing the correct boards.txt by changing the cores key to nogood and this does generate an error.
Is boardid.upload.tool not the right place to change the recipe called when upload is hit?
How/where does the boardid.upload.tool=toolname key in boards.txt get mapped to the tools.toolname.upload.pattern key in platforms.txt?
I am using Arduino IDE version 1.8.3.
The custom boards.txt is in the directory Arduino\hardware\Move38\avr.
This full custom platform package is here...
https://github.com/bigjosh/Move38-Arduino-Platform
Thanks!

user7859: Custom tools for the Arduino build process are documented in the Boards Manager Package Index spec here...
https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.6.x-package_index.json-format-specification#tools-definitions
So it would seem that it i not possible to use custom tools with a manually installed board since there is no package index file. 

user26916: From https://github.com/bigjosh/Move38-Arduino-Platform#programmers:

Since there is no bootloader in a tile, all code must be programmed rather than downloaded.

When you do an "Upload Using Programmer", the tool is specified in the {programmerID}.program.tool property in programmers.txt. The {boardID}.upload.tool value is only used for a standard upload.
Since programmers.txt is not in your hardware package, this makes it very inconvenient to customize. What's worse is that the platform.txt associated with the selected programmer is used, rather than the one in your hardware package, for "Upload Using Programmer". For this reason, some popular hardware packages include their own copies of all standard programmers. The downside of this is it really clutters up the Tools > Programmer menu if you have multiple of these packages installed.

7859: <p>I've created a custom board in <code>boards.txt</code> and changed the <code>upload.tool</code> to a nonsense value, and yet when I do an upload the IDE still calls <code>avrdude</code>.</p>

<p>For example, In boards.txt I've changed the line...</p>

<pre><code>tile.upload.tool=avrdude
</code></pre>

<p>...to...</p>

<pre><code>tile.upload.tool=nogood
</code></pre>

<p>...and added these lines to platform.txt...</p>

<pre><code># NOGOOD programmer

tools.nogood.cmd="dir"
tools.nogood.program.pattern="dir" 
tools.nogood.upload.pattern="dir" 
</code></pre>

<p>...and reloaded the IDE and hit upload.. and it still runs AVRDUDE. </p>

<p>(Note that my board ID is <code>tile</code>)</p>

<p>I've verified that I am editing the correct boards.txt by changing the <code>cores</code> key to <code>nogood</code> and this does generate an error.</p>

<p>Is <code>boardid.upload.tool</code> not the right place to change the recipe called when upload is hit?</p>

<p>How/where does the <code>boardid.upload.tool=toolname</code> key in boards.txt get mapped to the <code>tools.toolname.upload.pattern</code> key in platforms.txt?</p>

<p>I am using Arduino IDE version 1.8.3.</p>

<p>The custom boards.txt is in the directory <code>Arduino\hardware\Move38\avr</code>.</p>

<p>This full custom platform package is here...</p>

<p><a href="https://github.com/bigjosh/Move38-Arduino-Platform" rel="nofollow noreferrer">https://github.com/bigjosh/Move38-Arduino-Platform</a></p>

<p>Thanks!</p>
 7859: <p>Custom tools for the Arduino build process are documented in the Boards Manager Package Index spec here...</p>

<p><a href="https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.6.x-package_index.json-format-specification#tools-definitions" rel="nofollow noreferrer">https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.6.x-package_index.json-format-specification#tools-definitions</a></p>

<p>So it would seem that it i not possible to use custom tools with a manually installed board since there is no package index file. </p>
 26916: <p>From <a href="https://github.com/bigjosh/Move38-Arduino-Platform#programmers" rel="noreferrer">https://github.com/bigjosh/Move38-Arduino-Platform#programmers</a>:</p>

<blockquote>
  <p>Since there is no bootloader in a tile, all code must be programmed rather than downloaded.</p>
</blockquote>

<p>When you do an "Upload Using Programmer", the tool is specified in the <code>{programmerID}.program.tool</code> property in programmers.txt. The <code>{boardID}.upload.tool</code> value is only used for a standard upload.</p>

<p>Since programmers.txt is not in your hardware package, this makes it very inconvenient to customize. What's worse is that the platform.txt associated with the selected programmer is used, rather than the one in your hardware package, for "Upload Using Programmer". For this reason, <a href="https://github.com/MCUdude/MightyCore/commit/777c5d6a373180c36d08c885c66690ccf2bd5a09#diff-d277425b7f2c4e00ec2a6a653169aa21" rel="noreferrer">some popular hardware packages include their own copies</a> of all standard programmers. The downside of this is it really clutters up the <strong>Tools > Programmer</strong> menu if you have multiple of these packages installed.</p>
