flipperdevices / flipperzero-ufbt

Compact tool for building and debugging applications for Flipper Zero.
https://pypi.org/project/ufbt/
GNU General Public License v3.0
494 stars 36 forks source link

scons: *** [phony_launch] More than one app is runnable: . Please specify an app with APPID=... #40

Closed fernandosmither closed 3 months ago

fernandosmither commented 3 months ago

Hi!

I'm currently trying to run the built-in nfc app:

image

After running ufbt, ufbt launch asks to specify the APPID=. Doing so does not work:

image

This is probably a small thing I'm missing

fernandosmither commented 3 months ago

If it is not related to me passing the APPID= in the wrong way, it's probably some problem related to compiling. This is the full output (keep in mind, this is the official firmware NFC application):

pini in ~/Desktop/flipperzero-firmware/applications/main/nfc on dev ● λ ufbt   
scons: Entering directory `/home/pini/.ufbt/current/scripts/ufbt'
        CC      /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/plugins/supported_cards/all_in_one.c
        CC      /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/plugins/supported_cards/microel.c
        CC      /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/plugins/supported_cards/mizip.c
        CC      /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/plugins/supported_cards/hi.c
        CC      /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/plugins/supported_cards/opal.c
        CC      /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/plugins/supported_cards/mykey.c
        CC      /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/plugins/supported_cards/myki.c
        CC      /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/plugins/supported_cards/troika.c
        CC      /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/plugins/supported_cards/washcity.c
        CC      /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/plugins/supported_cards/plantain.c
        CC      /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/plugins/supported_cards/two_cities.c
        CC      /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/plugins/supported_cards/aime.c
        CC      /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/plugins/supported_cards/bip.c
        CC      /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/plugins/supported_cards/umarsh.c
        CC      /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/plugins/supported_cards/gallagher.c
        CC      /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/plugins/supported_cards/clipper.c
        CC      /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/plugins/supported_cards/hid.c
        CC      /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/plugins/supported_cards/itso.c
        CC      /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/api/gallagher/gallagher_util.c
        CC      /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/api/mosgortrans/mosgortrans_util.c
        LINK    /home/pini/.ufbt/build/gallagher_parser_d.elf
        LINK    /home/pini/.ufbt/build/troika_parser_d.elf
        LINK    /home/pini/.ufbt/build/aime_parser_d.elf
        LINK    /home/pini/.ufbt/build/two_cities_parser_d.elf
        LINK    /home/pini/.ufbt/build/opal_parser_d.elf
        LINK    /home/pini/.ufbt/build/washcity_parser_d.elf
        LINK    /home/pini/.ufbt/build/plantain_parser_d.elf
        LINK    /home/pini/.ufbt/build/mizip_parser_d.elf
        LINK    /home/pini/.ufbt/build/hi_parser_d.elf
        LINK    /home/pini/.ufbt/build/mykey_parser_d.elf
        LINK    /home/pini/.ufbt/build/myki_parser_d.elf
        LINK    /home/pini/.ufbt/build/microel_parser_d.elf
        LINK    /home/pini/.ufbt/build/all_in_one_parser_d.elf
        APPMETA /home/pini/.ufbt/build/all_in_one_parser.fal
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/debug/all_in_one_parser_d.elf
        APPMETA /home/pini/.ufbt/build/myki_parser.fal
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/debug/myki_parser_d.elf
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/debug/microel_parser_d.elf
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/debug/mykey_parser_d.elf
        APPMETA /home/pini/.ufbt/build/mykey_parser.fal
        APPMETA /home/pini/.ufbt/build/hi_parser.fal
        LINK    /home/pini/.ufbt/build/hid_parser_d.elf
        APPMETA /home/pini/.ufbt/build/mizip_parser.fal
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/debug/mizip_parser_d.elf
        APPMETA /home/pini/.ufbt/build/microel_parser.fal
        FAP     /home/pini/.ufbt/build/all_in_one_parser.fal
        FAP     /home/pini/.ufbt/build/myki_parser.fal
        LINK    /home/pini/.ufbt/build/itso_parser_d.elf
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/debug/hi_parser_d.elf
        FAP     /home/pini/.ufbt/build/mykey_parser.fal
        APPMETA /home/pini/.ufbt/build/plantain_parser.fal
        FAP     /home/pini/.ufbt/build/hi_parser.fal
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/debug/plantain_parser_d.elf
        LINK    /home/pini/.ufbt/build/clipper_parser_d.elf
        FASTFAP /home/pini/.ufbt/build/myki_parser.fal
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/debug/washcity_parser_d.elf
        FASTFAP /home/pini/.ufbt/build/all_in_one_parser.fal
        APPMETA /home/pini/.ufbt/build/washcity_parser.fal
        FAP     /home/pini/.ufbt/build/mizip_parser.fal
        FASTFAP /home/pini/.ufbt/build/hi_parser.fal
        FASTFAP /home/pini/.ufbt/build/mykey_parser.fal
        FAP     /home/pini/.ufbt/build/washcity_parser.fal
        FASTFAP /home/pini/.ufbt/build/mizip_parser.fal
        FAP     /home/pini/.ufbt/build/microel_parser.fal
        FAP     /home/pini/.ufbt/build/plantain_parser.fal
        FASTFAP /home/pini/.ufbt/build/washcity_parser.fal
        FASTFAP /home/pini/.ufbt/build/microel_parser.fal
        FASTFAP /home/pini/.ufbt/build/plantain_parser.fal
        APPMETA /home/pini/.ufbt/build/clipper_parser.fal
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/debug/clipper_parser_d.elf
        APPMETA /home/pini/.ufbt/build/itso_parser.fal
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/debug/itso_parser_d.elf
        FAP     /home/pini/.ufbt/build/clipper_parser.fal
        APPMETA /home/pini/.ufbt/build/hid_parser.fal
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/debug/hid_parser_d.elf
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/debug/two_cities_parser_d.elf
        APPMETA /home/pini/.ufbt/build/two_cities_parser.fal
        FAP     /home/pini/.ufbt/build/hid_parser.fal
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/debug/gallagher_parser_d.elf
        FAP     /home/pini/.ufbt/build/itso_parser.fal
        APPMETA /home/pini/.ufbt/build/gallagher_parser.fal
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/debug/troika_parser_d.elf
        FASTFAP /home/pini/.ufbt/build/hid_parser.fal
        FASTFAP /home/pini/.ufbt/build/clipper_parser.fal
        FASTFAP /home/pini/.ufbt/build/itso_parser.fal
        FAP     /home/pini/.ufbt/build/two_cities_parser.fal
        FAP     /home/pini/.ufbt/build/gallagher_parser.fal
        FASTFAP /home/pini/.ufbt/build/two_cities_parser.fal
        FASTFAP /home/pini/.ufbt/build/gallagher_parser.fal
        APPMETA /home/pini/.ufbt/build/troika_parser.fal
        APPMETA /home/pini/.ufbt/build/opal_parser.fal
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/debug/opal_parser_d.elf
        FAP     /home/pini/.ufbt/build/opal_parser.fal
        APPMETA /home/pini/.ufbt/build/aime_parser.fal
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/debug/aime_parser_d.elf
        FASTFAP /home/pini/.ufbt/build/opal_parser.fal
        LINK    /home/pini/.ufbt/build/bip_parser_d.elf
        FAP     /home/pini/.ufbt/build/troika_parser.fal
        FAP     /home/pini/.ufbt/build/aime_parser.fal
        LINK    /home/pini/.ufbt/build/umarsh_parser_d.elf
        FASTFAP /home/pini/.ufbt/build/troika_parser.fal
        FASTFAP /home/pini/.ufbt/build/aime_parser.fal
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/debug/umarsh_parser_d.elf
        APPMETA /home/pini/.ufbt/build/umarsh_parser.fal
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/debug/bip_parser_d.elf
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/plantain_parser.fal
        APPMETA /home/pini/.ufbt/build/bip_parser.fal
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/washcity_parser.fal
        APPCHK  /home/pini/.ufbt/build/plantain_parser.fal
                Target: 7, API: 58.0
        FAP     /home/pini/.ufbt/build/umarsh_parser.fal
        APPCHK  /home/pini/.ufbt/build/washcity_parser.fal
                Target: 7, API: 58.0
        FAP     /home/pini/.ufbt/build/bip_parser.fal
        FASTFAP /home/pini/.ufbt/build/umarsh_parser.fal
        FASTFAP /home/pini/.ufbt/build/bip_parser.fal
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/troika_parser.fal
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/opal_parser.fal
        APPCHK  /home/pini/.ufbt/build/troika_parser.fal
                Target: 7, API: 58.0
        APPCHK  /home/pini/.ufbt/build/opal_parser.fal
                Target: 7, API: 58.0
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/hid_parser.fal
        APPCHK  /home/pini/.ufbt/build/hid_parser.fal
                Target: 7, API: 58.0
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/itso_parser.fal
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/two_cities_parser.fal
        APPCHK  /home/pini/.ufbt/build/itso_parser.fal
                Target: 7, API: 58.0
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/gallagher_parser.fal
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/clipper_parser.fal
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/myki_parser.fal
        APPCHK  /home/pini/.ufbt/build/gallagher_parser.fal
                Target: 7, API: 58.0
        APPCHK  /home/pini/.ufbt/build/clipper_parser.fal
                Target: 7, API: 58.0
        APPCHK  /home/pini/.ufbt/build/hi_parser.fal
                Target: 7, API: 58.0
        APPCHK  /home/pini/.ufbt/build/myki_parser.fal
                Target: 7, API: 58.0

fbt: warning: /home/pini/.ufbt/build/troika_parser.fal: app may not be runnable. Symbols not resolved using firmware's API: {'mosgortrans_parse_transport_block'}
_validate_app_imports, line 307, in file "/home/pini/.ufbt/current/scripts/fbt_tools/fbt_extapps.py"
        APPCHK  /home/pini/.ufbt/build/two_cities_parser.fal
                Target: 7, API: 58.0

fbt: warning: /home/pini/.ufbt/build/gallagher_parser.fal: app may not be runnable. Symbols not resolved using firmware's API: {'GALLAGHER_CARDAX_ASCII', 'gallagher_deobfuscate_and_parse_credential'}
_validate_app_imports, line 307, in file "/home/pini/.ufbt/current/scripts/fbt_tools/fbt_extapps.py"
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/bip_parser.fal
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/umarsh_parser.fal
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/aime_parser.fal
        APPCHK  /home/pini/.ufbt/build/bip_parser.fal
                Target: 7, API: 58.0
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/hi_parser.fal
        APPCHK  /home/pini/.ufbt/build/umarsh_parser.fal
                Target: 7, API: 58.0
        APPCHK  /home/pini/.ufbt/build/aime_parser.fal
                Target: 7, API: 58.0
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/mykey_parser.fal
        APPCHK  /home/pini/.ufbt/build/mykey_parser.fal
                Target: 7, API: 58.0
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/mizip_parser.fal
        APPCHK  /home/pini/.ufbt/build/mizip_parser.fal
                Target: 7, API: 58.0
        APPCHK  /home/pini/.ufbt/build/microel_parser.fal
                Target: 7, API: 58.0
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/microel_parser.fal
        INSTALL /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/dist/all_in_one_parser.fal
        APPCHK  /home/pini/.ufbt/build/all_in_one_parser.fal
                Target: 7, API: 58.0
        CPP     /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/api/nfc_app_api_table.cpp
        CC      /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/helpers/protocol_support/felica/felica.c
        CC      /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/helpers/protocol_support/felica/felica_render.c
        CC      /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/helpers/protocol_support/iso14443_3a/iso14443_3a.c
        CC      /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/helpers/protocol_support/iso14443_3a/iso14443_3a_render.c
In file included from /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/helpers/protocol_support/felica/felica_render.c:1:
/home/pini/Desktop/flipperzero-firmware/applications/main/nfc/helpers/protocol_support/felica/felica_render.h:3:10: fatal error: nfc/protocols/felica/felica.h: No such file or directory
    3 | #include <nfc/protocols/felica/felica.h>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
scons: *** [/home/pini/.ufbt/build/nfc/helpers/protocol_support/felica/felica_render.o] Error 1
In file included from /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/helpers/protocol_support/iso14443_3a/../nfc_protocol_support_base.h:10,
                 from /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/helpers/protocol_support/iso14443_3a/iso14443_3a.h:3,
                 from /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/helpers/protocol_support/iso14443_3a/iso14443_3a.c:1:
/home/pini/Desktop/flipperzero-firmware/applications/main/nfc/helpers/protocol_support/iso14443_3a/../../../nfc_app_i.h:10:10: fatal error: assets_icons.h: No such file or directory
   10 | #include <assets_icons.h>
      |          ^~~~~~~~~~~~~~~~
compilation terminated.
scons: *** [/home/pini/.ufbt/build/nfc/helpers/protocol_support/iso14443_3a/iso14443_3a.o] Error 1
In file included from /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/helpers/protocol_support/felica/../nfc_protocol_support_base.h:10,
                 from /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/helpers/protocol_support/felica/felica.h:3,
                 from /home/pini/Desktop/flipperzero-firmware/applications/main/nfc/helpers/protocol_support/felica/felica.c:1:
/home/pini/Desktop/flipperzero-firmware/applications/main/nfc/helpers/protocol_support/felica/../../../nfc_app_i.h:10:10: fatal error: assets_icons.h: No such file or directory
   10 | #include <assets_icons.h>
      |          ^~~~~~~~~~~~~~~~
compilation terminated.
hedger commented 3 months ago

The reason for that error lies in tight connections certain system applications have to internal APIs. They are built within full fbt environment and have unrestricted access to all headers and subsystems. Despite being "external" apps themselves, they were not designed for being built outside the full environment.

assets_icons.h contains definitions for all icons that are part of the firmware. You can fix that by copying the ones that are used by the app to its folder and specifying the "assets_icons" .fam property.

As for protocol-specific headers, they simply are not part of SDK.