am-prog-mkdir-p.txt 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. The macro AM_PROG_MKDIR_P is no longer going to be removed from Automake.
  2. Let's see a bit of history to understand why.
  3. I had already scheduled the removal of the long-deprecated AM_PROG_MKDR_P
  4. macro (superseded by the Autoconf-provided one AC_PROG_MKDIR_P) for
  5. Automake 1.13 -- see commit 'v1.12-20-g8a1c64f'.
  6. Alas, it turned out the latest Gettext version at the time (0.18.1.1) was
  7. still using that macro:
  8. <http://lists.gnu.org/archive/html/automake/2012-09/msg00010.html>
  9. And since the maintenance of Gettext was stalled, I couldn't get a fix
  10. committed and released in time for the appearance of Automake 1.13:
  11. <http://lists.gnu.org/archive/html/bug-gettext/2012-04/msg00018.html>
  12. <http://lists.gnu.org/archive/html/bug-gettext/2012-06/msg00012.html>
  13. <http://lists.gnu.org/archive/html/bug-gettext/2012-10/msg00001.html>
  14. So, on strong advice by Jim Meyering, in commit 'v1.12.4-158-gdf23daf'
  15. I re-introduced AM_PROG_MKDIR_P in Automake (thanks to Jim for having
  16. convinced me to do so in time!)
  17. But then, Gettext (as said, the greatest "offender" in the use of
  18. AM_PROG_MKDIR_P), in its latest release 0.18.2, finally removed all the
  19. uses of that macro still present in its code base. Yay. So I thought
  20. we could finally and quite safely remove AM_PROG_MKDIR_P in Automake 1.14;
  21. and I proceeded to do so, see commit 'v1.13-30-gd01834b' and the merge
  22. commit 'v1.13-5-gb373ad9'. Well, it turned out I was wrong, again, and
  23. in a trickier and sublter way this time. Let's see the details.
  24. If a package's 'configure.ac' contains a call like:
  25. AM_GNU_GETTEXT_VERSION([0.18])
  26. then the 'autopoint' script will bring the data files from the Gettext
  27. release *1.18* into the package's tree -- yes, even even if the developer
  28. has installed *and is using* Gettext 1.18.2! Now, these data files
  29. comprise m4 files (that will be seen by subsequent aclocal and autoconf
  30. calls), and of course, the pre-0.18.2 version of some of these files
  31. still contains occurrences of AM_PROG_MKDIR_P -- so Automake 1.13 errors
  32. out, and we lose. That already happened in practice:
  33. <http://lists.gnu.org/archive/html/bug-grep/2013-01/msg00003.html>
  34. Moreover, while I might see it as not unreasonable to ask a developer
  35. using Automake 2.0 to also update Gettext to 1.18.2, that would not
  36. be enough; in order for gettext to use the correct data files, that
  37. developer would have to update his configure.ac to read:
  38. AM_GNU_GETTEXT_VERSION([0.18.2])
  39. thus requiring *all* of his co-developers to install Gettext 1.18.2,
  40. even if they are still using, say, Automake 1.13 or 1.14. Bad.
  41. So I decided to re-instate this macro as a simple alias for AC_PROG_MKDIR_P
  42. (plus a non-fatal runtime warning in the 'obsolete' category), and drop
  43. any plan to remove it (see how much good those plans have done us so far).
  44. See commit v1.13.1-109-g030ecb4.
  45. Similarly, the obsolete '@mkdir_p@' substitution and '$(mkdir_p)' make
  46. variable are still supported, as simple aliases to '$(MKDIR_P)'.