Add a build script to automatically build extensions from a known path and load them

This commit is contained in:
M. Mert Yildiran 2021-08-17 05:56:56 +03:00
parent e1167c4065
commit 95a9ee7571
No known key found for this signature in database
GPG Key ID: D42ADB236521BF7A
9 changed files with 83 additions and 42 deletions

View File

@ -66,11 +66,5 @@ clean-cli: ## Clean CLI.
clean-docker:
@(echo "DOCKER cleanup - NOT IMPLEMENTED YET " )
extensions: extension-http
extension-http:
cd tap/extensions/http && \
go build -buildmode=plugin -o ../http.so .
cd ../../..
mkdir -p agent/build/extensions
cp tap/extensions/http.so agent/build/extensions
extensions:
./build_extensions.sh

12
build_extensions.sh Executable file
View File

@ -0,0 +1,12 @@
#!/bin/bash
for f in tap/extensions/*; do
if [ -d "$f" ]; then
extension=$(basename $f) && \
cd tap/extensions/${extension} && \
go build -buildmode=plugin -o ../${extension}.so . && \
cd ../../.. && \
mkdir -p agent/build/extensions && \
cp tap/extensions/${extension}.so agent/build/extensions
fi
done

View File

@ -0,0 +1,3 @@
module github.com/up9inc/mizu/tap/extensions/amqp
go 1.16

View File

@ -0,0 +1,18 @@
package main
import (
"log"
)
func init() {
log.Println("Initializing AMQP extension.")
}
type greeting string
func (g greeting) Greet() {
log.Println("Hello from AMQP extension.")
}
// exported as symbol named "Greeter"
var Greeter greeting

View File

@ -1,20 +0,0 @@
github.com/bradleyfalzon/tlsx v0.0.0-20170624122154-28fd0e59bac4 h1:NJOOlc6ZJjix0A1rAU+nxruZtR8KboG1848yqpIUo4M=
github.com/bradleyfalzon/tlsx v0.0.0-20170624122154-28fd0e59bac4/go.mod h1:DQPxZS994Ld1Y8uwnJT+dRL04XPD0cElP/pHH/zEBHM=
github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
github.com/orcaman/concurrent-map v0.0.0-20210501183033-44dafcb38ecc h1:Ak86L+yDSOzKFa7WM5bf5itSOo1e3Xh8bm5YCMUXIjQ=
github.com/orcaman/concurrent-map v0.0.0-20210501183033-44dafcb38ecc/go.mod h1:Lu3tH6HLW3feq74c2GC+jIMS/K2CFcDWnWD9XkenwhI=
github.com/romana/rlog v0.0.0-20171115192701-f018bc92e7d7 h1:jkvpcEatpwuMF5O5LVxTnehj6YZ/aEZN4NWD/Xml4pI=
github.com/romana/rlog v0.0.0-20171115192701-f018bc92e7d7/go.mod h1:KTrHyWpO1sevuXPZwyeZc72ddWRFqNSKDFl7uVWKpg0=
golang.org/x/net v0.0.0-20210421230115-4e50805a0758 h1:aEpZnXcAmXkd6AvLb2OPt+EN1Zu/8Ne3pCqPjja5PXY=
golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM=
golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d h1:LO7XpTYMwTqxjLcGWPijK3vRXg1aWdlNOVOHRq45d7c=
golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=

View File

@ -1,13 +1,17 @@
package main
import (
"fmt"
"log"
)
func init() {
log.Println("Initializing HTTP extension.")
}
type greeting string
func (g greeting) Greet() {
fmt.Println("Hello HTTP")
log.Println("Hello from HTTP extension.")
}
// exported as symbol named "Greeter"

View File

@ -0,0 +1,3 @@
module github.com/up9inc/mizu/tap/extensions/kafka
go 1.16

View File

@ -0,0 +1,18 @@
package main
import (
"log"
)
func init() {
log.Println("Initializing Kafka extension.")
}
type greeting string
func (g greeting) Greet() {
log.Println("Hello from Kafka extension.")
}
// exported as symbol named "Greeter"
var Greeter greeting

View File

@ -12,6 +12,7 @@ import (
"encoding/hex"
"flag"
"fmt"
"io/ioutil"
"log"
"os"
"os/signal"
@ -253,19 +254,27 @@ func startMemoryProfiler() {
func loadExtensions() {
dir, _ := filepath.Abs(filepath.Dir(os.Args[0]))
abspath := path.Join(dir, "./extensions/http.so")
fmt.Printf("abspath: %v\n", abspath)
extension := &Extension{
Name: "http",
Path: abspath,
}
plug, _ := plugin.Open(extension.Path)
extension.Plug = plug
symGreeter, _ := plug.Lookup("Greeter")
extensionsDir := path.Join(dir, "./extensions/")
var greeter Greeter
greeter, _ = symGreeter.(Greeter)
greeter.Greet()
files, err := ioutil.ReadDir(extensionsDir)
if err != nil {
log.Fatal(err)
}
for _, file := range files {
filename := file.Name()
log.Printf("Loading extension: %s\n", filename)
extension := &Extension{
Name: strings.TrimSuffix(filename, filepath.Ext(filename)),
Path: path.Join(extensionsDir, filename),
}
plug, _ := plugin.Open(extension.Path)
extension.Plug = plug
symGreeter, _ := plug.Lookup("Greeter")
var greeter Greeter
greeter, _ = symGreeter.(Greeter)
greeter.Greet()
}
}
func startPassiveTapper(outboundLinkWriter *OutboundLinkWriter) {