@@ -16,21 +16,13 @@ import (
1616 "github.com/oasisprotocol/cli/cmd/common"
1717)
1818
19- // TODO: Replace these URIs with a better mechanism for managing releases .
19+ // Artifact kinds .
2020const (
21- artifactFirmware = "firmware"
22- artifactKernel = "kernel"
23- artifactStage2 = "stage 2 template"
24-
25- defaultFirmwareURI = "https://github.com/oasisprotocol/oasis-boot/releases/download/v0.3.3/ovmf.tdx.fd#db47100a7d6a0c1f6983be224137c3f8d7cb09b63bb1c7a5ee7829d8e994a42f"
26- defaultKernelURI = "https://github.com/oasisprotocol/oasis-boot/releases/download/v0.3.3/stage1.bin#539f25c66a27b2ca3c6b4d3333b88c64e531fcc96776c37a12c9ce06dd7fbac9"
27- defaultStage2TemplateURI = "https://github.com/oasisprotocol/oasis-boot/releases/download/v0.3.3/stage2-basic.tar.bz2#72c84d2566959799fdd98fae08c143a8572a5a09ee426be376f9a8bbd1675f2b"
28- )
29-
30- var (
31- tdxFirmwareURI = defaultFirmwareURI
32- tdxKernelURI = defaultKernelURI
33- tdxStage2TemplateURI = defaultStage2TemplateURI
21+ artifactFirmware = "firmware"
22+ artifactKernel = "kernel"
23+ artifactStage2 = "stage 2 template"
24+ artifactContainerRuntime = "rofl-container runtime"
25+ artifactContainerCompose = "compose.yaml"
3426)
3527
3628// tdxBuildRaw builds a TDX-based "raw" ROFL app.
@@ -41,8 +33,7 @@ func tdxBuildRaw(
4133 deployment * buildRofl.Deployment ,
4234 bnd * bundle.Bundle ,
4335) error {
44- wantedArtifacts := tdxGetDefaultArtifacts ()
45- tdxOverrideArtifacts (manifest , wantedArtifacts )
36+ wantedArtifacts := tdxWantedArtifacts (manifest , buildRofl .LatestBasicArtifacts )
4637 artifacts := tdxFetchArtifacts (wantedArtifacts )
4738
4839 fmt .Println ("Building a TDX-based Rust ROFL application..." )
@@ -87,13 +78,32 @@ type artifact struct {
8778 uri string
8879}
8980
90- // tdxGetDefaultArtifacts returns the list of default TDX artifacts.
91- func tdxGetDefaultArtifacts () []* artifact {
92- return []* artifact {
93- {artifactFirmware , tdxFirmwareURI },
94- {artifactKernel , tdxKernelURI },
95- {artifactStage2 , tdxStage2TemplateURI },
81+ // tdxWantedArtifacts returns the list of wanted artifacts based on the passed manifest and a set of
82+ // defaults. In case an artifact is not defined in the manifest, it is taken from defaults.
83+ func tdxWantedArtifacts (manifest * buildRofl.Manifest , defaults buildRofl.ArtifactsConfig ) []* artifact {
84+ var artifacts []* artifact
85+ for _ , a := range []struct {
86+ kind string
87+ getter func (* buildRofl.ArtifactsConfig ) string
88+ }{
89+ {artifactFirmware , func (ac * buildRofl.ArtifactsConfig ) string { return ac .Firmware }},
90+ {artifactKernel , func (ac * buildRofl.ArtifactsConfig ) string { return ac .Kernel }},
91+ {artifactStage2 , func (ac * buildRofl.ArtifactsConfig ) string { return ac .Stage2 }},
92+ {artifactContainerRuntime , func (ac * buildRofl.ArtifactsConfig ) string { return ac .Container .Runtime }},
93+ {artifactContainerCompose , func (ac * buildRofl.ArtifactsConfig ) string { return ac .Container .Compose }},
94+ } {
95+ var uri string
96+ if manifest .Artifacts != nil {
97+ uri = a .getter (manifest .Artifacts )
98+ }
99+ if uri == "" {
100+ uri = a .getter (& defaults )
101+ }
102+ if uri != "" {
103+ artifacts = append (artifacts , & artifact {a .kind , uri })
104+ }
96105 }
106+ return artifacts
97107}
98108
99109// tdxFetchArtifacts obtains all of the required artifacts for a TDX image.
@@ -105,36 +115,6 @@ func tdxFetchArtifacts(artifacts []*artifact) map[string]string {
105115 return result
106116}
107117
108- // tdxOverrideArtifacts overrides artifacts based on the manifest.
109- func tdxOverrideArtifacts (manifest * buildRofl.Manifest , artifacts []* artifact ) {
110- if manifest == nil || manifest .Artifacts == nil {
111- return
112- }
113- overrides := manifest .Artifacts
114-
115- for _ , artifact := range artifacts {
116- var overrideURI string
117- switch artifact .kind {
118- case artifactFirmware :
119- overrideURI = overrides .Firmware
120- case artifactKernel :
121- overrideURI = overrides .Kernel
122- case artifactStage2 :
123- overrideURI = overrides .Stage2
124- case artifactContainerRuntime :
125- overrideURI = overrides .Container .Runtime
126- case artifactContainerCompose :
127- overrideURI = overrides .Container .Compose
128- default :
129- }
130-
131- if overrideURI == "" {
132- continue
133- }
134- artifact .uri = overrideURI
135- }
136- }
137-
138118type tdxStage2 struct {
139119 fn string
140120 rootHash string
0 commit comments