Index: head/sysutils/docker/Makefile =================================================================== --- head/sysutils/docker/Makefile (revision 458001) +++ head/sysutils/docker/Makefile (revision 458002) @@ -1,28 +1,28 @@ # Created by: Nikolai Lifanov # $FreeBSD$ PORTNAME= docker -PORTVERSION= 17.06.1 +PORTVERSION= 17.12.0 DISTVERSIONPREFIX= v DISTVERSIONSUFFIX= -ce CATEGORIES= sysutils MAINTAINER= lifanov@FreeBSD.org COMMENT= Open-source application container engine LICENSE= APACHE20 PLIST_FILES= bin/docker USE_GITHUB= yes GH_PROJECT= docker-ce USES= go GO_PKGNAME= github.com/${PORTNAME} GO_TARGET= ${GO_PKGNAME}/cli/cmd/docker pre-build: @${MV} ${GO_WRKSRC}/components/* ${GO_WRKSRC}/ .include Index: head/sysutils/docker/distinfo =================================================================== --- head/sysutils/docker/distinfo (revision 458001) +++ head/sysutils/docker/distinfo (revision 458002) @@ -1,3 +1,3 @@ -TIMESTAMP = 1503236000 -SHA256 (docker-docker-ce-v17.06.1-ce_GH0.tar.gz) = 2ca8615162873b32d9565f95a4b2977d025fd44c69e087046e004f5dfb1ce30c -SIZE (docker-docker-ce-v17.06.1-ce_GH0.tar.gz) = 9682381 +TIMESTAMP = 1515007414 +SHA256 (docker-docker-ce-v17.12.0-ce_GH0.tar.gz) = 945e3eb62e35e9399983a956299bbbf878442c5a164262ed82b7aa7366731a83 +SIZE (docker-docker-ce-v17.12.0-ce_GH0.tar.gz) = 11011208 Index: head/sysutils/docker/files/patch-components_cli_cli_config_credentials_default__store__freebsd.go =================================================================== --- head/sysutils/docker/files/patch-components_cli_cli_config_credentials_default__store__freebsd.go (nonexistent) +++ head/sysutils/docker/files/patch-components_cli_cli_config_credentials_default__store__freebsd.go (revision 458002) @@ -0,0 +1,16 @@ +--- components/cli/cli/config/credentials/default_store_freebsd.go.orig 2018-01-03 19:51:59 UTC ++++ components/cli/cli/config/credentials/default_store_freebsd.go +@@ -0,0 +1,13 @@ ++package credentials ++ ++import ( ++ "github.com/docker/docker-credential-helpers/pass" ++) ++ ++func defaultCredentialsStore() string { ++ if pass.PassInitialized { ++ return "pass" ++ } ++ ++ return "secretservice" ++} Property changes on: head/sysutils/docker/files/patch-components_cli_cli_config_credentials_default__store__freebsd.go ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/sysutils/docker/files/patch-components_cli_cli_config_credentials_default__store__unsupported.go =================================================================== --- head/sysutils/docker/files/patch-components_cli_cli_config_credentials_default__store__unsupported.go (nonexistent) +++ head/sysutils/docker/files/patch-components_cli_cli_config_credentials_default__store__unsupported.go (revision 458002) @@ -0,0 +1,8 @@ +--- components/cli/cli/config/credentials/default_store_unsupported.go.orig 2017-12-27 17:03:35 UTC ++++ components/cli/cli/config/credentials/default_store_unsupported.go +@@ -1,4 +1,4 @@ +-// +build !windows,!darwin,!linux ++// +build !windows,!darwin,!linux,!freebsd + + package credentials + Property changes on: head/sysutils/docker/files/patch-components_cli_cli_config_credentials_default__store__unsupported.go ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/sysutils/docker/files/patch-components_cli_vendor_github.com_docker_docker-credential-helpers_pass_pass__freebsd.go =================================================================== --- head/sysutils/docker/files/patch-components_cli_vendor_github.com_docker_docker-credential-helpers_pass_pass__freebsd.go (nonexistent) +++ head/sysutils/docker/files/patch-components_cli_vendor_github.com_docker_docker-credential-helpers_pass_pass__freebsd.go (revision 458002) @@ -0,0 +1,211 @@ +--- components/cli/vendor/github.com/docker/docker-credential-helpers/pass/pass_freebsd.go.orig 2018-01-03 19:51:59 UTC ++++ components/cli/vendor/github.com/docker/docker-credential-helpers/pass/pass_freebsd.go +@@ -0,0 +1,208 @@ ++// A `pass` based credential helper. Passwords are stored as arguments to pass ++// of the form: "$PASS_FOLDER/base64-url(serverURL)/username". We base64-url ++// encode the serverURL, because under the hood pass uses files and folders, so ++// /s will get translated into additional folders. ++package pass ++ ++import ( ++ "encoding/base64" ++ "errors" ++ "fmt" ++ "io/ioutil" ++ "os" ++ "os/exec" ++ "path" ++ "strings" ++ ++ "github.com/docker/docker-credential-helpers/credentials" ++) ++ ++const PASS_FOLDER = "docker-credential-helpers" ++ ++var ( ++ PassInitialized bool ++) ++ ++func init() { ++ PassInitialized = exec.Command("pass").Run() == nil ++} ++ ++func runPass(stdinContent string, args ...string) (string, error) { ++ cmd := exec.Command("pass", args...) ++ ++ stdin, err := cmd.StdinPipe() ++ if err != nil { ++ return "", err ++ } ++ defer stdin.Close() ++ ++ stderr, err := cmd.StderrPipe() ++ if err != nil { ++ return "", err ++ } ++ defer stderr.Close() ++ ++ stdout, err := cmd.StdoutPipe() ++ if err != nil { ++ return "", err ++ } ++ defer stdout.Close() ++ ++ err = cmd.Start() ++ if err != nil { ++ return "", err ++ } ++ ++ _, err = stdin.Write([]byte(stdinContent)) ++ if err != nil { ++ return "", err ++ } ++ stdin.Close() ++ ++ errContent, err := ioutil.ReadAll(stderr) ++ if err != nil { ++ return "", fmt.Errorf("error reading stderr: %s", err) ++ } ++ ++ result, err := ioutil.ReadAll(stdout) ++ if err != nil { ++ return "", fmt.Errorf("Error reading stdout: %s", err) ++ } ++ ++ cmdErr := cmd.Wait() ++ if cmdErr != nil { ++ return "", fmt.Errorf("%s: %s", cmdErr, errContent) ++ } ++ ++ return string(result), nil ++} ++ ++// Pass handles secrets using Linux secret-service as a store. ++type Pass struct{} ++ ++// Add adds new credentials to the keychain. ++func (h Pass) Add(creds *credentials.Credentials) error { ++ if !PassInitialized { ++ return errors.New("pass store is uninitialized") ++ } ++ ++ if creds == nil { ++ return errors.New("missing credentials") ++ } ++ ++ encoded := base64.URLEncoding.EncodeToString([]byte(creds.ServerURL)) ++ ++ _, err := runPass(creds.Secret, "insert", "-f", "-m", path.Join(PASS_FOLDER, encoded, creds.Username)) ++ return err ++} ++ ++// Delete removes credentials from the store. ++func (h Pass) Delete(serverURL string) error { ++ if !PassInitialized { ++ return errors.New("pass store is uninitialized") ++ } ++ ++ if serverURL == "" { ++ return errors.New("missing server url") ++ } ++ ++ encoded := base64.URLEncoding.EncodeToString([]byte(serverURL)) ++ _, err := runPass("", "rm", "-rf", path.Join(PASS_FOLDER, encoded)) ++ return err ++} ++ ++// listPassDir lists all the contents of a directory in the password store. ++// Pass uses fancy unicode to emit stuff to stdout, so rather than try ++// and parse this, let's just look at the directory structure instead. ++func listPassDir(args ...string) ([]os.FileInfo, error) { ++ passDir := os.ExpandEnv("$HOME/.password-store") ++ for _, e := range os.Environ() { ++ parts := strings.SplitN(e, "=", 2) ++ if len(parts) < 2 { ++ continue ++ } ++ ++ if parts[0] != "PASSWORD_STORE_DIR" { ++ continue ++ } ++ ++ passDir = parts[1] ++ break ++ } ++ ++ p := path.Join(append([]string{passDir, PASS_FOLDER}, args...)...) ++ contents, err := ioutil.ReadDir(p) ++ if err != nil { ++ if os.IsNotExist(err) { ++ return []os.FileInfo{}, nil ++ } ++ ++ return nil, err ++ } ++ ++ return contents, nil ++} ++ ++// Get returns the username and secret to use for a given registry server URL. ++func (h Pass) Get(serverURL string) (string, string, error) { ++ if !PassInitialized { ++ return "", "", errors.New("pass store is uninitialized") ++ } ++ ++ if serverURL == "" { ++ return "", "", errors.New("missing server url") ++ } ++ ++ encoded := base64.URLEncoding.EncodeToString([]byte(serverURL)) ++ ++ usernames, err := listPassDir(encoded) ++ if err != nil { ++ return "", "", err ++ } ++ ++ if len(usernames) < 1 { ++ return "", "", fmt.Errorf("no usernames for %s", serverURL) ++ } ++ ++ actual := strings.TrimSuffix(usernames[0].Name(), ".gpg") ++ secret, err := runPass("", "show", path.Join(PASS_FOLDER, encoded, actual)) ++ return actual, secret, err ++} ++ ++// List returns the stored URLs and corresponding usernames for a given credentials label ++func (h Pass) List() (map[string]string, error) { ++ if !PassInitialized { ++ return nil, errors.New("pass store is uninitialized") ++ } ++ ++ servers, err := listPassDir() ++ if err != nil { ++ return nil, err ++ } ++ ++ resp := map[string]string{} ++ ++ for _, server := range servers { ++ if !server.IsDir() { ++ continue ++ } ++ ++ serverURL, err := base64.URLEncoding.DecodeString(server.Name()) ++ if err != nil { ++ return nil, err ++ } ++ ++ usernames, err := listPassDir(server.Name()) ++ if err != nil { ++ return nil, err ++ } ++ ++ if len(usernames) < 1 { ++ return nil, fmt.Errorf("no usernames for %s", serverURL) ++ } ++ ++ resp[string(serverURL)] = strings.TrimSuffix(usernames[0].Name(), ".gpg") ++ } ++ ++ return resp, nil ++} Property changes on: head/sysutils/docker/files/patch-components_cli_vendor_github.com_docker_docker-credential-helpers_pass_pass__freebsd.go ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/sysutils/docker/files/patch-components_cli_vendor_github.com_docker_docker_pkg_archive_archive__unix.go =================================================================== --- head/sysutils/docker/files/patch-components_cli_vendor_github.com_docker_docker_pkg_archive_archive__unix.go (nonexistent) +++ head/sysutils/docker/files/patch-components_cli_vendor_github.com_docker_docker_pkg_archive_archive__unix.go (revision 458002) @@ -0,0 +1,11 @@ +--- components/cli/vendor/github.com/docker/docker/pkg/archive/archive_unix.go.orig 2017-12-27 17:03:35 UTC ++++ components/cli/vendor/github.com/docker/docker/pkg/archive/archive_unix.go +@@ -62,7 +62,7 @@ func getInodeFromStat(stat interface{}) (inode uint64, + s, ok := stat.(*syscall.Stat_t) + + if ok { +- inode = s.Ino ++ inode = uint64(s.Ino) + } + + return Property changes on: head/sysutils/docker/files/patch-components_cli_vendor_github.com_docker_docker_pkg_archive_archive__unix.go ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/sysutils/docker/files/patch-components_cli_vendor_github.com_docker_docker_pkg_archive_changes__unix.go =================================================================== --- head/sysutils/docker/files/patch-components_cli_vendor_github.com_docker_docker_pkg_archive_changes__unix.go (nonexistent) +++ head/sysutils/docker/files/patch-components_cli_vendor_github.com_docker_docker_pkg_archive_changes__unix.go (revision 458002) @@ -0,0 +1,11 @@ +--- components/cli/vendor/github.com/docker/docker/pkg/archive/changes_unix.go.orig 2017-12-27 17:03:35 UTC ++++ components/cli/vendor/github.com/docker/docker/pkg/archive/changes_unix.go +@@ -29,7 +29,7 @@ func (info *FileInfo) isDir() bool { + } + + func getIno(fi os.FileInfo) uint64 { +- return fi.Sys().(*syscall.Stat_t).Ino ++ return uint64(fi.Sys().(*syscall.Stat_t).Ino) + } + + func hasHardlinks(fi os.FileInfo) bool { Property changes on: head/sysutils/docker/files/patch-components_cli_vendor_github.com_docker_docker_pkg_archive_changes__unix.go ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/sysutils/docker/files/patch-components_cli_vendor_github.com_tonistiigi_fsutil_diskwriter__freebsd.go =================================================================== --- head/sysutils/docker/files/patch-components_cli_vendor_github.com_tonistiigi_fsutil_diskwriter__freebsd.go (nonexistent) +++ head/sysutils/docker/files/patch-components_cli_vendor_github.com_tonistiigi_fsutil_diskwriter__freebsd.go (revision 458002) @@ -0,0 +1,23 @@ +--- components/cli/vendor/github.com/tonistiigi/fsutil/diskwriter_freebsd.go.orig 2018-01-03 19:54:52 UTC ++++ components/cli/vendor/github.com/tonistiigi/fsutil/diskwriter_freebsd.go +@@ -0,0 +1,20 @@ ++// +build freebsd ++ ++package fsutil ++ ++import ( ++ "github.com/pkg/errors" ++ "golang.org/x/sys/unix" ++) ++ ++func chtimes(path string, un int64) error { ++ var utimes [2]unix.Timespec ++ utimes[0] = unix.NsecToTimespec(un) ++ utimes[1] = utimes[0] ++ ++ if err := unix.UtimesNanoAt(unix.AT_FDCWD, path, utimes[0:], unix.AT_SYMLINK_NOFOLLOW); err != nil { ++ return errors.Wrap(err, "failed call to UtimesNanoAt") ++ } ++ ++ return nil ++} Property changes on: head/sysutils/docker/files/patch-components_cli_vendor_github.com_tonistiigi_fsutil_diskwriter__freebsd.go ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/sysutils/docker/files/patch-components_cli_vendor_github.com_tonistiigi_fsutil_walker__unix.go =================================================================== --- head/sysutils/docker/files/patch-components_cli_vendor_github.com_tonistiigi_fsutil_walker__unix.go (nonexistent) +++ head/sysutils/docker/files/patch-components_cli_vendor_github.com_tonistiigi_fsutil_walker__unix.go (revision 458002) @@ -0,0 +1,11 @@ +--- components/cli/vendor/github.com/tonistiigi/fsutil/walker_unix.go.orig 2018-01-03 19:53:04 UTC ++++ components/cli/vendor/github.com/tonistiigi/fsutil/walker_unix.go +@@ -41,7 +41,7 @@ func setUnixOpt(fi os.FileInfo, stat *Stat, path strin + stat.Devminor = int64(minor(uint64(s.Rdev))) + } + +- ino := s.Ino ++ ino := uint64(s.Ino) + if s.Nlink > 1 { + if oldpath, ok := seenFiles[ino]; ok { + stat.Linkname = oldpath Property changes on: head/sysutils/docker/files/patch-components_cli_vendor_github.com_tonistiigi_fsutil_walker__unix.go ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property