The Python 2.4 style of getting an exception object is forbidden by the
test_exceptions_3 test. Something has to give, and Tito is not being
built for RHEL 5 anymore.
Tito can now build a project with Maven, expose the Maven artifacts to
a Cheetah template, and then build the SRPM (and RPM) using the
rendered template and the Maven artifacts.
Python's read(N) function only guarantees that it will read no more
than N bytes but not that it will return N bytes. This patch adds a
function that will ensure exactly N bytes are read.
Tito passes "git archive" a tree ID. The "git archive" man page states:
git archive behaves differently when given a tree ID versus when
given a commit ID or tag ID. In the first case the current time
is used as the modification time of each file in the archive.
Using the current time means that every time we build the source
tarball, the file fingerprint will change since the metadata in the
tarball changes. We don't want that since build systems track the
fingerprint to see if the actual source has changed.
This process was previously handled in an enigmatic Perl script that
lacked any comments whatsoever. Converting it to well-commented Python
makes the process less mysterious and speedier since Tito doesn't need
to shell out to Perl.
Here's an initial go at getting some bash-completion for the tito
command-line. Module options are a union of those culled from both
"tito MODULE --help" and "man tito" -- there are discrepancies. Some
options were deliberately omitted such as those documented as deprecated
or "avoid using this please". All short options are also omitted as
their completion would not save any typing but would hinder the
accessibility of the longer options.
Instead of being a command line-only option, the string of extra rpmbuild
arguments can now be passed in via the general builder args mechanism, so it
can even be configured from releasers.conf.
Fixes#155
Use unversioned macros for EL6, don't reset python_sitelib on F22+ and
always use the Python binary determined for the OS, not python3 for the
shebang line.
Fixes#167, #168
tito is an easily discovered tool when looking for information on rpm packaging, especially SCM integration.
There are now some useful related tools, like mock's SCM integration, mockchain, Koji, fedpkg, etc that are not especially easily discovered by new packagers. Making these more visible by documenting them in tito's README would be a help to new packagers.
Fixes issue where just build srpm would be deleted as too old if
building for a newer looking disttag in mock. (i.e. f20 building for
f21)
Also generates more correct looking SRPMs in all cases.