7 This file attempts to describe the processes we use to maintain libtool,
8 and is not part of a release distribution.
13 * If you incorporate a change from somebody on the net:
14 If it is a large change, you must make sure they have signed the
15 appropriate paperwork, and be sure to add their name and email
18 * If a change fixes a test, mention the test in the ChangeLog entry.
20 * If somebody reports a new bug, mention his name in the ChangeLog entry
21 and in the test case you write.
23 * The correct response to most actual bugs is to write a new test case
24 which demonstrates the bug. Then fix the bug, re-run the test suite,
25 and check everything in.
27 * Some files in the libtool package are not owned by libtool. These
28 files should never be edited here. These files are:
43 The ones that are important for a release can be udated with,
44 `make -fMakefile.maint fetch' (or `make -f../Makefile.maint fetch'
45 if you are running from a VPATH build directory, where `../' is the
46 relative path to the directory with `configure' in it).
48 * Changes other than bug fixes must be mentioned in NEWS
54 * When writing tests, make sure the link invocation (first argument to
55 AT_CHECK) is on a single line so that 'testsuite -x' displays the
59 make check TESTSUITEFLAGS=-V
61 liberally, on as many platforms as you can. Use as many compilers and
64 * The new Autotest testsuite uses keywords to denote test features:
65 autoconf needs Autoconf
66 automake needs Automake
67 libltdl exercises the `libltdl' library
68 libtool exercises the `libtool' script
69 libtoolize exercises the `libtoolize' script
70 recursive runs the suite recursively, with a modified
71 `libtool' script and with `-k libtool'
72 CXX F77 FC GCJ exercises a language other than C
78 * We've adopted the convention that exported Autoconf macros should be
79 named with a leading `LT_' and be documented in the libtool manual.
80 Internal macros begin with `_LT_' if they are visible to aclocal, or
81 potentially part of an AC_DEFUN/AC_REQUIRE path, or else `_lt_' if
82 they are very low level. This convention was only introduced just
83 before libtool-2.0, so there may still be exceptions in the existing
84 code. But all new code should use it.
86 * All shell variables used internally by libtool's Autoconf macros
87 should be named with the a leading `lt_' (not that they cannot clash
88 with the `_lt_' macro namespace).
91 5. Editing 'ChangeLog'
92 ======================
94 * When in doubt, check that emacs can syntax-color properly in
95 change-log-mode. And preferably use emacs 'C-x 4 a'
96 (add-change-log-entry-other-window) to open ChangeLog with an
97 appropriate new template.
99 * If this change is by a different author, or on a different date to the
100 last entry start a new entry at the top of the file with the format
101 (note two spaces between each field):
103 yyyy-mm-dd Name of Author <email@address>
105 * If more than one person collaborated on the change, additional
106 authors can be listed on subsequent lines, thus:
108 yyyy-mm-dd Name of Main Author <email@address>,
109 Name of Contributor <another@email.address>
111 * Where a change author did not supply a copyright assignment, but the
112 changes they submitted were sufficiently trivial to commit in any case
113 (see the GCS for guidelines on this), then flag this against their
114 name in the header, thus:
116 yyyy-mm-dd Name of Author <email@address> (tiny change)
118 * In ChangeLog.2004 and earlier, 'Name of Author' was sometimes the name
119 of the author of the ChangeLog when the person who made the change
120 being documented didn't supply one. In that case separated from
121 the previous field by a blank line and indented by 1 tab (note, only
122 1 space between fields here) you will see:
124 From Author of Actual Change <email@address>:
126 As of now, don't do that anymore, since the GNU Coding Standards say
127 that the author of the change must be credited in the main entry
128 header for legal purposes.
130 * Preferably the next part should be a description of the overall
131 purpose of the change, separated from the header by a blank line,
132 indented by 1 tab, and filled at column 72. The last character of the
133 description should be a colon, :.
135 * Changes to each file come next. Each new file starts on a new line,
136 indented by 1 tab and starting with an asterisk and a space. Multiple
137 files can be listed here relative to $top_srcdir, and comma separated.
138 Names of functions (or sections as appropriate) to which the change
139 applies should be named inside parentheses and comma separated. If
140 this goes beyond column 72, then parens should be closed and re-opened
143 * file, another/file, test/testcases/foo.test (func_foo)
144 (func_bar, func_baz): Description of changes.
146 * If the change does not apply to particular functions (or sections),
147 the section list can be omitted:
149 * file, another/file, test/testcases/foo.test: General changes.
151 * If the changes are particular to certain architectures, they should be
152 listed after the functions in square brackets:
154 * file, another/file (func_foo) [linux, solaris]: Description of
157 * Subsequent changes in other files that are related to the same overall
158 enhancement or bugfix should be listed concurrently, without blank
159 lines. Always start a fresh line for a new file:
161 * file, another/file (func_foo) [linux, solaris]: Description of
163 * doc/foo.texi (Invoking Foo): Document.
166 * If the change is in response to a problem reported by someone other
167 than the author, then credit them at the end of the description with:
169 Reported by Reporter Name <email@address>.
171 * See the GNU Coding Standards document for more details on ChangeLog
175 2005-01-08 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> (tiny change),
176 Peter O'Gorman <peter@pogma.com>
178 This is the overall description of the purpose of this change
179 and any useful background for a model ChangeLog entry:
181 * HACKING: Updated copyright. This isn't attached to a
182 particular section of the file, so it comes first.
183 (Editing 'ChangeLog'): New section. This applies to the same
184 file, but since it applies to a particular section it starts on
186 (Introduction, Maintenance Notes, Test Suite, Naming)
187 (Editing '.am' Files): If I had changed all these sections in
188 the same way, I can list them like this, being careful to close
189 and reopen the parentheses when starting a new line. The colon
190 only comes after the last section before this description.
192 Reported by Bob Friesenhahn <bfriesen@simple.dallas.tx.us>.
194 * You may find it useful to install the git-merge-changelog merge driver:
195 http://git.sv.gnu.org/gitweb/?p=gnulib.git;a=blob;f=lib/git-merge-changelog.c
197 6. Editing `.am' Files
198 ======================
200 * Always use $(...) and not ${...}
202 * Use `:', not `true'. Use `exit 1', not `false'.
204 * Use `##' comments liberally. Comment anything even remotely unusual.
206 * Never use basename or dirname. Instead use sed.
208 * Do not use `cd' within back-quotes, use `$(lt__cd)' instead.
209 Otherwise the directory name may be printed, depending on CDPATH.
211 * In general, if a loop is required, it should be silent. Then the body
212 of the loop itself should print each "important" command it runs.
214 * Use 4 extra spaces to indent continued dependencies.
216 * One needs to remember that for our whole logic for the different
217 libltdl modes to function correctly, the thing we need to ensure
218 *before the client runs libtoolize*, is that the subpackage case is
219 correct (because all files may be symlinked there). All others can
220 and will be fixed in the `libtoolize --ltdl --(non)recursive' stage.
223 7. Editing `.m4sh' Files
224 ========================
226 * Use shell functions, but be careful not to assume local scope for
227 variable names. Don't use `return', instead echo the result of a
228 function and call it from within backquotes.
230 * Function names should be prefixed `func_', the function header should
233 # func_foo [ OPTIONS ]
234 # Description of what func_foo does and returns.
238 # contents of func_foo ...
241 The `$opt_debug' is used to enable shell tracing (Korn shells reset
242 this on function entry).
244 * For functions that are called frequently, if you need to return a
245 value, don't cause unneccessary forking of the shell using echo as
246 described above; instead set the return value in a variable named
247 after the called function with a suffix of `_result'. For example
248 the function `func_quote_for_eval' stores its return value in the
249 variable `$func_quote_for_eval_result'.
251 * Although sh-indentation is set to 2 (by the `Local Variables:' block
252 at the end of .m4sh files), the left margin of the body of shell
253 functions should begin indented by 4 spaces.
255 * Where there are large blocks of shell code with no m4 or m4sh
256 expansions, put the entire block in an M4SH_VERBATIM call. This
257 saves both on copy-and-paste errors, and needing to remember to
258 internally double the m4 quoting characters:
261 my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
266 8. Editing `.m4' Files
267 ======================
269 * Be careful with both `echo' and `$ECHO'. As the latter may be one of
273 $CONFIG_SHELL $0 --fallback-echo
274 it may not have more than one argument, its value may not be eval'ed
275 and the argument may not start with a `-'. As a rule of thumb, use
276 echo .. for literal (constant) strings without leading
277 hyphen and no backslashes within,
278 $ECHO ".." for strings without leading hyphen,
279 $ECHO "X.." | $Xsed otherwise.
281 * The Autoconf manual says that giving an empty parameter is equivalent
282 to not giving it at all. (In particular, the Autoconf manual doesn't
283 explain that "FOO()" is calling macro FOO with one empty parameter.)
284 To prevent misunderstanding, we should use m4_ifval to check whether
285 a parameter is empty, and not $# to check for the number of parameters.
287 * Any time we add a macro to an older version, lt~obsolete.m4 needs to
288 be updated in all newer versions.
291 9. Abstraction layers in libltdl
292 ================================
294 * The libltdl API uses a layered approach to differentiate internal and
295 external interfaces, among other things. To keep the abstraction
296 consistent, files in a given layer may only use APIs from files in the
297 lower layers. The ASCII art boxes below represent this stack, from
300 * But first, outside of the stack, there is a convenience header that
301 defines the internal interfaces (as evidenced by the `lt__' prefix to
302 the filename!) shared between implementation files in the stack, that
303 are however not exported to libltdl clients:
309 * The top layer of the stack is the libltdl API proper, which includes
310 the relevant subsystems automatically. Clients of libltdl need only
321 * The next layer is comprised of the subsystems of the exported libltdl
322 API, which are implemented by files that are named with a leading `lt_'
323 (single underscore!):
325 ,------------v---------------.
326 | lt_error.h | lt_dlloader.h |
327 +------------+---------------+
328 | lt_error.c | lt_dlloader.c |
329 `------------^---------------'
331 * The next file is used both by the headers that implement it (in which
332 case its function is to avoid namespace clashes when linking with the
333 GNU C library proper) and is included by code that wants to program
334 against a glibc-like interface, in which case it serves to pull in all
335 the glibc-like functionality used by libltdl with a simple:
337 #include <libltdl/lt__glibc.h>
339 It consists of a single file:
345 * Next to last is the libc abstraction layer, which provides a uniform
346 API to various system libc interfaces that differ between hosts
347 supported by libtool. Typically, the files that implement this layer
350 #if defined(LT_CONFIG_H)
351 # include LT_CONFIG_H
355 #include "lt_system.h"
357 Or if they are installed headers that must work outside the libtool
360 #include <libltdl/lt_system.h>
362 This layer's interface is defined by files that are usually named with
365 ,--------------v-------------v------------v--------v---------.
366 | lt__dirent.h | lt__alloc.h | lt__strl.h | argz.h | slist.h |
367 +--------------+-------------+------------+--------+---------+
368 | lt__dirent.c | lt__alloc.c | lt__strl.c | argz.c | slist.c |
369 `--------------^-------------^------------^--------^---------'
371 (argz.h and slist.h are used independently of libltdl in other projects)
373 * At the bottom of the stack we have the system abstraction layer,
374 which tries to smooth over the cracks where there are differences
375 between host systems and compilers. config.h is generated at
376 configure time and is not installed; lt_system.h is an installed
377 file and cannot use macros from config.h:
387 * Tacked on the side of this stack, attached via the lt_dlloader.h
388 definitions are the various implementation modules for run-time module
389 loading: preopen.c, dlopen.c etc.
395 GNU Libtool uses 3 different licenses for various of the files distributed
396 herein, with 7 variations on license text. It is important that you use
397 the correct license text in each new file added. Here are the texts
398 along with some notes on when each is appropriate. Appropriate commenting
399 (shell, C etc) and decoration (m4sh etc) assumed throughout.
401 10.1. Notice preservation
403 Autoconf macros and files used to generate them need this license:
405 Copyright (C) <year list> Free Software Foundation, Inc.
406 Written by <author>, <year>
408 This file is free software; the Free Software Foundation gives
409 unlimited permission to copy and/or distribute it, with or without
410 modifications, as long as this notice is preserved.
416 Everything else in the distribution has the following license text
417 unless there is good reason to use one of the other license texts
420 Copyright (C) <year list> Free Software Foundation, Inc.
421 Written by <author>, <year>
423 This file is part of GNU Libtool.
425 GNU Libtool is free software; you can redistribute it and/or
426 modify it under the terms of the GNU General Public License as
427 published by the Free Software Foundation; either version 2 of
428 the License, or (at your option) any later version.
430 GNU Libtool is distributed in the hope that it will be useful,
431 but WITHOUT ANY WARRANTY; without even the implied warranty of
432 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
433 GNU General Public License for more details.
435 You should have received a copy of the GNU General Public License
436 along with GNU Libtool; see the file COPYING. If not, a copy
437 can be downloaded from http://www.gnu.org/licenses/gpl.html,
438 or obtained by writing to the Free Software Foundation, Inc.,
439 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
443 10.3. GPL with Libtool exception clause
445 At the moment only `libltdl/README' needs the exception clause to
446 allow projects that distribute a copy of the libltdl sources to also
447 redistribute the README:
450 Copyright (C) <year list> Free Software Foundation, Inc.
451 Written by <author>, <year>
453 This file is part of GNU Libtool.
455 GNU Libtool is free software; you can redistribute it and/or
456 modify it under the terms of the GNU General Public License as
457 published by the Free Software Foundation; either version 2 of
458 the License, or (at your option) any later version.
460 As a special exception to the GNU General Public License,
461 if you distribute this file as part of a program or library that
462 is built using GNU Libtool, you may include this file under the
463 same distribution terms that you use for the rest of that program.
465 GNU Libtool is distributed in the hope that it will be useful,
466 but WITHOUT ANY WARRANTY; without even the implied warranty of
467 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
468 GNU General Public License for more details.
470 You should have received a copy of the GNU General Public License
471 along with GNU Libtool; see the file COPYING. If not, a copy
472 can be downloaded from http://www.gnu.org/licenses/gpl.html,
473 or obtained by writing to the Free Software Foundation, Inc.,
474 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
478 10.4. GPL with Cvs-utils exception clause
480 GNU Libtool imports some m4sh infrastructure from the GNU Cvs-utils
481 project, namely `getopt.m4sh' and `general.m4sh'. Those files use
482 the GPL with their own exception clause as follows:
484 Copyright (C) <year list> Free Software Foundation, Inc.
485 Written by <author>, <year>
487 This file is part of GNU Cvs-utils.
489 GNU Cvs-utils is free software; you can redistribute it and/or
490 modify it under the terms of the GNU General Public License as
491 published by the Free Software Foundation; either version 2 of
492 the License, or (at you option) any later version.
494 As a special exception to the GNU General Public License, if you
495 distribute this file as part of a program or library that contains
496 a configuration script generated by Autoconf, you may include this
497 file under the same distribution terms that you use for the rest
500 GNU Cvs-utils is distributed in the hope that it will be useful,
501 but WITHOUT ANY WARRANTY; without even the implied warranty of
502 MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU
503 General Public License for more details.
505 You should have received a copy of the GNU General Public License
506 along with GNU Libtool; see the file COPYING. If not, a copy
507 can be downloaded from http://www.gnu.org/licenses/gpl.html,
508 or obtained by writing to the Free Software Foundation, Inc.,
509 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
513 10.5. GPL with self extracting version
515 Some of the sources built atop Cvs-utils' m4sh framework use
516 getopt.m4sh:func_version() to extract their --version output from
517 the copyright block. Those files also need the --version copyright
518 text paragraph as follows:
520 <program name> (GNU @PACKAGE@) <version number>
521 Written by <author> <email address>.
523 This file is part of <parent package name>.
525 Copyright (C) <year list> Free Software Foundation, Inc.
526 This is free software; see the source for copying conditions. There is NO
527 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
529 <program name> is free software; you can redistribute it and/or modify
530 it under the terms of the GNU General Public License as published by
531 the Free Software Foundation; either version 2 of the License, or
532 (at your option) any later version.
534 <program name> is distributed in the hope that it will be useful, but
535 WITHOUT ANY WARRANTY; without even the implied warranty of
536 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
537 GNU General Public License for more details.
539 You should have received a copy of the GNU General Public License
540 along with <program name>; see the file COPYING. If not, a copy
541 can be downloaded from http://www.gnu.org/licenses/gpl.html,
542 or obtained by writing to the Free Software Foundation, Inc.,
543 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
547 10.6. GPL with self extracting version and Libtool exception clause
549 Although the libtool script is generated from `ltmain.m4sh' according
550 to the rules in the preceding subsection, it also needs the Libtool
551 exception clause so that it can be redistributed by other projects
554 <program name> (GNU @PACKAGE@@TIMESTAMP@) <version number>
555 Written by <author> <email address>.
557 This file is part of GNU Libtool.
559 Copyright (C) <year list> Free Software Foundation, Inc.
560 This is free software; see the source for copying conditions. There is NO
561 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
563 <program name> is free software; you can redistribute it and/or modify
564 it under the terms of the GNU General Public License as published by
565 the Free Software Foundation; either version 2 of the License, or
566 (at your option) any later version.
568 As a special exception to the GNU General Public License,
569 if you distribute this file as part of a program or library that
570 is built using GNU Libtool, you may include this file under the
571 same distribution terms that you use for the rest of that program.
573 <program name> is distributed in the hope that it will be useful, but
574 WITHOUT ANY WARRANTY; without even the implied warranty of
575 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
576 GNU General Public License for more details.
578 You should have received a copy of the GNU General Public License
579 along with <program name>; see the file COPYING. If not, a copy
580 can be downloaded from http://www.gnu.org/licenses/gpl.html,
581 or obtained by writing to the Free Software Foundation, Inc.,
582 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
586 10.7. LGPL with Libtool exception clause
588 Finally, not only is Libltdl is LGPLed, but it is routinely
589 redistributed inside projects that use it, so its sources need to use
590 the following license text citing the LGPL along with Libtool's special
593 Copyright (C) <year list> Free Software Foundation, Inc.
594 Written by <author>, <year>
596 NOTE: The canonical source of this file is maintained with the
597 GNU Libtool package. Report bugs to bug-libtool@gnu.org.
599 GNU Libltdl is free software; you can redistribute it and/or
600 modify it under the terms of the GNU Lesser General Public
601 License as published by the Free Software Foundation; either
602 version 2 of the License, or (at your option) any later version.
604 As a special exception to the GNU Lesser General Public License,
605 if you distribute this file as part of a program or library that
606 is built using GNU Libtool, you may include this file under the
607 same distribution terms that you use for the rest of that program.
609 GNU Libltdl is distributed in the hope that it will be useful,
610 but WITHOUT ANY WARRANTY; without even the implied warranty of
611 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
612 GNU Lesser General Public License for more details.
614 You should have received a copy of the GNU Lesser General Public
615 License along with GNU Libltdl; see the file COPYING.LIB. If not, a
616 copy can be downloaded from http://www.gnu.org/licenses/lgpl.html,
617 or obtained by writing to the Free Software Foundation, Inc.,
618 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
621 11. Release Procedure
622 =====================
624 * If you are a libtool maintainer, but have not yet registered your
625 gpg public key and (preferred) email address with the FSF, send an
626 email, preferably GPG-signed, to <ftp-upload@gnu.org> that includes
629 (a) name of package(s) that you are the maintainer for, and your
630 preferred email address.
632 (b) an ASCII armored copy of your GnuPG key, as an attachment.
633 ("gpg --export -a YOUR_KEY_ID > mykey.asc" should give you
636 When you have received acknowledgement of your message, the proper GPG
637 keys will be registered on ftp-upload.gnu.org and only then will you be
638 authorized to upload files to the FSF ftp machines.
640 * If you do not have access to the mailing list administrative interface,
641 approach the list owners for the password. Be sure to check the lists
642 (esp. bug-libtool) for outstanding bug reports also in the list of
643 pending moderation requests.
645 * Make sure you have wget installed.
647 * Make sure you have a copy of xdelta installed, and a copy of the previous
648 release tarball in the build directory.
650 * Make sure your locale is sane, e.g. by exporting LC_ALL=C.
652 * Double check that serial number updates in public m4 files weren't forgotten
653 since last release (they should be updated in CVS along with commits that
654 require it so that users can work with CVS snapshots).
656 * Update the LTDL_VERSION_INFO in libltdl/Makefile.inc for changes since
659 * Update the version number in configure.ac and libltdl/configure.ac.
660 See http://www.gnu.org/software/libtool/contribute.html for details of
661 the numbering scheme.
663 * Update NEWS, ChangeLog.
667 * Have some tea. If you are running on less than 3.6GHz CPU, order
670 * Run ./configure (or create a build directory first and run configure
671 from there, if you want to keep the build tree separate).
673 * Run `make -fMakefile.maint fetch' (or `make -f../Makefile.maint fetch'
674 if you are running from a VPATH build directory, where `../' is the
675 relative path to the directory with `configure' in it), which will
676 fetch new versions of the files that are maintained outside of
679 * Run `make distcheck' and `make distcheck
680 DISTCHECK_CONFIGURE_FLAGS=--disable-ltdl-install'. Try a distcheck
681 with --program-prefix=g. If there are any problems, fix them and
684 * Run ./commit from the source tree.
686 * Run `make -fMakefile.maint cvs-dist' (or `make -f../Makefile.maint
687 cvs-dist' if you are running from a VPATH build directory, where `../'
688 is the relative path to the directory with `configure' in it), which
689 will build a release tarball (with `make distcheck'), tag the tree
690 with release-$(VERSION) and generate the gpg signature files.
692 * Run 'make -f[../]Makefile.maint deltas' (pass
693 LASTRELEASE=maj.min[.mic[alpha]] if needed) to create both diff and
694 xdelta files between the previous release tarball and the new with
695 detached gpg signature files and clear signed directive files.
697 * Upload release tarball, diff file and xdelta file, plus their associated
698 detached gpg signature files and clear signed directive files to
699 ftp-upload.gnu.org. If the upload is destined for ftp.gnu.org, then the
700 files should be placed in the /incoming/ftp directory. If the upload is
701 an alpha release destined for alpha.gnu.org, then the files should be
702 placed in the /incoming/alpha directory.
704 * Send announcement to libtool@gnu.org and autotools-announce@gnu.org,
705 if not an alpha send to info-gnu@gnu.org as well.
707 * Update version number in configure.ac and libltdl/configure.ac to next
708 alpha number. See http://www.gnu.org/software/libtool/contribute.html
709 for details of the numbering scheme.
711 * Update NEWS, ChangeLog.
715 * Update the webpages, libtool.html will need to indicate the latest
716 release number and the news page should get a HTMLified copy of your
717 release announcement.
719 * If not an alpha, replace manual.html with the new one
720 (generate with `make -f[../]Makefile.maint web-manual').
724 12. Alpha release note template
725 ===============================
727 To: libtool@gnu.org, autotools-announce@gnu.org
728 Subject: GNU Libtool @VERSION@ released (alpha release).
730 The Libtool Team is pleased to announce alpha release @VERSION@ of GNU
733 GNU Libtool hides the complexity of using shared libraries behind a
734 consistent, portable interface. GNU Libtool ships with GNU libltdl,
735 which hides the complexity of loading dynamic runtime libraries
736 (modules) behind a consistent, portable interface.
738 Here are the compressed sources:
740 ftp://alpha.gnu.org/gnu/libtool/libtool-@VERSION@.tar.gz
741 ftp://alpha.gnu.org/gnu/libtool/libtool-@VERSION@.tar.bz2
743 Here are the xdeltas and diffs against libtool-@PREV_RELEASE_VERSION_ON_THIS_BRANCH@:
745 ftp://alpha.gnu.org/gnu/libtool/libtool-@PREV_RELEASE_VERSION_ON_THIS_BRANCH@-@VERSION@.diff.gz
746 ftp://alpha.gnu.org/gnu/libtool/libtool-@PREV_RELEASE_VERSION_ON_THIS_BRANCH@-@VERSION@.xdelta
748 Here are the gpg detached signatures:
750 ftp://alpha.gnu.org/gnu/libtool/libtool-@VERSION@.tar.gz.sig
751 ftp://alpha.gnu.org/gnu/libtool/libtool-@VERSION@.tar.bz2.sig
752 ftp://alpha.gnu.org/gnu/libtool/libtool-@PREV_RELEASE_VERSION_ON_THIS_BRANCH@-@VERSION@.diff.gz.sig
753 ftp://alpha.gnu.org/gnu/libtool/libtool-@PREV_RELEASE_VERSION_ON_THIS_BRANCH@-@VERSION@.xdelta.sig
755 You should download the signature named after any tarball you download,
756 and then verify its integrity with, for example:
758 gpg --verify libtool-@VERSION@.tar.gz.sig
760 Here are the MD5 and SHA1 checksums:
762 @MD5SUM@ libtool-@VERSION@.tar.gz
763 @MD5SUM@ libtool-@VERSION@.tar.bz2
764 @MD5SUM@ libtool-@PREV_RELEASE_VERSION_ON_THIS_BRANCH@-@VERSION@.diff.gz
765 @MD5SUM@ libtool-@PREV_RELEASE_VERSION_ON_THIS_BRANCH@-@VERSION@.xdelta
766 @SHA1SUM@ libtool-@VERSION@.tar.gz
767 @SHA1SUM@ libtool-@VERSION@.tar.bz2
768 @SHA1SUM@ libtool-@PREV_RELEASE_VERSION_ON_THIS_BRANCH@-@VERSION@.diff.gz
769 @SHA1SUM@ libtool-@PREV_RELEASE_VERSION_ON_THIS_BRANCH@-@VERSION@.xdelta
771 This release has @SUMMARY_OF_IMPROVEMENTS_SINCE_LAST_RELEASE_ON_THIS_BRANCH@.
773 This release was bootstrapped with @BOOTSTRAP_TOOLS_WITH_VERSIONS@,
774 but is useable with @COMPATIBLE_AUTOTOOL_VERSIONS@ in your own
777 Alternatively, you can fetch the unbootstrapped source code from
778 anonymous cvs by using the following command:
780 $ cvs -z3 -d :pserver:anonymous@cvs.sv.gnu.org:/sources/libtool \
781 co -r @CVS_RELEASE_TAG@ libtool
783 You will then need to have recent (possibly as yet unreleased) versions
784 of Automake and Autoconf installed to bootstrap the checked out
787 New in @VERSION@: @RELEASE_DATE@
789 @EXCERPT_FROM_NEWS_FILE@
791 Please report bugs to <bug-libtool@gnu.org>, along with the verbose
792 output of any failed test groups, and the output from `./libtool --config.'
793 The README file explains how to capture the verbose test output.
797 13. Full release note template
798 ==============================
801 Cc: libtool@gnu.org, autotools-announce@gnu.org
802 Subject: GNU Libtool @VERSION@ released.
804 The Libtool Team is pleased to announce the release of GNU Libtool
807 GNU Libtool hides the complexity of using shared libraries behind a
808 consistent, portable interface. GNU Libtool ships with GNU libltdl,
809 which hides the complexity of loading dynamic runtime libraries
810 (modules) behind a consistent, portable interface.
812 This release has @SUMMARY_OF_IMPROVEMENTS_SINCE_LAST_RELEASE_ON_THIS_BRANCH@.
814 New in @VERSION@: @RELEASE_DATE@
816 @EXCERPT_FROM_NEWS_FILE@
818 libtool-@VERSION@ is available now from ftp.gnu.org, along with
819 diffs and xdeltas against libtool-@PREV_RELEASE_VERSION_ON_THIS_BRANCH@
820 that are also available from ftp.gnu.org. Please
821 use a mirror to reduce stress on the main gnu machine:
823 http://www.gnu.org/order/ftp.html
825 Here are the compressed sources:
827 ftp://ftp.gnu.org/gnu/libtool/libtool-@VERSION@.tar.gz
828 ftp://ftp.gnu.org/gnu/libtool/libtool-@VERSION@.tar.bz2
830 Here are the xdeltas and diffs against libtool-@PREV_RELEASE_VERSION_ON_THIS_BRANCH@:
832 ftp://ftp.gnu.org/gnu/libtool/libtool-@PREV_RELEASE_VERSION_ON_THIS_BRANCH@-@VERSION@.diff.gz
833 ftp://ftp.gnu.org/gnu/libtool/libtool-@PREV_RELEASE_VERSION_ON_THIS_BRANCH@-@VERSION@.xdelta
835 Here are the gpg detached signatures:
837 ftp://ftp.gnu.org/gnu/libtool/libtool-@VERSION@.tar.gz.sig
838 ftp://ftp.gnu.org/gnu/libtool/libtool-@VERSION@.tar.bz2.sig
839 ftp://ftp.gnu.org/gnu/libtool/libtool-@PREV_RELEASE_VERSION_ON_THIS_BRANCH@-@VERSION@.diff.gz.sig
840 ftp://ftp.gnu.org/gnu/libtool/libtool-@PREV_RELEASE_VERSION_ON_THIS_BRANCH@-@VERSION@.xdelta.sig
842 You should download the signature named after any tarball you download,
843 and then verify its integrity with, for example:
845 gpg --verify libtool-@VERSION@.tar.gz.sig
847 Here are the MD5 and SHA1 checksums:
849 @MD5SUM@ libtool-@VERSION@.tar.gz
850 @MD5SUM@ libtool-@VERSION@.tar.bz2
851 @MD5SUM@ libtool-@PREV_RELEASE_VERSION_ON_THIS_BRANCH@-@VERSION@.diff.gz
852 @MD5SUM@ libtool-@PREV_RELEASE_VERSION_ON_THIS_BRANCH@-@VERSION@.xdelta
853 @SHA1SUM@ libtool-@VERSION@.tar.gz
854 @SHA1SUM@ libtool-@VERSION@.tar.bz2
855 @SHA1SUM@ libtool-@PREV_RELEASE_VERSION_ON_THIS_BRANCH@-@VERSION@.diff.gz
856 @SHA1SUM@ libtool-@PREV_RELEASE_VERSION_ON_THIS_BRANCH@-@VERSION@.xdelta
858 This release was bootstrapped with @BOOTSTRAP_TOOLS_WITH_VERSIONS@,
859 but is useable with @COMPATIBLE_AUTOTOOL_VERSIONS@ in your own
862 Alternatively, you can fetch the unbootstrapped source code from
863 anonymous cvs by using the following command (just hit return when
864 you are prompted for the password):
866 $ cvs -z3 -d :pserver:anonymous@cvs.sv.gnu.org:/sources/libtool \
867 co -r @CVS_RELEASE_TAG@ libtool
869 You will then need to have the latest release versions of Automake
870 (@AUTOMAKE_VERSION@) and Autoconf (@AUTOCONF_VERSION@) installed to
871 bootstrap the checked out sources yourself.
873 Please report bugs to <bug-libtool@gnu.org>, along with the verbose
874 output of any failed test groups, and the output from `./libtool --config.'
875 The README file explains how to capture the verbose test output.
879 Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
880 Written by Gary V. Vaughan, 2004
882 This file is part of GNU Libtool. Report bugs to bug-libtool@gnu.org.
884 GNU Libtool is free software; you can redistribute it and/or
885 modify it under the terms of the GNU General Public License as
886 published by the Free Software Foundation; either version 2
887 of the License, or (at your option) any later version.
889 GNU Libtool is distributed in the hope that it will be useful,
890 but WITHOUT ANY WARRANTY; without even the implied warranty of
891 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
892 GNU General Public License for more details.
894 You should have received a copy of the GNU General Public License
895 along with GNU Libtool; see the file COPYING. If not, a copyi
896 can be downloaded from http://www.gnu.org/licenses/gpl.html,
897 or obtained by writing to the Free Software Foundation, Inc.,
898 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.