]> git.ipfire.org Git - thirdparty/gettext.git/commitdiff
A new program: 'autopoint'. For CVS users.
authorBruno Haible <bruno@clisp.org>
Thu, 2 May 2002 13:40:52 +0000 (13:40 +0000)
committerBruno Haible <bruno@clisp.org>
Tue, 23 Jun 2009 10:07:56 +0000 (12:07 +0200)
ChangeLog
NEWS
configure.in
doc/ChangeLog
doc/Makefile.am
doc/autopoint.texi [new file with mode: 0644]
doc/gettext.texi
doc/gettextize.texi [new file with mode: 0644]
misc/ChangeLog
misc/Makefile.am
misc/gettextize.in

index e5e4d1bba8dab84e234013959702029225dacada..0198e38fec047b5b896803b9c1607973f3b0f19c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2002-05-01  Bruno Haible  <bruno@clisp.org>
+
+       * configure.in (AC_OUTPUT): Add misc/autopoint. Make misc/autopoint
+       executable.
+
 2002-05-01  Bruno Haible  <bruno@clisp.org>
 
        * INSTALL: Remove the recommendation to set CPPFLAGS and LDFLAGS.
diff --git a/NEWS b/NEWS
index cf3b8ec7c6795cbf14b866d129c074898db02c32..629947386dc809497cfc8826fa3268a7510a1da6 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,11 @@
+Version 0.11.3 - May 2002
+
+* New program:
+    autopoint - copies standard gettext infrastructure
+
+* The documentation makes it clear that 'gettextize' is a wizard and
+  migration tool.
+\f
 Version 0.11.2 - April 2002
 
 * Bug fixes in the gettext.m4 autoconf macros.
index 1d228e0250964282611696d6d51dac459373c435..1ca4aab8a3afae5c3ad7216f53b622d4155f262f 100644 (file)
@@ -180,7 +180,7 @@ AC_OUTPUT([Makefile \
            tests/Makefile \
            m4/Makefile \
            projects/Makefile \
-           misc/Makefile misc/gettextize], [
+           misc/Makefile misc/gettextize misc/autopoint], [
   dnl Fix unesthetic build commands generated by automake.
   for m in lib/Makefile src/Makefile tests/Makefile; do
     sed -e "s,\`test -f \\\$< || echo '\\\$(srcdir)/'\`\\\$<,\\\$<," < $m > $m.tmp
@@ -196,6 +196,6 @@ AC_OUTPUT([Makefile \
     sed -e '/cd \$(srcdir) && rm -f /d' < $m > $m.tmp
     mv $m.tmp $m
   done
-  dnl Fix permissions of misc/gettextize.
-  chmod a+x misc/gettextize
+  dnl Fix permissions of misc/gettextize and misc/autopoint.
+  chmod a+x misc/gettextize misc/autopoint
 ])
index 5178a592b6025300a7c1cbcedb486617aa0abaf6..3e6a36609dd988ca8069316fa5707ffcc3e956b9 100644 (file)
@@ -1,3 +1,11 @@
+2002-05-01  Bruno Haible  <bruno@clisp.org>
+
+       * gettextize.texi: New file, mostly extracted from gettext.texi.
+       * autopoint.texi: New file.
+       * gettext.texi (gettextize Invocation): Move to gettextize.texi.
+       (CVS Issues): New section.
+       * Makefile.am (gettext_TEXINFOS): Add gettextize.texi, autopoint.texi.
+
 2002-04-28  Bruno Haible  <bruno@clisp.org>
 
        * gettext.texi (gettextize Invocation): Document option --dry-run.
index 7d6e22b53f8bd2c82736b03157f822c5891f393b..1007b72dd63f1f02e7db0f3ea1f413736143808b 100644 (file)
@@ -36,7 +36,7 @@ gettext_TEXINFOS = \
   xgettext.texi msginit.texi msgmerge.texi msgcat.texi msgconv.texi \
   msggrep.texi msgfilter.texi msguniq.texi msgcomm.texi msgcmp.texi \
   msgattrib.texi msgen.texi msgexec.texi msgfmt.texi msgunfmt.texi \
-  iso-639.texi iso-3166.texi
+  gettextize.texi autopoint.texi iso-639.texi iso-3166.texi
 
 EXTRA_DIST = iso-639.sed iso-3166.sed ISO_639 ISO_3166 nls.texi matrix.texi texi2html
 
diff --git a/doc/autopoint.texi b/doc/autopoint.texi
new file mode 100644 (file)
index 0000000..7c726a1
--- /dev/null
@@ -0,0 +1,61 @@
+@pindex autopoint
+@cindex @code{autopoint} program, usage
+@example
+autopoint [@var{option}]...
+@end example
+
+The @code{autopoint} program copies standard gettext infrastructure files
+into a source package.  It extracts from an assignment of the form
+@code{GETTEXT_VERSION=@var{version}}, found in the package's
+@file{configure.in} or @file{configure.ac} file, the gettext version
+used by the package, and copies the infrastructure files belonging to
+this version into the package.
+
+@subsubsection Options
+
+@table @samp
+@item -f
+@itemx --force
+@opindex -f@r{, @code{autopoint} option}
+@opindex --force@r{, @code{autopoint} option}
+Force overwriting of files that already exist.
+
+@item -n
+@itemx --dry-run
+@opindex -d@r{, @code{autopoint} option}
+@opindex --dry-run@r{, @code{autopoint} option}
+Print modifications but don't perform them.  All file copying actions that
+@code{autopoint} would normally execute are inhibited and instead only
+listed on standard output.
+
+@end table
+
+@subsubsection Informative output
+
+@table @samp
+@item --help
+@opindex --help@r{, @code{autopoint} option}
+Display this help and exit.
+
+@item --version
+@opindex --version@r{, @code{autopoint} option}
+Output version information and exit.
+
+@end table
+
+@code{autopoint} supports the GNU @code{gettext} versions from 0.10.35 to
+the current one, @value{VERSION}.  In order to apply @code{autopoint} to
+a package using a @code{gettext} version newer than @value{VERSION}, you
+need to install this same version of GNU @code{gettext} at least.
+
+In packages using GNU @code{automake}, an invocation of @code{autopoint}
+should be followed by invocations of @code{aclocal} and then @code{autoconf}
+and @code{autoheader}.  The reason is that @code{autopoint} installs some
+autoconf macro files, which are used by @code{aclocal} to create
+@file{aclocal.m4}, and the latter is used by @code{autoconf} to create the
+package's @file{configure} script and by @code{autoheader} to create the
+package's @file{config.h.in} include file template.
+
+The name @samp{autopoint} is an abbreviation of @samp{auto-po-intl-m4};
+the tool copies or updates mostly files in the @file{po}, @file{intl},
+@file{m4} directories.
index d9d1f1305ae387350b4910e33958dc4cd20eb45a..c0e4d379b32f3fdf4cb917ec8e4c6b785e549968 100644 (file)
@@ -267,6 +267,7 @@ The Maintainer's View
 * gettextize Invocation::       Invoking the @code{gettextize} Program
 * Adjusting Files::             Files You Must Create or Alter
 * autoconf macros::             Autoconf macros for use in @file{configure.in}
+* CVS Issues::                  Integrating with CVS
 
 Files You Must Create or Alter
 
@@ -288,6 +289,12 @@ Autoconf macros for use in @file{configure.in}
 * AM_GNU_GETTEXT::              AM_GNU_GETTEXT in @file{gettext.m4}
 * AM_ICONV::                    AM_ICONV in @file{iconv.m4}
 
+Integrating with CVS
+
+* Distributed CVS::             Avoiding version mismatch in distributed development
+* Files under CVS::             Files to put under CVS version control
+* autopoint Invocation::        Invoking the @code{autopoint} Program
+
 Other Programming Languages
 
 * Language Implementors::       The Language Implementor's View
@@ -5539,6 +5546,7 @@ for changes.
 * gettextize Invocation::       Invoking the @code{gettextize} Program
 * Adjusting Files::             Files You Must Create or Alter
 * autoconf macros::             Autoconf macros for use in @file{configure.in}
+* CVS Issues::                  Integrating with CVS
 @end menu
 
 @node Flat and Non-Flat, Prerequisites, Maintainers, Maintainers
@@ -5655,131 +5663,7 @@ never try to @emph{solve} a team's problem on your own.
 @node gettextize Invocation, Adjusting Files, Prerequisites, Maintainers
 @section Invoking the @code{gettextize} Program
 
-Some files are consistently and identically needed in every package
-internationalized through GNU @code{gettext}.  As a matter of
-convenience, the @code{gettextize} program puts all these files right
-in your package.  This program has the following synopsis:
-
-@pindex gettextize
-@cindex @code{gettextize} program, usage
-@example
-gettextize [ @var{option}@dots{} ] [ @var{directory} ]
-@end example
-
-@noindent
-and accepts the following options:
-
-@table @samp
-@item -c
-@itemx --copy
-@opindex -c@r{, @code{gettextize} option}
-@opindex --copy@r{, @code{gettextize} option}
-Copy the needed files instead of making symbolic links.  Using links
-would allow the package to always use the latest @code{gettext} code
-available on the system, but it might disturb some mechanism the
-maintainer is used to apply to the sources.  Because running
-@code{gettextize} is easy there shouldn't be problems with using copies.
-
-@item -f
-@itemx --force
-@opindex -f@r{, @code{gettextize} option}
-@opindex --force@r{, @code{gettextize} option}
-Force replacement of files which already exist.
-
-@item --intl
-@opindex --intl@r{, @code{gettextize} option}
-Install the libintl sources in a subdirectory named @file{intl/}.
-This libintl will be used to provide internationalization on systems
-that don't have GNU libintl installed. If this option is omitted,
-the call to @code{AM_GNU_GETTEXT} in @file{configure.in} should read:
-@samp{AM_GNU_GETTEXT([external])}, and internationalization will not
-be enabled on systems lacking GNU gettext.
-
-@item --no-changelog
-@opindex --no-changelog@r{, @code{gettextize} option}
-Don't update or create ChangeLog files.  By default, @code{gettextize}
-logs all changes (file additions, modifications ans removals) in a
-file called @samp{ChangeLog} in each affected directory.
-
-@item -n
-@itemx --dry-run
-@opindex -d@r{, @code{gettextize} option}
-@opindex --dry-run@r{, @code{gettextize} option}
-Print modifications but don't perform them.  All actions that
-@code{gettextize} would normally execute are inhibited and instead only
-listed on standard output.
-
-@item --help
-@opindex --help@r{, @code{gettextize} option}
-Display this help and exit.
-
-@item --version
-@opindex --version@r{, @code{gettextize} option}
-Output version information and exit.
-
-@end table
-
-If @var{directory} is given, this is the top level directory of a
-package to prepare for using GNU @code{gettext}.  If not given, it
-is assumed that the current directory is the top level directory of
-such a package.
-
-The program @code{gettextize} provides the following files.  However,
-no existing file will be replaced unless the option @code{--force}
-(@code{-f}) is specified.
-
-@enumerate
-@item
-The @file{ABOUT-NLS} file is copied in the main directory of your package,
-the one being at the top level.  This file gives the main indications
-about how to install and use the Native Language Support features
-of your program.  You might elect to use a more recent copy of this
-@file{ABOUT-NLS} file than the one provided through @code{gettextize},
-if you have one handy.  You may also fetch a more recent copy of file
-@file{ABOUT-NLS} from Translation Project sites, and from most GNU
-archive sites.
-
-@item
-A @file{po/} directory is created for eventually holding
-all translation files, but initially only containing the file
-@file{po/Makefile.in.in} from the GNU @code{gettext} distribution.
-(beware the double @samp{.in} in the file name) and a few auxiliary
-files. If the @file{po/} directory already exists, it will be preserved
-along with the files it contains, and only @file{Makefile.in.in} and
-the auxiliary files will be overwritten.
-
-@item
-Only if @samp{--intl} has been specified:
-A @file{intl/} directory is created and filled with most of the files
-originally in the @file{intl/} directory of the GNU @code{gettext}
-distribution.  Also, if option @code{--force} (@code{-f}) is given,
-the @file{intl/} directory is emptied first.
-
-@item
-The @file{config.rpath} file is copied into the directory containing
-configuration support files. It is needed by the @code{AM_GNU_GETTEXT}
-autoconf macro.
-
-@end enumerate
-
-If your site support symbolic links, @code{gettextize} will not
-actually copy the files into your package, but establish symbolic
-links instead.  This avoids duplicating the disk space needed in
-all packages.  Merely using the @samp{-h} option while creating the
-@code{tar} archive of your distribution will resolve each link by an
-actual copy in the distribution archive.  So, to insist, you really
-should use @samp{-h} option with @code{tar} within your @code{dist}
-goal of your main @file{Makefile.in}.
-
-It is interesting to understand that most new files for supporting
-GNU @code{gettext} facilities in one package go in @file{intl/}
-and @file{po/} subdirectories.  One distinction between these two
-directories is that @file{intl/} is meant to be completely identical
-in all packages using GNU @code{gettext}, while all newly created
-files, which have to be different, go into @file{po/}.  There is a
-common @file{Makefile.in.in} in @file{po/}, because the @file{po/}
-directory needs its own @file{Makefile}, and it has been designed so
-it can be identical in all packages.
+@include gettextize.texi
 
 @node Adjusting Files, autoconf macros, gettextize Invocation, Maintainers
 @section Files You Must Create or Alter
@@ -6347,7 +6231,7 @@ In other packages, it can go into the @file{src} directory.
 Do not install the @code{gettext.h} file in public locations. Every
 package that needs it should contain a copy of it on its own.
 
-@node autoconf macros,  , Adjusting Files, Maintainers
+@node autoconf macros, CVS Issues, Adjusting Files, Maintainers
 @section Autoconf macros for use in @file{configure.in}
 @cindex autoconf macros for @code{gettext}
 
@@ -6493,6 +6377,130 @@ library support, like SCO.
 @file{iconv.m4} is distributed with the GNU gettext package because
 @file{gettext.m4} relies on it.
 
+@node CVS Issues,  , autoconf macros, Maintainers
+@section Integrating with CVS
+
+Many projects use CVS for distributed development, version control and
+source backup.  This section gives some advice how to manage the uses
+of @code{cvs}, @code{gettextize}, @code{autopoint} and @code{autoconf}.
+
+@menu
+* Distributed CVS::             Avoiding version mismatch in distributed development
+* Files under CVS::             Files to put under CVS version control
+* autopoint Invocation::        Invoking the @code{autopoint} Program
+@end menu
+
+@node Distributed CVS, Files under CVS, CVS Issues, CVS Issues
+@subsection Avoiding version mismatch in distributed development
+
+In a project development with multiple developers, using CVS, there
+should be a single developer who occasionally - when there is desire to
+upgrade to a new @code{gettext} version - runs @code{gettextize} and
+performs the changes listed in @ref{Adjusting Files}, and then commits
+his changes to the CVS.
+
+It is highly recommended that all developers on a project use the same
+version of GNU @code{gettext} in the package.  In other words, if a
+developer runs @code{gettextize}, he should go the whole way, make the
+necessary remaining changes and commit his changes to the CVS.
+Otherwise the following damages will likely occur:
+
+@itemize @bullet
+@item
+Apparent version mismatch between developers.  Since some @code{gettext}
+specific portions in @file{configure.in}, @file{configure.ac} and
+@code{Makefile.am}, @code{Makefile.in} files depend on the @code{gettext}
+version, the use of infrastructure files belonging to different
+@code{gettext} versions can easily lead to build errors.
+
+@item
+Hidden version mismatch.  Such version mismatch can also lead to
+malfunctioning of the package, that may be undiscovered by the developers.
+The worst case of hidden version mismatch is that internationalization
+of the package doesn't work at all.
+
+@item
+Release risks.  All developers implicitly perform constant testing on
+a package.  This is important in the days and weeks before a release.
+If the guy who makes the release tar files uses a different version
+of GNU @code{gettext} than the other developers, the distribution will
+be less well tested than if all had been using the same @code{gettext}
+version.  For example, it is possible that a platform specific bug goes
+undiscovered due to this constellation.
+@end itemize
+
+@node Files under CVS, autopoint Invocation, Distributed CVS, CVS Issues
+@subsection Files to put under CVS version control
+
+There are basically three ways to deal with generated files in the
+context of a CVS repository, such as @file{configure} generated from
+@file{configure.in}, @code{@var{parser}.c} generated from
+@code{@var{parser}.y}, or @code{po/Makefile.in.in} autoinstalled by
+@code{gettextize} or @code{autopoint}.
+
+@enumerate
+@item
+All generated files are always committed into the repository.
+
+@item
+All generated files are committed into the repository occasionally,
+for example each time a release is made.
+
+@item
+Generated files are never committed into the repository.
+@end enumerate
+
+Each of these three approaches has different advantages and drawbacks.
+
+@enumerate
+@item
+The advantage is that anyone can check out the CVS at any moment and
+gets a working build.  The drawbacks are:  1a. It requires some frequent
+"cvs commit" actions by the maintainers.  1b. The reposity grows in size
+quite fast.
+
+@item
+The advantage is that anyone can check out the CVS, and the usual
+"./configure; make" will work.  The drawbacks are:  2a. The one who
+checks out the repository needs tools like GNU @code{automake},
+GNU @code{autoconf}, GNU @code{m4} installed in his PATH; sometimes
+he even needs particular versions of them.  2b. When a release is made
+and a commit is made on the generated files, the other developers get
+conflicts on the generated files after doing "cvs update".  Although
+these conflicts are easy to resolve, they are annoying.
+
+@item
+The advantage is less work for the maintainers.  The drawback is that
+anyone who checks out the CVS not only needs tools like GNU @code{automake},
+GNU @code{autoconf}, GNU @code{m4} installed in his PATH, but also that
+he needs to perform a package specific pre-build step before being able
+to "./configure; make".
+@end enumerate
+
+For the first and second approach, all files modified or brought in
+by the occasional @code{gettextize} invocation and update should be
+committed into the CVS.
+
+For the third approach, the maintainer can omit from the CVS repository
+all the files that @code{gettextize} mentions as "copy".  Instead, he
+adds to the @file{configure.in} or @file{configure.ac} a line of the
+form
+
+@example
+GETTEXT_VERSION=@value{VERSION}
+@end example
+
+@noindent
+and adds to the package's pre-build script an invocation of
+@samp{autopoint}.  For everyone who checks out the CVS, this
+@code{autopoint} invocation will copy into the right place the
+@code{gettext} infrastructure filss that have been omitted from the CVS.
+
+@node autopoint Invocation,  , Files under CVS, CVS Issues
+@subsection Invoking the @code{autopoint} Program
+
+@include autopoint.texi
+
 @node Programming Languages, Conclusion, Maintainers, Top
 @chapter Other Programming Languages
 
diff --git a/doc/gettextize.texi b/doc/gettextize.texi
new file mode 100644 (file)
index 0000000..75a0eae
--- /dev/null
@@ -0,0 +1,180 @@
+The @code{gettextize} program is an interactive tool that helps the
+maintainer of a package internationalized through GNU @code{gettext}.
+It is used for two purposes:
+
+@itemize @bullet
+@item
+As a wizard, when a package is modified to use GNU @code{gettext} for
+the first time.
+
+@item
+As a migration tool, for upgrading the GNU @code{gettext} support in
+a package from a previous to a newer version of GNU @code{gettext}.
+@end itemize
+
+This program performs the following tasks:
+
+@itemize @bullet
+@item
+It copies into the package some files that are consistently and
+identically needed in every package internationalized through
+GNU @code{gettext}.
+
+@item It performs as many of the tasks mentioned in the next section
+@ref{Adjusting Files} as can be performed automatically.
+
+@item It removes obsolete files and idioms used for previous GNU
+@code{gettext} versions to the form recommended for the current GNU
+@code{gettext} version.
+
+@item It prints a summary of the tasks that ought to be done manually
+and could not be done automatically by @code{gettextize}.
+@end itemize
+
+It can be invoked as follows:
+
+@pindex gettextize
+@cindex @code{gettextize} program, usage
+@example
+gettextize [ @var{option}@dots{} ] [ @var{directory} ]
+@end example
+
+@noindent
+and accepts the following options:
+
+@table @samp
+@item -c
+@itemx --copy
+@opindex -c@r{, @code{gettextize} option}
+@opindex --copy@r{, @code{gettextize} option}
+Copy the needed files instead of making symbolic links.  Using links
+would allow the package to always use the latest @code{gettext} code
+available on the system, but it might disturb some mechanism the
+maintainer is used to apply to the sources.  Because running
+@code{gettextize} is easy there shouldn't be problems with using copies.
+
+@item -f
+@itemx --force
+@opindex -f@r{, @code{gettextize} option}
+@opindex --force@r{, @code{gettextize} option}
+Force replacement of files which already exist.
+
+@item --intl
+@opindex --intl@r{, @code{gettextize} option}
+Install the libintl sources in a subdirectory named @file{intl/}.
+This libintl will be used to provide internationalization on systems
+that don't have GNU libintl installed. If this option is omitted,
+the call to @code{AM_GNU_GETTEXT} in @file{configure.in} should read:
+@samp{AM_GNU_GETTEXT([external])}, and internationalization will not
+be enabled on systems lacking GNU gettext.
+
+@item --no-changelog
+@opindex --no-changelog@r{, @code{gettextize} option}
+Don't update or create ChangeLog files.  By default, @code{gettextize}
+logs all changes (file additions, modifications and removals) in a
+file called @samp{ChangeLog} in each affected directory.
+
+@item -n
+@itemx --dry-run
+@opindex -d@r{, @code{gettextize} option}
+@opindex --dry-run@r{, @code{gettextize} option}
+Print modifications but don't perform them.  All actions that
+@code{gettextize} would normally execute are inhibited and instead only
+listed on standard output.
+
+@item --help
+@opindex --help@r{, @code{gettextize} option}
+Display this help and exit.
+
+@item --version
+@opindex --version@r{, @code{gettextize} option}
+Output version information and exit.
+
+@end table
+
+If @var{directory} is given, this is the top level directory of a
+package to prepare for using GNU @code{gettext}.  If not given, it
+is assumed that the current directory is the top level directory of
+such a package.
+
+The program @code{gettextize} provides the following files.  However,
+no existing file will be replaced unless the option @code{--force}
+(@code{-f}) is specified.
+
+@enumerate
+@item
+The @file{ABOUT-NLS} file is copied in the main directory of your package,
+the one being at the top level.  This file gives the main indications
+about how to install and use the Native Language Support features
+of your program.  You might elect to use a more recent copy of this
+@file{ABOUT-NLS} file than the one provided through @code{gettextize},
+if you have one handy.  You may also fetch a more recent copy of file
+@file{ABOUT-NLS} from Translation Project sites, and from most GNU
+archive sites.
+
+@item
+A @file{po/} directory is created for eventually holding
+all translation files, but initially only containing the file
+@file{po/Makefile.in.in} from the GNU @code{gettext} distribution
+(beware the double @samp{.in} in the file name) and a few auxiliary
+files. If the @file{po/} directory already exists, it will be preserved
+along with the files it contains, and only @file{Makefile.in.in} and
+the auxiliary files will be overwritten.
+
+@item
+Only if @samp{--intl} has been specified:
+A @file{intl/} directory is created and filled with most of the files
+originally in the @file{intl/} directory of the GNU @code{gettext}
+distribution.  Also, if option @code{--force} (@code{-f}) is given,
+the @file{intl/} directory is emptied first.
+
+@item
+The files @file{config.rpath} and @file{mkinstalldirs} are copied into
+the directory containing configuration support files. It is needed by
+the @code{AM_GNU_GETTEXT} autoconf macro.
+
+@item
+Only if the project is using GNU @code{automake}:
+A set of @code{autoconf} macro files is copied into the package's
+@code{autoconf} macro repository, usually in a directory called @file{m4/}.
+@end enumerate
+
+If your site support symbolic links, @code{gettextize} will not
+actually copy the files into your package, but establish symbolic
+links instead.  This avoids duplicating the disk space needed in
+all packages.  Merely using the @samp{-h} option while creating the
+@code{tar} archive of your distribution will resolve each link by an
+actual copy in the distribution archive.  So, to insist, you really
+should use @samp{-h} option with @code{tar} within your @code{dist}
+goal of your main @file{Makefile.in}.
+
+Furthermore, @code{gettextize} will update all @file{Makefile.am} files
+in each affected directory, as well as the top level @file{configure.in}
+or @file{configure.ac} file.
+
+It is interesting to understand that most new files for supporting
+GNU @code{gettext} facilities in one package go in @file{intl/},
+@file{po/} and @file{m4/} subdirectories.  One distinction between
+@file{intl/} and the two other directories is that @file{intl/} is
+meant to be completely identical in all packages using GNU @code{gettext},
+while the other directories will mostly contain package dependent
+files.
+
+The @code{gettextize} program makes backup files for all files it
+replaces or changes, and also write ChangeLog entries about these
+changes.  This way, the careful maintainer can check after running
+@code{gettextize} whether its changes are acceptable to him, and
+possibly adjust them.  An exception to this rule is the @file{intl/}
+directory, which is added or replaced or removed as a whole.
+
+It is important to understand that @code{gettextize} can not do the
+entire job of adapting a package for using GNU @code{gettext}.  The
+amount of remaining work depends on whether the package uses GNU
+@code{automake} or not.  But in any case, the maintainer should still
+read the section @ref{Adjusting Files} after invoking @code{gettextize}.
+
+It is also important to understand that @code{gettextize} is not part
+of the GNU build system, in the sense that it should not be invoked
+automatically, and not be invoked by someone who doesn't assume the
+responsibilities of a package maintainer.  For the latter purpose, a
+separate tool is provided, see @ref{autopoint Invocation}.
index 5839f030c93bb5fba5d2e4ff915fd624de68c7cc..27d6ad6813087d957bfd5fa23102d2a51b5bd7f3 100644 (file)
@@ -1,3 +1,16 @@
+2002-05-01  Bruno Haible  <bruno@clisp.org>
+
+       * autopoint-files: New directory.
+       * add-to-autopoint-files: New file.
+       * autopoint.in: New file.
+       * Makefile.am (EXTRA_DIST): Add add-to-autopoint-files.
+       (DISTCLEANFILES): Add autopoint.
+       (gettextsrcdir): New variable.
+       (gettextsrc_DATA): New variable.
+       (archive.tar.gz): New rule.
+       * gettextize.in: Bump GETTEXT_VERSION value in configure.in.
+       Ask maintainer to acknowledge the remaining changes.
+
 2002-04-28  Bruno Haible  <bruno@clisp.org>
 
        * gettextize.in: Avoid the remarks about po/Makevars and config.guess
index d467eba01ced510aa359f2b1aa9dfbc81e98a5c3..c72f4640a15f5c74e3696472e5cbdb47fa5e891d 100644 (file)
 
 AUTOMAKE_OPTIONS = 1.2 gnits
 
-EXTRA_DIST = gettext.perl gettext-sh tcl_gettext.c README-Tcl po-mode.el
-DISTCLEANFILES = gettextize
+EXTRA_DIST = gettext.perl gettext-sh tcl_gettext.c README-Tcl add-to-autopoint-files $(lisp_LISP)
+DISTCLEANFILES = gettextize autopoint
 lisp_LISP = po-mode.el po-compat.el
 
-bin_SCRIPTS = gettextize
+bin_SCRIPTS = gettextize autopoint
+
+gettextsrcdir = $(datadir)/gettext
+gettextsrc_DATA = archive.tar.gz
+
+archive.tar.gz:
+       (cd autopoint-files && tar cf - `find archive -type f | grep -v /CVS/`) | gzip -c -9 > $@
index eaf3662791b3a1ef6b61de0211f2f2ea709b3fbd..81a24b28076a20d93a47ecfe351d8edbdb209fd2 100644 (file)
@@ -31,6 +31,10 @@ func_usage ()
 {
   echo "\
 Usage: gettextize [OPTION]... [package-dir]
+
+Prepares a source package to use gettext.
+
+Options:
       --help           print this help and exit
       --version        print version information and exit
   -c, --copy           copy files instead of making symlinks
@@ -38,6 +42,7 @@ Usage: gettextize [OPTION]... [package-dir]
       --intl           install libintl in a subdirectory
       --no-changelog   don't update or create ChangeLog files
   -n, --dry-run        print modifications but don't perform them
+
 Report bugs to <bug-gnu-gettext@gnu.org>."
 }
 
@@ -862,6 +867,8 @@ sed -e 's%sed -e "/POTFILES =/r po/POTFILES" po/Makefile\.in > po/Makefile *;* *
 func_modify_configure_in "(AC_OUTPUT): Remove command that created po/Makefile."
 sed -e '/^\(dnl \|\)AC_LINK_FILES(\$nls_cv_header_libgt, \$nls_cv_header_intl)$/d' < "$srcdir/$configure_in" > "$srcdir/$configure_in.tmp"
 func_modify_configure_in "(AC_LINK_FILES): Remove invocation."
+sed -e 's/^GETTEXT_VERSION=\([-+_.0-9A-Za-z]*\)/GETTEXT_VERSION='"$version"'/' < "$srcdir/$configure_in" > "$srcdir/$configure_in.tmp"
+func_modify_configure_in "(GETTEXT_VERSION): Bump to $version."
 $do_changelog && func_ChangeLog_finish
 
 # Recommend replacement for deprecated Makefile variables.
@@ -946,6 +953,20 @@ if $doit; then
   echo "It is a wrapper around <libintl.h> that implements the configure --disable-nls"
   echo "option."
   echo
+  count=`echo "$please" | grep '^$' | wc -l`
+  count=`echo "$count" | sed -e 's/[   ]//g'`
+  case "$count" in
+    1) count="paragraph";;
+    2) count="two paragraphs";;
+    3) count="three paragraphs";;
+    4) count="four paragraphs";;
+    5) count="five paragraphs";;
+    *) count="$count paragraphs";;
+  esac
+  echo "Press Return to acknowledge the previous $count."
+  # Read from /dev/tty, not stdin, so that gettextize cannot be abused by
+  # non-interactive tools.
+  read < /dev/tty
 fi
 
 exit 0