• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..04-Feb-2021-

backport/H04-Feb-2021-990719

backport_tests_data/H04-Feb-2021-4,9353,688

security/H04-Feb-2021-2,2371,703

templates/H04-Feb-2021-725468

README.advisoryH A D05-Dec-20152.6 KiB7955

README.backportH A D12-Feb-20183 KiB8656

advisory.pyH A D25-Oct-20166.4 KiB183135

backport.plH A D03-May-202242.4 KiB1,3441,024

backport_tests.pyH A D25-Mar-202024 KiB717405

backport_tests_pl.pyH A D30-Mar-20152.2 KiB5419

backport_tests_py.pyH A D30-Mar-20152.1 KiB5524

changes-to-html.pyH A D13-Sep-20182.3 KiB8947

checksums.pyH A D25-Mar-20203.2 KiB11460

detect-conflicting-backports.pyH A D20-Oct-20164.1 KiB12477

dist.shH A D06-Aug-201713.5 KiB417275

edit-N-log-messagesH A D24-Dec-20172.8 KiB9553

extract-for-examination.shH A D19-Nov-20091,005 3814

merge-approved-backports.pyH A D20-Oct-20161.7 KiB5426

nightly.shH A D21-May-20192.9 KiB9950

nominate.plH A D03-May-202242.4 KiB1,3441,024

rat-excludesH A D30-Jul-20151.3 KiB5049

release-lines.yamlH A D25-Mar-20201.4 KiB3128

release.pyH A D25-Mar-202075.2 KiB1,9171,355

test.shH A D19-Nov-20092 KiB6332

README.advisory

1A guide to sending security advisory e-mails
2============================================
3
4--------------------------------------------------------
5Step 1: Prepare the advisory texts, patches and metadata
6--------------------------------------------------------
7
8[details are covered elsewhere]
9
10----------------------------------
11Step 2: Prepare the website update
12----------------------------------
13
14  $ cd ${PMC_AREA_WC}/security
15  $ ${TRUNK_WC}/tools/dist/advisory.py generate \
16        --destination=${SITE_WC}/publish/security \
17        CVE-2015-5259 CVE-2015-5343 ...
18
19This will generate a plain-text version of the advisories, including
20patches etc., suitable for publishing on our web site. Once these
21are generated, make sure you add the links to the new files to:
22
23    ${SITE_WC}/publish/security/index.html
24
25
26-----------------------------------------------
27Step 3: Check the advisories and their metadata
28-----------------------------------------------
29
30  $ cd ${PMC_AREA_WC}/security
31  $ ${TRUNK_WC}/tools/dist/advisory.py test \
32        --username=someone \
33        --revision=22091347 \
34        --release-versions=1.8.15,1.9.3 \
35        --release-date=2015-12-15 \
36        CVE-2015-5259 CVE-2015-5343 ...
37
38Assuming all the required bits are in place, this will generate the
39complete text of a GPG-signed e-mail message, signed by and sent from
40someone@apache.org, for all the listed CVE numbers.
41
42Note the arguments:
43
44    --revision    is the revision on
45                  https://dist.apache.org/repos/dist/dev/subversion
46                  in which the tarballs are/will be available
47                  (see: notice-template.txt in ${PMC_AREA_WC}/security).
48
49    --release-versions   is a comma-separated list of version numbers
50                         in which fixes for the CVE numbers will be
51                         available.
52
53    --release-date       is the expected date of the release(s).
54
55
56----------------------
57Step 4: Send the mails
58----------------------
59
60  $ cd ${PMC_AREA_WC}/security
61  $ ${TRUNK_WC}/tools/dist/advisory.py send \
62        (the rest of the arguments are as in step 3).
63
64The mails will be sent one at a time to each recipient separately.
65
66
67--------------------------------------------------
68Step 5: Wait for the release. Release.
69        Commit the site update prepared in step 1.
70--------------------------------------------------
71
72
73
74TODO: security/mailer.py does not calculate the micalg= PGP/MIME
75      parameter based on the properties of the actual PGP key
76      used. It's currently hard-coded as "pgp-sha512" which *should*
77      be correct for anyone signing these mails with their ASF release
78      signing key.
79

README.backport

1A guide to the various backport scripts:
2========================================
3
4There two primary functions:
5
6F1. Auto-merge bot; the nightly svn-role commits.
7
8F2. Conflicts detector bot; the svn-backport-conflicts-1.9.x buildbot task.
9
10And two interactive functions¹:
11
12F3. Reviewing STATUS nominations and casting votes.
13
14F4. Adding new entries to STATUS.
15
16
17
18The scripts are:
19
20backport.pl:
21    oldest script, implements [F1], [F2], and [F3].  As of Feb 2018, used in
22    production by svn-role (running on svn-qavm3) and by svn-backport-conflicts-1.9.x
23    (a buildbot job).
24
25nominate.pl:
26    Symlink to backport.pl.  Implements [F4].  (The script inspects its argv[0].)
27
28backport_tests_pl.py:
29    Regression tests for backport.pl.
30
31
32backport/*.py:
33    New Python-based library implementation of STATUS parsing (status.py) and
34    of merging nominated revisions (merger.py).  Colloquially referred to as
35    'backport.py', even though there is no script by that name.  Written in
36    Python 3.
37
38    The modules include their unit tests, see 'python3 -munittest
39    backport.status' and 'python3 -munittest backport.merger'.  However,
40    changes to these files should be tested both by the unit tests and by the
41    backport_tests_py.py blackbox/regression tests.
42
43detect-conflicting-backports.py:
44    Implementation of [F2] using backport.py.
45    Not currently used in production.
46
47merge-approved-backports.py:
48    Implementation of [F1] using backport.py.
49    Not currently used in production.
50
51backport_tests_py.py:
52    Regression tests for detect-conflicting-backports.py and merge-approved-backports.py
53
54
55backport_tests.py:
56    Common part of backport_tests_pl.py and backport_tests_py.py.  Uses the
57    svntest framework (../../subversion/tests/cmdline/svntest/), which is
58    written in Python 2.
59
60    Note that backport_tests.py and backport/*.py are written in different
61    languages, so they never 'import' each other.  backport_tests.py invokes
62    detect-conflicting-backports.py, merge-approved-backports.py, and
63    backport.pl in the same manner: through subprocess.check_call().
64
65backport_tests_data/backport*.dump:
66    Expected output files for backport_tests.py; see the BackportTest
67    decorator in backport_tests.py.
68
69
70All scripts can be run with '--help' to display their usage messages.
71
72backport.pl is considered deprecated since backport.py is better architected
73and is written in a language that many more active developers are comfortable
74with.  The unattended jobs [F1] and [F2] should be converted to using
75backport.py whenever someone gets around to do the legwork.  The interactive
76versions [F3] and [F4] are still in active use, however, so the physical
77backport.pl script should be kept around until Python versions of these are
78available.
79
80
81TODO: document that "Notes: ... --accept=foo ..." is parsed, see backport_tests.py #3.
82
83
84¹ For backport.pl's interactive features, see:
85<http://mail-archives.apache.org/mod_mbox/subversion-dev/201503.mbox/%3c20150304225114.GD2036@tarsus.local2%3e>
86