bug-autoconf
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: using defining datarootdir in Gettext (Was: Re: les modifs de gettex


From: Bruno Haible
Subject: Re: using defining datarootdir in Gettext (Was: Re: les modifs de gettextize)
Date: Tue, 15 Mar 2005 17:11:06 +0100
User-agent: KMail/1.5

Alexandre Duret-Lutz wrote:
>  >> but CVS Autoconf defines @datadir@ as ${datarootdir} which is not
>  >> defined by po/Makefile.in.in.
>
>  Bruno> This is obviously a bug in autoconf: It breaks a working
>  Bruno> Makefile.in.
>
> Actually, it's a change of the GNU Coding Standard.

Yes, but the GNU standards don't mandate that programs that adhere to
older GNU standards must break.

>  Bruno> There are lots of hand-built Makefile.in.
>
> Those people will have to update their Makefile.in when
> upgrading Autoconf.  I agree it's unfortunate, but I can't think
> of any other solution.

But you can do better by
  1. reverting to the old behaviour of autoconf <= 2.59 when you see that
     you are substituting a value into a Makefile.in that doesn't know
     about datarootdir,
  2. emitting a warning in this case, to remind the maintainer to update
     his Makefile.in.

config.status can do this. It already has special magic for @address@hidden
It can also add a little bit of magic for @datadir@ and similar.

Here is a rough, completely untested patch, so you see what I propose.

Bruno


diff -c -3 -r1.49 status.m4
*** lib/autoconf/status.m4      2 Feb 2005 23:31:17 -0000       1.49
--- lib/autoconf/status.m4      15 Mar 2005 16:10:16 -0000
***************
*** 951,956 ****
--- 951,1001 ----
    AS_MKDIR_P(["$ac_dir"])
    _AC_SRCDIRS(["$ac_dir"])
  
+   # Compute @datadir@, @docdir@, @infodir@, @localedir@, @mandir@ substitution
+   # value depending on whether the file has a definition for ${datarootdir}
+   # (i.e. obeys the GNU standards as of autoconf-2.60) or not (i.e. obeys the
+   # GNU standards as of autoconf <= 2.59).
+   if grep datarootdir "$ac_file_in" > /dev/null; then
+     ac_datadir=$datadir
+     ac_docdir=$docdir
+     ac_infodir=$infodir
+     ac_localedir=$localedir
+     ac_mandir=$mandir
+   else
+     if grep @datadir@ "$ac_file_in" > /dev/null ||
+        grep @docdir@ "$ac_file_in" > /dev/null ||
+        grep @infodir@ "$ac_file_in" > /dev/null ||
+        grep @localedir@ "$ac_file_in" > /dev/null ||
+        grep @mandir@ "$ac_file_in" > /dev/null; then
+       echo "$as_me: warning: $ac_file ignores the --datarootdir setting"
+     fi
+     if expr "$datadir" : '${datarootdir}' > /dev/null; then
+       ac_datadir='${prefix}/share'
+     else
+       ac_datadir=$datadir
+     fi
+     if expr "$docdir" : '${datarootdir}' > /dev/null; then
+       ac_docdir=`echo "$docdir" | sed -e 's,{datarootdir},{datadir},'`
+     else
+       ac_docdir=$docdir
+     fi
+     if expr "$infodir" : '${datarootdir}' > /dev/null; then
+       ac_infodir='${datadir}/info'
+     else
+       ac_infodir=$infodir
+     fi
+     if expr "$localedir" : '${datarootdir}' > /dev/null; then
+       ac_localedir='${datadir}/locale'
+     else
+       ac_localedir=$localedir
+     fi
+     if expr "$mandir" : '${datarootdir}' > /dev/null; then
+       ac_mandir='${datadir}/man'
+     else
+       ac_mandir=$mandir
+     fi
+   fi
+ 
  AC_PROVIDE_IFELSE([AC_PROG_INSTALL],
  [  case $INSTALL in
    [[\\/$]]* | ?:[[\\/]]* ) ac_INSTALL=$INSTALL ;;
***************
*** 1016,1021 ****
--- 1061,1071 ----
  s,@abs_builddir@,$ac_abs_builddir,;t t
  s,@top_builddir@,$ac_top_builddir,;t t
  s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
+ s,@datadir@,$ac_datadir,;t t
+ s,@docdir@,$ac_docdir,;t t
+ s,@infodir@,$ac_infodir,;t t
+ s,@localedir@,$ac_localedir,;t t
+ s,@mandir@,$ac_mandir,;t t
  AC_PROVIDE_IFELSE([AC_PROG_INSTALL], [s,@INSTALL@,$ac_INSTALL,;t t
  ])dnl
  dnl The parens around the eval prevent an "illegal io" in Ultrix sh.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]