URL: https://github.com/freeipa/freeipa/pull/502 Author: tiran Title: #502: Make pylint and jsl optional Action: synchronized
To pull the PR as Git branch: git remote add ghfreeipa https://github.com/freeipa/freeipa git fetch ghfreeipa pull/502/head:pr502 git checkout pr502
From 21794f9008cbe5a3d239f8f7ecd7db441894e2f8 Mon Sep 17 00:00:00 2001 From: Christian Heimes <chei...@redhat.com> Date: Wed, 22 Feb 2017 19:19:35 +0100 Subject: [PATCH] Make pylint and jsl optional ./configure no longer fails when pylint or jsl are not available. The make targets for pylint and jsl are no longer defined without the tools. Rational: pylint and jsl are not required to build FreeIPA. Both are useful developer tools. It's more user friendly to make both components optionally with default config arguments. There is no reason to fail building on a build system without development tools. It's still possible to enforce dependency checks with --with-jslint and --enable-pylint. https://fedorahosted.org/freeipa/ticket/6604 Signed-off-by: Christian Heimes <chei...@redhat.com> --- Makefile.am | 14 +++++++++++--- configure.ac | 32 ++++++++++++++++++++++++-------- 2 files changed, 35 insertions(+), 11 deletions(-) diff --git a/Makefile.am b/Makefile.am index a35d18f..4e00053 100644 --- a/Makefile.am +++ b/Makefile.am @@ -146,6 +146,10 @@ JSLINT_TARGET = jslint endif WITH_JSLINT lint: acilint apilint $(POLINT_TARGET) $(PYLINT_TARGET) $(JSLINT_TARGET) +.PHONY: $(top_builddir)/ipapython/version.py +$(top_builddir)/ipapython/version.py: + (cd $(top_builddir)/ipapython && make version.py) + .PHONY: acilint acilint: $(top_builddir)/ipapython/version.py cd $(srcdir); ./makeaci --validate @@ -162,10 +166,10 @@ polint: # folders rpmbuild, freeipa-* and dist. Skip (match, but don't print) .*, # *.in, *~. Finally print all python files, including scripts that do not # have python extension. -.PHONY: pylint $(top_builddir)/ipapython/version.py -$(top_builddir)/ipapython/version.py: - (cd $(top_builddir)/ipapython && make version.py) +.PHONY: pylint + +if WITH_PYLINT pylint: $(top_builddir)/ipapython/version.py ipasetup.py FILES=`find $(top_srcdir) \ -type d -exec test -e '{}/__init__.py' \; -print -prune -o \ @@ -180,9 +184,12 @@ pylint: $(top_builddir)/ipapython/version.py ipasetup.py echo "Pylint is running, please wait ..."; \ PYTHONPATH=$(top_srcdir) $(PYTHON) -m pylint \ --rcfile=$(top_srcdir)/pylintrc $${FILES} +endif # WITH_PYLINT .PHONY: jslint jslint-ui jslint-ui-test jslint-html \ $(top_builddir)/install/ui/src/libs/loader.js + +if WITH_JSLINT jslint: jslint-ui jslint-ui-test jslint-html $(top_builddir)/install/ui/src/libs/loader.js: @@ -205,6 +212,7 @@ jslint-ui-test: jslint-html: cd $(top_srcdir)/install/html; \ jsl -nologo -nosummary -nofilelisting -conf jsl.conf +endif # WITH_JSLINT .PHONY: bdist_wheel wheel_bundle WHEELDISTDIR = $(top_builddir)/dist/wheels diff --git a/configure.ac b/configure.ac index 9ee281a..3e98653 100644 --- a/configure.ac +++ b/configure.ac @@ -375,14 +375,20 @@ AC_ARG_ENABLE([pylint], AS_HELP_STRING([--disable-pylint], [skip Pylint in make lint target]), [PYLINT=$enableval], - [PYLINT=yes] + [PYLINT=check] ) if test x$PYLINT != xno; then AC_MSG_CHECKING([for Pylint]) - $PYTHON -m pylint --version > /dev/null + $PYTHON -m pylint --version >/dev/null 2>&1 if test "$?" != "0"; then - AC_MSG_ERROR([cannot find pylint for $PYTHON]) + if test x$PYLINT = xcheck; then + PYLINT=no + AC_MSG_NOTICE([cannot find optional pylint for $PYTHON]) + else + AC_MSG_ERROR([cannot find pylint for $PYTHON]) + fi else + PYLINT=yes AC_MSG_RESULT([yes]) fi fi @@ -394,13 +400,20 @@ AC_ARG_WITH([jslint], AS_HELP_STRING([--with-jslint=[FILE]], [path to JavaScript linter. Default is autodetection of utility "jsl" ]), -dnl --without-jslint will set JSLINT=no - [JSLINT=$with_jslint], - [AC_PATH_PROG([JSLINT], [jsl])] + [], + [with_jslint=check] ) -if test "x${JSLINT}" == "x"; then - AC_MSG_ERROR([cannot find JS lint]) +if test "x$with_jslint=" != xno; then + AC_PATH_PROG([JSLINT], [jsl]) + if test "x${JSLINT}" == "x"; then + if test "x$with_jslint" != xcheck; then + AC_MSG_FAILURE([cannot find JS lint]) + else + JSLINT=no + fi + fi fi + AC_SUBST([JSLINT]) AM_CONDITIONAL([WITH_JSLINT], [test "x${JSLINT}" != "xno"]) @@ -508,6 +521,9 @@ echo " source code location: ${srcdir} compiler: ${CC} cflags: ${CFLAGS} + Python: ${PYTHON} + pylint: ${PYLINT} + jslint: ${JSLINT} LDAP libs: ${LDAP_LIBS} OpenSSL crypto libs: ${CRYPTO_LIBS} KRB5 libs: ${KRB5_LIBS}"
-- Manage your subscription for the Freeipa-devel mailing list: https://www.redhat.com/mailman/listinfo/freeipa-devel Contribute to FreeIPA: http://www.freeipa.org/page/Contribute/Code