reassign 370282 libglib2.0-dev
thanks

Loïc Minier <[EMAIL PROTECTED]> writes:

>  In short, old autoconf:
>    --prefix=PREFIX         install architecture-independent files in PREFIX
>    --datadir=DIR          read-only architecture-independent data 
> [PREFIX/share]
>
>  new autoconf:
>    --prefix=PREFIX         install architecture-independent files in PREFIX
>    --datarootdir=DIR      read-only arch.-independent data root [PREFIX/share]
>    --datadir=DIR          read-only architecture-independent data 
> [DATAROOTDIR]
>
>  The problem is in AM_GLIB_DEFINE_LOCALEDIR from
>  m4macros/glib-gettext.m4 which hardcodes a double shell expansion:
>    localedir=`eval echo "${datadir}/locale"`
>
>  this results in a config.h with:
>      #define GNOMELOCALEDIR "${prefix}/share/locale"
>  which will obviously break at runtime.
>
>  I verified that adding another level of expansion:
>      localedir=`eval echo "${localedir}"`
>  fixes the problem.

This simple stopgap measure will fix the immediate problem, but
it seems to me that the real problem with
AM_GLIB_DEFINE_LOCALEDIR is ignoring the instructions in the
Autoconf documentation.  I've put an excerpt from the
documentation at the end of this mail for clarification.

So, if I understand the purpose here correctly, it's really a bug
in AM_GLIB_DEFINE_LOCALEDIR.  I'm reassigning (with this mail)
the bug to libglib2.0-dev, which is the Debian package that
contains glib-gettext.m4.

>  I doubt you will want to revert that autoconf change, and I don't know
>  whether other macros are affected by this change, but I thought the bug
>  tracker should see this bug.  In the end, you might want to document
>  this incompatibility in some upgrading documentation.

It might be a good idea to mention it in NEWS just because Gnome
is such popular software.  I will suggest it to upstream.

>  I've reported the problem of the AM_GLIB_DEFINE_LOCALEDIR macro at:
>     <http://bugzilla.gnome.org/show_bug.cgi?id=343825>
>  feel free to subscribe upstream to follow the discussion.

I'm unlikely to subscribe but I'll add the information from this
mail there.

>  Right now, all I can think of to workaround the problem is to add
>  another level of expansion in all cases in the macro, or to pass
>  at least datarootdir or datadir to configure flags.  I would be glad if
>  you can provide some help in handling this large breakage though.

Here is what the manual says, as promised:

How Do I `#define' Installation Directories?
============================================

     My program needs library files, installed in `datadir' and
     similar.  If I use
          AC_DEFINE_UNQUOTED([DATADIR], [$datadir],
                             [Define to the read-only architecture-independent
                              data directory.])


     I get
          #define DATADIR "${prefix}/share"

As already explained, this behavior is on purpose, mandated by the GNU
Coding Standards, see *Note Installation Directory Variables::.  There
are several means to achieve a similar goal:

   - Do not use `AC_DEFINE' but use your `Makefile' to pass the actual
     value of `datadir' via compilation flags, see *Note Installation
     Directory Variables::, for the details.

   - This solution can be simplified when compiling a program: you may
     either extend the `CPPFLAGS':

          CPPFLAGS = -DDATADIR=\"$(datadir)\" @CPPFLAGS@

     or create a dedicated header file:

          DISTCLEANFILES = datadir.h
          datadir.h: Makefile
                  echo '#define DATADIR "$(datadir)"' >$@

   - Use `AC_DEFINE' but have `configure' compute the literal value of
     `datadir' and others.  Many people have wrapped macros to automate
     this task.  For instance, the macro `AC_DEFINE_DIR' from the
     Autoconf Macro Archive(1).

     This solution does not conform to the GNU Coding Standards.

   - Note that all the previous solutions hard wire the absolute path to
     these directories in the executables, which is not a good
     property.  You may try to compute the paths relatively to
     `prefix', and try to find `prefix' at runtime, this way your
     package is relocatable.  Some macros are already available to
     address this issue: see `adl_COMPUTE_RELATIVE_PATHS' and
     `adl_COMPUTE_STANDARD_RELATIVE_PATHS' on the Autoconf Macro
     Archive(2).

   ---------- Footnotes ----------

   (1) Autoconf Macro Archive,
<http://www.gnu.org/software/ac-archive/>.

   (2) Autoconf Macro Archive,
<http://www.gnu.org/software/ac-archive/>.

-- 
Ben Pfaff 
email: [EMAIL PROTECTED]
web: http://benpfaff.org

Reply via email to