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.
- shrinkwrap/__init__.py +1 -0
- shrinkwrap/__main__.py +4 -0
- shrinkwrap/commands/__init__.py +0 -0
- shrinkwrap/commands/build.py +91 -0
- shrinkwrap/commands/buildall.py +180 -0
- shrinkwrap/commands/clean.py +161 -0
- shrinkwrap/commands/inspect.py +235 -0
- shrinkwrap/commands/process.py +106 -0
- shrinkwrap/commands/run.py +311 -0
- shrinkwrap/config/FVP_Base_RevC-2xAEMvA-base.yaml +98 -0
- shrinkwrap/config/FVP_Base_RevC-2xAEMvA-rme.yaml +42 -0
- shrinkwrap/config/arch/v8.0.yaml +22 -0
- shrinkwrap/config/arch/v8.1.yaml +26 -0
- shrinkwrap/config/arch/v8.2.yaml +28 -0
- shrinkwrap/config/arch/v8.3.yaml +25 -0
- shrinkwrap/config/arch/v8.4.yaml +26 -0
- shrinkwrap/config/arch/v8.5.yaml +29 -0
- shrinkwrap/config/arch/v8.6.yaml +28 -0
- shrinkwrap/config/arch/v8.7.yaml +24 -0
- shrinkwrap/config/arch/v8.8.yaml +31 -0
- shrinkwrap/config/arch/v8.9.yaml +32 -0
- shrinkwrap/config/arch/v9.0.yaml +29 -0
- shrinkwrap/config/arch/v9.1.yaml +25 -0
- shrinkwrap/config/arch/v9.2.yaml +29 -0
- shrinkwrap/config/arch/v9.3.yaml +23 -0
- shrinkwrap/config/arch/v9.4.yaml +21 -0
- shrinkwrap/config/arch/v9.5.yaml +20 -0
- shrinkwrap/config/bootwrapper.yaml +76 -0
- shrinkwrap/config/buildroot-cca.yaml +113 -0
- shrinkwrap/config/buildroot.yaml +54 -0
- shrinkwrap/config/cca-3world.yaml +215 -0
- shrinkwrap/config/cca-4world.yaml +57 -0
- shrinkwrap/config/cca-edk2.yaml +58 -0
- shrinkwrap/config/debug/rmm.yaml +15 -0
- shrinkwrap/config/debug/tfa.yaml +18 -0
- shrinkwrap/config/debug/tftf.yaml +17 -0
- shrinkwrap/config/dt-base.yaml +115 -0
- shrinkwrap/config/edk2-base.yaml +59 -0
- shrinkwrap/config/ffa-hafnium-optee.yaml +45 -0
- shrinkwrap/config/ffa-optee.yaml +30 -0
- shrinkwrap/config/ffa-tftf.yaml +26 -0
- shrinkwrap/config/hafnium-base.yaml +51 -0
- shrinkwrap/config/kvm-unit-tests.yaml +32 -0
- shrinkwrap/config/kvmtool-base.yaml +33 -0
- shrinkwrap/config/linux-base.yaml +80 -0
- shrinkwrap/config/ns-edk2-base.yaml +83 -0
- shrinkwrap/config/ns-edk2-optee.yaml +41 -0
- shrinkwrap/config/ns-edk2.yaml +49 -0
- shrinkwrap/config/ns-preload.yaml +98 -0
- shrinkwrap/config/optee-base.yaml +37 -0
- shrinkwrap/config/rfa-base.yaml +49 -0
- shrinkwrap/config/rfa.yaml +47 -0
- shrinkwrap/config/rmm-base.yaml +24 -0
- shrinkwrap/config/rust.yaml +31 -0
- shrinkwrap/config/test/cca.yaml +47 -0
- shrinkwrap/config/tfa-base.yaml +45 -0
- shrinkwrap/config/tfa-rme.yaml +36 -0
- shrinkwrap/config/tftf-base.yaml +32 -0
- shrinkwrap/shrinkwrap_main.py +133 -0
- shrinkwrap/utils/__init__.py +0 -0
- shrinkwrap/utils/clivars.py +16 -0
- shrinkwrap/utils/config.py +1166 -0
- shrinkwrap/utils/graph.py +263 -0
- shrinkwrap/utils/label.py +153 -0
- shrinkwrap/utils/logger.py +160 -0
- shrinkwrap/utils/process.py +230 -0
- shrinkwrap/utils/runtime.py +192 -0
- shrinkwrap/utils/ssh_agent.py +98 -0
- shrinkwrap/utils/tty.py +46 -0
- shrinkwrap/utils/vars.py +14 -0
- shrinkwrap/utils/workspace.py +59 -0
- shrinkwrap_tool-2026.2.1.dist-info/METADATA +63 -0
- shrinkwrap_tool-2026.2.1.dist-info/RECORD +77 -0
- shrinkwrap_tool-2026.2.1.dist-info/WHEEL +5 -0
- shrinkwrap_tool-2026.2.1.dist-info/entry_points.txt +2 -0
- shrinkwrap_tool-2026.2.1.dist-info/licenses/license.rst +41 -0
- 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
|