blob: c5244495fc0ba2ccbb245702902034bb9cd08d04 [file] [log] [blame]
Joey Armstrong62ae1392024-03-17 20:49:30 -04001# -*- makefile -*-
2# -----------------------------------------------------------------------
3# Copyright 2024 Open Networking Foundation Contributors
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.
16# -----------------------------------------------------------------------
17# SPDX-FileCopyrightText: 2024 Open Networking Foundation Contributors
18# SPDX-License-Identifier: Apache-2.0
19# -----------------------------------------------------------------------
20## Intent: pip install with dependencies
21## ----------------------------------------------------------------------
22
23$(if $(DEBUG),$(warning ENTER))
24
25##-------------------##
26##---] GLOBALS [---##
27##-------------------##
28venv-requirements := $(venv-abs-path)/makedep/requirements.txt.ts
29
30## -----------------------------------------------------------------------
31## Intent: Define a makefile target able to install venv python modules
32## when changes are made within the requirements.txt file.
33## -----------------------------------------------------------------------
34## [MAKEFILE TARGETS]
35## venv-requirements
36## Named target used to abstract underlying dependency filename.
37## $(venv-requirements-txt)
38## Make macro used to detect changes in requirements.txt file.
39## Timestamp filename is also the primary target for invoking pip install.
40## -----------------------------------------------------------------------
41.PHONY: venv-requirements
42venv-requirements : $(venv-requirements)
43$(venv-requirements) : requirements.txt
44
45 $(call banner-enter,venv-requirements)
46
47 $(activate) && python -m pip install -r 'requirements.txt'
48 @mkdir -p $(dir $@)
49 @touch $@
50
51 $(call banner-leave,venv-requirements)
52
53## -----------------------------------------------------------------------
54## -----------------------------------------------------------------------
55venv-help ::
56 @printf ' %-33.33s %s\n' 'venv-requirements' \
57 'pip install -r requirements.txt (dependency driven)'
58
59# [EOF]