diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..ad7c8f9 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "release/validate/makefiles/onf-lib"] + path = release/validate/makefiles/onf-lib + url = https://github.com/opencord/onf-make.git diff --git a/release/validate/config.mk b/release/validate/config.mk new file mode 100644 index 0000000..731b90e --- /dev/null +++ b/release/validate/config.mk @@ -0,0 +1,150 @@ +# -*- makefile -*- +# ----------------------------------------------------------------------- +# Copyright 2023 Open Networking Foundation (ONF) and the ONF Contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ----------------------------------------------------------------------- +# https://gerrit.opencord.org/plugins/gitiles/onf-make +# ONF.makefiles.include.version = 1.1 +# ONF.confg.mk = 1.5 +# ----------------------------------------------------------------------- + +--repo-name-- := onf/validate # repo:onf/validate +--repo-name-- ?= $(error --repo-name--= is required) + +##--------------------------------## +##---] Disable lint targets [---## +##--------------------------------## +# NO-LINT-DOC8 := true +# NO-LINT-GOLANG := true +# NO-LINT-GROOVY := true# # Note[1] +NO-LINT-JJB := true# # Note[2] +NO-LINT-JSON := true# # Note[1] +NO-LINT-MAKEFILE := true# # Note[1] +NO-LINT-REUSE := true # License check +NO-LINT-ROBOT := true +NO-LINT-SHELL := true# # Note[1] +NO-LINT-TOX := true# # Note[1] +NO-LINT-YAML := true# # Note[1] + +NO-LINT-FLAKE8 := true# # Note[1] +NO-LINT-PYTHON := true# # Note[1] +NO-LINT-PYLINT := true# # Note[1] + +# Note[1] - A boatload of source to cleanup prior to enable. +# Note[2] - No sources available + +##---------------------------------## +##---] Conditional make logic [---## +##---------------------------------## +# USE-ONF-DOCKER-MK := true +# USE-ONF-GERRIT-MK := true +# USE-ONF-GIT-MK := true +# USE-ONF-JJB-MK := true +# USE-VOLTHA-RELEASE-MK := true + +##----------------------## +##---] Debug Mode [---## +##----------------------## +# export DEBUG := 1 # makefile debug +# export DISTUTILS_DEBUG := 1 # verbose: pip +# export DOCKER_DEBUG := 1 # verbose: docker +# export VERBOSE := 1 # makefile debug + +##-----------------------------------## +##---] JJB/Jenkins Job Builder [---## +##-----------------------------------## +JJB_VERSION ?= 2.8.0 +JOBCONFIG_DIR ?= job-configs + +##---------------------------------## +##---] Filesystem exclusions [---## +##---------------------------------## +onf-excl-dirs := $(null) # make clean: dirs= +onf-excl-dirs += .venv# # $(venv-name) +onf-excl-dirs += vendor# # golang / voltha*-go +onf-excl-dirs += patches# # voltha docs - python upgrade +onf-excl-dirs += .tox # also a python dependency + +ifeq ($(--repo-name--),voltha-docs) + lint-doc8-excl += '_build' +endif + +onf-excl-dirs ?= $(error onf-excl-dirs= is required) + +##-----------------------------## +##---] Feature Detection [---## +##-----------------------------## +# [TODO] include makefiles/features/include.mk +# [TODO] All logic below can migrate there. + +$(if $(filter %ci-management,$(--repo-name--)),\ + $(eval --REPO-IS-CI-MANAGEMENT-- := true)\ +) +$(if $(filter %voltha-docs,$(--repo-name--)),\ + $(eval --REPO-IS-VOLTHA-DOCS-- := true)\ +) + +# create makefiles/config/byrepo/{--repo-name--}.mk for one-off snowflakes ? +# $(if $(wildcard docker),$(eval USE-ONF-DOCKER-MK := true)) + +##-------------------------## +##---] Derived Flags [---## +##-------------------------## +ifdef --REPO-IS-CI-MANAGEMENT-- + USE-ONF-JJB := true + + onf-excl-dirs += global-jjb + onf-excl-dirs += lf-ansible + onf-excl-dirs += packer +endif + +ifdef --REPO-IS-VOLTHA-DOCS-- + onf-excl-dirs += _build + onf-excl-dirs += repos +endif + +ifdef NO-LINT-PYTHON + NO-LINT-FLAKE8 := true + NO-LINT-PYLINT := true +endif + +ifndef USE-ONF-JJB + NO-LINT-JJB := true +endif + +onf-excl-dirs := $(sort $(strip $(onf-excl-dirs))) + +# -------------------------------------------------------------------- +# Repository specific values +# -------------------------------------------------------------------- +# sterile-dirs += archives + +# submodules +# sterile-dirs += global-jjb +# sterile-dirs += lf-ansible +# sterile-dirs += packer + +# [TODO]# +# -------------------------------------------------------------------- +# o two distinct makefiles/ directories are needed, one for onf-make +# o second for repository specific makefile configs and logic. +# o Two independent vars specify path: +# ONF_MAKEDIR = library makefiles +# MAKEDIR = repository specific content +# o Conditional repository testing above can crush down all the +# "if-this-repository-is-X-do-Y' logic above intoL +# include $(MAKEDIR)/config.mk # repo:$(--repo-name--) +# -------------------------------------------------------------------- + +# [EOF] diff --git a/release/validate/makefile b/release/validate/makefile index dd29a91..a48fe30 100755 --- a/release/validate/makefile +++ b/release/validate/makefile @@ -4,12 +4,9 @@ .DEFAULT_GOAL := args -null :=# -space :=$(null) $(null) - -TOP ?= . -MAKEDIR ?= $(TOP)/makefiles -ONF_MAKE ?= $(TOP)/makefiles +TOP ?= . +include $(TOP)/config.mk +include $(TOP)/makefiles/include.mk PYTHON ?= $(HOME)/.venv/3.10.6/bin/python @@ -65,7 +62,7 @@ main-help: ## ----------------------------------------------------------------------- ## ----------------------------------------------------------------------- .PHONY: todo -todo: +todo :: $(main) --$@ stub-required-arg ## ----------------------------------------------------------------------- @@ -99,4 +96,7 @@ help :: @echo @echo "[EOF]" +# submodules: +# git submodule add https://github.com/opencord/onf-make.git +# ssh://joey@opennetworking.org@gerrit.opencord.org:29418/onf-make # [EOF] diff --git a/release/validate/makefiles/.gitignore b/release/validate/makefiles/.gitignore new file mode 100644 index 0000000..5484a8e --- /dev/null +++ b/release/validate/makefiles/.gitignore @@ -0,0 +1 @@ +onf-lib diff --git a/release/validate/makefiles/include.mk b/release/validate/makefiles/include.mk new file mode 100644 index 0000000..770736d --- /dev/null +++ b/release/validate/makefiles/include.mk @@ -0,0 +1,56 @@ +# -*- makefile -*- +# ----------------------------------------------------------------------- +# Copyright 2023 Open Networking Foundation (ONF) and the ONF Contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-FileCopyrightText: 2023 Open Networking Foundation (ONF) and the ONF Contributors +# SPDX-License-Identifier: Apache-2.0 +# ----------------------------------------------------------------------- +# https://gerrit.opencord.org/plugins/gitiles/onf-make +# ONF.makefile.version = 1.0 +# ----------------------------------------------------------------------- + +$(if $(DEBUG),$(warning ENTER)) + +## ----------------------------------------------------------------------- +## Define vars based on relative import (normalize symlinks) +## Usage: include makefiles/onf/include.mk +## ----------------------------------------------------------------------- +onf-mk-abs ?= $(abspath $(lastword $(MAKEFILE_LIST))) +onf-mk-top := $(subst /include.mk,$(null),$(onf-mk-abs)) +onf-mk-lib := $(onf-mk-top)/onf-lib/makefiles +onf-mk-loc := $(onf-mk-top)/local + +TOP ?= $(patsubst %/makefiles/include.mk,%,$(onf-mk-abs)) + +## ------------------------------------------------------ +## Two distinct vars needed to access library or project +## ------------------------------------------------------ +ONF_MAKEDIR ?= $(onf-mk-lib) +MAKEDIR ?= $(onf-mk-loc) + +## ----------------------------------------------------------------------- +## Load makefiles in order: +## 1) Library constants and logic loaded first +## 2) Parameterize and augment targets from local (repo specific) +## ----------------------------------------------------------------------- +include $(onf-mk-lib)/include.mk +include $(onf-mk-loc)/include.mk + +update-submodules: + git submodule foreach git pull + +$(if $(DEBUG),$(warning LEAVE)) + +# [EOF] diff --git a/release/validate/makefiles/local/include.mk b/release/validate/makefiles/local/include.mk new file mode 100644 index 0000000..e69de29 diff --git a/release/validate/makefiles/makefile b/release/validate/makefiles/makefile new file mode 100644 index 0000000..95d18c1 --- /dev/null +++ b/release/validate/makefiles/makefile @@ -0,0 +1,27 @@ +# -*- makefile -*- +# ----------------------------------------------------------------------- +# ----------------------------------------------------------------------- + +all: onf-lib local + +## ----------------------------------------------------------------------- +## ----------------------------------------------------------------------- +repo-onf-make := https://github.com/opencord/onf-make.git +onf-lib: + git submodule add $(repo-onf-make) $@ + +## ----------------------------------------------------------------------- +## ----------------------------------------------------------------------- +local: + mkdir -p $@ + umask 022 && chmod 755 + git add $@ + +# local: + +## ----------------------------------------------------------------------- +## ----------------------------------------------------------------------- +# sterile :: +# git rm -f onf + +# [EOF] diff --git a/release/validate/makefiles/makefiles_include_mk.ex b/release/validate/makefiles/makefiles_include_mk.ex new file mode 100644 index 0000000..1bad7af --- /dev/null +++ b/release/validate/makefiles/makefiles_include_mk.ex @@ -0,0 +1,73 @@ +# -*- makefile -*- +# ----------------------------------------------------------------------- +# Copyright 2023 Open Networking Foundation (ONF) and the ONF Contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-FileCopyrightText: 2023 Open Networking Foundation (ONF) and the ONF Contributors +# SPDX-License-Identifier: Apache-2.0 +# ----------------------------------------------------------------------- +# https://gerrit.opencord.org/plugins/gitiles/onf-make +# ONF.makefile.version = 1.0 +# ----------------------------------------------------------------------- +# Setup: +# 1) Makefile +# include config.mk +# include makefiles/include.mk +# 2) cd makefiles +# 23 copy makefiles_include_mk.ex into $repo/makefiles/include.mk +# 4) make create-onf-lib +# ----------------------------------------------------------------------- + +$(if $(DEBUG),$(warning ENTER)) + +## ----------------------------------------------------------------------- +## Define vars based on relative import (normalize symlinks) +## Usage: include makefiles/onf/include.mk +## ----------------------------------------------------------------------- +onf-mk-abs ?= $(abspath $(lastword $(MAKEFILE_LIST))) +onf-mk-top := $(subst /include.mk,$(null),$(onf-mk-abs)) +onf-mk-lib := $(onf-mk-top)/onf-lib/makefiles +onf-mk-loc := $(onf-mk-top)/local + +TOP ?= $(patsubst %/makefiles/include.mk,%,$(onf-mk-abs)) + +## ------------------------------------------------------ +## Two distinct vars needed to access library or project +## ------------------------------------------------------ +ONF_MAKEDIR ?= $(onf-mk-lib) +MAKEDIR ?= $(onf-mk-loc) + +## ----------------------------------------------------------------------- +## Load makefiles in order: +## 1) Library constants and logic loaded first +## 2) Parameterize and augment targets from local (repo specific) +## ----------------------------------------------------------------------- +include $(onf-mk-lib)/include.mk +include $(onf-mk-loc)/include.mk + +## ----------------------------------------- +## Submodue init target for new repositories +## ----------------------------------------- +create-onf-lib : $(onf-mk-lib) +$(onf-mk-lib): + mkdir -p $(dir $@)# makefiles + cd $(dir $@) \ + && git submodule https://github.com/opencord/onf-make.git onf-lib + +update-submodules: + git submodule foreach git pull + +$(if $(DEBUG),$(warning LEAVE)) + +# [EOF] diff --git a/release/validate/makefiles/onf-lib b/release/validate/makefiles/onf-lib new file mode 160000 index 0000000..f548adc --- /dev/null +++ b/release/validate/makefiles/onf-lib @@ -0,0 +1 @@ +Subproject commit f548adc757f6ddeec76a1418ccf0dcf56d4bbeb4