- Return error messages via retval argument, leave logging to caller.
Actually simplifies things somewhat, and paves way for saner API
wrt error messages - not all callers want rpmlog() spew.
- Wouldn't be surprised in the slightest if various details here
changed before an actual release, but its a start.
- Simple testcase showing spec file extraction from an src.rpm.
Which also goes to show just how low-level our APIs are...
- Allow loading custom macro files from eg specs. This is quite different
from %include which inlines arbitrary content into a spec, but which
cannot be used for including macro files as their syntax is entirely
different. Both have their uses.
- rpm5.org also supports %load within macro files, we dont as I find the
imperative %load very alien in what's otherwise an entirely declarative
file "format"
- Without --index in apply, any file additions will not be committed and
in case the patch contains *only* file addition the macro can fail
completely (empty commit). With --index there's no need for -a in
commit either.
- Similarly to Group, Summary etc, this is complicated by possible
presence of language-specific versions, but now that we have a
function to handle it...
- Should *really* close out ticket #27
- Check for per-package duplicate Group, Summary, Distribution, Vendor,
License and Packager tags in specs. This is slightly tricky as there
can be any number of different language variants present - see whether
the number of strings in the tag itself or header i18n tag grew
by adding something. If not, then its a dupe.
- Should close out remaining issues in ticket #27
- A long time ago in a far away commit, "somebody" had this less than
brilliant idea that calling gethostbyname() loads all the required
name service libraries (commit 39b75d24cf).
This is of course only true if hosts db happens to use the same
database as passwd and group... which often is the case, but by
no means guaranteed or always the case.
- Add an explicit initializer for rpmug to force loading the name service
libraries early in initialization so we dont need to worry about going
chroot later on. Of course, the "host" name service configuration might
not actually make sense for the chroot, but this commit doesn't make
that any worse than it already was.
- The original case of empty string ending up in a dependency is already
taken care of by commit 66a01c977e and
soname filtering. However if filtering is disabled, an an empty
(or all-whitespace) soname will produce gems like "()(64bit)" on
multilib arches, so we need to sanity check the soname itself in
elfdeps.
- The linker doesn't seem to care what kind of junk the soname contains,
we care just a little bit more as eg empty strings and whitespace
messes up other things.
- This allows simplifying the make invokations from specs. In particular
the parallel build options no longer need to be messed with from specs,
and %__make can be overridden to force a different make implementation
to be used throughout the spec.
- While a lot of software builds correctly in parallel, there are always
exceptions... together with _smp_ncpus_max macro this can now be
expressed with a separate "%global _smp_ncpus_max 1" (or any other
arbitrary value beyond which parallel build is buggy) line which
is easy to grep for and experiment with.
- Makes the max number of cpu's used by %{_smp_mflags} configurable
on spec, user or system level.
- Originally reported as RhBug:669638 and included in redhat-rpm-config
in RHEL/Fedora, but makes sense to have generally available.
- Should've really been in commit cf07feda05
- This kinda points out stupid these manually maintained %fooarch
macros are, nobody remembers to update them.
- For to-be-removed packages, we should only "correct" symlink fingerprints
if the packaged link actually exists on disk, otherwise eg %pretrans hacks
to do symlink -> directory replacement wont work as expected,
as shown here with a reproducer and all:
https://lists.fedoraproject.org/pipermail/devel/2013-December/193266.html
In the old package, "hello" is in /usr/share/javadoc/test-1/ directory,
to which the "test" symlink points to. In the new package,
/usr/share/javadoc/test/ is a directory with "hello" file in it.
Symlink correction causes the "hello" fingerprint to match between
old and new, leading to erase of the old package not removing the
"hello" file of the old package. Which is correct, except when
the symlink has been removed, as is done here by %pretrans of the
new package.
- rpmfiles is represented as a sequence of individual files, thus
its iterable as-is
- Individual files are handled internally as index on rpmfiles handle,
all data made available as read-only properties
- We can now consider the old, bizarre rpm.fi bindings as deprecated
- The paths defined in macros.perl have never even existed in rpm,
would've always been suspect and nowadays mostly just plain useless
as they'd only be used by the deprecated external dependency
generator.
- Python users are unlikely to have much use for this thing as such,
python has plenty enough native datatypes to not bother with rpm
specialties. The primary reason for adding it is to allow utilizing
a shared string pool for various rpm objects from python side as
well. That'd only require being able to pass the pointer around
for which we wouldn't need a full-blown object, but otoh creating
test-suitet cases in python is nicer than in C so having at least
the base methods available wont hurt...
- Rename the file index argument for rpmfnDI(), rpmfilesDI() and
rpmfilesODI() to ix for consistency with other file index arguments
- Document rpmfilesDI() and rpmfilesODI() and its usage with rpmfilesDN()
and rpmfilesODN()
- rpmfiles API is mostly a copy-paste of rpmfi with index argument
added
- clarify rpmfi.h docs to speak about "file info set iterator",
rpmfiles.h is the "file info set" thing now