# Licensed to Cloudera, Inc. under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. Cloudera, Inc. licenses this file # to you 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. # # Public (SDK) Makefile variables. It requires the following to be defined: # ROOT # Points to the root of the Hue installation. # From here, we can include $(ROOT)/Makefile.vars # to access various # SHELL := /bin/bash ############################## # 1. Check for python-dev # 2. Locate the system Python ############################## # If we're an installed Makefile, allow the build to override # some things. This allows the install to prepopulate # SYS_PYTHON, in particular. ifneq ($(wildcard $(ROOT)/Makefile.buildvars),) include $(ROOT)/Makefile.buildvars endif VER_ERR_MSG = "Variable PYTHON_VER is $(PYTHON_VER) but it only supports python2.7 or >= python3.5. If not set, defaults to python2.7." PYTHON_VER ?= python2.7 PYTHON_EXE = $(shell echo $(PYTHON_VER) | sed "s/\.//") $(info "PYTHON_VER is $(PYTHON_VER).") ifeq ($(PYTHON_VER),python2.7) $(info "Python 2 module install of desktop/ext-py") EXT_ENV_INSTALL = ext-env-install else ifeq ($(shell echo $(PYTHON_VER) | head -c 8),python3.) $(info "Python 3 module install via pip") PYTHON_VER := $(shell echo $(PYTHON_VER) | head -c 9) MINOR_VER = $(shell echo -n $(PYTHON_VER) | tail -c 1) ifeq ($(shell test $(MINOR_VER) -lt 5; echo $$?),0) $(error "$(VER_ERR_MSG)") endif EXT_ENV_INSTALL = ext-env-pip-install else $(error "$(VER_ERR_MSG)") endif 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) ifndef SKIP_PYTHONDEV_CHECK ifeq ($(PYTHON_H),) $(error "Error: must have python development packages for $(PYTHON_VER). Could not find Python.h. Please install $(PYTHON_VER)-devel or $(PYTHON_VER)-dev") endif 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) else SYS_PYTHON ?= $(shell which $(PYTHON_VER)) endif ifeq ($(SYS_PYTHON),) $(error "Error: Need python version 2.7 or >= 3.5") else $(info "SYS_PYTHON is $(SYS_PYTHON).") endif HADOOP_HOME ?= /usr/lib/hadoop ############################## # Location of the virtual environment ############################## BLD_DIR := $(ROOT)/build BLD_DIR_ENV := $(BLD_DIR)/env BLD_DIR_BIN := $(BLD_DIR_ENV)/bin THIRDPARTY_DIR := $(ROOT)/ext/thirdparty THIRDPARTY_JS_DIR := $(THIRDPARTY_DIR)/js STATIC_DIR := $(BLD_DIR)/static ############################## # ENV_PYTHON is the Python installed in the virtual environment. App # installation should always use the ENV_PYTHON. ############################## ENV_PYTHON := $(BLD_DIR_ENV)/bin/$(notdir $(SYS_PYTHON)) ENV_PYTHON_VERSION = $(shell $(ENV_PYTHON) -c 'import sys; print ("python%d.%d"% sys.version_info[:2])') $(info "ENV_PYTHON is $(ENV_PYTHON).") ############################## # ENV_EASY_INSTALL uses the easy_install script installed in the virtual # environment. It must be called as an argument to ENV_PYTHON so the # problem of the shebang being truncated at 80 characters in most kernels # doesn't arise. ############################## ENV_EASY_INSTALL := $(ENV_PYTHON) $(BLD_DIR_BIN)/easy_install ENV_PIP := $(ENV_PYTHON) $(BLD_DIR_BIN)/pip ############################## # This version is substituted through to the tarballs and packages. ############################## DESKTOP_VERSION := $(shell $(SYS_PYTHON) <(cat $(ROOT)/VERSION; echo print '(VERSION)')) MAVEN_VERSION = $(DESKTOP_VERSION)-SNAPSHOT ############################## # Path to the desktop dbproxy jar ############################## DB_PROXY_JAR := $(ROOT)/desktop/libs/librdbms/java-lib/dbproxy-1.0.jar ################################################ # Internationalization ################################################ PYBABEL := $(ROOT)/build/env/bin/pybabel ############################## # Path to files for pip requirements ############################## REQUIREMENT_FILE := $(ROOT)/desktop/core/requirements.txt NAVOPTAPI_WHL := $(ROOT)/desktop/core/wheels/navoptapi-1.0.0-py3-none-any.whl