package container import ( "path" "github.com/pkg/errors" "github.com/warewulf/warewulf/internal/pkg/util" "github.com/warewulf/warewulf/internal/pkg/wwlog" ) func Build(name string, buildForce bool) error { rootfsPath := RootFsDir(name) imagePath := ImageFile(name) if !ValidSource(name) { return errors.Errorf("Container does not exist: %s", name) } if !buildForce { wwlog.Debug("Checking if there have been any updates to the VNFS directory") if util.PathIsNewer(rootfsPath, imagePath) { wwlog.Info("Skipping (VNFS is current)") return nil } } ignore := []string{} excludes_file := path.Join(rootfsPath, "./etc/warewulf/excludes") if util.IsFile(excludes_file) { var err error ignore, err = util.ReadFile(excludes_file) if err != nil { return errors.Wrapf(err, "Failed creating directory: %s", imagePath) } } err := util.BuildFsImage( "VNFS container "+name, rootfsPath, imagePath, []string{"*"}, ignore, // ignore cross-device files true, "newc") return err }