To make the review of your request easier, please use the following template to provide all the required details and also include any other information that may be relevant.
name: bb-imager-cli
description: A streamlined command line tool to flash SD cards and boards such as
BeagleConnect Freedom, BeagleConnect Zepto, etc.
Unfortunately, falling under one of the supported categories is a hard requirement for classic confinement, and I do not believe this fits an approved category. Therefore, we are not able to grant this request at the moment.
Please let me know if you have any additional questions.
Can you please clarify what someone is supposed to do if snapcraft simply does not support a required capability in strict confinement?
As I stated in the reasoning, one of the requirement for bb-imager-cli is hotplug support for hidraw and i2c, which does not exist in strict confinement at the moment.
After a bit more digging, I have come to conclusion that non classic snap simply would not work for bb-imager-cli. The reasons are as follows:
i2c: The i2c gadget seems to only be available for ubuntu core. I2C is used to flash BeagleConnect Zepto over QWIIC when the application is running on SBCs like BeagleY-A, BeaglePlay, etc. This is a required usecase.
hidraw hotplug: Use to update BeagleConnect Freedom msp430 firmware.
I do believe this application should fall into debug tools category since it essentially allows testing Zephyr firmware and Linux images on SBCs and MCUs. But of course I could be wrong if debug tools category requires the ability to set break points.
How is this use case different from the Arduino IDE or Universal Update Utility (from NXP) or rpi-imager ?
They all get along fine using various interfaces with strict confinement (and I wouldn’t see a flashing tool in the same category as valgrind, strace or gdb)
There is some overlap, but things are not quite the same.
Arduino IDE/CLI: As documented in the snap page, the flashing for Arduino boards is mostly serial, with some doing flashing over raw-usb. This is something that bb-imager-cli also does, and can use strict confinement for. However, flashing is additionally also supported over i2c. Basically, the user will connect a BeagleConnect Zepto (MSPM0 based MCU) over QWIIC connector (on a linux SBC like BeaglePlay) to flash the board. In this case, bb-imager-cli is running on the SBC and accessing the i2c devices directly. NOTE: The SBC is not running Ubuntu Core, so i2c gadget snap is not available.
RPI Imager: It just flashes SD Cards. That can work fine in strict confinment.
To cut things short, not having i2c gadget snap in normal installs of snap is the reason I am asking for classic confinment. If there is any way around to get that functionality, then I would be happy with strict (even if it requires asking the user to enable experimental or something).
In case of bb-imager (GUI), i2c can be optional because almost no one is using the GUI from SBCs (and anyone that is should be able to use CLI as well). But in case of CLI, I cannot just disable I2C support since it is used quite regularly.