[Freeipa-devel] [DISCUSSION] checking *lint at configure time
Lukas Slebodnik
lslebodn at redhat.com
Fri Mar 3 16:07:52 UTC 2017
ehlo,
This is a small continuation fo discussin from pull request
"Make pylint and jsl optional" #502[1]
Pylint and jslint are already optional because some downstream distributions
does not have such packages. This is a reason why desing document[2]
mention configuration options for disabling them.
--disable-pylint --without-jslint
Previusly (4.4) "pylint was executed" before building rpm packages.
This strict requirement was changed because "make lint" is executed
with each pull request in travis.
It was changed in commits
master:
* 5c18feaa206bbaee692fc3640b7b79c8d9d6a638 CONFIGURE: Fix detection of pylint
* 3f91469f327d8d9f3b27e0b67c54a4f47ad845c1 CONFIGURE: Update help message for jslint
* b82d285a4a75e11cc9291ecca12d2fcc26f43ed1 SPEC: Fix build in mock
The main intention of PR#502 [1] is to make it even more optional
and do not fail if pylint is not installed on machine.
In another words, changing default value from "yes" to "autodetect".
I think the main reason is that it is not obvious that it is an optional
dependency if you run just "./configure". But that can be improved with
better error message. @see attachments.
checking if source directory is a Git reposistory... yes
checking for more warnings... no
checking for Pylint... /usr/bin/python: No module named pylint
configure: error: cannot find pylint for /usr/bin/python
Cristian wrote some explanation in pull request:
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.
But there is also another opinion. pylint/jslint is not usefull just for
developers but also for packagers. I would personally encourage packagers
to run pylint as part of build. (it took just 2 minutes on my laptop 8 CPUs)
Pylint/jslint should check typical issues in downstream only patches
or with backported patches. My experience with optional dependencies for
unit tests is that packagers tend to remove them in case of failure in tests
and then forget to return back with next release because it is optional.
This is a reason why explicit ./configure --disable-pylint will be a reminder
for them to try run "make lint" with next release.
Cristian's version will not affect fedora developers because there is
recommendation to install all required dependencies for running "make lint"
dnf builddep -b -D "with_lint 1" --spec freeipa.spec.in
However, there is not such simple way for other distributions
debian unstable[3]/ubuntu 16.04/openSUSE[4]. This is a reason why I
would prefer to keep default vaue to "yes" and just improve
error message. It will remind packagers/developers to run lint.
It does not force them to run it.
So the main question is whether we want to change default for configure
time options --enable-pylint --enable-jslint.
LS
[1] https://github.com/freeipa/freeipa/pull/502
[2] http://www.freeipa.org/page/V4/Build_system_refactoring
[3] https://anonscm.debian.org/cgit/pkg-freeipa/freeipa.git
[4] https://en.opensuse.org/Portal:FreeIPA
More information about the Freeipa-devel
mailing list