platform/upstream/rpm.git
14 years agoPreparing for 4.8.0-beta1 rpm-4.8.0-beta1
Panu Matilainen [Mon, 7 Dec 2009 11:51:48 +0000 (13:51 +0200)]
Preparing for 4.8.0-beta1

14 years agoBump soname for all our libraries
Panu Matilainen [Mon, 7 Dec 2009 11:35:53 +0000 (13:35 +0200)]
Bump soname for all our libraries
- while the "really public" API of librpmio has only been enhanced,
  librpm and librpmbuild use some supposedly internal bits which *have*
  changed considerably, so just to prevent anybody thinking they can
  combine librpmio from rpm 4.7 and librpm from this...
- librpmbuild hasn't seen much real change but some (unfortunately)
  exposed struct members have changed so...
- librpm is mostly compatible but as rpmal has become internal API,
  we need to bump (annoyingly, as nothing actually uses rpmal ... sigh)

14 years agots.check() is supposed to return empty list when no problems
Panu Matilainen [Mon, 7 Dec 2009 10:38:39 +0000 (12:38 +0200)]
ts.check() is supposed to return empty list when no problems

14 years agoDisable the entire rpm.td type for now
Panu Matilainen [Mon, 7 Dec 2009 09:32:51 +0000 (11:32 +0200)]
Disable the entire rpm.td type for now
- need to figure out saner semantics & stuff...

14 years agoMake python header iterator return keys, not values
Panu Matilainen [Mon, 7 Dec 2009 09:21:14 +0000 (11:21 +0200)]
Make python header iterator return keys, not values
- this is how python built-in dictionary works, be consistent with that
- also avoids having to decide what to do with rpm.td type right now...

14 years agoAlways return malloced data from i18n extensions for consistency
Panu Matilainen [Mon, 7 Dec 2009 07:12:44 +0000 (09:12 +0200)]
Always return malloced data from i18n extensions for consistency

14 years agoBump up the python version requirement to match reality
Panu Matilainen [Sat, 5 Dec 2009 09:05:39 +0000 (11:05 +0200)]
Bump up the python version requirement to match reality
- Python >= 2.6 is known to work, 2.5 might be possible with __future__
  imports but until somebody tests it...

14 years agoFix the posix chown test for selinux enabled systems (RhBug:543035)
Panu Matilainen [Wed, 2 Dec 2009 13:30:27 +0000 (15:30 +0200)]
Fix the posix chown test for selinux enabled systems (RhBug:543035)
- on selinux enabled systems, 'ls -l' mode string is longer than
  expected here, just trim the ls output to our expected length

14 years agoBack out overly strict file type check on %ghost files
Panu Matilainen [Wed, 2 Dec 2009 11:22:11 +0000 (13:22 +0200)]
Back out overly strict file type check on %ghost files
- we currently only support creating regular files for %ghosts which
  dont exist in the buildroot, but for files that do exist in the buildroot
  there's no reason to place such limits (eg its perfectly ok to have
  symlinks marked as %ghosts)

14 years agoUse AS_HELP_STRING() for configure option output
Panu Matilainen [Fri, 27 Nov 2009 13:57:44 +0000 (15:57 +0200)]
Use AS_HELP_STRING() for configure option output

14 years agoRemove pointless message translation from check-buildroot
Panu Matilainen [Fri, 27 Nov 2009 13:12:52 +0000 (15:12 +0200)]
Remove pointless message translation from check-buildroot
- these scripts aren't processed for translation and unlikely to ever be...
- fixes the remaining complaint from ticket #62

14 years agoRemove ancient broken scripts from the repository
Panu Matilainen [Fri, 27 Nov 2009 13:10:57 +0000 (15:10 +0200)]
Remove ancient broken scripts from the repository
- also eliminates one more "bashism" complaint of ticket #62

14 years agoFiddling with ulimit settings does not belong to dep extractor scripts
Panu Matilainen [Fri, 27 Nov 2009 12:55:12 +0000 (14:55 +0200)]
Fiddling with ulimit settings does not belong to dep extractor scripts
- fixes one of the bashisms in ticket #62

14 years agoCorrectly pass optional tag argument from hdr.dsFromHeader() (ticket #108)
Panu Matilainen [Fri, 27 Nov 2009 07:28:11 +0000 (09:28 +0200)]
Correctly pass optional tag argument from hdr.dsFromHeader() (ticket #108)

14 years agoDont try to pass anything to rpm.fi() from hdr.fiFromHeader()
Panu Matilainen [Fri, 27 Nov 2009 07:15:56 +0000 (09:15 +0200)]
Dont try to pass anything to rpm.fi() from hdr.fiFromHeader()
- hdr.fiFromHeader() is just a deprecated backwards compatibility dummy
  and doesn't need to pass anything as there were no meaningful
  parameters in older versions

14 years agoDont fail build on unrecognized non-executable files (ticket #105)
Panu Matilainen [Thu, 26 Nov 2009 08:22:41 +0000 (10:22 +0200)]
Dont fail build on unrecognized non-executable files (ticket #105)
- Generally only executable files are critical for dependency extraction,
  whereas oddball application data files can cause unnecessary build
  failure due to libmagic misdetections etc, so just let non-executables
  pass with a warning and mark them as unknown data

14 years agoJust use autoreconf in autogen.sh (ticket #109)
Panu Matilainen [Thu, 26 Nov 2009 07:46:48 +0000 (09:46 +0200)]
Just use autoreconf in autogen.sh (ticket #109)
- instead of doing stuff by "hand" and getting it wrong, let autoreconf
  worry about getting it right (if nothing else, we can then blame
  autoreconf instead of ourselves ;)

14 years agoFix signature password checking result on abnormal conditions (RhBug:496754)
Panu Matilainen [Wed, 25 Nov 2009 14:42:43 +0000 (16:42 +0200)]
Fix signature password checking result on abnormal conditions (RhBug:496754)
- Execve() failure wasn't returning an error code, causing rpm to
  think the password was ok when we couldn't even try verifying
- Stricter return code checking from the password checking child:
  the password can only be ok if the child exits with WIFEXITED() *and*
  WIFEXITCODE() of 0. Also WIFEXITCODE() should only be called if
  WIFEXITED() returns true.

14 years agoWe can't handle OpenPGP subkeys or secret keys, so dont even try
Panu Matilainen [Wed, 25 Nov 2009 13:07:17 +0000 (15:07 +0200)]
We can't handle OpenPGP subkeys or secret keys, so dont even try
- parsing subkeys ends up overwriting data in the main key, causing
  bogus signature checking failures
- this is the final missing piece of RhBug:436812, short of adding
  proper support for subkeys (maybe someday...)

14 years agoDont blow up on headers without requireflags in rpmdsNew()
Panu Matilainen [Tue, 24 Nov 2009 14:57:46 +0000 (16:57 +0200)]
Dont blow up on headers without requireflags in rpmdsNew()

14 years agoNuke leftover debug junk
Panu Matilainen [Tue, 24 Nov 2009 12:36:03 +0000 (14:36 +0200)]
Nuke leftover debug junk

14 years agoSupport constructing header data from python
Panu Matilainen [Tue, 24 Nov 2009 12:27:49 +0000 (14:27 +0200)]
Support constructing header data from python
- no proper i18n string support yet, just the basic types
- basic data type validation only, no overflow checking for integer types
- for lists, validate all items before trying to insert anything
- duplicate tag creation not permitted
- appending not permitted, only assignment (and deletion already)
- there are probably bugs...
- watch out for librpm bugs when passed incomplete headers, ugh

14 years agoDisable rpm.td type for now
Panu Matilainen [Tue, 24 Nov 2009 12:02:52 +0000 (14:02 +0200)]
Disable rpm.td type for now
- its not that clear that exporting the td type is really useful
  (certainly not in its current form), avoid exporting an interface we
  might not want to support

14 years agoFix hdrContains() return value on error
Panu Matilainen [Mon, 23 Nov 2009 14:45:09 +0000 (16:45 +0200)]
Fix hdrContains() return value on error

14 years agoRemove bogus rpmpopt.pot file (ticket #77)
Panu Matilainen [Mon, 23 Nov 2009 13:12:04 +0000 (15:12 +0200)]
Remove bogus rpmpopt.pot file (ticket #77)
- this is supposed to automatically generated on update-po time from
  toplevel rpmpopt file and merged into rpm.pot but has been broken for
  a long long time and also the $ translation marking has been deprecated
  for security reasons

14 years agoRemove hdr.has_key() method, support 'key in h' style instead
Panu Matilainen [Sat, 21 Nov 2009 09:31:50 +0000 (11:31 +0200)]
Remove hdr.has_key() method, support 'key in h' style instead
- Python 3 removed has_key() from dictionaries, as the 'in' way is the
  way of the future support that from the start (has_key() is not in
  any released rpm version so its safe to remove)

14 years agoRemove unnecessary hdr.instance() method
Panu Matilainen [Sat, 21 Nov 2009 09:07:29 +0000 (11:07 +0200)]
Remove unnecessary hdr.instance() method
- this is available through tag extension now, no point having a
  separate method for it

14 years agoTypos in exception messages
Panu Matilainen [Sat, 21 Nov 2009 08:55:24 +0000 (10:55 +0200)]
Typos in exception messages

14 years agoError out early trying to install on readonly fs (ticket #99, RhBug:464750)
Panu Matilainen [Fri, 20 Nov 2009 14:00:06 +0000 (16:00 +0200)]
Error out early trying to install on readonly fs (ticket #99, RhBug:464750)
- simply make readonly filesystems appear as full, preventing install
  early instead of failing with cpio errors in middle of transaction

14 years agoConvert French man page to Unix line-endings
Panu Matilainen [Fri, 20 Nov 2009 09:49:05 +0000 (11:49 +0200)]
Convert French man page to Unix line-endings

14 years agoFix build with binutils-gold (ticket #107)
Panu Matilainen [Fri, 20 Nov 2009 09:12:39 +0000 (11:12 +0200)]
Fix build with binutils-gold (ticket #107)
- patch from Michal Čihař

14 years agoAdd RPMTAG_EPOCHNUM tag extension
Panu Matilainen [Fri, 20 Nov 2009 08:32:47 +0000 (10:32 +0200)]
Add RPMTAG_EPOCHNUM tag extension
- return RPMTAG_EPOCH but convert non-existent epoch to 0, as rpm internals
  treat it

14 years agoAdd spec package type with access to headers to python rpmb module
Panu Matilainen [Thu, 19 Nov 2009 08:51:23 +0000 (10:51 +0200)]
Add spec package type with access to headers to python rpmb module
- permits python to access parsed headers from spec files
- ticket #14, RhBug:462726

14 years agoPermit header object generation from PyCObjects
Panu Matilainen [Thu, 19 Nov 2009 08:16:15 +0000 (10:16 +0200)]
Permit header object generation from PyCObjects
- needed for generating header objects from other extension modules &
  might be handy in some other cases too
- patently type-unsafe but as long as python doesn't provide a better
  way, not really our headache

14 years agoLose the silly specFromSpec()
Panu Matilainen [Wed, 18 Nov 2009 15:41:39 +0000 (17:41 +0200)]
Lose the silly specFromSpec()
- its our own private data structure we're accessing here, no need
  for extra wrappers and nothing outside spec-py.c needs this

14 years agoTurn current python spec methods into read-only attributes via getseters
Panu Matilainen [Wed, 18 Nov 2009 15:28:13 +0000 (17:28 +0200)]
Turn current python spec methods into read-only attributes via getseters
- incompatible, but nobody is really using the spec bindings for
  anything as there's been very little you've been able do with them
- having the stuff accessible as getseters means we dont need 50 different
  fooSet() methods if/when we permit modifying these from python

14 years agoSanitize python spec.sources()
Panu Matilainen [Wed, 18 Nov 2009 15:16:45 +0000 (17:16 +0200)]
Sanitize python spec.sources()
- spec without sources is perfectly valid, just return an empty list
  instead of invalid NULL return without exception set and simplify

14 years agoPut a bit of sanity into python spec methods
Panu Matilainen [Wed, 18 Nov 2009 15:03:32 +0000 (17:03 +0200)]
Put a bit of sanity into python spec methods
- prep, build etc missing from spec are not errors
- instead of returning NULLs (with no exception set!), just return None
  for anything that doesn't exist
- dont bother with NULL checks, if s->spec is NULL then something else
  has screwed up big time

14 years agoOops, tp_dealloc doesn't return anything
Panu Matilainen [Wed, 18 Nov 2009 10:21:41 +0000 (12:21 +0200)]
Oops, tp_dealloc doesn't return anything

14 years agoFix rpmProblem reference counting in python bindings
Panu Matilainen [Wed, 18 Nov 2009 09:33:57 +0000 (11:33 +0200)]
Fix rpmProblem reference counting in python bindings

14 years agoDeclare a few python functions only taking one argument as such
Panu Matilainen [Wed, 18 Nov 2009 09:22:55 +0000 (11:22 +0200)]
Declare a few python functions only taking one argument as such

14 years agoRip python checkSignals() wtf'ery
Panu Matilainen [Wed, 18 Nov 2009 09:17:51 +0000 (11:17 +0200)]
Rip python checkSignals() wtf'ery
- since the function takes no arguments, declare it as such...

14 years agoPython archscore() only ever takes one argument, simplify
Panu Matilainen [Wed, 18 Nov 2009 08:54:58 +0000 (10:54 +0200)]
Python archscore() only ever takes one argument, simplify

14 years agoMake python ts.problems() return a python list, not rpm.ps object
Panu Matilainen [Wed, 18 Nov 2009 08:41:26 +0000 (10:41 +0200)]
Make python ts.problems() return a python list, not rpm.ps object
- rpm.ps object only supports iteration and subscript (with wonderfully
  wacko semantics), returning a regular list serves us better
- rip the now useless rpm.ps object type

14 years agoRemove unused psFromPs()
Panu Matilainen [Wed, 18 Nov 2009 07:40:30 +0000 (09:40 +0200)]
Remove unused psFromPs()

14 years agoEliminate broken rpmps append() method from python bindings (RhBug:538218)
Panu Matilainen [Wed, 18 Nov 2009 07:35:41 +0000 (09:35 +0200)]
Eliminate broken rpmps append() method from python bindings (RhBug:538218)
- The code to insert new problems has been using invalid conversion code
  causing crashes since 2004 and nobody noticed, safe to say this is an
  unused interface. Additionally the method argument flags were wrong, it
  was declared as METH_VARARGS but actually expected METH_O semantics. RIP.

14 years agoAdd in-memory hash for caching rpmdb dependency lookups
Panu Matilainen [Fri, 30 Oct 2009 11:31:01 +0000 (13:31 +0200)]
Add in-memory hash for caching rpmdb dependency lookups
- worst case behavior for uncached dependency lookups can be disastrous,
  eg > 35s vs < 1s on my laptop for trying to remove /bin/sh provider
- we only bother caching rpmdb lookups, the other cases plenty fast already
- using in-memory cache avoids nasty in vs out of chroot issues with
  temporary db files, which otherwise were about as fast

14 years agoDocument our new format extensions
Panu Matilainen [Fri, 30 Oct 2009 07:37:36 +0000 (09:37 +0200)]
Document our new format extensions

14 years agoAdd file verifyflags format extension
Panu Matilainen [Fri, 30 Oct 2009 07:33:26 +0000 (09:33 +0200)]
Add file verifyflags format extension

14 years agoAdd file state format extension
Panu Matilainen [Fri, 30 Oct 2009 07:15:36 +0000 (09:15 +0200)]
Add file state format extension

14 years agoUpdate rpmtd formats comments to match reality
Panu Matilainen [Fri, 30 Oct 2009 07:13:08 +0000 (09:13 +0200)]
Update rpmtd formats comments to match reality
- we dont require exact int32 etc types, any numeric type works

14 years agoConvert relative imports within rpm package to absolute imports
David Malcolm [Thu, 15 Oct 2009 19:14:58 +0000 (15:14 -0400)]
Convert relative imports within rpm package to absolute imports

14 years agoPermit any file-like object in rpm.setLogFile()
Panu Matilainen [Thu, 29 Oct 2009 11:54:47 +0000 (13:54 +0200)]
Permit any file-like object in rpm.setLogFile()
- using PyObject_AsFileDescriptor() does away with another Python 3
  incompatibility and makes it more flexible.. but also more murky
  as rpmlogSetFile() only accepts FILE * streams...

14 years agoUpdate module initialization to work with both Python 2.x and 3.x
Panu Matilainen [Thu, 29 Oct 2009 10:56:18 +0000 (12:56 +0200)]
Update module initialization to work with both Python 2.x and 3.x
- split common initialization tasks to separate functions, so that only the
  details of initializing a python module object differ
- patch from David Malcolm

14 years agoRemove unnecessary (cmpfunc) casts from our type objects
Panu Matilainen [Wed, 28 Oct 2009 14:35:32 +0000 (16:35 +0200)]
Remove unnecessary (cmpfunc) casts from our type objects
- cmpfunc is no more in Python 3 and casting NULL to anything makes
  little sense anyhow

14 years agoEliminate ambiguous tp_compare and tp_richcompare from rpm.ds
Panu Matilainen [Wed, 28 Oct 2009 14:27:15 +0000 (16:27 +0200)]
Eliminate ambiguous tp_compare and tp_richcompare from rpm.ds
- both comparison types are highly ambiguous, eg what on earth does
  "foo provides bar = 1" < "bar requires foo > 2" mean?
- if straight ds1.evr vs ds2.evr comparison is needed, we'll be better
  off supporting that through rpm.versionCompare() which has clear semantics
- avoids another Python 3 incompatibility too

14 years agoAdd ds.Compare() as a thin wrapper over rpmdsCompare()
Panu Matilainen [Wed, 28 Oct 2009 14:25:46 +0000 (16:25 +0200)]
Add ds.Compare() as a thin wrapper over rpmdsCompare()

14 years agoType-check rpm.ds() comparison/search arguments everywhere
Panu Matilainen [Wed, 28 Oct 2009 14:24:16 +0000 (16:24 +0200)]
Type-check rpm.ds() comparison/search arguments everywhere
- also make them only accept one argument, simplifying arg parsing

14 years agoRip out stillborn code
Panu Matilainen [Wed, 28 Oct 2009 14:17:21 +0000 (16:17 +0200)]
Rip out stillborn code

14 years agoEliminate the ambigious tp_compare from rpm.hdr
Panu Matilainen [Wed, 28 Oct 2009 13:22:39 +0000 (15:22 +0200)]
Eliminate the ambigious tp_compare from rpm.hdr
- Avoids another Python 3 incompatibility as it doesn't have tp_compare
  anymore
- We could add a compatible tp_richcompare, but comparisons like
  'if h1 < h2: do foo' are highly ambiguous, callers are better of
  using explicit rpm.versinCompare(h1, h2) instead

14 years agoUse PyObject_AsFileDescriptor() instead of object type comparison
Panu Matilainen [Wed, 28 Oct 2009 13:55:35 +0000 (15:55 +0200)]
Use PyObject_AsFileDescriptor() instead of object type comparison
- this permits any file-like object implementing .fileno() method
  (including rpm.fd) to be dup'ed, not just PyFile subtypes
- this also avoids yet another incompatibility with Python 3 which doesn't
  have PyFile_Check() and PyFile_AsFile() at all

14 years agoDont bother calculating hardlink counts when the value is not used
Panu Matilainen [Wed, 28 Oct 2009 08:05:39 +0000 (10:05 +0200)]
Dont bother calculating hardlink counts when the value is not used
- speeds up non-verbose --list queries by some ~50%

14 years agoSupport multiple python versions in brp-python-bytecompile (RhBug:53117)
Panu Matilainen [Tue, 27 Oct 2009 14:07:43 +0000 (16:07 +0200)]
Support multiple python versions in brp-python-bytecompile (RhBug:53117)
- For *.py files in python library path, use matching python interpreter
  version for compiling, this is especially needed for Python 3 which
  is very different from Python 2 code. And even if the code compiled
  with a wrong version, it would be recompiled at run-time when invoked
  with the intended python version, causing verification errors etc.
- For *.py files outside the library path, use "system python" which
  might not be always correct but we dont really know any better.
- Patch from David Malcolm

14 years agoArgh, typo in previous commit
Panu Matilainen [Tue, 27 Oct 2009 13:15:20 +0000 (15:15 +0200)]
Argh, typo in previous commit

14 years agoRemove explicit Py_TPFLAGS_HAVE_RICHCOMPARE from ds type flags
Panu Matilainen [Tue, 27 Oct 2009 12:52:08 +0000 (14:52 +0200)]
Remove explicit Py_TPFLAGS_HAVE_RICHCOMPARE from ds type flags
- HAVE_RICHCOMPARE is included in Py_TPFLAGS_DEFAULT since at least
  Python 2.3 which is as far back as we care, no need to explicitly
  set it. Eliminating the unnecessary flag removes another Python 3
  compatibility issue as the flag is gone there.

14 years agoMake disk space problem reporting slightly saner (RhBug:517418)
Panu Matilainen [Tue, 27 Oct 2009 08:57:35 +0000 (10:57 +0200)]
Make disk space problem reporting slightly saner (RhBug:517418)
- Only report disk space/inode issues for packages that are affected
  instead of piling up all the problems in all filesystems on all remaining
  packages
- The messages are still ambiguous at best, need to figure out something
  better one of these days...

14 years agoLet Python decide the "native" string type for tag names
Panu Matilainen [Tue, 27 Oct 2009 08:44:04 +0000 (10:44 +0200)]
Let Python decide the "native" string type for tag names
- Py_BuildValue("s", ...) returns unicode objects in Python 3, string
  objects in Python 2, this is what we want here

14 years agoPermit unicode as ts.dbMatch() key argument
Panu Matilainen [Fri, 23 Oct 2009 19:10:44 +0000 (22:10 +0300)]
Permit unicode as ts.dbMatch() key argument

14 years agoAllow unicode objects as tag name everywhere
Panu Matilainen [Fri, 23 Oct 2009 18:25:08 +0000 (21:25 +0300)]
Allow unicode objects as tag name everywhere

14 years agoAdd conversion function for handling python unicode -> string issues
Panu Matilainen [Fri, 23 Oct 2009 18:07:10 +0000 (21:07 +0300)]
Add conversion function for handling python unicode -> string issues
- In Python 3 everything is unicode, forcing each and every caller to
  convert manually is a bit much.

14 years agoMake --httpproxy and friends work again (RhBug:529214)
Panu Matilainen [Thu, 22 Oct 2009 07:37:49 +0000 (10:37 +0300)]
Make --httpproxy and friends work again (RhBug:529214)
- macro fiddling to pass the macros set by --httpproxy etc popt aliases
  to the url helper
- ftp proxy and http proxy control the same thing (http proxy) now to
  keep things simple
- while at it, add %__urlhelper_localopts for local customization needs
  without having to override the entire __urlhelperopts macro

14 years agoOn Python 3, use macros to alias all usage of PyInt_ to PyLong_ equivalents
Panu Matilainen [Wed, 21 Oct 2009 10:21:01 +0000 (13:21 +0300)]
On Python 3, use macros to alias all usage of PyInt_ to PyLong_ equivalents
- Python 3 unified PyInt with PyLong, the former no longer exists
- Based on a patch by David Malcolm

14 years agoReplace PyString usage with PyBytes everywhere
Panu Matilainen [Wed, 21 Oct 2009 10:15:44 +0000 (13:15 +0300)]
Replace PyString usage with PyBytes everywhere
- In Python 2.6 PyBytes is just an alias for PyString, Python 3.0
  removed PyString entirely
- Add compatibility defines for Python < 2.6
- Based on David Malcolm's Python 3.x efforts

14 years agoEnsure RPMSENSE_RPMLIB bit is always set on rpmlib() requires in rpmds flags
Panu Matilainen [Wed, 21 Oct 2009 09:47:35 +0000 (12:47 +0300)]
Ensure RPMSENSE_RPMLIB bit is always set on rpmlib() requires in rpmds flags
- some packages in the wild have rpmlib() requires without the flag set
  due to older rpm not always setting it (for one, rpmdeps as external
  dependency  generator could cause such deps), causing bogus dependency
  failures on install
- only fix up dependencies coming from a header, rpmdsSingle() correctness
  is up to the caller

14 years agoEnsure rpmlib() dependency sanity on build
Panu Matilainen [Wed, 21 Oct 2009 09:23:50 +0000 (12:23 +0300)]
Ensure rpmlib() dependency sanity on build
- only requires on rpmlib(foo) are allowed
- make sure any rpmlib() foo dependencies have RPMSENSE_RPMLIB bit set,
  rpmdeps as external dependency generator can create rpmlib() dependencies
  without the bit set, and also any manual rpmlib() deps wont have it

14 years agoFix memory leaks on error exit from parseRCPOT()
Panu Matilainen [Wed, 21 Oct 2009 09:22:33 +0000 (12:22 +0300)]
Fix memory leaks on error exit from parseRCPOT()

14 years agoRemove leftovers from python header files
Panu Matilainen [Mon, 19 Oct 2009 14:21:31 +0000 (17:21 +0300)]
Remove leftovers from python header files
- rpmSingleHeaderFromFD() and hdrLoad() are now implemented in python,
  declarations accidentally left here
- make rpmMergeHeaders() static, nothing outside header-py.c needs

14 years agoConvert all usage of two-expression exception raising to modern syntax
David Malcolm [Thu, 15 Oct 2009 19:14:59 +0000 (15:14 -0400)]
Convert all usage of two-expression exception raising to modern syntax

Replace all usage of the two-expression
    raise foo, 'bar'
syntax with the long-equivalent
    raise foo('bar')
as the old syntax was removed in Python 3 (PEP 3109), and the new syntax
is supported in Python 2

14 years agoPyVarObject_HEAD_INIT() compatibility macro for Python < 2.6
Panu Matilainen [Mon, 19 Oct 2009 08:06:07 +0000 (11:06 +0300)]
PyVarObject_HEAD_INIT() compatibility macro for Python < 2.6

14 years agoGeneralize type object initialization to work with both Python 2.* and Python 3.*
David Malcolm [Thu, 15 Oct 2009 19:14:57 +0000 (15:14 -0400)]
Generalize type object initialization to work with both Python 2.* and Python 3.*

The layout of PyVarObject changed between python 2 and python 3, and this leads
to the existing code for all of the various PyTypeObject initializers failing to
compile with python 3

Change the way we initialize these structs to use PyVarObject_HEAD_INIT directly,
rather than merely PyObject_HEAD_INIT, so that it compiles cleanly with both major
versions of Python

14 years agoPy_TYPE() compatibility macro for Python < 2.6
Panu Matilainen [Mon, 19 Oct 2009 07:57:13 +0000 (10:57 +0300)]
Py_TYPE() compatibility macro for Python < 2.6

14 years agoGeneralize access to ob_type so that they work with both Python 2.* and Python 3.*
David Malcolm [Thu, 15 Oct 2009 19:14:56 +0000 (15:14 -0400)]
Generalize access to ob_type so that they work with both Python 2.* and Python 3.*

Python 2's various object structs use macros to implement common fields at the top of each
struct.

Python 3's objects instead embed a PyObject struct as the first member within the more refined
object structs.

Use the Py_TYPE() macro when accessing ob_type in order to encapsulate this difference.

14 years agoAvoid using python's print for Python 3.x compatibility
Panu Matilainen [Mon, 19 Oct 2009 07:30:48 +0000 (10:30 +0300)]
Avoid using python's print for Python 3.x compatibility
- print chanced from statement to a function in python 3, for our
  purposes sys.stdout.write() is sufficient and avoids dealing with
  the incompatibilities between Python 2.x and 3.x
- suggested by David Malcolm / Ville Skyttä

14 years agoUnbreak lzdio/xzdio
Panu Matilainen [Sat, 17 Oct 2009 09:15:29 +0000 (12:15 +0300)]
Unbreak lzdio/xzdio
- revert part of b0d1038190be5cb4b45e2c2c7c84ee7022164ba2 which broke
  the split-personality lzdio/xzdio

14 years agoSkip posttrans scripts of failed transaction elements
Panu Matilainen [Sat, 17 Oct 2009 08:25:53 +0000 (11:25 +0300)]
Skip posttrans scripts of failed transaction elements

14 years agoSince we really want a FILE* then get one in the first place
Panu Matilainen [Fri, 16 Oct 2009 10:36:39 +0000 (13:36 +0300)]
Since we really want a FILE* then get one in the first place
- this is visible in the librpmbuild exported goo, rename the member
  to force build-breakage on the poor souls trying to use librpmbuild API

14 years agoUse a helper function for finding fileno of specific io type
Panu Matilainen [Thu, 15 Oct 2009 11:51:28 +0000 (14:51 +0300)]
Use a helper function for finding fileno of specific io type
- also differentiate between lzdio and xzdio here

14 years agoLose unnecessary url type checking from fdSize()
Panu Matilainen [Thu, 15 Oct 2009 11:33:45 +0000 (14:33 +0300)]
Lose unnecessary url type checking from fdSize()
- we're only dealing with local files once fd is opened

14 years agoLose unused leftover definitions
Panu Matilainen [Thu, 15 Oct 2009 11:23:20 +0000 (14:23 +0300)]
Lose unused leftover definitions

14 years agoEliminate ufdio-specific read, write, seek and close
Panu Matilainen [Fri, 16 Oct 2009 09:49:08 +0000 (12:49 +0300)]
Eliminate ufdio-specific read, write, seek and close
- we dont do network IO anymore so ufdio only differs from fdio by
  downloading the file on open if necessary, after that it's just fdio

14 years agoUse fd.tell() instead of going around through os.lseek() with fdno
Panu Matilainen [Thu, 15 Oct 2009 08:36:46 +0000 (11:36 +0300)]
Use fd.tell() instead of going around through os.lseek() with fdno

14 years agoAdd tell() method to rpm.fd class
Panu Matilainen [Thu, 15 Oct 2009 08:34:26 +0000 (11:34 +0300)]
Add tell() method to rpm.fd class

14 years agoAdd ftell() clone to FD_t
Panu Matilainen [Thu, 15 Oct 2009 08:33:18 +0000 (11:33 +0300)]
Add ftell() clone to FD_t

14 years agoAvoid unnecessary dup'ing of file descriptors on header list operations
Panu Matilainen [Thu, 15 Oct 2009 08:01:00 +0000 (11:01 +0300)]
Avoid unnecessary dup'ing of file descriptors on header list operations
- convert to rpm.fd on python side already add use internal helper
  which only accepts rpm.fd type to avoid having to dup around on
  every item

14 years agoAccept rpm.fd() types file objects everywhere in python bindings
Panu Matilainen [Thu, 15 Oct 2009 07:11:37 +0000 (10:11 +0300)]
Accept rpm.fd() types file objects everywhere in python bindings
- turn rpmfdFromPyObject() into a python-level object converter, add
  a separate C-level getter for the fd pointer itself
- take advantage of python refcounting to handle differences between
  native vs converted rpm.fd in callers so we can simply decref the
  rpmfdFromPyObject() result without having to worry whether it was
  converted or not (ie should we close it or not)

14 years agoMake fdUpdateDigests() static now that its possible
Panu Matilainen [Wed, 14 Oct 2009 14:22:25 +0000 (17:22 +0300)]
Make fdUpdateDigests() static now that its possible

14 years agoMake FD_t struct opaque, finally
Panu Matilainen [Wed, 14 Oct 2009 14:19:09 +0000 (17:19 +0300)]
Make FD_t struct opaque, finally

14 years agoEliminate last remaining FD_t struct privacy violation
Panu Matilainen [Wed, 14 Oct 2009 14:14:38 +0000 (17:14 +0300)]
Eliminate last remaining FD_t struct privacy violation
- add getter for fd digest bundle, uninline the setter

14 years agoRemove cpio stuff from FD_t
Panu Matilainen [Wed, 14 Oct 2009 14:03:14 +0000 (17:03 +0300)]
Remove cpio stuff from FD_t
- only the FSM cares about cpio position, move it there - there's only
  ever one fd active inside FSM, no need to track it per-fd

14 years agoMove debug goo defs to rpmio.c
Panu Matilainen [Wed, 14 Oct 2009 13:15:05 +0000 (16:15 +0300)]
Move debug goo defs to rpmio.c