Re: Bug Resilience Program of German Sovereign Tech Fund

2024-09-11 Thread Karl Berry
I received an answer from the German Sovereign Tech Fund regarding
our application for their bug resilience program. Automake is on the
waiting list for next year.

Thanks Christoph!



Re: First draft of application to Sovereign Tech Fund

2024-07-31 Thread Karl Berry
Hi Detlef - I think Christoph has already submitted the application to
the fund, in somewhat different form than the one you commented
on. There are some subsequent msgs between he and I on the list.  (In
short, I basically agree[d] with all your comments. We probably didn't
get everything right for the submission, but hopefully close enough.)

We need a list of "todo projects", similar to what is available for
projects, who apply for Google Summer of Code.

There are, in fact, no such projects. Maintenance is not the same as
summer of code.

What I put near the top of the https://gnu.org/s/automake web page,
years ago, was a link to a message I wrote that said, basically, "please
look at the open bug list if you're willing to help".
https://lists.gnu.org/archive/html/automake/2021-03/msg00018.html

Zack wrote:

I'd suggest that the most useful way for a new contributor to help
at this time is to analyze the backlog of bug reports.

That's a good point.

I guess I should combine that idea with my post and recast it as a web
page in the automake directory. Or maybe this is something a volunteer
would like to do :)?

BTW, I'd like to take this opportunity to thank Bogdan, who
spontaneously came forward a couple years ago and has, indeed, analyzed
a ton of reports, written good patches for a bunch, and generally been
extremely helpful in keeping Automake going.

Happy hacking to all,
Karl



Re: First draft of application to Sovereign Tech Fund

2024-07-14 Thread Karl Berry
I added your paragraph to the section "Describe why your project needs 
those services?"

Sounds good.

Can I submit the application?

Yes. Time to give it a try. Thanks for the initiative. --best, karl.



Re: First draft of application to Sovereign Tech Fund

2024-07-10 Thread Karl Berry
1) It looks to me like GCC uses autoconf but not automake. Maybe change the
answer to:
 > Where is your open source technology project being
 > used (describe all user bases)?

GNU Automake is used by a very large number of GNU and non-GNU packages.
Here are just a couple of examples: GNU coreutils, GNU findutils,
GNU gettext, libpng, TeX Live.

2) ust a typo in:
Plenty of projects haved switched to other build systems for various 
s/haved/have/

3) 
> Which BRP services are you interested in?

Maybe here, or somewhere, I wonder about inserting:

  Since the Free Software Foundation holds the sole copyright on GNU
  Automake, it will be necessary for any significant contributor,
  whether individual or corporate, to sign a disclaimer or assignment of
  copyright before contributions can be accepted.  Please confirm that
  this is acceptable.

I still worry that this is going to be a stopper. Or at least a big
delayer. The last thing I want is for us to go through this whole
process and then neighborhoodie "can't" sign the assignment. Or for them
to start posting changes but I can't install them because the assignment
hasn't happened.

Wdyt? --thanks, karl.



Re: improve display of filesystem timestamp resolution

2024-07-03 Thread Karl Berry
A physical entity should always be displayed with its unit.

Agreed in principle, but sorry, I'm not ready to install this one.
Adding a unit to the value and then removing it everywhere the value is
used seems error-prone to me.  How about just displaying it with the
unit (somehow)?  Or having two values, one for the display with the unit
and one without for use.

Also, I don't much want to use a new shell construct just for a cosmetic
purpose like this, even if it is supposedly sufficiently portable. Which
I simply doubt on principle, given our past experiences.

Finally, and trivially, I think "s" would be more in keeping with what
I've seen used for time units in other places (e.g., the sleep option)
than " sec". --thanks, karl.




Re: improve display of whether sleep supports fractional seconds

2024-07-03 Thread Karl Berry
  checking whether sleep supports fractional seconds... true
is inconsistent with the rest of the GNU Build System. Namely, in
configure output, results are "yes"/"no", not "true"/"false".
The attached patch makes automake consistent with the rest.

Thanks Bruno. I applied, plus "quoting" some of the $am_cv values that I
happened to see around there. (No doubt more could be done in that
regard, but anyway.) -k

-
automake: display whether sleep supports fractional seconds as yes/no.

https://lists.gnu.org/archive/html/automake/2024-07/msg3.html

* m4/sanity.m4 (_AM_SLEEP_FRACTIONAL_SECONDS): Set
am_cv_sleep_fractional_seconds to yes/no, not true/false,
for consistency with other results.
Also "quote" this and other $am_cv values.
(_AM_FILESYSTEM_TIMESTAMP_RESOLUTION): Test for yes/no.
* t/ax/test-defs.in: Set am_cv_sleep_fractional_seconds to 'no',
not 'false'.
diff --git a/m4/sanity.m4 b/m4/sanity.m4
index 9e556b33a..c7f32daf8 100644
--- a/m4/sanity.m4
+++ b/m4/sanity.m4
@@ -11,8 +11,8 @@
 AC_DEFUN([_AM_SLEEP_FRACTIONAL_SECONDS], [dnl
 AC_CACHE_CHECK([whether sleep supports fractional seconds],
am_cv_sleep_fractional_seconds, [dnl
-AS_IF([sleep 0.001 2>/dev/null], [am_cv_sleep_fractional_seconds=true],
- [am_cv_sleep_fractional_seconds=false])
+AS_IF([sleep 0.001 2>/dev/null], [am_cv_sleep_fractional_seconds=yes],
+ [am_cv_sleep_fractional_seconds=no])
 ])])

 # _AM_FILESYSTEM_TIMESTAMP_RESOLUTION
@@ -43,7 +43,7 @@ am_cv_filesystem_timestamp_resolution=2
 # packages.
 #
 am_try_resolutions=
-if $am_cv_sleep_fractional_seconds; then
+if test "$am_cv_sleep_fractional_seconds" = yes; then
   # Even a millisecond often causes a bunch of false positives,
   # so just try a hundredth of a second. The time saved between .001 and
   # .01 is not terribly consequential.
@@ -198,12 +198,12 @@ for am_try in 1 2; do
 break
   fi
   # Just in case.
-  sleep $am_cv_filesystem_timestamp_resolution
+  sleep "$am_cv_filesystem_timestamp_resolution"
   am_has_slept=yes
 done

 AC_MSG_RESULT([$am_build_env_is_sane])
-if test $am_build_env_is_sane = no; then
+if test "$am_build_env_is_sane" = no; then
   AC_MSG_ERROR([newly created file is older than distributed files!
 Check your system clock])
 fi
@@ -212,7 +212,7 @@ fi
 # generated files are strictly newer.
 am_sleep_pid=
 AS_IF([test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 
2>&1],, [dnl
-  ( sleep $am_cv_filesystem_timestamp_resolution ) &
+  ( sleep "$am_cv_filesystem_timestamp_resolution" ) &
   am_sleep_pid=$!
 ])
 AC_CONFIG_COMMANDS_PRE(
diff --git a/t/ax/test-defs.in b/t/ax/test-defs.in
index aac5d60e3..542305788 100644
--- a/t/ax/test-defs.in
+++ b/t/ax/test-defs.in
@@ -211,7 +211,7 @@ case $MTIME_RESOLUTION in
   MTIME_RESOLUTION=1
   # we must not sleep for fractional seconds when autom4te does not
   # support subsecond-mtimes, even when sleep supports it. See bug#67670.
-  am_cv_sleep_fractional_seconds=false
+  am_cv_sleep_fractional_seconds=no
   export am_cv_sleep_fractional_seconds
 fi
   ;;
@@ -232,7 +232,7 @@ esac
 # scripts in other packages, too.
 # 
 # At any rate, with this set to "sleep 1", there were still random
-# parallelization failures; setting am_cv_sleep_fractional_seconds=false
+# parallelization failures; setting am_cv_sleep_fractional_seconds=no
 # as above was still needed.
 #
 sleep="sleep $MTIME_RESOLUTION"



Re: [platform-testers] automake-1.16.92 released

2024-06-30 Thread Karl Berry
Hi Frederic,

NetworkManager:
Use of uninitialized value $var in string eq at
/usr/share/automake-1.16/Automake/Variable.pm line 754,  line 1169.

>From the Makefile.am you sent me separately (attached here for the
record), it seems that is coming from the use of $() in:

introspection/%.h: introspection/%.c
$()

Accordingly, I changed scan_variable_expansions (in Variable.pm) to not
worry if the variable name is empty (patch and test below). Could you
retry NetworkManager or the other packages and make sure the Perl
warning is gone, please?

It wasn't entirely clear to me if the line
_vapi_name = $(subst /,_,$(subst -,_,$(subst .,_,$(1
might also be causing trouble, but I think Automake already recognizes
that ok (and gives a warning, by default, but an Automake warning, not a
Perl warning.)

As an aside, I'm curious as to why the $() is used. It seems
a mysterious way to do nothing. Do you know? --thanks, karl.

-
automake: avoid Perl-level warning on empty variable $().

https://lists.gnu.org/archive/html/automake/2024-06/msg00085.html

* lib/Automake/Variable.pm (scan_variable_expansions): recognize
and do nothing if the variable name is empty: $().
* t/varempty.sh: new test.
* t/list-of-tests.mk (handwritten_TESTS): add it.
diff --git a/lib/Automake/Variable.pm b/lib/Automake/Variable.pm
index db1f6378d..f97aab59f 100644
--- a/lib/Automake/Variable.pm
+++ b/lib/Automake/Variable.pm
@@ -751,7 +751,11 @@ sub scan_variable_expansions ($)
   while ($text =~ m{\$(?:\{([^\}]*)\}|\(([^\)]*)\)|(\$))}g)
 {
   my $var = $1 || $2 || $3;
-  next if $var eq '$';
+  next if (! defined $var) || ($var eq '$');
+  # we check for $var being defined because NetworkManager and other
+  # packages use the strange construct $().
+  # https://lists.gnu.org/archive/html/automake/2024-06/msg00085.html
+  
   # The occurrence may look like $(string1[:subst1=[subst2]]) but
   # we want only 'string1'.
   $var =~ s/:[^:=]*=[^=]*$//;
diff --git a/t/list-of-tests.mk b/t/list-of-tests.mk
index 1e0f364ba..e80ace470 100644
--- a/t/list-of-tests.mk
+++ b/t/list-of-tests.mk
@@ -1282,6 +1282,7 @@ t/vala-per-target-flags.sh \
 t/vala-recursive-setup.sh \
 t/vala-vapi.sh \
 t/vala-vpath.sh \
+t/varempty.sh \
 t/vars.sh \
 t/vars3.sh \
 t/var-recurs.sh \
diff --git a/t/varempty.sh b/t/varempty.sh
new file mode 100644
index 0..9eb45c421
--- /dev/null
+++ b/t/varempty.sh
@@ -0,0 +1,36 @@
+#! /bin/sh
+# Copyright (C) 2024 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+# An empty variable name $() should not cause a Perl warning, namely:
+#   Use of uninitialized value $var in string eq at
+#   .../lib/Automake/Variable.pm line 754,  line 3.
+# (in scan_variable_expansions)
+# 
+# This showed up with the NetworkManager and other packages in Fedora:
+# https://lists.gnu.org/archive/html/automake/2024-06/msg00085.html
+# (The actual purpose of the "$()" is unclear.)
+
+. test-init.sh
+
+cat > Makefile.am << 'END'
+x:
+   $()
+END
+
+$ACLOCAL
+$AUTOMAKE
+
+:
Running command: git commit \-q \-F \.\/vc\-dwim\-log\-wBh6_U \-\-author\=Karl\ 
Berry\ \ \-\- ChangeLog
+ set +x

compile finished at Sun Jun 30 13:26:51 2024



Makefile.am.gz
Description: Binary data


Makefile.vapigen.gz
Description: Binary data


Re: First draft of application to Sovereign Tech Fund

2024-06-29 Thread Karl Berry
Hi Christoph and all - back on the Sovereign Tech Fund
application. Here's my first cut at tweaking the wording.
Thanks for doing all this. -k

Draft of applications (questions are with > at the left of the line):
 > I acknowledge:
 >
 > All code and documentation to be supported must be licensed such
 > that it may be freely reusable, changeable and redistributable

As mentioned, we will need Neighborhoodie to sign a copyright
assignment/disclaimer to the FSF.

 > Project title
Autoconf & Automake Direct Contribution 2024

I think autoconf and automake should be submitted separately? Even
though there is clearly a lot of overlap, and technically automake is
entirely dependent on autoconf, the two projects are implemented quite
differently, have separate bug lists, separate maintainers, etc.  It is
possible to work on Automake without ever delving deeply into Autoconf
(and of course the reverse is even more true :).

I'm going to adjust the rest to emphasize Automake.

 > Link to project website

https://www.gnu.org/software/automake/

 > Link to project repository

https://git.savannah.gnu.org/cgit/automake.git

 > Where is your open source technology project being used (describe
 > all user bases)?

GNU Autoconf and GNU Automake are the core of the GNU Autotools. They
help in making source code packages portable to virtually all Unix-like
systems. They are used by GNU GCC, LibreOffice, and OpenJDK, among
thousands of other packages.  The interface that they implement is the
standard for GNU.

 > Why do you consider your open source technology project to be
 > relevant and critical?

Many projects rely on Automake (and Autoconf) as crucial part of their
build system. Moving to alternatives is challenging. Without a working
build system, users might not be able to build the software using the
build system.

 > How does your open source technology benefit the public interest?

A build system is like water or electricity, it is supposed to work and
nobody thinks about it. Once service is disrupted, we realize how much
depends on it. Many users never know of Automake. The programmers and
packagers work behind the scenes, relying on the build systems
effectiveness.

 > Please describe the history and state of development of your open
 > source technology

Automake automatically generates input files for Autoconf and adds
dependency tracking. Version 1.0 was released in 1996. Automake is
(primarily) implemented in Perl, and also uses m4 and shell scripts.

Automake is completely dependent on Autoconf, which is an extensible
package of M4 macros that produce shell scripts to automatically
configure software source code packages.

Autoconf and to a somewhat lesser extent Automake became very popular in
the 2000s, as extremely portable and adaptable build systems. It is
often possible to configure a package for compilation on a new system
without user intervention.

Plenty of projects haved switched to other build systems for various
reasons, but numerous projects still rely on the Autotools.

 > Which BRP services are you interested in?

Direct contributions, particularly fixes for open bugs.
https://debbugs.gnu.org/cgi/pkgreport.cgi?package=automake

 >Describe why your project needs those services?

Automake (and Autoconf) have relatively few contributors, and thus
releases are infrequent and some bugs, especially system-dependent ones,
have remained unfixed for years. The many dependencies (GNU m4, GNU
libtool, plus (f)lex, bison/yacc, compilers, etc.) make it relatively
difficult for newcomers to make substantive contributions without
significant effort.

On the other hand, C, C++, Python, and other languages are evolving, and
the new versions of these language standards are often
backward-incompatible with existing code and practice. Thus the
Autotools must adjust.



Re: automake-1.16.92 released

2024-06-29 Thread Karl Berry
Hi Dave,

in case it affects a decision to release 1.17 

Indeed. Thank you very much for the report (and the followup). The first
question that comes to mind: are you using the same version of libtool
in the various cases? --thanks again, karl.




Re: RFC: Add public macros AC_LOG_CMD and AC_LOG_FILE.

2024-06-26 Thread Karl Berry
Subject: RFC: Add public macros AC_LOG_CMD and AC_LOG_FILE.

FWIW, it sounds good to me. To my mind, logging is one of the most
important features of autoconf, so I'm all for macros to support it
further. --thanks, karl.



Re: [platform-testers] automake-1.16.92 released

2024-06-25 Thread Karl Berry
I ran a mass rebuild on Fedora for packages that depend on automake with
this version. 

Thank you!!

Out of 1330 packages built, I found the following failures.

Could be a lot worse!

NetworkManager
x2gokdrive
xorg-x11-server
Use of uninitialized value $var in string eq at
/usr/share/automake-1.16/Automake/Variable.pm line 754,  line 47.

Any chance you can send the Makefile.am for any of those packages?
Line 754 of Variable.pm is "scan_variable_expansions":

751   while ($text =~ m{\$(?:\{([^\}]*)\}|\(([^\)]*)\)|(\$))}g)
752{
753  my $var = $1 || $2 || $3;
754  next if $var eq '$';

So I guess something in the variable definition is not being recognized
properly. (And I don't think this has changed, and I also doubt the
Makefile.am's are in error, so it's a bit puzzling.) It would be easy
enough to force it to the empty string and avoid the uninitialized
warning, but it would be nice to understand what's going on.

 ddclient:
 automake: warnings are treated as errors
 Makefile.am:20: warning: escaping \# comment markers is not portable

Indeed, I think ddclient's Makefile.am just needs to avoid \#.
I don't see anything to do on the automake side for that one.

Thanks again,
Karl



Re: branch master updated: lib scripts: add "(GNU Automake)" to --version output, etc.

2024-06-20 Thread Karl Berry
Why two blank lines, not just one as for the other scripts?

Slip of the editor. Will fix. Thanks for the sharp eyes. -k




Re: 1.16.90 regression: configure now takes 7 seconds to start

2024-06-19 Thread Karl Berry
have to say --enable-maintainer-mode

Personally I agree with you, in theory, but I think it is too big of a
change to make. As I understand it. GNU package authors have their
source repos and have never had to say --enable-maintainer-mode before
to get their Makefiles etc. rebuilt. I don't think that would be a
welcome change.

Maintainers who want it can choose that (AM_MAINTAINER_MODE), but I
don't think we should change the default. -k




Re: 1.16.90 regression: configure now takes 7 seconds to start

2024-06-17 Thread Karl Berry
Let's look at the history.

Thanks very much for all that research and explanations, Bruno.
Likewise, Jacob.

https://lists.gnu.org/archive/html/bug-automake/2010-10/msg0.html

Aha, the explanation for some of the $sleep commands scattered
throughout the Automake tests! I had no idea. I'll add a comment at some
point. (I myself added more, in vain attempts to work around the timing
problems, but I don't think they should be necessary, in theory. Not
that I plan to remove them.)

   This patch is conservative; IMO safe for a 1.17 release.

I like the idea of a conservative patch, for sure. I see that what
you're doing here is simply omitting the 1 second trial for the sake of
saving that time, in exchange for accepting a 2s delay in the Automake
tests on 1s filesystems. That seems fine to me.

   This patch is risky. I think it's safe to commit only if followed
   by a 1-month testing period,

I installed your first patch.

   where we can see if people report failures
   like they were reported in September 2010.

I don't see any reason why the problem would have gone away.

   The problem with this patch is that it reverts the change 5) in the

Perhaps the AC_CONFIG_COMMANDS_POST as proposed by Nick and Jacob would
ameliorate that. It doesn't incur any delay on reasonable systems.
I'll reply separately about that. --thanks, karl.



Re: 1.16.90 regression: configure now takes 7 seconds to start

2024-06-17 Thread Karl Berry
   Nick>
  AC_CONFIG_COMMANDS_POST([cat >conftest.mk <<'EOF'
  configure: config.status
false
  EOF
  while ${MAKE-make} -f conftest.mk >/dev/null 2>&1
  do
touch config.status
  done])

One missing element is that there is no limit, which would be a bit of a
problem if the clock skew is severe (e.g., if configure's mtime is years
or even minutes in the future), so something extra is probably desirable
to bound the amount of time this runs to something practical.

It's easy enough to use a shell variable and limit it to 100(0) runs or
whatever.

But I have to wonder about inserting the filesystem sleep :(.  Otherwise
it seems like all the runs could easily happen "at once" (e.g., in
memory/caches) and nothing would change.

Since on reasonable systems, as you say, the loop would never be
entered, it shouldn't create a delay.

Anyway, later for that. --thanks, karl.



Re: Bug Resilience Program of German Sovereign Tech Fund

2024-06-17 Thread Karl Berry
Christoph - I had one more thought about the tech fund: Automake is
copyright FSF. So Neighorhoodie is going to need to sign a disclaimer or
(preferably) assignment for any patches to be usable. Is there precedent
in the fund for doing that? --thanks, karl.



Re: use of make in AM_SANITY_CHECK (was: improved timestamp resolution test)

2024-06-16 Thread Karl Berry
make(1) in AM_SANITY_CHECK seems to be a logic error, since the user
may want to build with a different $MAKE,

You're right. Crap. It never ends.

In practice it probably doesn't matter, though.  Although in theory one
can imagine that "make" succeeds while $MAKE fails, resulting in a false
positive, in practice that seems next to zero probability to me. Much
more likely is that "make" fails and $MAKE succeeds, and the only
downside of that is an extra second of sleeping.

have a way to revise AM_SANITY_CHECK that can avoid any sleep in the 
most common cases.

Bruno's last patch already does that, doesn't it? I'll apply it shortly.

Are you willing to consider patches on this?

I guess.

The more I look at this, the less I understand it. Especially because I
generally cannot reproduce the problems/situations that people are
trying to fix with this endless series of patches. --thanks, karl.



Re: 1.16.90 regression: configure now takes 7 seconds to start

2024-06-16 Thread Karl Berry
Find here attached a revised proposed patch.

Ok on the reorg, but sorry, I remain confused. This whole thing started
with Mike Vapier's change in Feb 2022 (commit 720a11531):
https://lists.gnu.org/archive/html/automake-commit/2022-02/msg9.html

As I read it now, his goal was to speed up other projects, not Automake,
by reducing the "sleep 1" to "sleep " in
AM_SANITY_CHECK, via AC_CONFIG_COMMANDS_PRE, i.e., before creating
config.status.

But that is only one instance of generating files. I must be missing
something obvious. There are zillions of generated files in the
world. For instance, why aren't there problems when a small C file is
created and compiled? That could easily take less than 1 second, if that
is the mtime resolution.

I understand that equal timestamps are considered up to date, and
presumably the .c and .o (say) would be equal in such a case. Ok, but
then why is configure generating config.status/etc. such a special case
that it requires the sleep, and nothing else? I mean, I know the sleep
is needed; I've experienced the problems without that sleep myself. But
I don't understand why it's the only place (in normal compilations;
forget the Automake test suite specifically) that needs it.

Can someone please educate me as to what is really going on underneath
all this endless agonizing tweaking of the mtime tests? Sorry for my
stupidity. --thanks, karl.



Re: Bug Resilience Program of German Sovereign Tech Fund

2024-06-15 Thread Karl Berry
Hi Christoph,

All Automake release announcements since 2.13 warn about 
future Automake 2.0 incompatibilities.

I moved that noisy warning from the top of NEWS into a separate NEWS-2.0
file a couple of releases ago.

At the beginning there is a meeting between you (maybe more people,
I can take part, too) and the developers. Citing the FAQ:

I see. Well, that's fine, but I won't have much to say beyond "chase
open bugs". Many are system-specific. Others have had long discussions
with no clear resolution possible (but I still left them open).

Although it would be nice if we could say "these are the most important
bugs to work on", I can't. Triaging the bug list is itself a
time-consuming job that I can't take on.

Does anyone else reading here have ideas, or would like to participate
in such a meeting? Any other thoughts in general on this?

Please share text improvements with me, once we decide to apply.

Ack.

Thanks,
Karl



Re: Bug Resilience Program of German Sovereign Tech Fund

2024-06-13 Thread Karl Berry
Hi Christoph,

I advice everybody so seek alternatives.

I'm sorry to hear it. My own personal experience (with my sysadmin hat
on) is that all alternatives have been inferior. Which is, ultimately,
why I choose to spend my time here.

I would love to see any minor improvement, as the documentation left
me puzzled multiple times.

Me too. But no single document can easily answer everyone's questions
every time.  If there are specific lacuna or unclear things in the
manual, then I'm happy to work on that.

Nobody wants to rewrite Automake in Rust or replace M4 by Python ;-)

Ok, good. That sort of thing is exactly what I was imagining :).

My interpretation for Autocond and Automake would be to adjust issues 
with newer version of the used technologies 

I don't think there is any "technology", i.e., program, where we can
assume a newer version. Whenever we try to use some "new" feature of,
say, Perl (like, a mere decade or two old), we get complaints.
And let's not talk about shells.

or adjusting tests to newer C and C++ standards and the stricter
interpretation of modern compilers.

Ok, but we have to continue to support older compilers. This is one of
the biggest problems nowadays. Trying to support tool X on system Y,
where every release of the tool and every release of the OS have a
different set of bugs and/or requirements. It's maddening.

It could also help out on the way to Automake 2.0.

As long as I'm the primary person driving Automake, there will not be an
Automake 2.0. I have no plans to ever work on that, and see no need for
it, either.

Just keeping up with the churn induced by language "standard" committees
and compiler and OS backward incompatibilities, which are done at the
drop of a hat nowadays, is clearly beyond me. It is very frustrating to
have to work so hard to stay in the same place.

Do you feel like not trying it in the first place?

Let me ask this: if we end up being accepted, what are we committing
ourselves to do?  Anything? (wrt to the neighborhoodies or the
government.) Submit a report?

Assuming we aren't forced to do things like accept patches we don't
want, or explain endlessly how m4 works, overall, I guess my feeling is
that there's probably no harm in trying. Despite our skepticism, maybe
we will be pleasantly surprised and get some useful results. That would
be nice.

I have a bunch of wording issues with your proposed text, but that is minor.

Thanks,
Karl



Re: improved timestamp resolution test (was: 1.16.90 regression: configure now takes 7 seconds to start)

2024-06-13 Thread Karl Berry
Jacob,

[*sigh*]

You said it. About this whole thing. I rather wish this bright idea had
never come to pass. It has delayed the release by months. Oh well.

Still, could we use make(1) for *all* of the testing and not use `ls -t` 

I guess it is technically possible, but I somehow feel doubtful about
relying entirely on make. Using ls already has plenty of portability
issues; I shudder to think how many strange problems we'll run into when
we start exercising timing edge cases in make.

Also, it's taken months to get the current code to even be vaguely
usable; I don't much like the idea of starting over.

Also, with Bruno's patch (once I understand it, anyway), I guess the
whole problem goes away. Which would be the best outcome.

Thanks,
Karl



Re: 1.16.90 regression: configure now takes 7 seconds to start

2024-06-13 Thread Karl Berry
Sorry, but I don't really understand your patch. With it, it would seem
that _AM_FILESYSTEM_TIMESTAMP_RESOLUTION is only called if the build
environment is not "sane", i.e., a created file is not newer than
configure. Is that right? (That embedded shell construct is hard to grok.)

is in _AM_FILESYSTEM_TIMESTAMP_RESOLUTION, whose sole purpose is to
determine a variable am_cv_filesystem_timestamp_resolution. The sole
use of this variable is in AM_SANITY_CHECK, 

The timestamp resolution also used in Automake's t/ax/test-defs.in
(->.sh), and Automake's configure.ac, aka MTIME_RESOLUTION. With your
patch, how does it ever get defined?

Did you intend that Automake's configure.ac would then explicitly call
_AM_FILESYSTEM_TIMESTAMP_RESOLUTION (in which case it should probably be
renamed without a leading underscore), or am I misunderstanding the
whole thing? (Quite likely.) --thanks, karl.



Re: 1.16.90 regression: configure now takes 7 seconds to start

2024-06-12 Thread Karl Berry
Does BSD ls(1) support "--time=ctime --time-style=full-iso"?  

BSD ls does not support any --longopts. Looking at the man page,
I don't see "millisecond" or "subsecond" etc. mentioned, though I could
easily be missing it. E.g.,
  https://man.freebsd.org/cgi/man.cgi?ls

Even if there is such an option, I am skeptical of how portable it would
be, or trying to discern whether it is really working or not. All the
evidence so far is that it is very difficult to determine whether
subsecond mtimes are sufficiently supported or not. Speaking in general,
I don't think trying to get into system-specific behaviors, of whatever
kind, is going to help. --thanks, karl.



Re: 1.16.90 regression: configure now takes 7 seconds to start

2024-06-12 Thread Karl Berry
It should save 6 seconds. Because it goes like this:
  - Test whether 0.01 sec works.
  - Test whether 0.1 sec works.
  - If not, set the variable to 2, because that's the worst case and it
*must* work.

At which places will then a 'sleep 2' be done where (if not VFAT) a
'sleep 1' would be sufficient?

Sorry, I don't understand what you're saying.
When I look at the code, I see it checking .01, .1, and then 1.
If all those fail, then it falls back to 2 (but never tests it).

am_cv_filesystem_timestamp_resolution=2
am_try_resolutions=1
..
am_try_resolutions="0.01 0.1 $am_try_resolutions"
..
for am_try_res in $am_try_resolutions; do
  ... sleep $am_try_res twice for ls and four times for make ...
  if ; then
am_cv_filesystem_timestamp_resolution=$am_try_res
break
  fi
done

At which places will then a 'sleep 2' be done 

sleep 2 is currently never done, so far as I can see.

Anyway, I just committed the change to avoid the make-related sleeps if
the mtime_resolution is 1s. It's what I can see ... -k

-
automake: omit make subsecond tests if at one-second resolution.

Partially ameliorates report from Bruno Haible, thread at
https://lists.gnu.org/archive/html/automake/2024-06/msg00015.html

* m4/sanity.m4 (_AM_FILESYSTEM_TIMESTAMP_RESOLUTION): if
resolution is only one second, assume make works, to
avoid several sleeps.
diff --git a/m4/sanity.m4 b/m4/sanity.m4
index 09489ffaa..68fbf36f7 100644
--- a/m4/sanity.m4
+++ b/m4/sanity.m4
@@ -90,40 +90,46 @@ for am_try_res in $am_try_resolutions; do
   test "$[]3" = conftest.ts2 &&
   test "$[]4" = conftest.ts1); then
 #
-# Ok, ls -t worked. We have one more thing to check: make.
-# It can happen that everything else supports the subsecond mtimes,
-# but make doesn't, notably on macOS, which ships make 3.81 from
-# 2006 (the last one released under GPLv2). https://bugs.gnu.org/68808
-#
-# So, first let's create a Makefile:
-rm -f conftest.mk
-echo 'conftest.ts1: conftest.ts2' >conftest.mk
-echo ' touch conftest.ts2' >>conftest.mk
-#
-# Now, running
-#   touch conftest.ts1; touch conftest.ts2; make
-# should touch ts1 because ts2 is newer. This could happen by luck,
-# but most often, it will fail if make's support is insufficient. So
-# test for several consecutive successes.
-#
-# (We reuse conftest.ts[12] because we still want to modify existing
-# files, not create new ones, per above.)
-n=0
+# Ok, ls -t worked. If we're at a resolution of 1 second, we're done,
+# because we don't need to test make.
 make_ok=true
-until test $n -eq 4; do
-  echo one > conftest.ts1
-  sleep $am_try_res
-  echo two > conftest.ts2 # ts2 should now be newer than ts1
-  if make -f conftest.mk | grep 'up to date' >/dev/null; then
-make_ok=false
-break # out of $n loop
-  fi
-  n=`expr $n + 1`
-done
+if test $am_try_res != 1; then
+  # But if we've succeeded so far with a subsecond resolution, we
+  # have one more thing to check: make. It can happen that
+  # everything else supports the subsecond mtimes, but make doesn't;
+  # notably on macOS, which ships make 3.81 from 2006 (the last one
+  # released under GPLv2). https://bugs.gnu.org/68808
+  #
+  # So, first let's create a Makefile (real tab character):
+  rm -f conftest.mk
+  echo 'conftest.ts1: conftest.ts2' >conftest.mk
+  echo '   touch conftest.ts2' >>conftest.mk
+  #
+  # Now, running
+  #   touch conftest.ts1; touch conftest.ts2; make
+  # should touch ts1 because ts2 is newer. This could happen by luck,
+  # but most often, it will fail if make's support is insufficient. So
+  # test for several consecutive successes.
+  #
+  # (We reuse conftest.ts[12] because we still want to modify existing
+  # files, not create new ones, per above.)
+  n=0
+  until test $n -eq 3; do
+echo one > conftest.ts1
+sleep $am_try_res
+echo two > conftest.ts2 # ts2 should now be newer than ts1
+if make -f conftest.mk | grep 'up to date' >/dev/null; then
+  make_ok=false
+  break # out of $n loop
+fi
+n=`expr $n + 1`
+  done
+fi
+#
 if $make_ok; then
   # Everything we know to check worked out, so call this resolution good.
   am_cv_filesystem_timestamp_resolution=$am_try_res
-  break # out of resolution loop
+  break # out of $am_try_res loop
 fi
 # Otherwise, we'll go on to check the next resolution.
   fi

compile finished at Wed Jun 12 18:24:14 2024



Re: 1.16.90 regression: configure now takes 7 seconds to start

2024-06-12 Thread Karl Berry
> Any other ideas?
A horrible one: 

:)

split the test so it can be performed in parallel with 
others -- upper half starts the sleep in the background, lower half 
waits for it to complete.

No thanks. I can't even begin to imagine the portability and edge case
problems that would result :). -k



Re: 1.16.90 regression: configure now takes 7 seconds to start

2024-06-11 Thread Karl Berry
Maybe this is a silly question, but, is there a reason why this test
needs to be performed in every single package that uses Automake?

I was under the impression that the purpose of this test was merely
to speed up running Automake's own test suite.

There are other packages that have many tests that presumably
also substantially benefit?

If it only benefitted automake, it would not have been worth it, given
the significant complications and hassle that have ensued. But since all
that work has already been done, I'd hate to throw it away now.

I'll put a note in NEWS about how to effectively override the test, i.e.,
  am_cv_filesystem_timestamp_resolution=1
  export am_cv_filesystem_timestamp_resolution
I believe (untested). -k



Re: Bug Resilience Program of German Sovereign Tech Fund

2024-06-11 Thread Karl Berry
Hi Christoph,

https://www.sovereigntechfund.de/programs/bug-resilience

Thanks for bringing this up.

 > Our partner 'Neighbourhoodie Software' provides a variety
 > of types of contributions to participating projects to
 > address known issues, 

If that means providing patches for open bugs, then great.
That is what is needed.
https://debbugs.gnu.org/cgi/pkgreport.cgi?package=automake

However, going along with what Paul said, I am skeptical that there is
any real chance that someone from "Neighborhoodie Software" knows or
will learn m4 + sh + perl + etc. enough to actually do anything useful.

Looking at https://neighbourhood.ie/areas-of-expertise (assuming that's
the company in question), I see nothing about low-level Unix stuff. Just
current high-level web things.

On the other hand, as you say, spending tax money on free software in
whatever way is better than many other uses, regardless of whether
anything useful comes out of it.

 > improve documentation, 

I am equally skeptical that that would happen.

 > and reduce technical debt.

I don't know what that means. I instinctively shy away from such
vague buzzwords.

As for "modernizing" autoconf/make, mentioned in other msgs, that's the
last thing that should be done. We go to a lot of trouble to make the
tools work on old systems that no one else supports. For example, I can
just picture them saying "oh yes, you should use $(...) instead of
`...`" and other such "modern" shell constructs. Or "use Perl module
xyz to simplify", where xyz only became available a few years ago. Etc.

My biggest concern is that I do not want to spend the little time I have
"explaining" to people, who are supposedly there to help, how these
packages work and what the basic approach is. (And I'm sure that all the
rest of us doing the development feel the same way.) I fear that is
exactly what will happen. --best, karl.



Re: 1.16.90 regression: configure now takes 7 seconds to start

2024-06-11 Thread Karl Berry
bh> Seen e.g. on NetBSD 10.0.

Which doesn't support subsecond mtimes?

jb> Maybe the best answer is to test for subsecond timestamp
granularity first, and then only do the slow test to distinguish
between 1-second and 2-second granularity if the subsecond
granularity test gives a negative result?

Unfortunately, that is already the case. The function
(_AM_FILESYSTEM_TIMESTAMP_RESOLUTION in m4/sanity.m4) does the tests
starting with .01, then .1, then 1. Searching for sleep [012] in Bruno's
log confirms this.

If I understand correctly, Bruno's goal is to omit the "1" test if we
can detect that we're not on a fat filesystem. But I admit I don't like
trying to inspect filesystem types. That way lies madness, it seems to
me, and this whole function is already maddening enough. E.g., mount
and/or df could hang if NFS is involved.

It seems to me that using stat doesn't help because it's not available
by default on the bsds etc., as Bruno pointed out. 

The simple change is to omit the make test if we are at resolution 1.
That will save 4 seconds. Omitting it is justified because the make test
is only there for the sake of makes that are broken wrt subsecond
timestamps. I will do that.

That will leave 2+ sec of sleeping, but if we are to reliably support
fat, I don't see a good alternative. At least it's not as bad as 6+.
Any other ideas?

karl



Re: 1.16.90 regression: configure now takes 7 seconds to start

2024-06-11 Thread Karl Berry
Date: Sat, 08 Jun 2024 00:27:39 +0200
From: Bruno Haible 
To:  
Subject: 1.16.90 regression: configure now takes 7 seconds to start

[I'm writing to automake@gnu.org because bug-autom...@gnu.org
appears to be equivalent to /dev/null: [...]

It seems this has been fixed, whatever was going on then. I just sent a
test message to bug-automake around 15:12 PDT today, and got an
acknowledgement about 15 minutes later that bug#71497 had been
created. (Then I closed the bug.) -k



Re: automake 1.17 release plan?

2024-05-14 Thread Karl Berry
Hi Christoph,

end of 2023 you shared the news that automake release 1.17 could happen 

Indeed. Unfortunately since then I have had to attend to other priority
projects, and there's no one else driving automake. I hope to be able to
spend some time on automake again soon to bring the release to fruition.
I have no ETA though, as ever. Sorry.

There has been no public communication for the last couple of 
weeks. 

Well, I (or someone) is still replying to questions and bugs on
automake@gnu.org and bug-autom...@gnu.org. Not about the release,
though, granted.

What are your plans regarding 1.17? 

Release as soon as possible.

Are there blockers? 

Yes. The last pretest in December turned up at least one:
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=68808

It requires hacking a function in sanity.m4 to probe make for its
"subsecond mtime" behavior.

There may be others, I'd have to look at the recent pending bugs.

Is there anything we as the community can help?

Well, a patch for the bug above would certainly be helpful.

Patches in general for any other bugs, especially the recent ones, would
be all to the good.

Other than actual patches, reviewing the other recent pending bugs to
see if any others are important enough to require fixing before the
release, or simple enough to just fix and be done with it, would also be
helpful.  (I know there are a few other patches simply waiting for me to
review and install.)

Beyond that, three years ago I wrote a message requesting more
volunteers. The information is (sadly enough) still current:
https://lists.gnu.org/archive/html/automake/2021-03/msg00018.html

Thanks,
Karl

P.S. BTW, did something happen somewhere that prompted you to send this?
I ask because another person wrote me off-list today with the same
question. Seems a bit much for coincidence.



Re: How to force libtool to use CXX mode?

2024-05-13 Thread Karl Berry
Automake does have a critical bug in that for a target which only 
optionally has C++ sources, that target is always linked using C++. 

So it should only use C++ if the "option" is selected?
Can you provide a test tree?

Without this issue, the trick of including an empty optional C++
source file in the build would work.

I don't yet understand how all this is playing together ... -k



Re: How to force libtool to use CXX mode?

2024-05-13 Thread Karl Berry
convince Automake to force libtool to link using the C++ compiler

When there are no C++ sources? Why? Just trying to understand ...

I'm sorry Bob, but I just don't know.  Maybe the just-released
libtool-2.5.0 alpha offers some new help?

If there is some bug in or feature for Automake that would help, I'm
open to suggestions (and patches). It kind of sounds like more on the
libtool side? --sorry, karl.



Re: GNU Coding Standards, automake, and the recent xz-utils backdoor

2024-04-02 Thread Karl Berry
I'm also wondering whether the GNU system should recommend using zstd
instead of or in addition to xz for compression purposes.

I'm not sure GNU explicitly recommends anything. Although the tarball
examples in standards.texi and maintain.texi all use gz, I don't think
even gz is explicitly recommended. (Which seems ok to me.)

Personally, I would support lz4 over zstd simply because more GNU
packages already use lz4.(*) Both lz4 and zstd are quite a bit less
resource-hungry than xz, especially for compression. I don't know if
there is a technical reason to prefer zstd.

In general, I think it can continue to be left up to individual
maintainers, vs. making any decrees. Automake supports them all
(among others). --best, karl.

(*) Looking at a listing of ftp.gnu.org, I see only gmp using zst, and
perhaps a dozen or so packages using lz. Basically always in addition to
another format.



Re: GNU Coding Standards, automake, and the recent xz-utils backdoor

2024-03-30 Thread Karl Berry
`distcheck` target's prominence to recommend it in the "Standard
Targets for All Users" section of the GCS? 

Replying as an Automake developer, I have nothing against it in
principle, but it's clearly up to the GNU coding standards
maintainers. As far as I know, that's still rms (for anything
substantive)

FWIW, I expect that few users would actually run make distcheck,
regardless of anything in the GCS.  And of those that do, I suspect
there would be many failures because make distcheck is a complex target
that is not, so far as I understand it, intended to be as perfectly
portable or prerequisite-free as other targets. No doubt it could be
improved in that regard. Not a stopper, just my thoughts.

Thanks for the suggestion,
Karl



Re: C library promoted to C++ linkage due to optional C++ source module

2024-03-09 Thread Karl Berry
Hi Bob,

It is my opinion that if a library or program 
is linked with C++ libraries (and especially if it is a static build!) 
that it should be linked using the C++ linker.  Likewise, if a library 
or program does not depend on, or contain any C++ code, it should be 
linked with the C linker.

I surely agree, in principle. But that doesn't mean I have the faintest
idea what to change in Automake to make that be the case. You probably
know better than me :). Can you provide (as simple as possible) test cases?

I have a continuing problem that when libtool tests 

bug-libt...@gnu.org for that one, I think ... --best, karl.



purpose of line ".. contents:: :depth: 2" in test-suite.log?

2024-01-28 Thread Karl Berry
Does anyone know what this line in automake-generated test-suite.log
files is used by or intended for?

. contents:: :depth: 2

It appears to be machine-parsable, but I can't find any reference to it
in the code or the doc. There doesn't seem to be anything that outputs
:depth: 3 (or anything else), either. The above is just a static string
in lib/am/check.am:

  echo ".. contents:: :depth: 2";   \

Just wondering. I don't plan to change it. --thanks, karl.



automake-1.16j pretest available: please test

2023-12-29 Thread Karl Berry
The GNU Automake 1.16j development snapshot is now available. Download here:

  https://alpha.gnu.org/gnu/automake/automake-1.16j.tar.xz
  https://alpha.gnu.org/gnu/automake/automake-1.16j.tar.gz

We intend for automake 1.17 to be released soon, essentially with only
bug fixes for whatever is found in this pretest. So please do test if at
all possible.

The main change from 1.16i was another attempt at making the "subsecond
mtime" support reliable and backward compatible. That is, to work with
autoconf-2.72 (which supports subsecond mtimes) and earlier versions
(which don't). See below for the detailed list of changes since the
previous version, as summarized by the NEWS file.

In general, it's our primary goal to preserve compatibility. If this
release of Automake induces failure in a setup that was previously
working, please let us know.

Please report bugs and problems to ,
and send general comments and feedback to ,
and patches to .

Thanks to everyone who has reported problems, contributed patches,
and helped test Automake!

With special thanks to Bogdan, Mike Frysinger, Nick Bowler, and 
Zack Weinberg for their numerous contributions.  This release could not
have happened without them.



New in (what will be) 1.17:

* New features added

  - AM_PATH_PYTHON will, after checking "python", prefer any Python 3
version (latest versions checked first) over any Python 2
version. If a specific version of Python 2 is still needed, the
$PYTHON variable should be set beforehand.

  - AM_PATH_PYTHON will also search for Python versions 3.15 through 3.10.
It previously searched for 3.9 through 3.0. (bug#53530)

  - RANLIB may be overridden on a per-target basis.

  - AM_TEXI2FLAGS may be defined to pass extra flags to TEXI2DVI & TEXI2PDF.

  - New option "posix" to emit the special target .POSIX for make.

  - Systems with non-POSIX "rm -f" behavior are now supported, and the
prior intent to drop support for them has been reversed.
The ACCEPT_INFERIOR_RM_PROGRAM setting no longer exists.

  - Variables using escaped \# will trigger portability warnings, but be
retained when appended.  GNU Make & BSD Makes are known to support it.
(bug#7610)

  - GNU Make's default pattern rules are disabled, for speed and debugging.
(.SUFFIXES was already cleared.) (bug#64743)

  - For Texinfo documents, if a .texi.in file exists, but no .texi, the
.texi.in will be read. Texinfo source files need not be present at
all, and if present, need not contain @setfilename. Then the file name
as given in the Makefile.am will be used.  If @setfilename is present,
it should be the basename of the Texinfo file, extended with .info.
(bug#54063)

  - The missing script also supports autoreconf, autogen, and perl.

* Bugs fixed

  - Generated file timestamp checks handle filesystems with sub-second
timestamp granularity dynamically, greatly speeding up make check,
etc. However, this requires an autom4te from Autoconf 2.72 or later
(or random test failures and other timing problems may ensue), as
well as a Perl, sleep utility, and filesystem that supports
sub-second resolution; otherwise, we fall back to one-second
granularity as before. When everything is supported, a line
`Features: subsecond-mtime' is now printed by automake --version
and autom4te --version. (bug#64756, bug#67670)

  - The default value of $ARFLAGS is now "cr" instead of "cru", to better
support deterministic builds. (bug#20082)

  - Dependency files are now empty, instead of '# dummy', for speed.

  - Compiling Python modules with Python 3.5+ uses multiple optimization
levels. (bug#38043)

  - When compiling Emacs Lisp files, emacs is run with --no-site-file to
disable user config files that might hang or access the terminal;
and -Q is not used, since its support and behavior varies. (bug#58102)

  - Emacs Lisp compilations respects silent make output.

  - Automake no longer incorrectly warns that the POSIX make variables
$(*D) and the like are non-POSIX. Unfortunately, the make
implementations which do not correctly implement all the POSIX
variables are not detected, but this seems to have little impact
in practice. (bug#9587)

  - Pass libtool tags OBJC and OBJCXX for the respective languages.
(bug#67539)

  - distcleancheck ignores "silly rename" files (.nfs* .smb* .__afs*)
that can show up on network file systems.

  - tests: avoid some declaration conflicts for lex et al. on SunOS.
(bug#34151 and others)

  - Pass any options given to AM_PROG_LEX on to AC_PROG_LEX.
(bug#65600, bug#65730)

* Obsolescence:

  - py-compile no longer supports Python 0.x or 1.x versions.  Python 2.0,
released in 2000, is currently the minimum required version.





Re: Typo in NEWS section "New in 1.17" and "New in 1.15"

2023-12-26 Thread Karl Berry
While reading the announcement for 1.16i, I found a typo in the
NEWS file "New in 1.17" section.

I have also accidentally found a typo in the "New in 1.15"
section, 

Thanks x 2, Hans. Applied.

which might need a line rewrap after the fix.

Nah, it's ok.

I have not systematically looked for typos in any of the
"New in ..." sections older than 1.17.

I ran a spell checker and nothing obvious showed up. Not that that's
conclusive, but it will have to do :). --thanks, karl.



Re: What does (did?) it mean when aclocal exits with code 63?

2023-12-22 Thread Karl Berry
Hi Zack,

*automake* can exit with code 63 under
some circumstances, but it really looks like aclocal never will.

Agreed. I searched for "63" in automake distributions back to 1.11.3, as
well as the current sources, and no trace of any 63's in aclocal, only
in automake. Thus I suspect that the autoconf test meant to invoke
automake, not aclocal?

Does anyone remember what situation this might have been trying to detect?

"Version mismatch". Of exactly what kind, I don't know :).

The change was made in automake in 2003, according to old/ChangeLog.03.
BTW, I don't see a way that Channels.pm (which aclocal.in uses as of
this change, apparently) exits with code 63, either.

Here are the ChangeLog and NEWS entries. --hope this helps, karl.


2003-09-06  Alexandre Duret-Lutz  

* lib/Automake/XFile.pm: Update to use ChannelDefs.
(close): Call Automake::FileUtils::handle_exec_errors on errors.
* automake.in (scan_autoconf_files): Exit with $?=63 on version
mismatch.
(scan_autoconf_traces): Likewise.  Close the autoconf pipe to
capture abnormal exits.
* aclocal.in ($exit_status): Remove, and use Channels.pm's $exit_code
instead.
(trace_used_macros): Close the autom4te pipe to capture abnormal exits.
* lib/missing: When a tool has run and exited with $?=63, emulate
it.  Adjust the diagnostic and pretend the tool is tool old in this
case.  Use an emacs-updated "scriptversion" variable.
* configure.in: Output tests/aclocal-${APIVERSION} and
tests/automake-${APIVERSION}.
* tests/aclocal.in, tests/automake.in,
tests/missing.test, tests/missing2.test: New files.
* tests/defs.in (AUTOMAKE, ACLOCAL, PATH): Define
to use tests/aclocal-$APIVERSION and tests/automake-$APIVERSION.
* tests/dup3.test: Remove. alocal9.test, acloca10.test, and others are
already testing for this.
* tests/depacl2.test, tests/dup2.test, tests/order.test: Fix
configure.in so that aclocal works.
* tests/defun.test: Quote the AC_DEFUN body.
* tests/Makefile.am (TESTS): Add missing.test and missing2.test,
and remove dup3.test.
(check_SCRIPTS): Add aclocal and automake.

New in 1.8:
..
  - Automake will exit with $? = 63 on version mismatch.  (So does
Autoconf 2.58)  missing knows this, and in this case it will
emulate the tools as if they were absent.  Because older versions
of Automake and Autoconf did not use this exit code, this change
will only be useful in projects generated with future versions of
these tools.




automake-1.16i pretest available: please test

2023-12-18 Thread Karl Berry
We are pleased to announce the GNU Automake 1.16i development snapshot.
We intend for automake 1.17 to be released soon, essentially with only
bug fixes for whatever is found in this pretest. So please do test if at
all possible.

It's our primary goal to preserve compatibility. If this release of
Automake induces failure in a setup that was previously working, please
let us know.

See below for the detailed list of changes since the
previous version, as summarized by the NEWS file.

Download here:

  https://alpha.gnu.org/gnu/automake/automake-1.16i.tar.xz
  https://alpha.gnu.org/gnu/automake/automake-1.16i.tar.gz

Please report bugs and problems to ,
and send general comments and feedback to ,
and patches to .

Thanks to everyone who has reported problems, contributed patches,
and helped test Automake!

With special thanks to Bogdan, Mike Frysinger, Nick Bowler, and 
Zack Weinberg for their numerous contributions.  This release could not
have happened without them.

New volunteers to help maintain Automake are needed. Please help if
you can. For info, see this post (nothing much has changed since):
  https://lists.gnu.org/archive/html/automake/2021-03/msg00018.html
and the open bug list:
  https://debbugs.gnu.org/cgi/pkgreport.cgi?package=automake



New in (what will be) 1.17:

* New features added

  - AM_PATH_PYTHON will, after checking "python", prefer any Python 3
version (latest versions checked first) over any Python 2
version. If a specific version of Python 2 is still needed, the
$PYTHON variable should be set beforehand.

  - AM_PATH_PYTHON will also search for Python versions 3.15 through 3.10.
It previously searched for 3.9 through 3.0. (bug#53530)

  - RANLIB may be overridden on a per-target basis.

  - AM_TEXI2FLAGS may be defined to pass extra flags to TEXI2DVI & TEXI2PDF.

  - New option "posix" to emit the special target .POSIX for make.

  - Systems with non-POSIX "rm -f" behavior are now supported, and the
prior intent to drop support for them has been reversed.
The ACCEPT_INFERIOR_RM_PROGRAM setting no longer exists.

  - Variables using escaped \# will trigger portability warnings, but be
retained when appended.  GNU Make & BSD Makes are known to support it.
(bug#7610)

  - GNU Make's default pattern rules are disabled, for speed and debugging.
(.SUFFIXES was already cleared.) (bug#64743)

  - For Texinfo documents, if a .texi.in file exists, but no .texi, the
.texi.in will be read. Texinfo source files need not be present at
all, and if present, need not contain @setfilename. Then the file name
as given in the Makefile.am will be used.  If @setfilename is present,
it should be the basename of the Texinfo file, extended with .info.
(bug#54063)

  - The missing script also supports autoreconf, autogen, and perl.

* Bugs fixed

  - Generated file timestamp checks handle filesystems with sub-second
timestamp granularity dynamically, greatly speeding up make check,
etc. However, this requires an autom4te from Autoconf 2.72 (as yet
unreleased) or later (or random test failures and other timing
problems may ensue), as well as a Perl, sleep utility, and
filesystem that supports sub-second resolution; otherwise, we fall
back to one-second granularity as before. When everything necessary
is supported, a new line `Features: subsecond-mtime' is printed by
automake --version (and autom4mte --version). (bug#64756 and bug#67670)

  - The default value of $ARFLAGS is now "cr" instead of "cru", to better
support deterministic builds. (bug#20082)

  - Dependency files are now empty, instead of '# dummy', for speed.

  - Compiling Python modules with Python 3.5+ uses multiple optimization
levels. (bug#38043)

  - When compiling Emacs Lisp files, emacs is run with --no-site-file to
disable user config files that might hang or access the terminal;
and -Q is not used, since its support and behavior varies. (bug#58102)

  - Emacs Lisp compilations respects silent make output.

  - Automake no longer incorrectly warns that the POSIX make variables
$(*D) and the like are non-POSIX. Unfortunately, the make
implementations which do not correctly implement all the POSIX
variables are not detected, but this seems to have little impact
in practice. (bug#9587)

  - Pass libtool tags OBJC and OBJCXX for the respective languages.
(bug#67539)

  - distcleancheck ignores "silly rename" files (.nfs* .smb* .__afs*)
that can show up on network file systems.

  - tests: avoid some declaration conflicts for lex et al. on SunOS.
(bug#34151 and others)

  - Pass any options given to AM_PROG_LEX on to AC_PROG_LEX.
(bug#65600 and bug#65730)

* Miscellaneous changes

* Obsolescence:

  - py-compile no longer supports Python 0.x or 1.x versions.  Python 2.0,
released in 2000, is currently the minimum required versi

Re: [RFC PATCH]: autom4te: report subsecond timestamp support in --version

2023-12-05 Thread Karl Berry
Features: subsecond-timestamps

Sounds good to me, FWIW. Thanks to all. -k



Re: rhel8 test failure confirmation?

2023-12-04 Thread Karl Berry
I thought we were talking about automake's testsuite probing the behavior
of *autom4te*

Yes, exactly. Sorry for the confusion.

$ ./tests/autom4te --version
autom4te (GNU Autoconf) 2.72d.6-49ab3-dirty (subsecond timestamps supported)

Looks good to me. Thanks.

 a third party CPAN module

Good point.

The implementation is just

Your patch sent to the autoconf list looked fine to me, FWIW.

Perhaps worth mentioning somewhere that Automake is the consumer of this
information that caused the change. You could point to
https://bugs.gnu.org/64756 if you want something more convenient than
the long multi-month thread on the automake discussion list (which I
pointed to from that bug).

Jacob, can you confirm that's an accurate test, 

+1 for Jacob's confirmation being welcome :).



Re: rhel8 test failure confirmation?

2023-12-03 Thread Karl Berry
upthread somewhere Karl (iirc) threw out a bikeshed idea like
--has=.

Pretty sure it wasn't me :).



Re: rhel8 test failure confirmation?

2023-12-03 Thread Karl Berry
> There would not need to be much parsing, just "automake --version | grep 
> HiRes" in that case, or "case `automake --version` in *HiRes*) ...;; 
> easc" to avoid running grep if you want.

I specifically want to hear what Karl thinks.

I lean towards Jacob's view that automake --version | grep HiRes will
suffice. Not having a new option seems simpler/better in terms of later
understanding, too. --thanks, karl.

P.S. As for case vs. grep, personally I find a simple if...grep easier
to comprehend/test/debug than a case statement. (Especially the
macro-ized AS_CASE, which just makes me have to look up its syntax every
time I see it.) Also fewer lines of source. Granted calling the external
grep is less efficient, but that seems insignificant to me. I understand
Paul and others may disagree ...



Re: rhel8 test failure confirmation?

2023-12-02 Thread Karl Berry
The best way to check if high-resolution 
timestamps are available to autom4te is to have perl load 
Autom4te::FileUtils and check if that also loaded Time::HiRes.

The problem with that turned out to be that Time::HiRes got loaded from
other system modules, resulting in the test thinking that autom4te used
it when that wasn't actually the case. That's what happened in practice
with your patch.

Hence the current test that merely greps the autom4te source for HiRes,
which is not sufficient, granted. But we have to do something.

Distributions unbundling Time::HiRes ... at some point I don't mind
saying that people have to set am_cv_sleep_fractional_seconds=false by hand.

karl



Re: armflang: error: unknown argument: '-soname'

2023-10-22 Thread Karl Berry
While libtool has a new maintainer (Alex Ameen), essentially nothing
happens, which is quite unfortunate...

1) libtool 2.4.7 was released in March 2022 (I don't know if Alex did
it), which isn't so terribly long ago. Sure, maintainers should at least
confirm bug reports and patches, even if releases don't happen quickly
(pace my own efforts with automake), but ...

2) When a package appears to be unmaintained, the first thing to do is
simply write the maintainer to see what the story is. If there is no
response, the next step is to write maintain...@gnu.org. It's their
responsibility to make continued efforts to contact the maintainer, up
to and including sending paper mail. And look for a new maintainer if
need be.

3) If that also fails, the final fallback is to write
gnu-advis...@gnu.org and/or r...@gnu.org.

Best,
Karl



Re: armflang: error: unknown argument: '-soname'

2023-10-21 Thread Karl Berry
Hi Anton - thanks for the report.

https://github.com/HDFGroup/hdf5/issues/366
with the solution that "-Wl," must be prepended somehow to "-soname".

Why do you think this is not a libtool issue?  Isn't it libtool's job to
figure out the arguments that need to be passed? The fact that the -Wl
is provided for gfortran and not for armflang makes me think even more
that it is libtool. At first glance, the string "soname" does not appear
in the Automake sources.

But I'm not sure what changes I need to do
to my configure.ac and/or Makefile.am
to fix this correctly.

I wish I had a workaround for you, but I just don't know the answer.
Someone else here probably knows better, else I suggest posting to
bug-libt...@gnu.org, ideally with a reproducible case.

Happy linking,
Karl



Re: [PATCH v2] automake: rewrite scan_variable_expansions regex

2023-08-09 Thread Karl Berry
The regex pattern in function scan_variable_expansions() fails to
report a portability warning when a dollar-escaped dollar sign
precedes the variable:

foo_SOURCES = a.c $$$(patsubst a.c,a,b)

Thanks much, Jan. It all worked for me. Pushed. --karl



Re: [PATCH] automake: rewrite scan_variable_expansions regex

2023-08-05 Thread Karl Berry
The regex pattern in function scan_variable_expansions() fails to
report a portability warning when a dollar-escaped dollar sign
precedes the variable:

foo_SOURCES = a.c $$$(patsubst a.c,a,b)

Thanks Jan. Any chance you could add a check to one of the tests, I
guess dollarvar.sh or dollarvar2.sh? (I haven't looked at them closely.) -k



Re: Issue with AM_PROG_LEX

2023-08-01 Thread Karl Berry
This will work iff AM_PROG_LEX uses AC_REQUIRE to invoke
AC_PROG_LEX. 

Evidently so. From automake's m4/lex.m4: 

AC_DEFUN([AM_PROG_LEX],
[AC_PREREQ([2.50])dnl
AC_REQUIRE([AM_MISSING_HAS_RUN])dnl
AC_REQUIRE([AC_PROG_LEX])dnl
if test "$LEX" = :; then
  LEX=${am_missing_run}flex
fi])




Re: Getting long SOURCES lines with subdirs shorter

2023-07-17 Thread Karl Berry
Hi Jan,

Current automake likely won't have anything in store already,

Not that I know of.

a_SOURCES = $(addprefix aprog/,main.c foo.c bar.c baz.c)

I've often wanted this myself. I'd certainly welcome a patch for it.

Please work from automake trunk. None of the various branches are kept
to date. (Sad but that's the reality.)

Happy hacking,
Karl



Re: _AM_FILESYSTEM_TIMESTAMP_RESOLUTION incorrect result (was Re: make check(s) pre-release problems)

2023-06-30 Thread Karl Berry
Hi Zack,

Date: Fri, 07 Oct 2022 11:35:41 -0400
From: Zack Weinberg 

[...]
the filesystem timestamp resolution was incorrectly detected:

Your analysis sounds plausible to me, but it's not obvious to me how
best to fix it. ls --full-time or stat may not be available.

Maybe just do the test again if the first ls -t "succeeds", i.e., if the
first 0.1sec straddles a second boundary, the second presumably won't?
Or is there a better way?

I wonder if you could easily make a patch for it (in m4/sanity.m4), if
you already have a setup on a second-granularity fs? (I don't.)
--thanks, karl.

[...]
The filesystem I'm working in only records timestamps at second
granularity. (I don't know why ls is printing .1 instead of
.0 but it's always .1.)

$ touch A && sleep 0.1 && touch B && ls --full-time -t A B
-rw-r--r-- 1 zweinber users 0 2022-10-07 11:20:05.1 -0400 A
-rw-r--r-- 1 zweinber users 0 2022-10-07 11:20:05.1 -0400 B

I *think* this is a bug in _AM_FILESYSTEM_TIMESTAMP_RESOLUTION where, if
it starts looping at *just the wrong time*, the first 0.1-second sleep
will straddle a second boundary and we'll break out of the loop
immediately and think we have 0.1-second timestamp resolution.
zw



Re: faster tests [was: rhel8 test failure confirmation?]

2023-04-17 Thread Karl Berry
Hi Bogdan,

Then, I analysed the files and added the trick from t/backcompat2.sh 
(if possible) and/or removed the extra calls to $ACLOCAL (if possible).

Thanks much for looking into this.

Short version: after a few hours of testing and modifications, I
*may* have saved up to 1 minute and 12 seconds of testing...

Well, at least you get kudos for doing all the research :).

You may look at the attached patch as a result of the investigation 
and then ... you're free to completely ignore it :). It works for me, 
but I wonder if it won't cause more confusion than it's worth...

I agree. Not worth the complications.

t/backcompat-acout.sh: 35 -> 24s

That seems to me like the only one that might be worth applying the
patch for. Quite a bit more savings than anything else in the list.

>>  # A trick to make the test run muuuch faster, by avoiding repeated
>>  # runs of aclocal (one order of magnitude improvement in speed!).
>>  echo 'AC_INIT(x,0) AM_INIT_AUTOMAKE' > configure.ac

Alternatively, I wonder how much this is really saving. Maybe the trick
should not be used anywhere.

- having 1277 .sh files in 't/' means that even if each runs in 30 
seconds, you have 10 hours of testing just from the number of tests,

Indeed. The only practical way to run make check is in parallel.  I
discovered that early on :). It still takes painfully long for me
(10-15min at best, on a new and fast machine).

- it may be better to determine if there are duplicate tests

Sounds awfully hard to do.

My impression is that the (vast?) majority of tests are the direct
result of bug reports. I would not be inclined to tweak, remove, merge,
or change them. Even if two tests are nearly identical, that "nearly"
can make all the difference.

- as you see above, t/pr401b.sh takes 1m42s to run. I wonder if e.g. 
running the 'distcheck' target in tests would be the main factor 

Sounds very likely to me. Distcheck is inherently a lengthy process. I
can't imagine how it can be sped up. Although I agree that 1:42 seems
rather long for a trivial package like those in the tests.

Same case for t/pr401c.sh and t/pr401.sh, although shorter times.

At a glance, I see required='cc libtoolize' in 401b, whereas 401c and
401 only have cc. Testing libtool really is different, and really does
take time. So I'm not sure there's any low-hanging fruit here.

Thanks again for doing all this work,
Karl




Re: rhel8 test failure confirmation?

2023-04-08 Thread Karl Berry
Are you sure about that?

Yes. Well, as sure as I can be. I don't see any $(...) constructs in
Automake's *.m4 now, and this is certainly deliberate. We discussed
shell portability many times over the decades of Automake development.

I can't quickly find where it's documented, if anywhere, but as far as I
know it is the status quo and I certainly see no reason to break new
ground for this small patch.

I got a fair bit of pushback on removing $(...) from config.guess

Yes, I know. I was one of the people who reported problems because of that.

on the grounds that Autoconf locates a POSIX shell and uses it for
the bulk of configure

My understanding is that Zack implemented that precisely to defend
against the config.guess snafu. So for all but the latest Autoconf
versions, it will not happen.

Let's try:

Thanks much! --all the best, karl.



Re: rhel8 test failure confirmation?

2023-04-07 Thread Karl Berry
Hi Jacob,

The guess was the two most probable locations:  /usr/share/autoconf and 
/usr/local/share/autoconf.

Wouldn't have worked on my own system :).

Challenge accepted.  

Thanks!

if $PERL -I${autom4te_perllibdir:-$(sed -n \
  '/autom4te_perllibdir/{s/^.*|| //;s/;$//;s/^.//;s/.$//;p;q}' \
<$(command -v autom4te))} -MAutom4te::FileUtils \
 -e 'exit defined $INC{q[Time/HiRes.pm]} ? 0 : 1'; then
   # autom4te uses Time::HiRes

unfortunately we are highly restricted in what we can use in basic
automake/conf shell code (as opposed to in the tests).  Neither the
"command" command nor $(...) syntax can be used.

For the former, I think there's an autoconf/make macro to look up a
program name along PATH? For the latter, good old `...` suffices. (Not
sure there can be newlines in `...` though, even backslashed.)

Would you be up for tweaking the check to use such
least-common-denominator shell stuff?

Ordinarily Perl could not be used either, but since Automake is written
in Perl, I don't see a problem with doing so here. (If the system
doesn't have Perl, Automake won't get far.) Not sure if $PERL is already
defined by the time at which this would be run, but it should be
possible to arrange with an ac prerequisite if needed.

Thanks,
Karl



Re: rhel8 test failure confirmation?

2023-04-05 Thread Karl Berry
jb> The test also guesses the location of autoconf's Perl libraries; 

I'm skeptical that any "guessing" of library locations would be reliable
enough.

jb> a more thorough test would locate the autom4te script and grep it
for the perllibdir that was substituted when autoconf was
configured.

I guess that would work. A simpler option would be to run
  autom4te --version
and if it's "ge" 2.72, the patch is applied.

Unless there is another pretest with the patch, granted, in which case
there would be need to be some finagling. But dealing with pretest
versions will become irrelevant as soon as the release is made.

Although ordinarily we would not want to test version numbers instead of
features, in this particular case I don't see a problem with it. If, for
instance, RH patches an autoconf with a lesser version and so the check
gives the "wrong" answer, the only result is that the sleep will be
1 sec, as long as it's been in every released automake ever. Hence, not
our problem. RH can patch the test too if they want to.

bd> [version number comparison] Best, not easy :). 

Comparing version numbers in complete generality is hard. In the
particular case of autom4te, it doesn't seem problematic to me.

Compare '2.71' to '2.72-beta1-snapshot-12345678' or 
vice versa with the suffixes :). 

I think ge gives the right answer for our particular question ("is
autom4te patched") until autom4te reaches version 10.  I don't think we
need to protect against that, but if you feel the need to do so, not too
hard.

it could be possible to make a loop similar to the one 

I was not imagining running the same sort of loop to somehow try to
infer if autom4te is patched. That doesn't sound right. Determining if
autom4te is patched should be as definitive as possible, not just a
heuristic. And I don't think it's any harder to accomplish that.

I agree, so it would be best to have a workaround or a plan "B" for 
those unpatched, for some reasonable time, at least. What would the 
plan be is the question. 

The workaround I think is (by far) the best is: set the sleep to 1 if
autom4te is not patched. That's it. Thus:
  if () then
;
  else
sleep = 1 second;  # as it always was before
  fi

Only a matter of where to put it... 

I was imagining at the beginning of _AM_FILESYSTEM_TIMESTAMP_RESOLUTION
in m4/sanity.m4. I.e., when computing the sleep to use.

an issue with SOME OTHER TOOL.

Automake and autoconf are not two independent tools. Automake completely
relies on autoconf.

It's not for me to hand down any final pronouncements, but personally I
feel strongly that the tests should not paper over this problem by
changing the way tests work in general. With rm -rf of the cache, or
autoconf -f, etc. That is not what users do, so that's not what the
tests should do, either. Such global changes could have all kinds of
other unknown/undesirable effects on the tests.

In contrast to setting the sleep value "as appropriate", which is what
is/should be already done, so changing the conditions under which it is
set is unlikely to cause any unforeseen additional problems.

My $0.02 FWIW. Unfortunately I still have other projects I must attend
to, so can't dig into the actual code any time soon. But you guys are
doing that perfectly well anyway :). --thanks, karl.



Re: faster tests [was: rhel8 test failure confirmation?]

2023-04-04 Thread Karl Berry
  Is there a way to time individual tests

I don't know. Maybe one of the more experienced automakers here can
advise.

Makes me wonder about having the test infrastructure start each test
by running date to get the start time into the log file. Does anyone see
a problem with doing that?

The mtime of the file should be good enough for the end time, I think?
(Filesystem inaccuracies shouldn't matter for that purpose. :) -k



faster tests [was: rhel8 test failure confirmation?]

2023-04-02 Thread Karl Berry
# A trick to make the test run muuuch faster, by avoiding repeated
# runs of aclocal (one order of magnitude improvement in speed!).
echo 'AC_INIT(x,0) AM_INIT_AUTOMAKE' > configure.ac

Hadn't noticed this before. Maybe you could see what tests are currently
taking the longest to run, and see if the above helps speed them up?

It seems a somewhat weird thing to do, but if it saves enough time, I
guess it would be worth it. --thanks, karl.



Re: rhel8 test failure confirmation?

2023-04-02 Thread Karl Berry
I modified my autom4te using the attached patch, 

Thank you very very much for finding this, Bogdan.
I'm glad that Paul has already installed it in Autoconf.
I can't easily confirm it for myself right now, but I'm hopeful.
(Maybe Frederic or others can try with the development autoconf.)

   What can we do about this?

As for automake: can we (you :) somehow modify the computation of the
sleep value to determine if autom4te can handle the HiRes testing or not
(i.e., has the patch installed)? And then use the longer sleep in
automake testing if needed.

In fact, I wonder about autom4te providing an explicit way to test
whether it's been patched, because I suspect that a functionality test
(run autom4te a bunch of times on a bunch of newly-created files) would
be highly susceptible to wrong results. Checking the autom4te
--version number might be the easiest and best thing to do.

I think it's pretty crucial that the automake (or autoconf) tests not
spuriously fail due to filesystem timing, even for people that have the
"old" (unpatched) autom4te. People will certainly keep using current and
older releases of autoconf for years to come.

It seems to me that using autoconf -f or similar is papering over the
problem, so that the tests are no longer testing the normal behavior.
Which does not sound desirable.

Wdyt? --thanks again, karl.



Re: rhel8 test failure confirmation?

2023-03-03 Thread Karl Berry
Note that 'config.h' is older (4 seconds) than './configure', which 
shouldn't be the case as it should get updated with new values.

Indeed. That is the same sort of thing as I was observing with nodef.
But what (at any level) could be causing that to happen?
Files just aren't getting updated as they should be.

I haven't yet tried older releases of automake to see if their tests
succeed on the systems that are failing now. That's next on my list.

Thanks for looking into it,
Karl



Re: rhel8 test failure confirmation?

2023-03-02 Thread Karl Berry
Hi Frédéric,

While building the trunk directly led to check failures, 

Confirmation is good.

rebuilding the RPM in a mock environment didn't.

Puzzling.

I'll likely spend more time next week to perform more testing. It
may simply be an environment problem: 

I guess it's possible, though I've tried make check in quite a few
different environments by now (latest tools, distro tools, minimal env,
maximal env, different kinds of filesystems, etc.), and the make check
failures have persisted in all cases.

Also, I'd expect an environment issue to cause a test (say, nodef.sh) to
consistently succeed or consistently fail. But what I observe is a
"probabilistic" failure. If I run nodef on its own 10 times, it might
fail 7 times and succeed 3 times, say. Or 6/4 or 8/2 or 5/5 or
whatever. That smells like a caching bug somewhere to me.

But ... another friend tried make check on a freebsd system and *also*
got failures (more or less the same set of failing tests, including
nodef.sh). So evidently it's unlikely to be a low-level kernel/disk
subsystem timing or caching bug.

I'll likely spend more time next week to perform more testing. 

For sure, any digging will be greatly appreciated! --thanks, karl.



Re: rhel8 test failure confirmation?

2023-03-01 Thread Karl Berry
  FAIL: t/remake-aclocal-version-mismatch.sh

Thanks for trying it, Nick.
I'm glad it's not just me.
And I sure wonder wtf is going on :(. -k



rhel8 test failure confirmation?

2023-03-01 Thread Karl Berry
Does anyone have access to an RHEL 8-based machine? Alma Linux, Rocky Linux,
original RHEL, or even (sort of) CentOS 8? It would be nice if someone
could run a make check there (from automake dev).
  git clone -q git://git.savannah.gnu.org/automake.git
  cd automake
  ./bootstrap
  ./configure && make >&cm.out
  make -j8 VERBOSE=1 check keep_testdirs=yes >&ch8.out
(choose whatever -j value you like)

Even in a pristine environment, on a different physical machines, I find
that a few tests fail, usually taken from the list below.  Not always
the same tests fail, but I don't think it's directly related to
parallelism.

In the one I've looked into most, t/nodef.sh, it seems to be about disk
writes not taking effect. That test runs the usual autotool sequence
twice, both times writing to the same file named `output' and then
grepping it, e.g.:
grep 'DEFS.*-DVERSION=\\"UnIqUe' output && exit 1

If I put a sleep 1 between the two autotool invocations, it passes. If I
don't, it fails, because the second grep reads the `output' file written
by the first. Or so it seems. Which is crazy.

I could chalk it up to weird (extremely broken) hard disk behavior on
one machine, but not two different machines with completely dissimilar
hardware (including disks). It seems it must be in the os, in my case
Alma Linux:
$ grep ^VERSION= /etc/os-release
VERSION="8.7 (Stone Smilodon)"
(But I'd be very surprised if it is Alma-specific.)

All the tests pass fine on CentOS 7.

Sigh. --thanks, karl.

Approximate lists of tests that "usually" fail:
FAIL: t/backcompat2.sh
FAIL: t/backcompat3.sh
FAIL: t/get-sysconf.sh
FAIL: t/lex-depend.sh
FAIL: t/nodef.sh
FAIL: t/remake-aclocal-version-mismatch.sh
FAIL: t/subdir-add2-pr46.sh
FAIL: t/testsuite-summary-reference-log.sh



Re: On generating compilation databases

2022-12-18 Thread Karl Berry
Hi Arsen - sorry for the delayed reply. Replying as one of the automake
developers, though I know nothing ...

  src/tangle-main.o \
  `test -f 'src/main.cpp' || echo '$(srcdir)/'`src/main.cpp
... which relies on a shell construct, making it hard to 'deduce' from
the point of a pure make processor (note that I didn't actually go too

The shell construct is something about the package you're compiling,
isn't it? With the minimal amhello, the command I see with make V=1 is
(modulo line breaks):

  gcc -DHAVE_CONFIG_H -I. -I.. -g -O2 -MT main.o -MD -MP -MF 
  .deps/main.Tpo -c -o main.o main.c

without any ||.

However, regardless, for the reasons you describe in your message (stamp
files and the like), merely getting the compilation commands is not
enough. A full package build is not just a sequence of compiles, in
general.


So, as for the general question you raise: I don't know. I have no
background on pretty much anything you mention in your message (LSP,
compile_commands.json, ...). Thus, I have nothing against the idea, but
you or someone else who wants to make it happen will need to implement
it. If Automake needs to do something differently, and patches (that
don't affect its normal operation) can be provided, then that's fine.

Happy hacking,
Karl



Re: Automatic dependency tracking when using non-depcomp tools

2022-11-24 Thread Karl Berry
Can I actually rely on Automake making a verbatim
copy of the include line from Makefile.am to Makefile.im?

As far as I can make out, your logic is exactly correct. Looking at
the bin/automake script, I see:

my $PATH_PATTERN = '(\w|[+/.-])+';
# This will pass through anything not of the prescribed form.
my $INCLUDE_PATTERN = ('^include\s+'
   . '((\$\(top_srcdir\)/' . $PATH_PATTERN . ')'
   . '|(\$\(srcdir\)/' . $PATH_PATTERN . ')'
   . '|([^/\$]' . $PATH_PATTERN . '))\s*(#.*)?' . "\$");

The first two alternatives are the ones mentioned in 
https://www.gnu.org/software/automake/manual/automake.html#Include

The third matches any "plain" filename ("foobar", but not "foo/bar"), I
think? Then, in the code that handles this (approx line 6700ff.),
$(srcdir) is prepended. This is apparently a feature not documented in
the manual -- a plain "include foo" turns into "include
$(srcdir)/foo". I think. Does that seem right to you? Clearly a
desirable feature, but missed in the manual, it seems.

Anyway, for your purposes, as soon you include a / or other
non-$PATH_PATTERN character in the include argument, Automake leaves it
alone and copies it. I can't conceive of changing that now, so yes, I
think it is reasonably safe for you to rely on it.

and the Makefile.am rules therefore now look as follows, for the benefit

Thank you very much for posting all this. --happy hacking, karl.



Re: TAR variable no effect when tar-pax is used

2022-11-22 Thread Karl Berry
Hi Jan,

But when you set `tar_pax` in AM_INIT_AUTOMAKE, this comes out:

I surmise that's left over from when the pax support was added.
I don't see any reason not to use $(TAR) there now.

It presumably shouldn't be too hard to fix. If you can devise a patch
(and ideally test case), that would be great. Else, it's on my list
.. someday :( ...

Also, ${AMTAR} seems totally unused. Why is it even there?

As far as I can see, it is a relic of when AMTAR was used.
It seems it was added and then later removed in 1999:

1999-06-01  Alexandre Oliva  

...
* m4/init.m4: Remove AMTAR-related stuff.
...

As you say, I see no use of it anywhere in the current source tree,
apart from its being defined in m4/tar.m4.  As far as I can see, can be
removed too. --thanks, karl.



Re: Automatic dependency tracking when using non-depcomp tools

2022-11-22 Thread Karl Berry
Hi Hans - first, congratulations on getting this to work at all.
I don't recall anyone else undertaking this. I'm afraid I don't have any
particular insights, but just so you know someone read your mail:

  Question: Is it OK for me to hook into ./$(DEPDIR)/ at all?
I could use just some file in $(builddir), after all.

I don't see a specific problem with using $(DEPDIR), yet if you can use
your own directory in builddir, that seems safer. Just in principle.

  Question: Is *.cdep a good name? I want to avoid name collisions.

I don't know of anything else that uses .cdep (not that I would,
necessarily), and have nothing against it myself. OTOH, using xml seems
more unusual than targeting C, so maybe .xmldep or even .xmlcdep, unless
the long extension is irritating in some way.

  Question: Is it ok for me to use $(am__mv)?

It seems no am__ variables are documented. So, although in practice I
expect it would be fine, yet since it is merely "mv -f", in your place I
would be tempted to define my own variable for it.

I have one other comment, about the dummy file that is created:

provide an explicit recipe to create a dummy dep file to

In a relatively recent change (not in 1.16.5), Automake's dep setup was
changed to create an empty file instead of one with the line "# dummy".
In large enough projects, this turned out to make a noticeable speed
difference (having to create a regular file and not just an inode).
I'll append the ChangeLog entry.

Happy hacking,
Karl

2022-05-23  Jan Engelhardt  

deps: create empty file instead of dummy file.

This change is per an automake thread, see both before and after:
https://lists.gnu.org/archive/html/automake/2022-05/msg6.html

* lib/am/depend.am ($(am__depfiles_remade)): create empty files
for dependencies instead of files with a line '# dummy'. Turns out
this is noticeably faster.
* THANKS: update Jan's email address.
* NEWS: mention this.




Re: 3-rd party aux files.

2022-11-06 Thread Karl Berry
automake -af --libdir=$HOME/aux
it breaks automake (it can't find other files, e.g. am/header-vars.am).
So, my question: Is there any way to provide 3-rd party aux files?

It seems not :(.

If you, or anyone, can draft a patch, that would be great. As can be
seen by how long it took me to send this non-reply (sorry), my automake
time is woefully scarce at the moment :(.

Meanwhile, I have resent your message to bug-automake so it will become
more trackable. --thanks for writing, karl.



Re: make check(s) pre-release problems

2022-10-11 Thread Karl Berry
I actually wonder if your sudden "parallelism" failure could be somehow
linked to an update of bash, similar to mine ?

Good idea, but my bash hasn't changed ... I don't doubt there would be
plenty more failures with the new SHLVL change (any such change seems
like a terrible idea, but oh well). Well, more fun in the future. -k



Re: make check(s) pre-release problems

2022-10-06 Thread Karl Berry
No errors on RHEL7+autoconf2.71

Puzzling. Can you easily try RHEL8 or one of its derivatives?
It surprises me that that is the culprit, but it seems possible.

I'm using autoconf-2.71, make-4.3, etc., compiled from source, but am
using the OS-provided coreutils. I think I'll try compiling that from
source.

Thanks to everyone for the suggestions and help. -k




Re: make check(s) pre-release problems

2022-10-05 Thread Karl Berry
What version of GNU make are you using?

I've been using make 4.3 since its release in 2020. No changes, no
prereleases.  I'm afraid the problem, whatever it is, is not that simple :(.

What troubles me most is that there's no obvious way to debug any test
failure involving parallelism, since they go away with serial execution.
Any ideas about how to determine what is going wrong in the parallel
make?  Any way to make parallel failures more reproducible?

Right now, all I know is "some random test(s) fail(s)". Not helpful. The
test logs show the set -x execution of the test, so the actual command
that fails can be seen.  I have keep_testdirs=yes, of course, but then
running the command by hand in the shell after the failure often does
not reproduce the problem.

Something else is going on, but my imagination about what that might be
has failed so far :(.  Argh.  --thanks, karl.



make check(s) pre-release problems

2022-10-04 Thread Karl Berry
With Zack's latest Python fixes, I was hoping to move towards an
Automake release, but I find myself stymied by apparently random and
unreproducible test failures. I haven't exhausted every conceivable
avenue yet, but I thought I would write in hopes that others (Zack, past
Automake developers, anyone else ...) could give it a try, and/or have
some insights.

For me, running a parallel make check (with or without parallelizing the
"internal" makes), or make distcheck, fails some tests, e.g., nodef,
nodef2, testsuite-summary-reference-log. The exact tests that fail
changes from run to run. Running the tests on their own succeeds. Ok, so
it's something in the parallelism. But why? And how to debug?

Nothing has changed in the tests. Nothing has changed in the automake
infrastructure. Everything worked for me a few weeks ago. Furthermore,
Jim ran make check with much more parallelism than my machine can
muster, and everything succeeded for him. That was with:
  make check TESTSUITEFLAGS=-j20

So what the heck?

Perhaps easier to debug: there are two targets to be run before making a
release, check-no-trailing-backslash-in-recipes and check-cc-no-c-o,
to try to ensure no reversion wrt these features. A special shell and
compiler are configured, respectively (shell scripts that check the
behavior).

These always worked before. But now, Jim gets hundreds of failures with
the first (didn't have time to try the second). I get a couple, with
both, instead of hundreds. Again the failing tests vary. In this case,
they fail for me even without parallelism.

So what the heck x 2?

Any ideas, directions, fixes, greatly appreciated. --thanks, karl.



Re: python debugging on trunk

2022-09-28 Thread Karl Berry
The appended patch should address both issues.  

Thanks Zack!! I installed the changes (separately).

Note that I have only tested it with Python 2.7 and 3.6.  It _may_
not be correct for Python in the 3.0--3.3 (inclusive) range

I didn't test any of those versions either. Certainly your change is a
vast improvement in any case.

The test suite now passes on my Alma Linux 8 system (I had one unrelated
failure which I could now fix). For the record, this has Python 2.7.18
and 3.9.7. Thanks again! -k



python debugging on trunk

2022-09-26 Thread Karl Berry
Is anyone up for debugging some Python-related test failures on
RHEL-based systems?

Mike Vapier from gentoo made many improvements to the Python support.
(Mike, if you're still out there, would love to hear back.)

Unfortunately, the end result is that 13 tests (listed below) now fail
for me on Alma Linux 8 (and, presumably, Rocky 8; and I believe CentOS 7)
with the trunk automake.

My appetite for (and experience in) debugging Python problems is pretty
low. But we can't make another release until this is fixed. So, I wonder
if there's anyone else who's interested in figuring this out. I can
probably figure out access to a system where it fails, if that's a problem.

I have a suspicion the problem is that on RHEL systems, "python" invokes
"python2" (because that's what the Python maintainers recommend, as I
understand it), but the tests are assuming it invokes "python3".
Knowing Python, I feel pretty sure that there will be many complications
in dealing with this.

Thanks,
Karl

FAIL: t/instmany-python.sh
FAIL: t/nobase-python.sh
FAIL: t/py-compile-basic.sh
FAIL: t/py-compile-basedir.sh
FAIL: t/py-compile-destdir.sh
FAIL: t/py-compile-option-terminate.sh
FAIL: t/python3.sh
FAIL: t/python12.sh
FAIL: t/python-prefix.sh
FAIL: t/python-pr10995.sh
FAIL: t/python-vars.sh
FAIL: t/subobj-pr13928-more-langs.sh

For example, test-suite.log shows this for the nobase-python.sh failure:
..
Byte-compiling python modules...
one.py Traceback (most recent call last):
  File "", line 13, in 
AttributeError: 'module' object has no attribute 'implementation'
make: *** [Makefile:304: install-myPYTHON] Error 1



Re: man_MANS install locations

2022-08-31 Thread Karl Berry
Hi Jan,

As for GNU/Linux, what was the rationale to only permit [0-9ln]?

No idea. Maybe just didn't think about "m", or maybe it didn't exist at
that time? Jim, Paul, anyone?

Should automake be relaxed? 

I see no harm in allowing more (any) letters, if that's what you mean.

When running automake on Solaris, placing svcadm.1m into man1 rather
than man1m seems outright wrong.

But is Automake's purpose to reproduce platform-specific behavior, or to
have consistent behavior across platforms?  I think the latter.

I guess a new option to install *.1m in man1m/, etc., would be ok, if
you want it. If you or anyone can provide a patch, that would be
great. Unfortunately I doubt it's anything I will ever implement myself.

Should the rpmlint check be adjusted to cater to the GNU FHS?

I guess that's a question for the rpmlint people, whoever they are.
I don't see that Automake's default behavior is going to change.

Also, GNU (as an organization) never had anything to do with the FHS,
so far as I know. I don't think the GNU coding standards/maintainer
information have anything to say about this topic ... --thanks, karl.



Re: How to speed up 'automake'

2022-05-23 Thread Karl Berry
I was going to bisect but if it doesn't fail for me in the first place... :(

Thanks. Indeed, reconfiguring etc. got rid of those errors.

Now a bunch (12) of the Python tests are failing for me, presumably
because of previous Python changes not playing nicely with my older
Python version (2.7.5 on CentOS 7). Sigh. Not looking forward to
figuring that out.

Anyway, that's surely independent of empty dependency files,
so I pushed Jan's change. Thanks! --karl



Re: How to speed up 'automake'

2022-05-21 Thread Karl Berry
Unrelated to Jan's depend.am change, but it turns out that a previous
change broke make distcheck (768 failures). I don't feel right about
committing anything else until that is fixed.

Error below. Jim (or anyone), can you easily advise? I haven't delved
into this part of things before. (Not sure how many of the failures are
due to these errors, but I suspect most.) --thanks,karl.

FAIL: contrib/t/multilib
..
configure.ac:4: warning: _AM_PROG_RM_F is m4_require'd but not m4_defun'd
aclocal.m4:139: AM_INIT_AUTOMAKE is expanded from...
configure.ac:4: the top level
configure.ac:4: warning: _AM_PROG_XARGS_N is m4_require'd but not m4_defun'd
aclocal.m4:139: AM_INIT_AUTOMAKE is expanded from...
configure.ac:4: the top level
configure:2411: error: possibly undefined macro: _AM_PROG_RM_F
  If this token and others are legitimate, please use m4_pattern_allow.
  See the Autoconf documentation.
configure:2412: error: possibly undefined macro: _AM_PROG_XARGS_N



Re: How to speed up 'automake'

2022-05-21 Thread Karl Berry
Fancy doing it? Jim agreed :)

Yeah, sorry. Other priority things have intervened :(.

I have a mild hope of getting to it by tomorrow.
If someone else wants to make the commit, certainly fine by me :). -k



Re: How to speed up 'automake'

2022-05-03 Thread Karl Berry
I see no reason why mv would be so crucial.

Hmm, I guess you're right. Thanks for the analysis.

The purpose of the stamp files is to avoid partial files being written
(and screwing up future makes), but if the file is zero bytes, it seems
that problem cannot happen.

Jim, do you agree? I'll install the change if yes. --thanks, karl.



Re: How to speed up 'automake'

2022-05-02 Thread Karl Berry
-   @echo '# dummy' >$@-t && $(am__mv) $@-t $@
+   @: >>$@

1) does it actually speed anything up?
2) without the mv I fear we are no longer noticing write failure. -k




Re: How to speed up 'automake'

2022-05-01 Thread Karl Berry
automake --verbose --warnings=all --add-missing --copy

Since you're talking about cron, I'm guessing the terminal output is
being redirected to a file? Because if it's going to an actual tty, that
can consume a surprising amount of time.

Is there a way to speed 'automake' up?

Only real idea I have is to run automake under the Perl profiler and see
what comes up.  As in, install Devel::NYTProf from CPAN and then run
  perl -d:NYTProf /path/to/automake/executable

Best,
Karl



Re: Wrong order of preprocessor and compiler flags

2022-03-27 Thread Karl Berry
It seems the basic inconsistency is whether CPPFLAGS is considered a
"user variable" or not. In earlier eras, it wasn't, but from your msg,
I gather it is now.

The GNU standards node about it, that you mentioned,
  https://www.gnu.org/prep/standards/standards.html#Command-Variables
does not clearly state it one way or another. But its example shows
CFLAGS after CPPFLAGS.

Thus I think a prior step is to write bug-standa...@gnu.org and suggest
clarifying the status of CPPFLAGS, its relationship to CFLAGS, etc.

We could consider changing automake to follow autoconf even if the GCS
is not changed, but it would be better if the GCS were clear.

2. Use AM_CFLAGS CFLAGS AM_CPPFLAGS CPPFLAGS. This is more aligned with 
current flags grouping, but CFLAGS will not override definitions in 
AM_CPPFLAGS (less aligned with GNU Standards).

It seems wrong (and disastrously backwards-incompatible) to me for
CFLAGS not to override AM_everything. Your option 1:

1. Use AM_CFLAGS AM_CPPFLAGS CFLAGS CPPFLAGS. I think this is the best 
option. As required by GNU Standards, CFLAGS still override all 
upstream-defined flags.

seems like the best option to me too. --thanks, karl.



Re: multiple online manual versions

2022-01-30 Thread Karl Berry
> https://www.gnu.org/software/automake/manual/index-full.html

It's better, but how about a non-blank line?

(does  obey table cells? I'm never sure.)

Obviously we're getting down to trivialities, feel free to ignore :).

so i guess once gnulib merges my update, 

If nothing happens soon, let me know and I can commit that update.
(I'd do it now but some kind of network problem, apparently at the FSF
end ...) --thanks, karl.



Re: multiple online manual versions

2022-01-29 Thread Karl Berry
Hi Mike,

https://www.gnu.org/software/automake/manual/index-full.html

It looks nice, but the plethora of versions becomes rather an
undifferentiated mass. Maybe make each major release its own
, as in:

Automake 1.16 releases:

1.16* versions


Automake 1.15 releases:

1.15* versions


Just to break it up a little.

Also, some simple intro text seems desirable (edit as you see fit):

 Below are links to the manual for all released versions
 of GNU Automake.
 The current manual
 is also available separately.

And maybe an outro too:

 Above are links to the manual for all released versions
 of GNU Automake.

Wdyt?

i actually regenerated them from scratch rather than extract them 

Sounds good.

The copyright at the bottom says 2020. I don't know if that means
gendocs.sh needs updating, or the template, or something on the web
site, but something somewhere should be changed to 2022. Can you check?
--thanks, karl.



Re: multiple online manual versions

2022-01-28 Thread Karl Berry
i was planning on the full index being maintained here:
https://www.gnu.org/software/automake/manual/index-full.html

Sounds good.

>>See the [full version index] for other versions of the manual.

Good. Maybe something like:
>>See the [full version index] for the manual for older releases of Automake.

(Since it's not just "versions of the manual", but "versions of the
software". :)

Not sure. Will be easier to think about seeing the pages

actually differ and setup symlinks in case the manual didn't change
between point releases.

I doubt there are significant changes to the manual for most
point releases, but still, I think it would be confusing to ask for the
manual for 1.16.2 and get the manual for 1.16.1 instead. I think it'd be
best to just do the full thing for any versions published.
--thanks for all, karl.



Re: multiple online manual versions

2022-01-27 Thread Karl Berry
per your request, the default is unchanged.  

I understand (and thanks), but my question was about the "table"
(whether it's actually a  or not):

* (Feb 2018) GNU Automake 1.16 (HTML PDF)
* (Dec 2014) GNU Automake 1.15 (HTML PDF)
* (Jun 2013) GNU Automake 1.14 (HTML PDF)

On what page were you going to put this table of all available manual
versions?

BTW I still think it's more useful to have the manual for the latest
1.xx.y release of each 1.xx than the original. Why propagate known-old
information in preference to newer?

tbh the only reason i'd prefer a table is for the column alignment.

Sure. Fine by me. However it works out best. Thanks. -k



Re: multiple online manual versions

2022-01-26 Thread Karl Berry
  * i'm assuming that we don't want to modify lib/gendocs_template
since it's synced with upstream gnulib

For sure.

so the default manual/ landing page & manual will be unchanged from today
other than having a link to the full versioned index

What url/filename are you thinking for the "full versioned index"?

 GNU Automake 1.16
 ... vs. ...
 Feb 2018
 GNU Automake 1.16
 HTML
 PDF

I doubt the old manuals will get a tremendous amount of use, so one line
per version seems sufficient to me, vs. a table. But I have no objection
either way.

OTOH, the date and the direct link to the html seem like the most
interesting information (more so than the PDF). Could be something like:

GNU Automake 1.16
- Feb 2018
- HTML


But I don't feel strongly about it. Whatever seems sensible. It might
take seeing the page with a few versions actually done before it's clear
what's best. --thanks, karl.



Re: community long term x.y release branches

2022-01-26 Thread Karl Berry
i would like to help coordinate these downstream distros so they don't have
to keep all repeating the same work.  basically:

Sounds sensible to me.

* commits are on a volunteer/request basis -- there is no
  expectation that people working on master/whatever think about
  these older branches

I like that in particular :).

* maybe we cut a new release once a year from those branches if any
  changes were actually made to them.  i would like this, but even
  if we do all the other things above and omit this, i'd still be happy.

Sounds reasonable, not that I'd be the one making such releases.
I'm guessing Jim would want to push making such "back releases" to you ...

so since the last release is still 1.16.z, the newest such branch
would be refs/heads/release/1.15 and it would start life at v1.15.1.

Fine by me. 

Jim, can you chime in? As you know, I have little clue about git
development conventions, so can't make any sensible comments at that
level.

BTW, the next release will surely be 1.17. Some of the stuff I already
did in the 1.16.x releases really should have provoked 1.17, but I just
didn't adhere strictly to the rules (because I didn't know about
them). --thanks, karl.




Re: multiple online manual versions

2022-01-19 Thread Karl Berry
* the current page, but with an entry/link like "For older manuals,
  please see this index."

Agreed this is preferable. Not a fan of the gcc index page.

changes to the manual the rename or reorder chapters, we're breaking
those historical links.

Reordering isn't a problem; that doesn't break links. Renaming nodes is
what breaks links. And the answer is, 1) don't do it, and 2) if you feel
you simply must, leave an @anchor behind, and then existing links will
not be broken.  Anyway, the manual hardly changes nowadays, so it's not
an issue in practice.

To me, the redirection to a versioned url a la autoconf often leads to
the wrong behavior in the other direction: typically people want to link
or refer to the current version of node Foobar (whatever version it
might be), but it's too much trouble to do when you end up getting
redirected. So it doesn't happen, and then X years now people still
think autoconf-2.68, for example, is current because that's what the
link say. (Rather like bugs.gnu.org/ being preferred, but since that
redirects, hardly anyone uses it and it's just manual labor to do
so. But I digress.)


any other manual/ access would redirect to the latest version.
that way we don't break links already out in the wild.

Agreed we certainly must not break existing links. But I'd rather have a
copy as the unversioned/canonical page than forced redirection in all
cases.  Both canonical and versioned urls are useful.

https://www.gnu.org/software/automake/manual/1.15/
https://www.gnu.org/software/automake/manual/1.16/
(or if you prefer, 1.15.x and such)

If not publishing all versions, it would seem better to me to publish
the latest version of the manual for any given 1.x, not the first
version. I.e., 1.13.4, 1.14.1, 1.15.1, 1.16.5. I don't see that there's
anything especially magical about the "non-dot" releases like 1.15,
although I have no objection to publishing those too. --thanks, karl.





Re: adding a command line option for ACLOCAL_PATH-type search paths

2022-01-19 Thread Karl Berry
Hi Mike,

the ACLOCAL_PATH functionality is useful (adding search dirs after -I),
but a bit unwieldy as an env var.  any reason we can't add a command line
option for this ?  

Seems like a fine idea to me.

call it --aclocal-path ?  or --extra-system-acdir ?

Reading the doc, my hunch is to call it --aclocal-path and make the
semantics of its argument be exactly the same as $ACLOCAL_PATH. Wdyt?

But if both are set, should the --aclocal-path argument replace
$ACLOCAL_PATH, or augment it (earlier of course)? I'm not sure.


By the way, would it be feasible to have --help show the actual values
for --automake-acdir and --system-acdir? It is far from obvious.
--thanks, karl.



Re: multiple online manual versions

2022-01-18 Thread Karl Berry
Having multiple versions of the manual online sounds all to the good to
me.  As long as it's being done at all, I wouldn't hesitate to put up
the manuals for every release, not just the major releases. For 1.16.x,
I'm afraid I rather broke the previous rules for major releases anyway.

  https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-/

What I don't like about this approach is that it redirects from the
generic url to the versioned url. Also, the /savannah-checkouts/ seems
pretty ugly.

I think it would be cleaner to create and commit
/automake/manual-/ for whatever s desired.
Could probably get them out of CVS.

Then automake/manual/ could remain unchanged, as a copy of the
current . FWIW ... --best, karl.



Re: rm -f # no more args failure?

2021-12-13 Thread Karl Berry
bf> I thought that systems deriving from OpenSolaris (e.g. Illumos, 
...
However, testing in an empty directory on a system without the 
upated ksh93 this looks ok to me:

Bob, what you wrote before (approx. a year ago) is here:
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=42529

Ending with:
  Behavior of ksh93 (which has a bug) appears to depend on the PATH 
  setting so it will behave differently if /usr/xpg4/bin or 
  /usr/xpg6/bin appear in the path.

Maybe that is why you didn't see the behavior just now?

In any case, if a broken "rm -f" still exists in a free system as late
as last year, it seems premature to me to force this change now.

I grant Moritz's point that the ubiquitious "test -z ... || rm ..."
adds noise when trying to understand Automake recipes, but IMHO that is
not enough reason to induce this incompatibility.

mf> collected here as blockers:
https://debbugs.gnu.org/10828

Thanks. No one active (i.e., me) was aware this was being done, so I
didn't add Bob's report as a blocker when it came in.

I grepped the bug archive for the error message ("Your.*rm.*program")
and didn't see anything other than Bob's, but that could have missed
some.

there's only 3 reports filed from the last 10 years.

Which I see are:

May 2016 - MKS Platform component 9.X - bugs.gnu.org/23563
Dec 2015 - Unixware 7.1.4 - bugs.gnu.org/22074
Jan 2015 - Qnx 6.3.2 - bugs.gnu.org/19692

Looks like Unixware 7.1.4 may still be current, but since there are no
later reports, I guess they're not really using Automake, or set the
necessary envvar, or something. --karl



rm -f # no more args failure?

2021-12-12 Thread Karl Berry
Does anyone here use or know of an active system where plain
  rm -f
with no arguments fails? I mean, exits with bad status?

We are considering changing Automake to assume this works,
although we'd provide for a workaround just in case, something like
  make RM_F="rm -f nosuchfile"

But if there are still active systems where it's a problem,
we will probably make no change.

Thanks,
Karl



Re: automake 1.16.4 and new PYTHON_PREFIX

2021-09-23 Thread Karl Berry
If anyone who weighed in on the Python prefix stuff (or didn't, for that
matter) has a chance to try the new pretest at

  https://meyering.net/automake/automake-1.16g.tar.xz

that'd be great. It'd be nice not to have to do another patch-up release.

Thanks,
Karl



Re: generated lex/yacc sources?

2021-09-21 Thread Karl Berry
Hi Nick, Jan, all,

nick> I think all that should be needed is to list the .l (or .y) file in
_SOURCES normally

Thanks much. I was thinking I should avoid that since the .[ly] are not
ultimate sources, but if it works, fine with me.

jan>
BUILT_SOURCES = foo.y
foo.y: foo.cweb
somecommands

That would be sensible, but I failed to mention the problem with
BUILT_SOURCES (sorry): the manual says it only works with the general
targets (all, check, install, install-exec). I need something that works
with individual targets.

I'll give the _SOURCES stuff a whirl. Thanks again. -k




Re: [platform-testers] automake-1.16g snapshot

2021-09-21 Thread Karl Berry
Redoing the tests with 1.16g I now have 9 failed tests, the
testsuite.log is attached.

Thanks much for giving it a whirl right away.
But are those failures anything new? 

FAIL: t/fn99subdir
FAIL: t/lex-clean-cxx
FAIL: t/lex-depend-cxx
FAIL: t/test-extensions-empty
FAIL: t/subpkg
FAIL: t/subpkg2
FAIL: t/subpkg3
FAIL: t/subpkg-yacc
FAIL: t/vala-mix2

They don't look like anything that was touched in these small changes
since 1.16.4; the only real purpose for the release is to get back to
the historical Python directory behavior.

At least the lex/yacc stuff hasn't worked with Solaris tools for quite a
while. There are a number of open bugs relating to Solaris at
  https://debbugs.gnu.org/cgi/pkgreport.cgi?package=automake#_0_4_3 
but no one has come forward to look into them. (They will never make it
to the top of my list to work on, sorry to say.)

Thanks again,
Karl



generated lex/yacc sources?

2021-09-21 Thread Karl Berry
Suppose I want to generate a lex or yacc input file from another file,
e.g., a CWEB literate program. Is there a way to tell Automake about
this so that the ultimately-generated parser/lexer [.ch] files are saved
in srcdir, as happens when [.ly] are direct sources, listed in *_SOURCES?

I should know the answer to this, but sadly, I don't. I couldn't find
any hints in the manual or sources or online, although that probably
only indicates insufficient searching.

Thanks for any clues. --karl



Re: automake 1.16.4 and new PYTHON_PREFIX

2021-09-19 Thread Karl Berry
Regarding PYTHON_PREFIX setting in automake, I've pushed a change that
(I hope) reverts to the previous behavior of using the usual GNU prefix
variables by default. It's attached.

The new configure option --with-python-sys-prefix yields the
the 1.16.4 behavior of using the sys.* Python values.

The --with-python_[exec_]prefix options are still present and
unchanged, setting the prefixes explicitly.

It would be really fantastic if there could be some testing of this by
other people before we push out another problematic release.

Jim, could you roll a test release please? --thanks, karl.

P.S. Oops, I see the brief description in the change is only supposed to
be one line. Well, too bad, not going to adjust now.

P.P.S. Although the diff shows nearly every line being changed, in fact
most of the changes are about indentation. Unfortunately. But separating
the formatting changes from the real changes proved too problematic and
time-consuming, and I wanted to end up with a correctly-formatted source
(as best I could manage). Sorry.



ampy.diff
Description: Binary data


Re: [PATCH v2] automake: add install dep on install-libLTLIBRARIES to all targets

2021-09-10 Thread Karl Berry
Hi Jan and all.

depending on install-libLTLIBRARIES not just for bin_PROGRAMS, but
all PROGRAMS and LTLIBRARIES.

I installed your patch (for the record: the thread starts at
https://lists.gnu.org/archive/html/automake/2021-08/msg00016.html).
Thanks much.

(Now, on another and unrelated front ... time to see if I can restore
the previous Python dir behavior, retain the new setting with an option,
and not break anything new. I sure wish there was someone out there who
wanted to devote some real time to Automake maintenance.)

Happy hacking,
Karl



Re: [PATCH v2] automake: add install dep on install-libLTLIBRARIES to all targets

2021-08-29 Thread Karl Berry
Subject: [PATCH v2] automake: add install dep on install-libLTLIBRARIES to 
all
 targets

Thanks. Have you run make check? (In practice, make -j12 check or similar.)
Always good to make sure nothing old breaks ... -k



  1   2   >