2008-04-29 12:55:25 +00:00
|
|
|
Release Reminders
|
|
|
|
=================
|
|
|
|
|
2012-07-22 00:35:00 +00:00
|
|
|
* When making a release, always remember to run large file tests and
|
|
|
|
image comparison tests (--enable-test-compare-images
|
|
|
|
--with-large-file-test-path=/path). For a major release, consider
|
|
|
|
running a spelling checker over the source code to catch errors in
|
2012-07-29 18:32:54 +00:00
|
|
|
variable names, strings, and comments. Use ispell -p ispell-words.
|
2012-07-11 03:32:52 +00:00
|
|
|
|
2017-08-10 01:48:01 +00:00
|
|
|
* Run tests with sanitize address enabled:
|
|
|
|
|
|
|
|
./configure CFLAGS="-fsanitize=address -g" \
|
|
|
|
CXXFLAGS="-fsanitize=address -g" \
|
|
|
|
LDFLAGS="-fsanitize=address" \
|
|
|
|
--enable-werror --disable-shared
|
|
|
|
|
2011-08-11 15:56:37 +00:00
|
|
|
* Consider running tests with latest gcc and/or valgrind. To do
|
|
|
|
this, replace, build with debugging and without shared libraries.
|
|
|
|
In build, create z and move each executable into z. Then create a
|
|
|
|
script called exec-z that contains:
|
|
|
|
|
|
|
|
#!/bin/sh
|
|
|
|
exec valgrind --suppressions=/tmp/a.supp -q \
|
|
|
|
`dirname $0`/z/`basename $0` ${1+"$@"}
|
|
|
|
|
2012-06-26 01:32:38 +00:00
|
|
|
Symlink exec-z to each executable. /tmp/a.supp can be populated
|
2011-08-11 15:56:37 +00:00
|
|
|
with suppressions for libraries, for example:
|
|
|
|
|
|
|
|
{
|
|
|
|
zlib1
|
|
|
|
Memcheck:Cond
|
|
|
|
fun:inflateReset2
|
|
|
|
fun:inflateInit2_
|
|
|
|
}
|
2013-07-10 16:16:21 +00:00
|
|
|
{
|
|
|
|
index
|
|
|
|
Memcheck:Cond
|
|
|
|
fun:index
|
|
|
|
fun:expand_dynamic_string_token
|
|
|
|
fun:_dl_map_object
|
|
|
|
fun:map_doit
|
|
|
|
}
|
2011-08-11 15:56:37 +00:00
|
|
|
|
|
|
|
You can generate these by running valgrind with --gen-suppressions=yes.
|
|
|
|
|
2012-12-31 15:52:00 +00:00
|
|
|
* Check all open issues in the sourceforge trackers and on github.
|
2011-06-23 18:47:36 +00:00
|
|
|
|
2010-10-03 22:47:50 +00:00
|
|
|
* If any interfaces were added or changed, check C API to see whether
|
2013-03-25 18:37:25 +00:00
|
|
|
changes are appropriate there as well. If necessary, review the
|
|
|
|
casting policy in the manual, and ensure that integer types are
|
|
|
|
properly handled.
|
2010-10-03 22:47:50 +00:00
|
|
|
|
2013-10-05 23:42:39 +00:00
|
|
|
* Remember to avoid using operator[] with std::string or
|
|
|
|
std::vector. See README.hardening for details.
|
|
|
|
|
2017-08-11 09:05:05 +00:00
|
|
|
* Increment shared library version information as needed (LT_* in
|
|
|
|
configure.ac)
|
2008-04-29 12:55:25 +00:00
|
|
|
|
2010-06-06 14:47:38 +00:00
|
|
|
* Update release notes in manual -- look at diffs and ChangeLog
|
2010-01-25 01:21:06 +00:00
|
|
|
|
2008-05-07 15:47:43 +00:00
|
|
|
* Add a release entry to ChangeLog
|
2008-05-05 14:46:44 +00:00
|
|
|
|
2008-04-29 12:55:25 +00:00
|
|
|
* Make sure version numbers are consistent in the following
|
|
|
|
locations:
|
|
|
|
|
|
|
|
configure.ac
|
2009-10-24 04:47:17 +00:00
|
|
|
libqpdf/QPDF.cc
|
2008-04-29 12:55:25 +00:00
|
|
|
manual/qpdf-manual.xml
|
|
|
|
|
2008-06-30 14:48:16 +00:00
|
|
|
make_dist verifies this consistency.
|
2008-04-29 12:55:25 +00:00
|
|
|
|
2012-07-31 17:53:00 +00:00
|
|
|
* Update release date in manual/qpdf-manual.xml. Remember to ensure
|
|
|
|
that the entities at the top of the document are consistent with
|
|
|
|
the release notes for both version and release date.
|
2009-09-27 20:33:17 +00:00
|
|
|
|
2010-08-14 16:43:18 +00:00
|
|
|
* Check TODO file to make sure all planned items for the release are
|
|
|
|
done or retargeted.
|
|
|
|
|
2015-10-31 23:01:09 +00:00
|
|
|
* Each year, update copyright notices. Just do a case-insensitive
|
|
|
|
search for copyright. Don't forget copyright in manual. Also update
|
|
|
|
debian copyright in debian package. Last updated: 2015.
|
2008-04-29 12:55:25 +00:00
|
|
|
|
|
|
|
* To construct a source distribution from a pristine checkout,
|
2008-06-30 14:48:51 +00:00
|
|
|
make_dist does the following:
|
2008-04-29 12:55:25 +00:00
|
|
|
|
2010-03-27 13:17:17 +00:00
|
|
|
./autogen.sh
|
2011-06-23 18:40:37 +00:00
|
|
|
./configure --enable-doc-maintenance --enable-werror
|
2008-04-29 12:55:25 +00:00
|
|
|
make build_manual
|
|
|
|
make distclean
|
|
|
|
|
2008-05-07 15:47:43 +00:00
|
|
|
* To create a source release, do an export from the version control
|
2011-08-11 18:22:28 +00:00
|
|
|
system to a directory called qpdf-version. For example, from this
|
|
|
|
directory:
|
|
|
|
|
2011-08-11 19:37:20 +00:00
|
|
|
rm -rf /tmp/qpdf-x.y.z
|
2011-08-11 18:22:28 +00:00
|
|
|
git archive --prefix=qpdf-x.y.z/ HEAD . | (cd /tmp; tar xf -)
|
|
|
|
|
|
|
|
From the parent of that directory, run make_dist with the directory
|
|
|
|
as an argument. Remember to have fop in your path. For internally
|
|
|
|
testing releases, you can run make_dist with the --no-tests option.
|
2008-05-07 15:47:43 +00:00
|
|
|
|
2009-10-23 16:44:13 +00:00
|
|
|
* To create a source release of external libs, do an export from the
|
|
|
|
version control system into a directory called qpdf-external-libs
|
|
|
|
and just make a zip file of the result called
|
|
|
|
qpdf-external-libs-src.zip. See the README.txt file there for
|
2017-08-11 00:24:16 +00:00
|
|
|
information on creating binary external libs releases. Run this
|
|
|
|
from the external-libs repository:
|
|
|
|
|
|
|
|
git archive --prefix=external-libs/ HEAD . | (cd /tmp; tar xf -)
|
|
|
|
cd /tmp
|
|
|
|
zip -r qpdf-external-libs-src.zip external-libs
|
2009-10-23 16:44:13 +00:00
|
|
|
|
|
|
|
* To create Windows binary releases, extract the qpdf source
|
2010-04-25 15:06:13 +00:00
|
|
|
distribution in Windows (MSYS + MINGW, MSVC). From the extracted
|
|
|
|
directory, extract the binary distribution of the external
|
|
|
|
libraries. Run ./make_windows_releases from there. You will need
|
|
|
|
to have zip in your path.
|
2009-10-23 16:44:13 +00:00
|
|
|
|
2012-12-31 15:52:00 +00:00
|
|
|
* Before releasing, rebuild and test debian package.
|
|
|
|
|
2009-10-23 16:44:13 +00:00
|
|
|
* Remember to copy README-what-to-download.txt separately onto the
|
2012-09-07 01:33:27 +00:00
|
|
|
download area.
|
2009-10-23 16:44:13 +00:00
|
|
|
|
2010-08-15 00:04:53 +00:00
|
|
|
* Remember to update the web page including putting new documentation
|
|
|
|
in the "files" subdirectory of the website on sourceforge.net.
|
2008-04-29 12:55:25 +00:00
|
|
|
|
2009-10-24 04:47:17 +00:00
|
|
|
* Create a tag in the version control system, and make backups of the
|
2012-06-03 17:39:09 +00:00
|
|
|
actual releases. With git, use git tag -s to create a signed tag:
|
|
|
|
|
2013-04-14 18:39:59 +00:00
|
|
|
git tag -s release-qpdf-$version HEAD -m"qpdf $version"
|
2009-02-15 16:31:12 +00:00
|
|
|
|
2012-07-29 18:32:54 +00:00
|
|
|
* When releasing on sourceforge, external-libs distributions go in
|
2012-09-07 01:33:27 +00:00
|
|
|
external-libs/yyyymmdd, and qpdf distributions go in qpdf/vvv.
|
|
|
|
Make the source package the default for all but Windows, and make
|
|
|
|
the 32-bit mingw build the default for Windows.
|
2009-10-23 16:44:13 +00:00
|
|
|
|
2010-03-27 16:12:32 +00:00
|
|
|
|
2008-04-29 12:55:25 +00:00
|
|
|
General Build Stuff
|
|
|
|
===================
|
|
|
|
|
2008-05-05 14:46:44 +00:00
|
|
|
QPDF uses autoconf and libtool but does not use automake. The only
|
|
|
|
files distributed with the qpdf source distribution that are not
|
2009-09-26 15:47:45 +00:00
|
|
|
controlled are "configure", "libqpdf/qpdf/qpdf-config.h.in",
|
|
|
|
"aclocal.m4", and some documentation. See above for the steps
|
|
|
|
required to prepare a source distribution.
|
2008-04-29 12:55:25 +00:00
|
|
|
|
|
|
|
A small handful of additional files have been taken from autotools
|
|
|
|
programs. These should probably be updated from time to time.
|
|
|
|
|
2009-09-26 15:42:39 +00:00
|
|
|
* config.guess, config.sub, ltmain.sh, and the m4 directory: these
|
|
|
|
were created by running libtoolize -c. To update, run libtoolize
|
|
|
|
-f -c or remove the files and rerun libtoolize.
|
2008-04-29 12:55:25 +00:00
|
|
|
|
|
|
|
* Other files copied as indicated:
|
|
|
|
|
2009-09-26 15:42:39 +00:00
|
|
|
cp /usr/share/automake-1.11/install-sh .
|
|
|
|
cp /usr/share/automake-1.11/mkinstalldirs .
|
2008-04-29 12:55:25 +00:00
|
|
|
|
2009-09-26 15:42:39 +00:00
|
|
|
The entire contents of the m4 directory came from libtool.m4. If we
|
|
|
|
had some additional local parts, we could also add those to the m4
|
|
|
|
directory. In order for this to work, it is necessary to run "aclocal
|
|
|
|
-I m4" before running autoheader and autoconf.
|
2008-04-29 12:55:25 +00:00
|
|
|
|
|
|
|
If building or editing documentation, configure with
|
|
|
|
--enable-doc-maintenance. This will ensure that all tools or files
|
|
|
|
required to validate and build documentation are available.
|
|
|
|
|
|
|
|
If you want to run make maintainer-clean or make distclean and you
|
|
|
|
haven't run ./configure, you can pass CLEAN=1 to make on the command
|
|
|
|
line to prevent it from complaining about configure not having been
|
|
|
|
run.
|
2015-05-24 20:46:36 +00:00
|
|
|
|
|
|
|
Local Windows Testing Procedure
|
|
|
|
===============================
|
|
|
|
|
|
|
|
This is what I do for routine testing on Windows.
|
|
|
|
|
|
|
|
From Linux, run ./autogen.sh and make autofiles.zip
|
|
|
|
|
|
|
|
From Windows in git bash, git clone from my Linux clone, unzip
|
|
|
|
external-libs, and unzip autofiles.zip.
|
|
|
|
|
|
|
|
Look at make_windows_releases. Set up path the same way and run
|
|
|
|
whichever ./config-* is appropriate for whichever compiler I need to
|
|
|
|
test with. Run from msys started from one of the visual studio command
|
|
|
|
line shells. The build doesn't work from git bash on my local system.
|