[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
head - Re: branch-1_4 use gnupload
From: |
Eric Blake |
Subject: |
head - Re: branch-1_4 use gnupload |
Date: |
Tue, 22 Aug 2006 16:35:41 -0600 |
User-agent: |
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.5) Gecko/20060719 Thunderbird/1.5.0.5 Mnenhy/0.7.4.666 |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
According to Eric Blake on 8/22/2006 2:32 PM:
> Now that gnulib supplies gnupload, I can simplify releases
>
> I will be porting this, and several other gnulib-tool --import patches, to
> CVS head next.
>
Here's all the modules that branch-1_4 was using but not head, except for
tmpfile-safer (I'd like to move away from tmpfile, because the discussion
on the gnulib list pointed out that tmpfile is not as clean as Bruno's
clean-temp module). It also picks up regexprops-generic.texi from gnulib.
2006-08-22 Eric Blake <address@hidden>
Start porting various fixes from the branch that use gnulib.
* ltdl/m4/gnulib-cache.m4: Augment with gnulib-tool --import
binary-io cloexec close-stream fopen-safer getopt gnupload mkstemp
regexprops-generic stdlib-safer unlocked-io.
* m4/debug.c (m4_debug_set_output): Close debug file on exec.
* m4/path.c (m4_path_search): Close input file on exec, reject
empty file name, fix parameter naming.
* m4/output.c (make_room_for): Close diversion file on exec.
(includes): Assume C89 headers.
(tmpfile): For now, we don't want tmpfile-safer, because we want
clean-temp later.
* m4/m4private.h (includes): Use various gnulib headers.
* doc/regexprops-generic.texi: Use gnulib's copy.
- --
Life is short - so eat dessert first!
Eric Blake address@hidden
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2.1 (Cygwin)
Comment: Public key at home.comcast.net/~ericblake/eblake.gpg
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFE64a984KuGfSFAYARAn6PAJ9nebFGXQxFuFWooUa2c0phDRYTyQCfWqC5
LQXCo+Hz19DbDEVfITY955g=
=7wIC
-----END PGP SIGNATURE-----
Index: HACKING
===================================================================
RCS file: /sources/m4/m4/HACKING,v
retrieving revision 1.2
diff -u -p -r1.2 HACKING
--- HACKING 22 Aug 2006 16:16:47 -0000 1.2
+++ HACKING 22 Aug 2006 22:31:22 -0000
@@ -183,35 +183,24 @@ yyyy-mm-dd Name of Author <address@hidden
* Run ./configure (or create a build directory first and run configure
from there, if you want to keep the build tree separate).
-* Run `make -fMakefile.maint fetch' (or `make -f../Makefile.maint fetch'
- if you are running from a VPATH build directory, where `../' is the
- relative path to the directory with `configure' in it), which will
- fetch new versions of the files that are maintained outside of m4. If
- you are using GNU make, the included GNUmakefile allows you to leave
- off the '-fMakefile.maint'.
-
* Run `make distcheck'. If there are any problems, fix them and start
again.
* Run ./commit from the source tree.
-* Run `make -fMakefile.maint cvs-dist' (or `make -f../Makefile.maint
- cvs-dist' if you are running from a VPATH build directory, where `../'
- is the relative path to the directory with `configure' in it), which
- will build a release tarball (with `make distcheck'), tag the tree
- with release-$(VERSION) and generate the gpg signature files.
-
-* Run 'make -f[../]Makefile.maint deltas' (pass
- LASTRELEASE=maj.min[.mic[alpha]] if needed) to create both diff and
- xdelta files between the previous release tarball and the new with
- detached gpg signature files and clear signed directive files.
-
-* Upload release tarball, diff file and xdelta file, plus their associated
- detached gpg signature files and clear signed directive files to
- ftp-upload.gnu.org. If the upload is destined for ftp.gnu.org, then the
- files should be placed in the /incoming/ftp directory. If the upload is
- an alpha release destined for alpha.gnu.org, then the files should be
- placed in the /incoming/alpha directory.
+* Run `make cvs-dist', which will build a release tarball (with `make
+ distcheck'), and tag the tree with release-$(VERSION).
+
+* Run 'make deltas' (pass LASTRELEASE=maj.min[.mic[alpha]] if needed) to
+ create both diff and xdelta files between the previous release tarball
+ and the new.
+
+* Run '[../]./gnupload --to [dest].gnu.org:m4 [files]' to create
+ detached gpg signature and clear signed directive files, and upload
+ the combination to the correct location. For an alpha release,
+ gnupload will place files in alpha.gnu.org, in /incoming/alpha, and
+ the xdelta file is not strictly necessary. For a full release,
+ gnupload will place files in ftp.gnu.org, in /incoming/ftp.
* Send announcement to address@hidden, address@hidden, and
address@hidden If not an alpha send to address@hidden
@@ -226,7 +215,7 @@ yyyy-mm-dd Name of Author <address@hidden
* Run ./commit.
* For non-alpha releases, update the webpages. Replace manual.html with
- the new one (generate with `make -f[../]Makefile.maint web-manual').
+ the new one (generate with `make web-manual').
7. Alpha release note template
Index: ltdl/m4/gnulib-cache.m4
===================================================================
RCS file: /sources/m4/m4/ltdl/m4/gnulib-cache.m4,v
retrieving revision 1.7
diff -u -p -r1.7 gnulib-cache.m4
--- ltdl/m4/gnulib-cache.m4 9 Aug 2006 21:33:23 -0000 1.7
+++ ltdl/m4/gnulib-cache.m4 22 Aug 2006 22:31:22 -0000
@@ -15,10 +15,10 @@
# Specification in the form of a command-line invocation:
-# gnulib-tool --import --dir=. --lib=libgnu --source-base=gnu
--m4-base=ltdl/m4 --doc-base=doc --aux-dir=ltdl/config --libtool
--macro-prefix=M4 assert error exit fdl free gendocs gettext mkstemp obstack
progname regex stdbool strtol verror xalloc xalloc-die xstrndup xvasprintf
+# gnulib-tool --import --dir=. --lib=libgnu --source-base=gnu
--m4-base=ltdl/m4 --doc-base=doc --aux-dir=ltdl/config --libtool
--macro-prefix=M4 assert binary-io cloexec close-stream error exit fdl
fopen-safer free gendocs getopt gettext gnupload mkstemp obstack progname regex
regexprops-generic stdbool stdlib-safer strtol unlocked-io verror xalloc
xalloc-die xstrndup xvasprintf
# Specification in the form of a few gnulib-tool.m4 macro invocations:
-gl_MODULES([assert error exit fdl free gendocs gettext mkstemp obstack
progname regex stdbool strtol verror xalloc xalloc-die xstrndup xvasprintf])
+gl_MODULES([assert binary-io cloexec close-stream error exit fdl fopen-safer
free gendocs getopt gettext gnupload mkstemp obstack progname regex
regexprops-generic stdbool stdlib-safer strtol unlocked-io verror xalloc
xalloc-die xstrndup xvasprintf])
gl_AVOID([])
gl_SOURCE_BASE([gnu])
gl_M4_BASE([ltdl/m4])
Index: m4/debug.c
===================================================================
RCS file: /sources/m4/m4/m4/debug.c,v
retrieving revision 1.21
diff -u -p -r1.21 debug.c
--- m4/debug.c 9 Aug 2006 21:33:24 -0000 1.21
+++ m4/debug.c 22 Aug 2006 22:31:22 -0000
@@ -154,6 +154,9 @@ m4_debug_set_output (m4 *context, const
if (fp == NULL)
return false;
+ if (set_cloexec_flag (fileno (fp), true) != 0)
+ m4_error (context, 0, errno,
+ _("cannot protect debug file across forks"));
set_debug_file (context, fp);
}
return true;
Index: m4/m4private.h
===================================================================
RCS file: /sources/m4/m4/m4/m4private.h,v
retrieving revision 1.53
diff -u -p -r1.53 m4private.h
--- m4/m4private.h 9 Aug 2006 21:33:24 -0000 1.53
+++ m4/m4private.h 22 Aug 2006 22:31:22 -0000
@@ -31,6 +31,11 @@
#include "m4module.h"
+#include "cloexec.h"
+#include "stdio--.h"
+#include "stdlib--.h"
+#include "unistd--.h"
+
typedef struct m4__search_path_info m4__search_path_info;
typedef enum {
Index: m4/output.c
===================================================================
RCS file: /sources/m4/m4/m4/output.c,v
retrieving revision 1.26
diff -u -p -r1.26 output.c
--- m4/output.c 9 Aug 2006 21:33:24 -0000 1.26
+++ m4/output.c 22 Aug 2006 22:31:22 -0000
@@ -22,19 +22,11 @@
# include <config.h>
#endif
+#include <errno.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
-
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#include <errno.h>
-
-#ifndef errno
-extern int errno;
-#endif
+#include <unistd.h>
#include "m4private.h"
@@ -56,6 +48,9 @@ extern int errno;
extern FILE *tmpfile ();
#endif
+/* FIXME - hack until we get clean-temp gnulib module going. */
+#undef tmpfile
+
/* Output functions. Most of the complexity is for handling cpp like
sync lines.
@@ -206,6 +201,9 @@ make_room_for (m4 *context, int length)
if (selected_diversion->file == NULL)
m4_error (context, EXIT_FAILURE, errno,
_("cannot create temporary file for diversion"));
+ if (set_cloexec_flag (fileno (selected_diversion->file), true) != 0)
+ m4_error (context, 0, errno,
+ _("cannot protect diversion across forks"));
if (selected_diversion->used > 0)
{
Index: m4/path.c
===================================================================
RCS file: /sources/m4/m4/m4/path.c,v
retrieving revision 1.17
diff -u -p -r1.17 path.c
--- m4/path.c 16 Aug 2006 12:23:05 -0000 1.17
+++ m4/path.c 22 Aug 2006 22:31:22 -0000
@@ -121,37 +121,52 @@ m4_add_include_directory (m4 *context, c
}
FILE *
-m4_path_search (m4 *context, const char *dir, char **expanded_name)
+m4_path_search (m4 *context, const char *file, char **expanded_name)
{
FILE *fp;
m4__search_path *incl;
char *name; /* buffer for constructed name */
int e;
+ if (expanded_name != NULL)
+ *expanded_name = NULL;
+
+ /* Reject empty file. */
+ if (*file == '\0')
+ {
+ errno = ENOENT;
+ return NULL;
+ }
+
/* Look in current working directory first. */
- fp = fopen (dir, "r");
+ fp = fopen (file, "r");
if (fp != NULL)
{
+ if (set_cloexec_flag (fileno (fp), true) != 0)
+ m4_error (context, 0, errno,
+ _("cannot protect input file across forks"));
if (expanded_name != NULL)
- *expanded_name = xstrdup (dir);
+ *expanded_name = xstrdup (file);
return fp;
}
/* If file not found, and filename absolute, fail. */
- if (*dir == '/' || m4_get_no_gnu_extensions_opt (context))
+ if (*file == '/' || m4_get_no_gnu_extensions_opt (context))
return NULL;
- e= errno;
+ e = errno;
- name = (char *) xmalloc (m4__get_search_path (context)->max_length + 1 +
strlen (dir) + 1);
+ name = (char *) xmalloc (m4__get_search_path (context)->max_length
+ + 1 + strlen (file) + 1);
- for (incl = m4__get_search_path (context)->list; incl != NULL; incl =
incl->next)
+ for (incl = m4__get_search_path (context)->list;
+ incl != NULL; incl = incl->next)
{
strncpy (name, incl->dir, incl->len);
name[incl->len] = '/';
- strcpy (name + incl->len + 1, dir);
+ strcpy (name + incl->len + 1, file);
#ifdef DEBUG_INCL
- fprintf (stderr, "path_search (%s) -- trying %s\n", dir, name);
+ fprintf (stderr, "path_search (%s) -- trying %s\n", file, name);
#endif
fp = fopen (name, "r");
@@ -159,11 +174,17 @@ m4_path_search (m4 *context, const char
{
if (BIT_TEST (m4_get_debug_level_opt (context), M4_DEBUG_TRACE_PATH))
M4_DEBUG_MESSAGE2 (context, _("path search for `%s' found `%s'"),
- dir, name);
+ file, name);
+ if (set_cloexec_flag (fileno (fp), true) != 0)
+ m4_error (context, 0, errno,
+ _("cannot protect input file across forks"));
if (expanded_name != NULL)
- *expanded_name = xstrdup (name);
- break;
+ *expanded_name = name;
+ else
+ free (name);
+ errno = e;
+ return fp;
}
}