// MakeTestSnapWithFiles makes a squashfs snap file with the given // snap.yaml content and optional extras files specified as pairs of // relative file path and its content. func MakeTestSnapWithFiles(c *check.C, snapYamlContent string, files [][]string) (snapFilePath string) { tmpdir := c.MkDir() snapSource := filepath.Join(tmpdir, "snapsrc") err := os.MkdirAll(filepath.Join(snapSource, "meta"), 0755) if err != nil { panic(err) } snapYamlFn := filepath.Join(snapSource, "meta", "snap.yaml") err = ioutil.WriteFile(snapYamlFn, []byte(snapYamlContent), 0644) if err != nil { panic(err) } PopulateDir(snapSource, files) err = osutil.ChDir(snapSource, func() error { var err error snapFilePath, err = BuildSquashfsSnap(snapSource, "") return err }) if err != nil { panic(err) } return filepath.Join(snapSource, snapFilePath) }
// Build builds the snap. func (s *Snap) Build(buildDir string) error { fullSnapPath, err := filepath.Abs(s.path) if err != nil { return err } return osutil.ChDir(buildDir, func() error { return runCommand( "mksquashfs", ".", fullSnapPath, "-noappend", "-comp", "xz", "-no-xattrs", ) }) }