I have been toying with the idea of volunteering to be Release
Manager. I am not ready to do so yet as I have run into numerous
problems.

The docs are decent but they are definitely written to an audience
that knows a lot of things that I do not and it feels like a lot of
knowledge is just assumed. Keep in mind I am a MacOS/Windows user with
no Python experience. My main fear is running into a problem during
the process where the script needs to be fixed and not being able to
do it. I do not have Mike/Paul on speed dial to help me any more.

It would probably be helpful if someone saved a start to finish log of
all of the commands they ran and from what directory when they were
RM.

The release.py script implies you can/should run the process from
people.apache.org. I have no idea what that is, how I would access it,
or what the experience would be like once I was there. I imagine you
SSH into the box and I would assume you would do everything in your
home folder if you did this, but the docs use /opt/svnrm as the
example and it seems weird you would use a folder like this on a
shared system.

At the moment, I am not considering this option. Since I do not have a
Linux machine available, I am trying to use Docker to build a Debian
image to run the process.

I am running everything as root. I could change it to a user account
if it would fix my problems.

I should note up front that I do not have a GPG key so I would need to
create a new one and "do something" before I begin. The key I used to
use when signing releases was lost about 4 computers ago. I do note
that HACKING mentions if you use people.a.o you do not do the signing
from there. So I guess you use scp or something to pull the files down
to sign them locally and then push your signatures back up to
people.a.o after?

Problem 1: Rolling the tarballs

The process creates the tarballs but fails near the end. It looks GPG related?

   /opt/svnrm# python trunk/tools/dist/release.py build-env 1.14.0
   INFO:root:Creating release environment
   INFO:root:Fetching autoconf-2.69
   INFO:root:Building autoconf
   INFO:root:Fetching libtool-2.4.6
   INFO:root:Building libtool
   ar: `u' modifier ignored since `D' is the default (see `U')
   ar: `u' modifier ignored since `D' is the default (see `U')
   INFO:root:Fetching swig-3.0.12
   INFO:root:Building swig
   root@40beb55e988a:/opt/svnrm# python trunk/tools/dist/release.py
roll 1.14.2 1899108
   INFO:root:Rolling release 1.14.2 from branch branches/1.14.x@1899108
   WARNING:root:Copyright year in NOTICE is not the current year
   WARNING:root:Copyright year in subversion/libsvn_subr/version.c is
not the current year
   WARNING:root:CHANGES has unmerged revisions: r1886201 r1886461 r1898187
   INFO:root:Preparing working copy source
   INFO:root:Building Windows tarballs
   ../svnadmin/svnadmin.c:2935: warning: Although being used in a
format string position, the msgid is not a valid C format string.
Reason: The string ends in the middle of a directive.
   ../libsvn_fs_fs/verify.c:696: warning: Although being used in a
format string position, the msgid is not a valid C format string.
Reason: The string ends in the middle of a directive.
   INFO:root:Building Unix tarballs
   INFO:root:Moving artifacts and calculating checksums
   Traceback (most recent call last):
     File "trunk/tools/dist/release.py", line 1916, in <module>
       main()
     File "trunk/tools/dist/release.py", line 1912, in main
       args.func(args)
     File "trunk/tools/dist/release.py", line 983, in roll_tarballs
       download_file(KEYS, filepath, None)
     File "trunk/tools/dist/release.py", line 289, in download_file
       response = urlopen(url)
     File "/usr/lib/python2.7/urllib2.py", line 154, in urlopen
       return opener.open(url, data, timeout)
     File "/usr/lib/python2.7/urllib2.py", line 435, in open
       response = meth(req, response)
     File "/usr/lib/python2.7/urllib2.py", line 548, in http_response
       'http', request, response, code, msg, hdrs)
     File "/usr/lib/python2.7/urllib2.py", line 473, in error
       return self._call_chain(*args)
     File "/usr/lib/python2.7/urllib2.py", line 407, in _call_chain
       result = func(*args)
     File "/usr/lib/python2.7/urllib2.py", line 556, in http_error_default
       raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
   urllib2.HTTPError: HTTP Error 404: Not Found


Problem 2: Test failure

One of the lock_tests consistently fails.

I have confirmed I get this failure using the 1.14.1 tarball so I
assume it is related to running the tests inside Docker. If this ends
up being the only problem, I could probably just safely ignore it and
let the others that sign the release verify the tests all work for
them.

At least one test FAILED, checking /opt/svnrm/subversion-1.14.1/tests.log
FAIL:  locks-test 14: lock/unlock when 'write-lock' couldn't be obtained
Summary of test results:
  2518 tests PASSED
  163 tests SKIPPED
  80 tests XFAILED (17 WORK-IN-PROGRESS)
  1 test FAILED
Python version: 2.7.16.

The log just contains:

START: locks-test
PASS:  locks-test 1: test that locks can expire
PASS:  locks-test 2: lock only
PASS:  locks-test 3: lookup lock by path
PASS:  locks-test 4: attach lock
PASS:  locks-test 5: get locks
PASS:  locks-test 6: basic locking
PASS:  locks-test 7: test that locking requires proper credentials
PASS:  locks-test 8: test that locking is enforced in final commit step
PASS:  locks-test 9: dir propchange can be committed with locked child
PASS:  locks-test 10: breaking, stealing, refreshing a lock
PASS:  locks-test 11: check out-of-dateness before locking
PASS:  locks-test 12: lock multiple paths
PASS:  locks-test 13: lock callback error
svn_tests: E200006: Expected error but got SVN_NO_ERROR
FAIL:  locks-test 14: lock/unlock when 'write-lock' couldn't be obtained
PASS:  locks-test 15: lock parent and it's child
END: locks-test
ELAPSED: locks-test 0:00:03.292816

Problem 3: Python bindings tests fail

I have tried this using Debian Buster and Python 2 and Debian Bullseye
and Python 3. The Perl and Ruby bindings are working OK. I am still
having some trouble with JavaHL but feel like I will figure that one
out.  I have not tried the ctypes bindings yet.

This fails using the 1.14.1 tarball as well as when I make a trial run
using release.py

# make check-swig-py
if [ "LD_LIBRARY_PATH" = "DYLD_LIBRARY_PATH" ]; then for d in
/opt/svnrm/subversion-1.14.1/subversion/bindings/swig/python/libsvn_swig_py
/opt/svnrm/subversion-1.14.1/subversion/bindings/swig/python/../../../libsvn_*;
do if [ -n "$DYLD_LIBRARY_PATH" ]; then
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$d/.libs"; else
LD_LIBRARY_PATH="$d/.libs"; fi; done; export LD_LIBRARY_PATH; fi; \
cd /opt/svnrm/subversion-1.14.1/subversion/bindings/swig/python; \
  /usr/bin/python
/opt/svnrm/subversion-1.14.1/subversion/bindings/swig/python/tests/run_all.py
Traceback (most recent call last):
  File 
"/opt/svnrm/subversion-1.14.1/subversion/bindings/swig/python/tests/run_all.py",
line 23, in <module>
    import mergeinfo, core, client, delta, checksum, pool, fs, ra, wc,
repository, \
  File 
"/opt/svnrm/subversion-1.14.1/subversion/bindings/swig/python/tests/mergeinfo.py",
line 22, in <module>
    from svn import core, repos, fs
  File 
"/opt/svnrm/subversion-1.14.1/subversion/bindings/swig/python/svn/core.py",
line 26, in <module>
    from libsvn.core import *
  File 
"/opt/svnrm/subversion-1.14.1/subversion/bindings/swig/python/libsvn/core.py",
line 144
    def apr_initialize() -> "apr_status_t":
                         ^
SyntaxError: invalid syntax
make: *** [Makefile:944: check-swig-py] Error 1


Problem 4: Emails

I have no idea how to send the emails from my Apache address

Problem 5: Unknowns

Since I have not been able to dry run the entire process I am still
unsure what else I will run into and how I would solve those problems.

At this point, I do not know if I should or will volunteer, but if I
can get to a point where I feel like I understand the process and it
is all working for me then I might be willing to give it a try.

Mark

PS - Example Dockerfile I am currently using to build the clean room.
Once I got things working, I was going to automate a bit more of the
construction of the environment.

FROM debian:buster

RUN apt update && apt install -y \
python python-yaml python-dev py3c-dev\
build-essential \
subversion \
zip unzip \
apache2 apache2-dev\
pax gettext m4\
libserf-dev\
zlib1g-dev\
libssl-dev\
liblz4-dev\
libutf8proc-dev\
libperl-dev\
ruby ruby-dev\
openjdk-11-jdk-headless junit\
&& apt clean

Reply via email to