github.com/canonical/ubuntu-image@v0.0.0-20240430122802-2202fe98b290/internal/statemachine/pack_states.go (about) 1 package statemachine 2 3 import ( 4 "fmt" 5 "os" 6 "path/filepath" 7 ) 8 9 var preparePackState = stateFunc{"prepare_pack", (*StateMachine).preparePack} 10 11 // preparePack prepare the packStateMachine 12 // This step must be run first 13 func (stateMachine *StateMachine) preparePack() error { 14 packStateMachine := stateMachine.parent.(*PackStateMachine) 15 16 packStateMachine.YamlFilePath = filepath.Join(packStateMachine.Opts.GadgetDir, gadgetYamlPathInTree) 17 18 return nil 19 } 20 21 var populateTemporaryDirectoriesState = stateFunc{"populate_temporary_directories", (*StateMachine).populateTemporaryDirectories} 22 23 // populateTemporaryDirectories fills tempDirs with dirs given as Opts 24 func (stateMachine *StateMachine) populateTemporaryDirectories() error { 25 packStateMachine := stateMachine.parent.(*PackStateMachine) 26 27 files, err := osReadDir(packStateMachine.Opts.RootfsDir) 28 if err != nil { 29 return fmt.Errorf("Error reading rootfs dir: %s", err.Error()) 30 } 31 32 for _, srcFile := range files { 33 srcFile := filepath.Join(packStateMachine.Opts.RootfsDir, srcFile.Name()) 34 if err := osutilCopySpecialFile(srcFile, stateMachine.tempDirs.rootfs); err != nil { 35 return fmt.Errorf("Error copying rootfs: %s", err.Error()) 36 } 37 } 38 39 // make the gadget directory under unpack 40 gadgetDir := filepath.Join(stateMachine.tempDirs.unpack, "gadget") 41 42 err = osMkdir(gadgetDir, 0755) 43 if err != nil && !os.IsExist(err) { 44 return fmt.Errorf("Error creating scratch/gadget directory: %s", err.Error()) 45 } 46 47 gfiles, err := osReadDir(packStateMachine.Opts.GadgetDir) 48 if err != nil { 49 return fmt.Errorf("Error reading gadget dir: %s", err.Error()) 50 } 51 52 for _, srcFile := range gfiles { 53 srcFile := filepath.Join(packStateMachine.Opts.GadgetDir, srcFile.Name()) 54 if err := osutilCopySpecialFile(srcFile, gadgetDir); err != nil { 55 return fmt.Errorf("Error copying gadget: %s", err.Error()) 56 } 57 } 58 59 return nil 60 }