Re: [PATCH]
Iain Nicol wrote: Gnulib's file build-aux/git-version-gen contains copy-pastable usage instructions. It seems to me that these instructions are missing a line. As a result, for example, ``make distcheck'' in a clone of GNU Patch's repo fails with the following: echo 2.6.1.143-5862 ../.version-t mv ../.version-t ../.version /bin/bash: ../.version-t: Permission denied I notice that a few GNU projects (gcal, Guile, M4) explicitly add the file ``.version'' to EXTRA_DIST. This prevents the above distcheck failure. At first I wasn't sure if this was the right solution, but then I noticed git-version-gen explicitly says: # .version - present in a checked-out repository and in a distribution # tarball. Adding .version to EXTRA_DIST, unsurprisingly, seems to be required for the latter half of that sentence to be true. For lazy people like me who want copy pasted code to Just Work, please consider making the need for this explicit in the instructions, like in the attached patch. Assuming you agree this is the right solution, that is. ... Thanks for the patch. I've adjusted the log and will push the following later today. The only change I considered was to use += in place of =. But that would have to affect BUILT_SOURCES, too, and would then require prior definition of those two variables. Not sure it's worth it. It's only a suggestion, after all. From 835a226d823da6dacd67b77165d5009f5382daad Mon Sep 17 00:00:00 2001 From: Iain Nicol i...@iainnicol.com Date: Sun, 31 Jul 2011 13:30:59 +0100 Subject: [PATCH] git-version-gen: document that EXTRA_DIST must include .version * build-aux/git-version-gen: In the how-to-use comment, document that EXTRA_DIST must include .version. Otherwise, make distcheck will fail when run from an unpacked distribution tarball. --- ChangeLog |7 +++ build-aux/git-version-gen |7 --- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2160e20..55577f0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2011-07-31 Iain Nicol i...@thenicols.net + + git-version-gen: document that EXTRA_DIST must include .version + * build-aux/git-version-gen: In the how-to-use comment, document + that EXTRA_DIST must include .version. Otherwise, make distcheck + will fail when run from an unpacked distribution tarball. + 2011-07-25 Jim Meyering meyer...@redhat.com tests: test-update-copyright.sh: remove unnecessary rm commands diff --git a/build-aux/git-version-gen b/build-aux/git-version-gen index 686f703..6d71446 100755 --- a/build-aux/git-version-gen +++ b/build-aux/git-version-gen @@ -1,6 +1,6 @@ #!/bin/sh # Print a version string. -scriptversion=2011-02-19.19; # UTC +scriptversion=2011-07-31.12; # UTC # Copyright (C) 2007-2011 Free Software Foundation, Inc. # @@ -57,9 +57,10 @@ scriptversion=2011-02-19.19; # UTC # [bug-project@example]) # # Then use the following lines in your Makefile.am, so that .version -# will be present for dependencies, and so that .tarball-version will -# exist in distribution tarballs. +# will be present for dependencies, and so that .version and +# .tarball-version will exist in distribution tarballs. # +# EXTRA_DIST = $(top_srcdir)/.version # BUILT_SOURCES = $(top_srcdir)/.version # $(top_srcdir)/.version: # echo $(VERSION) $@-t mv $@-t $@ -- 1.7.6.347.g4db0d
REPLACE_TOWLOWER='1'
why is tolower replaced on linux? -- Sam Steingold (http://sds.podval.org/) on CentOS release 5.6 (Final) X 11.0.60900031 http://iris.org.il http://palestinefacts.org http://honestreporting.com http://thereligionofpeace.com http://www.PetitionOnline.com/tap12009/ Why use Windows, when there are Doors?
Re: REPLACE_TOWLOWER='1'
On 08/01/2011 08:56 AM, Sam Steingold wrote: why is tolower replaced on linux? Did you mean towlower rather than tolower? What does config.log say? Without knowing why the configure test failed, it's hard to say if you might have stumbled over a bug in the wctype_h.m4 file. -- Eric Blake ebl...@redhat.com+1-801-349-2682 Libvirt virtualization library http://libvirt.org
Re: top_srcdir in Makefile.am Makefile.in
* Bruno Haible oe...@pyvfc.bet [2011-07-30 02:20:08 +0200]: Sam Steingold wrote: clisp directory structure is: clisp - top level; hand-written configure script (ask Bruno) clisp/src - most sources, configure.in, configure, aclocal.m4 clisp/src/gllib, clisp/src/glm4 - imported from gnulib clisp/src/build-aux - imported from many places, mostly gnulib So, in clisp, $(top_srcdir) ought to be clisp/src. thanks. You can get in trouble here if you use fake configure.ac / configure file that are present at the moment 'automake' is run but are removed afterwards. I get the exact same files if I run aclocal on clisp/src/configure.ac as on clisp/configure.ac. $ grep top_srcdir src/gllib/Makefile.am appears to indicate that top_srcdir should point to clisp. Maybe this is related to this hack in clisp/Makefile.devel: src/gllib/Makefile.in : src/gllib/Makefile.am src/configure.in src/aclocal.m4 cd src automake gllib/Makefile \ sed -i -e 's,$$(top_srcdir)/src/build-aux,$$(CLISP_LIBDIR)/build-aux,' \ -e 's,$$(top_srcdir)/$$cl_cv_clisp_libdir,$$(CLISP_LIBDIR),' \ gllib/Makefile.in you are out of date, the current hack is src/gllib/Makefile.in : src/gllib/Makefile.am src/configure.in src/aclocal.m4 cd src automake --gnits gllib/Makefile \ sed -i -e 's,$$(top_srcdir)/src/build-aux,$$(top_srcdir)/build-aux,' \ gllib/Makefile.in (whose intent you should approve of) -- Sam Steingold (http://sds.podval.org/) on CentOS release 5.6 (Final) X 11.0.60900031 http://pmw.org.il http://palestinefacts.org http://ffii.org http://thereligionofpeace.com http://openvotingconsortium.org http://memri.org The difference between theory and practice is that in theory there isn't any.
Re: REPLACE_TOWLOWER='1'
* Eric Blake roy...@erqung.pbz [2011-08-01 09:00:07 -0600]: On 08/01/2011 08:56 AM, Sam Steingold wrote: why is tolower replaced on linux? Did you mean towlower rather than tolower? towlower, sorry What does config.log say? configure:29272: checking whether towlower is declared configure:29272: gcc -c conftest.c 5 configure:29272: $? = 0 configure:29272: result: yes | #define HAVE_DECL_TOWLOWER 1 ac_cv_have_decl_towlower=yes REPLACE_TOWLOWER='1' these are the only mentions of towlower in config.log -- Sam Steingold (http://sds.podval.org/) on CentOS release 5.6 (Final) X 11.0.60900031 http://truepeace.org http://palestinefacts.org http://iris.org.il http://ffii.org http://thereligionofpeace.com http://jihadwatch.org 20% of people do 80% of work; also 80% of people think they are in those 20%.
Re: REPLACE_TOWLOWER='1'
Hi Sam, why is tolower replaced on linux? ... ac_cv_have_decl_towlower=yes REPLACE_TOWLOWER='1' Oops. that was a mistake yesterday. Thanks for having spotted it! Fixed as follows. 2011-08-01 Bruno Haible br...@clisp.org wctype-h: Fix last change. * m4/wctype_h.m4 (gl_WCTYPE_H): If towlower is defined, set REPLACE_TOWLOWER to 0. Reported by Sam Steingold s...@gnu.org. *** m4/wctype_h.m4.orig Mon Aug 1 21:56:33 2011 --- m4/wctype_h.m4 Mon Aug 1 21:54:29 2011 *** *** 1,4 ! # wctype_h.m4 serial 15 dnl A placeholder for ISO C99 wctype.h, for platforms that lack it. --- 1,4 ! # wctype_h.m4 serial 16 dnl A placeholder for ISO C99 wctype.h, for platforms that lack it. *** *** 82,107 if test $REPLACE_ISWCNTRL = 1; then REPLACE_TOWLOWER=1 else ! AC_CHECK_DECLS([towlower],,, ! [[/* Tru64 with Desktop Toolkit C has a bug: stdio.h must be !included before wchar.h. !BSD/OS 4.0.1 has a bug: stddef.h, stdio.h and time.h !must be included before wchar.h. */ ! #include stddef.h ! #include stdio.h ! #include time.h ! #include wchar.h ! #if HAVE_WCTYPE_H ! # include wctype.h ! #endif ! ]]) ! if test $ac_cv_have_decl_towlower = yes; then ! dnl On Minix 3.1.8, the system's wctype.h declares towlower() and ! dnl towupper() although it does not have the functions. Avoid a collision ! dnl with gnulib's replacement. ! REPLACE_TOWLOWER=1 ! else REPLACE_TOWLOWER=0 fi fi AC_SUBST([REPLACE_TOWLOWER]) --- 82,112 if test $REPLACE_ISWCNTRL = 1; then REPLACE_TOWLOWER=1 else ! AC_CHECK_FUNCS([towlower]) ! if test $ac_cv_func_towlower = yes; then REPLACE_TOWLOWER=0 + else + AC_CHECK_DECLS([towlower],,, + [[/* Tru64 with Desktop Toolkit C has a bug: stdio.h must be + included before wchar.h. + BSD/OS 4.0.1 has a bug: stddef.h, stdio.h and time.h + must be included before wchar.h. */ + #include stddef.h + #include stdio.h + #include time.h + #include wchar.h + #if HAVE_WCTYPE_H + # include wctype.h + #endif + ]]) + if test $ac_cv_have_decl_towlower = yes; then + dnl On Minix 3.1.8, the system's wctype.h declares towlower() and + dnl towupper() although it does not have the functions. Avoid a + dnl collision with gnulib's replacement. + REPLACE_TOWLOWER=1 + else + REPLACE_TOWLOWER=0 + fi fi fi AC_SUBST([REPLACE_TOWLOWER]) -- In memoriam Marie Trintignant http://en.wikipedia.org/wiki/Marie_Trintignant
Re: relocatable-prog : relocatable symbol not found
Hi, I'd like some input about this issue. I don't understand how gnulib-tool generates the Makefile. In this case relocatable.c is added to EXTRA_libgnu_a_SOURCES but not libgnu_a_SOURCES :/ (btw, now could be a good time to add FreeDink to 'users.txt' :)) - Sylvain On Thu, Jul 28, 2011 at 12:19:00AM +0200, Sylvain Beucler wrote: Hi, I updated gnulib and I now have an error when compiling my freedink project: gcc -g -O2 -Wall -std=c99 -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT `../autotools/reloc-ldflags x86_64-unknown-linux-gnu /usr/local/bin` -o freedink bgm.o dinkini.o dinkc.o dinkc_bindings.o dinkc_console.o dinkc_sp_custom.o dinkvar.o fastfile.o game_engine.o str_util.o io_util.o sfx.o gfx.o gfx_fade.o gfx_tiles.o gfx_palette.o gfx_fonts.o init.o rect.o input.o binreloc.o freedink_xpm.o paths.o log.o gfx_sprites.o vgasys_fon.o msgbox.o i18n.o meminfo.o screen.o SDL_rwops_libzip.o freedink.o update_frame.o ../gnulib/lib/libgnu.a -lSDL_mixer -lSDL_image -lSDL_ttf -lSDL_gfx -lpthread -L/usr/lib -lSDL -lzip -lz -lfontconfig-lm paths.c:90: error: undefined reference to 'relocate' progreloc.c:297: error: undefined reference to 'compute_curr_prefix' progreloc.c:302: error: undefined reference to 'set_relocation_prefix' collect2: ld returned 1 exit status (paths.c is my source file) I note that relocatable.c is not included anymore in libgnu.a: ar cru libgnu.a allocator.o areadlink.o areadlink-with-size.o canonicalize.o careadlinkat.o cloexec.o dirname.o basename.o dirname-lgpl.o basename-lgpl.o stripslash.o exitfail.o fd-hook.o file-set.o filenamecat-lgpl.o hash.o hash-pjw.o hash-triple.o malloca.o openat-die.o progname.o same.o save-cwd.o dup-safer.o fd-safer.o pipe-safer.o xmalloc.o xalloc-die.o xgetcwd.o xreadlink.o xstrndup.o asnprintf.o chdir-long.o fcntl.o getcwd.o getcwd-lgpl.o getopt.o getopt1.o openat-proc.o printf-args.o printf-parse.o progreloc.o vasnprintf.o My modules in gnulib/m4/gnulib-cache.m4: gl_MODULES([ alloca canonicalize dirname getopt-gnu gettext hash relocatable-prog strcase strdup-posix strings vasprintf xalloc ]) I didn't find a note in NEWS that would recommend a change in the freedink code. Any tip? :) -- Sylvain
Re: copy_file_preserving variant that doesn't exit on error?
On 24 July 2011 21:05, Reuben Thomas r...@sc3d.org wrote: I just came across the copy-file module, which does exactly what I want (it is even geared to making backup files), but (unfortunately for use in an interactive program) exits on error. Just to move this along a bit, I attach a patch which changes copy_file_preserving to return error codes instead of calling error. Obviously, I don't expect this to be applied to gnulib, but as per my original message, I'd like to know if a version of copy_file_preserving along these lines is thought to be a good idea for interactive use (I need it for creating backup files in GNU Zile), and how I might produce a patch that provides an error-returning variant without duplicating all the code. diff --git a/lib/copy-file.h b/lib/copy-file.h index cb8b1f7..b0c29e0 100644 --- a/lib/copy-file.h +++ b/lib/copy-file.h @@ -26,7 +26,7 @@ extern C { Modification times, owner, group and access permissions are preserved as far as possible. Exit upon failure. */ -extern void copy_file_preserving (const char *src_filename, const char *dest_filename); +extern int copy_file_preserving (const char *src_filename, const char *dest_filename); #ifdef __cplusplus diff --git a/lib/copy-file.c b/lib/copy-file.c index f9cd9c0..b5b8447 100644 --- a/lib/copy-file.c +++ b/lib/copy-file.c @@ -53,7 +53,7 @@ enum { IO_SIZE = 32 * 1024 }; -void +int copy_file_preserving (const char *src_filename, const char *dest_filename) { int src_fd; @@ -63,37 +63,37 @@ copy_file_preserving (const char *src_filename, const char *dest_filename) char *buf = xmalloc (IO_SIZE); src_fd = open (src_filename, O_RDONLY | O_BINARY); - if (src_fd 0 || fstat (src_fd, statbuf) 0) -error (EXIT_FAILURE, errno, _(error while opening \%s\ for reading), - src_filename); + if (src_fd 0) +return -1; + if (fstat (src_fd, statbuf) 0) +goto error_exit_2; mode = statbuf.st_mode 0; dest_fd = open (dest_filename, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 0600); if (dest_fd 0) -error (EXIT_FAILURE, errno, _(cannot open backup file \%s\ for writing), - dest_filename); +return -1; /* Copy the file contents. */ for (;;) { size_t n_read = safe_read (src_fd, buf, IO_SIZE); if (n_read == SAFE_READ_ERROR) -error (EXIT_FAILURE, errno, _(error reading \%s\), src_filename); +goto error_exit; if (n_read == 0) break; if (full_write (dest_fd, buf, n_read) n_read) -error (EXIT_FAILURE, errno, _(error writing \%s\), dest_filename); +goto error_exit; } free (buf); #if !USE_ACL if (close (dest_fd) 0) -error (EXIT_FAILURE, errno, _(error writing \%s\), dest_filename); +goto error_exit_2; if (close (src_fd) 0) -error (EXIT_FAILURE, errno, _(error after reading \%s\), src_filename); +return -1; #endif /* Preserve the access and modification times. */ @@ -123,15 +123,23 @@ copy_file_preserving (const char *src_filename, const char *dest_filename) /* Preserve the access permissions. */ #if USE_ACL if (copy_acl (src_filename, src_fd, dest_filename, dest_fd, mode)) -exit (EXIT_FAILURE); +goto error_exit; #else chmod (dest_filename, mode); #endif #if USE_ACL if (close (dest_fd) 0) -error (EXIT_FAILURE, errno, _(error writing \%s\), dest_filename); +goto error_exit_2; if (close (src_fd) 0) -error (EXIT_FAILURE, errno, _(error after reading \%s\), src_filename); +return -1; #endif + + return 0; + + error_exit: + close (dest_fd); + error_exit_2: + close (src_fd); + return -1; }
Re: copy_file_preserving variant that doesn't exit on error?
By the way, I note that the return value of chown is ignored where no other return value is; is this an oversight, or is it really the case that this is the one operation whose failure can be overlooked?