in newt/pkg/localpackage.go [284:373]
func (pkg *LocalPackage) Load() error {
var err error
pkg.PkgY, err = config.ReadFile(pkg.PkgYamlPath())
if err != nil {
return err
}
pkg.AddCfgFilename(pkg.PkgYamlPath())
// Set package name from the package
pkg.name, err = pkg.PkgY.GetValString("pkg.name", nil)
util.OneTimeWarningError(err)
if pkg.name == "" {
return util.FmtNewtError(
"Package \"%s\" missing \"pkg.name\" field in its `pkg.yml` file",
pkg.basePath)
}
if !matchNamePath(pkg.name, pkg.basePath) {
return util.FmtNewtError(
"Package \"%s\" has incorrect \"pkg.name\" field in its "+
"`pkg.yml` file (pkg.name=%s)", pkg.basePath, pkg.name)
}
typeString, err := pkg.PkgY.GetValString("pkg.type", nil)
util.OneTimeWarningError(err)
pkg.packageType = PACKAGE_TYPE_LIB
if len(typeString) > 0 {
found := false
for t, n := range PackageTypeNames {
if typeString == n {
pkg.packageType = t
found = true
break
}
}
if !found {
return util.FmtNewtError(
"Package \"%s\" has incorrect \"pkg.type\" field in its "+
"`pkg.yml` file (pkg.type=%s)", pkg.basePath, typeString)
}
}
if pkg.packageType == PACKAGE_TYPE_TRANSIENT {
n, err := pkg.PkgY.GetValString("pkg.link", nil)
util.OneTimeWarningError(err)
if len(n) == 0 {
return util.FmtNewtError(
"Transient package \"%s\" does not specify target "+
"package in its `pkg.yml` file (pkg.name=%s)",
pkg.basePath, pkg.name)
}
pkg.linkedName = n
// We don't really want anything else for this package
return nil
}
subPriority, err := pkg.PkgY.GetValInt("pkg.subpriority", nil)
util.OneTimeWarningError(err)
if subPriority >= PACKAGE_SUBPRIO_NUM {
return util.FmtNewtError(
"Package \"%s\" subpriority value \"%d\" is out of range (0 - \"%d\")",
pkg.basePath, subPriority, PACKAGE_SUBPRIO_NUM-1)
}
if subPriority > 0 && pkg.packageType >= PACKAGE_TYPE_BSP {
return util.FmtNewtError(
"Package \"%s\" of type \"%s\" does not support subpriorities",
pkg.basePath, typeString)
}
pkg.subPriority = subPriority
// Read the package description from the file
pkg.desc, err = pkg.readDesc(pkg.PkgY)
if err != nil {
return err
}
// Load syscfg settings.
pkg.SyscfgY, err = config.ReadFile(pkg.SyscfgYamlPath())
if err != nil && !util.IsNotExist(err) {
return err
}
pkg.AddCfgFilename(pkg.SyscfgYamlPath())
return nil
}