summaryrefslogtreecommitdiff
path: root/PLANS/obsolete-removed/am-prog-mkdir-p.txt
blob: 20d5cf52c0495aca23b6b50754a4a916d1479ad0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
The macro AM_PROG_MKDIR_P is no longer going to be removed from Automake.
Let's see a bit of history to understand why.

I had already scheduled the removal of the long-deprecated AM_PROG_MKDR_P
macro (superseded by the Autoconf-provided one AC_PROG_MKDIR_P) for
Automake 1.13 -- see commit 'v1.12-20-g8a1c64f'.

Alas, it turned out the latest Gettext version at the time (0.18.1.1) was
still using that macro:

  <http://lists.gnu.org/archive/html/automake/2012-09/msg00010.html>

And since the maintenance of Gettext was stalled, I couldn't get a fix
committed and released in time for the appearance of Automake 1.13:

  <http://lists.gnu.org/archive/html/bug-gettext/2012-04/msg00018.html>
  <http://lists.gnu.org/archive/html/bug-gettext/2012-06/msg00012.html>
  <http://lists.gnu.org/archive/html/bug-gettext/2012-10/msg00001.html>

So, on strong advice by Jim Meyering, in commit 'v1.12.4-158-gdf23daf'
I re-introduced AM_PROG_MKDIR_P in Automake (thanks to Jim for having
convinced me to do so in time!)

But then, Gettext (as said, the greatest "offender" in the use of
AM_PROG_MKDIR_P), in its latest release 0.18.2, finally removed all the
uses of that macro still present in its code base.  Yay.  So I thought
we could finally and quite safely remove AM_PROG_MKDIR_P in Automake 1.14;
and I proceeded to do so, see commit 'v1.13-30-gd01834b' and the merge
commit 'v1.13-5-gb373ad9'.  Well, it turned out I was wrong, again, and
in a trickier and sublter way this time.  Let's see the details.

If a package's 'configure.ac' contains a call like:

    AM_GNU_GETTEXT_VERSION([0.18])

then the 'autopoint' script will bring the data files from the Gettext
release *1.18* into the package's tree -- yes, even even if the developer
has installed *and is using* Gettext 1.18.2!  Now, these data files
comprise m4 files (that will be seen by subsequent aclocal and autoconf
calls), and of course, the pre-0.18.2 version of some of these files
still contains occurrences of AM_PROG_MKDIR_P -- so Automake 1.13 errors
out, and we lose.  That already happened in practice:

    <http://lists.gnu.org/archive/html/bug-grep/2013-01/msg00003.html>

Moreover, while I might see it as not unreasonable to ask a developer
using Automake 2.0 to also update Gettext to 1.18.2, that would not
be enough; in order for gettext to use the correct data files, that
developer would have to update his configure.ac to read:

    AM_GNU_GETTEXT_VERSION([0.18.2])

thus requiring *all* of his co-developers to install Gettext 1.18.2,
even if they are still using, say, Automake 1.13 or 1.14.  Bad.

So I decided to re-instate this macro as a simple alias for AC_PROG_MKDIR_P
(plus a non-fatal runtime warning in the 'obsolete' category), and drop
any plan to remove it (see how much good those plans have done us so far).
See commit v1.13.1-109-g030ecb4.

Similarly, the obsolete '@mkdir_p@' substitution and '$(mkdir_p)' make
variable are still supported, as simple aliases to '$(MKDIR_P)'.