Quellcode durchsuchen

Merge remote-tracking branch 'upstream/master'

Alin Voinea vor 8 Jahren
Ursprung
Commit
61a88ef14b
65 geänderte Dateien mit 1385 neuen und 369 gelöschten Zeilen
  1. 1 1
      README.md
  2. 36 17
      bashbrew/Dockerfile.release
  3. 1 1
      bashbrew/go/src/bashbrew/cmd-build.go
  4. 34 11
      bashbrew/go/src/bashbrew/cmd-deps.go
  5. 46 0
      bashbrew/go/src/bashbrew/cmd-put-shared.go
  6. 7 0
      bashbrew/go/src/bashbrew/config.go
  7. 4 4
      bashbrew/go/src/bashbrew/docker.go
  8. 20 17
      bashbrew/go/src/bashbrew/git.go
  9. 28 0
      bashbrew/go/src/bashbrew/main.go
  10. 9 0
      bashbrew/go/src/bashbrew/repo.go
  11. 3 0
      bashbrew/go/src/bashbrew/sort.go
  12. 1 1
      bashbrew/go/vendor/manifest
  13. 5 0
      bashbrew/go/vendor/src/github.com/docker-library/go-dockerlibrary/README.md
  14. 0 67
      bashbrew/go/vendor/src/github.com/docker-library/go-dockerlibrary/manifest/example.go
  15. 192 0
      bashbrew/go/vendor/src/github.com/docker-library/go-dockerlibrary/manifest/example_test.go
  16. 20 0
      bashbrew/go/vendor/src/github.com/docker-library/go-dockerlibrary/manifest/parse_test.go
  17. 259 7
      bashbrew/go/vendor/src/github.com/docker-library/go-dockerlibrary/manifest/rfc2822.go
  18. 38 0
      bashbrew/go/vendor/src/github.com/docker-library/go-dockerlibrary/manifest/testdata/bash
  19. 26 0
      bashbrew/go/vendor/src/github.com/docker-library/go-dockerlibrary/pkg/execpipe/execpipe_example_test.go
  20. 31 0
      bashbrew/go/vendor/src/github.com/docker-library/go-dockerlibrary/pkg/execpipe/execpipe_test.go
  21. 32 0
      bashbrew/go/vendor/src/github.com/docker-library/go-dockerlibrary/pkg/stripper/comments_example_test.go
  22. 8 0
      bashbrew/go/vendor/src/github.com/docker-library/go-dockerlibrary/pkg/templatelib/doc.go
  23. 18 3
      bashbrew/go/vendor/src/github.com/docker-library/go-dockerlibrary/pkg/templatelib/lib.go
  24. 193 0
      bashbrew/go/vendor/src/github.com/docker-library/go-dockerlibrary/pkg/templatelib/lib_example_test.go
  25. 45 0
      bashbrew/go/vendor/src/github.com/docker-library/go-dockerlibrary/pkg/templatelib/lib_test.go
  26. 3 2
      library/aerospike
  27. 8 7
      library/alpine
  28. 8 8
      library/bash
  29. 2 2
      library/bonita
  30. 2 2
      library/centos
  31. 1 1
      library/clojure
  32. 25 1
      library/docker
  33. 4 4
      library/elasticsearch
  34. 38 6
      library/flink
  35. 11 11
      library/gazebo
  36. 5 5
      library/ghost
  37. 9 1
      library/golang
  38. 1 1
      library/httpd
  39. 4 4
      library/jenkins
  40. 6 6
      library/jruby
  41. 1 1
      library/julia
  42. 4 4
      library/kapacitor
  43. 2 2
      library/kibana
  44. 2 2
      library/kong
  45. 4 4
      library/logstash
  46. 2 2
      library/mariadb
  47. 4 4
      library/mongo
  48. 3 3
      library/mongo-express
  49. 38 8
      library/neo4j
  50. 8 8
      library/nginx
  51. 24 24
      library/node
  52. 8 8
      library/openjdk
  53. 3 3
      library/opensuse
  54. 1 1
      library/oraclelinux
  55. 3 3
      library/orientdb
  56. 8 8
      library/owncloud
  57. 1 1
      library/percona
  58. 21 21
      library/php
  59. 6 6
      library/rabbitmq
  60. 12 12
      library/ruby
  61. 12 12
      library/sentry
  62. 4 4
      library/telegraf
  63. 4 12
      library/traefik
  64. 22 22
      library/ubuntu
  65. 4 4
      library/xwiki

+ 1 - 1
README.md

@@ -115,7 +115,7 @@ All official images should provide a consistent interface. A beginning user shou
 
 #### Clarity
 
-Try to make the `Dockerfile` easy to understand/read. It may be tempting, for the sake of brevity, to put complicated initialization details into a standalone script and merely add a `RUN` command in the `Dockerfile`. However, this causes the resulting `Dockerfile` to be overly opaque, and such `Dockerfile`s are unlikely to pass review. Instead, it it recommended to put all the commands for initialization into the `Dockerfile` as appropriate `RUN` or `ENV` command combinations. To find good examples, look at the current official images.
+Try to make the `Dockerfile` easy to understand/read. It may be tempting, for the sake of brevity, to put complicated initialization details into a standalone script and merely add a `RUN` command in the `Dockerfile`. However, this causes the resulting `Dockerfile` to be overly opaque, and such `Dockerfile`s are unlikely to pass review. Instead, it is recommended to put all the commands for initialization into the `Dockerfile` as appropriate `RUN` or `ENV` command combinations. To find good examples, look at the current official images.
 
 Some examples at the time of writing:
 

+ 36 - 17
bashbrew/Dockerfile.release

@@ -16,29 +16,48 @@ COPY go .
 RUN set -ex; \
 	mkdir bin; \
 	for osArch in \
-		darwin/amd64 \
-		linux/amd64 \
-		linux/arm64 \
-		linux/ppc64le \
-		linux/s390x \
-		windows/amd64 \
+		amd64 \
+		arm32v5 \
+		arm32v6 \
+		arm32v7 \
+		arm64v8 \
+		darwin-amd64 \
+		i386 \
+		ppc64le \
+		s390x \
+		windows-amd64 \
 	; do \
-		os="${osArch%%/*}"; \
-		arch="${osArch#$os/}"; \
-# TODO GOARM
+		os="${osArch%%-*}"; \
+		[ "$os" != "$osArch" ] || os='linux'; \
+		export GOOS="$os"; \
+		arch="${osArch#${os}-}"; \
+		unset GOARM GO386; \
+		case "$arch" in \
+			arm32v*) export GOARCH='arm' GOARM="${arch#arm32v}" ;; \
+# no GOARM for arm64 (yet?) -- https://github.com/golang/go/blob/1e72bf62183ea21b9affffd4450d44d994393899/src/cmd/internal/objabi/util.go#L40
+			arm64v*) export GOARCH='arm64' ;; \
+			i386)    export GOARCH='386' ;; \
+			*)       export GOARCH="$arch" ;; \
+		esac; \
 		\
 		[ "$os" = 'windows' ] && ext='.exe' || ext=''; \
 		\
-		GOOS="$os" GOARCH="$arch" \
-			go build \
-				-a -v \
-				-ldflags '-s -w' \
-				-tags netgo -installsuffix netgo \
-				-o "bin/bashbrew-$os-$arch$ext" \
-				./src/bashbrew; \
+		go build \
+			-a -v \
+			-ldflags '-s -w' \
+# see https://github.com/golang/go/issues/9737#issuecomment-276817652 (and following comments) -- installsuffix is necessary (for now) to keep ARM
+# can remove "$osArch" from "installsuffix" in Go 1.10+ (https://github.com/golang/go/commit/1b53f15ebb00dd158af674df410c7941abb2b933)
+			-tags netgo -installsuffix "netgo-$osArch" \
+			-o "bin/bashbrew-$osArch$ext" \
+			./src/bashbrew; \
 		\
+		case "$GOARCH" in \
+# manifest-tool and GOARM aren't friends yet
+# ... and estesp is probably a big fat "lololol" on supporting i386 :D
+			arm|386) continue ;; \
+		esac; \
 # TODO verify GPG signatures for manifest-tool releases
-		wget -O "bin/manifest-tool-$os-$arch$ext" "https://github.com/estesp/manifest-tool/releases/download/v${MANIFEST_TOOL_VERSION}/manifest-tool-$os-$arch$ext"; \
+		wget -O "bin/manifest-tool-$osArch$ext" "https://github.com/estesp/manifest-tool/releases/download/v${MANIFEST_TOOL_VERSION}/manifest-tool-$GOOS-$GOARCH$ext"; \
 	done; \
 	ls -l bin; \
 	file bin/*

+ 1 - 1
bashbrew/go/src/bashbrew/cmd-build.go

@@ -81,7 +81,7 @@ func cmdBuild(c *cli.Context) error {
 					return cli.NewMultiError(fmt.Errorf(`failed fetching git repo for %q (tags %q)`, r.RepoName, entry.TagsString()), err)
 				}
 
-				archive, err := gitArchive(commit, entry.Directory)
+				archive, err := gitArchive(commit, entry.ArchDirectory(arch))
 				if err != nil {
 					return cli.NewMultiError(fmt.Errorf(`failed generating git archive for %q (tags %q)`, r.RepoName, entry.TagsString()), err)
 				}

+ 34 - 11
bashbrew/go/src/bashbrew/cmd-deps.go

@@ -15,6 +15,11 @@ func cmdParents(c *cli.Context) error {
 	return cmdFamily(true, c)
 }
 
+type topsortDepthNodes struct {
+	depth int
+	nodes []*topsort.Node
+}
+
 func cmdFamily(parents bool, c *cli.Context) error {
 	depsRepos, err := repos(c.Bool("all"), c.Args()...)
 	if err != nil {
@@ -23,6 +28,7 @@ func cmdFamily(parents bool, c *cli.Context) error {
 
 	uniq := c.Bool("uniq")
 	applyConstraints := c.Bool("apply-constraints")
+	depth := c.Int("depth")
 
 	allRepos, err := repos(true)
 	if err != nil {
@@ -85,24 +91,41 @@ func cmdFamily(parents bool, c *cli.Context) error {
 			}
 
 			for _, tag := range r.Tags("", uniq, entry) {
-				nodes := []*topsort.Node{}
+				nodes := []topsortDepthNodes{}
 				if parents {
-					nodes = append(nodes, network.Get(tag).InboundEdges...)
+					nodes = append(nodes, topsortDepthNodes{
+						depth: 1,
+						nodes: network.Get(tag).InboundEdges,
+					})
 				} else {
-					nodes = append(nodes, network.Get(tag).OutboundEdges...)
+					nodes = append(nodes, topsortDepthNodes{
+						depth: 1,
+						nodes: network.Get(tag).OutboundEdges,
+					})
 				}
 				for len(nodes) > 0 {
-					node := nodes[0]
+					depthNodes := nodes[0]
 					nodes = nodes[1:]
-					if seen[node] {
+					if depth > 0 && depthNodes.depth > depth {
 						continue
 					}
-					seen[node] = true
-					fmt.Printf("%s\n", node.Name)
-					if parents {
-						nodes = append(nodes, node.InboundEdges...)
-					} else {
-						nodes = append(nodes, node.OutboundEdges...)
+					for _, node := range depthNodes.nodes {
+						if seen[node] {
+							continue
+						}
+						seen[node] = true
+						fmt.Printf("%s\n", node.Name)
+						if parents {
+							nodes = append(nodes, topsortDepthNodes{
+								depth: depthNodes.depth + 1,
+								nodes: node.InboundEdges,
+							})
+						} else {
+							nodes = append(nodes, topsortDepthNodes{
+								depth: depthNodes.depth + 1,
+								nodes: node.OutboundEdges,
+							})
+						}
 					}
 				}
 			}

+ 46 - 0
bashbrew/go/src/bashbrew/cmd-put-shared.go

@@ -0,0 +1,46 @@
+package main
+
+import (
+	"fmt"
+	"os"
+	"path"
+	"strings"
+
+	"github.com/codegangsta/cli"
+)
+
+func cmdPutShared(c *cli.Context) error {
+	repos, err := repos(c.Bool("all"), c.Args()...)
+	if err != nil {
+		return cli.NewMultiError(fmt.Errorf(`failed gathering repo list`), err)
+	}
+
+	namespace := c.String("namespace")
+
+	if namespace == "" {
+		return fmt.Errorf(`"--namespace" is a required flag for "put-shared"`)
+	}
+
+	fmt.Fprintf(os.Stderr, "warning: this subcommand is still a big WIP -- it doesn't do anything yet!\n")
+
+	for _, repo := range repos {
+		r, err := fetch(repo)
+		if err != nil {
+			return cli.NewMultiError(fmt.Errorf(`failed fetching repo %q`, repo), err)
+		}
+
+		// TODO handle all multi-architecture tags first (regardless of whether they have SharedTags)
+
+		targetRepo := path.Join(namespace, r.RepoName)
+		for _, group := range r.Manifest.GetSharedTagGroups() {
+			// TODO build up a YAML file
+			entryTags := []string{}
+			for _, entry := range group.Entries {
+				entryTags = append(entryTags, entry.Tags[0])
+			}
+			fmt.Printf("Putting %s (tags %s) <= %s\n", targetRepo, strings.Join(group.SharedTags, ", "), strings.Join(entryTags, ", "))
+		}
+	}
+
+	return nil
+}

+ 7 - 0
bashbrew/go/src/bashbrew/config.go

@@ -18,6 +18,8 @@ type FlagsConfigEntry struct {
 
 	Commands []string `delim:"," strip:"\n\r\t "`
 
+	// TODO arch namespace mappings (for intermediate pushing before put-shared, and for put-shared to pull from to join together in one big happy family)
+
 	Library    string
 	Cache      string
 	Debug      string
@@ -26,6 +28,7 @@ type FlagsConfigEntry struct {
 	BuildOrder string
 	Pull       string
 
+	Arch                 string
 	Constraints          []string `delim:"," strip:"\n\r\t "`
 	ExclusiveConstraints string
 	ApplyConstraints     string
@@ -55,6 +58,9 @@ func (dst *FlagsConfigEntry) Apply(src FlagsConfigEntry) {
 	if src.Pull != "" {
 		dst.Pull = src.Pull
 	}
+	if src.Arch != "" {
+		dst.Arch = src.Arch
+	}
 	if len(src.Constraints) > 0 {
 		dst.Constraints = src.Constraints[:]
 	}
@@ -73,6 +79,7 @@ func (config FlagsConfigEntry) Vars() map[string]map[string]interface{} {
 			"cache":   config.Cache,
 			"debug":   config.Debug,
 
+			"arch":                  config.Arch,
 			"constraint":            config.Constraints,
 			"exclusive-constraints": config.ExclusiveConstraints,
 		},

+ 4 - 4
bashbrew/go/src/bashbrew/docker.go

@@ -24,7 +24,7 @@ func (r Repo) DockerFrom(entry *manifest.Manifest2822Entry) (string, error) {
 		return "", err
 	}
 
-	dockerfileFile := path.Join(entry.Directory, "Dockerfile")
+	dockerfileFile := path.Join(entry.ArchDirectory(arch), "Dockerfile")
 
 	cacheKey := strings.Join([]string{
 		commit,
@@ -130,9 +130,9 @@ func (r Repo) dockerBuildUniqueBits(entry *manifest.Manifest2822Entry) ([]string
 		dockerFromIdCache[from] = fromId
 	}
 	return []string{
-		entry.GitRepo,
-		entry.GitCommit,
-		entry.Directory,
+		entry.ArchGitRepo(arch),
+		entry.ArchGitCommit(arch),
+		entry.ArchDirectory(arch),
 		fromId,
 	}, nil
 }

+ 20 - 17
bashbrew/go/src/bashbrew/git.go

@@ -20,6 +20,9 @@ func gitCache() string {
 }
 
 func gitCommand(args ...string) *exec.Cmd {
+	if debugFlag {
+		fmt.Printf("$ git %q\n", args)
+	}
 	cmd := exec.Command("git", args...)
 	cmd.Dir = gitCache()
 	return cmd
@@ -102,12 +105,12 @@ var gitRepoCache = map[string]string{}
 
 func (r Repo) fetchGitRepo(entry *manifest.Manifest2822Entry) (string, error) {
 	cacheKey := strings.Join([]string{
-		entry.GitRepo,
-		entry.GitFetch,
-		entry.GitCommit,
+		entry.ArchGitRepo(arch),
+		entry.ArchGitFetch(arch),
+		entry.ArchGitCommit(arch),
 	}, "\n")
 	if commit, ok := gitRepoCache[cacheKey]; ok {
-		entry.GitCommit = commit
+		entry.SetGitCommit(arch, commit)
 		return commit, nil
 	}
 
@@ -116,27 +119,27 @@ func (r Repo) fetchGitRepo(entry *manifest.Manifest2822Entry) (string, error) {
 		return "", err
 	}
 
-	if manifest.GitCommitRegex.MatchString(entry.GitCommit) {
-		commit, err := getGitCommit(entry.GitCommit)
+	if manifest.GitCommitRegex.MatchString(entry.ArchGitCommit(arch)) {
+		commit, err := getGitCommit(entry.ArchGitCommit(arch))
 		if err == nil {
 			gitRepoCache[cacheKey] = commit
-			entry.GitCommit = commit
+			entry.SetGitCommit(arch, commit)
 			return commit, nil
 		}
 	}
 
-	fetchString := entry.GitFetch + ":"
-	if entry.GitCommit == "FETCH_HEAD" {
+	fetchString := entry.ArchGitFetch(arch) + ":"
+	if entry.ArchGitCommit(arch) == "FETCH_HEAD" {
 		// fetch remote tag references to a local tag ref so that we can cache them and not re-fetch every time
 		localRef := "refs/tags/" + gitNormalizeForTagUsage(cacheKey)
 		commit, err := getGitCommit(localRef)
 		if err == nil {
 			gitRepoCache[cacheKey] = commit
-			entry.GitCommit = commit
+			entry.SetGitCommit(arch, commit)
 			return commit, nil
 		}
 		fetchString += localRef
-	} else if entry.GitFetch == manifest.DefaultLineBasedFetch {
+	} else if entry.ArchGitFetch(arch) == manifest.DefaultLineBasedFetch {
 		// backwards compat (see manifest/line-based.go in go-dockerlibrary)
 		refBase := "refs/remotes"
 		refBaseDir := filepath.Join(gitCache(), refBase)
@@ -154,17 +157,17 @@ func (r Repo) fetchGitRepo(entry *manifest.Manifest2822Entry) (string, error) {
 		// we create a temporary remote dir so that we can clean it up completely afterwards
 	}
 
-	if strings.HasPrefix(entry.GitRepo, "git://github.com/") {
-		fmt.Fprintf(os.Stderr, "warning: insecure protocol git:// detected: %s\n", entry.GitRepo)
-		entry.GitRepo = strings.Replace(entry.GitRepo, "git://", "https://", 1)
+	if strings.HasPrefix(entry.ArchGitRepo(arch), "git://github.com/") {
+		fmt.Fprintf(os.Stderr, "warning: insecure protocol git:// detected: %s\n", entry.ArchGitRepo(arch))
+		entry.SetGitRepo(arch, strings.Replace(entry.ArchGitRepo(arch), "git://", "https://", 1))
 	}
 
-	_, err = git("fetch", "--quiet", "--no-tags", entry.GitRepo, fetchString)
+	_, err = git("fetch", "--quiet", "--no-tags", entry.ArchGitRepo(arch), fetchString)
 	if err != nil {
 		return "", err
 	}
 
-	commit, err := getGitCommit(entry.GitCommit)
+	commit, err := getGitCommit(entry.ArchGitCommit(arch))
 	if err != nil {
 		return "", err
 	}
@@ -175,6 +178,6 @@ func (r Repo) fetchGitRepo(entry *manifest.Manifest2822Entry) (string, error) {
 	}
 
 	gitRepoCache[cacheKey] = commit
-	entry.GitCommit = commit
+	entry.SetGitCommit(arch, commit)
 	return commit, nil
 }

+ 28 - 0
bashbrew/go/src/bashbrew/main.go

@@ -6,6 +6,8 @@ import (
 	"path/filepath"
 
 	"github.com/codegangsta/cli"
+
+	"github.com/docker-library/go-dockerlibrary/manifest"
 )
 
 // TODO somewhere, ensure that the Docker engine we're talking to is API version 1.22+ (Docker 1.10+)
@@ -18,6 +20,7 @@ var (
 	defaultLibrary string
 	defaultCache   string
 
+	arch                 string
 	constraints          []string
 	exclusiveConstraints bool
 
@@ -27,6 +30,7 @@ var (
 	// separated so that FlagsConfig.ApplyTo can access them
 	flagEnvVars = map[string]string{
 		"debug":   "BASHBREW_DEBUG",
+		"arch":    "BASHBREW_ARCH",
 		"config":  "BASHBREW_CONFIG",
 		"library": "BASHBREW_LIBRARY",
 		"cache":   "BASHBREW_CACHE",
@@ -72,6 +76,12 @@ func main() {
 			Usage: "do not apply any sorting, even via --build-order",
 		},
 
+		cli.StringFlag{
+			Name:   "arch",
+			Value:  manifest.DefaultArchitecture,
+			EnvVar: flagEnvVars["arch"],
+			Usage:  "the current platform architecture",
+		},
 		cli.StringSliceFlag{
 			Name:  "constraint",
 			Usage: "build constraints (see Constraints in Manifest2822Entry)",
@@ -127,6 +137,7 @@ func main() {
 			debugFlag = c.GlobalBool("debug")
 			noSortFlag = c.GlobalBool("no-sort")
 
+			arch = c.GlobalString("arch")
 			constraints = c.GlobalStringSlice("constraint")
 			exclusiveConstraints = c.GlobalBool("exclusive-constraints")
 
@@ -161,6 +172,11 @@ func main() {
 			Name:  "apply-constraints",
 			Usage: "apply Constraints as if repos were building",
 		},
+		"depth": cli.IntFlag{
+			Name:  "depth",
+			Value: 0,
+			Usage: "maximum number of levels to traverse (0 for unlimited)",
+		},
 	}
 
 	app.Commands = []cli.Command{
@@ -222,6 +238,16 @@ func main() {
 			Before: subcommandBeforeFactory("push"),
 			Action: cmdPush,
 		},
+		{
+			Name:  "put-shared",
+			Usage: `updated shared tags in the registry`,
+			Flags: []cli.Flag{
+				commonFlags["all"],
+				commonFlags["namespace"],
+			},
+			Before: subcommandBeforeFactory("put-shared"),
+			Action: cmdPutShared,
+		},
 
 		{
 			Name: "children",
@@ -233,6 +259,7 @@ func main() {
 			Usage: `print the repos built FROM a given repo or repo:tag`,
 			Flags: []cli.Flag{
 				commonFlags["apply-constraints"],
+				commonFlags["depth"],
 			},
 			Before: subcommandBeforeFactory("children"),
 			Action: cmdOffspring,
@@ -248,6 +275,7 @@ func main() {
 			Usage: `print the repos this repo or repo:tag is FROM`,
 			Flags: []cli.Flag{
 				commonFlags["apply-constraints"],
+				commonFlags["depth"],
 			},
 			Before: subcommandBeforeFactory("parents"),
 			Action: cmdParents,

+ 9 - 0
bashbrew/go/src/bashbrew/repo.go

@@ -79,6 +79,15 @@ var haveOutputSkippedMessage = map[string]bool{}
 func (r Repo) SkipConstraints(entry manifest.Manifest2822Entry) bool {
 	repoTag := r.RepoName + ":" + entry.Tags[0]
 
+	// TODO decide if "arch" and "constraints" should be handled separately (but probably not)
+	if !entry.HasArchitecture(arch) {
+		if !haveOutputSkippedMessage[repoTag] {
+			fmt.Fprintf(os.Stderr, "skipping %q (due to architecture %q; only %q supported)\n", repoTag, arch, entry.ArchitecturesString())
+			haveOutputSkippedMessage[repoTag] = true
+		}
+		return true
+	}
+
 	if len(entry.Constraints) == 0 {
 		if exclusiveConstraints {
 			if !haveOutputSkippedMessage[repoTag] {

+ 3 - 0
bashbrew/go/src/bashbrew/sort.go

@@ -97,6 +97,9 @@ func sortRepoObjects(rs []*Repo, applyConstraints bool) ([]*Repo, error) {
 			if applyConstraints && r.SkipConstraints(entry) {
 				continue
 			}
+			if !entry.HasArchitecture(arch) {
+				continue
+			}
 
 			from, err := r.DockerFrom(&entry)
 			if err != nil {

+ 1 - 1
bashbrew/go/vendor/manifest

@@ -10,7 +10,7 @@
 		{
 			"importpath": "github.com/docker-library/go-dockerlibrary",
 			"repository": "https://github.com/docker-library/go-dockerlibrary",
-			"revision": "08ef5a968ebdd83dcc42998a96b6528837b55273",
+			"revision": "ce3ef0e05c16a5202b2c3dae35ef6a832eb18d7a",
 			"branch": "master"
 		},
 		{

+ 5 - 0
bashbrew/go/vendor/src/github.com/docker-library/go-dockerlibrary/README.md

@@ -0,0 +1,5 @@
+# `import "github.com/docker-library/go-dockerlibrary/manifest"`
+
+[![Travis Build Status](https://travis-ci.org/docker-library/go-dockerlibrary.svg?branch=master)](https://travis-ci.org/docker-library/go-dockerlibrary) [![GoDoc](https://godoc.org/github.com/docker-library/go-dockerlibrary?status.svg)](https://godoc.org/github.com/docker-library/go-dockerlibrary) [![codecov](https://codecov.io/gh/docker-library/go-dockerlibrary/branch/master/graph/badge.svg)](https://codecov.io/gh/docker-library/go-dockerlibrary)
+
+This package contains the core parsing elements of [the `bashbrew` tool used by the Docker Official Images](https://github.com/docker-library/official-images/tree/master/bashbrew).

+ 0 - 67
bashbrew/go/vendor/src/github.com/docker-library/go-dockerlibrary/manifest/example.go

@@ -1,67 +0,0 @@
-// +build ignore
-
-package main
-
-import (
-	"bufio"
-	"fmt"
-	"strings"
-
-	"github.com/docker-library/go-dockerlibrary/manifest"
-)
-
-func main() {
-	// TODO comment parsing
-	man, err := manifest.Parse(bufio.NewReader(strings.NewReader(`# RFC 2822
-
-	# I LOVE CAKE
-
-Maintainers: InfoSiftr <[email protected]> (@infosiftr),
-             Johan Euphrosine <[email protected]> (@proppy)
-GitRepo: https://github.com/docker-library/golang.git
-GitFetch: refs/heads/master
-
-
- # hi
-
-
- 	 # blasphemer
-
-
-# Go 1.6
-Tags: 1.6.1, 1.6, 1, latest
-GitCommit: 0ce80411b9f41e9c3a21fc0a1bffba6ae761825a
-Directory: 1.6
-
-
-# Go 1.5
-Tags: 1.5.3
-GitCommit: d7e2a8d90a9b8f5dfd5bcd428e0c33b68c40cc19
-Directory: 1.5
-
-
-Tags: 1.5
-GitCommit: d7e2a8d90a9b8f5dfd5bcd428e0c33b68c40cc19
-Directory: 1.5
-
-
-`)))
-	if err != nil {
-		panic(err)
-	}
-	fmt.Printf("-------------\n2822:\n%s\n", man)
-
-	man, err = manifest.Parse(bufio.NewReader(strings.NewReader(`
-# first set
-a: b@c d
-e: b@c d
-
- # second set
-f: g@h
-i: g@h j
-`)))
-	if err != nil {
-		panic(err)
-	}
-	fmt.Printf("-------------\nline-based:\n%v\n", man)
-}

+ 192 - 0
bashbrew/go/vendor/src/github.com/docker-library/go-dockerlibrary/manifest/example_test.go

@@ -0,0 +1,192 @@
+package manifest_test
+
+import (
+	"bufio"
+	"fmt"
+	"strings"
+
+	"github.com/docker-library/go-dockerlibrary/manifest"
+)
+
+func Example() {
+	man, err := manifest.Parse(bufio.NewReader(strings.NewReader(`# RFC 2822
+
+	# I LOVE CAKE
+
+Maintainers: InfoSiftr <[email protected]> (@infosiftr),
+             Johan Euphrosine <[email protected]> (@proppy)
+GitFetch: refs/heads/master
+GitRepo: https://github.com/docker-library/golang.git
+SharedTags: latest
+arm64v8-GitRepo: https://github.com/docker-library/golang.git
+Architectures: amd64
+
+
+ # hi
+
+
+ 	 # blasphemer
+
+
+# Go 1.6
+Tags: 1.6.1, 1.6, 1
+arm64v8-GitRepo: https://github.com/docker-library/golang.git
+Directory: 1.6
+GitCommit: 0ce80411b9f41e9c3a21fc0a1bffba6ae761825a
+Constraints: some-random-build-server
+
+
+# Go 1.5
+Tags: 1.5.3
+GitCommit: d7e2a8d90a9b8f5dfd5bcd428e0c33b68c40cc19
+SharedTags: 1.5.3-debian, 1.5-debian
+Directory: 1.5
+s390x-GitCommit: b6c460e7cd79b595267870a98013ec3078b490df
+i386-GitFetch: refs/heads/i386
+ppc64le-Directory: 1.5/ppc64le
+
+
+Tags: 1.5
+SharedTags: 1.5-debian
+GitCommit: d7e2a8d90a9b8f5dfd5bcd428e0c33b68c40cc19
+Directory: 1.5
+s390x-GitCommit: b6c460e7cd79b595267870a98013ec3078b490df
+i386-GitFetch: refs/heads/i386
+ppc64le-Directory: 1.5/ppc64le
+
+SharedTags: raspbian
+GitCommit: deadbeefdeadbeefdeadbeefdeadbeefdeadbeef
+Tags: raspbian-s390x
+Architectures: s390x
+
+
+`)))
+	if err != nil {
+		panic(err)
+	}
+	fmt.Printf("-------------\n2822:\n%s\n", man)
+
+	fmt.Printf("\nShared Tag Groups:\n")
+	for _, group := range man.GetSharedTagGroups() {
+		fmt.Printf("\n  - %s\n", strings.Join(group.SharedTags, ", "))
+		for _, entry := range group.Entries {
+			fmt.Printf("    - %s\n", entry.TagsString())
+		}
+	}
+	fmt.Printf("\n")
+
+	man, err = manifest.Parse(bufio.NewReader(strings.NewReader(`
+# maintainer: InfoSiftr <[email protected]> (@infosiftr)
+# maintainer: John Smith <[email protected]> (@example-jsmith)
+
+# first set
+a: b@c d
+e: b@c d
+
+ # second set
+f: g@h
+i: g@h j
+`)))
+	if err != nil {
+		panic(err)
+	}
+	fmt.Printf("-------------\nline-based:\n%v\n", man)
+
+	// Output:
+	// -------------
+	// 2822:
+	// Maintainers: InfoSiftr <[email protected]> (@infosiftr), Johan Euphrosine <[email protected]> (@proppy)
+	// SharedTags: latest
+	// GitRepo: https://github.com/docker-library/golang.git
+	// arm64v8-GitRepo: https://github.com/docker-library/golang.git
+	//
+	// Tags: 1.6.1, 1.6, 1
+	// GitCommit: 0ce80411b9f41e9c3a21fc0a1bffba6ae761825a
+	// Directory: 1.6
+	// Constraints: some-random-build-server
+	//
+	// Tags: 1.5.3, 1.5
+	// SharedTags: 1.5.3-debian, 1.5-debian
+	// GitCommit: d7e2a8d90a9b8f5dfd5bcd428e0c33b68c40cc19
+	// Directory: 1.5
+	// i386-GitFetch: refs/heads/i386
+	// ppc64le-Directory: 1.5/ppc64le
+	// s390x-GitCommit: b6c460e7cd79b595267870a98013ec3078b490df
+	//
+	// Tags: raspbian-s390x
+	// SharedTags: raspbian
+	// Architectures: s390x
+	// GitCommit: deadbeefdeadbeefdeadbeefdeadbeefdeadbeef
+	//
+	// Shared Tag Groups:
+	//
+	//   - latest
+	//     - 1.6.1, 1.6, 1
+	//
+	//   - 1.5.3-debian, 1.5-debian
+	//     - 1.5.3, 1.5
+	//
+	//   - raspbian
+	//     - raspbian-s390x
+	//
+	// -------------
+	// line-based:
+	// Maintainers: InfoSiftr <[email protected]> (@infosiftr), John Smith <[email protected]> (@example-jsmith)
+	// GitFetch: refs/heads/*
+	//
+	// Tags: a, e
+	// GitRepo: b
+	// GitCommit: c
+	// Directory: d
+	//
+	// Tags: f
+	// GitRepo: g
+	// GitFetch: refs/tags/h
+	// GitCommit: FETCH_HEAD
+	//
+	// Tags: i
+	// GitRepo: g
+	// GitFetch: refs/tags/h
+	// GitCommit: FETCH_HEAD
+	// Directory: j
+}
+
+func ExampleFetch_local() {
+	repoName, tagName, man, err := manifest.Fetch("testdata", "bash:4.4")
+	if err != nil {
+		panic(err)
+	}
+
+	fmt.Printf("%s:%s\n\n", repoName, tagName)
+
+	fmt.Println(man.GetTag(tagName).ClearDefaults(manifest.DefaultManifestEntry).String())
+
+	// Output:
+	// bash:4.4
+	//
+	// Maintainers: Tianon Gravi <[email protected]> (@tianon)
+	// Tags: 4.4.12, 4.4, 4, latest
+	// GitRepo: https://github.com/tianon/docker-bash.git
+	// GitCommit: 1cbb5cf49b4c53bd5a986abf7a1afeb9a80eac1e
+	// Directory: 4.4
+}
+
+func ExampleFetch_remote() {
+	repoName, tagName, man, err := manifest.Fetch("/home/jsmith/docker/official-images/library", "https://github.com/docker-library/official-images/raw/1a3c4cd6d5cd53bd538a6f56a69f94c5b35325a7/library/bash:4.4")
+	if err != nil {
+		panic(err)
+	}
+
+	fmt.Printf("%s:%s\n\n", repoName, tagName)
+
+	fmt.Println(man.GetTag(tagName).ClearDefaults(manifest.DefaultManifestEntry).String())
+
+	// Output:
+	// bash:4.4
+	//
+	// Maintainers: Tianon Gravi <[email protected]> (@tianon)
+	// Tags: 4.4.12, 4.4, 4, latest
+	// GitRepo: https://github.com/tianon/docker-bash.git
+	// GitCommit: 1cbb5cf49b4c53bd5a986abf7a1afeb9a80eac1e
+	// Directory: 4.4
+}

+ 20 - 0
bashbrew/go/vendor/src/github.com/docker-library/go-dockerlibrary/manifest/parse_test.go

@@ -0,0 +1,20 @@
+package manifest_test
+
+import (
+	"strings"
+	"testing"
+
+	"github.com/docker-library/go-dockerlibrary/manifest"
+)
+
+func TestParseError(t *testing.T) {
+	invalidManifest := `this is just completely bogus and invalid no matter how you slice it`
+
+	man, err := manifest.Parse(strings.NewReader(invalidManifest))
+	if err == nil {
+		t.Errorf("Expected error, got valid manifest instead:\n%s", man)
+	}
+	if !strings.HasPrefix(err.Error(), "cannot parse manifest in either format:") {
+		t.Errorf("Unexpected error: %v", err)
+	}
+}

+ 259 - 7
bashbrew/go/vendor/src/github.com/docker-library/go-dockerlibrary/manifest/rfc2822.go

@@ -5,6 +5,7 @@ import (
 	"fmt"
 	"io"
 	"regexp"
+	"sort"
 	"strings"
 
 	"github.com/docker-library/go-dockerlibrary/pkg/stripper"
@@ -27,29 +28,64 @@ type Manifest2822Entry struct {
 
 	Maintainers []string `delim:"," strip:"\n\r\t "`
 
-	Tags []string `delim:"," strip:"\n\r\t "`
+	Tags       []string `delim:"," strip:"\n\r\t "`
+	SharedTags []string `delim:"," strip:"\n\r\t "`
+
+	Architectures []string `delim:"," strip:"\n\r\t "`
 
 	GitRepo   string
 	GitFetch  string
 	GitCommit string
 	Directory string
 
+	// architecture-specific versions of the above fields
+	ArchValues map[string]string
+	// "ARCH-FIELD: VALUE"
+	// ala, "s390x-GitCommit: deadbeef"
+	// (sourced from Paragraph.Values via .SeedArchValues())
+
 	Constraints []string `delim:"," strip:"\n\r\t "`
 }
 
-var DefaultManifestEntry = Manifest2822Entry{
-	GitFetch:  "refs/heads/master",
-	Directory: ".",
+var (
+	DefaultArchitecture = "amd64"
+
+	DefaultManifestEntry = Manifest2822Entry{
+		Architectures: []string{DefaultArchitecture},
+
+		GitFetch:  "refs/heads/master",
+		Directory: ".",
+	}
+)
+
+func deepCopyStringsMap(a map[string]string) map[string]string {
+	b := map[string]string{}
+	for k, v := range a {
+		b[k] = v
+	}
+	return b
 }
 
 func (entry Manifest2822Entry) Clone() Manifest2822Entry {
 	// SLICES! grr
 	entry.Maintainers = append([]string{}, entry.Maintainers...)
 	entry.Tags = append([]string{}, entry.Tags...)
+	entry.SharedTags = append([]string{}, entry.SharedTags...)
+	entry.Architectures = append([]string{}, entry.Architectures...)
 	entry.Constraints = append([]string{}, entry.Constraints...)
+	// and MAPS, oh my
+	entry.ArchValues = deepCopyStringsMap(entry.ArchValues)
 	return entry
 }
 
+func (entry *Manifest2822Entry) SeedArchValues() {
+	for field, val := range entry.Paragraph.Values {
+		if strings.HasSuffix(field, "-GitRepo") || strings.HasSuffix(field, "-GitFetch") || strings.HasSuffix(field, "-GitCommit") || strings.HasSuffix(field, "-Directory") {
+			entry.ArchValues[field] = val
+		}
+	}
+}
+
 const StringSeparator2822 = ", "
 
 func (entry Manifest2822Entry) MaintainersString() string {
@@ -60,23 +96,57 @@ func (entry Manifest2822Entry) TagsString() string {
 	return strings.Join(entry.Tags, StringSeparator2822)
 }
 
+func (entry Manifest2822Entry) SharedTagsString() string {
+	return strings.Join(entry.SharedTags, StringSeparator2822)
+}
+
+func (entry Manifest2822Entry) ArchitecturesString() string {
+	return strings.Join(entry.Architectures, StringSeparator2822)
+}
+
 func (entry Manifest2822Entry) ConstraintsString() string {
 	return strings.Join(entry.Constraints, StringSeparator2822)
 }
 
 // if this method returns "true", then a.Tags and b.Tags can safely be combined (for the purposes of building)
 func (a Manifest2822Entry) SameBuildArtifacts(b Manifest2822Entry) bool {
-	return a.GitRepo == b.GitRepo && a.GitFetch == b.GitFetch && a.GitCommit == b.GitCommit && a.Directory == b.Directory && a.ConstraintsString() == b.ConstraintsString()
+	// check xxxarch-GitRepo, etc. fields for sameness first
+	for _, key := range append(a.archFields(), b.archFields()...) {
+		if a.ArchValues[key] != b.ArchValues[key] {
+			return false
+		}
+	}
+
+	return a.ArchitecturesString() == b.ArchitecturesString() && a.GitRepo == b.GitRepo && a.GitFetch == b.GitFetch && a.GitCommit == b.GitCommit && a.Directory == b.Directory && a.ConstraintsString() == b.ConstraintsString()
+}
+
+// returns a list of architecture-specific fields in an Entry
+func (entry Manifest2822Entry) archFields() []string {
+	ret := []string{}
+	for key, val := range entry.ArchValues {
+		if val != "" {
+			ret = append(ret, key)
+		}
+	}
+	sort.Strings(ret)
+	return ret
 }
 
 // returns a new Entry with any of the values that are equal to the values in "defaults" cleared
 func (entry Manifest2822Entry) ClearDefaults(defaults Manifest2822Entry) Manifest2822Entry {
+	entry = entry.Clone() // make absolutely certain we have a deep clone
 	if entry.MaintainersString() == defaults.MaintainersString() {
 		entry.Maintainers = nil
 	}
 	if entry.TagsString() == defaults.TagsString() {
 		entry.Tags = nil
 	}
+	if entry.SharedTagsString() == defaults.SharedTagsString() {
+		entry.SharedTags = nil
+	}
+	if entry.ArchitecturesString() == defaults.ArchitecturesString() {
+		entry.Architectures = nil
+	}
 	if entry.GitRepo == defaults.GitRepo {
 		entry.GitRepo = ""
 	}
@@ -89,6 +159,11 @@ func (entry Manifest2822Entry) ClearDefaults(defaults Manifest2822Entry) Manifes
 	if entry.Directory == defaults.Directory {
 		entry.Directory = ""
 	}
+	for _, key := range defaults.archFields() {
+		if defaults.ArchValues[key] == entry.ArchValues[key] {
+			delete(entry.ArchValues, key)
+		}
+	}
 	if entry.ConstraintsString() == defaults.ConstraintsString() {
 		entry.Constraints = nil
 	}
@@ -103,6 +178,12 @@ func (entry Manifest2822Entry) String() string {
 	if str := entry.TagsString(); str != "" {
 		ret = append(ret, "Tags: "+str)
 	}
+	if str := entry.SharedTagsString(); str != "" {
+		ret = append(ret, "SharedTags: "+str)
+	}
+	if str := entry.ArchitecturesString(); str != "" {
+		ret = append(ret, "Architectures: "+str)
+	}
 	if str := entry.GitRepo; str != "" {
 		ret = append(ret, "GitRepo: "+str)
 	}
@@ -115,6 +196,9 @@ func (entry Manifest2822Entry) String() string {
 	if str := entry.Directory; str != "" {
 		ret = append(ret, "Directory: "+str)
 	}
+	for _, key := range entry.archFields() {
+		ret = append(ret, key+": "+entry.ArchValues[key])
+	}
 	if str := entry.ConstraintsString(); str != "" {
 		ret = append(ret, "Constraints: "+str)
 	}
@@ -136,6 +220,48 @@ func (manifest Manifest2822) String() string {
 	return strings.Join(ret, "\n\n")
 }
 
+func (entry *Manifest2822Entry) SetGitRepo(arch string, repo string) {
+	if entry.ArchValues == nil {
+		entry.ArchValues = map[string]string{}
+	}
+	entry.ArchValues[arch+"-GitRepo"] = repo
+}
+
+func (entry Manifest2822Entry) ArchGitRepo(arch string) string {
+	if val, ok := entry.ArchValues[arch+"-GitRepo"]; ok && val != "" {
+		return val
+	}
+	return entry.GitRepo
+}
+
+func (entry Manifest2822Entry) ArchGitFetch(arch string) string {
+	if val, ok := entry.ArchValues[arch+"-GitFetch"]; ok && val != "" {
+		return val
+	}
+	return entry.GitFetch
+}
+
+func (entry *Manifest2822Entry) SetGitCommit(arch string, commit string) {
+	if entry.ArchValues == nil {
+		entry.ArchValues = map[string]string{}
+	}
+	entry.ArchValues[arch+"-GitCommit"] = commit
+}
+
+func (entry Manifest2822Entry) ArchGitCommit(arch string) string {
+	if val, ok := entry.ArchValues[arch+"-GitCommit"]; ok && val != "" {
+		return val
+	}
+	return entry.GitCommit
+}
+
+func (entry Manifest2822Entry) ArchDirectory(arch string) string {
+	if val, ok := entry.ArchValues[arch+"-Directory"]; ok && val != "" {
+		return val
+	}
+	return entry.Directory
+}
+
 func (entry Manifest2822Entry) HasTag(tag string) bool {
 	for _, existingTag := range entry.Tags {
 		if tag == existingTag {
@@ -145,6 +271,26 @@ func (entry Manifest2822Entry) HasTag(tag string) bool {
 	return false
 }
 
+// HasSharedTag returns true if the given tag exists in entry.SharedTags.
+func (entry Manifest2822Entry) HasSharedTag(tag string) bool {
+	for _, existingTag := range entry.SharedTags {
+		if tag == existingTag {
+			return true
+		}
+	}
+	return false
+}
+
+// HasArchitecture returns true if the given architecture exists in entry.Architectures
+func (entry Manifest2822Entry) HasArchitecture(arch string) bool {
+	for _, existingArch := range entry.Architectures {
+		if arch == existingArch {
+			return true
+		}
+	}
+	return false
+}
+
 func (manifest Manifest2822) GetTag(tag string) *Manifest2822Entry {
 	for _, entry := range manifest.Entries {
 		if entry.HasTag(tag) {
@@ -154,6 +300,62 @@ func (manifest Manifest2822) GetTag(tag string) *Manifest2822Entry {
 	return nil
 }
 
+// GetSharedTag returns a list of entries with the given tag in entry.SharedTags (or the empty list if there are no entries with the given tag).
+func (manifest Manifest2822) GetSharedTag(tag string) []Manifest2822Entry {
+	ret := []Manifest2822Entry{}
+	for _, entry := range manifest.Entries {
+		if entry.HasSharedTag(tag) {
+			ret = append(ret, entry)
+		}
+	}
+	return ret
+}
+
+// GetAllSharedTags returns a list of the sum of all SharedTags in all entries of this image manifest (in the order they appear in the file).
+func (manifest Manifest2822) GetAllSharedTags() []string {
+	fakeEntry := Manifest2822Entry{}
+	for _, entry := range manifest.Entries {
+		fakeEntry.SharedTags = append(fakeEntry.SharedTags, entry.SharedTags...)
+	}
+	fakeEntry.DeduplicateSharedTags()
+	return fakeEntry.SharedTags
+}
+
+type SharedTagGroup struct {
+	SharedTags []string
+	Entries    []*Manifest2822Entry
+}
+
+// GetSharedTagGroups returns a map of shared tag groups to the list of entries they share (as described in https://github.com/docker-library/go-dockerlibrary/pull/2#issuecomment-277853597).
+func (manifest Manifest2822) GetSharedTagGroups() []SharedTagGroup {
+	inter := map[string][]string{}
+	interOrder := []string{} // order matters, and maps randomize order
+	interKeySep := ","
+	for _, sharedTag := range manifest.GetAllSharedTags() {
+		interKeyParts := []string{}
+		for _, entry := range manifest.GetSharedTag(sharedTag) {
+			interKeyParts = append(interKeyParts, entry.Tags[0])
+		}
+		interKey := strings.Join(interKeyParts, interKeySep)
+		if _, ok := inter[interKey]; !ok {
+			interOrder = append(interOrder, interKey)
+		}
+		inter[interKey] = append(inter[interKey], sharedTag)
+	}
+	ret := []SharedTagGroup{}
+	for _, tags := range interOrder {
+		group := SharedTagGroup{
+			SharedTags: inter[tags],
+			Entries:    []*Manifest2822Entry{},
+		}
+		for _, tag := range strings.Split(tags, interKeySep) {
+			group.Entries = append(group.Entries, manifest.GetTag(tag))
+		}
+		ret = append(ret, group)
+	}
+	return ret
+}
+
 func (manifest *Manifest2822) AddEntry(entry Manifest2822Entry) error {
 	if len(entry.Tags) < 1 {
 		return fmt.Errorf("missing Tags")
@@ -165,20 +367,36 @@ func (manifest *Manifest2822) AddEntry(entry Manifest2822Entry) error {
 		return fmt.Errorf("Tags %q has invalid Maintainers: %q (expected format %q)", strings.Join(invalidMaintainers, ", "), MaintainersFormat)
 	}
 
+	entry.DeduplicateSharedTags()
+
 	seenTag := map[string]bool{}
 	for _, tag := range entry.Tags {
 		if otherEntry := manifest.GetTag(tag); otherEntry != nil {
 			return fmt.Errorf("Tags %q includes duplicate tag: %q (duplicated in %q)", entry.TagsString(), tag, otherEntry.TagsString())
 		}
+		if otherEntries := manifest.GetSharedTag(tag); len(otherEntries) > 0 {
+			return fmt.Errorf("Tags %q includes tag conflicting with a shared tag: %q (shared tag in %q)", entry.TagsString(), tag, otherEntries[0].TagsString())
+		}
 		if seenTag[tag] {
 			return fmt.Errorf("Tags %q includes duplicate tag: %q", entry.TagsString(), tag)
 		}
 		seenTag[tag] = true
 	}
+	for _, tag := range entry.SharedTags {
+		if otherEntry := manifest.GetTag(tag); otherEntry != nil {
+			return fmt.Errorf("Tags %q includes conflicting shared tag: %q (duplicated in %q)", entry.TagsString(), tag, otherEntry.TagsString())
+		}
+		if seenTag[tag] {
+			return fmt.Errorf("Tags %q includes duplicate tag: %q (in SharedTags)", entry.TagsString(), tag)
+		}
+		seenTag[tag] = true
+	}
 
 	for i, existingEntry := range manifest.Entries {
 		if existingEntry.SameBuildArtifacts(entry) {
 			manifest.Entries[i].Tags = append(existingEntry.Tags, entry.Tags...)
+			manifest.Entries[i].SharedTags = append(existingEntry.SharedTags, entry.SharedTags...)
+			manifest.Entries[i].DeduplicateSharedTags()
 			return nil
 		}
 	}
@@ -210,20 +428,54 @@ func (entry Manifest2822Entry) InvalidMaintainers() []string {
 	return invalid
 }
 
+// DeduplicateSharedTags will remove duplicate values from entry.SharedTags, preserving order.
+func (entry *Manifest2822Entry) DeduplicateSharedTags() {
+	aggregate := []string{}
+	seen := map[string]bool{}
+	for _, tag := range entry.SharedTags {
+		if seen[tag] {
+			continue
+		}
+		seen[tag] = true
+		aggregate = append(aggregate, tag)
+	}
+	entry.SharedTags = aggregate
+}
+
 type decoderWrapper struct {
 	*control.Decoder
 }
 
 func (decoder *decoderWrapper) Decode(entry *Manifest2822Entry) error {
+	// reset Architectures and SharedTags so that they can be either inherited or replaced, not additive
+	sharedTags := entry.SharedTags
+	entry.SharedTags = nil
+	arches := entry.Architectures
+	entry.Architectures = nil
+
 	for {
 		err := decoder.Decoder.Decode(entry)
 		if err != nil {
 			return err
 		}
+
 		// ignore empty paragraphs (blank lines at the start, excess blank lines between paragraphs, excess blank lines at EOF)
-		if len(entry.Paragraph.Order) > 0 {
-			return nil
+		if len(entry.Paragraph.Order) == 0 {
+			continue
+		}
+
+		// if we had no SharedTags or Architectures, restore our "default" (original) values
+		if len(entry.SharedTags) == 0 {
+			entry.SharedTags = sharedTags
 		}
+		if len(entry.Architectures) == 0 {
+			entry.Architectures = arches
+		}
+
+		// pull out any new architecture-specific values from Paragraph.Values
+		entry.SeedArchValues()
+
+		return nil
 	}
 }
 

+ 38 - 0
bashbrew/go/vendor/src/github.com/docker-library/go-dockerlibrary/manifest/testdata/bash

@@ -0,0 +1,38 @@
+# this is a snapshot of https://github.com/docker-library/official-images/raw/1a3c4cd6d5cd53bd538a6f56a69f94c5b35325a7/library/bash
+
+# this file is generated via https://github.com/tianon/docker-bash/blob/cd1de3dfc885b3395cd354ddb988922350b092a7/generate-stackbrew-library.sh
+
+Maintainers: Tianon Gravi <[email protected]> (@tianon)
+GitRepo: https://github.com/tianon/docker-bash.git
+
+Tags: 4.4.12, 4.4, 4, latest
+GitCommit: 1cbb5cf49b4c53bd5a986abf7a1afeb9a80eac1e
+Directory: 4.4
+
+Tags: 4.3.48, 4.3
+GitCommit: 1cbb5cf49b4c53bd5a986abf7a1afeb9a80eac1e
+Directory: 4.3
+
+Tags: 4.2.53, 4.2
+GitCommit: 1cbb5cf49b4c53bd5a986abf7a1afeb9a80eac1e
+Directory: 4.2
+
+Tags: 4.1.17, 4.1
+GitCommit: 1cbb5cf49b4c53bd5a986abf7a1afeb9a80eac1e
+Directory: 4.1
+
+Tags: 4.0.44, 4.0
+GitCommit: 4438745d601d10d300e363f24205a3ca75307803
+Directory: 4.0
+
+Tags: 3.2.57, 3.2, 3
+GitCommit: 1cbb5cf49b4c53bd5a986abf7a1afeb9a80eac1e
+Directory: 3.2
+
+Tags: 3.1.23, 3.1
+GitCommit: 1cbb5cf49b4c53bd5a986abf7a1afeb9a80eac1e
+Directory: 3.1
+
+Tags: 3.0.22, 3.0
+GitCommit: 1cbb5cf49b4c53bd5a986abf7a1afeb9a80eac1e
+Directory: 3.0

+ 26 - 0
bashbrew/go/vendor/src/github.com/docker-library/go-dockerlibrary/pkg/execpipe/execpipe_example_test.go

@@ -0,0 +1,26 @@
+package execpipe_test
+
+import (
+	"bytes"
+	"fmt"
+	"io"
+	"strings"
+
+	"github.com/docker-library/go-dockerlibrary/pkg/execpipe"
+)
+
+func Example() {
+	pipe, err := execpipe.RunCommand("go", "version")
+	if err != nil {
+		panic(err)
+	}
+	defer pipe.Close()
+
+	var buf bytes.Buffer
+	io.Copy(&buf, pipe)
+
+	fmt.Println(strings.SplitN(buf.String(), " version ", 2)[0])
+
+	// Output:
+	// go
+}

+ 31 - 0
bashbrew/go/vendor/src/github.com/docker-library/go-dockerlibrary/pkg/execpipe/execpipe_test.go

@@ -0,0 +1,31 @@
+package execpipe_test
+
+import (
+	"os"
+	"os/exec"
+	"testing"
+
+	"github.com/docker-library/go-dockerlibrary/pkg/execpipe"
+)
+
+func TestStdoutPipeError(t *testing.T) {
+	cmd := exec.Command("nothing", "really", "matters", "in", "the", "end")
+
+	// set "Stdout" so that "cmd.StdoutPipe" fails
+	// https://golang.org/src/os/exec/exec.go?s=16834:16883#L587
+	cmd.Stdout = os.Stdout
+
+	_, err := execpipe.Run(cmd)
+	if err == nil {
+		t.Errorf("Expected execpipe.Run to fail -- it did not")
+	}
+}
+
+func TestStartError(t *testing.T) {
+	// craft a definitely-invalid command so that "cmd.Start" fails
+	// https://golang.org/src/os/exec/exec.go?s=8739:8766#L303
+	_, err := execpipe.RunCommand("nothing-really-matters-in-the-end--bogus-command")
+	if err == nil {
+		t.Errorf("Expected execpipe.RunCommand to fail -- it did not")
+	}
+}

+ 32 - 0
bashbrew/go/vendor/src/github.com/docker-library/go-dockerlibrary/pkg/stripper/comments_example_test.go

@@ -0,0 +1,32 @@
+package stripper_test
+
+import (
+	"io"
+	"os"
+	"strings"
+
+	"github.com/docker-library/go-dockerlibrary/pkg/stripper"
+)
+
+func ExampleCommentStripper() {
+	r := strings.NewReader(`
+# opening comment
+a: b
+# comment!
+c: d # not a comment
+
+# another cheeky comment
+e: f
+`)
+
+	comStrip := stripper.NewCommentStripper(r)
+
+	// using CopyBuffer to force smaller Read sizes (better testing coverage that way)
+	io.CopyBuffer(os.Stdout, comStrip, make([]byte, 32))
+
+	// Output:
+	// a: b
+	// c: d # not a comment
+	//
+	// e: f
+}

+ 8 - 0
bashbrew/go/vendor/src/github.com/docker-library/go-dockerlibrary/pkg/templatelib/doc.go

@@ -0,0 +1,8 @@
+/*
+Package templatelib implements a group of useful functions for use with the stdlib text/template package.
+
+Usage:
+
+	tmpl, err := template.New("some-template").Funcs(templatelib.FuncMap).Parse("Hi, {{ join " " .Names }}")
+*/
+package templatelib

+ 18 - 3
bashbrew/go/vendor/src/github.com/docker-library/go-dockerlibrary/pkg/templatelib/lib.go

@@ -67,12 +67,15 @@ func stringsModifierActionFactory(a func(string, string) string) func([]string,
 	}
 }
 
-// TODO write some tests for these
-
 var FuncMap = template.FuncMap{
+	// {{- $isGitHub := hasPrefix "https://github.com/" $url -}}
+	// {{- $isHtml := hasSuffix ".html" $url -}}
 	"hasPrefix": swapStringsFuncBoolArgsOrder(strings.HasPrefix),
 	"hasSuffix": swapStringsFuncBoolArgsOrder(strings.HasSuffix),
 
+	// {{- $hugeIfTrue := .SomeValue | ternary "HUGE" "not so huge" -}}
+	// if .SomeValue is truthy, $hugeIfTrue will be "HUGE"
+	// (otherwise, "not so huge")
 	"ternary": func(truthy interface{}, falsey interface{}, val interface{}) interface{} {
 		if t, ok := template.IsTrue(val); !ok {
 			panic(fmt.Sprintf(`template.IsTrue(%+v) says things are NOT OK`, val))
@@ -83,14 +86,26 @@ var FuncMap = template.FuncMap{
 		}
 	},
 
+	// First Tag: {{- .Tags | first -}}
+	// Last Tag:  {{- .Tags | last -}}
 	"first": thingsActionFactory("first", true, func(args []interface{}, arg interface{}) interface{} { return arg }),
 	"last":  thingsActionFactory("last", false, func(args []interface{}, arg interface{}) interface{} { return arg }),
 
+	// JSON data dump: {{ json . }}
+	// (especially nice for taking data and piping it to "jq")
+	// (ie "some-tool inspect --format '{{ json . }}' some-things | jq .")
 	"json": func(v interface{}) (string, error) {
 		j, err := json.Marshal(v)
 		return string(j), err
 	},
-	"join":         stringsActionFactory("join", true, strings.Join),
+
+	// Everybody: {{- join ", " .Names -}}
+	// Concat: {{- join "/" "https://github.com" "jsmith" "some-repo" -}}
+	"join": stringsActionFactory("join", true, strings.Join),
+
+	// {{- $mungedUrl := $url | replace "git://" "https://" | trimSuffixes ".git" -}}
+	// turns: git://github.com/jsmith/some-repo.git
+	// into: https://github.com/jsmith/some-repo
 	"trimPrefixes": stringsActionFactory("trimPrefixes", false, stringsModifierActionFactory(strings.TrimPrefix)),
 	"trimSuffixes": stringsActionFactory("trimSuffixes", false, stringsModifierActionFactory(strings.TrimSuffix)),
 	"replace": stringsActionFactory("replace", false, func(strs []string, str string) string {

+ 193 - 0
bashbrew/go/vendor/src/github.com/docker-library/go-dockerlibrary/pkg/templatelib/lib_example_test.go

@@ -0,0 +1,193 @@
+package templatelib_test
+
+import (
+	"os"
+	"text/template"
+
+	"github.com/docker-library/go-dockerlibrary/pkg/templatelib"
+)
+
+func Example_prefixSuffix() {
+	tmpl, err := template.New("github-or-html").Funcs(templatelib.FuncMap).Parse(`
+		{{- . -}}
+
+		{{- if hasPrefix "https://github.com/" . -}}
+			{{- " " -}} GitHub
+		{{- end -}}
+
+		{{- if hasSuffix ".html" . -}}
+			{{- " " -}} HTML
+		{{- end -}}
+
+		{{- "\n" -}}
+	`)
+	if err != nil {
+		panic(err)
+	}
+
+	err = tmpl.Execute(os.Stdout, "https://github.com/example/example")
+	if err != nil {
+		panic(err)
+	}
+
+	err = tmpl.Execute(os.Stdout, "https://example.com/test.html")
+	if err != nil {
+		panic(err)
+	}
+
+	err = tmpl.Execute(os.Stdout, "https://example.com")
+	if err != nil {
+		panic(err)
+	}
+
+	err = tmpl.Execute(os.Stdout, "https://github.com/example/example/raw/master/test.html")
+	if err != nil {
+		panic(err)
+	}
+
+	// Output:
+	// https://github.com/example/example GitHub
+	// https://example.com/test.html HTML
+	// https://example.com
+	// https://github.com/example/example/raw/master/test.html GitHub HTML
+}
+
+func Example_ternary() {
+	tmpl, err := template.New("huge-if-true").Funcs(templatelib.FuncMap).Parse(`
+		{{- range $a := . -}}
+			{{ printf "%#v: %s\n" $a (ternary "HUGE" "not so huge" $a) }}
+		{{- end -}}
+	`)
+
+	err = tmpl.Execute(os.Stdout, []interface{}{
+		true,
+		false,
+		"true",
+		"false",
+		"",
+		nil,
+		1,
+		0,
+		9001,
+		[]bool{},
+		[]bool{false},
+	})
+	if err != nil {
+		panic(err)
+	}
+
+	// Output:
+	// true: HUGE
+	// false: not so huge
+	// "true": HUGE
+	// "false": HUGE
+	// "": not so huge
+	// <nil>: not so huge
+	// 1: HUGE
+	// 0: not so huge
+	// 9001: HUGE
+	// []bool{}: not so huge
+	// []bool{false}: HUGE
+}
+
+func Example_firstLast() {
+	tmpl, err := template.New("first-and-last").Funcs(templatelib.FuncMap).Parse(`First: {{ . | first }}, Last: {{ . | last }}`)
+
+	err = tmpl.Execute(os.Stdout, []interface{}{
+		"a",
+		"b",
+		"c",
+	})
+	if err != nil {
+		panic(err)
+	}
+
+	// Output:
+	// First: a, Last: c
+}
+
+func Example_json() {
+	tmpl, err := template.New("json").Funcs(templatelib.FuncMap).Parse(`
+		{{- json . -}}
+	`)
+
+	err = tmpl.Execute(os.Stdout, map[string]interface{}{
+		"a": []string{"1", "2", "3"},
+		"b": map[string]bool{"1": true, "2": false, "3": true},
+		"c": nil,
+	})
+	if err != nil {
+		panic(err)
+	}
+
+	// Output:
+	// {"a":["1","2","3"],"b":{"1":true,"2":false,"3":true},"c":null}
+}
+
+func Example_join() {
+	tmpl, err := template.New("join").Funcs(templatelib.FuncMap).Parse(`
+		Array: {{ . | join ", " }}{{ "\n" -}}
+		Args: {{ join ", " "a" "b" "c" -}}
+	`)
+
+	err = tmpl.Execute(os.Stdout, []string{
+		"1",
+		"2",
+		"3",
+	})
+	if err != nil {
+		panic(err)
+	}
+
+	// Output:
+	// Array: 1, 2, 3
+	// Args: a, b, c
+}
+
+func Example_trimReplaceGitToHttps() {
+	tmpl, err := template.New("git-to-https").Funcs(templatelib.FuncMap).Parse(`
+		{{- range . -}}
+			{{- . | replace "git://" "https://" | trimSuffixes ".git" }}{{ "\n" -}}
+		{{- end -}}
+	`)
+
+	err = tmpl.Execute(os.Stdout, []string{
+		"git://github.com/jsmith/some-repo.git",
+		"https://github.com/jsmith/some-repo.git",
+		"https://github.com/jsmith/some-repo",
+	})
+	if err != nil {
+		panic(err)
+	}
+
+	// Output:
+	// https://github.com/jsmith/some-repo
+	// https://github.com/jsmith/some-repo
+	// https://github.com/jsmith/some-repo
+}
+
+func Example_trimReplaceGitToGo() {
+	tmpl, err := template.New("git-to-go").Funcs(templatelib.FuncMap).Parse(`
+		{{- range . -}}
+			{{- . | trimPrefixes "git://" "http://" "https://" "ssh://" | trimSuffixes ".git" }}{{ "\n" -}}
+		{{- end -}}
+	`)
+
+	err = tmpl.Execute(os.Stdout, []string{
+		"git://github.com/jsmith/some-repo.git",
+		"https://github.com/jsmith/some-repo.git",
+		"https://github.com/jsmith/some-repo",
+		"ssh://github.com/jsmith/some-repo.git",
+		"github.com/jsmith/some-repo",
+	})
+	if err != nil {
+		panic(err)
+	}
+
+	// Output:
+	// github.com/jsmith/some-repo
+	// github.com/jsmith/some-repo
+	// github.com/jsmith/some-repo
+	// github.com/jsmith/some-repo
+	// github.com/jsmith/some-repo
+}

+ 45 - 0
bashbrew/go/vendor/src/github.com/docker-library/go-dockerlibrary/pkg/templatelib/lib_test.go

@@ -0,0 +1,45 @@
+package templatelib_test
+
+import (
+	"testing"
+	"text/template"
+	"unsafe"
+
+	"github.com/docker-library/go-dockerlibrary/pkg/templatelib"
+)
+
+func TestTernaryPanic(t *testing.T) {
+	// one of the only places template.IsTrue will return "false" for the "ok" value is an UnsafePointer (hence this test)
+
+	defer func() {
+		if r := recover(); r == nil {
+			t.Errorf("Expected panic, executed successfully instead")
+		} else if errText, ok := r.(string); !ok || errText != `template.IsTrue(<nil>) says things are NOT OK` {
+			t.Errorf("Unexpected panic: %v", errText)
+		}
+	}()
+
+	tmpl, err := template.New("unsafe-pointer").Funcs(templatelib.FuncMap).Parse(`{{ ternary "true" "false" . }}`)
+
+	err = tmpl.Execute(nil, unsafe.Pointer(uintptr(0)))
+	if err != nil {
+		t.Errorf("Expected panic, got error instead: %v", err)
+	}
+}
+
+func TestJoinPanic(t *testing.T) {
+	defer func() {
+		if r := recover(); r == nil {
+			t.Errorf("Expected panic, executed successfully instead")
+		} else if errText, ok := r.(string); !ok || errText != `"join" requires at least one argument` {
+			t.Errorf("Unexpected panic: %v", r)
+		}
+	}()
+
+	tmpl, err := template.New("join-no-arg").Funcs(templatelib.FuncMap).Parse(`{{ join }}`)
+
+	err = tmpl.Execute(nil, nil)
+	if err != nil {
+		t.Errorf("Expected panic, got error instead: %v", err)
+	}
+}

+ 3 - 2
library/aerospike

@@ -1,5 +1,6 @@
 # maintainer: Lucien Volmar <[email protected]> (@volmarl)
 
-3.12.0: git://github.com/aerospike/aerospike-server.docker@bebf2d588c7254bd26b5a024e644dfb492af2e6d
+
 3.12.1: git://github.com/aerospike/aerospike-server.docker@b956cea63cb9e48e9cd7d60daab64331917be39c
-latest: git://github.com/aerospike/aerospike-server.docker@b956cea63cb9e48e9cd7d60daab64331917be39c
+3.12.1.1: git://github.com/aerospike/aerospike-server.docker@03fe0e974b0866334e06a4655c17928ad2d5dbb0
+latest: git://github.com/aerospike/aerospike-server.docker@03fe0e974b0866334e06a4655c17928ad2d5dbb0

+ 8 - 7
library/alpine

@@ -1,9 +1,10 @@
 # maintainer: Glider Labs <[email protected]> (@gliderlabs)
 
-3.1: git://github.com/gliderlabs/docker-alpine@3d0e79188adb609440a3b2c8516d7bd0b9db9107 versions/library-3.1
-3.2: git://github.com/gliderlabs/docker-alpine@ef2b09086c8b3f9f673c5100470462a28efe9038 versions/library-3.2
-3.3: git://github.com/gliderlabs/docker-alpine@84063540fc7568984d0c1f819107fd02081696c7 versions/library-3.3
-3.4: git://github.com/gliderlabs/docker-alpine@fb9930f2c3179e629f5cff887742f31bbb7d8d46 versions/library-3.4
-3.5: git://github.com/gliderlabs/docker-alpine@cb5e568b84f4a48bb1245c602bae3de38a67bd55 versions/library-3.5
-latest: git://github.com/gliderlabs/docker-alpine@cb5e568b84f4a48bb1245c602bae3de38a67bd55 versions/library-3.5
-edge: git://github.com/gliderlabs/docker-alpine@fa6353d492aefa36c4a2e1c6130b891c85047e75 versions/library-edge
+3.1: git://github.com/gliderlabs/docker-alpine@3ecfb709e327bf0fc493fbeed7a687172e039f74 versions/library-3.1
+3.2: git://github.com/gliderlabs/docker-alpine@ac55306a59531d227d77f14fe0d58aafe71145ab versions/library-3.2
+3.3: git://github.com/gliderlabs/docker-alpine@84ace79768a9cbd6589d5677df0466612b68b4e5 versions/library-3.3
+3.4: git://github.com/gliderlabs/docker-alpine@66f6043e2ae88a609c6d2f7acfe22ddc601351c9 versions/library-3.4
+3.5: git://github.com/gliderlabs/docker-alpine@d5e1078ec0056ad7293d8e243f09d4940fae003f versions/library-3.5
+3.6: git://github.com/gliderlabs/docker-alpine@7876f2a67acdb739c266bfc2093ba1bee270e31a versions/library-3.6
+latest: git://github.com/gliderlabs/docker-alpine@7876f2a67acdb739c266bfc2093ba1bee270e31a versions/library-3.6
+edge: git://github.com/gliderlabs/docker-alpine@7aa37999a08a994d7d57eb22ac0546fc9e60d978 versions/library-edge

+ 8 - 8
library/bash

@@ -4,33 +4,33 @@ Maintainers: Tianon Gravi <[email protected]> (@tianon)
 GitRepo: https://github.com/tianon/docker-bash.git
 
 Tags: 4.4.12, 4.4, 4, latest
-GitCommit: 1cbb5cf49b4c53bd5a986abf7a1afeb9a80eac1e
+GitCommit: a4c649c11bcd28ca806860ff8b55ee423eb94a0d
 Directory: 4.4
 
 Tags: 4.3.48, 4.3
-GitCommit: 1cbb5cf49b4c53bd5a986abf7a1afeb9a80eac1e
+GitCommit: a4c649c11bcd28ca806860ff8b55ee423eb94a0d
 Directory: 4.3
 
 Tags: 4.2.53, 4.2
-GitCommit: 1cbb5cf49b4c53bd5a986abf7a1afeb9a80eac1e
+GitCommit: a4c649c11bcd28ca806860ff8b55ee423eb94a0d
 Directory: 4.2
 
 Tags: 4.1.17, 4.1
-GitCommit: 1cbb5cf49b4c53bd5a986abf7a1afeb9a80eac1e
+GitCommit: a4c649c11bcd28ca806860ff8b55ee423eb94a0d
 Directory: 4.1
 
 Tags: 4.0.44, 4.0
-GitCommit: 4438745d601d10d300e363f24205a3ca75307803
+GitCommit: a4c649c11bcd28ca806860ff8b55ee423eb94a0d
 Directory: 4.0
 
 Tags: 3.2.57, 3.2, 3
-GitCommit: 1cbb5cf49b4c53bd5a986abf7a1afeb9a80eac1e
+GitCommit: a4c649c11bcd28ca806860ff8b55ee423eb94a0d
 Directory: 3.2
 
 Tags: 3.1.23, 3.1
-GitCommit: 1cbb5cf49b4c53bd5a986abf7a1afeb9a80eac1e
+GitCommit: a4c649c11bcd28ca806860ff8b55ee423eb94a0d
 Directory: 3.1
 
 Tags: 3.0.22, 3.0
-GitCommit: 1cbb5cf49b4c53bd5a986abf7a1afeb9a80eac1e
+GitCommit: a4c649c11bcd28ca806860ff8b55ee423eb94a0d
 Directory: 3.0

+ 2 - 2
library/bonita

@@ -3,6 +3,6 @@
 # maintainer: Truc Nguyen <[email protected]> (@tnguyen1)
 # maintainer: Laurent Leseigneur <[email protected]> (@laurentleseigneur)
 
-7.3.3: git://github.com/Bonitasoft-Community/docker_bonita@19d78ec0f212891e97814b2db30891b9b280f7e5 7.3
 7.4.3: git://github.com/Bonitasoft-Community/docker_bonita@5e4d4c6d86a90b2f7639215e4098097200a8751a 7.4
-latest: git://github.com/Bonitasoft-Community/docker_bonita@5e4d4c6d86a90b2f7639215e4098097200a8751a 7.4
+7.5.0: git://github.com/Bonitasoft-Community/docker_bonita@d5b521cca0d88eab6f093ef38045d456ebbecde4 7.5
+latest: git://github.com/Bonitasoft-Community/docker_bonita@d5b521cca0d88eab6f093ef38045d456ebbecde4 7.5

+ 2 - 2
library/centos

@@ -5,11 +5,11 @@ Constraints: !aufs
 
 Tags: latest, centos7, 7
 GitFetch: refs/heads/CentOS-7
-GitCommit: 6febb01dab2e9177e64dd30cd5fe8f0148fd1d43
+GitCommit: 360a6653e50e82276b7e36209c3efff1e8391c62
 
 Tags: centos6, 6
 GitFetch: refs/heads/CentOS-6
-GitCommit: 8e63e14a3f8f62993f83865b4ddcbe8b2df9c78d
+GitCommit: 2ed7d30faced3068c700ae8d953100549c6a8317
 
 Tags: centos7.3.1611, 7.3.1611
 GitFetch: refs/heads/CentOS-7.3.1611

+ 1 - 1
library/clojure

@@ -1,7 +1,7 @@
 Maintainers: Paul Lam <[email protected]> (@Quantisan),
              Wes Morgan <[email protected]> (@cap10morgan)
 GitRepo: https://github.com/Quantisan/docker-clojure.git
-GitCommit: f0fd68d6a197b4d1852aefab698b35ce1ea9881e
+GitCommit: adeda5b2e562fef82b9aca22e9770e312841dc0f
 
 Tags: lein-2.7.1, lein, latest
 Directory: debian/lein

+ 25 - 1
library/docker

@@ -1,9 +1,21 @@
-# this file is generated via https://github.com/docker-library/docker/blob/88c8e8f75ff252bdbef4d63d8c2f437fc905ebad/generate-stackbrew-library.sh
+# this file is generated via https://github.com/docker-library/docker/blob/e7e2e3119360567641d334f1d274952236632357/generate-stackbrew-library.sh
 
 Maintainers: Tianon Gravi <[email protected]> (@tianon),
              Joseph Ferguson <[email protected]> (@yosifkit)
 GitRepo: https://github.com/docker-library/docker.git
 
+Tags: 17.06.0-ce-rc1, 17.06.0-ce, 17.06.0, 17.06-rc, rc, test
+GitCommit: e7e2e3119360567641d334f1d274952236632357
+Directory: 17.06-rc
+
+Tags: 17.06.0-ce-rc1-dind, 17.06.0-ce-dind, 17.06.0-dind, 17.06-rc-dind, rc-dind, test-dind
+GitCommit: e7e2e3119360567641d334f1d274952236632357
+Directory: 17.06-rc/dind
+
+Tags: 17.06.0-ce-rc1-git, 17.06.0-ce-git, 17.06.0-git, 17.06-rc-git, rc-git, test-git
+GitCommit: e7e2e3119360567641d334f1d274952236632357
+Directory: 17.06-rc/git
+
 Tags: 17.05.0-ce, 17.05.0, 17.05, 17, latest, edge
 GitCommit: 5a196cae40e2a0ab5050cf6d79b697e032352b24
 Directory: 17.05
@@ -16,6 +28,18 @@ Tags: 17.05.0-ce-git, 17.05.0-git, 17.05-git, 17-git, git, edge-git
 GitCommit: ce78a19aac321bbe50d060426b5b633cb5f74825
 Directory: 17.05/git
 
+Tags: 17.03.2-ce-rc1, 17.03.2-ce, 17.03.2, 17.03-rc
+GitCommit: 2c75eb72ab98b95256be008aa93efdec289d96e8
+Directory: 17.03-rc
+
+Tags: 17.03.2-ce-rc1-dind, 17.03.2-ce-dind, 17.03.2-dind, 17.03-rc-dind
+GitCommit: 2c75eb72ab98b95256be008aa93efdec289d96e8
+Directory: 17.03-rc/dind
+
+Tags: 17.03.2-ce-rc1-git, 17.03.2-ce-git, 17.03.2-git, 17.03-rc-git
+GitCommit: 2c75eb72ab98b95256be008aa93efdec289d96e8
+Directory: 17.03-rc/git
+
 Tags: 17.03.1-ce, 17.03.1, 17.03, stable
 GitCommit: 5a196cae40e2a0ab5050cf6d79b697e032352b24
 Directory: 17.03

+ 4 - 4
library/elasticsearch

@@ -4,12 +4,12 @@ Maintainers: Tianon Gravi <[email protected]> (@tianon),
              Joseph Ferguson <[email protected]> (@yosifkit)
 GitRepo: https://github.com/docker-library/elasticsearch.git
 
-Tags: 5.4.0, 5.4, 5, latest
-GitCommit: f9b79ebc2e8fd42372b8f302321585c4d09f9ccc
+Tags: 5.4.1, 5.4, 5, latest
+GitCommit: ca669a81afb503dedac6ba1bb8bef2abc158f081
 Directory: 5
 
-Tags: 5.4.0-alpine, 5.4-alpine, 5-alpine, alpine
-GitCommit: f9b79ebc2e8fd42372b8f302321585c4d09f9ccc
+Tags: 5.4.1-alpine, 5.4-alpine, 5-alpine, alpine
+GitCommit: ca669a81afb503dedac6ba1bb8bef2abc158f081
 Directory: 5/alpine
 
 Tags: 2.4.5, 2.4, 2

+ 38 - 6
library/flink

@@ -1,4 +1,4 @@
-# this file is generated via https://github.com/docker-flink/docker-flink/blob/e7395d7c3807ef35b72d8ae99a8723e0c12020f9/generate-stackbrew-library.sh
+# this file is generated via https://github.com/docker-flink/docker-flink/blob/a7f95c5f70cf393adc8d62ad1f03965162cfeb11/generate-stackbrew-library.sh
 
 Maintainers: Patrick Lucas <[email protected]> (@patricklucas),
              Ismaël Mejía <[email protected]> (@iemejia)
@@ -8,7 +8,7 @@ Tags: 1.2.1-hadoop2-scala_2.10
 GitCommit: 263dcb48ce49fcc129bbf09f331360549d573db5
 Directory: 1.2/hadoop2-scala_2.10-debian
 
-Tags: 1.2.1-hadoop2-scala_2.11, 1.2.1-hadoop2, 1.2-hadoop2, hadoop2
+Tags: 1.2.1-hadoop2-scala_2.11, 1.2.1-hadoop2, 1.2-hadoop2
 GitCommit: 263dcb48ce49fcc129bbf09f331360549d573db5
 Directory: 1.2/hadoop2-scala_2.11-debian
 
@@ -16,7 +16,7 @@ Tags: 1.2.1-hadoop24-scala_2.10
 GitCommit: 263dcb48ce49fcc129bbf09f331360549d573db5
 Directory: 1.2/hadoop24-scala_2.10-debian
 
-Tags: 1.2.1-hadoop24-scala_2.11, 1.2.1-hadoop24, 1.2-hadoop24, hadoop24
+Tags: 1.2.1-hadoop24-scala_2.11, 1.2.1-hadoop24, 1.2-hadoop24
 GitCommit: 263dcb48ce49fcc129bbf09f331360549d573db5
 Directory: 1.2/hadoop24-scala_2.11-debian
 
@@ -24,14 +24,46 @@ Tags: 1.2.1-hadoop26-scala_2.10
 GitCommit: 263dcb48ce49fcc129bbf09f331360549d573db5
 Directory: 1.2/hadoop26-scala_2.10-debian
 
-Tags: 1.2.1-hadoop26-scala_2.11, 1.2.1-hadoop26, 1.2-hadoop26, hadoop26
+Tags: 1.2.1-hadoop26-scala_2.11, 1.2.1-hadoop26, 1.2-hadoop26
 GitCommit: 263dcb48ce49fcc129bbf09f331360549d573db5
 Directory: 1.2/hadoop26-scala_2.11-debian
 
-Tags: 1.2.1-hadoop27-scala_2.10, 1.2.1-scala_2.10, 1.2-scala_2.10, scala_2.10
+Tags: 1.2.1-hadoop27-scala_2.10, 1.2.1-scala_2.10, 1.2-scala_2.10
 GitCommit: 263dcb48ce49fcc129bbf09f331360549d573db5
 Directory: 1.2/hadoop27-scala_2.10-debian
 
-Tags: 1.2.1-hadoop27-scala_2.11, 1.2.1-scala_2.11, 1.2-scala_2.11, scala_2.11, 1.2.1-hadoop27, 1.2-hadoop27, hadoop27, 1.2.1, 1.2, latest
+Tags: 1.2.1-hadoop27-scala_2.11, 1.2.1-scala_2.11, 1.2-scala_2.11, 1.2.1-hadoop27, 1.2-hadoop27, 1.2.1, 1.2
 GitCommit: 263dcb48ce49fcc129bbf09f331360549d573db5
 Directory: 1.2/hadoop27-scala_2.11-debian
+
+Tags: 1.3.0-hadoop2-scala_2.10
+GitCommit: 1806f7f315e9369dfcd6a8d4a5ee117403ba605d
+Directory: 1.3/hadoop2-scala_2.10-debian
+
+Tags: 1.3.0-hadoop2-scala_2.11, 1.3.0-hadoop2, 1.3-hadoop2, hadoop2
+GitCommit: 1806f7f315e9369dfcd6a8d4a5ee117403ba605d
+Directory: 1.3/hadoop2-scala_2.11-debian
+
+Tags: 1.3.0-hadoop24-scala_2.10
+GitCommit: 1806f7f315e9369dfcd6a8d4a5ee117403ba605d
+Directory: 1.3/hadoop24-scala_2.10-debian
+
+Tags: 1.3.0-hadoop24-scala_2.11, 1.3.0-hadoop24, 1.3-hadoop24, hadoop24
+GitCommit: 1806f7f315e9369dfcd6a8d4a5ee117403ba605d
+Directory: 1.3/hadoop24-scala_2.11-debian
+
+Tags: 1.3.0-hadoop26-scala_2.10
+GitCommit: 1806f7f315e9369dfcd6a8d4a5ee117403ba605d
+Directory: 1.3/hadoop26-scala_2.10-debian
+
+Tags: 1.3.0-hadoop26-scala_2.11, 1.3.0-hadoop26, 1.3-hadoop26, hadoop26
+GitCommit: 1806f7f315e9369dfcd6a8d4a5ee117403ba605d
+Directory: 1.3/hadoop26-scala_2.11-debian
+
+Tags: 1.3.0-hadoop27-scala_2.10, 1.3.0-scala_2.10, 1.3-scala_2.10, scala_2.10
+GitCommit: 1806f7f315e9369dfcd6a8d4a5ee117403ba605d
+Directory: 1.3/hadoop27-scala_2.10-debian
+
+Tags: 1.3.0-hadoop27-scala_2.11, 1.3.0-scala_2.11, 1.3-scala_2.11, scala_2.11, 1.3.0-hadoop27, 1.3-hadoop27, hadoop27, 1.3.0, 1.3, latest
+GitCommit: 1806f7f315e9369dfcd6a8d4a5ee117403ba605d
+Directory: 1.3/hadoop27-scala_2.11-debian

+ 11 - 11
library/gazebo

@@ -1,22 +1,22 @@
 # maintainer: Nate Koenig <[email protected]> (@nkoenig)
 
-gzserver4:      git://github.com/osrf/docker_images@4bef0d70d4855205d86528899a6686c098fb7fc0 gazebo/gazebo4/gzserver4
-libgazebo4:     git://github.com/osrf/docker_images@4bef0d70d4855205d86528899a6686c098fb7fc0 gazebo/gazebo4/libgazebo4
+gzserver4:      git://github.com/osrf/docker_images@01b58010bf338672b25ac381279edf60d33a842b gazebo/gazebo4/gzserver4
+libgazebo4:     git://github.com/osrf/docker_images@01b58010bf338672b25ac381279edf60d33a842b gazebo/gazebo4/libgazebo4
 # Docker EOL: 2016-01-25
 
-gzserver5:      git://github.com/osrf/docker_images@4bef0d70d4855205d86528899a6686c098fb7fc0 gazebo/gazebo5/gzserver5
-libgazebo5:     git://github.com/osrf/docker_images@4bef0d70d4855205d86528899a6686c098fb7fc0 gazebo/gazebo5/libgazebo5
+gzserver5:      git://github.com/osrf/docker_images@01b58010bf338672b25ac381279edf60d33a842b gazebo/gazebo5/gzserver5
+libgazebo5:     git://github.com/osrf/docker_images@01b58010bf338672b25ac381279edf60d33a842b gazebo/gazebo5/libgazebo5
 # Docker EOL: 2017-01-25
 
-gzserver6:      git://github.com/osrf/docker_images@4bef0d70d4855205d86528899a6686c098fb7fc0 gazebo/gazebo6/gzserver6
-libgazebo6:     git://github.com/osrf/docker_images@4bef0d70d4855205d86528899a6686c098fb7fc0 gazebo/gazebo6/libgazebo6
+gzserver6:      git://github.com/osrf/docker_images@01b58010bf338672b25ac381279edf60d33a842b gazebo/gazebo6/gzserver6
+libgazebo6:     git://github.com/osrf/docker_images@01b58010bf338672b25ac381279edf60d33a842b gazebo/gazebo6/libgazebo6
 # Docker EOL: 2017-01-25
 
-gzserver7:      git://github.com/osrf/docker_images@4bef0d70d4855205d86528899a6686c098fb7fc0 gazebo/gazebo7/gzserver7
-libgazebo7:     git://github.com/osrf/docker_images@4bef0d70d4855205d86528899a6686c098fb7fc0 gazebo/gazebo7/libgazebo7
+gzserver7:      git://github.com/osrf/docker_images@01b58010bf338672b25ac381279edf60d33a842b gazebo/gazebo7/gzserver7
+libgazebo7:     git://github.com/osrf/docker_images@01b58010bf338672b25ac381279edf60d33a842b gazebo/gazebo7/libgazebo7
 # Docker EOL: 2021-01-25
 
-gzserver8:      git://github.com/osrf/docker_images@4bef0d70d4855205d86528899a6686c098fb7fc0 gazebo/gazebo8/gzserver8
-libgazebo8:     git://github.com/osrf/docker_images@4bef0d70d4855205d86528899a6686c098fb7fc0 gazebo/gazebo8/libgazebo8
-latest:         git://github.com/osrf/docker_images@4bef0d70d4855205d86528899a6686c098fb7fc0 gazebo/gazebo8/libgazebo8
+gzserver8:      git://github.com/osrf/docker_images@01b58010bf338672b25ac381279edf60d33a842b gazebo/gazebo8/gzserver8
+libgazebo8:     git://github.com/osrf/docker_images@01b58010bf338672b25ac381279edf60d33a842b gazebo/gazebo8/libgazebo8
+latest:         git://github.com/osrf/docker_images@01b58010bf338672b25ac381279edf60d33a842b gazebo/gazebo8/libgazebo8
 # Docker EOL: 2019-01-25

+ 5 - 5
library/ghost

@@ -1,13 +1,13 @@
-# this file is generated via https://github.com/docker-library/ghost/blob/7251ebfe67deb5452377435b0645a10fe81399b5/generate-stackbrew-library.sh
+# this file is generated via https://github.com/docker-library/ghost/blob/ee2ce866bd53499316d32bd915eca326af6707f2/generate-stackbrew-library.sh
 
 Maintainers: Tianon Gravi <[email protected]> (@tianon),
              Joseph Ferguson <[email protected]> (@yosifkit)
 GitRepo: https://github.com/docker-library/ghost.git
 
 Tags: 0.11.9, 0.11, 0, latest
-GitCommit: 8435a22109f8d1556c3e824b1ca3cfadd2454f37
-Directory: debian
+GitCommit: ee2ce866bd53499316d32bd915eca326af6707f2
+Directory: 0.11/debian
 
 Tags: 0.11.9-alpine, 0.11-alpine, 0-alpine, alpine
-GitCommit: 8435a22109f8d1556c3e824b1ca3cfadd2454f37
-Directory: alpine
+GitCommit: ee2ce866bd53499316d32bd915eca326af6707f2
+Directory: 0.11/alpine

+ 9 - 1
library/golang

@@ -1,4 +1,4 @@
-# this file is generated via https://github.com/docker-library/golang/blob/445ba23ad32bf53dba66ce6309cab168c9307ce2/generate-stackbrew-library.sh
+# this file is generated via https://github.com/docker-library/golang/blob/495a742832974d434c6e3356e19c93b0e82543c8/generate-stackbrew-library.sh
 
 Maintainers: Tianon Gravi <[email protected]> (@tianon),
              Joseph Ferguson <[email protected]> (@yosifkit),
@@ -21,6 +21,10 @@ Tags: 1.7.6-alpine, 1.7-alpine
 GitCommit: 9e519a8844c25e38fe67547e8f681ada486e473b
 Directory: 1.7/alpine
 
+Tags: 1.7.6-alpine3.6, 1.7-alpine3.6
+GitCommit: 495a742832974d434c6e3356e19c93b0e82543c8
+Directory: 1.7/alpine3.6
+
 Tags: 1.7.6-alpine3.5, 1.7-alpine3.5
 GitCommit: 9e519a8844c25e38fe67547e8f681ada486e473b
 Directory: 1.7/alpine3.5
@@ -51,6 +55,10 @@ Tags: 1.8.3-alpine, 1.8-alpine, 1-alpine, alpine
 GitCommit: 64b88dc3e9d83e71eafc000fed1f0d5e289b3e65
 Directory: 1.8/alpine
 
+Tags: 1.8.3-alpine3.6, 1.8-alpine3.6, 1-alpine3.6, alpine3.6
+GitCommit: 495a742832974d434c6e3356e19c93b0e82543c8
+Directory: 1.8/alpine3.6
+
 Tags: 1.8.3-windowsservercore, 1.8-windowsservercore, 1-windowsservercore, windowsservercore
 GitCommit: 64b88dc3e9d83e71eafc000fed1f0d5e289b3e65
 Directory: 1.8/windows/windowsservercore

+ 1 - 1
library/httpd

@@ -17,5 +17,5 @@ GitCommit: 1883f2ec8be5f2a0cd176673a249c618ad7976ba
 Directory: 2.4
 
 Tags: 2.4.25-alpine, 2.4-alpine, 2-alpine, alpine
-GitCommit: 1883f2ec8be5f2a0cd176673a249c618ad7976ba
+GitCommit: 656b3859734d70b47386fd8bac58d5f719df596b
 Directory: 2.4/alpine

+ 4 - 4
library/jenkins

@@ -2,8 +2,8 @@
 # maintainer: Michael Neale <[email protected]> (@michaelneale)
 # maintainer: Carlos Sanchez <[email protected]> (@carlossg)
 
-latest: git://github.com/jenkinsci/jenkins-ci.org-docker@06306a35681df39e0dda7d464682ea08d3baf2ea
-2.46.2: git://github.com/jenkinsci/jenkins-ci.org-docker@06306a35681df39e0dda7d464682ea08d3baf2ea
+latest: git://github.com/jenkinsci/jenkins-ci.org-docker@6a74b7da7ef84a36679fdb39a6f94e1d75b4054f
+2.46.3: git://github.com/jenkinsci/jenkins-ci.org-docker@6a74b7da7ef84a36679fdb39a6f94e1d75b4054f
 
-alpine: git://github.com/jenkinsci/jenkins-ci.org-docker@2bbb3bfcabf7f67746c429dee2dc9f139dda3c2a
-2.46.2-alpine: git://github.com/jenkinsci/jenkins-ci.org-docker@2bbb3bfcabf7f67746c429dee2dc9f139dda3c2a
+alpine: git://github.com/jenkinsci/jenkins-ci.org-docker@5ba23b94bc894e0672566e803df0d60031bc598e
+2.46.3-alpine: git://github.com/jenkinsci/jenkins-ci.org-docker@5ba23b94bc894e0672566e803df0d60031bc598e

+ 6 - 6
library/jruby

@@ -1,21 +1,21 @@
 Maintainers: Brian Goff <[email protected]> (@cpuguy83)
 GitRepo: https://github.com/cpuguy83/docker-jruby.git
 GitFetch: refs/heads/master
-GitCommit: 4d84d984a568f0ffc8f302b241a9febcb0816a83
+GitCommit: 75a584324e83c6eb9782c06fe2131467f75d223a
 
-Tags: latest, 9, 9.1, 9.1-jre, 9.1.9, 9.1.9-jre, 9.1.9.0, 9.1.9.0-jre
+Tags: latest, 9, 9.1, 9.1-jre, 9.1.10, 9.1.10-jre, 9.1.10.0, 9.1.10.0-jre
 Directory: 9000/jre
 
-Tags: 9-alpine, 9.1-alpine, 9.1-jre-alpine, 9.1.9-alpine, 9.1.9-jre-alpine, 9.1.9.0-alpine, 9.1.9.0-jre-alpine
+Tags: 9-alpine, 9.1-alpine, 9.1-jre-alpine, 9.1.10-alpine, 9.1.10-jre-alpine, 9.1.10.0-alpine, 9.1.10.0-jre-alpine
 Directory: 9000/alpine-jre
 
-Tags: 9.1-jdk, 9.1.9-jdk, 9.1.9.0-jdk
+Tags: 9.1-jdk, 9.1.10-jdk, 9.1.10.0-jdk
 Directory: 9000/jdk
 
-Tags: 9.1-jdk-alpine, 9.1.9-jdk-alpine, 9.1.9.0-jdk-alpine
+Tags: 9.1-jdk-alpine, 9.1.10-jdk-alpine, 9.1.10.0-jdk-alpine
 Directory: 9000/alpine-jdk
 
-Tags: 9-onbuild, 9.1-onbuild, 9.1.9-onbuild, 9.1.9.0-onbuild
+Tags: 9-onbuild, 9.1-onbuild, 9.1.10-onbuild, 9.1.10.0-onbuild
 Directory: 9000/onbuild
 
 Tags: 1.7, 1.7.27, 1.7-jre, 1.7.27-jre

+ 1 - 1
library/julia

@@ -5,4 +5,4 @@ Maintainers: Tianon Gravi <[email protected]> (@tianon),
 GitRepo: https://github.com/docker-library/julia.git
 
 Tags: 0.5.2, 0.5, 0, latest
-GitCommit: 61929cae66213ef964e8d23351d7b1a9a0cfc674
+GitCommit: 0b6b28b5b0957cc491d406b798ece911a6fa5b26

+ 4 - 4
library/kapacitor

@@ -10,12 +10,12 @@ GitRepo: git://github.com/influxdata/influxdata-docker
 GitCommit: 3a8019600cefcb4ffc85c3e3a155980d2dc3f5ff
 Directory: kapacitor/1.2/alpine
 
-Tags: 1.3, 1.3.0, latest
+Tags: 1.3, 1.3.1, latest
 GitRepo: git://github.com/influxdata/influxdata-docker
-GitCommit: 6359ccc62dbcd59f128b6abef74fd637ab103146
+GitCommit: 6ac578811109d3eefb8535c82949307c7f1bb4c6
 Directory: kapacitor/1.3
 
-Tags: 1.3-alpine, 1.3.0-alpine, alpine
+Tags: 1.3-alpine, 1.3.1-alpine, alpine
 GitRepo: git://github.com/influxdata/influxdata-docker
-GitCommit: 6359ccc62dbcd59f128b6abef74fd637ab103146
+GitCommit: 6ac578811109d3eefb8535c82949307c7f1bb4c6
 Directory: kapacitor/1.3/alpine

+ 2 - 2
library/kibana

@@ -4,8 +4,8 @@ Maintainers: Tianon Gravi <[email protected]> (@tianon),
              Joseph Ferguson <[email protected]> (@yosifkit)
 GitRepo: https://github.com/docker-library/kibana.git
 
-Tags: 5.4.0, 5.4, 5, latest
-GitCommit: 69daf8cf674823df85e2d48489d5c26f1c2f7d8a
+Tags: 5.4.1, 5.4, 5, latest
+GitCommit: 8b5427a374fe93fe87f31e1249f0d64a09c02307
 Directory: 5
 
 Tags: 4.6.4, 4.6, 4

+ 2 - 2
library/kong

@@ -3,8 +3,8 @@ GitRepo: https://github.com/Mashape/docker-kong.git
 # needs "Constraints" to match "centos" (which this image is "FROM")
 Constraints: !aufs
 
-Tags: 0.10, 0.10.2, latest
-GitCommit: 76ae424ef7d4926561580d070b56f568e6711830
+Tags: 0.10, 0.10.3, latest
+GitCommit: a209825a9a74f9921c71c13ecb6e39a1b8e18aef
 
 Tags: 0.9, 0.9.9
 GitCommit: b512fa58a9c5a085b21bc5ffb90299cbc4e48eba

+ 4 - 4
library/logstash

@@ -4,12 +4,12 @@ Maintainers: Tianon Gravi <[email protected]> (@tianon),
              Joseph Ferguson <[email protected]> (@yosifkit)
 GitRepo: https://github.com/docker-library/logstash.git
 
-Tags: 5.4.0, 5.4, 5, latest
-GitCommit: 17f03721f0d21cd1dae3077f3dad4b3b489a9557
+Tags: 5.4.1, 5.4, 5, latest
+GitCommit: fcab4d9ce9b16bb2b14f263fc05d54204300a86b
 Directory: 5
 
-Tags: 5.4.0-alpine, 5.4-alpine, 5-alpine, alpine
-GitCommit: 17f03721f0d21cd1dae3077f3dad4b3b489a9557
+Tags: 5.4.1-alpine, 5.4-alpine, 5-alpine, alpine
+GitCommit: fcab4d9ce9b16bb2b14f263fc05d54204300a86b
 Directory: 5/alpine
 
 Tags: 2.4.1, 2.4, 2

+ 2 - 2
library/mariadb

@@ -12,8 +12,8 @@ Tags: 10.2.6, 10.2
 GitCommit: 60e0d2d15e74f6fed5b6cc0c2cab4b3f9def6e6e
 Directory: 10.2
 
-Tags: 10.1.23, 10.1, 10, latest
-GitCommit: 352f47fdb034a359e27ef6223f252a9e75e2f596
+Tags: 10.1.24, 10.1, 10, latest
+GitCommit: 9ac6a8d627c15e7cecb59e82e3c712d8c71d209e
 Directory: 10.1
 
 Tags: 10.0.31, 10.0

+ 4 - 4
library/mongo

@@ -31,11 +31,11 @@ GitCommit: 8f2bcee7f80c90ff79f282d99ee89f3ea1dcbca4
 Directory: 3.4/windows/windowsservercore
 Constraints: windowsservercore
 
-Tags: 3.5.7, 3.5, unstable
-GitCommit: 04d1eaa89239434eaaa8433067bffc8a1be8cae8
+Tags: 3.5.8, 3.5, unstable
+GitCommit: 45055cc0c67da614a3edf24369fb1484701f88e3
 Directory: 3.5
 
-Tags: 3.5.7-windowsservercore, 3.5-windowsservercore, unstable-windowsservercore
-GitCommit: b380604c031e2e13884538fead9780ea77ce2b59
+Tags: 3.5.8-windowsservercore, 3.5-windowsservercore, unstable-windowsservercore
+GitCommit: 3fd2ca2e905e3b826e0244bb73a55e61e8db298e
 Directory: 3.5/windows/windowsservercore
 Constraints: windowsservercore

+ 3 - 3
library/mongo-express

@@ -1,5 +1,5 @@
 # maintainer: Nick Cox <[email protected]> (@knickers)
 
-0.38.0: git://github.com/mongo-express/mongo-express-docker@500a1db15deef043a6937302a1407b25369c8b4a
-0.38: git://github.com/mongo-express/mongo-express-docker@500a1db15deef043a6937302a1407b25369c8b4a
-latest: git://github.com/mongo-express/mongo-express-docker@500a1db15deef043a6937302a1407b25369c8b4a
+0.40.0: git://github.com/mongo-express/mongo-express-docker@bbe8d015485c29b3bea01b7eb88ac56349fc17ae
+0.40: git://github.com/mongo-express/mongo-express-docker@bbe8d015485c29b3bea01b7eb88ac56349fc17ae
+latest: git://github.com/mongo-express/mongo-express-docker@bbe8d015485c29b3bea01b7eb88ac56349fc17ae

+ 38 - 8
library/neo4j

@@ -9,22 +9,42 @@ Maintainers: Ben Butler-Cole <[email protected]> (@benbc),
              Steven R Baker <[email protected]> (@srbaker),
              Praveena Fernandes <[email protected]> (@praveenag)
 
-Tags: 3.2.0, 3.2, latest
+Tags: 3.2.1, 3.2, latest
+GitRepo: https://github.com/neo4j/docker-neo4j-publish.git
+GitCommit: ae826519a7acf389396ab6c388fe299c21b41107
+Directory: 3.2.1/community
+
+Tags: 3.2.1-enterprise, 3.2-enterprise, enterprise
+GitRepo: https://github.com/neo4j/docker-neo4j-publish.git
+GitCommit: ae826519a7acf389396ab6c388fe299c21b41107
+Directory: 3.2.1/enterprise
+
+Tags: 3.2.0
 GitRepo: https://github.com/neo4j/docker-neo4j-publish.git
 GitCommit: c0364e1bcbc35a536abb93ec88dc3bfc288b23bf
 Directory: 3.2.0/community
 
-Tags: 3.2.0-enterprise, 3.2-enterprise, enterprise
+Tags: 3.2.0-enterprise
 GitRepo: https://github.com/neo4j/docker-neo4j-publish.git
 GitCommit: c0364e1bcbc35a536abb93ec88dc3bfc288b23bf
 Directory: 3.2.0/enterprise
 
-Tags: 3.1.4, 3.1
+Tags: 3.1.5, 3.1
+GitRepo: https://github.com/neo4j/docker-neo4j-publish.git
+GitCommit: ae826519a7acf389396ab6c388fe299c21b41107
+Directory: 3.1.5/community
+
+Tags: 3.1.5-enterprise, 3.1-enterprise
+GitRepo: https://github.com/neo4j/docker-neo4j-publish.git
+GitCommit: ae826519a7acf389396ab6c388fe299c21b41107
+Directory: 3.1.5/enterprise
+
+Tags: 3.1.4
 GitRepo: https://github.com/neo4j/docker-neo4j-publish.git
 GitCommit: 86c2eb04e9f44e2c6febf5c14d0a7fe67c81f35c
 Directory: 3.1.4/community
 
-Tags: 3.1.4-enterprise, 3.1-enterprise
+Tags: 3.1.4-enterprise
 GitRepo: https://github.com/neo4j/docker-neo4j-publish.git
 GitCommit: 86c2eb04e9f44e2c6febf5c14d0a7fe67c81f35c
 Directory: 3.1.4/enterprise
@@ -71,12 +91,12 @@ Directory: 3.1.0/enterprise
 
 Tags: 3.0.9, 3.0
 GitRepo: https://github.com/neo4j/docker-neo4j-publish.git
-GitCommit: 9d66d834e455a0db1a2f5d65ebd4123d4721ae44
+GitCommit: ae826519a7acf389396ab6c388fe299c21b41107
 Directory: 3.0.9/community
 
 Tags: 3.0.9-enterprise, 3.0-enterprise
 GitRepo: https://github.com/neo4j/docker-neo4j-publish.git
-GitCommit: 9d66d834e455a0db1a2f5d65ebd4123d4721ae44
+GitCommit: ae826519a7acf389396ab6c388fe299c21b41107
 Directory: 3.0.9/enterprise
 
 Tags: 3.0.8
@@ -169,12 +189,22 @@ GitRepo: https://github.com/neo4j/docker-neo4j-publish.git
 GitCommit: 36ac547bcffcce2c7c0f249b340d062ba08e2598
 Directory: 3.0.0/enterprise
 
-Tags: 2.3.10, 2.3
+Tags: 2.3.11, 2.3
+GitRepo: https://github.com/neo4j/docker-neo4j-publish.git
+GitCommit: ae826519a7acf389396ab6c388fe299c21b41107
+Directory: 2.3.11/community
+
+Tags: 2.3.11-enterprise, 2.3-enterprise
+GitRepo: https://github.com/neo4j/docker-neo4j-publish.git
+GitCommit: ae826519a7acf389396ab6c388fe299c21b41107
+Directory: 2.3.11/enterprise
+
+Tags: 2.3.10
 GitRepo: https://github.com/neo4j/docker-neo4j-publish.git
 GitCommit: d5355408a618e3f7c9797baa55ae298c3493e900
 Directory: 2.3.10/community
 
-Tags: 2.3.10-enterprise, 2.3-enterprise
+Tags: 2.3.10-enterprise
 GitRepo: https://github.com/neo4j/docker-neo4j-publish.git
 GitCommit: d5355408a618e3f7c9797baa55ae298c3493e900
 Directory: 2.3.10/enterprise

+ 8 - 8
library/nginx

@@ -3,20 +3,20 @@
 Maintainers: NGINX Docker Maintainers <[email protected]> (@nginxinc)
 GitRepo: https://github.com/nginxinc/docker-nginx.git
 
-Tags: 1.13.0, mainline, 1, 1.13, latest
-GitCommit: 53da9a295dfa6c666630a72d9c03dfbd1d2eb37d
+Tags: 1.13.1, mainline, 1, 1.13, latest
+GitCommit: c769ad8ab21dfb374fa33d8fb9d0822d0fa8d2e5
 Directory: mainline/stretch
 
-Tags: 1.13.0-perl, mainline-perl, 1-perl, 1.13-perl, perl
-GitCommit: 53da9a295dfa6c666630a72d9c03dfbd1d2eb37d
+Tags: 1.13.1-perl, mainline-perl, 1-perl, 1.13-perl, perl
+GitCommit: c769ad8ab21dfb374fa33d8fb9d0822d0fa8d2e5
 Directory: mainline/stretch-perl
 
-Tags: 1.13.0-alpine, mainline-alpine, 1-alpine, 1.13-alpine, alpine
-GitCommit: 53da9a295dfa6c666630a72d9c03dfbd1d2eb37d
+Tags: 1.13.1-alpine, mainline-alpine, 1-alpine, 1.13-alpine, alpine
+GitCommit: c769ad8ab21dfb374fa33d8fb9d0822d0fa8d2e5
 Directory: mainline/alpine
 
-Tags: 1.13.0-alpine-perl, mainline-alpine-perl, 1-alpine-perl, 1.13-alpine-perl, alpine-perl
-GitCommit: 53da9a295dfa6c666630a72d9c03dfbd1d2eb37d
+Tags: 1.13.1-alpine-perl, mainline-alpine-perl, 1-alpine-perl, 1.13-alpine-perl, alpine-perl
+GitCommit: c769ad8ab21dfb374fa33d8fb9d0822d0fa8d2e5
 Directory: mainline/alpine-perl
 
 Tags: 1.12.0, stable, 1.12

+ 24 - 24
library/node

@@ -1,34 +1,34 @@
-# this file is generated via https://github.com/nodejs/docker-node/blob/e866277fa5a05cc0fafb14ffc406343b9c7ef9f7/generate-stackbrew-library.sh
+# this file is generated via https://github.com/nodejs/docker-node/blob/20f3de9046e2472b70d57d8b11be9cea7c4863bc/generate-stackbrew-library.sh
 
 Maintainers: The Node.js Docker Team <https://github.com/nodejs/docker-node> (@nodejs)
 GitRepo: https://github.com/nodejs/docker-node.git
 
-Tags: 7.10.0, 7.10, 7, latest
-GitCommit: 581eebd097343c9f1c1ceb5260cd2ec770410e29
-Directory: 7.10
+Tags: 8.0.0, 8.0, 8, latest
+GitCommit: 09e42c172ffd6f8631fb1cb7a0785fd890c0f11a
+Directory: 8.0
 
-Tags: 7.10.0-alpine, 7.10-alpine, 7-alpine, alpine
-GitCommit: 581eebd097343c9f1c1ceb5260cd2ec770410e29
-Directory: 7.10/alpine
+Tags: 8.0.0-alpine, 8.0-alpine, 8-alpine, alpine
+GitCommit: 09e42c172ffd6f8631fb1cb7a0785fd890c0f11a
+Directory: 8.0/alpine
 
-Tags: 7.10.0-onbuild, 7.10-onbuild, 7-onbuild, onbuild
-GitCommit: 2e7fd977fb10088c82c559926580b60a47f40732
-Directory: 7.10/onbuild
+Tags: 8.0.0-onbuild, 8.0-onbuild, 8-onbuild, onbuild
+GitCommit: 20f3de9046e2472b70d57d8b11be9cea7c4863bc
+Directory: 8.0/onbuild
 
-Tags: 7.10.0-slim, 7.10-slim, 7-slim, slim
-GitCommit: 581eebd097343c9f1c1ceb5260cd2ec770410e29
-Directory: 7.10/slim
+Tags: 8.0.0-slim, 8.0-slim, 8-slim, slim
+GitCommit: 09e42c172ffd6f8631fb1cb7a0785fd890c0f11a
+Directory: 8.0/slim
 
-Tags: 7.10.0-wheezy, 7.10-wheezy, 7-wheezy, wheezy
-GitCommit: 581eebd097343c9f1c1ceb5260cd2ec770410e29
-Directory: 7.10/wheezy
+Tags: 8.0.0-wheezy, 8.0-wheezy, 8-wheezy, wheezy
+GitCommit: 09e42c172ffd6f8631fb1cb7a0785fd890c0f11a
+Directory: 8.0/wheezy
 
 Tags: 6.10.3, 6.10, 6, boron
-GitCommit: 581eebd097343c9f1c1ceb5260cd2ec770410e29
+GitCommit: b10c352085bbb7933d22bba1215ada9d266dd365
 Directory: 6.10
 
 Tags: 6.10.3-alpine, 6.10-alpine, 6-alpine, boron-alpine
-GitCommit: 581eebd097343c9f1c1ceb5260cd2ec770410e29
+GitCommit: b10c352085bbb7933d22bba1215ada9d266dd365
 Directory: 6.10/alpine
 
 Tags: 6.10.3-onbuild, 6.10-onbuild, 6-onbuild, boron-onbuild
@@ -36,19 +36,19 @@ GitCommit: ffecb0e9ca258d6b20ff60b30956bd33f7357142
 Directory: 6.10/onbuild
 
 Tags: 6.10.3-slim, 6.10-slim, 6-slim, boron-slim
-GitCommit: 581eebd097343c9f1c1ceb5260cd2ec770410e29
+GitCommit: b10c352085bbb7933d22bba1215ada9d266dd365
 Directory: 6.10/slim
 
 Tags: 6.10.3-wheezy, 6.10-wheezy, 6-wheezy, boron-wheezy
-GitCommit: 581eebd097343c9f1c1ceb5260cd2ec770410e29
+GitCommit: b10c352085bbb7933d22bba1215ada9d266dd365
 Directory: 6.10/wheezy
 
 Tags: 4.8.3, 4.8, 4, argon
-GitCommit: 581eebd097343c9f1c1ceb5260cd2ec770410e29
+GitCommit: b10c352085bbb7933d22bba1215ada9d266dd365
 Directory: 4.8
 
 Tags: 4.8.3-alpine, 4.8-alpine, 4-alpine, argon-alpine
-GitCommit: 581eebd097343c9f1c1ceb5260cd2ec770410e29
+GitCommit: b10c352085bbb7933d22bba1215ada9d266dd365
 Directory: 4.8/alpine
 
 Tags: 4.8.3-onbuild, 4.8-onbuild, 4-onbuild, argon-onbuild
@@ -56,10 +56,10 @@ GitCommit: 974c2a3c3cc488c3491a7ffd85e90c079d0d78e1
 Directory: 4.8/onbuild
 
 Tags: 4.8.3-slim, 4.8-slim, 4-slim, argon-slim
-GitCommit: 581eebd097343c9f1c1ceb5260cd2ec770410e29
+GitCommit: b10c352085bbb7933d22bba1215ada9d266dd365
 Directory: 4.8/slim
 
 Tags: 4.8.3-wheezy, 4.8-wheezy, 4-wheezy, argon-wheezy
-GitCommit: 581eebd097343c9f1c1ceb5260cd2ec770410e29
+GitCommit: b10c352085bbb7933d22bba1215ada9d266dd365
 Directory: 4.8/wheezy
 

+ 8 - 8
library/openjdk

@@ -16,24 +16,24 @@ Tags: 7u131-jdk, 7u131, 7-jdk, 7
 GitCommit: 93316d3b14379d29fe0cd363bd6839eb8dd8cc7b
 Directory: 7-jdk
 
-Tags: 7u121-jdk-alpine, 7u121-alpine, 7-jdk-alpine, 7-alpine
-GitCommit: 0476812eabd178c77534f3c03bd0a2673822d7b9
+Tags: 7u131-jdk-alpine, 7u131-alpine, 7-jdk-alpine, 7-alpine
+GitCommit: 43e145f3fc5fd98a141f0c1c6fe90b9ea93977da
 Directory: 7-jdk/alpine
 
 Tags: 7u131-jre, 7-jre
 GitCommit: 93316d3b14379d29fe0cd363bd6839eb8dd8cc7b
 Directory: 7-jre
 
-Tags: 7u121-jre-alpine, 7-jre-alpine
-GitCommit: 0476812eabd178c77534f3c03bd0a2673822d7b9
+Tags: 7u131-jre-alpine, 7-jre-alpine
+GitCommit: 43e145f3fc5fd98a141f0c1c6fe90b9ea93977da
 Directory: 7-jre/alpine
 
 Tags: 8u131-jdk, 8u131, 8-jdk, 8, jdk, latest
 GitCommit: 415b0cc42d91ef5d70597d8a24d942967728242b
 Directory: 8-jdk
 
-Tags: 8u121-jdk-alpine, 8u121-alpine, 8-jdk-alpine, 8-alpine, jdk-alpine, alpine
-GitCommit: 4e39684901490c13eaef7892c44e39043d7c4bed
+Tags: 8u131-jdk-alpine, 8u131-alpine, 8-jdk-alpine, 8-alpine, jdk-alpine, alpine
+GitCommit: 43e145f3fc5fd98a141f0c1c6fe90b9ea93977da
 Directory: 8-jdk/alpine
 
 Tags: 8u131-jdk-windowsservercore, 8u131-windowsservercore, 8-jdk-windowsservercore, 8-windowsservercore, jdk-windowsservercore, windowsservercore
@@ -50,8 +50,8 @@ Tags: 8u131-jre, 8-jre, jre
 GitCommit: 415b0cc42d91ef5d70597d8a24d942967728242b
 Directory: 8-jre
 
-Tags: 8u121-jre-alpine, 8-jre-alpine, jre-alpine
-GitCommit: 4e39684901490c13eaef7892c44e39043d7c4bed
+Tags: 8u131-jre-alpine, 8-jre-alpine, jre-alpine
+GitCommit: 43e145f3fc5fd98a141f0c1c6fe90b9ea93977da
 Directory: 8-jre/alpine
 
 Tags: 9-b170-jdk, 9-b170, 9-jdk, 9

+ 3 - 3
library/opensuse

@@ -7,7 +7,7 @@ Constraints: !aufs
 
 Tags: 42.2, leap, latest
 GitFetch: refs/heads/openSUSE-42.2
-GitCommit: f7b9727c232140cee5d2a6fd435a6596dcb6373c
+GitCommit: 2e21169522cebe7ee058cc0a60a68f8b68e61580
 
 Tags: 42.1
 GitFetch: refs/heads/openSUSE-42.1
@@ -15,8 +15,8 @@ GitCommit: 28ae2ecb12d4ec628bd0ca561ae5ed6b64c1eecd
 
 Tags: 13.2, harlequin
 GitFetch: refs/heads/openSUSE-13.2
-GitCommit: 8f1d2c75d09c7f40d2d91d0c31f0b566aa9dec41
+GitCommit: 7f5fc0037112c6f1078bdaf4d28589acd4ab7411
 
 Tags: tumbleweed
 GitFetch: refs/heads/openSUSE-Tumbleweed
-GitCommit: 666aa48d02452db40afd284253c2f01645835f1e
+GitCommit: 7d4007327641584895695af2c696458088fe0bc2

+ 1 - 1
library/oraclelinux

@@ -1,7 +1,7 @@
 Maintainers: Oracle Linux Product Team <[email protected]> (@Oracle)
 GitRepo: https://github.com/oracle/docker-images.git
 GitFetch: refs/heads/OracleLinux-images
-GitCommit: 7d52eb40b0e481f4051fd3bda10a5e9e9b0e2296
+GitCommit: 1b04dd4a07ace9fe0436ae9debc704fa3f5f049a
 
 Tags: 7-slim
 Directory: OracleLinux/7-slim

+ 3 - 3
library/orientdb

@@ -4,13 +4,13 @@
 
 2.1.25: git://github.com/orientechnologies/orientdb-docker@8a9633c19fa9c53a5446b9b62997ff389813e785 2.1
 
-2.2.20: git://github.com/orientechnologies/orientdb-docker@b31e8d67d3453b53e3cb5e52f9192d52d9fdd774 2.2/x86_64/alpine
+2.2.21: git://github.com/orientechnologies/orientdb-docker@f86ba10c2aa487e0c6e28d887df7bc84c37b32fd 2.2/x86_64/alpine
 
-2.2.20-spatial: git://github.com/orientechnologies/orientdb-docker@b31e8d67d3453b53e3cb5e52f9192d52d9fdd774 2.2-spatial/x86_64/alpine
+2.2.21-spatial: git://github.com/orientechnologies/orientdb-docker@f86ba10c2aa487e0c6e28d887df7bc84c37b32fd 2.2-spatial/x86_64/alpine
 
 3.0.0m1: git://github.com/orientechnologies/orientdb-docker@79d29bd16d998765a17c687de854067c0cad0d7a 3.0/x86_64/alpine
 
 3.0.0m1-spatial: git://github.com/orientechnologies/orientdb-docker@79d29bd16d998765a17c687de854067c0cad0d7a 3.0-spatial/x86_64/alpine
 
-latest: git://github.com/orientechnologies/orientdb-docker@b31e8d67d3453b53e3cb5e52f9192d52d9fdd774 2.2/x86_64/alpine
+latest: git://github.com/orientechnologies/orientdb-docker@f86ba10c2aa487e0c6e28d887df7bc84c37b32fd 2.2/x86_64/alpine
 

+ 8 - 8
library/owncloud

@@ -28,18 +28,18 @@ Tags: 8.2.11-fpm, 8.2-fpm, 8-fpm
 GitCommit: 3182c1fc072fb43c165d65de7bee16aa2374efd7
 Directory: 8.2/fpm
 
-Tags: 9.0.9-apache, 9.0-apache, 9.0.9, 9.0
-GitCommit: f6016dc858a63c398df0e6797e5b45ca0eaca336
+Tags: 9.0.10-apache, 9.0-apache, 9.0.10, 9.0
+GitCommit: 6bb84a4253c8a84af6a9b3968eb61388c65be5fb
 Directory: 9.0/apache
 
-Tags: 9.0.9-fpm, 9.0-fpm
-GitCommit: f6016dc858a63c398df0e6797e5b45ca0eaca336
+Tags: 9.0.10-fpm, 9.0-fpm
+GitCommit: 6bb84a4253c8a84af6a9b3968eb61388c65be5fb
 Directory: 9.0/fpm
 
-Tags: 9.1.5-apache, 9.1-apache, 9-apache, apache, 9.1.5, 9.1, 9, latest
-GitCommit: 167aa3b02320358a8cc3cdbbbc3ffb4643d6e369
+Tags: 9.1.6-apache, 9.1-apache, 9-apache, apache, 9.1.6, 9.1, 9, latest
+GitCommit: 4a90ae0bfeec972185fd920130b70b6c51eec6f4
 Directory: 9.1/apache
 
-Tags: 9.1.5-fpm, 9.1-fpm, 9-fpm, fpm
-GitCommit: 167aa3b02320358a8cc3cdbbbc3ffb4643d6e369
+Tags: 9.1.6-fpm, 9.1-fpm, 9-fpm, fpm
+GitCommit: 4a90ae0bfeec972185fd920130b70b6c51eec6f4
 Directory: 9.1/fpm

+ 1 - 1
library/percona

@@ -5,7 +5,7 @@ Maintainers: Tianon Gravi <[email protected]> (@tianon),
 GitRepo: https://github.com/docker-library/percona.git
 
 Tags: 5.7.18, 5.7, 5, latest
-GitCommit: 8af216919026b5736b774c05497e5a637f02e49d
+GitCommit: e7c1c5c025d785a17d3e43c4f4e15b5407bd611d
 Directory: 5.7
 
 Tags: 5.6.36, 5.6

+ 21 - 21
library/php

@@ -5,85 +5,85 @@ Maintainers: Tianon Gravi <[email protected]> (@tianon),
 GitRepo: https://github.com/docker-library/php.git
 
 Tags: 7.1.5-cli, 7.1-cli, 7-cli, cli, 7.1.5, 7.1, 7, latest
-GitCommit: 76a1c5ca161f1ed6aafb2c2d26f83ec17360bc68
+GitCommit: c48c629568bc166b58b271114d0b44ea6d5cfa09
 Directory: 7.1
 
 Tags: 7.1.5-alpine, 7.1-alpine, 7-alpine, alpine
-GitCommit: 76a1c5ca161f1ed6aafb2c2d26f83ec17360bc68
+GitCommit: c48c629568bc166b58b271114d0b44ea6d5cfa09
 Directory: 7.1/alpine
 
 Tags: 7.1.5-apache, 7.1-apache, 7-apache, apache
-GitCommit: 76a1c5ca161f1ed6aafb2c2d26f83ec17360bc68
+GitCommit: c48c629568bc166b58b271114d0b44ea6d5cfa09
 Directory: 7.1/apache
 
 Tags: 7.1.5-fpm, 7.1-fpm, 7-fpm, fpm
-GitCommit: 76a1c5ca161f1ed6aafb2c2d26f83ec17360bc68
+GitCommit: c48c629568bc166b58b271114d0b44ea6d5cfa09
 Directory: 7.1/fpm
 
 Tags: 7.1.5-fpm-alpine, 7.1-fpm-alpine, 7-fpm-alpine, fpm-alpine
-GitCommit: 76a1c5ca161f1ed6aafb2c2d26f83ec17360bc68
+GitCommit: c48c629568bc166b58b271114d0b44ea6d5cfa09
 Directory: 7.1/fpm/alpine
 
 Tags: 7.1.5-zts, 7.1-zts, 7-zts, zts
-GitCommit: 76a1c5ca161f1ed6aafb2c2d26f83ec17360bc68
+GitCommit: c48c629568bc166b58b271114d0b44ea6d5cfa09
 Directory: 7.1/zts
 
 Tags: 7.1.5-zts-alpine, 7.1-zts-alpine, 7-zts-alpine, zts-alpine
-GitCommit: 76a1c5ca161f1ed6aafb2c2d26f83ec17360bc68
+GitCommit: c48c629568bc166b58b271114d0b44ea6d5cfa09
 Directory: 7.1/zts/alpine
 
 Tags: 7.0.19-cli, 7.0-cli, 7.0.19, 7.0
-GitCommit: 76a1c5ca161f1ed6aafb2c2d26f83ec17360bc68
+GitCommit: c48c629568bc166b58b271114d0b44ea6d5cfa09
 Directory: 7.0
 
 Tags: 7.0.19-alpine, 7.0-alpine
-GitCommit: 76a1c5ca161f1ed6aafb2c2d26f83ec17360bc68
+GitCommit: c48c629568bc166b58b271114d0b44ea6d5cfa09
 Directory: 7.0/alpine
 
 Tags: 7.0.19-apache, 7.0-apache
-GitCommit: 76a1c5ca161f1ed6aafb2c2d26f83ec17360bc68
+GitCommit: c48c629568bc166b58b271114d0b44ea6d5cfa09
 Directory: 7.0/apache
 
 Tags: 7.0.19-fpm, 7.0-fpm
-GitCommit: 76a1c5ca161f1ed6aafb2c2d26f83ec17360bc68
+GitCommit: c48c629568bc166b58b271114d0b44ea6d5cfa09
 Directory: 7.0/fpm
 
 Tags: 7.0.19-fpm-alpine, 7.0-fpm-alpine
-GitCommit: 76a1c5ca161f1ed6aafb2c2d26f83ec17360bc68
+GitCommit: c48c629568bc166b58b271114d0b44ea6d5cfa09
 Directory: 7.0/fpm/alpine
 
 Tags: 7.0.19-zts, 7.0-zts
-GitCommit: 76a1c5ca161f1ed6aafb2c2d26f83ec17360bc68
+GitCommit: c48c629568bc166b58b271114d0b44ea6d5cfa09
 Directory: 7.0/zts
 
 Tags: 7.0.19-zts-alpine, 7.0-zts-alpine
-GitCommit: 76a1c5ca161f1ed6aafb2c2d26f83ec17360bc68
+GitCommit: c48c629568bc166b58b271114d0b44ea6d5cfa09
 Directory: 7.0/zts/alpine
 
 Tags: 5.6.30-cli, 5.6-cli, 5-cli, 5.6.30, 5.6, 5
-GitCommit: 76a1c5ca161f1ed6aafb2c2d26f83ec17360bc68
+GitCommit: c48c629568bc166b58b271114d0b44ea6d5cfa09
 Directory: 5.6
 
 Tags: 5.6.30-alpine, 5.6-alpine, 5-alpine
-GitCommit: 76a1c5ca161f1ed6aafb2c2d26f83ec17360bc68
+GitCommit: c48c629568bc166b58b271114d0b44ea6d5cfa09
 Directory: 5.6/alpine
 
 Tags: 5.6.30-apache, 5.6-apache, 5-apache
-GitCommit: 76a1c5ca161f1ed6aafb2c2d26f83ec17360bc68
+GitCommit: c48c629568bc166b58b271114d0b44ea6d5cfa09
 Directory: 5.6/apache
 
 Tags: 5.6.30-fpm, 5.6-fpm, 5-fpm
-GitCommit: 76a1c5ca161f1ed6aafb2c2d26f83ec17360bc68
+GitCommit: c48c629568bc166b58b271114d0b44ea6d5cfa09
 Directory: 5.6/fpm
 
 Tags: 5.6.30-fpm-alpine, 5.6-fpm-alpine, 5-fpm-alpine
-GitCommit: 76a1c5ca161f1ed6aafb2c2d26f83ec17360bc68
+GitCommit: c48c629568bc166b58b271114d0b44ea6d5cfa09
 Directory: 5.6/fpm/alpine
 
 Tags: 5.6.30-zts, 5.6-zts, 5-zts
-GitCommit: 76a1c5ca161f1ed6aafb2c2d26f83ec17360bc68
+GitCommit: c48c629568bc166b58b271114d0b44ea6d5cfa09
 Directory: 5.6/zts
 
 Tags: 5.6.30-zts-alpine, 5.6-zts-alpine, 5-zts-alpine
-GitCommit: 76a1c5ca161f1ed6aafb2c2d26f83ec17360bc68
+GitCommit: c48c629568bc166b58b271114d0b44ea6d5cfa09
 Directory: 5.6/zts/alpine

+ 6 - 6
library/rabbitmq

@@ -4,18 +4,18 @@ Maintainers: Tianon Gravi <[email protected]> (@tianon),
              Joseph Ferguson <[email protected]> (@yosifkit)
 GitRepo: https://github.com/docker-library/rabbitmq.git
 
-Tags: 3.6.9, 3.6, 3, latest
-GitCommit: 1509b142f0b858bb9d8521397f34229cd3027c1e
+Tags: 3.6.10, 3.6, 3, latest
+GitCommit: 4761fd0c03b8ca4e81967019e564d0659e4b7b74
 Directory: 3.6/debian
 
-Tags: 3.6.9-management, 3.6-management, 3-management, management
+Tags: 3.6.10-management, 3.6-management, 3-management, management
 GitCommit: 79277042564875d55e4b05a60c65b6eb46651a94
 Directory: 3.6/debian/management
 
-Tags: 3.6.9-alpine, 3.6-alpine, 3-alpine, alpine
-GitCommit: 1509b142f0b858bb9d8521397f34229cd3027c1e
+Tags: 3.6.10-alpine, 3.6-alpine, 3-alpine, alpine
+GitCommit: 4761fd0c03b8ca4e81967019e564d0659e4b7b74
 Directory: 3.6/alpine
 
-Tags: 3.6.9-management-alpine, 3.6-management-alpine, 3-management-alpine, management-alpine
+Tags: 3.6.10-management-alpine, 3.6-management-alpine, 3-management-alpine, management-alpine
 GitCommit: 79277042564875d55e4b05a60c65b6eb46651a94
 Directory: 3.6/alpine/management

+ 12 - 12
library/ruby

@@ -5,15 +5,15 @@ Maintainers: Tianon Gravi <[email protected]> (@tianon),
 GitRepo: https://github.com/docker-library/ruby.git
 
 Tags: 2.1.10, 2.1
-GitCommit: b12b0fd99eed0dc416f3f85d4643be69c44e4fa7
+GitCommit: c5693b25aa865489fee130e572a3f11bccebd21b
 Directory: 2.1
 
 Tags: 2.1.10-slim, 2.1-slim
-GitCommit: b12b0fd99eed0dc416f3f85d4643be69c44e4fa7
+GitCommit: c5693b25aa865489fee130e572a3f11bccebd21b
 Directory: 2.1/slim
 
 Tags: 2.1.10-alpine, 2.1-alpine
-GitCommit: b12b0fd99eed0dc416f3f85d4643be69c44e4fa7
+GitCommit: c5693b25aa865489fee130e572a3f11bccebd21b
 Directory: 2.1/alpine
 
 Tags: 2.1.10-onbuild, 2.1-onbuild
@@ -21,15 +21,15 @@ GitCommit: 5d04363db6f7ae316ef7056063f020557db828e1
 Directory: 2.1/onbuild
 
 Tags: 2.2.7, 2.2
-GitCommit: 869369d45905b991585920ec2f44a81abd08e2e6
+GitCommit: 82b764e1635acbfcce392d4c0cb6f703a739e173
 Directory: 2.2
 
 Tags: 2.2.7-slim, 2.2-slim
-GitCommit: 869369d45905b991585920ec2f44a81abd08e2e6
+GitCommit: 82b764e1635acbfcce392d4c0cb6f703a739e173
 Directory: 2.2/slim
 
 Tags: 2.2.7-alpine, 2.2-alpine
-GitCommit: 869369d45905b991585920ec2f44a81abd08e2e6
+GitCommit: 82b764e1635acbfcce392d4c0cb6f703a739e173
 Directory: 2.2/alpine
 
 Tags: 2.2.7-onbuild, 2.2-onbuild
@@ -37,15 +37,15 @@ GitCommit: 5d04363db6f7ae316ef7056063f020557db828e1
 Directory: 2.2/onbuild
 
 Tags: 2.3.4, 2.3
-GitCommit: d2644c44a3e2a8a07f604dc4667aafdc9ac04cef
+GitCommit: 09c6a1602c111cf0cc83bf1df3186a85314ce398
 Directory: 2.3
 
 Tags: 2.3.4-slim, 2.3-slim
-GitCommit: d2644c44a3e2a8a07f604dc4667aafdc9ac04cef
+GitCommit: 09c6a1602c111cf0cc83bf1df3186a85314ce398
 Directory: 2.3/slim
 
 Tags: 2.3.4-alpine, 2.3-alpine
-GitCommit: d2644c44a3e2a8a07f604dc4667aafdc9ac04cef
+GitCommit: 09c6a1602c111cf0cc83bf1df3186a85314ce398
 Directory: 2.3/alpine
 
 Tags: 2.3.4-onbuild, 2.3-onbuild
@@ -53,15 +53,15 @@ GitCommit: 1b08f346713a1293c2a9238e470e086126e2e28f
 Directory: 2.3/onbuild
 
 Tags: 2.4.1, 2.4, 2, latest
-GitCommit: 0011ab1a6a0d7452d81e5e7dde02ac0753e466aa
+GitCommit: 21bc2bf9f98aa749f1bd85d190cf0991dac87fc9
 Directory: 2.4
 
 Tags: 2.4.1-slim, 2.4-slim, 2-slim, slim
-GitCommit: 0011ab1a6a0d7452d81e5e7dde02ac0753e466aa
+GitCommit: 21bc2bf9f98aa749f1bd85d190cf0991dac87fc9
 Directory: 2.4/slim
 
 Tags: 2.4.1-alpine, 2.4-alpine, 2-alpine, alpine
-GitCommit: 0011ab1a6a0d7452d81e5e7dde02ac0753e466aa
+GitCommit: 21bc2bf9f98aa749f1bd85d190cf0991dac87fc9
 Directory: 2.4/alpine
 
 Tags: 2.4.1-onbuild, 2.4-onbuild, 2-onbuild, onbuild

+ 12 - 12
library/sentry

@@ -1,20 +1,20 @@
-# this file is generated via https://github.com/getsentry/docker-sentry/blob/14a4752274f9627ab59cb02ad54801b04c8b3b1d/generate-stackbrew-library.sh
+# this file is generated via https://github.com/getsentry/docker-sentry/blob/35aa3956a16cf82f7419481558132ff8bc8989b1/generate-stackbrew-library.sh
 
 Maintainers: Matt Robenolt <[email protected]> (@mattrobenolt)
 GitRepo: https://github.com/getsentry/docker-sentry.git
 
-Tags: 8.15.0, 8.15
-GitCommit: a40471912184a4a013d00e13ef1bdca581860bd3
-Directory: 8.15
-
-Tags: 8.15.0-onbuild, 8.15-onbuild
-GitCommit: a40471912184a4a013d00e13ef1bdca581860bd3
-Directory: 8.15/onbuild
-
-Tags: 8.16.0, 8.16, 8, latest
-GitCommit: 14a4752274f9627ab59cb02ad54801b04c8b3b1d
+Tags: 8.16.1, 8.16
+GitCommit: 3b060a7ceaee5f5b0bdb6cf88e1e0559c62be709
 Directory: 8.16
 
-Tags: 8.16.0-onbuild, 8.16-onbuild, 8-onbuild, onbuild
+Tags: 8.16.1-onbuild, 8.16-onbuild
 GitCommit: 14a4752274f9627ab59cb02ad54801b04c8b3b1d
 Directory: 8.16/onbuild
+
+Tags: 8.17.0, 8.17, 8, latest
+GitCommit: 35aa3956a16cf82f7419481558132ff8bc8989b1
+Directory: 8.17
+
+Tags: 8.17.0-onbuild, 8.17-onbuild, 8-onbuild, onbuild
+GitCommit: 35aa3956a16cf82f7419481558132ff8bc8989b1
+Directory: 8.17/onbuild

+ 4 - 4
library/telegraf

@@ -10,12 +10,12 @@ GitRepo: git://github.com/influxdata/influxdata-docker
 GitCommit: 3a8019600cefcb4ffc85c3e3a155980d2dc3f5ff
 Directory: telegraf/1.2/alpine
 
-Tags: 1.3, 1.3.0, latest
+Tags: 1.3, 1.3.1, latest
 GitRepo: git://github.com/influxdata/influxdata-docker
-GitCommit: 3a8019600cefcb4ffc85c3e3a155980d2dc3f5ff
+GitCommit: fbaa1728c1d2b9fb7de929d4bd50d38a923355cf
 Directory: telegraf/1.3
 
-Tags: 1.3-alpine, 1.3.0-alpine, alpine
+Tags: 1.3-alpine, 1.3.1-alpine, alpine
 GitRepo: git://github.com/influxdata/influxdata-docker
-GitCommit: 3a8019600cefcb4ffc85c3e3a155980d2dc3f5ff
+GitCommit: fbaa1728c1d2b9fb7de929d4bd50d38a923355cf
 Directory: telegraf/1.3/alpine

+ 4 - 12
library/traefik

@@ -1,19 +1,11 @@
 Maintainers: Emile Vauge <[email protected]> (@emilevauge),
              Vincent Demeester <[email protected]> (@vdemeester),
              Ludovic Fernandez <[email protected]> (@ldez)
-             
 GitRepo: https://github.com/containous/traefik-library-image.git
 
-Tags: v1.3.0-rc3, 1.3.0-rc3, v1.3, 1.3, raclette
-GitCommit: 30ac6799a25b679aae46e7f0b54deec7b15ece9d
+Tags: v1.3.0, 1.3.0, v1.3, 1.3, raclette, latest
+GitCommit: 9ccd85a426ec167ad8c5e441f91fdff1790461b7
 
-Tags: v1.3.0-rc3-alpine, 1.3.0-rc3-alpine, v1.3-alpine, 1.3-alpine, raclette-alpine
-GitCommit: 30ac6799a25b679aae46e7f0b54deec7b15ece9d
-Directory: alpine
-
-Tags: v1.2.3, 1.2.3, v1.2, 1.2, morbier, latest
-GitCommit: 50d631ddf197da6228172cb86ab6098d875a6ea0
-
-Tags: v1.2.3-alpine, 1.2.3-alpine, v1.2-alpine, 1.2-alpine, morbier-alpine
-GitCommit: 50d631ddf197da6228172cb86ab6098d875a6ea0
+Tags: v1.3.0-alpine, 1.3.0-alpine, v1.3-alpine, 1.3-alpine, raclette-alpine
+GitCommit: 9ccd85a426ec167ad8c5e441f91fdff1790461b7
 Directory: alpine

+ 22 - 22
library/ubuntu

@@ -8,34 +8,34 @@ GitFetch: refs/heads/dist
 # see also https://wiki.ubuntu.com/Releases#Current
 
 # commits: (master..dist)
-#  - fb06b03 Update tarballs
-#    - `ubuntu:artful`: 20170511.1
-#    - `ubuntu:trusty`: 20170330
-#    - `ubuntu:xenial`: 20170510
-#    - `ubuntu:yakkety`: 20170327
-#    - `ubuntu:zesty`: 20170411
-
-# 20170511.1
-Tags: 17.10, artful-20170511.1, artful, devel
-GitCommit: fb06b03251856d9a3c143332398512b3895e33b6
+#  - 784da92 Update tarballs
+#    - `ubuntu:artful`: 20170601
+#    - `ubuntu:trusty`: 20170602
+#    - `ubuntu:xenial`: 20170517.1
+#    - `ubuntu:yakkety`: 20170517.1
+#    - `ubuntu:zesty`: 20170517.1
+
+# 20170601
+Tags: 17.10, artful-20170601, artful, devel
+GitCommit: 784da92cdc6ac5fc1c42e69f878f02d2b012f7b4
 Directory: artful
 
-# 20170330
-Tags: 14.04.5, 14.04, trusty-20170330, trusty
-GitCommit: fb06b03251856d9a3c143332398512b3895e33b6
+# 20170602
+Tags: 14.04.5, 14.04, trusty-20170602, trusty
+GitCommit: 784da92cdc6ac5fc1c42e69f878f02d2b012f7b4
 Directory: trusty
 
-# 20170510
-Tags: 16.04, xenial-20170510, xenial, latest
-GitCommit: fb06b03251856d9a3c143332398512b3895e33b6
+# 20170517.1
+Tags: 16.04, xenial-20170517.1, xenial, latest
+GitCommit: 784da92cdc6ac5fc1c42e69f878f02d2b012f7b4
 Directory: xenial
 
-# 20170327
-Tags: 16.10, yakkety-20170327, yakkety
-GitCommit: fb06b03251856d9a3c143332398512b3895e33b6
+# 20170517.1
+Tags: 16.10, yakkety-20170517.1, yakkety
+GitCommit: 784da92cdc6ac5fc1c42e69f878f02d2b012f7b4
 Directory: yakkety
 
-# 20170411
-Tags: 17.04, zesty-20170411, zesty, rolling
-GitCommit: fb06b03251856d9a3c143332398512b3895e33b6
+# 20170517.1
+Tags: 17.04, zesty-20170517.1, zesty, rolling
+GitCommit: 784da92cdc6ac5fc1c42e69f878f02d2b012f7b4
 Directory: zesty

+ 4 - 4
library/xwiki

@@ -5,14 +5,14 @@ Tags: 8, 8.4, 8.4.5, 8-mysql-tomcat, mysql-tomcat, lts-mysql-tomcat, lts-mysql,
 GitCommit: 50b6fe1af4b98337bc7d6053f840169e457f21a6
 Directory: 8/mysql-tomcat
 
-Tags: 9, 9.3, 9.3.1, 9-mysql-tomcat, stable-mysql-tomcat, stable-mysql, stable
-GitCommit: 259fee92fef80ac0aba4334fb41604f9d7109f81
+Tags: 9, 9.3, 9.3.1, 9.4, 9-mysql-tomcat, stable-mysql-tomcat, stable-mysql, stable
+GitCommit: 074c853fdb84c4522894cce8ab6d6d442e97c402
 Directory: 9/mysql-tomcat
 
 Tags: 8-postgres-tomcat, 8.4-postgres-tomcat, 8.4.5-postgres-tomcat, postgres-tomcat, lts-postgres-tomcat, lts-postgres
 GitCommit: 50b6fe1af4b98337bc7d6053f840169e457f21a6
 Directory: 8/postgres-tomcat
 
-Tags: 9-postgres-tomcat, 9.3-postgres-tomcat, 9.3.1-postgres-tomcat, stable-postgres-tomcat, stable-postgres
-GitCommit: 259fee92fef80ac0aba4334fb41604f9d7109f81
+Tags: 9-postgres-tomcat, 9.3-postgres-tomcat, 9.3.1-postgres-tomcat, 9.4-postgres-tomcat, stable-postgres-tomcat, stable-postgres
+GitCommit: 074c853fdb84c4522894cce8ab6d6d442e97c402
 Directory: 9/postgres-tomcat