From d9e5145de9aa8d38574961e9f7cd23e72bdb7c1f Mon Sep 17 00:00:00 2001 From: Adrien Delorme Date: Tue, 30 Apr 2019 16:01:23 +0200 Subject: [PATCH] Shadow the flock pkg & add a noop filelock so that at least the solaris binary can be built Without this the following error occurs: $ GOOS=solaris go build . # github.com/hashicorp/packer/vendor/github.com/gofrs/flock vendor/github.com/gofrs/flock/flock_unix.go:28:22: undefined: syscall.LOCK_EX vendor/github.com/gofrs/flock/flock_unix.go:39:22: undefined: syscall.LOCK_SH vendor/github.com/gofrs/flock/flock_unix.go:56:12: undefined: syscall.Flock vendor/github.com/gofrs/flock/flock_unix.go:66:12: undefined: syscall.Flock vendor/github.com/gofrs/flock/flock_unix.go:96:12: undefined: syscall.Flock vendor/github.com/gofrs/flock/flock_unix.go:96:42: undefined: syscall.LOCK_UN vendor/github.com/gofrs/flock/flock_unix.go:118:21: undefined: syscall.LOCK_EX vendor/github.com/gofrs/flock/flock_unix.go:130:21: undefined: syscall.LOCK_SH vendor/github.com/gofrs/flock/flock_unix.go:149:9: undefined: syscall.Flock vendor/github.com/gofrs/flock/flock_unix.go:149:44: undefined: syscall.LOCK_NB vendor/github.com/gofrs/flock/flock_unix.go:149:44: too many errors --- common/filelock/filelock.go | 11 +++++++++++ common/filelock/filelock_solaris.go | 11 +++++++++++ common/filelock/noop.go | 8 ++++++++ common/net/configure_port.go | 7 +++---- common/step_download.go | 4 ++-- 5 files changed, 35 insertions(+), 6 deletions(-) create mode 100644 common/filelock/filelock.go create mode 100644 common/filelock/filelock_solaris.go create mode 100644 common/filelock/noop.go diff --git a/common/filelock/filelock.go b/common/filelock/filelock.go new file mode 100644 index 000000000..c83816ee6 --- /dev/null +++ b/common/filelock/filelock.go @@ -0,0 +1,11 @@ +// +build !solaris + +package filelock + +import "github.com/gofrs/flock" + +type Flock = flock.Flock + +func New(path string) *Flock { + return flock.New(path) +} diff --git a/common/filelock/filelock_solaris.go b/common/filelock/filelock_solaris.go new file mode 100644 index 000000000..06685254c --- /dev/null +++ b/common/filelock/filelock_solaris.go @@ -0,0 +1,11 @@ +// build solaris + +package filelock + +// Flock is a noop on solaris for now. +// TODO(azr): PR github.com/gofrs/flock for this. +type Flock = Noop + +func New(string) *Flock { + return &Flock{} +} diff --git a/common/filelock/noop.go b/common/filelock/noop.go new file mode 100644 index 000000000..ebf8f1967 --- /dev/null +++ b/common/filelock/noop.go @@ -0,0 +1,8 @@ +package filelock + +// this lock does nothing +type Noop struct{} + +func (_ *Noop) Lock() (bool, error) { return true, nil } +func (_ *Noop) TryLock() (bool, error) { return true, nil } +func (_ *Noop) Unlock() error { return nil } diff --git a/common/net/configure_port.go b/common/net/configure_port.go index 51765fda6..cdc0a9168 100644 --- a/common/net/configure_port.go +++ b/common/net/configure_port.go @@ -8,8 +8,7 @@ import ( "net" "strconv" - "github.com/gofrs/flock" - + "github.com/hashicorp/packer/common/filelock" "github.com/hashicorp/packer/packer" ) @@ -26,7 +25,7 @@ type Listener struct { net.Listener Port int Address string - lock *flock.Flock + lock *filelock.Flock } func (l *Listener) Close() error { @@ -70,7 +69,7 @@ func (lc ListenRangeConfig) Listen(ctx context.Context) (*Listener, error) { return nil, err } - lock := flock.New(lockFilePath) + lock := filelock.New(lockFilePath) locked, err := lock.TryLock() if err != nil { return nil, err diff --git a/common/step_download.go b/common/step_download.go index e562b619c..af7708e6e 100644 --- a/common/step_download.go +++ b/common/step_download.go @@ -10,9 +10,9 @@ import ( "runtime" "strings" - "github.com/gofrs/flock" getter "github.com/hashicorp/go-getter" urlhelper "github.com/hashicorp/go-getter/helper/url" + "github.com/hashicorp/packer/common/filelock" "github.com/hashicorp/packer/helper/multistep" "github.com/hashicorp/packer/packer" ) @@ -146,7 +146,7 @@ func (s *StepDownload) download(ctx context.Context, ui packer.Ui, source string lockFile := targetPath + ".lock" log.Printf("Acquiring lock for: %s (%s)", u.String(), lockFile) - lock := flock.New(lockFile) + lock := filelock.New(lockFile) lock.Lock() defer lock.Unlock()