shrinkwrap-tool 2026.2.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. shrinkwrap/__init__.py +1 -0
  2. shrinkwrap/__main__.py +4 -0
  3. shrinkwrap/commands/__init__.py +0 -0
  4. shrinkwrap/commands/build.py +91 -0
  5. shrinkwrap/commands/buildall.py +180 -0
  6. shrinkwrap/commands/clean.py +161 -0
  7. shrinkwrap/commands/inspect.py +235 -0
  8. shrinkwrap/commands/process.py +106 -0
  9. shrinkwrap/commands/run.py +311 -0
  10. shrinkwrap/config/FVP_Base_RevC-2xAEMvA-base.yaml +98 -0
  11. shrinkwrap/config/FVP_Base_RevC-2xAEMvA-rme.yaml +42 -0
  12. shrinkwrap/config/arch/v8.0.yaml +22 -0
  13. shrinkwrap/config/arch/v8.1.yaml +26 -0
  14. shrinkwrap/config/arch/v8.2.yaml +28 -0
  15. shrinkwrap/config/arch/v8.3.yaml +25 -0
  16. shrinkwrap/config/arch/v8.4.yaml +26 -0
  17. shrinkwrap/config/arch/v8.5.yaml +29 -0
  18. shrinkwrap/config/arch/v8.6.yaml +28 -0
  19. shrinkwrap/config/arch/v8.7.yaml +24 -0
  20. shrinkwrap/config/arch/v8.8.yaml +31 -0
  21. shrinkwrap/config/arch/v8.9.yaml +32 -0
  22. shrinkwrap/config/arch/v9.0.yaml +29 -0
  23. shrinkwrap/config/arch/v9.1.yaml +25 -0
  24. shrinkwrap/config/arch/v9.2.yaml +29 -0
  25. shrinkwrap/config/arch/v9.3.yaml +23 -0
  26. shrinkwrap/config/arch/v9.4.yaml +21 -0
  27. shrinkwrap/config/arch/v9.5.yaml +20 -0
  28. shrinkwrap/config/bootwrapper.yaml +76 -0
  29. shrinkwrap/config/buildroot-cca.yaml +113 -0
  30. shrinkwrap/config/buildroot.yaml +54 -0
  31. shrinkwrap/config/cca-3world.yaml +215 -0
  32. shrinkwrap/config/cca-4world.yaml +57 -0
  33. shrinkwrap/config/cca-edk2.yaml +58 -0
  34. shrinkwrap/config/debug/rmm.yaml +15 -0
  35. shrinkwrap/config/debug/tfa.yaml +18 -0
  36. shrinkwrap/config/debug/tftf.yaml +17 -0
  37. shrinkwrap/config/dt-base.yaml +115 -0
  38. shrinkwrap/config/edk2-base.yaml +59 -0
  39. shrinkwrap/config/ffa-hafnium-optee.yaml +45 -0
  40. shrinkwrap/config/ffa-optee.yaml +30 -0
  41. shrinkwrap/config/ffa-tftf.yaml +26 -0
  42. shrinkwrap/config/hafnium-base.yaml +51 -0
  43. shrinkwrap/config/kvm-unit-tests.yaml +32 -0
  44. shrinkwrap/config/kvmtool-base.yaml +33 -0
  45. shrinkwrap/config/linux-base.yaml +80 -0
  46. shrinkwrap/config/ns-edk2-base.yaml +83 -0
  47. shrinkwrap/config/ns-edk2-optee.yaml +41 -0
  48. shrinkwrap/config/ns-edk2.yaml +49 -0
  49. shrinkwrap/config/ns-preload.yaml +98 -0
  50. shrinkwrap/config/optee-base.yaml +37 -0
  51. shrinkwrap/config/rfa-base.yaml +49 -0
  52. shrinkwrap/config/rfa.yaml +47 -0
  53. shrinkwrap/config/rmm-base.yaml +24 -0
  54. shrinkwrap/config/rust.yaml +31 -0
  55. shrinkwrap/config/test/cca.yaml +47 -0
  56. shrinkwrap/config/tfa-base.yaml +45 -0
  57. shrinkwrap/config/tfa-rme.yaml +36 -0
  58. shrinkwrap/config/tftf-base.yaml +32 -0
  59. shrinkwrap/shrinkwrap_main.py +133 -0
  60. shrinkwrap/utils/__init__.py +0 -0
  61. shrinkwrap/utils/clivars.py +16 -0
  62. shrinkwrap/utils/config.py +1166 -0
  63. shrinkwrap/utils/graph.py +263 -0
  64. shrinkwrap/utils/label.py +153 -0
  65. shrinkwrap/utils/logger.py +160 -0
  66. shrinkwrap/utils/process.py +230 -0
  67. shrinkwrap/utils/runtime.py +192 -0
  68. shrinkwrap/utils/ssh_agent.py +98 -0
  69. shrinkwrap/utils/tty.py +46 -0
  70. shrinkwrap/utils/vars.py +14 -0
  71. shrinkwrap/utils/workspace.py +59 -0
  72. shrinkwrap_tool-2026.2.1.dist-info/METADATA +63 -0
  73. shrinkwrap_tool-2026.2.1.dist-info/RECORD +77 -0
  74. shrinkwrap_tool-2026.2.1.dist-info/WHEEL +5 -0
  75. shrinkwrap_tool-2026.2.1.dist-info/entry_points.txt +2 -0
  76. shrinkwrap_tool-2026.2.1.dist-info/licenses/license.rst +41 -0
  77. shrinkwrap_tool-2026.2.1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,51 @@
1
+ # Copyright (c) 2022, Arm Limited.
2
+ # SPDX-License-Identifier: MIT
3
+
4
+ %YAML 1.2
5
+ ---
6
+ description: >-
7
+ Hafnium is the Secure Partition Manager that runs at SEL2.
8
+
9
+ image: shrinkwraptool/base-full
10
+
11
+ build:
12
+ hafnium:
13
+ repo:
14
+ remote: https://git.trustedfirmware.org/hafnium/hafnium.git
15
+ revision: v2.14.0
16
+
17
+ params:
18
+ PROJECT: reference
19
+ PLATFORM: secure_aem_v8a_fvp_vhe
20
+
21
+ build:
22
+ # Hafnium doesn't provide a mechanism to forward number of jobs to ninja,
23
+ # so it will always parallelize across all cpus. Ideally we would specify
24
+ # max jobs with ${param:jobs}.
25
+ - make OUT_DIR=${param:builddir} ${param:join_equal}
26
+
27
+ artifacts:
28
+ HAFNIUM: ${param:builddir}/secure_aem_v8a_fvp_vhe_clang/hafnium.bin
29
+
30
+ tfa:
31
+ params:
32
+ # Although TFA is now able to detect most features dynamically, there are
33
+ # still a few, which are required by Hafnium, which it can't. Given these
34
+ # are hard requirements for Hafnium, define them here.
35
+ GIC_EXT_INTID: 1
36
+ ENABLE_FEAT_MTE2: 1
37
+ ENABLE_SVE_FOR_SWD: 1
38
+ ENABLE_SME_FOR_SWD: 1
39
+
40
+ run:
41
+ params:
42
+ # Hafnium requires extended gic support, so define these here to show they
43
+ # are tightly coupled.
44
+ -C gic_distributor.ARE-fixed-to-one: 1
45
+ -C gic_distributor.extended-ppi-count: 64
46
+ -C gic_distributor.extended-spi-count: 1024
47
+ -C cluster0.gicv3.extended-interrupt-range-support: 1
48
+ -C cluster1.gicv3.extended-interrupt-range-support: 1
49
+ -C cluster0.memory_tagging_support_level: 2
50
+ -C cluster1.memory_tagging_support_level: 2
51
+ -C bp.dram_metadata.is_enabled: 1
@@ -0,0 +1,32 @@
1
+ # Copyright (c) 2024, Arm Limited.
2
+ # SPDX-License-Identifier: MIT
3
+
4
+ %YAML 1.2
5
+ ---
6
+ description: >-
7
+ Build KVM unit tests.
8
+
9
+ build:
10
+ kvm-unit-tests:
11
+ repo:
12
+ remote: https://gitlab.arm.com/linux-arm/kvm-unit-tests-cca
13
+ revision: cca/rmm-v1.0-rel0
14
+
15
+ toolchain: aarch64-linux-gnu-
16
+
17
+ params:
18
+ --arch: arm64
19
+ --cross-prefix: $${CROSS_COMPILE}
20
+ --target: kvmtool
21
+
22
+ build:
23
+ - ./configure ${param:join_equal}
24
+ - make -j${param:jobs}
25
+ - sed -i -e "/PRETTY_PRINT_STACKS/s/yes/no/"
26
+ -e "/ERRATATXT/s/=.*/=errata.txt/"
27
+ -e "/HOST/s/=.*/=aarch64/"
28
+ -e "/ARCH/s/=.*/=arm64/"
29
+ ${param:sourcedir}/config.mak
30
+
31
+ artifacts:
32
+ KVM_UNIT_TESTS: ${param:sourcedir}
@@ -0,0 +1,33 @@
1
+ # Copyright (c) 2022, Arm Limited.
2
+ # SPDX-License-Identifier: MIT
3
+
4
+ %YAML 1.2
5
+ ---
6
+ description: >-
7
+ kvmtool is a lightweight Virtual Machine Monitor that can be used, in concert
8
+ with KVM, to create and manage virtual machines. This config fragment can be
9
+ used to build the kvmtool binary, which is exported as an artifact called
10
+ LKVM. Fancy optional extras which depend on 3rd party libraries are not
11
+ enabled.
12
+
13
+ build:
14
+ kvmtool:
15
+ repo:
16
+ dtc:
17
+ remote: https://git.kernel.org/pub/scm/utils/dtc/dtc.git
18
+ revision: v1.7.2
19
+ kvmtool:
20
+ remote: https://git.kernel.org/pub/scm/linux/kernel/git/will/kvmtool.git
21
+ revision: 7ad32e5514aca2b6d19398fd3ae5a7c5e0e1ce24
22
+
23
+ toolchain: aarch64-linux-gnu-
24
+
25
+ build:
26
+ - export CC=$${CROSS_COMPILE}gcc
27
+ - export ARCH=arm64
28
+ - export LIBFDT_DIR=${param:sourcedir}/dtc/libfdt
29
+ - make -j${param:jobs} -C dtc libfdt
30
+ - make -j${param:jobs} -C kvmtool
31
+
32
+ artifacts:
33
+ LKVM: ${param:sourcedir}/kvmtool/lkvm
@@ -0,0 +1,80 @@
1
+ # Copyright (c) 2022, Arm Limited.
2
+ # SPDX-License-Identifier: MIT
3
+
4
+ %YAML 1.2
5
+ ---
6
+ description: >-
7
+ Linux kernel build config. Builds the kernel image and set of modules. Image
8
+ is exported as the KERNEL artifact, while the modules are exported in a tgz
9
+ archive as the KMODULES artifact. Modules are only built if a higher level
10
+ layer specifies `export BUILD_KMODULES=true` in the prebuild section.
11
+
12
+ By default the defconfig is built. Users can optionally add commands to the
13
+ prebuild list to modify the config (e.g. `./scripts/config ...`) or even
14
+ replace the .config, as required.
15
+
16
+ A higher level layer can optionally request kselftests to be built by
17
+ specifying `export BUILD_KSELFTESTS=true` in the prebuild section. If
18
+ specified, the kselftests package is exported in a tgz archive as the
19
+ KSELFTESTS artifact. A subset of targets can be specified with (e.g.)
20
+ `export BUILD_KSELFTESTS="mm arm64"`
21
+
22
+ build:
23
+ linux:
24
+ repo:
25
+ remote: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
26
+ revision: v6.17
27
+
28
+ toolchain: aarch64-linux-gnu-
29
+
30
+ prebuild:
31
+ - export BUILD_KMODULES=false
32
+ - export BUILD_KSELFTESTS=false
33
+ - export KBUILD_BUILD_HOST="shrinkwrap"
34
+ - export ARCH=arm64
35
+ - make -j${param:jobs} O=${param:builddir} defconfig
36
+
37
+ # Unconditionally add the virtio-rng driver so we can use the device on
38
+ # FVP to speed up CRNG init.
39
+ - ./scripts/config --file ${param:builddir}/.config --enable CONFIG_HW_RANDOM
40
+ - ./scripts/config --file ${param:builddir}/.config --enable CONFIG_HW_RANDOM_VIRTIO
41
+
42
+ build:
43
+ # Finalize the config.
44
+ - make -j${param:jobs} O=${param:builddir} olddefconfig
45
+
46
+ - if [ "$$BUILD_KMODULES" = "true" ]; then
47
+ # Make the kernel image and modules.
48
+ - make -j${param:jobs} O=${param:builddir} Image modules
49
+
50
+ # Package the modules into a tgz archive.
51
+ - make -j${param:jobs} O=${param:builddir} INSTALL_MOD_PATH=${param:builddir}/modules modules_install
52
+ - tar -caf ${param:builddir}/modules.tgz -C ${param:builddir}/modules .
53
+ - rm -rf ${param:builddir}/modules
54
+ - else
55
+ # Make the kernel image.
56
+ - make -j${param:jobs} O=${param:builddir} Image
57
+
58
+ # Dummy modules archive to keep artifacts happy.
59
+ - touch ${param:builddir}/modules.tgz
60
+ - fi
61
+
62
+ - if [ "$$BUILD_KSELFTESTS" != "false" ]; then
63
+ # Make kselftests and package into tgz archive.
64
+ - make -j${param:jobs} O=${param:builddir} headers_install
65
+ - if [ "$$BUILD_KSELFTESTS" = "true" ]; then
66
+ - make -j${param:jobs} O=${param:builddir} -C tools/testing/selftests install INSTALL_PATH=${param:builddir}/kselftests
67
+ - else
68
+ - make -j${param:jobs} O=${param:builddir} -C tools/testing/selftests install INSTALL_PATH=${param:builddir}/kselftests TARGETS="$$BUILD_KSELFTESTS"
69
+ - fi
70
+ - tar -caf ${param:builddir}/kselftests.tgz -C ${param:builddir}/kselftests .
71
+ - rm -rf ${param:builddir}/kselftests
72
+ - else
73
+ # Dummy kselftests archive to keep artifacts happy.
74
+ - touch ${param:builddir}/kselftests.tgz
75
+ - fi
76
+
77
+ artifacts:
78
+ KERNEL: ${param:builddir}/arch/arm64/boot/Image
79
+ KMODULES: ${param:builddir}/modules.tgz
80
+ KSELFTESTS: ${param:builddir}/kselftests.tgz
@@ -0,0 +1,83 @@
1
+ # Copyright (c) 2022, Arm Limited.
2
+ # SPDX-License-Identifier: MIT
3
+
4
+ %YAML 1.2
5
+ ---
6
+ description: >-
7
+ Internal building block for edk2-based systems. Requires separate layer to add
8
+ TF-A, DT and FVP (configured to suit).
9
+
10
+ layers:
11
+ - edk2-base.yaml
12
+
13
+ build:
14
+ tfa:
15
+ params:
16
+ BL33: ${artifact:EDK2}
17
+
18
+ run:
19
+ rtvars:
20
+ BL1:
21
+ type: path
22
+ value: ${artifact:BL1}
23
+
24
+ FIP:
25
+ type: path
26
+ value: ${artifact:FIP}
27
+
28
+ DTB:
29
+ type: path
30
+ value: ${artifact:DTB}
31
+
32
+ CMDLINE:
33
+ type: string
34
+ value: console=ttyAMA0 earlycon=pl011,0x1c090000 root=/dev/vda ip=dhcp
35
+
36
+ KERNEL:
37
+ type: path
38
+ value: null
39
+
40
+ ROOTFS:
41
+ type: path
42
+ value: ''
43
+
44
+ SHARE:
45
+ type: path
46
+ value: ''
47
+
48
+ EDK2FLASH:
49
+ type: path
50
+ value: ''
51
+
52
+ params:
53
+ -C bp.secureflashloader.fname: ${rtvar:BL1}
54
+ -C bp.flashloader0.fname: ${rtvar:FIP}
55
+ -C bp.virtioblockdevice.image_path: ${rtvar:ROOTFS}
56
+ -C cluster0.cpu0.semihosting-cwd: $${SEMIHOSTDIR}
57
+ -C bp.flashloader1.fname: ${rtvar:EDK2FLASH}
58
+ -C bp.virtiop9device.root_path: ${rtvar:SHARE}
59
+
60
+ prerun:
61
+ # We use the FVP's and UEFI's semihosting capability to get the images into
62
+ # the system. Wrap this up as a command in the startup.nsh along with the
63
+ # command line. UEFI will execute this when entering its shell. Copy the
64
+ # images to a unique temp directory (which is the root of our semihosting
65
+ # environment) then refer to them by its base name to UEFI. Using a unique
66
+ # temp directory means we can run multiple instances in parallel.
67
+ - SEMIHOSTDIR=`mktemp -d`
68
+ - function finish { rm -rf $$SEMIHOSTDIR; }
69
+ - trap finish EXIT
70
+ - cp ${rtvar:KERNEL} $${SEMIHOSTDIR}/Image
71
+ - cp ${rtvar:DTB} $${SEMIHOSTDIR}/fdt.dtb
72
+ - cat <<EOF > $${SEMIHOSTDIR}/startup.nsh
73
+ - Image dtb=fdt.dtb ${rtvar:CMDLINE}
74
+ - EOF
75
+
76
+ terminals:
77
+ bp.terminal_0:
78
+ friendly: ''
79
+ type: stdinout
80
+ no_color: true
81
+ no_escapes: 'EFI stub: Booting Linux Kernel...'
82
+ bp.terminal_1:
83
+ friendly: edk2
@@ -0,0 +1,41 @@
1
+ # Copyright (c) 2023, Arm Limited.
2
+ # SPDX-License-Identifier: MIT
3
+
4
+ %YAML 1.2
5
+ ---
6
+ description: >-
7
+ Brings together a software stack to demonstrate OPTEE in secure EL1
8
+ with TF-A in secure EL3 but without FF-A and secure EL2(Hafnium).
9
+ Secure partition dispatcher exists inside OPTEE.
10
+
11
+ concrete: true
12
+
13
+ layers:
14
+ - ns-edk2.yaml
15
+ - optee-base.yaml
16
+
17
+ build:
18
+ tfa:
19
+ params:
20
+ BL32: ${artifact:OPTEE_HDR_BIN}
21
+ BL32_EXTRA1: ${artifact:OPTEE_PAGER_BIN}
22
+ BL32_EXTRA2: ${artifact:OPTEE_PAGEABLE_BIN}
23
+ SPD: opteed
24
+ ARM_TSP_RAM_LOCATION: tdram
25
+ dt:
26
+ build:
27
+ # When using the default fvp-base-revc.dts, an overlay is added which
28
+ # adds extra properties that OPTEE requires to enable OPTEE driver
29
+ # in the kernel.
30
+ - if [ "$${DTS}" = "fvp-base-revc.dts" ]; then
31
+ - >-
32
+ OVERLAY="/ {
33
+ firmware {
34
+ optee {
35
+ compatible = \"linaro,optee-tz\";
36
+ method = \"smc\";
37
+ };
38
+ };
39
+ };"
40
+ - ( dtc -q -O dts -I dtb $${DTB_FINAL} ; echo -e "$${OVERLAY}" ) | dtc -q -O dtb -o $${DTB_FINAL}
41
+ - fi
@@ -0,0 +1,49 @@
1
+ # Copyright (c) 2022, Arm Limited.
2
+ # SPDX-License-Identifier: MIT
3
+
4
+ %YAML 1.2
5
+ ---
6
+ description: >-
7
+ Best choice for: I want to run Linux on FVP, booting with ACPI/DT, and have
8
+ easy control over its command line.
9
+
10
+ Brings together TF-A and EDK2 to provide a simple non-secure world environment
11
+ running on FVP. Allows easy specification of the kernel image and command
12
+ line, and rootfs at runtime (see rtvars). ACPI is provided by UEFI.
13
+
14
+ An extra rtvar is added (DTB) which allows specification of a custom device
15
+ tree. By default (if not overriding the rtvar), the upstream kernel device
16
+ tree is used. DT is enabled by default. Use 'acpi=force' to enable ACPI
17
+ boot.
18
+
19
+ By default (if not overriding the rtvars) a sensible command line is used that
20
+ will set up the console for logging and attempt to mount the rootfs image from
21
+ the FVP's virtio block device. However the default rootfs image is empty, so
22
+ the kernel will panic when attempting to mount; the user must supply a rootfs
23
+ if it is required that the kernel completes its boot. No default kernel image
24
+ is supplied and the config will refuse to run unless it is explicitly
25
+ specified.
26
+
27
+ Note that by default, UEFI variables are build time configured directing EDK2
28
+ to boot to the shell. This will cause startup.nsh to be executed and will
29
+ start the kernel boot. This way everything is automatic. By default, all EDK2
30
+ output is muxed to stdout. If you prefer booting UEFI to its UI, override the
31
+ the build pcd parameter `PcdUefiShellDefaultBootEnable` using the overlay and
32
+ override terminals 'bp.terminal_0'.type to 'telnet'.
33
+
34
+ When booting with device tree, a directory can optionally be shared from the
35
+ host system into the Linux environment running in the FVP. To do so, set the
36
+ SHARE rtvar to the desired directory, then mount the share inside the FVP with
37
+ the following (or automate it in fstab):
38
+
39
+ .. code-block:: shell
40
+ # mkdir /share
41
+ # mount -t 9p -o trans=virtio,version=9p2000.L FM /share
42
+
43
+ concrete: true
44
+
45
+ layers:
46
+ - FVP_Base_RevC-2xAEMvA-base.yaml
47
+ - tfa-base.yaml
48
+ - dt-base.yaml
49
+ - ns-edk2-base.yaml
@@ -0,0 +1,98 @@
1
+ # Copyright (c) 2022, Arm Limited.
2
+ # SPDX-License-Identifier: MIT
3
+
4
+ %YAML 1.2
5
+ ---
6
+ description: >-
7
+ Best choice for: I just want to run Linux on FVP.
8
+
9
+ A simple, non-secure-only configuration where all components are preloaded
10
+ into memory (TF-A's BL31, DTB and kernel). The system resets directly to BL31.
11
+ Allows easy specification of a custom command line at build-time (via
12
+ build.dt.params dictionary) and specification of the device tree, kernel image
13
+ and rootfs at run-time (see rtvars).
14
+
15
+ By default (if not overriding the rtvars), the upstream kernel device tree is
16
+ used along with a sensible command line that will set up the console for
17
+ logging and attempt to mount the rootfs image from the FVP's virtio block
18
+ device. However the default rootfs image is empty, so the kernel will panic
19
+ when attempting to mount; the user must supply a rootfs if it is required that
20
+ the kernel completes its boot. No default kernel image is supplied and the
21
+ config will refuse to run unless it is explicitly specified. Note: If
22
+ specifying a custom dtb at runtime, this will also override any command line
23
+ specified at build time, since the command line is added to the chosen node of
24
+ the default dtb.
25
+
26
+ A directory can optionally be shared from the host system into the Linux
27
+ environment running in the FVP. To do so, set the SHARE rtvar to the desired
28
+ directory, then mount the share inside the FVP with the following (or automate
29
+ it in fstab):
30
+
31
+ .. code-block:: shell
32
+ # mkdir /share
33
+ # mount -t 9p -o trans=virtio,version=9p2000.L FM /share
34
+
35
+ concrete: true
36
+
37
+ layers:
38
+ - FVP_Base_RevC-2xAEMvA-base.yaml
39
+ - tfa-base.yaml
40
+ - dt-base.yaml
41
+
42
+ build:
43
+ tfa:
44
+ params:
45
+ RESET_TO_BL31: 1
46
+ ARM_LINUX_KERNEL_AS_BL33: 1
47
+ PRELOADED_BL33_BASE: 0x84000000
48
+ ARM_PRELOADED_DTB_BASE: 0x82000000
49
+
50
+ dt:
51
+ params:
52
+ console: ttyAMA0
53
+ earlycon: pl011,0x1c090000
54
+ root: /dev/vda
55
+ ip: dhcp
56
+
57
+ run:
58
+ rtvars:
59
+ BL31:
60
+ type: path
61
+ value: ${artifact:BL31}
62
+
63
+ DTB:
64
+ type: path
65
+ value: ${artifact:DTB}
66
+
67
+ KERNEL:
68
+ type: path
69
+ value: null
70
+
71
+ ROOTFS:
72
+ type: path
73
+ value: ''
74
+
75
+ SHARE:
76
+ type: path
77
+ value: ''
78
+
79
+ params:
80
+ -C cluster0.cpu0.RVBAR: 0x04001000
81
+ -C cluster0.cpu1.RVBAR: 0x04001000
82
+ -C cluster0.cpu2.RVBAR: 0x04001000
83
+ -C cluster0.cpu3.RVBAR: 0x04001000
84
+ -C cluster1.cpu0.RVBAR: 0x04001000
85
+ -C cluster1.cpu1.RVBAR: 0x04001000
86
+ -C cluster1.cpu2.RVBAR: 0x04001000
87
+ -C cluster1.cpu3.RVBAR: 0x04001000
88
+ '--data cluster0.cpu0': ${rtvar:BL31}@0x04001000
89
+ ' --data cluster0.cpu0': ${rtvar:DTB}@0x82000000
90
+ ' --data cluster0.cpu0': ${rtvar:KERNEL}@0x84000000
91
+ -C bp.virtioblockdevice.image_path: ${rtvar:ROOTFS}
92
+ -C bp.virtiop9device.root_path: ${rtvar:SHARE}
93
+
94
+ terminals:
95
+ bp.terminal_0:
96
+ friendly: ''
97
+ type: stdinout
98
+ no_color: true
@@ -0,0 +1,37 @@
1
+ # Copyright (c) 2024, Arm Limited.
2
+ # SPDX-License-Identifier: MIT
3
+
4
+ %YAML 1.2
5
+ ---
6
+ description: >-
7
+ This provides the baseline for OPTEE 64-bit build.
8
+
9
+ build:
10
+ optee:
11
+ repo:
12
+ remote: https://github.com/OP-TEE/optee_os.git
13
+ revision: 4.6.0
14
+
15
+ toolchain: aarch64-linux-gnu-
16
+
17
+ params:
18
+ CFG_ARM_GICV3: y
19
+ CFG_ARM64_core: y
20
+ CFG_CALLOUT: y
21
+ CFG_CORE_HEAP_SIZE: 131072
22
+ CFG_DEBUG_INFO: y
23
+ CFG_NOTIF_TEST_WD: y
24
+ CFG_TEE_CORE_LOG_LEVEL: 2
25
+ CFG_USER_TA_TARGETS: ta_arm64
26
+ CROSS_COMPILE: aarch64-linux-gnu-
27
+ CROSS_COMPILE_core: aarch64-linux-gnu-
28
+ CROSS_COMPILE_ta_arm64: aarch64-linux-gnu-
29
+ DEBUG: 0
30
+ PLATFORM: vexpress-fvp
31
+ build:
32
+ - make O=${param:builddir} ${param:join_equal} all
33
+
34
+ artifacts:
35
+ OPTEE_HDR_BIN: ${param:builddir}/core/tee-header_v2.bin
36
+ OPTEE_PAGER_BIN: ${param:builddir}/core/tee-pager_v2.bin
37
+ OPTEE_PAGEABLE_BIN: ${param:builddir}/core/tee-pageable_v2.bin
@@ -0,0 +1,49 @@
1
+ # Copyright (c) 2025, Arm Limited.
2
+ # SPDX-License-Identifier: MIT
3
+
4
+ %YAML 1.2
5
+ ---
6
+ description: >-
7
+ Rusted-Firmware-A. This provides a baseline configuration that can be
8
+ customized by higher layers.
9
+
10
+ layers:
11
+ - tfa-base.yaml
12
+ - rust.yaml
13
+
14
+ build:
15
+ tfa:
16
+ params:
17
+ FVP_TRUSTED_SRAM_SIZE: 512
18
+ BL31: ${artifact:RFA_BL31}
19
+ postbuild:
20
+ - cp ${artifact:RFA_BL31} ${param:builddir}/fvp/release/rfa_bl31.bin
21
+ artifacts:
22
+ BL31: ${param:builddir}/fvp/release/rfa_bl31.bin
23
+
24
+ rfa:
25
+ params:
26
+ PLAT: fvp
27
+ DEBUG: 0
28
+ OBJCOPY: aarch64-none-elf-objcopy
29
+
30
+ repo:
31
+ remote: https://git.trustedfirmware.org/RF-A/rusted-firmware-a
32
+ # The tests do not properly shut-down with v0.1.0 revision.
33
+ revision: b0fec182669b59f16271ba695b4387cffcbc42a1
34
+
35
+ prebuild:
36
+ # Calling rustup to install the toolchain / components described
37
+ # by `rust-toolchain.toml`
38
+ - source ${artifact:RUST_ENV}
39
+ - rustup show
40
+
41
+ build:
42
+ - source ${artifact:RUST_ENV}
43
+ # Relocate the 'target' directory from ${param:sourcedir} to ${param:builddir} via symbolic link
44
+ - mkdir -p ${param:builddir}/target ; ln -sf ${param:builddir}/target ${param:sourcedir}/target
45
+ - make -j${param:jobs} ${param:join_equal} build
46
+
47
+ artifacts:
48
+ RFA_BL31: ${param:builddir}/target/bl31.bin
49
+ RFA_BL31_ELF: ${param:builddir}/target/bl31.elf
@@ -0,0 +1,47 @@
1
+ # Copyright (c) 2025, Arm Limited.
2
+ # SPDX-License-Identifier: MIT
3
+
4
+ %YAML 1.2
5
+ ---
6
+ description: >-
7
+ Rusted-Firmware-A. This configuration runs RF-A with the default
8
+ features along with its normal-world and secure-world tests.
9
+
10
+ concrete: true
11
+
12
+ layers:
13
+ - FVP_Base_RevC-2xAEMvA-base.yaml
14
+ - arch/v9.0.yaml
15
+ - rfa-base.yaml
16
+
17
+ build:
18
+ tfa:
19
+ params:
20
+ SPD: spmd
21
+ SPMD_SPM_AT_SEL2: 0
22
+ LOG_LEVEL: 50
23
+ BL32: ${artifact:BL32}
24
+ BL33: ${artifact:BL33}
25
+
26
+ rfa:
27
+ build:
28
+ - make -j${param:jobs} ${param:join_equal} target/bl32.bin target/bl33.bin
29
+ artifacts:
30
+ BL32: ${param:builddir}/target/bl32.bin
31
+ BL33: ${param:builddir}/target/bl33.bin
32
+
33
+ run:
34
+ rtvars:
35
+ BL1:
36
+ type: path
37
+ value: ${artifact:BL1}
38
+
39
+ FIP:
40
+ type: path
41
+ value: ${artifact:FIP}
42
+
43
+ params:
44
+ -C cluster0.cpu0.semihosting-cwd: target
45
+ -C cluster1.cpu0.semihosting-cwd: target
46
+ -C bp.secureflashloader.fname: ${rtvar:BL1}
47
+ -C bp.flashloader0.fname: ${rtvar:FIP}
@@ -0,0 +1,24 @@
1
+ # Copyright (c) 2022, Arm Limited.
2
+ # SPDX-License-Identifier: MIT
3
+
4
+ %YAML 1.2
5
+ ---
6
+ build:
7
+ rmm:
8
+ repo:
9
+ remote: https://git.trustedfirmware.org/TF-RMM/tf-rmm.git
10
+ revision: tf-rmm-v0.8.0
11
+
12
+ toolchain: aarch64-none-elf-
13
+
14
+ params:
15
+ -DRMM_CONFIG: fvp_defcfg
16
+ -DCMAKE_BUILD_TYPE: Release
17
+ -DLOG_LEVEL: 40
18
+
19
+ build:
20
+ - cmake ${param:join_equal} -S . -B ${param:builddir}
21
+ - cmake --build ${param:builddir} -j ${param:jobs}
22
+
23
+ artifacts:
24
+ RMM: ${param:builddir}/Release/rmm.img
@@ -0,0 +1,31 @@
1
+ # Copyright (c) 2025, Arm Limited.
2
+ # SPDX-License-Identifier: MIT
3
+
4
+ %YAML 1.2
5
+ ---
6
+ description: >-
7
+ Install Rust in the shrinkwrap build directory.
8
+
9
+ The reasons for installing the Rust toolchain in the build directory rather
10
+ than adding it to the Docker image are:
11
+ - Many Rust projects use a file name `rust-toolchain.toml` to specify a
12
+ specific version or channel that are likely to diverge from any version
13
+ installed in the Docker image.
14
+ - Cargo caches crate downloads inside $CARGO_HOME which will be lost across
15
+ shrinkwrap builds if the toolchain is in the Docker image.
16
+
17
+ build:
18
+ rust:
19
+ build:
20
+ - export CARGO_HOME=${param:sourcedir}/cargo
21
+ - export RUSTUP_HOME=${param:sourcedir}/rustup
22
+ - if ! [ -f $${CARGO_HOME}/bin/cargo ] ; then
23
+ - mkdir -p $${CARGO_HOME}/bin $${RUSTUP_HOME}/bin ;
24
+ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs |
25
+ - sh -s -- --profile minimal --default-toolchain none -y --no-modify-path ;
26
+ - fi
27
+ - echo "export CARGO_HOME=$${CARGO_HOME}" > ${param:builddir}/rust.env
28
+ - echo "export RUSTUP_HOME=$${RUSTUP_HOME}" >> ${param:builddir}/rust.env
29
+ - echo "export PATH=$${CARGO_HOME}/bin:$${RUSTUP_HOME}/bin:"'$$'"{PATH}" >> ${param:builddir}/rust.env
30
+ artifacts:
31
+ RUST_ENV: ${param:builddir}/rust.env