[VOL-5010] - Clone unit tests to run on a v2.12 branch
makefiles/consts.mk
makefiles/virtualenv.mk
-----------------------
o Copy in latest library makefiles from repo:onf-make
global-jjb
packer/common-packer
--------------------
o Upgrade LinuxFoundation submodules to the latest version.
o global-jjb : from=0.53.3 to=0.86.7
o packaer/common-packer: from=0.1.0~22 to=0.12.1
.gitignore
makefiles/include.mk
makefiles/git/
makefiles/jjb/
--------------
o Added convenience make targets to view submodule versions.
o JJB target:jjb-gen added to prototype local pipeline edits.
o Logic is conditional, library will only load when targets are requested.
jjb/voltha-test/voltha-certification/
jjb/voltha-test/voltha-certification/README
jjb/voltha-test/voltha-certification/master.yaml
------------------------------------------------
o Create pseudo-branches within voltha testing so we can
o 'branch' (simple directory copy) at release time VS
o having to find and clone individual test suites from last release.
Change-Id: I3e0096d3326e76b3faa896d73183f9d28e946d06
diff --git a/.gitignore b/.gitignore
index 0506491..0dc27e0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,6 +30,7 @@
*.pyc
# jjb local testing
+.venv
venv-jjb
job-configs
@@ -38,4 +39,7 @@
package-lock.json
package.json
+# Generated pipeline jobs
+build/
+
# [EOF]
diff --git a/jjb/voltha-test/voltha-certification/README b/jjb/voltha-test/voltha-certification/README
new file mode 100644
index 0000000..8b57f6f
--- /dev/null
+++ b/jjb/voltha-test/voltha-certification/README
@@ -0,0 +1,7 @@
+This directory is used for refactoring and breakup of the kitchen sink
+JJB job yaml template that contains all versioned VOLTHA test stuies.
+
+git branches are not used, all jobs are visible.
+To support modular branch based testing naming conventions that include
+some form of voltha-X.YY will be used within configs and templates to
+support separation of jobs by release branch.
\ No newline at end of file
diff --git a/jjb/voltha-test/voltha-certification/master.yaml b/jjb/voltha-test/voltha-certification/master.yaml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/jjb/voltha-test/voltha-certification/master.yaml
diff --git a/jjb/voltha-test/voltha-certification/playground.yaml b/jjb/voltha-test/voltha-certification/playground.yaml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/jjb/voltha-test/voltha-certification/playground.yaml
diff --git a/jjb/voltha-test/voltha-certification/voltha-2.11.yaml b/jjb/voltha-test/voltha-certification/voltha-2.11.yaml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/jjb/voltha-test/voltha-certification/voltha-2.11.yaml
diff --git a/jjb/voltha-test/voltha-certification/voltha-2.12.yaml b/jjb/voltha-test/voltha-certification/voltha-2.12.yaml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/jjb/voltha-test/voltha-certification/voltha-2.12.yaml
diff --git a/jjb/voltha-test/voltha-certification/voltha-2.8.yaml b/jjb/voltha-test/voltha-certification/voltha-2.8.yaml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/jjb/voltha-test/voltha-certification/voltha-2.8.yaml
diff --git a/jjb/voltha-test/voltha-nightly-jobs/README b/jjb/voltha-test/voltha-nightly-jobs/README
new file mode 100644
index 0000000..8b57f6f
--- /dev/null
+++ b/jjb/voltha-test/voltha-nightly-jobs/README
@@ -0,0 +1,7 @@
+This directory is used for refactoring and breakup of the kitchen sink
+JJB job yaml template that contains all versioned VOLTHA test stuies.
+
+git branches are not used, all jobs are visible.
+To support modular branch based testing naming conventions that include
+some form of voltha-X.YY will be used within configs and templates to
+support separation of jobs by release branch.
\ No newline at end of file
diff --git a/makefiles/consts.mk b/makefiles/consts.mk
index d6f71e8..8961b3a 100644
--- a/makefiles/consts.mk
+++ b/makefiles/consts.mk
@@ -17,6 +17,7 @@
# SPDX-FileCopyrightText: 2022-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
# -----------------------------------------------------------------------
@@ -26,17 +27,25 @@
export dot :=.
export null :=#
export space := $(null) $(null)
-export quote-single := $(null)"$(null)#"
-export quote-double := $(null)'$(null)#'
+export quote-single := $(null)'$(null)#'
+export quote-double := $(null)"$(null)#"
# [DEBUG] make {target} HIDE=
-HIDE ?= @
+HIDE ?= @
env-clean ?= /usr/bin/env --ignore-environment
xargs-n1 := xargs -0 -t -n1 --no-run-if-empty
xargs-n1-clean := $(env-clean) $(xargs-n1)
## -----------------------------------------------------------------------
+## Intent: NOP command for targets whose dependencies do all heavy lifting
+## -----------------------------------------------------------------------
+## usage: foo bar tans
+## <tab>$(nop-command)
+## -----------------------------------------------------------------------
+nop-cmd := :
+
+## -----------------------------------------------------------------------
## Default shell:
## o set -e enable error checking
## o set -u report undefined errors
diff --git a/makefiles/git/help.mk b/makefiles/git/help.mk
new file mode 100644
index 0000000..cbd33ee
--- /dev/null
+++ b/makefiles/git/help.mk
@@ -0,0 +1,31 @@
+# -*- makefile -*-
+# -----------------------------------------------------------------------
+# Copyright 2022-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.
+# -----------------------------------------------------------------------
+# Intent: Helper makefile target used to setup for a release
+# -----------------------------------------------------------------------
+
+## ---------------------------------------------------------------------------
+## Intent: Display supported targets
+## ---------------------------------------------------------------------------
+help-onf-git :
+ @echo
+ @echo '[GIT]'
+ @echo ' show-submodules Display a list of repository submodules and versions'
+
+help ::
+ @echo ' help-onf-git Display git makefile targets'
+
+# [EOF]
diff --git a/makefiles/git/include.mk b/makefiles/git/include.mk
new file mode 100644
index 0000000..9125178
--- /dev/null
+++ b/makefiles/git/include.mk
@@ -0,0 +1,36 @@
+# -*- makefile -*-
+# -----------------------------------------------------------------------
+# Copyright 2022-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: 2022 Open Networking Foundation (ONF) and the ONF Contributors
+# SPDX-License-Identifier: Apache-2.0
+# -----------------------------------------------------------------------
+
+$(if $(DEBUG),$(warning ENTER))
+
+##--------------------##
+##---] INCLUDES [---##
+##--------------------##
+include $(MAKEDIR)/git/help.mk
+include $(MAKEDIR)/git/required.mk
+
+ifdef USE_ONF_GIT_MK
+ # Dynamic loading when targets are requested by name
+ include $(ONF_MAKE)/git/submodules.mk
+endif
+
+# [EOF]
+
+
diff --git a/makefiles/git/required.mk b/makefiles/git/required.mk
new file mode 100644
index 0000000..29fba88
--- /dev/null
+++ b/makefiles/git/required.mk
@@ -0,0 +1,32 @@
+# -*- makefile -*-
+# -----------------------------------------------------------------------
+# Copyright 2022-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.
+# -----------------------------------------------------------------------
+# Intent: Conditionally load when named targets are requested.
+# var ?= $(error ...) definitions are fatal to "make help" and others
+# -----------------------------------------------------------------------
+
+git-mk-targets := $(NULL)
+git-mk-targets := show-submodules
+
+# -----------------------------------------------------------------------
+# Define a flag to only load release targets when mentioned by name
+# Makefile can also explicitly define the flag to force always loading.
+# -----------------------------------------------------------------------
+$(foreach tgt,$(git-mk-targets),\
+ $(if $(findstring $(tgt),$(MAKECMDGOALS)),$(eval USE_ONF_GIT_MK := true))\
+)
+
+# [EOF]
diff --git a/makefiles/git/submodules.mk b/makefiles/git/submodules.mk
new file mode 100644
index 0000000..42c2fc2
--- /dev/null
+++ b/makefiles/git/submodules.mk
@@ -0,0 +1,57 @@
+# -*- makefile -*-
+# -----------------------------------------------------------------------
+# Copyright 2022-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: 2022 Open Networking Foundation (ONF) and the ONF Contributors
+# SPDX-License-Identifier: Apache-2.0
+# -----------------------------------------------------------------------
+
+$(if $(DEBUG),$(warning ENTER))
+
+show-submodules:
+
+ $(HIDE)cat .gitmodules
+
+ @echo
+ $(HIDE) git submodule
+
+$(if $(DEBUG),$(warning LEAVE))
+
+# https://github.com/lfit/releng-global-jjb/tags
+# git checkout v0.86.7
+# [crucible:global-jjb] git checkout v0.86.7
+# Previous HEAD position was 5dc3432 Update regexp in lf-infra-ship-logs macro
+# HEAD is now at c5bd1d3 Fix: Pin urllib3~=1.26.15 in pypi dist jobs
+
+# 5dc3432cae2f13d9e5151a00a76a78ce73d92d70 global-jjb (v0.53.3)
+# 0d88f8b7a24b53b1c3e189e30ab94373c51eea91 lf-ansible (0d88f8b)
+# 4a5b0cd9032938194c4813fe36663ddee4f9e60e packer/common-packer (v0.1.0~22)
+
+# https://stackoverflow.com/questions/30301510/git-submodule-specify-version
+# cd global-jjb
+# git checkout v0.86.7
+# cd -
+# git commit . -m "use submodule v0.86.7"
+
+# https://github.com/lfit/releng-lf-ansible.git
+# tag==master, no release
+
+# https://github.com/lfit/releng-common-packer.git
+# cd packer/common-packer
+# git checkout v0.12.1
+# cd -
+# git commit . -m "use submodule v0.12.1""
+
+# [EOF]
diff --git a/makefiles/include.mk b/makefiles/include.mk
index d4fb1e3..491ee0f 100644
--- a/makefiles/include.mk
+++ b/makefiles/include.mk
@@ -35,6 +35,9 @@
include $(ONF_MAKE)/git-submodules.mk
include $(ONF_MAKE)/gerrit/include.mk
+include $(ONF_MAKE)/git/include.mk
+include $(ONF_MAKE)/jjb/include.mk
+
include $(ONF_MAKE)/release/include.mk
include $(ONF_MAKE)/todo.mk
diff --git a/makefiles/jjb/help.mk b/makefiles/jjb/help.mk
new file mode 100644
index 0000000..331c68a
--- /dev/null
+++ b/makefiles/jjb/help.mk
@@ -0,0 +1,38 @@
+# -*- makefile -*-
+# -----------------------------------------------------------------------
+# Copyright 2022-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.
+# -----------------------------------------------------------------------
+# Intent: Helper makefile target used to setup for a release
+# -----------------------------------------------------------------------
+
+## ---------------------------------------------------------------------------
+## Intent: Display supported targets
+## ---------------------------------------------------------------------------
+help-jjb:
+ @echo
+ @echo '[JJB]'
+ @echo ' jjb-gen Generate a local set of JJB pipelines'
+
+ ifdef VERBOSE
+ @echo ' LOGS=1 Display log from jjb-gen target'
+ @echo ' VERBOSE=1 Display generated pipeline files'
+ endif
+
+## ---------------------------------------------------------------------------
+## ---------------------------------------------------------------------------
+help ::
+ @echo ' help-jjb Display Jenkins Job Builder targets'
+
+# [EOF]
diff --git a/makefiles/jjb/include.mk b/makefiles/jjb/include.mk
new file mode 100644
index 0000000..e61ad7c
--- /dev/null
+++ b/makefiles/jjb/include.mk
@@ -0,0 +1,36 @@
+# -*- makefile -*-
+# -----------------------------------------------------------------------
+# Copyright 2022-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: 2022 Open Networking Foundation (ONF) and the ONF Contributors
+# SPDX-License-Identifier: Apache-2.0
+# -----------------------------------------------------------------------
+
+$(if $(DEBUG),$(warning ENTER))
+
+##--------------------##
+##---] INCLUDES [---##
+##--------------------##
+include $(MAKEDIR)/jjb/help.mk
+include $(MAKEDIR)/jjb/required.mk
+
+ifdef USE-ONF-JJB-MK
+ # Dynamic loading when targets are requested by name
+ include $(ONF_MAKE)/jjb/targets.mk
+endif
+
+# [EOF]
+
+
diff --git a/makefiles/jjb/required.mk b/makefiles/jjb/required.mk
new file mode 100644
index 0000000..17371e9
--- /dev/null
+++ b/makefiles/jjb/required.mk
@@ -0,0 +1,33 @@
+# -*- makefile -*-
+# -----------------------------------------------------------------------
+# Copyright 2022-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.
+# -----------------------------------------------------------------------
+# Intent: Conditionally load when named targets are requested.
+# var ?= $(error ...) definitions are fatal to "make help" and others
+# -----------------------------------------------------------------------
+
+onf-mk-jjb-targets := $(NULL)
+onf-mk-jjb-targets += jjb-gen
+onf-mk-jjb-targets += sterile
+
+# -----------------------------------------------------------------------
+# Define a flag to only load release targets when mentioned by name
+# Makefile can also explicitly define the flag to force always loading.
+# -----------------------------------------------------------------------
+$(foreach tgt,$(onf-mk-jjb-targets),\
+ $(if $(findstring $(tgt),$(MAKECMDGOALS)),$(eval USE-ONF-JJB-MK := true))\
+)
+
+# [EOF]
diff --git a/makefiles/jjb/targets.mk b/makefiles/jjb/targets.mk
new file mode 100644
index 0000000..17fc78f
--- /dev/null
+++ b/makefiles/jjb/targets.mk
@@ -0,0 +1,64 @@
+# -*- makefile -*-
+# -----------------------------------------------------------------------
+# Copyright 2022-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.
+# -----------------------------------------------------------------------
+# Intent: Helper makefile target used to setup for a release
+# -----------------------------------------------------------------------
+
+$(if $(DEBUG),$(warning ENTER))
+
+##-------------------##
+##---] GLOBALS [---##
+##-------------------##
+jjb-gen-dir := build
+
+##-------------------##
+##---] TARGETS [---##
+##-------------------##
+all: help
+
+## -----------------------------------------------------------------------
+## Intent: Generate pipeline jobs
+## -----------------------------------------------------------------------
+.PHONY: jjb-gen
+
+jjb-gen-log := $(jjb-gen-dir)/jjb-gen.log
+jjb-gen:
+ @mkdir -p $(jjb-gen-dir)
+
+ @echo
+ @echo "** Generating pipelines (target: $@)"
+ @touch "$(jjb-gen-dir)/.sentinel"
+ ( jenkins-jobs test $(PWD)/jjb -o $(jjb-gen-dir) 3>&1 2>&1 )\
+ > "$(jjb-gen-log)"
+
+ ifdef LOGS
+ -@less "$(jjb-gen-log)"
+ endif
+
+ ifdef VERBOSE
+ @echo
+ @echo "** Display generated pipelines"
+ find "$(jjb-gen-dir)" -newer "$(jjb-gen-dir)/.sentinel" -ls
+ endif
+
+## -----------------------------------------------------------------------
+## -----------------------------------------------------------------------
+sterile ::
+ $(RM) -r $(jjb-gen-dir)
+
+$(if $(DEBUG),$(warning LEAVE))
+
+# [EOF]
diff --git a/makefiles/release/required.mk b/makefiles/release/required.mk
index 59366ce..620b827 100644
--- a/makefiles/release/required.mk
+++ b/makefiles/release/required.mk
@@ -18,8 +18,9 @@
# var ?= $(error ...) definitions are fatal to "make help" and others
# -----------------------------------------------------------------------
-voltha-release-mk-targets := null
+voltha-release-mk-targets := $(NULL)
voltha-release-mk-targets += create-jobs-release
+voltha-release-mk-targets += create-jobs-release-certification
voltha-release-mk-targets += create-jobs-release-nightly
voltha-release-mk-targets += create-jobs-release-units
voltha-release-mk-targets += sterile-create-jobs-release
diff --git a/makefiles/release/targets.mk b/makefiles/release/targets.mk
index a984051..44aaac7 100644
--- a/makefiles/release/targets.mk
+++ b/makefiles/release/targets.mk
@@ -32,6 +32,8 @@
# fatal to make help
voltha-version ?= $(error $(MAKE) voltha-verison=voltha-x.yy is required)\
+last-release := voltha-2.11
+
## Known releases
versions += master
versions += voltha-2.12
@@ -48,6 +50,7 @@
## Intent: Create branch driven pipeline test jobs.
## ---------------------------------------------------------------------------
## Build these deps to create a new release area
+create-jobs-release += create-jobs-release-certification
create-jobs-release += create-jobs-release-nightly
create-jobs-release += create-jobs-release-units
@@ -77,17 +80,16 @@
## ---------------------------------------------------------------------------
## NOTE: WIP - nightly jobs have not yet migrated from the mega job config file
## ---------------------------------------------------------------------------
-replace-ver := voltha-2.11
nightly-dir := $(release-mk-top)/jjb/voltha-test/voltha-nightly-jobs
nightly-yaml := $(nightly-dir)/$(voltha-version).yaml
-nightly-tmpl := $(nightly-dir)/$(replace-ver).yaml
+nightly-tmpl := $(nightly-dir)/$(last-release).yaml
create-jobs-release-nightly : $(nightly-yaml)
$(nightly-yaml) : $(nightly-tmpl)
@echo
@echo "** Create branch driven pipeline: nightly tests"
- sed -e 's/$(replace-ver)/$(voltha-version)/g' $< > $@
+ sed -e 's/$(last-release)/$(voltha-version)/g' $< > $@
$(HIDE)/bin/ls -l $(dir $@)
## ---------------------------------------------------------------------------
@@ -99,8 +101,36 @@
## ---------------------------------------------------------------------------
## Intent: Create branch driven nightly test jobs.
+## o Clone config for the last nightly release
+## o In-place edit to the latest version.
+## ---------------------------------------------------------------------------
+## NOTE: WIP - nightly jobs have not yet migrated from the mega job config file
+## ---------------------------------------------------------------------------
+certification-dir := $(release-mk-top)/jjb/voltha-test/voltha-certification
+certification-yaml := $(certification-dir)/$(voltha-version).yaml
+certification-tmpl := $(certification-dir)/$(last-release).yaml
+
+create-jobs-release-certification : $(certification-yaml)
+$(certification-yaml) : $(certification-tmpl)
+
+ @echo
+ @echo "** Create branch driven pipeline: nightly tests"
+ sed -e 's/$(last-release)/$(voltha-version)/g' $< > $@
+ $(HIDE)/bin/ls -l $(dir $@)
+
+## ---------------------------------------------------------------------------
+## Intent: Create branch driven nightly test jobs.
+## ---------------------------------------------------------------------------
+$(certification-tmpl):
+ @echo "ERROR: Yaml template branch does not exist: $@"
+ @echo 1
+
+
+## ---------------------------------------------------------------------------
+## Intent: Create branch driven nightly test jobs.
## ---------------------------------------------------------------------------
sterile-create-jobs-release :
+ $(RM) $(certification-yaml)
$(RM) $(nightly-yaml)
$(RM) -r $(units-yaml)
diff --git a/makefiles/virtualenv.mk b/makefiles/virtualenv.mk
index 2e12f24..93eb29d 100644
--- a/makefiles/virtualenv.mk
+++ b/makefiles/virtualenv.mk
@@ -14,6 +14,9 @@
# See the License for the specific language governing permissions and
# limitations under the License.
## -----------------------------------------------------------------------
+# https://gerrit.opencord.org/plugins/gitiles/onf-make
+# ONF.makefile.version = 1.0
+# -----------------------------------------------------------------------
$(if $(DEBUG),$(warning ENTER))