MySQL++

Impossible to build with Cygwin?
Login

Impossible to build with Cygwin?

(1) By anonymous on 2018-09-22 07:05:22 [source]

I've spent days trying to compile MySQL++ with no success. This strategy of invoking Perl and Python and Make and Autoconf and Bakefile and who-knows-what-else to compile a program seems like euphoric obfuscation.

Is it even possible to build MySQL++ into a lib<something>.a or lib<something>.dll for Windows in a way that doesn't require Visual Studio and Microsoft Visual C++ Redistributable? In other words: straight from C/C++ code into a standalone library?

Second, Cygwin just doesn't work. I solved the IOError: [Errno 13] Permission denied: '.bakefile_gen.state' problem by removing the Hidden attribute from that generated file. But after that, even though I've added every tool mentioned in the ./bootstrap script and Hackers.txt, I get 0 files modified.

Third, regarding the MySQL++ version number, wouldn't it be easier to just edit the configure.ac than add yet another package (autoconf) into the fray?

The compiling-for-Windows instructions are missing too many details (e.g. more than perl and autoconf are needed) and I suspect there may be variability in the Cygwin library packaging. Are better instructions available?

Sorry to vent but this really is frustrating.

(2) By Warren Young (tangent) on 2018-09-26 01:32:12 in reply to 1 [link] [source]

This strategy of invoking Perl and Python and Make and Autoconf and Bakefile and who-knows-what-else to compile a program seems like euphoric obfuscation.

That's why the distribution tarballs have all of that done for you. The process you're having trouble with is only needed when checking the code straight out of Fossil, and it's only difficult on Windows due to the Unix-centric nature of the tools we use.

I'm not aware of any tool chain that makes bootstrapping a multiplatform build system truly easy on all platforms. The closest alternative I've found is CMake, which has plenty of its own ugliness.

I use a different build system on platforms that don't have to build on Windows, and it's far, far simpler than either Bakefile or the GNU Autotools or CMake, but once you throw the need to build on Windows into the mix, your options get narrowed drastically.

Cygwin just doesn't work.

Cygwin is a very old and stable FOSS project, with a tremendous amount of power. Pretty much every weakness left in Cygwin these days traces to some weakness in the underlying platform. (No fork(), poor symlink handling, mandatory locking by default, etc.)

I used Cygwin pretty much every working day for something like 15 years. I assure you, it not only works, it works well, all things considered.

IOError: [Errno 13] Permission denied: '.bakefile_gen.state'

I've never run into that one. Personally, I bootstrap the library on a Linux box and scp the files over.

regarding the MySQL++ version number, wouldn't it be easier to just edit the configure.ac than add yet another package (autoconf) into the fray?

Autoconf does much more for us than just substitute the version number into a few files. See the configure.ac file and the config/ subdirectory. For that matter, take a look at the size of the generated configure script!

Without Autoconf, MySQL++ would not build out of the box on as many Unix-like platforms as it does, including Cygwin.

Are better instructions available?

We'll take this up on your other thread.