Additional hints about the arduino-core-avr package in Debian
-------------------------------------------------------------

1. Bootloaders - differences between Debian and upstream on provided .hex
   files
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This Debian package can't provide all the various *.hex files that are
present within the upstream archive.
Due the DFSG [1] we are required to build all binary stuff from source, and
also have to remove any prebuilt binary stuff from the source tarball.
Due this circumstances there are some differences between the included *.hex
files in /usr/share/arduino/hardware/bootloaders and data provided by
upstream. In detail there are the following differences.

Folder bootloaders/atmega
 This folder is fully rebuildable, Debian is providing all possible *.hex
 files.

Folder bootloaders/atmega8
 This folder is fully rebuildable, Debian is providing all possible *.hex
 files.

Folder bootloaders/bt:
 The file ATmegaBOOT_168_atmega328_bt.hex we aren't able to rebuild, the
 package isn't including this file.

Folder bootloaders/caterina,
       bootloaders/caterina-Arduino_Robot,
       bootloaders/caterina-LilyPadUSB
 All the various *.hex files can't be rebuilded right now. Rebuilding
 requires LUFA [2] as resource which isn't available as package right now
 nor is it included as additional tarball to the source package.

Folder bootloaders/gemma
 To rebuild the file gemma_v1.hex we need to include the source of the
 Adafruit-Trinket-Gemma-Bootloader somehow, the complete source is not fully
 included and we can't build the file gemma_v1.hex.

Folder bootloaders/optiboot
 For the file optiboot_atmega328-Mini.hex isn't a Make target nor a read me
 or a hint provided how to rebuild that file. Therefore we cant's build and
 ship that file.

Folder bootloaders/stk500v2
 The file Mega2560-prod-firmware-2011-06-29.hex can't be built from source
 because the Makefile has no information about this file or instructions how
 to build the .hex file.

In case you really need one of the *.hex files from one of these folders
you can mostly pull the desired file from the original upstream git tree.
It certainly would be better if upstream can provide information how the
files can be built by ourself!

  https://github.com/arduino/ArduinoCore-avr

[1] https://www.debian.org/social_contract#guidelines
[2] http://www.lufa-lib.org/


3. Firmware - impossibility to provide any .hex files as firmware
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The situation for all *.hex files within the folder firmware/ is mostly the
same as for the *.hex files within the some subfolders in bootloader/.
For a successful rebuild of the various *.hex files in the folders

  firmware/atmegaxxu2
  firmware/atmegaxxu2/arduino-usbserial

the Lightweight USB Framework for AVRs (LUFA) [1] is required. For now this
software isn't packaged yet and by this the package can't provide any *.hex
files built up on top of the Makefiles. The existing *.hex files are build
with LUFA version 100807 according to the file

  'firmwares/atmegaxxu2/README.txt'.

For now we can just provide the available source files.

Please have a look at the upstream resource for the package
arduino-core-avr [2] in case you need a pre compiled *.hex file.

[1] http://www.lufa-lib.org/
[2] https://github.com/arduino/ArduinoCore-avr/tree/master/firmwares

If you have any questions or suggestions for improving this README file
please do not hesitate to write your opinions to the mailing list, no
subscription is required.

  pkg-electronics-devel@alioth-lists.debian.net

 -- Carsten Schoenert <c.schoenert@t-online.de>  Thu, 17 Dec 2020 20:20:00 +0100
