Skip to content

Commit ffa8dfb

Browse files
authored
provide option to override uefi tag (#224)
Signed-off-by: Avi Deitcher <[email protected]>
1 parent d818a1d commit ffa8dfb

File tree

5 files changed

+56
-27
lines changed

5 files changed

+56
-27
lines changed

cmd/downloader.go

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,21 @@ package cmd
22

33
import (
44
"fmt"
5+
"path/filepath"
6+
"runtime"
7+
58
"github.com/lf-edge/eden/pkg/defaults"
69
"github.com/lf-edge/eden/pkg/utils"
710
log "github.com/sirupsen/logrus"
811
"github.com/spf13/cobra"
912
"github.com/spf13/viper"
10-
"path/filepath"
11-
"runtime"
1213
)
1314

1415
var (
15-
eveArch string
16-
eveTag string
17-
outputDir string
16+
eveArch string
17+
eveTag string
18+
eveUefiTag string
19+
outputDir string
1820
)
1921

2022
var downloaderCmd = &cobra.Command{
@@ -32,6 +34,7 @@ var downloadEVECmd = &cobra.Command{
3234
}
3335
if viperLoaded {
3436
eveTag = viper.GetString("eve.tag")
37+
eveUefiTag = viper.GetString("eve.uefi-tag")
3538
eveArch = viper.GetString("eve.arch")
3639
eveHV = viper.GetString("eve.hv")
3740
adamDist = utils.ResolveAbsPath(viper.GetString("adam.dist"))
@@ -45,7 +48,7 @@ var downloadEVECmd = &cobra.Command{
4548
if devModel == defaults.DefaultRPIModel {
4649
format = "raw"
4750
}
48-
if err := utils.DownloadEveLive(adamDist, eveImageFile, eveArch, eveHV, eveTag, format); err != nil {
51+
if err := utils.DownloadEveLive(adamDist, eveImageFile, eveArch, eveHV, eveTag, eveUefiTag, format); err != nil {
4952
log.Fatal(err)
5053
} else {
5154
if devModel == defaults.DefaultRPIModel {
@@ -86,7 +89,8 @@ var downloadEVERootFSCmd = &cobra.Command{
8689

8790
func downloaderInit() {
8891
downloaderCmd.AddCommand(downloadEVECmd)
89-
downloadEVECmd.Flags().StringVarP(&eveTag, "eve-tag", "", defaults.DefaultEVETag, "tag to download")
92+
downloadEVECmd.Flags().StringVarP(&eveTag, "eve-tag", "", defaults.DefaultEVETag, "tag to download eve")
93+
downloadEVECmd.Flags().StringVarP(&eveUefiTag, "eve-uefi-tag", "", defaults.DefaultEVETag, "tag to download eve UEFI")
9094
downloadEVECmd.Flags().StringVarP(&eveArch, "eve-arch", "", runtime.GOARCH, "arch of EVE")
9195
downloadEVECmd.Flags().StringVarP(&eveHV, "eve-hv", "", defaults.DefaultEVEHV, "HV of EVE (kvm or xen)")
9296
downloadEVECmd.Flags().StringVarP(&eveImageFile, "image-file", "i", "", "path for image drive")

cmd/edenSetup.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,19 @@ import (
44
"crypto/sha1"
55
"encoding/hex"
66
"fmt"
7+
"os"
8+
"path/filepath"
9+
"reflect"
10+
"runtime"
11+
"strings"
12+
713
"github.com/lf-edge/eden/pkg/defaults"
814
"github.com/lf-edge/eden/pkg/utils"
915
log "github.com/sirupsen/logrus"
1016
"github.com/spf13/cobra"
1117
"github.com/spf13/viper"
1218
"golang.org/x/crypto/pbkdf2"
1319
"golang.org/x/crypto/ssh/terminal"
14-
"os"
15-
"path/filepath"
16-
"reflect"
17-
"runtime"
18-
"strings"
1920
)
2021

2122
var (
@@ -115,6 +116,7 @@ var setupCmd = &cobra.Command{
115116
eveDist = utils.ResolveAbsPath(viper.GetString("eve.dist"))
116117
eveRepo = viper.GetString("eve.repo")
117118
eveTag = viper.GetString("eve.tag")
119+
eveUefiTag = viper.GetString("eve.uefi-tag")
118120
eveHV = viper.GetString("eve.hv")
119121
eveArch = viper.GetString("eve.arch")
120122
qemuHostFwd = viper.GetStringMapString("eve.hostfwd")
@@ -202,7 +204,7 @@ var setupCmd = &cobra.Command{
202204
}
203205
} else {
204206
if _, err := os.Lstat(eveImageFile); os.IsNotExist(err) {
205-
if err := utils.DownloadEveLive(certsDir, eveImageFile, eveArch, eveHV, eveTag, imageFormat); err != nil {
207+
if err := utils.DownloadEveLive(certsDir, eveImageFile, eveArch, eveHV, eveTag, eveUefiTag, imageFormat); err != nil {
206208
log.Errorf("cannot download EVE: %s", err)
207209
} else {
208210
log.Infof("download EVE done: %s", eveImageFile)
@@ -240,6 +242,7 @@ func setupInit() {
240242
setupCmd.Flags().StringVarP(&eveDist, "eve-dist", "", filepath.Join(currentPath, defaults.DefaultDist, defaults.DefaultEVEDist), "directory to save EVE")
241243
setupCmd.Flags().StringVarP(&eveRepo, "eve-repo", "", defaults.DefaultEveRepo, "EVE repo")
242244
setupCmd.Flags().StringVarP(&eveTag, "eve-tag", "", defaults.DefaultEVETag, "EVE tag")
245+
setupCmd.Flags().StringVarP(&eveUefiTag, "eve-uefi-tag", "", defaults.DefaultEVETag, "EVE UEFI tag")
243246
setupCmd.Flags().StringVarP(&eveArch, "eve-arch", "", runtime.GOARCH, "EVE arch")
244247
setupCmd.Flags().StringToStringVarP(&qemuHostFwd, "eve-hostfwd", "", defaults.DefaultQemuHostFwd, "port forward map")
245248
setupCmd.Flags().StringVarP(&qemuFileToSave, "qemu-config", "", filepath.Join(currentPath, defaults.DefaultDist, defaults.DefaultQemuFileToSave), "file to save qemu config")

docs/eve-images.md

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ To generate the docker container with your image:
4343
1. Work in the `github.com/lf-edge/eve` directory
4444
1. Configure your code as desired
4545
1. Run `make eve`, optionally setting the desired hypervisor, e.g. `make eve HV=kvm` (recommended with eden)
46-
1. Run `make eve-uefi`.
4746

4847
When done, you will be provided with output telling you the docker image name and tag, e.g.
4948

@@ -53,15 +52,6 @@ Successfully tagged lfedge/eve:0.0.0-testbranch-b6a6d6fd-kvm-amd64
5352
Tagging lfedge/eve:0.0.0-testbranch-b6a6d6fd-kvm-amd64 as lfedge/eve:0.0.0-testbranch-b6a6d6fd-kvm
5453
```
5554

56-
And for `eve-uefi`:
57-
58-
```
59-
Tagging lfedge/eve-uefi:0.0.0-testbranch-b6a6d6fd-kvm-amd64 as lfedge/eve-uefi:0.0.0-testbranch-b6a6d6fd-kvm
60-
```
61-
62-
You need to run both `make eve` and `make eve-uefi` because eden uses the `--eve-tag` to look for both
63-
the eve image and the eve-uefi image.
64-
6555
Now, run eden setup, but tell eden to use the provided image:
6656

6757
```sh
@@ -83,6 +73,36 @@ eden setup
8373

8474
eden now will use the above container image to generate and configure the live disk image.
8575

76+
#### Changing UEFI
77+
78+
eden uses separate tags for `eve` and `eve-uefi`. This means that you can set the tag
79+
just for `eve`, while it will continue to use the default for `eve-uefi`. This helps with
80+
a development cycle where you are changing `eve`, but do not want to make changes to or rebuild
81+
`eve-uefi`.
82+
83+
On the other hand, you can make changes to `eve-uefi`, in addition to or independent of `eve`.
84+
85+
To run eden setup to use just a specific `eve-uefi` image, or both `eve` and `eve-uefi`:
86+
87+
```sh
88+
eden setup --eve-uefi-tag <uefi-tag>
89+
eden setup --eve-tag <tag> --eve-uefi-tag <uefi-tag>
90+
```
91+
92+
Continuing the above example:
93+
94+
```sh
95+
eden setup --eve-uefi-tag eve-uefi-special
96+
eden setup --eve-tag 0.0.0-testbranch-b6a6d6fd-kvm --eve-uefi-tag eve-uefi-special
97+
```
98+
99+
Or you can save it, by setting it in the file:
100+
101+
```console
102+
eden config set default --key eve.uefi-tag --value eve-uefi-special
103+
eden setup
104+
```
105+
86106
### Live Image
87107

88108
To generate the live image:

pkg/defaults/defaults.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ var (
139139
"eve.firmware": "eve-firmware",
140140
"eve.repo": "eve-repo",
141141
"eve.tag": "eve-tag",
142+
"eve.uefi-tag": "eve-uefi-tag",
142143
"eve.hostfwd": "eve-hostfwd",
143144
"eve.dist": "eve-dist",
144145
"eve.base-dist": "eve-base-dist",

pkg/utils/dowloaders.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,18 @@ package utils
22

33
import (
44
"fmt"
5-
"github.com/lf-edge/eden/pkg/defaults"
6-
log "github.com/sirupsen/logrus"
75
"os"
86
"path/filepath"
97
"strings"
108
"unicode"
9+
10+
"github.com/lf-edge/eden/pkg/defaults"
11+
log "github.com/sirupsen/logrus"
1112
)
1213

1314
//DownloadEveLive pulls EVE live image from docker
14-
func DownloadEveLive(configPath string, outputFile string, eveArch string, eveHV string, eveTag string, format string) (err error) {
15-
efiImage := fmt.Sprintf("lfedge/eve-uefi:%s-%s", eveTag, eveArch) //download OVMF
15+
func DownloadEveLive(configPath string, outputFile string, eveArch string, eveHV string, eveTag, eveUefiTag string, format string) (err error) {
16+
efiImage := fmt.Sprintf("lfedge/eve-uefi:%s-%s", eveUefiTag, eveArch) //download OVMF
1617
image := fmt.Sprintf("lfedge/eve:%s-%s-%s", eveTag, eveHV, eveArch)
1718
log.Debugf("Try ImagePull with (%s)", image)
1819
if err := PullImage(image); err != nil {

0 commit comments

Comments
 (0)