// CanInstall checks whether the Snap passes a series of tests required for installation func canInstall(s *snap.Info, snapf snap.File, curInfo *snap.Info, allowGadget bool, inter interacter) error { // verify we have a valid architecture if !arch.IsSupportedArchitecture(s.Architectures) { return &ErrArchitectureNotSupported{s.Architectures} } if s.Type == snap.TypeGadget { if !allowGadget { if currentGadget, err := getGadget(); err == nil { if currentGadget.Name() != s.Name() { return ErrGadgetPackageInstall } } else { // there should always be a gadget package now return ErrGadgetPackageInstall } } } if err := checkLicenseAgreement(s, snapf, curInfo, inter); err != nil { return err } return nil }
// CanInstall checks whether the SnapPart passes a series of tests required for installation func canInstall(s *SnapFile, allowGadget bool, inter interacter) error { if err := checkForPackageInstalled(s.m, s.Origin()); err != nil { return err } // verify we have a valid architecture if !arch.IsSupportedArchitecture(s.m.Architectures) { return &ErrArchitectureNotSupported{s.m.Architectures} } if err := checkForFrameworks(s.m); err != nil { return err } if s.Type() == snap.TypeGadget { if !allowGadget { if currentGadget, err := getGadget(); err == nil { if currentGadget.Name != s.Name() { return ErrGadgetPackageInstall } } else { // there should always be a gadget package now return ErrGadgetPackageInstall } } } curr, _ := filepath.EvalSymlinks(filepath.Join(s.instdir, "..", "current")) if err := checkLicenseAgreement(s.m, inter, s.deb, curr); err != nil { return err } return nil }
// CanInstall checks whether the SnapPart passes a series of tests required for installation func (s *SnapPart) CanInstall(allowOEM bool, inter interacter) error { if s.IsInstalled() { return ErrAlreadyInstalled } if err := s.m.checkForPackageInstalled(s.Origin()); err != nil { return err } // verify we have a valid architecture if !arch.IsSupportedArchitecture(s.m.Architectures) { return &ErrArchitectureNotSupported{s.m.Architectures} } if err := s.m.checkForNameClashes(); err != nil { return err } if err := s.m.checkForFrameworks(); err != nil { return err } if s.Type() == pkg.TypeOem { if !allowOEM { if currentOEM, err := getOem(); err == nil { if currentOEM.Name != s.Name() { return ErrOEMPackageInstall } } else { // there should always be an oem package now return ErrOEMPackageInstall } } } curr, _ := filepath.EvalSymlinks(filepath.Join(s.basedir, "..", "current")) if err := s.m.checkLicenseAgreement(inter, s.deb, curr); err != nil { return err } return nil }