Hi Werner,

On Sat, Oct 11 2014 at 09:13:16 AM, Werner LEMBERG <w...@gnu.org> wrote:
> Folks,
>
>
> I think I've now done everything to make a new release – essentially,
> it was a matter of continued comparation between the last tarball and
> the current git repository.  There are surprisingly few changes
> (expect Bernd's clean-up of copyright issues), so I don't expect large
> surprises.
>
> After Bernd's commits to fix the IPC issue, I can do `make dist' and
> distribute it.  Before doing this, however, I want to wait a few days
> so that you can test and check whether everything's fine.  Please do so!
>

'make dist' does not work on my PC.  I bump into the following error
when it tries to do 'make distclean' in src/libs/gnulib:

for d in src/libs/gnulib; do \
  (cd tmp/$d; \
   if test -f Makefile; then \
     make distclean; \
   else \
     make -f /home/bertrand/test/$d/Makefile distcleanclean; \
   fi; \
   rm -rf autom4te.cache); \
done
make[1]: Entering directory '/home/bertrand/test/tmp/src/libs/gnulib'
Making distclean in m4
make[2]: Entering directory '/home/bertrand/test/tmp/src/libs/gnulib/m4'
test -z "" || rm -f 
test . = "." || test -z "" || rm -f 
rm -f Makefile
make[2]: Leaving directory '/home/bertrand/test/tmp/src/libs/gnulib/m4'
Making distclean in lib
make[2]: Entering directory '/home/bertrand/test/tmp/src/libs/gnulib/lib'
Makefile:557: .deps/localcharset.Po: No such file or directory
Makefile:558: .deps/wctype-h.Po: No such file or directory
Makefile:559: .deps/wcwidth.Po: No such file or directory
Makefile:560: uniwidth/.deps/width.Po: No such file or directory
make[2]: *** No rule to make target 'uniwidth/.deps/width.Po'.  Stop.


That's because when we loop into DESTDIRS to copy with mkinstalldirs all
the directories into the `tmp' directory (the directory used to prepare
the tarball) the .deps directories in gnulib/lib and gnulib/lib/uniwidth
are not copied, causing `make distclean' to fail.  The tarball is
generated but as gnulib was not properly cleaned, the Makefile are still
present in src/libs/gnulib and src/libs/gnulib/lib, causing the build
from the the tarball to fail.

For some reasons that I don't understand, when I try `make dist'
serveral times in a row (possibily between some `make'), sometimes the
autotools and then `configure' are invoked again when `make distclean'
is called into tmp/src/libs/gnulib, causing the .deps to be
recreated. Maybe it's always the case on your environment as I saw in
the last official tarball that src/libs/gnulib/Makefile.in was generated
from Automake 1.12.5 while the same Makefile.in in the git repo was
generated from Automake 1.12.1.

Here is a patch that calls `config.status' before `make distclean' in
tmp/src/libs/gnulib to force the creation of .deps directories, which
fixes the problem.  

Also, it fixes the bogus line in the else condition (distcleanclean):

for d in $(GNULIBDIRS); do \
        (cd tmp/$$d; \
         if test -f Makefile; then \
           $(MAKE) distclean; \
         else \
           $(MAKE) -f $(top_builddir)/$$d/Makefile distcleanclean; \
         fi; \
[...]

However I dont' understand the purpose of calling
$(top_builddir)/$$d/Makefile, we were trying to clean gnulib in the
`tmp' directory that will be eventually the tarball directory, calling
`make distclean' in $(top_builddir)/src/libs/gnulib will possibly clean
gnulib in the source tree, not in the `tmp' directory.

Regards,

diff --git a/Makefile.in b/Makefile.in
index b1e51b6..139d7cb 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -914,10 +914,13 @@ dist:
 	done
 	for d in $(GNULIBDIRS); do \
 	  (cd tmp/$$d; \
+	   if test -f config.status; then \
+	     ./config.status; \
+	   fi; \
 	   if test -f Makefile; then \
 	     $(MAKE) distclean; \
 	   else \
-	     $(MAKE) -f $(top_builddir)/$$d/Makefile distcleanclean; \
+	     $(MAKE) -f $(top_builddir)/$$d/Makefile distclean; \
 	   fi; \
 	   rm -rf autom4te.cache); \
 	done
--
Bertrand Garrigues

Reply via email to