@@ -27,30 +27,23 @@ SOURCE_VER ?= v0.21.0
2727# Change this if you bump the image-reflector-controller/api version in go.mod.
2828REFLECTOR_VER ?= v0.15.0
2929
30- # Version of libgit2 the controller should depend on.
31- LIBGIT2_VERSION ?= 1.1.1
32-
3330# Repository root based on Git metadata.
3431REPOSITORY_ROOT := $(shell git rev-parse --show-toplevel)
3532
36- # libgit2 related magical paths
37- # These are used to determine if the target libgit2 version is already available on
38- # the system, or where they should be installed to
39- SYSTEM_LIBGIT2_VERSION := $(shell pkg-config --modversion libgit2 2>/dev/null)
40- LIBGIT2_PATH := $(REPOSITORY_ROOT ) /hack/libgit2
33+ LIBGIT2_PATH := $(REPOSITORY_ROOT ) /build/libgit2
4134LIBGIT2_LIB_PATH := $(LIBGIT2_PATH ) /lib
42- LIBGIT2 := $(LIBGIT2_LIB_PATH ) /libgit2.so.$(LIBGIT2_VERSION )
35+ LIBGIT2_LIB64_PATH := $(LIBGIT2_PATH ) /lib64
36+ LIBGIT2 := $(LIBGIT2_LIB_PATH ) /libgit2.a
4337
44- ifneq ($(LIBGIT2_VERSION ) ,$(SYSTEM_LIBGIT2_VERSION ) )
45- LIBGIT2_FORCE ?= 1
46- endif
38+ export CGO_ENABLED =1
39+ export LIBRARY_PATH=$(LIBGIT2_LIB_PATH ) :$(LIBGIT2_LIB64_PATH )
40+ export PKG_CONFIG_PATH=$(LIBGIT2_LIB_PATH ) /pkgconfig :$(LIBGIT2_LIB64_PATH ) /pkgconfig
41+ export CGO_CFLAGS =-I$(LIBGIT2_PATH ) /include
4742
4843ifeq ($(shell uname -s) ,Darwin)
49- LIBGIT2 := $(LIBGIT2_LIB_PATH)/libgit2.$(LIBGIT2_VERSION).dylib
50- HAS_BREW := $(shell brew --version 2>/dev/null)
51- ifdef HAS_BREW
52- HAS_OPENSSL := $(shell brew --prefix
[email protected] )
53- endif
44+ export CGO_LDFLAGS=-L$(LIBGIT2_LIB_PATH) -lssh2 -lssl -lcrypto -lgit2
45+ else
46+ export CGO_LDFLAGS=$(shell PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) pkg-config --libs --static --cflags libssh2 openssl libgit2)
5447endif
5548
5649# Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set)
6053GOBIN =$(shell go env GOBIN)
6154endif
6255
63- ifeq ($(strip ${PKG_CONFIG_PATH}) ,)
64- MAKE_PKG_CONFIG_PATH = $(LIBGIT2_LIB_PATH)/pkgconfig
65- else
66- MAKE_PKG_CONFIG_PATH = ${PKG_CONFIG_PATH}:$(LIBGIT2_LIB_PATH)/pkgconfig
67- endif
68-
69- ifdef HAS_OPENSSL
70- MAKE_PKG_CONFIG_PATH := $(MAKE_PKG_CONFIG_PATH):$(HAS_OPENSSL)/lib/pkgconfig
71- endif
7256
7357TEST_CRDS := controllers/testdata/crds
7458
@@ -106,41 +90,21 @@ ${CACHE}/imagepolicies_${REFLECTOR_VER}.yaml:
10690
10791KUBEBUILDER_ASSETS? ="$(shell $(ENVTEST ) --arch=$(ENVTEST_ARCH ) use -i $(ENVTEST_KUBERNETES_VERSION ) --bin-dir=$(ENVTEST_ASSETS_DIR ) -p path) "
10892test : $(LIBGIT2 ) test-api test_deps generate fmt vet manifests api-docs install-envtest # # Run tests
109- ifeq ($(shell uname -s) ,Darwin)
110- LD_LIBRARY_PATH=$(LIBGIT2_LIB_PATH) \
111- PKG_CONFIG_PATH=$(MAKE_PKG_CONFIG_PATH) \
112- CGO_LDFLAGS="-Wl,-rpath,$(LIBGIT2_LIB_PATH)" \
113- KUBEBUILDER_ASSETS=$(KUBEBUILDER_ASSETS) \
114- go test ./... -coverprofile cover.out
115- else
116- LD_LIBRARY_PATH=$(LIBGIT2_LIB_PATH) \
117- PKG_CONFIG_PATH=$(MAKE_PKG_CONFIG_PATH) \
11893 KUBEBUILDER_ASSETS=$(KUBEBUILDER_ASSETS ) \
119- go test ./... -coverprofile cover.out
120- endif
94+ go test ./... \
95+ -ldflags " -s -w" \
96+ -coverprofile cover.out \
97+ -tags ' netgo,osusergo,static_build'
12198
12299test-api : # # Run api tests
123100 cd api; go test ./... -coverprofile cover.out
124101
125102manager : $(LIBGIT2 ) generate fmt vet # # Build manager binary
126- ifeq ($(shell uname -s) ,Darwin)
127- PKG_CONFIG_PATH=$(MAKE_PKG_CONFIG_PATH) \
128- CGO_LDFLAGS="-Wl,-rpath,$(LIBGIT2_LIB_PATH)" \
129- go build -o bin/manager main.go
130- else
131- PKG_CONFIG_PATH=$(MAKE_PKG_CONFIG_PATH) \
132- CGO_LDFLAGS="-Wl,-rpath,$(LIBGIT2_LIB_PATH)" \
133- go build -o bin/manager main.go
134- endif
103+ go run ./main.go
135104
136105
137106run : $(LIBGIT2 ) generate fmt vet manifests # Run against the configured Kubernetes cluster in ~/.kube/config
138- ifeq ($(shell uname -s) ,Darwin)
139- CGO_LDFLAGS="-Wl,-rpath,$(LIBGIT2_LIB_PATH)" \
140- go run ./main.go --log-level=${LOG_LEVEL} --log-encoding=console
141- else
142107 go run ./main.go --log-level=${LOG_LEVEL} --log-encoding=console
143- endif
144108
145109install : manifests # # Install CRDs into a cluster
146110 kustomize build config/crd | kubectl apply -f -
@@ -173,16 +137,8 @@ fmt: ## Run go fmt against code
173137 cd api; go fmt ./...
174138
175139vet : $(LIBGIT2 ) # # Run go vet against code
176- ifeq ($(shell uname -s) ,Darwin)
177- PKG_CONFIG_PATH=$(MAKE_PKG_CONFIG_PATH) \
178- CGO_LDFLAGS="-Wl,-rpath,$(LIBGIT2_LIB_PATH)" \
179140 go vet ./...
180141 cd api; go vet ./...
181- else
182- PKG_CONFIG_PATH=$(MAKE_PKG_CONFIG_PATH) \
183- go vet ./...
184- cd api; go vet ./...
185- endif
186142
187143
188144generate : controller-gen # # Generate code
@@ -211,14 +167,7 @@ controller-gen: ## Download controller-gen locally if necessary.
211167libgit2 : $(LIBGIT2 ) # # Detect or download libgit2 library
212168
213169$(LIBGIT2 ) :
214- ifeq (1, $(LIBGIT2_FORCE ) )
215- @{ \
216- set -e; \
217- mkdir -p $(LIBGIT2_PATH); \
218- curl -sL https://raw.githubusercontent.com/fluxcd/golang-with-libgit2/$(LIBGIT2_TAG)/hack/Makefile -o $(LIBGIT2_PATH)/Makefile; \
219- INSTALL_PREFIX=$(LIBGIT2_PATH) make -C $(LIBGIT2_PATH) libgit2; \
220- }
221- endif
170+ IMG_TAG=$(LIBGIT2_IMG ) :$(LIBGIT2_TAG ) ./hack/extract-libraries.sh
222171
223172# Find or download gen-crd-api-reference-docs
224173GEN_CRD_API_REFERENCE_DOCS = $(shell pwd) /bin/gen-crd-api-reference-docs
0 commit comments