ufbt: deploying sample ufbt automation for new apps; added source "ufbt -s env" for toolchain access (#2648)

This commit is contained in:
hedger 2023-05-08 14:01:52 +03:00 committed by GitHub
parent 954780ed24
commit f7dd77795a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 66 additions and 3 deletions

View File

@ -335,3 +335,9 @@ vscode_dist = distenv.Install("#.vscode", distenv.Glob("#.vscode/example/*"))
distenv.Precious(vscode_dist) distenv.Precious(vscode_dist)
distenv.NoClean(vscode_dist) distenv.NoClean(vscode_dist)
distenv.Alias("vscode_dist", vscode_dist) distenv.Alias("vscode_dist", vscode_dist)
# Configure shell with build tools
distenv.PhonyTarget(
"env",
"@echo $( ${FBT_SCRIPT_DIR}/toolchain/fbtenv.sh $)",
)

View File

@ -13,6 +13,7 @@ To use `fbt`, you only need `git` installed in your system.
> However, if you wish to use tools supplied with the toolchain outside `fbt`, you can open an *fbt shell*, with properly configured environment. > However, if you wish to use tools supplied with the toolchain outside `fbt`, you can open an *fbt shell*, with properly configured environment.
> - On Windows, simply run `scripts/toolchain/fbtenv.cmd`. > - On Windows, simply run `scripts/toolchain/fbtenv.cmd`.
> - On Linux & MacOS, run `source scripts/toolchain/fbtenv.sh` in a new shell. > - On Linux & MacOS, run `source scripts/toolchain/fbtenv.sh` in a new shell.
> - You can also type ```. `./fbt -s env` ``` in your shell. (Keep the "." at the beginning.)
If your system is not supported by pre-built toolchain variants or you want to use custom versions of dependencies, you can `set FBT_NOENV=1`. `fbt` will skip toolchain & environment configuration and will expect all tools to be available on your system's `PATH`. *(this option is not available on Windows)* If your system is not supported by pre-built toolchain variants or you want to use custom versions of dependencies, you can `set FBT_NOENV=1`. `fbt` will skip toolchain & environment configuration and will expect all tools to be available on your system's `PATH`. *(this option is not available on Windows)*

View File

@ -9,6 +9,7 @@ from SCons.Action import Action
from SCons.Builder import Builder from SCons.Builder import Builder
from SCons.Errors import StopError from SCons.Errors import StopError
from SCons.Warnings import WarningOnByDefault, warn from SCons.Warnings import WarningOnByDefault, warn
from SCons.Script import GetOption
# Adding objects for application management to env # Adding objects for application management to env
# AppManager env["APPMGR"] - loads all manifests; manages list of known apps # AppManager env["APPMGR"] - loads all manifests; manages list of known apps
@ -28,6 +29,7 @@ def LoadAppManifest(env, entry):
env["APPMGR"].load_manifest(app_manifest_file_path, entry) env["APPMGR"].load_manifest(app_manifest_file_path, entry)
env.Append(PY_LINT_SOURCES=[app_manifest_file_path]) env.Append(PY_LINT_SOURCES=[app_manifest_file_path])
except FlipperManifestException as e: except FlipperManifestException as e:
if not GetOption("silent"):
warn(WarningOnByDefault, str(e)) warn(WarningOnByDefault, str(e))

View File

@ -34,6 +34,9 @@ Other:
firmware_pvs: firmware_pvs:
generate a PVS-Studio report generate a PVS-Studio report
How to open a shell with toolchain environment and other build tools:
In your shell, type "source `./fbt -s env`". You can also use "." instead of "source".
For more targets & info, see documentation/fbt.md For more targets & info, see documentation/fbt.md
""" """

View File

@ -380,8 +380,9 @@ dist_env.Alias("vscode_dist", vscode_dist)
# Creating app from base template # Creating app from base template
dist_env.SetDefault(FBT_APPID=appenv.subst("$APPID") or "template") dist_env.SetDefault(FBT_APPID=appenv.subst("$APPID") or "template")
app_template_dir = project_template_dir.Dir("app_template")
app_template_dist = [] app_template_dist = []
for template_file in project_template_dir.Dir("app_template").glob("*"): for template_file in app_template_dir.glob("*"):
dist_file_name = dist_env.subst(template_file.name) dist_file_name = dist_env.subst(template_file.name)
if template_file.name.endswith(".png"): if template_file.name.endswith(".png"):
app_template_dist.append( app_template_dist.append(
@ -397,12 +398,13 @@ for template_file in project_template_dir.Dir("app_template").glob("*"):
}, },
) )
) )
AddPostAction( AddPostAction(
app_template_dist[-1], app_template_dist[-1],
[ [
Mkdir(original_app_dir.Dir("images")), Mkdir(original_app_dir.Dir("images")),
Touch(original_app_dir.Dir("images").File(".gitkeep")), Touch(original_app_dir.Dir("images").File(".gitkeep")),
# scons' glob ignores .dot directories, so we need to copy .github manually
Copy(original_app_dir.Dir(".github"), app_template_dir.Dir(".github")),
], ],
) )
dist_env.Precious(app_template_dist) dist_env.Precious(app_template_dist)
@ -440,3 +442,8 @@ else:
raise UserError(f"Dolphin folder not found: {dolphin_src_dir}") raise UserError(f"Dolphin folder not found: {dolphin_src_dir}")
dist_env.PhonyTarget("dolphin_ext", Action(missing_dolphin_folder, None)) dist_env.PhonyTarget("dolphin_ext", Action(missing_dolphin_folder, None))
dist_env.PhonyTarget(
"env",
"@echo $( ${FBT_SCRIPT_DIR}/toolchain/fbtenv.sh $)",
)

View File

@ -0,0 +1,41 @@
name: "FAP: Build for multiple SDK sources"
# This will build your app for dev and release channels on GitHub.
# It will also build your app every day to make sure it's up to date with the latest SDK changes.
# See https://github.com/marketplace/actions/build-flipper-application-package-fap for more information
on:
push:
## put your main branch name under "braches"
#branches:
# - master
pull_request:
schedule:
# do a build every day
- cron: "1 1 * * *"
jobs:
ufbt-build:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- name: dev channel
sdk-channel: dev
- name: release channel
sdk-channel: release
# You can add unofficial channels here. See ufbt action docs for more info.
name: 'ufbt: Build for ${{ matrix.name }}'
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Build with ufbt
uses: flipperdevices/flipperzero-ufbt-action@v0.1.1
id: build-app
with:
sdk-channel: ${{ matrix.sdk-channel }}
- name: Upload app artifacts
uses: actions/upload-artifact@v3
with:
# See ufbt action docs for other output variables
name: ${{ github.event.repository.name }}-${{ steps.build-app.outputs.suffix }}
path: ${{ steps.build-app.outputs.fap-artifacts }}

View File

@ -40,6 +40,9 @@ How to create a new application:
2. Run `ufbt vscode_dist create APPID=myapp` 2. Run `ufbt vscode_dist create APPID=myapp`
3. In VSCode, open the folder and start editing. 3. In VSCode, open the folder and start editing.
4. Run `ufbt launch` to build and upload your application. 4. Run `ufbt launch` to build and upload your application.
How to open a shell with toolchain environment and other build tools:
In your shell, type "source `ufbt -s env`". You can also use "." instead of "source".
""" """