xref: /spdk/python/Makefile (revision 66289a6dbe28217365daa40fd92dcf327871c2e8)
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