NAME
makepp_compatibility -- Compatibility list for makepp
DESCRIPTION
Perl Version vs. System
The many Perl versions available and still installed on many machines come with various subtle bugs. We have tried to work around most of them, but a few remain. We have a test suite of around 75 tests, all of which usually pass. On some platforms lacking some features, notably Cygwin, a few tests are explicitly skipped. This table shows with what version this has been tested where, and whether it was successful.
- successful: x
- mostly successful with footnote: x*)
- Sun
-
On one machine, Perl 5.6.1 systematically swallows two warnings that occur within a Perl rule action. On another Sun machine Perl 5.6.1 passes this test.
- HPUX
-
Perl at least up to V5.8.8 has a 64bitall bug on HP/UX that hurts makepp badly. Therefore the test suite, if it recognized that its running on a 64 bit Perl, will rewrite several sources so as to have a workaround for this problem.
- Win
-
There are 3 different Perl environments on Windows, which normally extend one another when installed in parallel. Here they have been tested with a minimal PATH, so as to separate them completely: Cygwin fairly closely emulates GNU/Linux and gives the best results. It cannot do recursive makes (but who would want them, since they are known to be a broken paradigm) and parallel builds. For unexplored reasons makeppclean is broken.
MinGW stays close to Windows, giving it only a Unixy look and feel. It has a clever workaround for lack of symbolic and normal links, namely copying instead (
&ln
has stolen this idea). Alas this is not good enough for the repository mechanism, so that isn't available, in addition to the Cygwin deficiencies.Last there is ActiveState Perl on native Windows. This essentially works, but almost a third of the unskipped tests fail. Probably not because of makepp problems, but because the tests were historically written with Unix in mind. On Windows most customary Unix commands are missing, and the "shell" is extremely primitive. A maximal use of makepp's builtin commands and embedded Perl can increase makefile portability. Any analysis, hints and patches by Windows specialists are welcome!
- Nest
-
Some old compilers do not like nested comments. Since additional_tests/2006_03_23_c_comments.test looks at all kinds of constellations, and verifies it's conclusions with the compiler, this test can fail if you do not use gcc.
File Systems
Various special file systems have unusual properties, giving makepp a hard time when working on them:
- NFS
-
NFS may reorder file operations at its discretion, leading to unexpected relationships between time stamps. This is relevant for the build info meta files, which makepp stores alongside each file. Especially in build caches, with their concurrent access, some workaround handling was necessary, but it seems to work fine.
- Windows CIFS on Gnu/Linux
-
A few special characters are not allowed in filenames. Links are emulated by copying while symbolic linking fails. Apparently write operations come back before they are visible on disk, which confuses makepp about the success of the commands it executes. Several tests fail due to this. On the bright side, timestamps have a precision of 100 nanoseconds (though the observed obtainable differences are only about a centisecond). This is much better than Unix'es customary seconds -- alas perl's
stat
function has no access to this very welcome precision. -
The same CIFS disk that was works so badly on Linux, passes all tests on Cygwin. Possibly there are options that might improve something.
- Unix SMBFS on Gnu/Linux
-
Linking and symbolic linking fails. No other tests fail. I have no access to a more realistic Windows SMB server, where the situation might be different.
- VFAT on Gnu/Linux
-
A few special characters are not allowed in filenames. Linking and symbolic linking fails. The file permission mask and owner are mount options, while the time stamps are not settable. Only a handful of tests which attempt to change these things fail.
AUTHOR
Daniel Pfeiffer (occitan@esperanto.org)