Есть проект, написанный на go. Для удобства зависимостей использую glide, точнее на текущий момент меняю структуру vendor и добвляю каталог в GOPATH.
В glide.yml есть зависимость :
- package: github.com/go-sql-driver/mysql
version: ^1.4.0
В проекте есть импорт:
import (_ "github.com/go-sql-driver/mysql"
В таком случае (если его нет в текущем GOPATH, ругается на отстутсвие пакета)
Структура директорий:
| root
| src/
| go files
| vendor/
| doc-files
Изменяю структуру директорий:
mkdir -p src/vendor_new/src
mv src/vendor/* src/vendor_new/src
rm -r src/vendor
mv src/vendor_new src/vendor
export GOPATH="$GOPATH:$(pwd):$(pwd)/src/vendor"
Инструкция make файла:
# Installing build dependencies. You will need to run this once manually when you clone the repo
depend:
go get -v $(DEPEND)
cd src && rm -rf vendor || true && glide install && && mkdir -p vendor_new/src && mv vendor/* vendor_new/src && rm -r vendor && mv vendor_new vendor && cd ..
Тогда пакеты подтягиваются.
Возможно ли без модификации структуры vendor, который формирует glide, указать GO использовать пакеты из vendor?
Флаг `GO15VENDOREXPERIMENT` выставлен в `1`
$ uname -a
Linux localhost.localdomain 4.17.11-200.fc28.x86_64 #1 SMP Mon Jul 30 15:21:09 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
$ go version
go version go1.10.3 linux/amd64
[]$ go env
GOARCH="amd64"
GOBIN="/home/user/go/bin"
GOCACHE="/home/user/.cache/go-build"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/user/go:/projects/go-project:/projects/go-project/src/vendor"
GORACE=""
GOROOT="/usr/lib/golang"
GOTMPDIR=""
GOTOOLDIR="/usr/lib/golang/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build031255179=/tmp/go-build -gno-record-gcc-switches"