You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@openwhisk.apache.org by GitBox <gi...@apache.org> on 2018/10/24 02:07:33 UTC

[GitHub] csantanapr closed pull request #55: Cleaned the vendor folder

csantanapr closed pull request #55: Cleaned the vendor folder
URL: https://github.com/apache/incubator-openwhisk-runtime-go/pull/55
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/common/gobuild.py b/common/gobuild.py
index 053ed69..8cd3cf0 100755
--- a/common/gobuild.py
+++ b/common/gobuild.py
@@ -43,6 +43,8 @@ def sources(launcher, source_dir, main):
     # copy the launcher fixing the main
     if not has_main:
         dst = "%s/main__.go" % source_dir
+        if os.path.isdir("%s/main" % source_dir):
+            dst = "%s/main/main__.go" % source_dir
         with codecs.open(dst, 'w', 'utf-8') as d:
             with codecs.open(launcher, 'r', 'utf-8') as e:
                 code = e.read()
@@ -55,6 +57,8 @@ def build(parent, source_dir, target):
       "PATH": os.environ["PATH"],
       "GOPATH": os.path.abspath(parent)
     }
+    if os.path.isdir("%s/main" % source_dir):
+        source_dir += "/main"
     p = subprocess.Popen(
         ["go", "build", "-i", "-ldflags=-s -w",  "-o", target],
         stdout=subprocess.PIPE,
diff --git a/docs/DEPLOY.md b/docs/DEPLOY.md
index 583fae2..c059fac 100644
--- a/docs/DEPLOY.md
+++ b/docs/DEPLOY.md
@@ -100,7 +100,7 @@ To create a vendor folder, you need to
 
 - install the [dep](https://github.com/golang/dep) tool
 - cd to the `src/hello` folder (*not* the `src` folder)
-- run `dep init` the first time (it will create 2 manifest files `Gopkg.lock` and `Gopkg.toml`) or `dep ensure` if you already have the manifest files.
+- run `GOPATH=$PWD/../.. dep init` the first time (it will create 2 manifest files `Gopkg.lock` and `Gopkg.toml`) or `dep ensure` if you already have the manifest files.
 
 The layout will be something like this:
 
@@ -123,6 +123,8 @@ Check the example `golang-hello-vendor`.
 
 Note you do not need to store the `vendor` folder in the version control system as it can be regenerated (only the manifest files), but you need to include the entire vendor folder when you deploy the action.
 
+If you need to use vendor folder in the main package, you need to create a directory `main` and place all the source code that would normally go in the top level, in the `main` folder instead.  A vendor folder in the top level *does not work*.
+
 <a name="vscode">
 
 ### Using VsCode
diff --git a/examples/EXAMPLES.md b/examples/EXAMPLES.md
index a59d25e..2515dac 100644
--- a/examples/EXAMPLES.md
+++ b/examples/EXAMPLES.md
@@ -31,6 +31,7 @@ Available examples:
 - [Simple Golang action](golang-main-single) main is `main.Main`
 - [Simple Golang action](golang-hello-single) main is `main.Hello`
 - [Golang action with a subpackage](golang-main-package) main is `main.Main` invoking a `hello.Hello`
+- [Golang action with a vendor folder](golang-main-vendor) main is `main.Main` using a dependency `github.com/rs/zerolog`
 - [Golang action with a subpackage and vendor folder](golang-hello-vendor) main is `main.Hello` invoking a `hello.Hello` using a dependency `github.com/sirupsen/logrus`
 - [Standalone Golang Action](golang-main-standalone) main is `main.main`, implements the ActionLoop directly
 - [Simple Bash action](bash-hello) a simple bash script action implementing the ActionLoop directly
diff --git a/examples/Makefile b/examples/Makefile
index 3b65bbb..8774e4d 100644
--- a/examples/Makefile
+++ b/examples/Makefile
@@ -1,32 +1,34 @@
 # prefix
-
-USER=msciab     	# devel
-#USER=openwhisk		# deploy
+IMAGES?=openwhisk     	
 
 all: .PHONY
-.PHONY: bash-hello golang-hello-single golang-main-single golang-main-standalone golang-main-package golang-hello-vendor 
 
 bash-hello:
-	OW_USER=$(USER) make deploy test -C bash-hello
+	cd $@ && OW_USER=$(IMAGES) make clean deploy test
 
 golang-main-single:
-	OW_USER=$(USER) make deploy test -C $@
-	OW_USER=$(USER) make deploy test -C $@
+	cd $@ && OW_USER=$(IMAGES) make clean devel test
+	cd $@ && OW_USER=$(IMAGES) make clean deploy test
 
 golang-hello-single:
-	OW_USER=$(USER) make deploy test -C $@
-	OW_USER=$(USER) make deploy test -C $@
+	cd $@ && OW_USER=$(IMAGES) make clean devel test
+	cd $@ && OW_USER=$(IMAGES) make clean deploy test
 
 golang-main-standalone:
-	OW_USER=$(USER) make deploy test -C $@
-	OW_USER=$(USER) make deploy test -C $@
+	cd $@ && OW_USER=$(IMAGES) make clean devel test
+	cd $@ && OW_USER=$(IMAGES) make clean deploy test
 
 golang-main-package:
-	OW_USER=$(USER) make deploy test -C $@
-	OW_USER=$(USER) make deploy test -C $@
+	cd $@ && OW_USER=$(IMAGES) make clean devel test
+	cd $@ && OW_USER=$(IMAGES) make clean deploy test
+
+golang-main-vendor:
+	cd $@ && OW_USER=$(IMAGES) make clean devel test
+	cd $@ && OW_USER=$(IMAGES) make clean deploy test
 
 golang-hello-vendor:
-	OW_USER=$(USER) make deploy test -C $@
-	OW_USER=$(USER) make deploy test -C $@
+	cd $@ && OW_USER=$(IMAGES) make clean devel test
+	cd $@ && OW_USER=$(IMAGES) make clean deploy test
 
+.PHONY: bash-hello golang-hello-single golang-main-single golang-main-standalone golang-main-package golang-main-vendor golang-hello-vendor 
 
diff --git a/examples/bash-hello/Makefile b/examples/bash-hello/Makefile
index da69f47..8fa3945 100644
--- a/examples/bash-hello/Makefile
+++ b/examples/bash-hello/Makefile
@@ -15,7 +15,7 @@ test: test.json
 	$(WSK) action invoke $(PACKAGE)/$(NAME) -P test.json -r
 
 clean:
-	$(WSK) action delete $(PACKAGE)/$(NAME)
+	-$(WSK) action delete $(PACKAGE)/$(NAME)
 
 package.done:
 	$(WSK) package update $(PACKAGE)
diff --git a/examples/golang-hello-single/Makefile b/examples/golang-hello-single/Makefile
index d16f0e1..e02f3dd 100644
--- a/examples/golang-hello-single/Makefile
+++ b/examples/golang-hello-single/Makefile
@@ -18,8 +18,8 @@ $(ZIP): $(SRC)
 	docker run -i $(OW_COMPILER) -compile $(MAIN) <$(SRC) >$(ZIP)
 
 clean:
-	wsk action delete $(PACKAGE)/$(NAME)
-	rm $(ZIP) package.done
+	-$(WSK) action delete $(PACKAGE)/$(NAME)
+	-rm $(ZIP) package.done
 
 test: test.json
 	$(WSK) action invoke test/$(NAME) -r
diff --git a/examples/golang-hello-vendor/Makefile b/examples/golang-hello-vendor/Makefile
index 8efada7..8d76f26 100644
--- a/examples/golang-hello-vendor/Makefile
+++ b/examples/golang-hello-vendor/Makefile
@@ -14,10 +14,10 @@ deploy: package.done $(BINZIP)
 	$(WSK) action update $(PACKAGE)/$(NAME) $(BINZIP) --main $(MAIN) --docker $(OW_RUNTIME)
 
 devel: package.done $(SRCZIP)
-	$(WSK) action update $(PACKAGE)/$(NAME) $(SRCZIP) --main $(MAIN) --docker $(OW_RUNTIME)
+	$(WSK) action update $(PACKAGE)/$(NAME) $(SRCZIP) --main $(MAIN) --docker $(OW_COMPILER)
 
 src/%/vendor:
-	cd $(@D) ; dep ensure
+	cd $(@D) ; GOPATH=$$PWD/../.. dep ensure
 
 $(BINZIP): $(SRCS) $(VENDORS)
 	cd src ; zip - -r * | docker run -i $(OW_COMPILER) -compile $(MAIN) >../$(BINZIP)
@@ -26,8 +26,8 @@ $(SRCZIP): $(SRCS) $(VENDORS)
 	cd src ; zip ../$(SRCZIP) -r *
 
 clean:
-	wsk action delete $(PACKAGE)/$(NAME)
-	rm  $(BINZIP) $(SRCZIP) package.done
+	-$(WSK)action delete $(PACKAGE)/$(NAME)
+	-rm $(BINZIP) $(SRCZIP) package.done
 
 test: test.json
 	$(WSK) action invoke test/$(NAME) -r
diff --git a/examples/golang-main-package/Makefile b/examples/golang-main-package/Makefile
index cb266fd..7677d2e 100644
--- a/examples/golang-main-package/Makefile
+++ b/examples/golang-main-package/Makefile
@@ -22,8 +22,8 @@ $(SRCZIP): $(SRCS)
 	cd src ; zip ../$(SRCZIP) -r *
 
 clean:
-	wsk action delete $(PACKAGE)/$(NAME)
-	rm  $(BINZIP) $(SRCZIP) package.done
+	-$(WSK) action delete $(PACKAGE)/$(NAME)
+	-rm  $(BINZIP) $(SRCZIP) package.done
 
 test: test.json
 	$(WSK) action invoke test/$(NAME) -r
diff --git a/examples/golang-main-single/Makefile b/examples/golang-main-single/Makefile
index 1c16fcc..8d49674 100644
--- a/examples/golang-main-single/Makefile
+++ b/examples/golang-main-single/Makefile
@@ -18,8 +18,8 @@ $(ZIP): $(SRC)
 	docker run -i $(OW_COMPILER) -compile $(MAIN) <$(SRC) >$(ZIP)
 
 clean:
-	wsk action delete $(PACKAGE)/$(NAME)
-	rm $(ZIP) package.done
+	-$(WSK) action delete $(PACKAGE)/$(NAME)
+	-rm $(ZIP) package.done
 
 test: test.json
 	$(WSK) action invoke test/$(NAME) -r
diff --git a/examples/golang-main-standalone/Makefile b/examples/golang-main-standalone/Makefile
index 208ca99..42f41fa 100644
--- a/examples/golang-main-standalone/Makefile
+++ b/examples/golang-main-standalone/Makefile
@@ -18,8 +18,8 @@ $(ZIP): $(SRC)
 	docker run -i $(OW_COMPILER) -compile $(MAIN) <$(SRC) >$(ZIP)
 
 clean:
-	wsk action delete $(PACKAGE)/$(NAME)
-	rm $(ZIP) package.done
+	-$(WSK) action delete $(PACKAGE)/$(NAME)
+	-rm $(ZIP) package.done
 
 test: test.json
 	$(WSK) action invoke test/$(NAME) -r
diff --git a/examples/golang-main-vendor/Makefile b/examples/golang-main-vendor/Makefile
new file mode 100644
index 0000000..98a0931
--- /dev/null
+++ b/examples/golang-main-vendor/Makefile
@@ -0,0 +1,43 @@
+OW_USER?=openwhisk
+OW_RUNTIME?=$(OW_USER)/actionloop
+OW_COMPILER?=$(OW_USER)/actionloop-golang-v1.11
+WSK?=wsk
+MAIN=main
+PACKAGE=test
+SRCS=src/main/main.go 
+VENDORS=src/main/vendor
+NAME=golang-$(MAIN)-vendor
+BINZIP=$(MAIN)-bin.zip
+SRCZIP=$(MAIN)-src.zip
+
+deploy: package.done $(BINZIP)
+	$(WSK) action update $(PACKAGE)/$(NAME) $(BINZIP) --main $(MAIN) --docker $(OW_RUNTIME)
+
+devel: package.done $(SRCZIP)
+	$(WSK) action update $(PACKAGE)/$(NAME) $(SRCZIP) --main $(MAIN) --docker $(OW_COMPILER)
+
+src/%/vendor:
+	cd $(@D) ; GOPATH=$$PWD/../.. dep ensure
+
+$(BINZIP): $(SRCS) $(VENDORS)
+	cd src ; zip - -r * | docker run -i $(OW_COMPILER) -compile $(MAIN) >../$(BINZIP)
+
+$(SRCZIP): $(SRCS) $(VENDORS)
+	cd src ; zip ../$(SRCZIP) -r *
+
+clean:
+	-$(WSK) action delete $(PACKAGE)/$(NAME)
+	-rm $(BINZIP) $(SRCZIP) package.done
+
+test: test.json
+	$(WSK) action invoke test/$(NAME) -r
+	$(WSK) action invoke test/$(NAME) -P test.json -r
+
+test.json:
+	echo '{ "name": "Mike" }' >test.json
+
+package.done:
+	$(WSK) package update $(PACKAGE)
+	touch package.done
+
+.PHONY: deploy devel test clean
diff --git a/examples/golang-main-vendor/src/main/Gopkg.lock b/examples/golang-main-vendor/src/main/Gopkg.lock
new file mode 100644
index 0000000..4e31c6b
--- /dev/null
+++ b/examples/golang-main-vendor/src/main/Gopkg.lock
@@ -0,0 +1,25 @@
+# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'.
+
+
+[[projects]]
+  digest = "1:6342a41a66687c0d0eb1f4d946447bfb808c5136adeb92903ed07972071e19ac"
+  name = "github.com/rs/zerolog"
+  packages = [
+    ".",
+    "internal/cbor",
+    "internal/json",
+    "log",
+  ]
+  pruneopts = "UT"
+  revision = "338f9bc14084d22cb8eeacd6492861f8449d715c"
+  version = "v1.9.1"
+
+[solve-meta]
+  analyzer-name = "dep"
+  analyzer-version = 1
+  input-imports = [
+    "github.com/rs/zerolog",
+    "github.com/rs/zerolog/log",
+  ]
+  solver-name = "gps-cdcl"
+  solver-version = 1
diff --git a/examples/golang-main-vendor/src/main/Gopkg.toml b/examples/golang-main-vendor/src/main/Gopkg.toml
new file mode 100644
index 0000000..d080275
--- /dev/null
+++ b/examples/golang-main-vendor/src/main/Gopkg.toml
@@ -0,0 +1,34 @@
+# Gopkg.toml example
+#
+# Refer to https://golang.github.io/dep/docs/Gopkg.toml.html
+# for detailed Gopkg.toml documentation.
+#
+# required = ["github.com/user/thing/cmd/thing"]
+# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"]
+#
+# [[constraint]]
+#   name = "github.com/user/project"
+#   version = "1.0.0"
+#
+# [[constraint]]
+#   name = "github.com/user/project2"
+#   branch = "dev"
+#   source = "github.com/myfork/project2"
+#
+# [[override]]
+#   name = "github.com/x/y"
+#   version = "2.4.0"
+#
+# [prune]
+#   non-go = false
+#   go-tests = true
+#   unused-packages = true
+
+
+[[constraint]]
+  name = "github.com/rs/zerolog"
+  version = "1.9.1"
+
+[prune]
+  go-tests = true
+  unused-packages = true
diff --git a/examples/golang-main-vendor/src/main/main.go b/examples/golang-main-vendor/src/main/main.go
new file mode 100644
index 0000000..b687858
--- /dev/null
+++ b/examples/golang-main-vendor/src/main/main.go
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package main
+
+import (
+	"github.com/rs/zerolog"
+	"github.com/rs/zerolog/log"
+)
+
+func init() {
+	zerolog.TimeFieldFormat = ""
+}
+
+// Main function for the action
+func Main(obj map[string]interface{}) map[string]interface{} {
+	name, ok := obj["name"].(string)
+	if !ok {
+		name = "world"
+	}
+	log.Debug().Str("name", name).Msg("Hello")
+	msg := make(map[string]interface{})
+	msg["golang-main-vendor"] = "Hello, " + name + "!"
+	return msg
+}
diff --git a/openwhisk/initHandler.go b/openwhisk/initHandler.go
index 94454ae..73b5ffd 100644
--- a/openwhisk/initHandler.go
+++ b/openwhisk/initHandler.go
@@ -168,7 +168,8 @@ func (ap *ActionProxy) ExtractAndCompile(buf *[]byte, main string) (string, erro
 	if err != nil {
 		return "", err
 	}
-	if !isCompiled(binFile) {
+	// check only if the file exist
+	if _, err := os.Stat(binFile); os.IsNotExist(err) {
 		return "", fmt.Errorf("cannot compile")
 	}
 	return binFile, nil


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services