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 3a29b47f79eaa4239ca74a356719f38e72c47418 Mon Sep 17 00:00:00 2001
From: Christian Heimes <chei...@redhat.com>
Date: Wed, 22 Feb 2017 19:19:35 +0100
Subject: [PATCH 1/2] 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    | 37 +++++++++++++++++++++++++++----------
 freeipa.spec.in | 11 +++--------
 3 files changed, 41 insertions(+), 21 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..d07e95d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -372,17 +372,24 @@ AC_SUBST([i18ntests])
 AM_CONDITIONAL([WITH_POLINT], [test "x${enable_i18ntests}" == "xyes"])
 
 AC_ARG_ENABLE([pylint],
-	    AS_HELP_STRING([--disable-pylint],
-			   [skip Pylint in make lint target]),
+	    AS_HELP_STRING([--enable-pylint],
+			   [Require pylint. Default is autodetection with
+			    "python -m pylint".]),
 	    [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 +401,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 +522,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}"
diff --git a/freeipa.spec.in b/freeipa.spec.in
index 5c835ca..14da501 100644
--- a/freeipa.spec.in
+++ b/freeipa.spec.in
@@ -11,10 +11,7 @@
 # lint is not executed during rpmbuild
 # %%global with_lint 1
 %if 0%{?with_lint}
-    %global enable_pylint_option --enable-pylint
-%else
-    %global enable_pylint_option --disable-pylint
-    %global without_jslint_option --without-jslint
+    %global enable_lint_option --enable-pylint --with-jslint
 %endif
 
 %global alt_name ipa
@@ -790,8 +787,7 @@ find \
 	-type f -exec grep -qsm1 '^#!.*\bpython' {} \; \
 	-exec sed -i -e '1 s|^#!.*\bpython[^ ]*|#!%{__python2}|' {} \;
 %configure --with-vendor-suffix=-%{release} \
-           %{enable_pylint_option} \
-           %{?without_jslint_option}
+           %{enable_lint_option}
 
 # -Onone is workaround for https://bugzilla.redhat.com/show_bug.cgi?id=1398405
 %make_build -Onone
@@ -808,8 +804,7 @@ find \
 	-type f -exec grep -qsm1 '^#!.*\bpython' {} \; \
 	-exec sed -i -e '1 s|^#!.*\bpython[^ ]*|#!%{__python3}|' {} \;
 %configure --with-vendor-suffix=-%{release} \
-           %{enable_pylint_option} \
-           %{?without_jslint_option}
+           %{enable_lint_option}
 popd
 %endif # with_python3
 

From 5718ce1d5a1f9b5f5c5aaa2d94deffc575a9bdf5 Mon Sep 17 00:00:00 2001
From: Tomas Krizek <tkri...@redhat.com>
Date: Wed, 1 Mar 2017 13:33:08 +0100
Subject: [PATCH 2/2] BUILD: add pylint and jslint checks to makerpms.sh

Turn on linting for developers who use the convenience script
makerpms.sh by default.

https://pagure.io/freeipa/issue/6604
---
 makerpms.sh | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/makerpms.sh b/makerpms.sh
index bdf0231..f8d28b9 100755
--- a/makerpms.sh
+++ b/makerpms.sh
@@ -23,6 +23,8 @@ test ! -f "Makefile" && ./configure --enable-silent-rules \
 	--sharedstatedir=$(rpm -E %{_sharedstatedir}) \
 	--mandir=$(rpm -E %{_mandir}) \
 	--infodir=$(rpm -E %{_infodir}) \
+	--enable-pylint \
+	--with-jslint \
 	"$@"
 make rpms
 
-- 
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

Reply via email to