191c64673SSebastian Brzezinka# SPDX-License-Identifier: BSD-3-Clause 291c64673SSebastian Brzezinka# Copyright (C) 2023 Intel Corporation. 386e4665bSBen Walker# Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES 491c64673SSebastian Brzezinka# All rights reserved. 591c64673SSebastian Brzezinka# 691c64673SSebastian Brzezinka 791c64673SSebastian BrzezinkaSPDK_ROOT_DIR := $(abspath $(CURDIR)/..) 891c64673SSebastian Brzezinkainclude $(SPDK_ROOT_DIR)/mk/spdk.common.mk 991c64673SSebastian Brzezinka 10f14b142aSBen Walkersetup_cmd = pip install --prefix=$(CONFIG_PREFIX) 1191c64673SSebastian Brzezinkaifneq ($(DESTDIR),) 1291c64673SSebastian Brzezinkasetup_cmd += --root $(DESTDIR) 1391c64673SSebastian Brzezinkaendif 1491c64673SSebastian Brzezinka 15f14b142aSBen Walkerpylibdir := $(abspath $(shell python3 -c "import sysconfig; print(sysconfig.get_paths()['purelib'])")) 16f14b142aSBen Walkerifneq ($(CONFIG_PREFIX),) 1702b30d3aSMichal Berger# Consider different scenarios where purelib can be located: 1802b30d3aSMichal Berger# 1902b30d3aSMichal Berger# - /usr/lib/python*/site-packages 2002b30d3aSMichal Berger# - /usr/local/lib/python*/site-packages 2102b30d3aSMichal Berger# - /foo/bar/lib/python*/site-packages 2202b30d3aSMichal Berger# 2302b30d3aSMichal Berger# The latter here can be a result of using interpreter from within a venv 2402b30d3aSMichal Berger# located at custom location - see how we handle PEP668 under ubuntu in 2502b30d3aSMichal Berger# pkgdep/ubuntu.sh for instance. 2602b30d3aSMichal Berger# 2702b30d3aSMichal Berger# So the common part here is: 2802b30d3aSMichal Berger# *lib/python*/site-packages 2902b30d3aSMichal Berger# 3002b30d3aSMichal Berger# So we cut the path to get the prefix (whatever it may be) and then we nuke 3102b30d3aSMichal Berger# it from the main path. So the corner case would look like so: 3202b30d3aSMichal Berger# 3302b30d3aSMichal Berger# pylibdir := /foo/bar/lib/python*/site-packages 3402b30d3aSMichal Berger# pylibprefix := /foo/bar 3502b30d3aSMichal Berger# pylibdir := $(CONFIG_PREFIX)/lib/python*/site-packages 3602b30d3aSMichal Berger# 3702b30d3aSMichal Berger# FIXME: I couldn't get patsubst to do the heavy lifting here, hence fallback 3802b30d3aSMichal Berger# to shell. 3902b30d3aSMichal Bergerpylibprefix := $(shell a=$(pylibdir); echo $${a%/lib*}) 4002b30d3aSMichal Bergerpylibdir := $(CONFIG_PREFIX)$(pylibdir:$(pylibprefix)%=%) 4191c64673SSebastian Brzezinkaendif 4291c64673SSebastian Brzezinka 43*66289a6dSKonrad Sztyberall: spdk/version.py 4491c64673SSebastian Brzezinka 4591c64673SSebastian Brzezinkaclean: 46*66289a6dSKonrad Sztyber $(Q)rm -f spdk/version.py 47*66289a6dSKonrad Sztyber 48*66289a6dSKonrad Sztyberspdk/version.py: $(SPDK_ROOT_DIR)/VERSION 49*66289a6dSKonrad Sztyber $(Q)printf "__version__ = '%d.%d%s'\n" \ 50*66289a6dSKonrad Sztyber $(version_major) $(version_minor) \ 51*66289a6dSKonrad Sztyber $(shell echo -n \"$(version_suffix)\" | sed 's/-pre/rc0/g' | tr -d -) > spdk/version.py 5291c64673SSebastian Brzezinka 5386e4665bSBen Walkerinstall: rpc spdkcli 54f14b142aSBen Walker $(Q)$(setup_cmd) $(SPDK_ROOT_DIR)/python 55f14b142aSBen Walker rm -rf $(SPDK_ROOT_DIR)/python/spdk.egg-info 5691c64673SSebastian Brzezinka 5786e4665bSBen Walker$(SPDK_ROOT_DIR)/build/bin/spdk_rpc: 5886e4665bSBen Walker cp $(SPDK_ROOT_DIR)/scripts/rpc.py $(SPDK_ROOT_DIR)/build/bin/spdk_rpc 5986e4665bSBen Walker chmod +x $(SPDK_ROOT_DIR)/build/bin/spdk_rpc 6086e4665bSBen Walker 6186e4665bSBen Walker$(SPDK_ROOT_DIR)/build/bin/spdk_cli: 6286e4665bSBen Walker cp $(SPDK_ROOT_DIR)/scripts/spdkcli.py $(SPDK_ROOT_DIR)/build/bin/spdk_cli 6386e4665bSBen Walker chmod +x $(SPDK_ROOT_DIR)/build/bin/spdk_cli 6486e4665bSBen Walker 6586e4665bSBen Walkerrpc: $(SPDK_ROOT_DIR)/build/bin/spdk_rpc 6686e4665bSBen Walker $(INSTALL_APP) 6786e4665bSBen Walker 6886e4665bSBen Walkerspdkcli: $(SPDK_ROOT_DIR)/build/bin/spdk_cli 6986e4665bSBen Walker $(INSTALL_APP) 7086e4665bSBen Walker 7191c64673SSebastian Brzezinkauninstall: 72f14b142aSBen Walker $(Q)rm -rf $(DESTDIR)/$(pylibdir)/spdk* 7386e4665bSBen Walker $(Q)rm -f $(DESTDIR)/$(bindir)/spdk_rpc 7486e4665bSBen Walker $(Q)rm -f $(DESTDIR)/$(bindir)/spdk_cli 7591c64673SSebastian Brzezinka 7691c64673SSebastian Brzezinka.PHONY: all clean install uninstall 77