package libpod import ( "github.com/containers/podman/v5/pkg/parallel" "os" "runtime" "strings" "github.com/containers/podman/v5/cmd/podman/registry" "github.com/containers/podman/v5/pkg/domain/entities" "github.com/sirupsen/logrus" "github.com/spf13/cobra" ) var ( defaultLogLevel = "warn" logLevel = defaultLogLevel dockerConfig = "" debug bool noStdout = false useStdout = "" ) func persistentPreRunE(cmd *cobra.Command, args []string) error { logrus.Infof("Called %s.PersistentPreRunE(%s)", cmd.Name(), strings.Join(os.Args, " ")) podmanConfig := registry.PodmanConfig() c := &cobra.Command{} if _, err := registry.NewImageEngine(c, args); err != nil { return err } if _, err := registry.NewContainerEngine(c, args); err != nil { return err } if _, ok := os.LookupEnv("TMPDIR"); !ok { if tmpdir, err := podmanConfig.ContainersConfDefaultsRO.ImageCopyTmpDir(); err != nil { logrus.Warnf("Failed to retrieve default tmp dir: %s", err.Error()) } else { os.Setenv("TMPDIR", tmpdir) } } _, found := c.Annotations[registry.ParentNSRequired] if !registry.IsRemote() && !found { cgroupMode := "" _, noMoveProcess := c.Annotations[registry.NoMoveProcess] if flag := c.LocalFlags().Lookup("cgroups"); flag != nil { cgroupMode = flag.Value.String() } err := registry.ContainerEngine().SetupRootless(registry.Context(), noMoveProcess, cgroupMode) if err != nil { return err } } return nil } func setupRuntime(podmanConfig *entities.PodmanConfig) { podmanConfig.ContainersConf.Engine.DBBackend = podmanConfig.ContainersConfDefaultsRO.Engine.DBBackend podmanConfig.ContainersConf.Engine.CgroupManager = podmanConfig.ContainersConfDefaultsRO.Engine.CgroupManager podmanConfig.ContainersConf.Engine.NetworkCmdPath = podmanConfig.ContainersConfDefaultsRO.Engine.NetworkCmdPath podmanConfig.ContainersConf.Network.NetworkConfigDir = podmanConfig.ContainersConfDefaultsRO.Network.NetworkConfigDir podmanConfig.ContainersConf.Containers.DefaultMountsFile = podmanConfig.ContainersConfDefaultsRO.Containers.DefaultMountsFile podmanConfig.ContainersConf.Engine.EventsLogger = podmanConfig.ContainersConfDefaultsRO.Engine.EventsLogger podmanConfig.MaxWorks = (runtime.NumCPU() * 3) + 1 podmanConfig.ContainersConf.Engine.Namespace = podmanConfig.ContainersConfDefaultsRO.Engine.Namespace podmanConfig.ContainersConf.Network.NetworkBackend = podmanConfig.ContainersConfDefaultsRO.Network.NetworkBackend podmanConfig.RuntimePath = "youki" podmanConfig.ContainersConf.Engine.TmpDir = podmanConfig.ContainersConfDefaultsRO.Engine.TmpDir podmanConfig.Trace = true podmanConfig.ContainersConf.Engine.VolumePath = podmanConfig.ContainersConfDefaultsRO.Engine.VolumePath parallel.SetMaxThreads(uint(podmanConfig.MaxWorks)) }