// BuildLegacySnap the given sourceDirectory and return the generated snap file func BuildLegacySnap(sourceDir, targetDir string) (string, error) { // create build dir buildDir, err := ioutil.TempDir("", "snappy-build-") if err != nil { return "", err } defer os.RemoveAll(buildDir) snapName, err := prepare(sourceDir, targetDir, buildDir) if err != nil { return "", err } d, err := clickdeb.Create(snapName) if err != nil { return "", err } defer d.Close() err = d.Build(buildDir, func(dataTar string) error { // write hashes of the files plus the generated data tar return writeHashes(buildDir, dataTar) }) if err != nil { return "", err } return snapName, nil }
func (s *SnapTestSuite) TestInstallChecksForClashes(c *C) { // creating the thing by hand (as build refuses to)... tmpdir := c.MkDir() os.MkdirAll(filepath.Join(tmpdir, "meta"), 0755) yaml := []byte(`name: hello version: 1.0.1 services: - name: foo binaries: - name: foo `) yamlFile := filepath.Join(tmpdir, "meta", "package.yaml") c.Assert(ioutil.WriteFile(yamlFile, yaml, 0644), IsNil) readmeMd := filepath.Join(tmpdir, "meta", "readme.md") c.Assert(ioutil.WriteFile(readmeMd, []byte("blah\nx"), 0644), IsNil) m, err := parsePackageYamlData(yaml, false) c.Assert(err, IsNil) c.Assert(writeDebianControl(tmpdir, m), IsNil) c.Assert(writeClickManifest(tmpdir, m), IsNil) snapName := fmt.Sprintf("%s_%s_all.snap", m.Name, m.Version) d, err := clickdeb.Create(snapName) c.Assert(err, IsNil) defer d.Close() c.Assert(d.Build(tmpdir, func(dataTar string) error { return writeHashes(tmpdir, dataTar) }), IsNil) _, err = installClick(snapName, 0, nil, testOrigin) c.Assert(err, ErrorMatches, ".*binary and service both called foo.*") }
func (s *SnapTestSuite) buildFramework(c *C) string { allSystemctl := []string{} systemd.SystemctlCmd = func(cmd ...string) ([]byte, error) { allSystemctl = append(allSystemctl, cmd[0]) return nil, nil } tmpdir := c.MkDir() appg := filepath.Join(tmpdir, "meta", "framework-policy", "apparmor", "policygroups") c.Assert(os.MkdirAll(appg, 0755), IsNil) c.Assert(ioutil.WriteFile(filepath.Join(appg, "one"), []byte("hello"), 0644), IsNil) yaml := []byte(`name: hello version: 1.0.1 type: framework `) yamlFile := filepath.Join(tmpdir, "meta", "package.yaml") c.Assert(ioutil.WriteFile(yamlFile, yaml, 0644), IsNil) readmeMd := filepath.Join(tmpdir, "meta", "readme.md") c.Assert(ioutil.WriteFile(readmeMd, []byte("blah\nx"), 0644), IsNil) m, err := parsePackageYamlData(yaml, false) c.Assert(err, IsNil) c.Assert(writeDebianControl(tmpdir, m), IsNil) c.Assert(writeClickManifest(tmpdir, m), IsNil) snapName := fmt.Sprintf("%s_%s_all.snap", m.Name, m.Version) d, err := clickdeb.Create(snapName) c.Assert(err, IsNil) defer d.Close() c.Assert(d.Build(tmpdir, func(dataTar string) error { return writeHashes(tmpdir, dataTar) }), IsNil) _, err = installClick(snapName, 0, nil, testOrigin) c.Assert(err, IsNil) return snapName }