Hello,

Following up on my related INSTALL email, here are two thoughts/proposals
about the minimum versions in the build systems:

1. Make minimum versions in the build systems consistent

I think that one set of minimum versions should be agreed upon and enforced
in both autoconf and CMake. As the vcproj build system is deprecated,
updating it isn't worth it IMHO.

2. Raise the minimum versions for some of the dependencies

As most of the minimum versions are 10 to 25 years old and are EOL, I think
that we might consider raising them in the future. Wouldn't it let simplify
some of the build and SVN code used for compatibility with certain old deps?

Please let me know what you think.

The following table shows the minimum versions in INSTALL and the
*explicit* version checks in each build system:

+----------------+---------+----------+--------+---------+
| Dependency     | INSTALL | autoconf | CMake  | vcproj  |
+----------------+---------+----------+--------+---------+
| APR            | 1.4     | 1.4      | -      | 1.4.0   |
| APR-Util       | 1.3     | 1.3      | -      | 1.3.0   |
| SQLite         | 3.24.0  | 3.24.0   | -      | 3.24.0  |
| Serf           | 1.3.4   | 1.3.4    | 1.3.4  | 1.3.4   |
| httpd          | 2.2     | 2.2      | -      | 2.2.0   |
| LZ4            | r129    | r129     | -      | bundled |
| zlib           | -       | -        | -      | 1.2.5   |
| Cyrus SASL     | -       | -        | 2.0.0  | 2.0.0   |
| gettext        | -       | -        | -      | 0.14.1  |
| Python         | 3.6     | 2.7      | -      | -       |
| SWIG           | -       | 1.3.40*  | -      | 1.3.25  |
| SWIG, Python 3 | -       | 3.0.10   | 3.0.10 | 3.0.10  |
| Perl           | -       | 5.8.0    | -      | -       |
| Berkeley DB    | 4.0.14  | 4.0.14   | n/a    | 4.0     |
+----------------+---------+----------+--------+---------+

-       = no explicit check
n/a     = not supported
bundled = only the bundled copy is used
*       = shows warning only

The versions are from trunk: autoconf[1][2][3], CMake[4], vcproj[5].

There are also restrictions that are *implicit*, i.e. the build systems
require a library without comparing version numbers. So although the build
systems don't check for an explicit minimum version, the version is still
enforced. AFAIK, this is true at least for Cyrus SASL (configure requires
libsasl2, so the version is at least 2.0) and for Python (CMake looks for
the Python3 CMake package).

CMake doesn't check the versions of APR, APR-Util, SQLite and httpd. Only
vcproj checks zlib and gettext.

As for Python, configure accepts 2.7 and CMake accepts any 3.x, whereas
INSTALL says 3.6, which is what the test suite actually requires.

Thank you!

[1]: https://svn.apache.org/viewvc/subversion/trunk/configure.ac?view=markup
[2]: https://svn.apache.org/viewvc/subversion/trunk/build/ac-macros/
[3]:
https://svn.apache.org/viewvc/subversion/trunk/build/find_python.sh?view=markup
[4]:
https://svn.apache.org/viewvc/subversion/trunk/CMakeLists.txt?view=markup
[5]:
https://svn.apache.org/viewvc/subversion/trunk/build/generator/gen_win_dependencies.py?view=markup

--
With best regards,
Pavel Lyalyakin

Reply via email to