-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathREADME.dev
104 lines (87 loc) · 4.51 KB
/
README.dev
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
To use the autotools:
$ aclocal
$ automake -c -a
$ autoconf
$ ./configure --with-gmp=<directory_where_gmp_is_installed>
$ make
$ make check
Alternatively, you can simply type:
$ autoreconf -i
$ ./configure --with-gmp=<directory_where_gmp_is_installed>
$ make
$ make check
Warning: only configure.in and Makefile.am should be in cvs
(the other files are automatically generated)
##############################################################################
Documentation:
- ecm.xml was generated from ecm.1 using doclifter-2.1
./doclifter < ecm.1 > ecm.xml
(http://en.tldp.org/HOWTO/DocBook-Demystification-HOWTO/x181.html
http://www.catb.org/~esr//doclifter/)
See the documentation of ROX-Filer (http://rox.sf.net/) for example
(see rox/ROX-Filer/src/Docs/Manual.xml).
- to generate ecm.html:
$ xsltproc -o ecm.html $XSLDIR/html/docbook.xsl ecm.xml
where XSLDIR is the directory where docbook stylesheets are installed
(e.g. /usr/share/sgml/docbook/xsl-stylesheets-1.65.1-1)
- to generate man format:
$ xsltproc -o ecm.1 $XSLDIR/manpages/docbook.xsl ecm.xml
(or "xmlto man ecm.xml")
- to generate pdf:
$ xmlto pdf ecm.xml
Note: we currently keep ecm.1 in the repository, even though it is a
generated file and not a source. This is to avoid having a dependency
on xsltproc and docbook in every build; these tools are not usually
installed by default in distributions. It does not seem to be possible
to set up the Makefile so ecm.1 is required only for "make install" and
"make dist". We need to list ecm.1 in one of the automake _MANS primaries
to get it installed in the proper man page directory, and when it is
listed in any _MANS primary, it is automatically added to the "am-all"
target which is processed by "make" or "make all".
##############################################################################
To make a new release:
0) Check all tests pass (test.ecm, test.pm1, test.pp1, testlong.pp1),
with or without NTT (./test.ecm "./ecm -no-ntt"),
with or without --enable-openmp,
check the issues in TODO, and for bugs/patches on ecm.gforge.inria.fr.
Check no compiler warnings remain (with and without assertions),
if possible with different compilers (gcc, clang, llvm-gcc, ...)
Check "make longcheck" works (this uses valgrind).
Check that configure works outside the source directory.
Check the default tuning files */params.h (and */*/params.h, see the main
file ecm-params.h) on different platforms:
a) run "make bench_mulredc; ./bench_mulredc"
b) put the last 4 lines in the corresponding */params.h file
c) rune "make tune; ./tune"
d) put the corresponding thresholds in the */params.h file
Compare the efficiency wrt the previous release with "./ecm 1e6 < c200"
and "./ecmbench ./ecm".
Check GMP-ECM compiles and runs with MPIR too (mpir.org).
1) Check the version (configure.in and build.vc*/config.h).
Switch assertions to off by default in configure.in.
2) Update the NEWS file, and check the INSTALL-ecm file is up-to-date
(in particular the versions of GMP and GMP-ECM).
3) Update the ChangeLog file, e.g. svn -v log > /tmp/ChangeLog and edit
ChangeLog to insert /tmp/ChangeLog at the beginning and remove
the duplicated lines.
4) Check the required sizes of P-1, P+1, ECM champions in champions.h.
Check the file config.guess generated by autoconf is recent enough
(use autoconf >= 2.63). See for example
gforge.inria.fr/tracker/index.php?func=detail&aid=7558
5) Generate the release version with "make dist".
6) Test the release version with "make distcheck" (in particular, check
the man page is correctly installed). You might need to redefine
LD_LIBRARY_PATH so that the system libgmp is used.
7) Check the man page (ecm.1) is up to date.
8) If there is no problem, add a tag to the svn version corresponding to the
release, for example:
$ svn cp . svn+ssh://<login>@scm.gforge.inria.fr/svn/ecm/tags/6.2
or more detailed:
$ svn cp -r1307 svn+ssh://<login>@scm.gforge.inria.fr/svn/ecm/trunk \
svn+ssh://<login>@scm.gforge.inria.fr/svn/ecm/tags/6.2.1 \
-m "Tagging r1307 as version 6.2.1"
Version 6.2 is r1290, 6.2.1 is r1307, 6.3 is r1501, 6.4 is r1672,
6.4.1 is r1844, 6.4.2 is r1882, 6.4.3 is r2100, 6.4.4 is r2439.
To see the differences between a given tag and the current version:
$ svn diff --old=svn+ssh://<login>@scm.gforge.inria.fr/svn/ecm/tags/6.2.1 \
--new=svn+ssh://<login>@scm.gforge.inria.fr/svn/ecm/trunk