[avahi] Re: paths in config.h.in (autoheader)

Sebastien Estienne sebastien.estienne at gmail.com
Wed Jul 6 19:59:26 EST 2005


2005/7/6, Trent Lloyd <lathiat at bur.st>:
> On Wed, Jul 06, 2005 at 12:24:37AM +0200, Sebastien Estienne wrote:
> > here is a patch implementing this
> > and fixing AVAHI_RUNTIME_DIR
> > if noone has objections, i'll commit.
> > to sum up, it allows fully dynamic prefix:
> >
> > make prefix=/home/sebest/avahi install
> 
> Not really sure about the argument of having this vs how it is, but it
> looks fine to me.
Has i said in my first mail, it's the recommended way of doing things
to honnor ${prefix} of autoconf, i just followed the guidelines of
good autoconf practices.

As they explain in the documentation it's the role of "make" to
expands the paths, and not autoconf

it's well explain there :
http://www.delorie.com/gnu/docs/autoconf/autoconf_24.html

> 
> with make prefix=, how are the paths compiled into the files modified?
> (or are they recompiled when you specify a prefix and re-run isntall)
I'm not sure about this, i think it's the job of the pre-processor, so
you may need to make clean, but no need to ./configure again.
I'll test and report about the need of make clean.

There were also so other problems with the "old way" because or
variable expensions it was need to "` eval echo $VAR`" and this for
all variables. the problem is that autoconf variables contain
variables: eg ${sysconfdir}=${prefix}/etc
so if you create a variable using ${sysconfdir] eg ${dbusdir}=${sysconfdir}/dbus
you need 3 levels of expansions, that's why many people use the "echo
eval" trick in configure.ac you can see example of this in dbus or hal
configure.in with a comment telling it's the wrong way to do this.

> 
> > On a side note, has anyone objections against renaming avahi in
> > avahi-daemon and fixing this in init scripts ?
> 
> You mean rename avahi to avahi-daemon in the avahi-daemon dir?
> 
> If so, i guess that could be done.
yes it is, so i'll do it.

> 
> Cheers,
> Trent
> 
> >
> > 2005/7/4, Sebastien Estienne <sebastien.estienne at gmail.com>:
> > > Hello,
> > >
> > > Even if it seems to be a common practice to to use config.h to define
> > > path for socket or pid file, it also seems to be a "bad" practice as i
> > > learnt here:
> > > http://www.delorie.com/gnu/docs/autoconf/autoconf_24.html :
> > > From this page:
> > > " A corollary is that you should not use these variables except in
> > > Makefiles. For instance, instead of trying to evaluate datadir in
> > > `configure' and hard-coding it in Makefiles using e.g.,
> > > `AC_DEFINE_UNQUOTED(DATADIR, "$datadir")', you should add
> > > `-DDATADIR="$(datadir)"' to your CPPFLAGS. "
> > >
> > > So if noone has objections i'll fix these small problems, following
> > > the autoconf manual recommendations
> > >
> > > --
> > > Sebastien Estienne
> > >
> >
> >
> > --
> > Sebastien Estienne
> 
> > Index: avahi-dnsconfd/Makefile.am
> > ===================================================================
> > --- avahi-dnsconfd/Makefile.am        (revision 163)
> > +++ avahi-dnsconfd/Makefile.am        (working copy)
> > @@ -21,6 +21,8 @@
> >
> >  AM_CFLAGS= \
> >       -I$(top_srcdir) \
> > +     -DAVAHI_RUNTIME_DIR=\"$(avahi_runtime_dir)/\" \
> > +     -DAVAHI_SOCKET=\"$(avahi_socket)\" \
> >       -DAVAHI_DNSCONF_SCRIPT=\"$(pkgsysconfdir)/dnsconf.action\"
> >
> >  # GLIB 2.0
> > Index: avahi-daemon/main.c
> > ===================================================================
> > --- avahi-daemon/main.c       (revision 163)
> > +++ avahi-daemon/main.c       (working copy)
> > @@ -625,7 +625,7 @@
> >  }
> >
> >  static const char* pid_file_proc(void) {
> > -    return AVAHI_RUNTIME_DIR"/avahi-daemon.pid";
> > +    return AVAHI_DAEMON_RUNTIME_DIR"/pid";
> >  }
> >
> >  static gint make_runtime_dir(void) {
> > @@ -649,20 +649,20 @@
> >      u = umask(0000);
> >      reset_umask = TRUE;
> >
> > -    if (mkdir(AVAHI_RUNTIME_DIR, 0755) < 0 && errno != EEXIST) {
> > -        avahi_log_error("mkdir(\""AVAHI_RUNTIME_DIR"\"): %s", strerror(errno));
> > +    if (mkdir(AVAHI_DAEMON_RUNTIME_DIR, 0755) < 0 && errno != EEXIST) {
> > +        avahi_log_error("mkdir(\""AVAHI_DAEMON_RUNTIME_DIR"\"): %s", strerror(errno));
> >          goto fail;
> >      }
> >
> > -    chown(AVAHI_RUNTIME_DIR, pw->pw_uid, gr->gr_gid);
> > +    chown(AVAHI_DAEMON_RUNTIME_DIR, pw->pw_uid, gr->gr_gid);
> >
> > -    if (stat(AVAHI_RUNTIME_DIR, &st) < 0) {
> > +    if (stat(AVAHI_DAEMON_RUNTIME_DIR, &st) < 0) {
> >          avahi_log_error("stat(): %s\n", strerror(errno));
> >          goto fail;
> >      }
> >
> >      if (!S_ISDIR(st.st_mode) || st.st_uid != pw->pw_uid || st.st_gid != gr->gr_gid) {
> > -        avahi_log_error("Failed to create runtime directory "AVAHI_RUNTIME_DIR".");
> > +        avahi_log_error("Failed to create runtime directory "AVAHI_DAEMON_RUNTIME_DIR".");
> >          goto fail;
> >      }
> >
> > Index: avahi-daemon/Makefile.am
> > ===================================================================
> > --- avahi-daemon/Makefile.am  (revision 163)
> > +++ avahi-daemon/Makefile.am  (working copy)
> > @@ -22,6 +22,8 @@
> >
> >  AM_CFLAGS= \
> >       -I$(top_srcdir) \
> > +     -DAVAHI_DAEMON_RUNTIME_DIR=\"$(avahi_runtime_dir)/avahi-daemon/\" \
> > +     -DAVAHI_SOCKET=\"$(avahi_socket)\" \
> >       -DAVAHI_SERVICE_DIRECTORY=\"$(servicedir)\" \
> >       -DAVAHI_CONFIG_FILE=\"$(pkgsysconfdir)/avahi.conf\"
> >
> > Index: configure.ac
> > ===================================================================
> > --- configure.ac      (revision 163)
> > +++ configure.ac      (working copy)
> > @@ -90,13 +90,7 @@
> >          AC_SUBST(GLADE20_CFLAGS)
> >          AC_SUBST(GLADE20_LIBS)
> >
> > -     DATADIRNAME=share
> > -     if test "x${prefix}" = "xNONE"; then
> > -        interfacesdir="${ac_default_prefix}/${DATADIRNAME}/${PACKAGE}/interfaces/"
> > -     else
> > -        interfacesdir="${prefix}/${DATADIRNAME}/${PACKAGE}/interfaces/"
> > -     fi
> > -     AC_DEFINE_UNQUOTED(INTERFACES_DIR, "${interfacesdir}", [path where glade files will be installed])
> > +     interfacesdir="${datadir}/${PACKAGE}/interfaces/"
> >       AC_SUBST(interfacesdir)
> >
> >  fi
> > @@ -219,11 +213,11 @@
> >  #
> >  # Avahi runtime dir
> >  #
> > -avahi_runtime_dir=`eval echo ${localstatedir}/run/avahi`
> > -AC_DEFINE_UNQUOTED(AVAHI_RUNTIME_DIR, "${avahi_runtime_dir}", [path where pid and socket will be stored])
> > -AC_DEFINE_UNQUOTED(AVAHI_SOCKET, "${avahi_runtime_dir}/socket", [path for avahi socket])
> > +avahi_runtime_dir="${localstatedir}/run"
> > +avahi_socket="${avahi_runtime_dir}/avahi-daemon/socket"
> > +AC_SUBST(avahi_runtime_dir)
> > +AC_SUBST(avahi_socket)
> >
> > -
> >  AC_CONFIG_FILES([
> >  Makefile
> >  avahi-core.pc
> > Index: avahi-discover/main.c
> > ===================================================================
> > --- avahi-discover/main.c     (revision 163)
> > +++ avahi-discover/main.c     (working copy)
> > @@ -253,7 +253,7 @@
> >      gtk_init(&argc, &argv);
> >      glade_init();
> >
> > -    xml = glade_xml_new(INTERFACES_DIR"avahi-discover.glade", NULL, NULL);
> > +    xml = glade_xml_new(AVAHI_INTERFACES_DIR"avahi-discover.glade", NULL, NULL);
> >      main_window = glade_xml_get_widget(xml, "main_window");
> >      g_signal_connect(main_window, "delete-event", (GCallback) main_window_on_delete_event, NULL);
> >
> > Index: avahi-discover/Makefile.am
> > ===================================================================
> > --- avahi-discover/Makefile.am        (revision 163)
> > +++ avahi-discover/Makefile.am        (working copy)
> > @@ -17,7 +17,8 @@
> >  # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
> >  # USA.
> >
> > -AM_CFLAGS=-I$(top_srcdir)
> > +AM_CFLAGS=-I$(top_srcdir) \
> > +     -DAVAHI_INTERFACES_DIR=\"$(interfacesdir)\"
> >
> >  AM_CFLAGS+=$(GLIB20_CFLAGS) $(GTK20_CFLAGS) $(GLADE20_CFLAGS)
> >  AM_LDADD=$(GLIB20_LIBS) $(GTK20_LIBS) $(GLADE20_LIBS)
> 
> > _______________________________________________
> > avahi mailing list
> > avahi at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/avahi
> 
> --
> Trent Lloyd <lathiat at bur.st>
> Bur.st Networking Inc.
> _______________________________________________
> avahi mailing list
> avahi at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/avahi
> 


-- 
Sebastien Estienne


More information about the avahi mailing list