1. Why do I care about Windows?

After seeing knowledgeable people say several times that building OpenLDAP on Windows worked fine for them [1][2][3], but failing my first attempts, I decided it should damn well work for me too!

[1] https://bugs.openldap.org/show_bug.cgi?id=7878#c1
[2] https://bugs.openldap.org/show_bug.cgi?id=7878#c3
[3] https://www.openldap.org/lists/openldap-technical/201908/msg00033.html

2. Where are we now?

Master branch is in OK shape now. A basic build with OpenSSL and default-ish backends/overlays succeeds.

If built WITHOUT --enable-dynamic, it even passes the test suite, with one workaround [4]. If built WITH --enable-dynamic, there are various issues related to the libtool wrappers: the test processes don't exit when killed [5], ITS#2922 occurs, etc. Executing the binaries directly seems to work around most of it, but I still have an unexplained failure in test058.

RE24 has the code fixes now (in 2.4.50), however, its older libtool and autoconf still contain bugs that have been fixed now in master. It doesn't produce DLLs due to a libtool bug [6], but the executables can be built with the static libs. The test suite needs configure rebuilt with a newer autoconf [7], plus all the same caveats as master.

[4]
--- a/tests/scripts/defines.sh
+++ b/tests/scripts/defines.sh
@@ -18 +18 @@
-TESTWD=`pwd`
+TESTWD=`pwd -W`

[5] https://sourceforge.net/p/mingw/bugs/845/ 
https://sourceforge.net/p/mingw/bugs/1783/
[6] haven't found a bug or commit link, but 
https://lists.defectivebydesign.org/archive/html/lmi/2011-06/msg00016.html 
discusses the same problem
[7] 
http://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=commit;h=17ea0df46f819a9b64c21151983a5c5b8561fefb

If I've analyzed anything above incorrectly, please let me know!

3. Where to next?

I'd like to write up some up-to-date instructions for building on Windows, but I'm not sure where I would post them before the FAQ site is replaced.

When I linked with MSYS2's cyrus-sasl package, I encountered heap corruption errors. I haven't looked more closely at that yet.

Since a native Windows CI host looks unlikely in the short term, I'd like to investigate getting cross builds [8] stable enough to add as a CI target. ITS#9087 is a first step in that direction. Obviously it wouldn't be able to run tests, but we could at least monitor compile failures. There are a few things to deal with, such as configure tests that currently run test programs (e.g. "working memcmp"), and providing dependency libraries (-lregex).

[8] apt install gcc-mingw-w64-x86-64

cheers,
Ryan

Reply via email to