Add darwin support for remote-client

Add the ability to cross-compile podman remote for OSX.

Also, add image exists and tag to remote-client.

Signed-off-by: baude <bbaude@redhat.com>
This commit is contained in:
baude
2019-01-10 12:15:33 -06:00
parent 28c35cab87
commit 43c6da22b9
14 changed files with 126 additions and 42 deletions

View File

@@ -5,6 +5,7 @@ import (
"github.com/containers/libpod/cmd/podman/libpodruntime"
"github.com/containers/libpod/libpod"
"github.com/containers/libpod/libpod/adapter"
"github.com/containers/libpod/libpod/image"
"github.com/pkg/errors"
"github.com/urfave/cli"
@@ -66,13 +67,15 @@ func imageExistsCmd(c *cli.Context) error {
if len(args) > 1 || len(args) < 1 {
return errors.New("you may only check for the existence of one image at a time")
}
runtime, err := libpodruntime.GetRuntime(c)
localRuntime, err := adapter.GetRuntime(c)
if err != nil {
return errors.Wrapf(err, "could not get runtime")
}
defer runtime.Shutdown(false)
if _, err := runtime.ImageRuntime().NewFromLocal(args[0]); err != nil {
if errors.Cause(err) == image.ErrNoSuchImage {
defer localRuntime.Runtime.Shutdown(false)
if _, err := localRuntime.NewImageFromLocal(args[0]); err != nil {
//TODO we need to ask about having varlink defined errors exposed
//so we can reuse them
if errors.Cause(err) == image.ErrNoSuchImage || err.Error() == "io.podman.ImageNotFound" {
os.Exit(1)
}
return err

View File

@@ -120,7 +120,7 @@ func main() {
os.Exit(1)
}
args := c.Args()
if args.Present() {
if args.Present() && rootless.IsRootless() {
if _, notRequireRootless := cmdsNotRequiringRootless[args.First()]; !notRequireRootless {
became, ret, err := rootless.BecomeRootInUserNS()
if err != nil {
@@ -265,11 +265,10 @@ func main() {
Usage: "output logging information to syslog as well as the console",
},
}
if _, err := os.Stat("/etc/containers/registries.conf"); err != nil {
if os.IsNotExist(err) {
logrus.Warn("unable to find /etc/containers/registries.conf. some podman (image shortnames) commands may be limited")
}
}
// Check if /etc/containers/registries.conf exists when running in
// in a local environment.
CheckForRegistries()
if err := app.Run(os.Args); err != nil {
if debug {
logrus.Errorf(err.Error())

View File

@@ -0,0 +1,17 @@
// +build linux
package main
import (
"os"
"github.com/sirupsen/logrus"
)
func CheckForRegistries() {
if _, err := os.Stat("/etc/containers/registries.conf"); err != nil {
if os.IsNotExist(err) {
logrus.Warn("unable to find /etc/containers/registries.conf. some podman (image shortnames) commands may be limited")
}
}
}

View File

@@ -0,0 +1,6 @@
// +build !linux
package main
func CheckForRegistries() {
}

View File

@@ -1,7 +1,7 @@
package main
import (
"github.com/containers/libpod/cmd/podman/libpodruntime"
"github.com/containers/libpod/libpod/adapter"
"github.com/pkg/errors"
"github.com/urfave/cli"
)
@@ -23,13 +23,13 @@ func tagCmd(c *cli.Context) error {
if len(args) < 2 {
return errors.Errorf("image name and at least one new name must be specified")
}
runtime, err := libpodruntime.GetRuntime(c)
localRuntime, err := adapter.GetRuntime(c)
if err != nil {
return errors.Wrapf(err, "could not create runtime")
}
defer runtime.Shutdown(false)
defer localRuntime.Runtime.Shutdown(false)
newImage, err := runtime.ImageRuntime().NewFromLocal(args[0])
newImage, err := localRuntime.NewImageFromLocal(args[0])
if err != nil {
return err
}