mirror of
https://github.com/flipperdevices/flipperzero-firmware.git
synced 2025-12-12 12:51:22 +04:00
ufbt: deploying sample ufbt automation for new apps; added source "ufbt -s env" for toolchain access (#2648)
This commit is contained in:
@@ -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 $)",
|
||||||
|
)
|
||||||
|
|||||||
@@ -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)*
|
||||||
|
|
||||||
|
|||||||
@@ -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,7 +29,8 @@ 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:
|
||||||
warn(WarningOnByDefault, str(e))
|
if not GetOption("silent"):
|
||||||
|
warn(WarningOnByDefault, str(e))
|
||||||
|
|
||||||
|
|
||||||
def PrepareApplicationsBuild(env):
|
def PrepareApplicationsBuild(env):
|
||||||
|
|||||||
@@ -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
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|||||||
@@ -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 $)",
|
||||||
|
)
|
||||||
|
|||||||
41
scripts/ufbt/project_template/app_template/.github/workflows/build.yml
vendored
Normal file
41
scripts/ufbt/project_template/app_template/.github/workflows/build.yml
vendored
Normal 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 }}
|
||||||
@@ -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".
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user