#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
#
include ../../make-rules/shared-macros.mk
COMPONENT_NAME= pylint
COMPONENT_VERSION= 0.25.2
COMPONENT_SRC= $(COMPONENT_NAME)-$(COMPONENT_VERSION)
COMPONENT_ARCHIVE= $(COMPONENT_SRC).tar.gz
COMPONENT_ARCHIVE_HASH= \
sha256:757f2b97071a87fb7e4d017fc7c9eb74f26dcf412e683b614d3c5d54b217212d
COMPONENT_ARCHIVE_URL= http://download.logilab.org/pub/$(COMPONENT_NAME)/$(COMPONENT_ARCHIVE)
COMPONENT_PROJECT_URL= http://www.logilab.org/project/pylint/
COMPONENT_BUGDB= utility/pylint
TPNO= 9026
# Depends on logilab-common which is not Python 3 ready.
PYTHON_VERSIONS= 2.7 2.6
include $(WS_MAKE_RULES)/prep.mk
include $(WS_MAKE_RULES)/ips.mk
include $(WS_MAKE_RULES)/setup.py.mk
# There are several pylint documentation files that setup.py isn't installing
# but are present in the pylint package on other distributions. Copy them into
# the proto area "manually", so they can be included in the package.
PDOC = $(PROTO_DIR)/usr/share/doc
PDOC_PYLINT = $(PDOC)/pylint
PDOC_PYLINT_EXAMPLES = $(PDOC_PYLINT)/examples
COMPONENT_POST_INSTALL_ACTION += \
$(MKDIR) $(PDOC_PYLINT) ;
COMPONENT_POST_INSTALL_ACTION += \
$(CP) $(COMPONENT_SRC)/doc/beginner_pylint_tutorial.txt $(PDOC_PYLINT) ;
COMPONENT_POST_INSTALL_ACTION += \
$(CP) $(COMPONENT_SRC)/doc/FAQ.txt $(PDOC_PYLINT) ;
COMPONENT_POST_INSTALL_ACTION += \
$(CP) $(COMPONENT_SRC)/doc/features.txt $(PDOC_PYLINT) ;
COMPONENT_POST_INSTALL_ACTION += \
$(CP) $(COMPONENT_SRC)/doc/manual.txt $(PDOC_PYLINT) ;
COMPONENT_POST_INSTALL_ACTION += \
$(CP) $(COMPONENT_SRC)/doc/quickstart.txt $(PDOC_PYLINT) ;
COMPONENT_POST_INSTALL_ACTION += \
$(CP) $(COMPONENT_SRC)/README $(PDOC_PYLINT) ;
COMPONENT_POST_INSTALL_ACTION += \
$(MKDIR) $(PDOC_PYLINT_EXAMPLES) ;
COMPONENT_POST_INSTALL_ACTION += \
$(CP) $(COMPONENT_SRC)/examples/custom.py $(PDOC_PYLINT_EXAMPLES) ;
COMPONENT_POST_INSTALL_ACTION += \
$(CP) $(COMPONENT_SRC)/examples/custom_raw.py $(PDOC_PYLINT_EXAMPLES) ;
COMPONENT_POST_INSTALL_ACTION += \
$(CP) $(COMPONENT_SRC)/elisp/pylint.el $(PDOC_PYLINT_EXAMPLES) ;
COMPONENT_POST_INSTALL_ACTION += \
$(CP) $(COMPONENT_SRC)/examples/pylintrc_camelcase $(PDOC_PYLINT_EXAMPLES) ;
COMPONENT_POST_INSTALL_ACTION += \
$(CP) $(COMPONENT_SRC)/examples/pylintrc $(PDOC_PYLINT_EXAMPLES) ;
COMPONENT_POST_INSTALL_ACTION += \
(cd $(PROTO_DIR)/usr/bin; $(MV) epylint epylint-$(PYTHON_VERSION)) ;
COMPONENT_POST_INSTALL_ACTION += \
(cd $(PROTO_DIR)/usr/bin; $(MV) pylint pylint-$(PYTHON_VERSION)) ;
COMPONENT_POST_INSTALL_ACTION += \
(cd $(PROTO_DIR)/usr/bin; $(MV) pylint-gui pylint-gui-$(PYTHON_VERSION)) ;
COMPONENT_POST_INSTALL_ACTION += \
(cd $(PROTO_DIR)/usr/bin; $(MV) pyreverse pyreverse-$(PYTHON_VERSION)) ;
COMPONENT_POST_INSTALL_ACTION += \
(cd $(PROTO_DIR)/usr/bin; $(MV) symilar symilar-$(PYTHON_VERSION)) ;
# common targets
build: $(BUILD_32)
install: $(INSTALL_32)
# The tests are run using python 2.7 only and require that
# the python-27 package is installed (does not have to be the default python).
# Testing using python-26 is done manually, since it requires
# downloading and installing the unittest2 component (not part of Solaris),
# which provides python 2.7 functionality to the unittest python library
# in the python2.6 package.
# Use the python 2.7 libraries for testing.
test: PYTHON_VERSION=2.7
# logilab-common and logilab-astng are runtime dependencies of pylint,
# and we need to use their latest versions from this workspace.
# We can't just add their install targets as dependencies here,
# so just "gmake install" in the logilab-common and logilab-astng
# component directories before running the pylint tests.
COMPONENT_PRE_TEST_ACTION = ($(GMAKE) -C \
$(COMPONENT_DIR)/../logilab-common install; \
$(GMAKE) -C $(COMPONENT_DIR)/../logilab-astng install )
COMPONENT_TEST_ENV = PYTHONPATH=$(COMPONENT_DIR)/../logilab-common/build/prototype/$(MACH)$(PYTHON_VENDOR_PACKAGES):$(COMPONENT_DIR)/../logilab-astng/build/prototype/$(MACH)$(PYTHON_VENDOR_PACKAGES):$(PROTO_DIR)$(PYTHON_VENDOR_PACKAGES)
# Run pytest-2.7 from logilab-common's proto area for now, until the
# new version of logilab-common containing pytest is in CBE.
# Then we can change it to /usr/bin/pytest-$(PYTHON_VERSION).
COMPONENT_TEST_CMD = $(COMPONENT_DIR)/../logilab-common/build/prototype/$(MACH)/usr/bin/pytest-$(PYTHON_VERSION)
COMPONENT_TEST_ARGS =
# Expected failures for test target:
# 799 test cases, 4 errors, 6 failures, 4 skipped
# 9 modules OK (2 failed)
# failures: smoketest [7/14], unittest_lint [3/21]
test: $(TEST_32)
REQUIRED_PACKAGES += runtime/python-26
REQUIRED_PACKAGES += runtime/python-27
REQUIRED_PACKAGES += runtime/python-34