Joey Armstrong | b085c50 | 2023-01-17 13:56:24 -0500 | [diff] [blame] | 1 | # -*- makefile -*- |
| 2 | # ----------------------------------------------------------------------- |
Joey Armstrong | 9cdee9f | 2024-01-03 04:56:14 -0500 | [diff] [blame] | 3 | # Copyright 2016-2024 Open Networking Foundation (ONF) and the ONF Contributors |
Scott Baker | 2c1c482 | 2019-10-16 11:02:41 -0700 | [diff] [blame] | 4 | # |
| 5 | # Licensed under the Apache License, Version 2.0 (the "License"); |
| 6 | # you may not use this file except in compliance with the License. |
| 7 | # You may obtain a copy of the License at |
| 8 | # |
| 9 | # http://www.apache.org/licenses/LICENSE-2.0 |
| 10 | # |
| 11 | # Unless required by applicable law or agreed to in writing, software |
| 12 | # distributed under the License is distributed on an "AS IS" BASIS, |
| 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 14 | # See the License for the specific language governing permissions and |
| 15 | # limitations under the License. |
Joey Armstrong | b085c50 | 2023-01-17 13:56:24 -0500 | [diff] [blame] | 16 | # ----------------------------------------------------------------------- |
Scott Baker | 2c1c482 | 2019-10-16 11:02:41 -0700 | [diff] [blame] | 17 | |
Joey Armstrong | b085c50 | 2023-01-17 13:56:24 -0500 | [diff] [blame] | 18 | .DEFAULT_GOAL := help |
| 19 | |
| 20 | ##-------------------## |
| 21 | ##---] GLOBALS [---## |
| 22 | ##-------------------## |
Joey Armstrong | b085c50 | 2023-01-17 13:56:24 -0500 | [diff] [blame] | 23 | |
| 24 | ##--------------------## |
| 25 | ##---] INCLUDES [---## |
| 26 | ##--------------------## |
Joey Armstrong | 7f8436c | 2023-07-09 20:23:27 -0400 | [diff] [blame] | 27 | include config.mk |
| 28 | include makefiles/include.mk |
Scott Baker | 2c1c482 | 2019-10-16 11:02:41 -0700 | [diff] [blame] | 29 | |
| 30 | # Variables |
| 31 | VERSION ?= $(shell cat ./VERSION) |
| 32 | |
Joey Armstrong | b085c50 | 2023-01-17 13:56:24 -0500 | [diff] [blame] | 33 | ## ----------------------------------------------------------------------- |
Scott Baker | 2c1c482 | 2019-10-16 11:02:41 -0700 | [diff] [blame] | 34 | ## Local Development Helpers |
Joey Armstrong | b085c50 | 2023-01-17 13:56:24 -0500 | [diff] [blame] | 35 | ## ----------------------------------------------------------------------- |
| 36 | .PHONY: local-protos |
Scott Baker | 2c1c482 | 2019-10-16 11:02:41 -0700 | [diff] [blame] | 37 | local-protos: |
| 38 | @mkdir -p python/local_imports |
| 39 | ifdef LOCAL_PROTOS |
Joey Armstrong | 26245a3 | 2022-12-17 21:49:06 -0500 | [diff] [blame] | 40 | $(RM) -r vendor/github.com/opencord/voltha-protos |
khenaidoo | 2672188 | 2021-08-11 17:42:52 -0400 | [diff] [blame] | 41 | mkdir -p vendor/github.com/opencord/voltha-protos/v5/go |
| 42 | cp -r ${LOCAL_PROTOS}/go/* vendor/github.com/opencord/voltha-protos/v5/go |
Joey Armstrong | 26245a3 | 2022-12-17 21:49:06 -0500 | [diff] [blame] | 43 | $(RM) -r python/local_imports/voltha-protos |
Scott Baker | 2c1c482 | 2019-10-16 11:02:41 -0700 | [diff] [blame] | 44 | mkdir -p python/local_imports/voltha-protos/dist |
Scott Baker | f1b096c | 2019-11-01 12:36:30 -0700 | [diff] [blame] | 45 | cp ${LOCAL_PROTOS}/dist/*.tar.gz python/local_imports/voltha-protos/dist/ |
Scott Baker | 2c1c482 | 2019-10-16 11:02:41 -0700 | [diff] [blame] | 46 | endif |
| 47 | |
Joey Armstrong | b085c50 | 2023-01-17 13:56:24 -0500 | [diff] [blame] | 48 | ## ----------------------------------------------------------------------- |
Scott Baker | 2c1c482 | 2019-10-16 11:02:41 -0700 | [diff] [blame] | 49 | ## build the library |
Joey Armstrong | b085c50 | 2023-01-17 13:56:24 -0500 | [diff] [blame] | 50 | ## ----------------------------------------------------------------------- |
Scott Baker | f1b096c | 2019-11-01 12:36:30 -0700 | [diff] [blame] | 51 | build: local-protos |
Joey Armstrong | 7f8436c | 2023-07-09 20:23:27 -0400 | [diff] [blame] | 52 | $(call banner-enter,Target $@) |
Kent Hagerman | fac11d4 | 2020-01-28 12:18:55 -0500 | [diff] [blame] | 53 | ${GO} build -mod=vendor ./... |
Joey Armstrong | 7f8436c | 2023-07-09 20:23:27 -0400 | [diff] [blame] | 54 | $(call banner-leave,Target $@) |
Scott Baker | 2c1c482 | 2019-10-16 11:02:41 -0700 | [diff] [blame] | 55 | |
Joey Armstrong | b085c50 | 2023-01-17 13:56:24 -0500 | [diff] [blame] | 56 | ## ----------------------------------------------------------------------- |
| 57 | ## ----------------------------------------------------------------------- |
Scott Baker | 2c1c482 | 2019-10-16 11:02:41 -0700 | [diff] [blame] | 58 | lint-mod: |
Joey Armstrong | 7f8436c | 2023-07-09 20:23:27 -0400 | [diff] [blame] | 59 | $(call banner-entry,Target $@) |
Scott Baker | 2c1c482 | 2019-10-16 11:02:41 -0700 | [diff] [blame] | 60 | @echo "Running dependency check..." |
Kent Hagerman | fac11d4 | 2020-01-28 12:18:55 -0500 | [diff] [blame] | 61 | @${GO} mod verify |
Scott Baker | a36b498 | 2019-11-26 08:09:23 -0800 | [diff] [blame] | 62 | @echo "Dependency check OK. Running vendor check..." |
| 63 | @git status > /dev/null |
Kent Hagerman | 3da1fd0 | 2020-02-26 10:54:07 -0500 | [diff] [blame] | 64 | @git diff-index --quiet HEAD -- go.mod go.sum vendor || (echo "ERROR: Staged or modified files must be committed before running this test" && git status -- go.mod go.sum vendor && exit 1) |
| 65 | @[[ `git ls-files --exclude-standard --others go.mod go.sum vendor` == "" ]] || (echo "ERROR: Untracked files must be cleaned up before running this test" && git status -- go.mod go.sum vendor && exit 1) |
Joey Armstrong | 7f8436c | 2023-07-09 20:23:27 -0400 | [diff] [blame] | 66 | |
| 67 | $(HIDE)$(MAKE) --no-print-directory mod-update |
| 68 | |
Scott Baker | a36b498 | 2019-11-26 08:09:23 -0800 | [diff] [blame] | 69 | @git status > /dev/null |
Kent Hagerman | 3da1fd0 | 2020-02-26 10:54:07 -0500 | [diff] [blame] | 70 | @git diff-index --quiet HEAD -- go.mod go.sum vendor || (echo "ERROR: Modified files detected after running go mod tidy / go mod vendor" && git status -- go.mod go.sum vendor && git checkout -- go.mod go.sum vendor && exit 1) |
| 71 | @[[ `git ls-files --exclude-standard --others go.mod go.sum vendor` == "" ]] || (echo "ERROR: Untracked files detected after running go mod tidy / go mod vendor" && git status -- go.mod go.sum vendor && git checkout -- go.mod go.sum vendor && exit 1) |
Scott Baker | a36b498 | 2019-11-26 08:09:23 -0800 | [diff] [blame] | 72 | @echo "Vendor check OK." |
Joey Armstrong | 7f8436c | 2023-07-09 20:23:27 -0400 | [diff] [blame] | 73 | $(call banner-leave,Target $@) |
| 74 | |
| 75 | ## ----------------------------------------------------------------------- |
| 76 | ## ----------------------------------------------------------------------- |
| 77 | .PHONY: mod-update |
Joey Armstrong | 074f64f | 2023-12-01 10:05:02 -0500 | [diff] [blame] | 78 | mod-update: go-version mod-tidy mod-vendor |
| 79 | |
| 80 | ## ----------------------------------------------------------------------- |
| 81 | ## ----------------------------------------------------------------------- |
| 82 | .PHONY: go-version |
| 83 | go-version : |
| 84 | $(call banner-enter,Target $@) |
| 85 | ${GO} version |
| 86 | $(call banner-leave,Target $@) |
Joey Armstrong | 7f8436c | 2023-07-09 20:23:27 -0400 | [diff] [blame] | 87 | |
| 88 | ## ----------------------------------------------------------------------- |
| 89 | ## ----------------------------------------------------------------------- |
| 90 | .PHONY: mod-tidy |
| 91 | mod-tidy : |
| 92 | $(call banner-enter,Target $@) |
| 93 | ${GO} mod tidy |
| 94 | $(call banner-leave,Target $@) |
| 95 | |
| 96 | ## ----------------------------------------------------------------------- |
| 97 | ## ----------------------------------------------------------------------- |
| 98 | .PHONY: mod-vendor |
| 99 | mod-vendor : mod-tidy |
| 100 | mod-vendor : |
| 101 | $(call banner-enter,Target $@) |
| 102 | $(if $(LOCAL_FIX_PERMS),chmod o+w $(CURDIR)) |
| 103 | ${GO} mod vendor |
| 104 | $(if $(LOCAL_FIX_PERMS),chmod o-w $(CURDIR)) |
| 105 | $(call banner-leave,Target $@) |
Scott Baker | 2c1c482 | 2019-10-16 11:02:41 -0700 | [diff] [blame] | 106 | |
Joey Armstrong | b085c50 | 2023-01-17 13:56:24 -0500 | [diff] [blame] | 107 | ## ----------------------------------------------------------------------- |
| 108 | ## ----------------------------------------------------------------------- |
Kent Hagerman | 3da1fd0 | 2020-02-26 10:54:07 -0500 | [diff] [blame] | 109 | lint: lint-mod |
Scott Baker | 2c1c482 | 2019-10-16 11:02:41 -0700 | [diff] [blame] | 110 | |
Joey Armstrong | b085c50 | 2023-01-17 13:56:24 -0500 | [diff] [blame] | 111 | ## ----------------------------------------------------------------------- |
Joey Armstrong | 7f8436c | 2023-07-09 20:23:27 -0400 | [diff] [blame] | 112 | ## Coverage report: Static code analysis |
Joey Armstrong | b085c50 | 2023-01-17 13:56:24 -0500 | [diff] [blame] | 113 | ## ----------------------------------------------------------------------- |
Kent Hagerman | fac11d4 | 2020-01-28 12:18:55 -0500 | [diff] [blame] | 114 | sca: |
Joey Armstrong | 26245a3 | 2022-12-17 21:49:06 -0500 | [diff] [blame] | 115 | @$(RM) -r ./sca-report |
Scott Baker | 2c1c482 | 2019-10-16 11:02:41 -0700 | [diff] [blame] | 116 | @mkdir -p ./sca-report |
Kent Hagerman | 3da1fd0 | 2020-02-26 10:54:07 -0500 | [diff] [blame] | 117 | @echo "Running static code analysis..." |
| 118 | @${GOLANGCI_LINT} run --deadline=4m --out-format junit-xml ./... | tee ./sca-report/sca-report.xml |
| 119 | @echo "" |
| 120 | @echo "Static code analysis OK" |
Scott Baker | 2c1c482 | 2019-10-16 11:02:41 -0700 | [diff] [blame] | 121 | |
Joey Armstrong | b085c50 | 2023-01-17 13:56:24 -0500 | [diff] [blame] | 122 | ## ----------------------------------------------------------------------- |
| 123 | ## ----------------------------------------------------------------------- |
Matteo Scandolo | d58eaef | 2020-03-30 12:30:02 -0700 | [diff] [blame] | 124 | test: local-protos |
Joey Armstrong | 7f8436c | 2023-07-09 20:23:27 -0400 | [diff] [blame] | 125 | |
| 126 | $(call banner-enter,Target $@) |
Scott Baker | 2c1c482 | 2019-10-16 11:02:41 -0700 | [diff] [blame] | 127 | @mkdir -p ./tests/results |
Joey Armstrong | 7f8436c | 2023-07-09 20:23:27 -0400 | [diff] [blame] | 128 | |
| 129 | # No stream redirects, exit with shell status |
| 130 | $(MAKE) test-go |
| 131 | |
| 132 | # Redirect I/O, ignore shell exit status (for now) |
| 133 | $(MAKE) test-go-cover |
| 134 | |
| 135 | $(call banner-leave,Target $@) |
Scott Baker | 2c1c482 | 2019-10-16 11:02:41 -0700 | [diff] [blame] | 136 | |
Joey Armstrong | b085c50 | 2023-01-17 13:56:24 -0500 | [diff] [blame] | 137 | ## ----------------------------------------------------------------------- |
| 138 | ## ----------------------------------------------------------------------- |
Joey Armstrong | 7f8436c | 2023-07-09 20:23:27 -0400 | [diff] [blame] | 139 | .PHONY: test-go |
| 140 | test-go : |
| 141 | |
| 142 | $(call banner-enter,Target $@) |
| 143 | @echo "** Testing attempt #1: exit-with-error-status: enabled" |
| 144 | -$(GO) test -mod=vendor ./... |
| 145 | $(call banner-leave,Target $@) |
Scott Baker | 2c1c482 | 2019-10-16 11:02:41 -0700 | [diff] [blame] | 146 | |
Joey Armstrong | b085c50 | 2023-01-17 13:56:24 -0500 | [diff] [blame] | 147 | ## ----------------------------------------------------------------------- |
| 148 | ## ----------------------------------------------------------------------- |
Joey Armstrong | 7f8436c | 2023-07-09 20:23:27 -0400 | [diff] [blame] | 149 | .PHONY: test-go-cover |
Joey Armstrong | fd77d5e | 2023-07-15 16:37:44 -0400 | [diff] [blame] | 150 | test-go-cover : gen-coverage-coverprofile gen-coverage-junit gen-coverage-cobertura |
Joey Armstrong | 7f8436c | 2023-07-09 20:23:27 -0400 | [diff] [blame] | 151 | |
| 152 | ## ----------------------------------------------------------------------- |
| 153 | ## Intent: Generate coverprofile data |
| 154 | ## ----------------------------------------------------------------------- |
| 155 | cover-dir := ./tests/results |
| 156 | go-cover-out := $(cover-dir)/go-test-coverage.out |
| 157 | go-result-out := $(cover-dir)/go-test-results.out |
| 158 | |
| 159 | .PHONY: gen-coverage-coverprofile |
| 160 | gen-coverage-coverprofile: |
| 161 | |
| 162 | $(call banner-enter,Target $@) |
| 163 | @echo "** Testing attempt #2: exit-with-error-status: disabled" |
| 164 | |
| 165 | # Fix docker volume perms if building locally |
| 166 | touch "$(go-cover-out)" |
| 167 | $(if $(LOCAL_FIX_PERMS),chmod o+w "$(go-cover-out)") |
| 168 | |
| 169 | # Fix docker volume perms if building locally |
| 170 | $(if $(LOCAL_FIX_PERMS),touch "$(go-result-out)") |
| 171 | $(if $(LOCAL_FIX_PERMS),chmod o+w "$(go-result-out)") |
| 172 | |
| 173 | # ------------------------------------------ |
| 174 | # set -euo pipefail else tee masks $? return |
| 175 | # ------------------------------------------ |
| 176 | @echo '** Running test coverage: exit-on-error is currently disabled' |
| 177 | -(\ |
| 178 | set -euo pipefail; \ |
| 179 | $(GO) test -mod=vendor -v -coverprofile "$(go-cover-out)" -covermode count ./... 2>&1 | tee "$(go-result-out)" \ |
| 180 | ) |
| 181 | |
| 182 | $(if $(LOCAL_FIX_PERMS),chmod o-w "$(go-result-out)") |
Joey Armstrong | fd77d5e | 2023-07-15 16:37:44 -0400 | [diff] [blame] | 183 | $(if $(LOCAL_FIX_PERMS),chmod o-w "$(go-cover-out)") |
| 184 | |
Joey Armstrong | 7f8436c | 2023-07-09 20:23:27 -0400 | [diff] [blame] | 185 | $(call banner-leave,Target $@) |
| 186 | |
| 187 | ## ----------------------------------------------------------------------- |
| 188 | ## Intent: Morph coverage data into junit/xml content |
| 189 | ## ----------------------------------------------------------------------- |
| 190 | go-results-xml := $(cover-dir)/go-test-results.xml |
| 191 | |
| 192 | .PHONY: gen-coverage-junit |
| 193 | gen-coverage-junit : gen-coverage-coverprofile |
| 194 | gen-coverage-junit: |
| 195 | $(call banner-enter,Target $@) |
| 196 | |
| 197 | # Fix docker volume perms if building locally |
| 198 | $(if $(LOCAL_FIX_PERMS),touch "$(go-results-xml)") |
| 199 | $(if $(LOCAL_FIX_PERMS),chmod o+w "$(go-results-xml)") |
| 200 | |
| 201 | ${GO_JUNIT_REPORT} < $(go-result-out) > "$(go-results-xml)" |
| 202 | |
| 203 | $(if $(LOCAL_FIX_PERMS),chmod o-w "$(go-results-xml)") |
| 204 | $(call banner-leave,Target $@) |
| 205 | |
| 206 | ## ----------------------------------------------------------------------- |
| 207 | ## Intent: Morph coverage data into cobertura xml |
| 208 | ## ----------------------------------------------------------------------- |
| 209 | go-cover-xml := $(cover-dir)/go-test-coverage.xml |
| 210 | |
| 211 | .PHONY: gen-coverage-cobertura |
| 212 | gen-coverage-cobertura : gen-coverage-junit |
| 213 | gen-coverage-cobertura : |
| 214 | |
| 215 | $(call banner-enter,Target $@) |
| 216 | |
| 217 | # Fix docker volume perms if building locally |
| 218 | $(if $(LOCAL_FIX_PERMS),touch "$(go-cover-xml)") |
Joey Armstrong | fd77d5e | 2023-07-15 16:37:44 -0400 | [diff] [blame] | 219 | $(if $(LOCAL_FIX_PERMS),chmod o+w "$(go-cover-xml)") |
Joey Armstrong | 7f8436c | 2023-07-09 20:23:27 -0400 | [diff] [blame] | 220 | |
| 221 | ${GOCOVER_COBERTURA} < "$(go-cover-out)" > "$(go-cover-xml)" |
| 222 | |
| 223 | $(if $(LOCAL_FIX_PERMS),chmod o-w "$(go-cover-xml)") |
| 224 | $(call banner-leave,Target $@) |
| 225 | |
| 226 | ## ----------------------------------------------------------------------- |
| 227 | ## ----------------------------------------------------------------------- |
| 228 | distclean: |
Joey Armstrong | 26245a3 | 2022-12-17 21:49:06 -0500 | [diff] [blame] | 229 | $(RM) -r ./sca-report ./tests |
Scott Baker | 2c1c482 | 2019-10-16 11:02:41 -0700 | [diff] [blame] | 230 | |
Joey Armstrong | b085c50 | 2023-01-17 13:56:24 -0500 | [diff] [blame] | 231 | ## ----------------------------------------------------------------------- |
| 232 | ## ----------------------------------------------------------------------- |
Joey Armstrong | 7f8436c | 2023-07-09 20:23:27 -0400 | [diff] [blame] | 233 | clean :: distclean |
| 234 | |
| 235 | ## ----------------------------------------------------------------------- |
| 236 | ## ----------------------------------------------------------------------- |
| 237 | sterile :: clean |
| 238 | |
| 239 | ## ----------------------------------------------------------------------- |
| 240 | ## ----------------------------------------------------------------------- |
| 241 | help :: |
| 242 | @echo "Usage: make [<target>]" |
| 243 | @echo "where available targets are:" |
| 244 | @echo |
| 245 | @echo "build : Build the library" |
| 246 | @echo "clean : Remove files created by the build" |
| 247 | @echo "distclean : Remove build and testing artifacts and reports" |
| 248 | @echo "lint-mod : Verify the integrity of the 'mod' files" |
| 249 | @echo "mod-update : Update go.mod and the vendor directory" |
| 250 | @echo "test : Generate reports for all go tests" |
| 251 | @echo |
| 252 | @echo '[REPORT: coverage]' |
| 253 | @echo ' gen-coverage-coverprofile Generate profiling data' |
| 254 | @echo ' gen-coverage-junit Generate junit coverage report' |
| 255 | @echo ' gen-coverage-cobertura Generate cobertura report' |
Joey Armstrong | 26245a3 | 2022-12-17 21:49:06 -0500 | [diff] [blame] | 256 | |
| 257 | # [EOF] |
Joey Armstrong | 7f8436c | 2023-07-09 20:23:27 -0400 | [diff] [blame] | 258 | |