func buildSnap(c *check.C, snapDir, targetDir string) { helpers.ChDir(targetDir, func() error { // build in /var/tmp (which is not a tempfs) cli.ExecCommand(c, "sudo", "TMPDIR=/var/tmp", "snappy", "build", "--squashfs", snapDir) return nil }) }
// Build builds the snap. func (s *Snap) Build(buildDir string) error { fullSnapPath, err := filepath.Abs(s.path) if err != nil { return err } return helpers.ChDir(buildDir, func() error { return runCommand( "mksquashfs", ".", fullSnapPath, "-noappend", "-comp", "xz") }) }
func makeTestSnapPackageFullWithFiles(c *C, packageYamlContent string, makeLicense bool, files [][]string) (snapFile string) { tmpdir := c.MkDir() // content os.MkdirAll(filepath.Join(tmpdir, "bin"), 0755) content := `#!/bin/sh echo "hello"` exampleBinary := filepath.Join(tmpdir, "bin", "foo") ioutil.WriteFile(exampleBinary, []byte(content), 0755) // meta os.MkdirAll(filepath.Join(tmpdir, "meta"), 0755) packageYaml := filepath.Join(tmpdir, "meta", "package.yaml") if packageYamlContent == "" { packageYamlContent = ` name: foo version: 1.0 icon: foo.svg ` } ioutil.WriteFile(packageYaml, []byte(packageYamlContent), 0644) readmeMd := filepath.Join(tmpdir, "meta", "readme.md") content = "Random\nExample" err := ioutil.WriteFile(readmeMd, []byte(content), 0644) c.Assert(err, IsNil) if makeLicense { license := filepath.Join(tmpdir, "meta", "license.txt") content = "WTFPL" ioutil.WriteFile(license, []byte(content), 0644) } for _, filenameAndContent := range files { filename := filenameAndContent[0] content := filenameAndContent[1] err = ioutil.WriteFile(filepath.Join(tmpdir, filename), []byte(content), 0644) c.Assert(err, IsNil) } // build it err = helpers.ChDir(tmpdir, func() error { var err error snapFile, err = snapBuilderFunc(tmpdir, "") c.Assert(err, IsNil) return err }) c.Assert(err, IsNil) return filepath.Join(tmpdir, snapFile) }