@@ -18,30 +18,24 @@ CRD_OPTIONS ?= crd:crdVersions=v1
18
18
# Repository root based on Git metadata
19
19
REPOSITORY_ROOT := $(shell git rev-parse --show-toplevel)
20
20
21
- # Libgit2 version
22
- LIBGIT2_VERSION ?= 1.1.1
23
-
24
21
# Other dependency versions
25
22
ENVTEST_BIN_VERSION ?= 1.19.2
26
23
27
- # libgit2 related magical paths
28
- # These are used to determine if the target libgit2 version is already available on
29
- # the system, or where they should be installed to
30
- SYSTEM_LIBGIT2_VERSION := $(shell pkg-config --modversion libgit2 2>/dev/null)
31
- LIBGIT2_PATH := $(REPOSITORY_ROOT ) /hack/libgit2
24
+ KUBEBUILDER_ASSETS? ="$(shell $(ENVTEST ) --arch=$(ENVTEST_ARCH ) use -i $(ENVTEST_KUBERNETES_VERSION ) --bin-dir=$(ENVTEST_ASSETS_DIR ) -p path) "
25
+
26
+ LIBGIT2_PATH := $(REPOSITORY_ROOT ) /build/libgit2
32
27
LIBGIT2_LIB_PATH := $(LIBGIT2_PATH ) /lib
33
- LIBGIT2 := $(LIBGIT2_LIB_PATH ) /libgit2.so.$(LIBGIT2_VERSION )
28
+ LIBGIT2_LIB64_PATH := $(LIBGIT2_PATH ) /lib64
29
+ LIBGIT2 := $(LIBGIT2_LIB_PATH ) /libgit2.a
34
30
35
- ifneq ( $( LIBGIT2_VERSION ) , $( SYSTEM_LIBGIT2_VERSION ) )
36
- LIBGIT2_FORCE ?= 1
37
- endif
31
+ export CGO_ENABLED =1
32
+ export PKG_CONFIG_PATH= $( LIBGIT2_LIB_PATH ) /pkgconfig : $( LIBGIT2_LIB64_PATH ) /pkgconfig
33
+ export CGO_CFLAGS =-I $( LIBGIT2_PATH ) /include
38
34
39
35
ifeq ($(shell uname -s) ,Darwin)
40
- LIBGIT2 := $(LIBGIT2_LIB_PATH)/libgit2.$(LIBGIT2_VERSION).dylib
41
- HAS_BREW := $(shell brew --version 2>/dev/null)
42
- ifdef HAS_BREW
43
- HAS_OPENSSL := $(shell brew --prefix
[email protected] )
44
- endif
36
+ export CGO_LDFLAGS=-L$(LIBGIT2_LIB_PATH) -lssh2 -lssl -lcrypto -lgit2
37
+ else
38
+ export CGO_LDFLAGS=-L$(LIBGIT2_LIB_PATH) -L$(LIBGIT2_LIB64_PATH) -lssh2 -lz -lgit2 -lrt -lssl -lcrypto -lz -ldl -pthread
45
39
endif
46
40
47
41
56
50
GOBIN =$(shell go env GOBIN)
57
51
endif
58
52
59
- ifeq ($(strip ${PKG_CONFIG_PATH}) ,)
60
- MAKE_PKG_CONFIG_PATH = $(LIBGIT2_LIB_PATH)/pkgconfig
61
- else
62
- MAKE_PKG_CONFIG_PATH = ${PKG_CONFIG_PATH}:$(LIBGIT2_LIB_PATH)/pkgconfig
63
- endif
64
-
65
- ifdef HAS_OPENSSL
66
- MAKE_PKG_CONFIG_PATH := $(MAKE_PKG_CONFIG_PATH):$(HAS_OPENSSL)/lib/pkgconfig
67
- endif
68
53
69
54
# Architecture to use envtest with
70
55
ENVTEST_ARCH ?= amd64
71
56
72
57
all : build
73
58
74
59
build : $(LIBGIT2 ) # # Build manager binary
75
- ifeq ($(shell uname -s) ,Darwin)
76
- PKG_CONFIG_PATH=$(MAKE_PKG_CONFIG_PATH) \
77
- CGO_LDFLAGS="-Wl,-rpath,$(LIBGIT2_LIB_PATH)" \
78
- go build -o bin/manager main.go
79
- else
80
- PKG_CONFIG_PATH=$(MAKE_PKG_CONFIG_PATH) \
81
60
go build -o bin/manager main.go
82
- endif
83
61
84
- KUBEBUILDER_ASSETS? =" $( shell $( ENVTEST ) --arch= $( ENVTEST_ARCH ) use -i $( ENVTEST_KUBERNETES_VERSION ) --bin-dir= $( ENVTEST_ASSETS_DIR ) -p path) "
62
+
85
63
test : $(LIBGIT2 ) install-envtest test-api # # Run tests
86
- ifeq ($(shell uname -s) ,Darwin)
87
- LD_LIBRARY_PATH=$(LIBGIT2_LIB_PATH) \
88
- PKG_CONFIG_PATH=$(MAKE_PKG_CONFIG_PATH) \
89
- CGO_LDFLAGS="-Wl,-rpath,$(LIBGIT2_LIB_PATH)" \
90
64
KUBEBUILDER_ASSETS=$(KUBEBUILDER_ASSETS ) \
91
- go test ./... -coverprofile cover.out
92
- else
93
- LD_LIBRARY_PATH=$(LIBGIT2_LIB_PATH) \
94
- PKG_CONFIG_PATH=$(MAKE_PKG_CONFIG_PATH) \
95
- KUBEBUILDER_ASSETS=$(KUBEBUILDER_ASSETS) \
96
- go test ./... -coverprofile cover.out
97
- endif
65
+ go test ./... \
66
+ -ldflags " -s -w" \
67
+ -coverprofile cover.out \
68
+ -tags ' netgo,osusergo,static_build'
98
69
99
70
test-api : # # Run api tests
100
71
cd api; go test ./... -coverprofile cover.out
101
72
102
73
run : $(LIBGIT2 ) generate fmt vet manifests # # Run against the configured Kubernetes cluster in ~/.kube/config
103
- ifeq ($(shell uname -s) ,Darwin)
104
- LD_LIBRARY_PATH=$(LIBGIT2_LIB_PATH) \
105
- CGO_LDFLAGS="-Wl,-rpath,$(LIBGIT2_LIB_PATH)" \
106
74
go run ./main.go
107
- else
108
- LD_LIBRARY_PATH=$(LIBGIT2_LIB_PATH) \
109
- go run ./main.go
110
- endif
111
-
112
75
113
76
install : manifests # # Install CRDs into a cluster
114
77
kustomize build config/crd | kubectl apply -f -
@@ -142,16 +105,8 @@ fmt: ## Run go fmt against code
142
105
cd api; go fmt ./...
143
106
144
107
vet : $(LIBGIT2 ) # # Run go vet against code
145
- ifeq ($(shell uname -s) ,Darwin)
146
- PKG_CONFIG_PATH=$(MAKE_PKG_CONFIG_PATH) \
147
- CGO_LDFLAGS="-Wl,-rpath,$(LIBGIT2_LIB_PATH)" \
148
108
go vet ./...
149
109
cd api; go vet ./...
150
- else
151
- PKG_CONFIG_PATH=$(MAKE_PKG_CONFIG_PATH) \
152
- go vet ./...
153
- cd api; go vet ./...
154
- endif
155
110
156
111
generate : controller-gen # # Generate API code
157
112
cd api; $(CONTROLLER_GEN ) object:headerFile=" ../hack/boilerplate.go.txt" paths=" ./..."
@@ -193,14 +148,8 @@ install-envtest: setup-envtest ## Download envtest binaries locally.
193
148
libgit2 : $(LIBGIT2 ) # # Detect or download libgit2 library
194
149
195
150
$(LIBGIT2 ) :
196
- ifeq (1, $(LIBGIT2_FORCE ) )
197
- @{ \
198
- set -e; \
199
- mkdir -p $(LIBGIT2_PATH); \
200
- curl -sL https://raw.githubusercontent.com/fluxcd/golang-with-libgit2/$(LIBGIT2_TAG)/hack/Makefile -o $(LIBGIT2_PATH)/Makefile; \
201
- INSTALL_PREFIX=$(LIBGIT2_PATH) make -C $(LIBGIT2_PATH) libgit2; \
202
- }
203
- endif
151
+ IMG_TAG=$(LIBGIT2_IMG ) :$(LIBGIT2_TAG ) ./hack/extract-libraries.sh
152
+
204
153
205
154
.PHONY : help
206
155
help : # # Display this help menu
0 commit comments