ufbt: deploying sample ufbt automation for new apps; added source "ufbt -s env" for toolchain access (#2648)
				
					
				
			This commit is contained in:
		
							parent
							
								
									954780ed24
								
							
						
					
					
						commit
						f7dd77795a
					
				| @ -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". | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 hedger
						hedger