Re: automake and i18n

2003-12-09 Thread Akim Demaille

  Hi,
  Akim Demaille wrote:
   It is possible to do the internationalization in such a way, that
   automake would still run without libintl-perl being installed.
   License problems should not be an issue, libintl-perl is distributed
   under the LGPL.  As for the required Perl version, Perl 5.004 is
   sufficient for libintl-perl.
   Comments?
  Do you know any maintainer that does not know English?  In other
  words, what's the use?  Will you translate the documentation too?

  Why are other GNU developer packages like make or gcc
  internationalized? 

Because they are already heavily documented elsewhere.  The two
precise examples you chose are GNU versions of world wide spread
utilities.

But I hear your point, I just beg to differ on the relative
importance.  And I'm waiting for requests to internationalize
configure, and the messages embedded in the Makefile rules :)




distcheck failure: version.texi

2003-12-09 Thread Ralf Wildenhues
Hi there,

With current CVS automake, 'make distcheck' fails on automake,
because readonly file version.texi in readonly directory
cannot be written to.

I suppose the change from 2003-11-08 caused this, but as I don't
understand all the implications, I won't suggest a fix.

Regards,
Ralf

[ after successful ../configure from automake-1.7i/_build ]
Making all in doc
make[2]: Entering directory `/home/ralf/automake/build/automake-1.7i/_build/doc'
Updating ../../doc/version.texi
cp: cannot create regular file `../../doc/version.texi': Permission denied
make[2]: *** [../../doc/stamp-vti] Error 1




Re: automake and i18n

2003-12-09 Thread Bruno Haible
Akim Demaille wrote:
 But I hear your point, I just beg to differ on the relative
 importance.

I tend to agree. It's more important to make automake support po/ directories
in an easier way _in_general_ (and get rid of gettextize). A proposal in this
direction is at http://mail.gnu.org/archive/html/automake/2003-11/msg00046.html

Bruno





Re: moving po/Makefile.in.in to automake

2003-12-09 Thread Bruno Haible
Denis Barbier wrote on 2003-11-12:
  The 8-year old way of distributing a PO file directory has several drawbacks:
   - requires separate files (POTFILES.in, Makevars) for customization,

 I can hardly see why this is a drawback.  You added support for a
 separate po/LINGUAS file in 0.11, and it helped a lot. Here you go
 the opposite way, and I do not understand why.

The separate po/LINGUAS has two reasons:
  - It's a place the store the set of languages other than in configure.ac
(doesn't fit there for packages with multiple po/ directories) and in
po/Makefile.in.in (which is usually copied from gettext without
modifications).
  - It allows late addition of translations by a Linux distributor, as a
drop-in into an already released package.

For the other customizations there is no real need to put them into separate
files. And since in most directories, all build-relevant settings are found
in a Makefile.am, it's hard to learn for newbies why it should be different
in po/ directories.

 With your new scheme, one has to re-run Automake and friends when a file is
 marked as containing translatable strings.

Yes. Marking a file as containing translatable strings is a task performed
by a package's maintainer, and it's allowed to require an automake run.
Actually when the maintainer adds the file to xyz_SOURCES in Makefile.am,
it also forces an automake invocation.

 Also did you talk to GNOME folks?  Intltool accepts some extra markup
 in po/POTFILES.in (e.g. file type or encoding), and thus my guess is
 that they prefer a separate file.

They prefer a separate file because the current po/Makefile.in.in mechanism
doesn't permit them to do it another way. Extra flags for xgettext can
always be accomodated through Makefile.am variables.

Bruno





Re: Newbie Request for Help (make dist problem)

2003-12-09 Thread Tom Tromey
 Scott == J Scott Amort [EMAIL PROTECTED] writes:

Scott - include
Scott - src
Scott- subdir1
Scott- subdir2
Scott - extra
Scott - build
Scott- src

Scott The configure.ac, Makefile.am, etc. files are located in the
Scott src subdirectory of the build directory at the bottom (nothing
Scott platform specific is therefore in the top level directory).

Automake assumes that your top-level directory will have a
Makefile.am...

Scott However, the problem lies
Scott when trying to make dist.  It copies all of the include, src and extra
Scott directories into the build directory and only makes a tar.gz of the
Scott files that were originally in the build...src directory (i.e. configure,
Scott configure.ac, etc.).  None of the source files make it into the
Scott archive.  Why is this happening?

This is fallout from that assumption.

Scott Additionally, it seems I would also
Scott need to put the header files into the distribution, so I added:
Scott EXTRA_DIST = \
Scott$(ISRC)/header1.h \
Scott$(SSRC)/header2.h

Yeah, you can do this.  It's a bit more idiomatic to list header
files in a _SOURCES somewhere.  They are ignored for purposes of
compilation, but are distributed.

Tom




Re: Non-recursive make maintenance issue

2003-12-09 Thread Tom Tromey
 Jirka == Jirka Hanika [EMAIL PROTECTED] writes:

Jirka My view is that these (and other) problems disappear if you use a
Jirka per-directory Makefile.am; but I also see the benefits (esp. compilation
Jirka speed) of a non-recursive Makefile.  So the solution could be to support
Jirka generating a single Makefile from multiple Makefile.am's in
Jirka subdirectories.  (Just kidding.  But interested in seeing the reasons
Jirka why this is nearly impossible.)

It isn't impossible.  I once wrote up some ideas along these lines:

http://sources.redhat.com/ml/automake/2001-07/msg00248.html

Obviously I never got around to implementing this :-)

Tom




Re: Help Requests

2003-12-09 Thread Thien-Thi Nguyen
i see from the previous post that you use a manual VPATH methodology.
there are two approaches you can try:

1/ undo the unorthodoxy (move auto* files to top-level dir)
2/ prefix relative paths (such as ../../) w/ $(srcdir)

probably 1/ is the best for minimizing gray hairs long term, although it
implies high (but one-time) rework cost.  2/ is best for diagnosing the
problem further, as an eventual stepping-stone to 1/.

wrt turn-around-time for responses, you can probably expect to find a huge
variance even among the same people.  e.g., sometimes i don't respond to mail
for months or years...

thi




Re: SUBDIRs and slashes

2003-12-09 Thread Tom Tromey
 adl == Alexandre Duret-Lutz [EMAIL PROTECTED] writes:

 Marty == Marty Leisner [EMAIL PROTECTED] writes:
adl [...]

Marty common/Makefile.am:1: directory should not contain `/'

Marty Just wondering for some thoughts on this matter...is
Marty there any reason to insist on single level source
Marty directories in recursive make...

adl I can't think of any.

Back in the day there were two problems.

First, automake's dist rule was not robust if there was a gap in
the hierarchy.

Second, autoconf wouldn't properly create intermediate directories in
this same situation.

I don't know whether either of these is still true today.  The first
one in particular has probably changed, I think I'm remembering our
first dist implementation :-)

Tom




Re: Non-recursive make maintenance issue

2003-12-09 Thread Bob Friesenhahn
On 9 Dec 2003, Tom Tromey wrote:

  Bob == Bob Friesenhahn [EMAIL PROTECTED] writes:

 Bob In other words, dealing with junk like
 Bob apps_build_postgres_src_build_postgres_SOURCES
 Bob is very tiring and failure prone.  Is there a reason why it can't
 Bob simply be
 Bob apps/build-postgres/src/build-postgres_SOURCES ?

 Yeah, that does seem easier.

 One problem is that you might refer to these variables elsewhere in
 your Makefile, and it isn't clear that automake can reliably rewrite
 all uses.

If the user is able to define a formal synonym for the path, then this
synonym can be used everywhere but in the synonym definition itself.
That should ensure that automake has no difficulties and it allows the
user to write a more compact Makefile.am.  All automake needs is a
unique way to identify the target.

 The initial reason for canonicalizing macro names was simply that
 automake was pretty dumb, and passed through its input directly to its
 output.  Rewriting wasn't really possible.

Exactly.  Automake is much more powerful these days.

Bob
==
Bob Friesenhahn
[EMAIL PROTECTED]
http://www.simplesystems.org/users/bfriesen





Re: Non-recursive make maintenance issue

2003-12-09 Thread Tom Tromey
 Bob == Bob Friesenhahn [EMAIL PROTECTED] writes:

Bob In other words, dealing with junk like
Bob apps_build_postgres_src_build_postgres_SOURCES
Bob is very tiring and failure prone.  Is there a reason why it can't
Bob simply be
Bob apps/build-postgres/src/build-postgres_SOURCES ?

Yeah, that does seem easier.

One problem is that you might refer to these variables elsewhere in
your Makefile, and it isn't clear that automake can reliably rewrite
all uses.

The initial reason for canonicalizing macro names was simply that
automake was pretty dumb, and passed through its input directly to its
output.  Rewriting wasn't really possible.

Tom




C programs using C++ libraries

2003-12-09 Thread Billy Biggs
  I have a C program that uses a library which internally uses C++, but
exposes a C API.  I have a user who experiences linking problems about
missing standard C++ stuff, fixed by using g++ to link.  I am looking
for help in understanding this and what the correct solution is.

  This has been discussed before on this list [1] and solutions given.
I could build a dummy.cc to force C++ linking, I could use my own
program_LINK, or I could do some magic with setting CCLD or similar.

  I have a few questions, please let me know if there is a better forum
for them:

  1. Why does my program need to be linked with a C++ compiler in some
 cases and not in others?  Shared libraries should bring in their
 own dependencies, or libtool should find them, no?  Is something
 broken with how the library is built?

  2. I use libtool (but I do not understand why I use it).  Is the
 following correct for my program_LINK command if I use libtool:

 program_LINK = $(LIBTOOL) --mode=link $(CXX) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@

  3. Who defines CXXLD and how?  I have seen this variable referenced,
 it looks like I should use it above (to match CCLD), but nothing
 seems to define it.  Is it obsolete?

  Thanks for your help,
  -Billy

  [1] http://mail.gnu.org/archive/html/automake/2002-11/msg00046.html





Re: Help Requests

2003-12-09 Thread J. Scott Amort
Thanks for the response!

On Tue, 2003-12-09 at 08:05, Thien-Thi Nguyen wrote:
 i see from the previous post that you use a manual VPATH methodology.
 there are two approaches you can try:
 
 1/ undo the unorthodoxy (move auto* files to top-level dir)
 2/ prefix relative paths (such as ../../) w/ $(srcdir)

I gave #2 a try, and it didn't change the output of make dist.  However,
moving everything into the top-level dir (#1) did solve the problem. 
Unfortunately, I don't currently have any control over the directory
structure (the motivation behind the attempt is to keep platform
specific items, i.e. *nix makefiles, VC++ 6 project files, etc. in
subdirectories away from the source files).  I'll speak to the powers
that be and see about getting this changed.  Thanks again.

 wrt turn-around-time for responses, you can probably expect to find a huge
 variance even among the same people.  e.g., sometimes i don't respond to mail
 for months or years...

Thanks, I'll keep this in mind.

Best Regards,

Scott


signature.asc
Description: This is a digitally signed message part


Re: Newbie Request for Help (make dist problem)

2003-12-09 Thread J. Scott Amort
On Tue, 2003-12-09 at 09:27, Tom Tromey wrote:
 Yeah, you can do this.  It's a bit more idiomatic to list header
 files in a _SOURCES somewhere.  They are ignored for purposes of
 compilation, but are distributed.

Thanks for the advice - I'll move the header files into the _SOURCES
list.

Best Regards,

Scott


signature.asc
Description: This is a digitally signed message part


Re: Non-recursive make maintenance issue

2003-12-09 Thread Robert Collins
On Wed, 2003-12-10 at 05:06, Tom Tromey wrote:

 It isn't impossible.  I once wrote up some ideas along these lines:
 
 http://sources.redhat.com/ml/automake/2001-07/msg00248.html
 
 Obviously I never got around to implementing this :-)

Have you looked at either of my proof-of-concepts?

Rob
-- 
GPG key available at: http://www.robertcollins.net/keys.txt.


signature.asc
Description: This is a digitally signed message part


Re: distcheck failure: version.texi

2003-12-09 Thread Alexandre Duret-Lutz
 Ralf == Ralf Wildenhues [EMAIL PROTECTED] writes:

 Ralf Hi there,
 Ralf With current CVS automake, 'make distcheck' fails on automake,

On which OS? with which version of Make, sh, etc.?

 Ralf because readonly file version.texi in readonly directory
 Ralf cannot be written to.

 Ralf I suppose the change from 2003-11-08 caused this, but as I don't
 Ralf understand all the implications, I won't suggest a fix.

I've run distcheck successfully at least 4 times since that date
(in order to upload the betas), so I'm quite surprised.

Maybe a specific combination of timestamps is required?  Could
you post a link to a tarball of your files with instructions
how to reproduce the problem from it?
-- 
Alexandre Duret-Lutz





Re: Help Requests

2003-12-09 Thread dc
AFAIK There's a third possibility : you could setup a dist-hook target
in Makefile.am which allows you to specify completely your dist rule (I
had the same problem than yours and used this method). Unfortunately, it
also means that you might have to update this rule each time you change
metadata in your source tree.

/// didier

Le mar 09/12/2003  21:19, J. Scott Amort a crit :
 Thanks for the response!
 
 On Tue, 2003-12-09 at 08:05, Thien-Thi Nguyen wrote:
  i see from the previous post that you use a manual VPATH methodology.
  there are two approaches you can try:
  
  1/ undo the unorthodoxy (move auto* files to top-level dir)
  2/ prefix relative paths (such as ../../) w/ $(srcdir)
 
 I gave #2 a try, and it didn't change the output of make dist.  However,
 moving everything into the top-level dir (#1) did solve the problem. 
 Unfortunately, I don't currently have any control over the directory
 structure (the motivation behind the attempt is to keep platform
 specific items, i.e. *nix makefiles, VC++ 6 project files, etc. in
 subdirectories away from the source files).  I'll speak to the powers
 that be and see about getting this changed.  Thanks again.
 
  wrt turn-around-time for responses, you can probably expect to find a huge
  variance even among the same people.  e.g., sometimes i don't respond to mail
  for months or years...
 
 Thanks, I'll keep this in mind.
 
 Best Regards,
 
 Scott





Re: Help Requests

2003-12-09 Thread David Wolfe
   ... moving everything into the top-level dir (#1) did solve the
  problem.  Unfortunately, I don't currently have any control over the
  directory structure (the motivation behind the attempt is to keep
  platform specific items, i.e. *nix makefiles, VC++ 6 project files,
  etc. in subdirectories away from the source files). 

Drat.  I'm in *exactly* the same boat.  I can't get 'make dist' to work
with relative paths, and my colleagues will go ballistic if I 'pollute'
the source tree with *NIX config files.  I was hoping there was a magic
fix. :-{

 AFAIK There's a third possibility : you could setup a dist-hook target
 in Makefile.am which allows you to specify completely your dist rule

I suspect I'm too lazy for that. ;-)  Seems like it would be more fun to
take a stab at hacking automake to work with my setup.  Or is the
config files must be in the top-level dir rule so ingrained into the
tool that this is extremely unlikely?






Re: Help Requests

2003-12-09 Thread Bob Friesenhahn
On Tue, 9 Dec 2003, David Wolfe wrote:

  AFAIK There's a third possibility : you could setup a dist-hook target
  in Makefile.am which allows you to specify completely your dist rule

 I suspect I'm too lazy for that. ;-)  Seems like it would be more fun to
 take a stab at hacking automake to work with my setup.  Or is the
 config files must be in the top-level dir rule so ingrained into the
 tool that this is extremely unlikely?

I don't believe that the config files need to be in the top level
directory.  You can place those elsewhere since Autoconf  Automake
can be told where to find the tools.  The only claim I have seen is
that the top Makefile.am/Makefile.in has to be at the top of the
source tree.  That only makes for two files in the top directory, for
a total of three once the source tree is configured.

If you are exceedingly lazy, you might want to look for a new line of
work. :-)

Bob
==
Bob Friesenhahn
[EMAIL PROTECTED]
http://www.simplesystems.org/users/bfriesen





Re: [MAD SCIENCE EXPERIMENT]: Replace some libtool functionality with handcoded C

2003-12-09 Thread Tom Tromey
 Alexandre == Alexandre Oliva [EMAIL PROTECTED] writes:

Alexandre the *_OBJECT definitions assume the absence of shell-active
Alexandre characters in filenames, which is probably a safe
Alexandre assumption for Makefiles.

It isn't unreasonable for a Java .class file's name to contain $.
libgcj only uses these for headers, but some other project might
compile from .class to .o -- if they use an inner class, pow.

Tom




Re: C programs using C++ libraries

2003-12-09 Thread Bob Friesenhahn
On Tue, 9 Dec 2003, Billy Biggs wrote:

   I have a C program that uses a library which internally uses C++, but
 exposes a C API.  I have a user who experiences linking problems about
 missing standard C++ stuff, fixed by using g++ to link.  I am looking
 for help in understanding this and what the correct solution is.

   This has been discussed before on this list [1] and solutions given.
 I could build a dummy.cc to force C++ linking, I could use my own
 program_LINK, or I could do some magic with setting CCLD or similar.

   I have a few questions, please let me know if there is a better forum
 for them:

   1. Why does my program need to be linked with a C++ compiler in some
  cases and not in others?  Shared libraries should bring in their
  own dependencies, or libtool should find them, no?  Is something
  broken with how the library is built?

Operating system support varies regarding embedded dependency
information in shared libraries, so depending on that feature is not
portable.  Libtool would help handle library dependencies if the
problem library was linked using libtool, since then there would be a
.la file associated with the library which includes the known library
dependencies.

Besides library dependencies, C++ code may also have different program
intialization requirements (e.g. to support static construction,
destruction, and exceptions) so a different startup module (the code
that eventually invokes main()) may be supplied by the compiler.

   2. I use libtool (but I do not understand why I use it).  Is the
  following correct for my program_LINK command if I use libtool:

  program_LINK = $(LIBTOOL) --mode=link $(CXX) $(AM_CFLAGS) $(CFLAGS) \
 $(AM_LDFLAGS) $(LDFLAGS) -o $@

This seems to be from an Automake generated Makefile.  Are you using
Automake?  Passing the C++ compiler as the tool to use for linking
seems reasonable.

   3. Who defines CXXLD and how?  I have seen this variable referenced,
  it looks like I should use it above (to match CCLD), but nothing
  seems to define it.  Is it obsolete?

I believe that this is a definition generated by the AC_PROG_LIBTOOL
autoconf macro.  If you are not including libtool with your package,
then this macro won't be defined.  If you are embedding libtool in
your package, then you should definitely include AC_PROG_LIBTOOL in
configure.ac.

   Thanks for your help,
   -Billy

   [1] http://mail.gnu.org/archive/html/automake/2002-11/msg00046.html




==
Bob Friesenhahn
[EMAIL PROTECTED]
http://www.simplesystems.org/users/bfriesen





Re: C programs using C++ libraries

2003-12-09 Thread Billy Biggs
  Hi Bob, thanks for your reply.

Bob Friesenhahn ([EMAIL PROTECTED]):

 On Tue, 9 Dec 2003, Billy Biggs wrote:
 
  I have a C program that uses a library which internally uses C++,
  [...]
 
1. Why does my program need to be linked with a C++ compiler in
some cases and not in others?  Shared libraries should bring in
their own dependencies, or libtool should find them, no?  Is
something broken with how the library is built?
 
 Operating system support varies regarding embedded dependency
 information in shared libraries, so depending on that feature is not
 portable.  Libtool would help handle library dependencies if the
 problem library was linked using libtool, since then there would be a
 .la file associated with the library which includes the known library
 dependencies.
 
 Besides library dependencies, C++ code may also have different program
 intialization requirements (e.g. to support static construction,
 destruction, and exceptions) so a different startup module (the code
 that eventually invokes main()) may be supplied by the compiler.

  OK, this makes sense, so this establishes that I should use a C++
compiler to link my program, now it's just a question of how.

2. I use libtool (but I do not understand why I use it).  Is the
following correct for my program_LINK command if I use libtool:
 
   program_LINK = $(LIBTOOL) --mode=link $(CXX) $(AM_CFLAGS)
  $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
 
 This seems to be from an Automake generated Makefile.  Are you using
 Automake?  Passing the C++ compiler as the tool to use for linking
 seems reasonable.

  I am using automake (hence why I posted to the automake list).  I want
to make sure that this is the 'correct' way to do this though, I find it
scary to redefine the full link command like this when all I want to do
is change the linker from using CCLD to CXX.

3. Who defines CXXLD and how?  I have seen this variable
referenced, it looks like I should use it above (to match CCLD),
but nothing seems to define it.  Is it obsolete?
 
 I believe that this is a definition generated by the AC_PROG_LIBTOOL
 autoconf macro.  If you are not including libtool with your package,
 then this macro won't be defined.  If you are embedding libtool in
 your package, then you should definitely include AC_PROG_LIBTOOL in
 configure.ac.

  I included AC_PROG_LIBTOOL in my configure.ac, along with AC_PROG_CXX
and AC_LANG([C++]) yet none of this seems to get me CXXLD.

  $ libtool --version
  ltmain.sh (GNU libtool) 1.5.0a (1.1220.2.25 2003/08/01 19:08:35)
  Debian: 49 $

  $ autoconf --version
  autoconf (GNU Autoconf) 2.57

  Thanks again,
  -Billy





automake distclean bug?

2003-12-09 Thread Bob Friesenhahn
I am working to get the package I support to support the 'distcheck'
target.  The distcheck target fails with:

ERROR: files left in build directory after distclean:
./GraphicsMagick-1.1-20031209.tar.gz

Unlike the many other problems that I have already had to solve, this
one looks like the result of an Automake bug.  Is it possible that
Automake 1.7.9 does not remove its distribution file via the
'distclean' target?

Bob
==
Bob Friesenhahn
[EMAIL PROTECTED]
http://www.simplesystems.org/users/bfriesen





Re: Current versions of automake and autoconf

2003-12-09 Thread Akim Demaille

  (Answering only for Automake, because I've also been confused by
  Akim's last statements about announcements that shouldn't be
  considered official.)

Sorry about this.  I was trying to make a difference bw pre-released
on my web site, and really released on GNU site.  Maybe that was wrong
:(

It turns out that a beta, even if you emphasize the need to test it,
is not tested as thoroughly as a real release.  So I was finally quite
happy with having a (pre-)release spread in our community first, then
have some real feedback before making the real release.  This caught a
couple of weak releases by the past, but I realize that this releasing
scheme is a bit obscure.  Unfortunately it relied on this obscurity:
it is important, if you want some real feedback, that many people use
it as a real release.  So if I flag it as a pre-release, I doubt it
will be tested as thoroughly :(

In the future I'll try to be clearer.

And I'm open to suggestions on how to improve the feedback on Autoconf :)