variables in _SOURCES

2016-06-12 Thread Daniel Pocock


According to the "Warning" in this page[1], it is not permitted to use
variables in _SOURCES.  Is this deliberate or is it a bug?

In our project, we started getting the warnings about subdir-objects and
so we added[2]

  AM_INIT_AUTOMAKE([foreign subdir-objects])

However, since that time the build has been failing[3] and it appears to
be because one module[4] is using a variable in _SOURCES

The $PYCXX_SRCDIR variable is used to refer to the sources provided by
the PyCXX[5] library.  PyCXX is not distributed as a compiled library
that can be linked against, the sources are simply placed under
/usr/share by the packages (e.g. on Debian[6]) and users have to compile
them into their projects by referring to them from their Makefile.

What is the recommended way of using such sources in a build?  I could
write some Makefile rule to copy or symlink the sources in to the tree,
but is there an official way to solve this with autotools?

More specifically, I am using them like this:

configure:

./configure ... \
   --with-python \
   PYCXX_SRCDIR=/usr/share/python2.7/CXX/Python2


Makefile.am:

nodist_libpyroute_la_SOURCES = $(PYCXX_SRCDIR)/cxxextensions.c
nodist_libpyroute_la_SOURCES += $(PYCXX_SRCDIR)/cxx_extensions.cxx
nodist_libpyroute_la_SOURCES += $(PYCXX_SRCDIR)/cxxsupport.cxx
nodist_libpyroute_la_SOURCES +=
$(PYCXX_SRCDIR)/../IndirectPythonInterface.cxx




1. https://autotools.io/automake/nonrecursive.html
2.
https://github.com/resiprocate/resiprocate/commit/fb37bc86db9f1b7d569eb2a17acd1e683b6ce55f
3. https://travis-ci.org/resiprocate/resiprocate/builds/131873177
4.
https://github.com/resiprocate/resiprocate/blob/master/repro/plugins/pyroute/Makefile.am
5. http://cxx.sourceforge.net/
6.
https://packages.debian.org/search?searchon=contents&keywords=cxxextensions.c&mode=path&suite=stable&arch=any




appending LDADD to prog_LDADD

2014-03-26 Thread Daniel Pocock


I understand from the docs that specifying prog_LDADD will override
LDADD (and the same for prog_CPPFLAGS, ...)

http://www.gnu.org/software/automake/manual/html_node/Linking.html

If it is desired to merge prog_LDADD and LDADD, is there any recommended
or preferred solution?

I've tried

LDADD = -lfoo
LDADD += -lrt

prog_LDADD = -lfoo $(LDADD)

and it seems to work for me - if this is the way to go, could it be
included in the manual page perhaps?







only installing shared versions of some libs

2013-12-10 Thread Daniel Pocock


I've recently adapted a project to support DSO plugins/modules

The existing project includes normal libraries and binaries.  In a
normal build, we want to

a) build and install the shared and static versions of the normal libraries

b) only install the shared versions of the plugins

I don't mind whether static versions of the plugins are built (we don't
currently use them) but I would prefer that "make install" does not
install them

Can anybody comment on the best way to do this?  The Makefile.am is
linked from here (repro/plugins/example/Makefile.am):

http://list.resiprocate.org/archive/resiprocate-commit/msg07875.html





make dist for both Debian and Fedora?

2013-04-04 Thread Daniel Pocock

Hi,

I use a Debian system to run autoreconf and bootstrap/make dist releases
for various projects (e.g. reSIProcate)

When using the release tarball on a system like Fedora, issues with
hard-coded rpath have been discovered.

Apparently I am not alone, and this discussion has come up before in RPM
packaging.  On the RPM packaging request for reSIProcate, I've gathered
links to a few different discussions about the issue:
https://bugzilla.redhat.com/show_bug.cgi?id=892625#c11

One proposed solution appears to involve using sed to hack the configure
script into shape.  A more elegant solution appears to be re-running
autoreconf during the rpmbuild (before the call to configure)

Is there any other way to deal with this issue without any hacks?  Am I
potentially doing something wrong when I bootstrap the releases?

Regards,

Daniel





Re: AIX shared libraries, make install misses them

2010-01-31 Thread Daniel Pocock

Ralf Wildenhues wrote:

Hello Michael,

* Michael Perzl wrote on Fri, Jan 29, 2010 at 07:46:57PM CET:
  

That is without the "-Wl,-brtl" passed to LDFLAGS, so libtool is
behaving correctly on AIX to put the modcpu.so into the modcpu.a
library archive.

The "misbehavior" is that the "*.a" containing the "*.so" files are
not installed as expected:



You say that but then you (as well as Daniel) quote a line ...

  

 /opt/freeware/bin/bash ../../../libtool   --mode=install
../../../build/install-sh -c  'modcpu.la'
'/var/tmp/gg/lib/ganglia/modcpu.la'
../../../build/install-sh -c .libs/modcpu.a /var/tmp/gg/lib/ganglia/modcpu.a



... that shows the .a file being installed.  Now, what's the matter here?
Does libtool print that line but not execute it?  Does it execute it but
the library is installed into the wrong place?  Please explain.

  


Hi Ralf,

You can see the `make install' output, the build tree, and the install 
tree here:


http://www.pocock.com.au/ganglia/test/aix/michael/

If you look at the install tree:

http://www.pocock.com.au/ganglia/test/aix/michael/ganglia-install.tar.gz2-file-list.txt

you will see that modcpu.a was never actually installed, despite the 
output from `make install'


Regards,

Daniel




Re: AIX shared libraries, make install misses them

2010-01-31 Thread Daniel Pocock

Ralf Wildenhues wrote:

Hello Michael,

* Michael Perzl wrote on Fri, Jan 29, 2010 at 07:46:57PM CET:
  

That is without the "-Wl,-brtl" passed to LDFLAGS, so libtool is
behaving correctly on AIX to put the modcpu.so into the modcpu.a
library archive.

The "misbehavior" is that the "*.a" containing the "*.so" files are
not installed as expected:



You say that but then you (as well as Daniel) quote a line ...

  

 /opt/freeware/bin/bash ../../../libtool   --mode=install
../../../build/install-sh -c  'modcpu.la'
'/var/tmp/gg/lib/ganglia/modcpu.la'
../../../build/install-sh -c .libs/modcpu.a /var/tmp/gg/lib/ganglia/modcpu.a



... that shows the .a file being installed.  Now, what's the matter here?
Does libtool print that line but not execute it?  Does it execute it but
the library is installed into the wrong place?  Please explain.
  

../../../build/install-sh -c .libs/modcpu.lai
/var/tmp/gg/lib/ganglia/modcpu.la



  


That line appears in the `make install' output

However, the .a files are missing from the tree - every other file 
appears in the tree






Re: AIX shared libraries, make install misses them

2010-01-29 Thread Daniel Pocock

Daniel Pocock wrote:

Ralf Wildenhues wrote:

Hello Daniel,

* Daniel Pocock wrote on Thu, Jan 28, 2010 at 03:21:24PM CET:
 

We have been working on getting the Ganglia tarball to work out of
the box for AIX
  


 

When Michael does `make install', the *.so files for our modules
are not installed.  Instead, he sees output like this from `make
install':

--
/opt/freeware/bin/bash ../../../libtool   --mode=install
../../../build/install-sh -c  'modcpu.la'
'/var/tmp/gg/lib/ganglia/modcpu.la'
../../../build/install-sh -c .libs/modcpu.a
/var/tmp/gg/lib/ganglia/modcpu.a
../../../build/install-sh -c .libs/modcpu.lai
/var/tmp/gg/lib/ganglia/modcpu.la
  


 

I've looked at the file gmond/modules/cpu/.libs/modcpu.la on AIX:

...
dlname='modcpu.so'
library_names='modcpu.a modcpu.a'
old_library=''
  


Is that without or with runtimelinking enabled (LDFLAGS=-Wl,-brtl passed
to configure)?  If without, then libtool puts the modcpu.so file into
the modcpu.a archive (the way AIX does with its system modules as well)
and that is to be expected.

With runtimelinking, the .so file should be a separate file.
  
That makes sense - I don't believe Michael has run it with the 
different LDFLAGS yet.


However, nothing gets installed - if the default behavior is to create 
modcpu.a, then shouldn't `make install' result in the installation of 
modcpu.a?


For changing LDFLAGS, I'd rather include this into configure.in, so it 
will be set automatically for AIX platforms.  Can you make any 
suggestions on that?  The project involves building some static 
libraries, shared libraries, and linking some of the static libraries 
to create an executable too.  Will option be necessary for all such 
targets, or do I need to use it selectively?


I've looked at the manual for -brtl and it tells me that the flag is 
needed for building targets that depend on other shared objects.


The gmond executable itself loads various other modules (shared objects) 
using dlopen(), and gmond also depends on system libraries.  The modules 
themselves depend on some other shared libraries in the system.  
Therefore, I think -brtl is needed for everything we build and could 
potentially be added to LDFLAGS for AIX in configure.in



BTW, you didn't specify any bug or misbehavior that you see, so maybe
everything else works as expected?
  
Yes, an earlier email I have from Michael says that it runs if the 
modules are copied over manually - I'm not sure if he was copying *.a 
or *.so however.


 

Finally, Michael reports that if he bootstraps again with his own
autoconf, make install does work.

Here is Michael's autotools versions:

autoconf-2.64-1
automake-1.11.1-1
libtool-1.5.26-1
libtool-ltdl-1.5.26-1
libtool-ltdl-devel-1.5.26-1
m4-1.4.13-1

And here are the versions on Debian 5 (used for bootstrapping the
release tarball):

autoconf 2.61-8
automake 1:1.10.1-3
libtool 1.5.26-4
m4 1.4.11-1

Is there any way we can get this working using the existing
autotools version?
  


Well, I really don't know the differences between libtool-1.5.26-1 and
libtool 1.5.26-4 (this really all is a libtool issue, not an Automake
one), but if there were bugs in either, I'd first ask you to retry with
2.2.6b anyway.

 

Another problem I have just discovered, on Cygwin, I have to patch
libtool, adding the line

echo="echo"

otherwise I get lot's of errors along the lines of "Xgcc command not 
found"



This is a pretty sure sign that you have mixed up macros from one
Libtool version with a ltmain.sh file from another Libtool version.
Perchance your aclocal.m4 or acinclude.m4 files contain old Libtool
macro definitions?
  

I'll be checking that out shortly - thanks for this tip

Ok, here is what I found:

- the system where I bootstrap has libtool 1.5.26-4

- the Cygwin system where I run configure and make has libtool 2.2.7a

- various files like aclocal.m4 are included in the tarball from the 
bootstrap host

http://www.pocock.com.au/ganglia/test/

- some files, like acinclude.m4, are included in SVN
http://ganglia.svn.sourceforge.net/viewvc/ganglia/branches/monitor-core-3.1/

Is there some way we can fix this so that the user running configure 
won't have to worry about which version of libtool they have?







Re: AIX shared libraries, make install misses them

2010-01-28 Thread Daniel Pocock

Ralf Wildenhues wrote:

Hello Daniel,

* Daniel Pocock wrote on Thu, Jan 28, 2010 at 03:21:24PM CET:
  

We have been working on getting the Ganglia tarball to work out of
the box for AIX
  


  

When Michael does `make install', the *.so files for our modules
are not installed.  Instead, he sees output like this from `make
install':

--
/opt/freeware/bin/bash ../../../libtool   --mode=install
../../../build/install-sh -c  'modcpu.la'
'/var/tmp/gg/lib/ganglia/modcpu.la'
../../../build/install-sh -c .libs/modcpu.a
/var/tmp/gg/lib/ganglia/modcpu.a
../../../build/install-sh -c .libs/modcpu.lai
/var/tmp/gg/lib/ganglia/modcpu.la
  


  

I've looked at the file gmond/modules/cpu/.libs/modcpu.la on AIX:

...
dlname='modcpu.so'
library_names='modcpu.a modcpu.a'
old_library=''
  


Is that without or with runtimelinking enabled (LDFLAGS=-Wl,-brtl passed
to configure)?  If without, then libtool puts the modcpu.so file into
the modcpu.a archive (the way AIX does with its system modules as well)
and that is to be expected.

With runtimelinking, the .so file should be a separate file.
  
That makes sense - I don't believe Michael has run it with the different 
LDFLAGS yet.


However, nothing gets installed - if the default behavior is to create 
modcpu.a, then shouldn't `make install' result in the installation of 
modcpu.a?


For changing LDFLAGS, I'd rather include this into configure.in, so it 
will be set automatically for AIX platforms.  Can you make any 
suggestions on that?  The project involves building some static 
libraries, shared libraries, and linking some of the static libraries to 
create an executable too.  Will option be necessary for all such 
targets, or do I need to use it selectively?

BTW, you didn't specify any bug or misbehavior that you see, so maybe
everything else works as expected?
  
Yes, an earlier email I have from Michael says that it runs if the 
modules are copied over manually - I'm not sure if he was copying *.a or 
*.so however.


  

Finally, Michael reports that if he bootstraps again with his own
autoconf, make install does work.

Here is Michael's autotools versions:

autoconf-2.64-1
automake-1.11.1-1
libtool-1.5.26-1
libtool-ltdl-1.5.26-1
libtool-ltdl-devel-1.5.26-1
m4-1.4.13-1

And here are the versions on Debian 5 (used for bootstrapping the
release tarball):

autoconf 2.61-8
automake 1:1.10.1-3
libtool 1.5.26-4
m4 1.4.11-1

Is there any way we can get this working using the existing
autotools version?
  


Well, I really don't know the differences between libtool-1.5.26-1 and
libtool 1.5.26-4 (this really all is a libtool issue, not an Automake
one), but if there were bugs in either, I'd first ask you to retry with
2.2.6b anyway.

  

Another problem I have just discovered, on Cygwin, I have to patch
libtool, adding the line

echo="echo"

otherwise I get lot's of errors along the lines of "Xgcc command not found"



This is a pretty sure sign that you have mixed up macros from one
Libtool version with a ltmain.sh file from another Libtool version.
Perchance your aclocal.m4 or acinclude.m4 files contain old Libtool
macro definitions?
  

I'll be checking that out shortly - thanks for this tip




Re: AIX shared libraries, make install misses them

2010-01-28 Thread Daniel Pocock

Daniel Pocock wrote:



We have been working on getting the Ganglia tarball to work out of the 
box for AIX


The tarball is bootstrapped using autotools on Debian 5.

When Michael does `make install', the *.so files for our modules are 
not installed.  Instead, he sees output like this from `make install':


--
/opt/freeware/bin/bash ../../../libtool   --mode=install 
../../../build/install-sh -c  'modcpu.la' 
'/var/tmp/gg/lib/ganglia/modcpu.la'
../../../build/install-sh -c .libs/modcpu.a 
/var/tmp/gg/lib/ganglia/modcpu.a
../../../build/install-sh -c .libs/modcpu.lai 
/var/tmp/gg/lib/ganglia/modcpu.la

--
Libraries have been installed in:
  /var/tmp/gg/lib/ganglia

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
  - add LIBDIR to the `LIBPATH' environment variable
during execution
  - use the 
`-Wl,-blibpath:LIBDIR:/opt/freeware/lib:/usr/vac/lib:/usr/lib/threads:/usr/lib:/lib 
' linker flag


See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.

- 




I've looked at the file gmond/modules/cpu/.libs/modcpu.la on AIX:

...
dlname='modcpu.so'
library_names='modcpu.a modcpu.a'
old_library=''
...

and when I run make && make install on Linux (a RHEL4 box), 
gmond/modules/cpu/.libs/modcpu.la has:


...
dlname='modcpu.so'
library_names='modcpu.so modcpu.so modcpu.so'
old_library='modcpu.a'
...

Finally, Michael reports that if he bootstraps again with his own 
autoconf, make install does work.


Here is Michael's autotools versions:

autoconf-2.64-1
automake-1.11.1-1
libtool-1.5.26-1
libtool-ltdl-1.5.26-1
libtool-ltdl-devel-1.5.26-1
m4-1.4.13-1

And here are the versions on Debian 5 (used for bootstrapping the 
release tarball):


autoconf 2.61-8
automake 1:1.10.1-3
libtool 1.5.26-4
m4 1.4.11-1

Is there any way we can get this working using the existing autotools 
version?





Another problem I have just discovered, on Cygwin, I have to patch 
libtool, adding the line


echo="echo"

otherwise I get lot's of errors along the lines of "Xgcc command not found"

Previous Ganglia tarballs bootstrapped with older autotools were fine on 
Cygwin






AIX shared libraries, make install misses them

2010-01-28 Thread Daniel Pocock



We have been working on getting the Ganglia tarball to work out of the 
box for AIX


The tarball is bootstrapped using autotools on Debian 5.

When Michael does `make install', the *.so files for our modules are not 
installed.  Instead, he sees output like this from `make install':


--
/opt/freeware/bin/bash ../../../libtool   --mode=install 
../../../build/install-sh -c  'modcpu.la' '/var/tmp/gg/lib/ganglia/modcpu.la'
../../../build/install-sh -c .libs/modcpu.a /var/tmp/gg/lib/ganglia/modcpu.a
../../../build/install-sh -c .libs/modcpu.lai /var/tmp/gg/lib/ganglia/modcpu.la
--
Libraries have been installed in:
  /var/tmp/gg/lib/ganglia

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
  - add LIBDIR to the `LIBPATH' environment variable
during execution
  - use the 
`-Wl,-blibpath:LIBDIR:/opt/freeware/lib:/usr/vac/lib:/usr/lib/threads:/usr/lib:/lib
 ' linker flag

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.

-


I've looked at the file gmond/modules/cpu/.libs/modcpu.la on AIX:

...
dlname='modcpu.so'
library_names='modcpu.a modcpu.a'
old_library=''
...

and when I run make && make install on Linux (a RHEL4 box), 
gmond/modules/cpu/.libs/modcpu.la has:


...
dlname='modcpu.so'
library_names='modcpu.so modcpu.so modcpu.so'
old_library='modcpu.a'
...

Finally, Michael reports that if he bootstraps again with his own 
autoconf, make install does work.


Here is Michael's autotools versions:

autoconf-2.64-1
automake-1.11.1-1
libtool-1.5.26-1
libtool-ltdl-1.5.26-1
libtool-ltdl-devel-1.5.26-1
m4-1.4.13-1

And here are the versions on Debian 5 (used for bootstrapping the 
release tarball):


autoconf 2.61-8
automake 1:1.10.1-3
libtool 1.5.26-4
m4 1.4.11-1

Is there any way we can get this working using the existing autotools 
version?







Re: AIX linking: -berok in aclocal.m4 and libtool

2010-01-16 Thread Daniel Pocock

Ralf Wildenhues wrote:

Hello Daniel,

* Daniel Pocock wrote on Sat, Jan 16, 2010 at 02:09:55PM CET:
  

Could anyone share any advice on using autoconf and automake to
prepare a distribution tarball that will work on AIX?  Normally, I
build the tarball on Linux (Debian 5).  The AIX users need to be
able to use the tarball to build an executable (gmond), a static
library (libmetrics) and a bunch of DSOs (e.g. modcpu.so)?

Some AIX users of Ganglia have raised queries about the -berok
linker flag in aclocal.m4, and whether it is necessary to patch
aclocal.m4 to remove this flag.

We're also trying various other things to improve the AIX support,
e.g. adding "-Wl,-bexpfull" to LDFLAGS or GLDFLAGS in various
places.

This all comes out of
- bug report (Ganglia bug 227)
http://bugzilla.ganglia.info/cgi-bin/bugzilla/show_bug.cgi?id=227
- and subsequent email discussion 
http://www.mail-archive.com/ganglia-develop...@lists.sourceforge.net/msg05463.html



I haven't looked into this in detail yet; I would like to, but it might
be a while.  Is the source code of this package available for download
(URL)?  What other software would I need to build this?  Thanks.
  

I've created a branch for testing on AIX:

 
http://ganglia.svn.sourceforge.net/viewvc/ganglia/branches/monitor-core-3.1-aix/


Snapshots of the AIX branch and release branch are here:

 http://www.pocock.com.au/ganglia/test/



A few general comments:

This is probably a Libtool issue rather than an Automake one.

I noticed in the PR a diff against libtool.  I hope you're not putting
the generated libtool script in version-control anywhere.
  
It is not in SVN, it is put there when we bootstrap - Michael has been 
applying the diff after downloading the tarball.  I want to improve the 
tarball so he won't need to do this.

Issues with modules on AIX are often fixed most easily by using
runtimelinking.  You enable that with libtool by adding -Wl,-brtl
to LDFLAGS at configure time:
  ./configure LDFLAGS=-Wl,-brtl

This has a small performance impact, which is why it is not the default.
  
Thanks for this suggestion - we will try that and add it to the docs for 
AIX users.


Ganglia is essentially a performance monitoring agent, so we are keen to 
minimize any impact it has on the machine.


Does this -brtl option just impact the performance at the time when the 
shared object is loaded, or does it impact ever function call?





AIX linking: -berok in aclocal.m4 and libtool

2010-01-16 Thread Daniel Pocock




Hi,

Could anyone share any advice on using autoconf and automake to prepare 
a distribution tarball that will work on AIX?  Normally, I build the 
tarball on Linux (Debian 5).  The AIX users need to be able to use the 
tarball to build an executable (gmond), a static library (libmetrics) 
and a bunch of DSOs (e.g. modcpu.so)?


Some AIX users of Ganglia have raised queries about the -berok linker 
flag in aclocal.m4, and whether it is necessary to patch aclocal.m4 to 
remove this flag.


We're also trying various other things to improve the AIX support, e.g. 
adding "-Wl,-bexpfull" to LDFLAGS or GLDFLAGS in various places.


This all comes out of
- bug report (Ganglia bug 227) 
http://bugzilla.ganglia.info/cgi-bin/bugzilla/show_bug.cgi?id=227
- and subsequent email discussion 
http://www.mail-archive.com/ganglia-develop...@lists.sourceforge.net/msg05463.html


Regards,

Daniel






Re: making config files

2010-01-15 Thread Daniel Pocock





You probably mean $(top_builddir)

Thanks - I'll fix that one

%: %.tmpl $(FIXCONFIG)
 $(FIXCONFIG) $<


AFAIU, %: %.tmpl is GNU Make specific and won't work with other makes.

I realised the same thing and took it out

and put something like the following into each Makefile.am:

include $(top_srcdir)/ganglia.inc

bin_SCRIPTS = ganglia-config

The problem with doing this via a config script is that it will not 
honor a sequence such as:

./configure
make prefix=/opt
make install

because the value '/opt' will not propagate to the generated files. It 
is required by GNU Coding Standards, but of course something you can 
completely ignore as long as you don't claim you follow GCS.
Yes, I realise that would happen - that's why I'm trying to find another 
way to do it
However, things like ganglia-config should be generated during the 
install phase, although the default behavior for the _SCRIPTS primary 
appears to be processing ganglia-config.in during the build phase - 
is there a recommended way it can be influenced to delay processing 
until the install phase?



I don't understand why you are against creating files during 'make 
all', but couldn't automake's install-exec-local target help you here?
That is what I have done actually - but I wanted something more concise, 
e.g.


bin_GENSCRIPTS = script1 script2 script3

with all the logic happening behind the scenes.  Currently I have to 
list a rule (at least two lines of code) for each of script1, script2, ...


My current implementation is now in SVN, would you mind having a quick 
look at my Makefile.am and gmond/Makefile.am?  Is this the right way to 
use the install-* rules?


http://ganglia.svn.sourceforge.net/viewvc/ganglia/trunk/monitor-core/






Re: making config files

2010-01-14 Thread Daniel Pocock

Russ Allbery wrote:

Daniel Pocock  writes:

  

Thanks for that - the sed example appears to be the type of thing I want.



  

However, is there a more concise way to do this?  I was thinking there may
be some way to invoke sed or m4 on a template in much the way that gcc is
invoked for *.c



Half of that equation would be a more generic script.  Attached is what we
use for INN (which has a bunch of INN-specific bits, but also has the
basic framework for things).
  

The script seems fine - I've located it in your source tree here
http://inn.eyrie.org/svn/trunk/support/

and examples of how you use it here:
http://inn.eyrie.org/svn/trunk/scripts/

The other half would be to set up a way of automatically running that
script on particular files, and that's something I've never done.  I just
write explicit rules.

  
This is what interests me - although I could list out the rules for each 
target, I would like to try and do everything with automake


This is how I've been going about it: create $(top_srcdir)/ganglia.inc 
like so:


FIXCONFIG = $(top)/scripts/fixconfig

%: %.tmpl $(FIXCONFIG)
 $(FIXCONFIG) $<

and put something like the following into each Makefile.am:

include $(top_srcdir)/ganglia.inc

bin_SCRIPTS = ganglia-config

However, things like ganglia-config should be generated during the 
install phase, although the default behavior for the _SCRIPTS primary 
appears to be processing ganglia-config.in during the build phase - is 
there a recommended way it can be influenced to delay processing until 
the install phase?







Re: making config files

2010-01-13 Thread Daniel Pocock

Russ Allbery wrote:

Daniel Pocock  writes:

  

Thanks for that - the sed example appears to be the type of thing I want.



  

However, is there a more concise way to do this?  I was thinking there may
be some way to invoke sed or m4 on a template in much the way that gcc is
invoked for *.c



Half of that equation would be a more generic script.  Attached is what we
use for INN (which has a bunch of INN-specific bits, but also has the
basic framework for things).

The other half would be to set up a way of automatically running that
script on particular files, and that's something I've never done.  I just
write explicit rules.

  

Hi Russ,

Thanks for this - it may be just what we need to get some nasty hacks 
out of configure.in


In case I use this as-is, can you kindly confirm that it is compatible 
with the Ganglia license?

http://ganglia.svn.sourceforge.net/viewvc/ganglia/trunk/monitor-core/COPYING?revision=560&view=markup

Regards,

Daniel




Re: making config files

2010-01-13 Thread Daniel Pocock

Peter Johansson wrote:

Daniel Pocock wrote:




Therefore, I felt that I should be aiming to have the config files 
generated at the last moment - probably during `make install', just 
before they are installed.  Can anyone suggest best practice for 
doing this?



please refer to

http://www.gnu.org/software/autoconf/manual/autoconf.html#Installation-Directory-Variables 





Thanks for that - the sed example appears to be the type of thing I want.

However, is there a more concise way to do this?  I was thinking there 
may be some way to invoke sed or m4 on a template in much the way that 
gcc is invoked for *.c





making config files

2010-01-13 Thread Daniel Pocock



Hi,

I've been working on a project, Ganglia, that is built with autotools

Included in the source tree are templates for various configuration 
files (e.g. modpython.conf.in).  Some of these include hard coded paths.


It seems appropriate to replace the hardcoded paths with substitutions 
(e.g. @sysconfdir@) - however, if the template is processed by 
configure, then the generated config file sometimes includes a value 
like ${prefix}/etc rather than an absolute path like /opt/ganglia-3.1/etc


Therefore, I felt that I should be aiming to have the config files 
generated at the last moment - probably during `make install', just 
before they are installed.  Can anyone suggest best practice for doing this?


Regards,

Daniel