Makefile.vars 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. # Licensed to Cloudera, Inc. under one
  2. # or more contributor license agreements. See the NOTICE file
  3. # distributed with this work for additional information
  4. # regarding copyright ownership. Cloudera, Inc. licenses this file
  5. # to you under the Apache License, Version 2.0 (the
  6. # "License"); you may not use this file except in compliance
  7. # with the License. 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. # Public (SDK) Makefile variables. It requires the following to be defined:
  18. # ROOT
  19. # Points to the root of the Hue installation.
  20. # From here, we can include $(ROOT)/Makefile.vars
  21. # to access various
  22. #
  23. SHELL := /bin/bash
  24. ##############################
  25. # 1. Check for python-dev
  26. # 2. Locate the system Python
  27. ##############################
  28. # If we're an installed Makefile, allow the build to override
  29. # some things. This allows the install to prepopulate
  30. # SYS_PYTHON, in particular.
  31. ifneq ($(wildcard $(ROOT)/Makefile.buildvars),)
  32. include $(ROOT)/Makefile.buildvars
  33. endif
  34. VER_ERR_MSG = "Variable PYTHON_VER is $(PYTHON_VER) but it only supports >= python3.8. If not set, defaults to python3.8."
  35. PYTHON_VER ?= python3.8
  36. PYTHON_EXE = $(shell echo $(PYTHON_VER) | sed "s/\.//")
  37. SYS_PIP = "pip3.8"
  38. $(info "PYTHON_VER is $(PYTHON_VER).")
  39. ifeq ($(shell echo $(PYTHON_VER) | head -c 8),python3.)
  40. PYTHON_VER := $(shell echo $(PYTHON_VER) | sed 's/\(python3\.[0-9]*\).*/\1/')
  41. MINOR_VER = $(shell echo $(PYTHON_VER) | sed 's/python3\.//')
  42. ifeq ($(shell test $(MINOR_VER) -lt 8; echo $$?),0)
  43. $(error "$(VER_ERR_MSG)")
  44. endif
  45. EXT_ENV_INSTALL = ext-env-pip-install
  46. SYS_PIP := $(shell which pip$(shell echo $(PYTHON_VER) | sed "s/python//g"))
  47. else
  48. $(error "$(VER_ERR_MSG)")
  49. endif
  50. PYTHON_H ?= $(shell ls /usr/include/$(PYTHON_VER)/Python.h 2>/dev/null || ls /usr/local/include/$(PYTHON_VER)/Python.h 2>/dev/null || find /usr/local/$(PYTHON_EXE)/include/$(PYTHON_VER)* -name Python.h 2>/dev/null || find /opt/rh/rh-$(PYTHON_EXE)/root/usr/include/$(PYTHON_VER)* -name Python.h 2>/dev/null || find /Library/Frameworks/Python.framework/Versions/*/include/$(PYTHON_VER)* -name Python.h 2>/dev/null)
  51. ifndef SKIP_PYTHONDEV_CHECK
  52. ifeq ($(PYTHON_H),)
  53. $(error "Error: must have python development packages for $(PYTHON_VER). Could not find Python.h. Please install $(PYTHON_VER)-devel or $(PYTHON_VER)-dev")
  54. endif
  55. SYS_PYTHON ?= $(shell ls /usr/bin/$(PYTHON_VER) 2>/dev/null || ls /usr/local/bin/$(PYTHON_VER) 2>/dev/null || ls /usr/local/$(PYTHON_EXE)/bin/$(PYTHON_VER) 2>/dev/null || ls /opt/rh/$(PYTHON_EXE)/root/usr/bin/$(PYTHON_VER) 2>/dev/null || ls /opt/rh/rh-$(PYTHON_EXE)/root/usr/bin/$(PYTHON_VER) 2>/dev/null || ls /Library/Frameworks/Python.framework/Versions/*/bin/$(PYTHON_VER) 2>/dev/null)
  56. else
  57. SYS_PYTHON ?= $(shell which $(PYTHON_VER))
  58. endif
  59. ifeq ($(SYS_PYTHON),)
  60. $(error "Error: Need python version >= 3.8")
  61. else
  62. $(info "SYS_PYTHON is $(SYS_PYTHON).")
  63. endif
  64. HADOOP_HOME ?= /usr/lib/hadoop
  65. ##############################
  66. # Location of the virtual environment
  67. ##############################
  68. BLD_DIR := $(ROOT)/build
  69. BLD_DIR_ENV := $(BLD_DIR)/env
  70. BLD_DIR_BIN := $(BLD_DIR_ENV)/bin
  71. THIRDPARTY_DIR := $(ROOT)/ext/thirdparty
  72. THIRDPARTY_JS_DIR := $(THIRDPARTY_DIR)/js
  73. STATIC_DIR := $(BLD_DIR)/static
  74. ##############################
  75. # ENV_PYTHON is the Python installed in the virtual environment. App
  76. # installation should always use the ENV_PYTHON.
  77. ##############################
  78. ENV_PYTHON := $(BLD_DIR_ENV)/bin/$(notdir $(SYS_PYTHON))
  79. ENV_PYTHON_VERSION = $(shell $(ENV_PYTHON) -c 'import sys; print ("python%d.%d"% sys.version_info[:2])')
  80. $(info "ENV_PYTHON is $(ENV_PYTHON).")
  81. $(info "SYS_PIP is $(SYS_PIP).")
  82. ##############################
  83. # ENV_EASY_INSTALL uses the easy_install script installed in the virtual
  84. # environment. It must be called as an argument to ENV_PYTHON so the
  85. # problem of the shebang being truncated at 80 characters in most kernels
  86. # doesn't arise.
  87. ##############################
  88. ENV_EASY_INSTALL := $(ENV_PYTHON) $(BLD_DIR_BIN)/easy_install
  89. ENV_PIP := $(ENV_PYTHON) $(BLD_DIR_BIN)/pip
  90. $(info "ENV_PIP is $(ENV_PIP).")
  91. PIP_MODULES := \
  92. cryptography==3.3.2 \
  93. future==0.18.2 \
  94. lockfile==0.8 \
  95. python-daemon==1.5.1 \
  96. pytz==2021.1 \
  97. filelock==3.0.12 \
  98. djangorestframework==3.9.4
  99. ##############################
  100. # This version is substituted through to the tarballs and packages.
  101. ##############################
  102. DESKTOP_VERSION := $(shell $(SYS_PYTHON) <(cat $(ROOT)/VERSION; echo print '(VERSION)'))
  103. MAVEN_VERSION = $(DESKTOP_VERSION)-SNAPSHOT
  104. ##############################
  105. # Path to the desktop dbproxy jar
  106. ##############################
  107. DB_PROXY_JAR := $(ROOT)/desktop/libs/librdbms/java-lib/dbproxy-1.0.jar
  108. ################################################
  109. # Internationalization
  110. ################################################
  111. PYBABEL := $(ROOT)/build/env/bin/pybabel
  112. ##############################
  113. # Path to files for pip requirements
  114. ##############################
  115. REQUIREMENT_FILE := $(ROOT)/desktop/core/requirements.txt
  116. REQUIREMENT_DOT_FILE := $(ROOT)/desktop/core/.requirements
  117. NAVOPTAPI_WHL := $(ROOT)/desktop/core/wheels/navoptapi-1.0.0-py3-none-any.whl
  118. ##############################
  119. # Set specific versions for some libraries
  120. ##############################
  121. ifeq ($(PYTHON_VER),python3.8)
  122. PIP_VERSION := 22.2.2
  123. VIRTUAL_ENV_VERSION := 20.24.4
  124. VIRTUAL_ENV_RELOCATABLE_VERSION := 0.0.1
  125. REQUIREMENT_PPC64LE_FILE := $(ROOT)/desktop/core/requirements_ppc64le.txt
  126. else ifeq ($(PYTHON_VER),python3.9)
  127. PIP_VERSION := 22.2.2
  128. VIRTUAL_ENV_VERSION := 20.19.0
  129. VIRTUAL_ENV_RELOCATABLE_VERSION := 0.0.1
  130. REQUIREMENT_PPC64LE_FILE := $(ROOT)/desktop/core/requirements_ppc64le_py39.txt
  131. else ifeq ($(PYTHON_VER),python3.10)
  132. PIP_VERSION := 22.2.2
  133. VIRTUAL_ENV_VERSION := 20.24.4
  134. VIRTUAL_ENV_RELOCATABLE_VERSION := 0.0.1
  135. endif