tools/librpm-tizen.git
14 years agoMove librpmsign to its own subdirectory in the sources
Panu Matilainen [Fri, 22 Oct 2010 12:00:49 +0000 (15:00 +0300)]
Move librpmsign to its own subdirectory in the sources

14 years agoBrute-force s/rpmTag/rpmTagVal/ in entire librpmbuild
Panu Matilainen [Fri, 22 Oct 2010 10:46:14 +0000 (13:46 +0300)]
Brute-force s/rpmTag/rpmTagVal/ in entire librpmbuild
- Many of these cases would be true enums from preambleList & similar,
  except for the list terminating sentinel. Just switch all the
  remaining rpmTag's to rpmTagVals to bring our enum-whacking to
  a grande finale.

14 years agoFix invalid uses of rpmTag/rpmSigTag in pack.c
Panu Matilainen [Fri, 22 Oct 2010 10:31:34 +0000 (13:31 +0300)]
Fix invalid uses of rpmTag/rpmSigTag in pack.c

14 years agoReplace remaing rpmSigTag uses with rpmTagVal
Panu Matilainen [Fri, 22 Oct 2010 10:23:09 +0000 (13:23 +0300)]
Replace remaing rpmSigTag uses with rpmTagVal
- Some of these might actually be "correct" but about one case from
  librpmbuild cascades down here ... just not worth the trouble to
  keep the as rpmSigTags.

14 years agoUse header datatype for hash algo instead of pgpHashAlgo enum
Panu Matilainen [Fri, 22 Oct 2010 09:59:53 +0000 (12:59 +0300)]
Use header datatype for hash algo instead of pgpHashAlgo enum
- The digest algo can come from macro numeric expansion which is
  not an enum. Just use uint32_t which is how it'll end up in the header

14 years agoEliminate pgpHashAlgo uses in librpm side
Panu Matilainen [Fri, 22 Oct 2010 09:58:09 +0000 (12:58 +0300)]
Eliminate pgpHashAlgo uses in librpm side
- In all these cases the value comes from a non-enum source so
  just use an int instead

14 years agoFix (ie eliminate) rpmSigTag uses in rpmchecksig
Panu Matilainen [Fri, 22 Oct 2010 09:39:04 +0000 (12:39 +0300)]
Fix (ie eliminate) rpmSigTag uses in rpmchecksig
- The sigtags originating from headers are not enums but integers
- 0 is not a valid rpmSigTag value while the other cases would be in
  bestSig() and friends

14 years agoMeh, one missed rpmTag -> rpmTagVal change in query
Panu Matilainen [Fri, 22 Oct 2010 09:35:56 +0000 (12:35 +0300)]
Meh, one missed rpmTag -> rpmTagVal change in query
- While the initial assignment is to true rpmTag, rpmTagGetValue()
  returns rpmTagVal, not rpmTag.

14 years agoCouple of enum craziness fixes to package.c
Panu Matilainen [Fri, 22 Oct 2010 09:31:08 +0000 (12:31 +0300)]
Couple of enum craziness fixes to package.c
- 0 is not a valid rpmSigTag, just use rpmTagVal instead
- use int instead of pgpHashAlgo for temporary variables, the
  originating data is not "pure" enum

14 years agoEliminate use of pgpHashAlgo in rpmio interface arguments
Panu Matilainen [Fri, 22 Oct 2010 09:22:44 +0000 (12:22 +0300)]
Eliminate use of pgpHashAlgo in rpmio interface arguments
- While its use would seem kinda obvious here, in rpm context this
  information often comes from header tags which are plain integers
  and would require conversion/casting to the enum. What matters is
  the integral value, not it being actual enum.

14 years agoCouple of previously missed type changes in rpmdb code
Panu Matilainen [Fri, 22 Oct 2010 09:13:49 +0000 (12:13 +0300)]
Couple of previously missed type changes in rpmdb code

14 years agoSwitch lowelevel header internals to use rpm_tagtype_t for tag type data
Panu Matilainen [Fri, 22 Oct 2010 09:07:57 +0000 (12:07 +0300)]
Switch lowelevel header internals to use rpm_tagtype_t for tag type data

14 years agoSwitch python bindings to use rpm(Dbi)TagVal as appropriate
Panu Matilainen [Fri, 22 Oct 2010 08:57:38 +0000 (11:57 +0300)]
Switch python bindings to use rpm(Dbi)TagVal as appropriate
- None of these are true enum uses as the value typically originates
  from python integers etc.

14 years agoChange all internal uses of rpmtsInitIterator() to use DBI tags
Panu Matilainen [Fri, 22 Oct 2010 08:49:52 +0000 (11:49 +0300)]
Change all internal uses of rpmtsInitIterator() to use DBI tags

14 years agoSwitch lone rpmTag use in query to rpmTagVal
Panu Matilainen [Fri, 22 Oct 2010 08:43:10 +0000 (11:43 +0300)]
Switch lone rpmTag use in query to rpmTagVal

14 years agoSwitch psm and rpmscript to use rpmTagVal where appropriate
Panu Matilainen [Fri, 22 Oct 2010 08:39:53 +0000 (11:39 +0300)]
Switch psm and rpmscript to use rpmTagVal where appropriate
- There are a few true rpmTag uses though, leaving them as they are...

14 years agoChange rpmfiNew() tag argument to rpmTagVal
Panu Matilainen [Fri, 22 Oct 2010 08:33:32 +0000 (11:33 +0300)]
Change rpmfiNew() tag argument to rpmTagVal
- The argument is actually unused, but that only makes it even more
  stupid to require C++ callers to potentially having to cast.

14 years agoSwitch rpmte API and internals to use rpmTagVal instead of rpmTag
Panu Matilainen [Fri, 22 Oct 2010 08:31:36 +0000 (11:31 +0300)]
Switch rpmte API and internals to use rpmTagVal instead of rpmTag
- Except for rpmteColorDS(), these can get called with intergral
  value instead of the actual enumeration

14 years agoSwitch rpmds API and internals to use rpmTagVal instead of rpmTag
Panu Matilainen [Fri, 22 Oct 2010 08:27:01 +0000 (11:27 +0300)]
Switch rpmds API and internals to use rpmTagVal instead of rpmTag
- None of these require passing "true enum", the value is what counts.
  In general, enums as function argument types are just a royal PITA
  from C++, avoid when not strictly necessary.

14 years agoChange rpmdb internals and iterator APIs to use the appropriate tag types
Panu Matilainen [Fri, 22 Oct 2010 08:07:48 +0000 (11:07 +0300)]
Change rpmdb internals and iterator APIs to use the appropriate tag types
- The actual indexes are rpmDbiTags, and the tag passed to
  rpmtsInitIterator() and rpmdbInitIterator() always refers to a
  database index, not arbitrary header tag. The tag passed to
  rpmdbSetIteratorRE() however /does/ refer to a header tag. This rather
  important distinction can actually be expressed in the API.
- As the indexes are generated from header tags of the same value,
  most of these need to use the TagVal types instead of actual enums
  to avoid mismatches - the value is what counts, not it being an enum.
- Several places still have variables misleadingly named "rpmtag" when
  they refer to dbi tags, but leaving them for now to avoid excessive
  changes at once.

14 years agoDocument our supported rpmdb indexes in the API via an enum of their own
Panu Matilainen [Fri, 22 Oct 2010 07:17:55 +0000 (10:17 +0300)]
Document our supported rpmdb indexes in the API via an enum of their own
- Now that our indexes are actually hardwired in the code we can
  properly separate rpmtag vs db index names.
- Defined similarly to rpmTags, with rpmDbiTag being the "true enum"
  and rpmDbiTagVal the integral type they present. As many of the
  indexes are defined via RPMTAG values (and need to remain that
  way to avoid breaking every single API user) we need to have a
  compatible type with rpmTags.
- These would logically belong to rpmdb.h but keeping in rpmtag.h
  to have them available "everywhere", we can't go including rpmdb.h
  from rpmtag.h so keeping them here avoids potential unnecessary breakage.

14 years agoChange all the legacy interfaces to use the "concrete" integer tag types
Panu Matilainen [Fri, 22 Oct 2010 06:55:49 +0000 (09:55 +0300)]
Change all the legacy interfaces to use the "concrete" integer tag types
- More compatible with the 4.4.x definitions (should've been this way
  all this time) and none of these are "true" enum uses anyway

14 years agoSwitch header APIs to use rpmTagVal instead of rpmTag
Panu Matilainen [Fri, 22 Oct 2010 06:48:24 +0000 (09:48 +0300)]
Switch header APIs to use rpmTagVal instead of rpmTag
- The header getters are used for both signature header and the "normal"
  header, and even beyond that there's no requirement for a tag in
  the header to be part of rpmTag enum. The headerPutFoo() variants
  technically do require the tag to be found in the tag table (ie be
  an rpmTag) but they still operate on the integer value, they dont
  require it to be a "true" enum.
- Inside tagexts.c there are a few "true" enum uses in the
  internal helper functions, leave them be.
- While this technically changes some the most commonly used API's,
  this wont affect callers really: if the callers were using an enum
  before, enum can always be cast naturally to an integer. The other
  way around was the problematic part (ie the braindamage we're fixing
  here now...)

14 years agorpmTagFoo() getters take arbitrary integers, not rpmTag enums
Panu Matilainen [Fri, 22 Oct 2010 06:40:43 +0000 (09:40 +0300)]
rpmTagFoo() getters take arbitrary integers, not rpmTag enums
- Another step to clean up the enum braindamage...
- rpmTag values are the only values that will be found, but it doesn't
  mean the values passed are rpmTag enum members - eg anything from
  a header is not. rpmTagGetValue() does come close to returning true
  enums, but there's RPMDBI_PACKAGES and then RPMTAG_NOT_FOUND, neither
  of which are actually tags.
- Introducing a new rpmTagVal typedef. It's just an alias for the
  "lowlevel" rpm_tag_t type but visually more in line with the other
  rpmTagFoo bits - to be used with the "higher level" tags whereas
  rpm_tag_t is the "physical" type. Not that it makes any difference...

14 years agoUse concrete integer types for entryInfo and rpmtd members
Panu Matilainen [Fri, 22 Oct 2010 06:37:20 +0000 (09:37 +0300)]
Use concrete integer types for entryInfo and rpmtd members
- Start undoing self-introduced enum braindamage from 2007: the lowlevel
  tag data in header structures are NOT rpmTag/rpmTagType enums, but a
  32bit integer of any arbitrary value. While these can be legally mixed in
  C the same is not true of C++ and even in C using enum here is not "correct"

14 years agoCouple of doxygen argument mismatch fixes
Panu Matilainen [Fri, 22 Oct 2010 06:36:43 +0000 (09:36 +0300)]
Couple of doxygen argument mismatch fixes

14 years agoEliminate silly cast
Panu Matilainen [Fri, 22 Oct 2010 06:36:29 +0000 (09:36 +0300)]
Eliminate silly cast

14 years agoDrop unused pubkeys index too
Panu Matilainen [Fri, 22 Oct 2010 06:19:42 +0000 (09:19 +0300)]
Drop unused pubkeys index too
- This isn't expensive to create but unused is unused is useless junk.
  Rpm < 4.6.0 did use this a lot, but nowadays we preload the keyring
  and do key lookups from meory so this isn't needed for anything.
- 'freedata' argument of td2key() is now unused, but leaving it there
  as we might need tag data -> index data transformations in the future.

14 years agoDrop filedigests index
Panu Matilainen [Fri, 22 Oct 2010 06:02:43 +0000 (09:02 +0300)]
Drop filedigests index
- Now that the sole "user" is gone, kill the stupid index. Speeds
  things up considerably: eg on database rebuild, the file digests
  index generation amounts to roughly one third (!) of the entire time.

14 years agoEliminate useless --fileid query selector
Panu Matilainen [Fri, 22 Oct 2010 05:58:06 +0000 (08:58 +0300)]
Eliminate useless --fileid query selector
- Finding out which package provides a file with a given digest
  is just .. useless functionality. Being next to useless is one
  thing, but we pay a high price for this particular uselessness:
  the index needed for this is one of the biggest and most expensive
  indexes we have.

14 years agoFix Python bindings and raise KeyError when there is no index for the given tag
Florian Festi [Thu, 21 Oct 2010 09:59:14 +0000 (11:59 +0200)]
Fix Python bindings and raise KeyError when there is no index for the given tag

14 years agoFix typo / erroneously deleted line
Florian Festi [Thu, 21 Oct 2010 08:41:49 +0000 (10:41 +0200)]
Fix typo / erroneously deleted line

14 years agorpmdbKeyIterator: loop over keys in the database indexes
Florian Festi [Tue, 15 Dec 2009 12:15:10 +0000 (13:15 +0100)]
rpmdbKeyIterator: loop over keys in the database indexes

14 years agoHardwire the fundamental BDB access method configuration inside rpm
Panu Matilainen [Wed, 20 Oct 2010 13:38:46 +0000 (16:38 +0300)]
Hardwire the fundamental BDB access method configuration inside rpm
- The different access methods have different capabilities and are not
  interchangeable in all situations. Currently we can use either
  hash and btree but this might not be always the case for all indexes.
- We'll eventually want to force-switch the index types to our liking,
  but for now follow these simple rules:
  1) For existing databases, we accept both btree and hash
  2) For newly created databases, the main Packages database remains
     a hash, all indexes are btrees.
- Rip out nearly all the rest of the remaining macro configuration.

14 years agoEliminate now unnecessary db rebuild macro goo and other leftovers
Panu Matilainen [Wed, 20 Oct 2010 12:23:54 +0000 (15:23 +0300)]
Eliminate now unnecessary db rebuild macro goo and other leftovers
- Rpm knows how to handle db rebuilds by itself, no need to expose
  these bits to configuration.
- Also rip out a pile of other leftover "documentation" about BDB
  internal switches.

14 years agoLift fsync enable/disable configuration handling to rpmdb layer
Panu Matilainen [Wed, 20 Oct 2010 12:11:20 +0000 (15:11 +0300)]
Lift fsync enable/disable configuration handling to rpmdb layer
- Add a fsync disable/enable function in the backend, call from
  rpmdb layer: on initial database creation (including database
  rebuild), it's "safe enough" to disable fsync as there's no former
  data to protect. Considerably speeds up initial install to eg chroots.
- Always re-enable fsync when closing a read-write database - at that
  point there /is/ data to protect.

14 years agoHardwire the fundamental BDB subsystem configuration inside rpm
Panu Matilainen [Wed, 20 Oct 2010 11:16:29 +0000 (14:16 +0300)]
Hardwire the fundamental BDB subsystem configuration inside rpm
- BDB subsystems are not something that can be just switched on and
  off like that. If we want to support different configurations they
  need to be rpm-specific settings such as transactional/concurrent
  setting, not an arbitrary pile of flags that cause stuff to blow
  up when abused.
- Eliminate dbi->dbi_eflags completely, the environment opening flags
  can be fetched from BDB where needed. Subsystem configuration from
  macros is no longer looked at or honored, but leaving the option
  table there for debugging output at least for now.

14 years agoLift missing index detection to rpmdb layer
Panu Matilainen [Wed, 20 Oct 2010 09:46:37 +0000 (12:46 +0300)]
Lift missing index detection to rpmdb layer
- Avoids unnecessarily modifying the parent rpmdb from backend layer
  and since its the rpmdb layer that needs to deal with creating
  indexes anyway...
- Also avoids bumping the counter in case of errors (eg permission denied)

14 years agoAvoid umphteen unnecessary calls to rpmTagGetName()
Panu Matilainen [Wed, 20 Oct 2010 09:36:38 +0000 (12:36 +0300)]
Avoid umphteen unnecessary calls to rpmTagGetName()
- These aren't exactly hotpaths, but since the dbi always knows
  its name already there's no point going through rpmTagGetName()
  bsearch()'es and all for these.

14 years agoAdd a getter for dbi name
Panu Matilainen [Wed, 20 Oct 2010 09:23:14 +0000 (12:23 +0300)]
Add a getter for dbi name

14 years agoClean up rpmdbOpenIndex() logic a bit, no functional changes
Panu Matilainen [Wed, 20 Oct 2010 09:13:33 +0000 (12:13 +0300)]
Clean up rpmdbOpenIndex() logic a bit, no functional changes
- dbi is guaranteed to be NULL on non-zero return from dbiOpen(),
  dont bother triple-checking and freeing NULLs
- rearrange the success case a bit to pave way for other things that
  we'll want to do here

14 years agoLose leftover, unwired pagesize db option
Panu Matilainen [Wed, 20 Oct 2010 08:12:08 +0000 (11:12 +0300)]
Lose leftover, unwired pagesize db option
- db->set_pagesize() got semi-accidentally nuked in commit
  f2957887fb7f80c2dbf6f0b4973c72ca66b0d2e8 but we really dont want
  folks to mess with this anyway - filesystem I/O block size is generally
  the best performing and safest option here.

14 years agoAvoid directly accessing bdb-specific dbi members from rpmdb layer
Panu Matilainen [Wed, 20 Oct 2010 07:57:53 +0000 (10:57 +0300)]
Avoid directly accessing bdb-specific dbi members from rpmdb layer

14 years agoAdd a backend-independent flags + getter for dbis
Panu Matilainen [Wed, 20 Oct 2010 07:52:53 +0000 (10:52 +0300)]
Add a backend-independent flags + getter for dbis
- Keeping up pretense of being backend independent where its easy
  to do... and rdonly+created status are rather obviously universally
  mappable

14 years agoPass rpmdb, not dbi to db_init() and db_fini()
Panu Matilainen [Tue, 19 Oct 2010 14:27:31 +0000 (17:27 +0300)]
Pass rpmdb, not dbi to db_init() and db_fini()
- These are global operations and dont need the individual dbi for
  anything but finding the parent rpmdb. Another step closer to
  decoupling db environment from dbi's...

14 years agoAdd a no-dbi version of the db error reporting function
Panu Matilainen [Tue, 19 Oct 2010 14:04:20 +0000 (17:04 +0300)]
Add a no-dbi version of the db error reporting function
- cvtdberr() only needs the dbi for figuring out the rpmdb api level,
  split this part out to separate function so we dont need to carry
  dbi's around where they dont belong

14 years agoMove db environment-level configuration out of per-dbi structs
Panu Matilainen [Tue, 19 Oct 2010 13:44:46 +0000 (16:44 +0300)]
Move db environment-level configuration out of per-dbi structs
- Carrying global configuration in all dbi's is just dumb. First
  step towards fixing the stupidity.

14 years agoGroup the database options to per-dbi and per-environment groups
Panu Matilainen [Tue, 19 Oct 2010 13:14:24 +0000 (16:14 +0300)]
Group the database options to per-dbi and per-environment groups
- No other changes

14 years agoPython dbMatch() doesn't take (or need) len argument, fix the docs
Panu Matilainen [Tue, 19 Oct 2010 12:40:22 +0000 (15:40 +0300)]
Python dbMatch() doesn't take (or need) len argument, fix the docs

14 years agoA few more rpmdb variable/argument renames, missed in previous round
Panu Matilainen [Tue, 19 Oct 2010 12:29:54 +0000 (15:29 +0300)]
A few more rpmdb variable/argument renames, missed in previous round

14 years agoDecouple dbiVerify() from dbiClose()
Panu Matilainen [Tue, 19 Oct 2010 11:37:40 +0000 (14:37 +0300)]
Decouple dbiVerify() from dbiClose()
- When RPMDB_FLAG_VERIFYONLY is set, dbiOpen() now only creates and
  returns the db handle without actually opening it. With this we
  can sanely implement dbiVerify() as its own separate functionality,
  also avoiding the need to have duplicate code for creating and
  tearing down the db environment (which in turn kills our ability
  to use DB_REGISTER if/when the day comes)

14 years agoAdd flags argument to dbiOpen(), pass through from rpmdbIndexOpen()
Panu Matilainen [Tue, 19 Oct 2010 11:13:58 +0000 (14:13 +0300)]
Add flags argument to dbiOpen(), pass through from rpmdbIndexOpen()

14 years agoOops, dumb copy-paste error causing --verifydb to --rebuilddb instead
Panu Matilainen [Tue, 19 Oct 2010 07:58:25 +0000 (10:58 +0300)]
Oops, dumb copy-paste error causing --verifydb to --rebuilddb instead

14 years agoRename rpmdb variables in the backend to rdb to distinguish from its type
Panu Matilainen [Tue, 19 Oct 2010 07:41:07 +0000 (10:41 +0300)]
Rename rpmdb variables in the backend to rdb to distinguish from its type

14 years agoGenerate missing database indexes automatically
Panu Matilainen [Mon, 18 Oct 2010 12:03:35 +0000 (15:03 +0300)]
Generate missing database indexes automatically
- Now that we know whether backing files were created on open, we can
  easily detect the need for index generation too. As index generation
  requires expensive plowing through the entire Packages database, we
  to create all missing indexes at once instead of risking several
  loops over Packages. So if we spot a missing index, we open all
  our indexes and generate all the missing bits in one go.
- Berkeley DB does support on-demand index generation for secondary
  indexes created with db->associate(), but as rpm's indexes are in
  a slightly different format (they store tag index besides the
  header number), using it would require various other
  changes too. Also the BDB indexing callback recieves the data
  in serialized format, which in rpm's case would mean either
  headerLoad() for every single indexed bit, or passing the in-memory
  header through some other indirect means.

14 years agoCreate indexes too on rpmdbInit() (ticket #156)
Panu Matilainen [Mon, 18 Oct 2010 11:35:57 +0000 (14:35 +0300)]
Create indexes too on rpmdbInit() (ticket #156)
- Seems strange to have an initializer function which doesn't
  initialize
- This leaves RPMDB_FLAG_JUSTCHECK unused...

14 years agoAvoid returning NULL from prDbiOpenFlags()
Panu Matilainen [Mon, 18 Oct 2010 11:31:55 +0000 (14:31 +0300)]
Avoid returning NULL from prDbiOpenFlags()
- While glibc can turn NULL %s to "(nil)", this is not required in
  any standards. Avoid embarrassing segfault from a silly debug message.

14 years agoRemember if we created the db backing file on open
Panu Matilainen [Mon, 18 Oct 2010 10:18:19 +0000 (13:18 +0300)]
Remember if we created the db backing file on open
- Instead of trying to figure out suitable flags beforehand, try to
  open the db a couple of times with different flags. This way we know
  whether the backing file was created on open or not. Also simplifies
  the flag shuffling somewhat.
- We also do this when O_CREAT db_mode, for the same reason: rpmdbInit()
  can be called on existing database too, and we want to know which
  of the files actually got created.

14 years agoLift dbi fcntl() locking out of dbiOpen()
Panu Matilainen [Mon, 18 Oct 2010 09:09:28 +0000 (12:09 +0300)]
Lift dbi fcntl() locking out of dbiOpen()
- Just to make dbiOpen() shorter and easier to read, locking is
  different from opening...

14 years agoLift secondary index updating out of rpmdbAdd()
Panu Matilainen [Sun, 17 Oct 2010 09:20:48 +0000 (12:20 +0300)]
Lift secondary index updating out of rpmdbAdd()

14 years agoSupport looping over indexes when giving keyp=NULL to rpmdbInitIterator()
Florian Festi [Sat, 16 Oct 2010 07:45:13 +0000 (09:45 +0200)]
Support looping over indexes when giving keyp=NULL to rpmdbInitIterator()

14 years agoAdd python bindings for librpmsign
Panu Matilainen [Wed, 13 Oct 2010 11:29:28 +0000 (14:29 +0300)]
Add python bindings for librpmsign
- Similarly to the build-bindings, permit import failures as librpmsign
  might not be installed and we dont want to force the dependencies
  into every single installation

14 years agoOops, fixup rpmsign exit codes on success
Panu Matilainen [Wed, 13 Oct 2010 11:20:30 +0000 (14:20 +0300)]
Oops, fixup rpmsign exit codes on success

14 years agoMake rpmPkgSign() actually honor the signing arguments
Panu Matilainen [Wed, 13 Oct 2010 10:37:42 +0000 (13:37 +0300)]
Make rpmPkgSign() actually honor the signing arguments
- For now just keyid string and hash algorithm supported. The
  macro fiddling should perhaps go deeper into the signing process
  but this'll do for now...

14 years agoNuke rpmcliSign() out of the orbit
Panu Matilainen [Wed, 13 Oct 2010 10:20:40 +0000 (13:20 +0300)]
Nuke rpmcliSign() out of the orbit

14 years agoMake rpmsign use the new signing interface (minimal conversion for now)
Panu Matilainen [Wed, 13 Oct 2010 10:19:35 +0000 (13:19 +0300)]
Make rpmsign use the new signing interface (minimal conversion for now)

14 years agoAdd beginnings of a real API to librpmsign
Panu Matilainen [Wed, 13 Oct 2010 10:11:54 +0000 (13:11 +0300)]
Add beginnings of a real API to librpmsign

14 years agoMove plugins out of rpm config directory
Panu Matilainen [Tue, 12 Oct 2010 13:58:09 +0000 (16:58 +0300)]
Move plugins out of rpm config directory
- Plugins are by their very nature arch specific, while /usr/lib/rpm
  is a hodgepodge of all sorts of ... stuff, most of which is
  arch-independent and all. Use %{_libdir}/rpm-plugins to cleanly
  differentiate 32 vs 64bit plugin paths

14 years agoAdd 'VCS' key
Colin Walters [Tue, 23 Feb 2010 16:02:46 +0000 (11:02 -0500)]
Add 'VCS' key

Spec files have a lot of metadata about a project.  However one of the
most key components is the upstream version control system which was
notably lacking.

Resolve this by adding a "VCS" key.  There is no specification
for contents of this key, given that the set of version control
systems (and features thereof) are not well-defined.  However,
recommendations are:

 * git: This URL should be in a form that can be passed to "git clone",
   with the additional feature that an optional fragment identifier "#foo"
   denotes a branch or tag.

14 years agoAdd 'VCS' key
Colin Walters [Tue, 23 Feb 2010 16:02:46 +0000 (11:02 -0500)]
Add 'VCS' key

Spec files have a lot of metadata about a project.  However one of the
most key components is the upstream version control system which was
notably lacking.

Resolve this by adding a "VCS" key.  There is no specification
for contents of this key, given that the set of version control
systems (and features thereof) are not well-defined.  However,
recommendations are:

 * git: This URL should be in a form that can be passed to "git clone",
   with the additional feature that an optional fragment identifier "#foo"
   denotes a branch or tag.

14 years agoAdd --requires etc popt aliases for rpmspec too
Panu Matilainen [Tue, 12 Oct 2010 12:39:52 +0000 (15:39 +0300)]
Add --requires etc popt aliases for rpmspec too
- In addition to the regular dependencies, add --buildrequires
  and --buildconflicts which are just --srpm --requires and
  --srpm --conflicts in reality

14 years agoRpm option descriptions begin with lowercase letters, follow suit in rpmspec
Panu Matilainen [Tue, 12 Oct 2010 12:10:26 +0000 (15:10 +0300)]
Rpm option descriptions begin with lowercase letters, follow suit in rpmspec

14 years agoOnly queryformat is relevant for specfiles
Panu Matilainen [Tue, 12 Oct 2010 12:07:38 +0000 (15:07 +0300)]
Only queryformat is relevant for specfiles
- Instead of including the entire rpmQueryPoptTable in rpmspec and
  showing several bogus options, support --qf/--queryformat "manually"

14 years agoSupport overriding target for rpmspec queries too
Panu Matilainen [Tue, 12 Oct 2010 11:56:18 +0000 (14:56 +0300)]
Support overriding target for rpmspec queries too

14 years agoSupport both binary/source queries in rpmspec tool (RhBug:540807, ticket #89)
Panu Matilainen [Tue, 12 Oct 2010 11:44:56 +0000 (14:44 +0300)]
Support both binary/source queries in rpmspec tool (RhBug:540807, ticket #89)

14 years agoAdd support for querying source rpm from spec too
Panu Matilainen [Tue, 12 Oct 2010 11:41:35 +0000 (14:41 +0300)]
Add support for querying source rpm from spec too
- Handle source rpm query as a new query source type RPMQV_SPECSRPM,
  rename the binary query to RPMQV_SPECRPMS, with RPMQV_SPECFILE
  as a backwards compatibility alias to RPMQV_SPECRPMS.

14 years agoAdd a python accessor for the source header
Eric W. Biederman [Sun, 10 Oct 2010 14:36:34 +0000 (07:36 -0700)]
Add a python accessor for the source header

Make the source header visible to python code.

14 years agoAdd a getter for the source header.
Eric W. Biederman [Sun, 10 Oct 2010 14:35:31 +0000 (07:35 -0700)]
Add a getter for the source header.

It appears the access to the source header has started to get buried
into usability so add an getter so the implementation can change a
little without breaking callers.

14 years agoFix misc/ include path
Panu Matilainen [Tue, 12 Oct 2010 06:27:46 +0000 (09:27 +0300)]
Fix misc/ include path
- -I$(top_builddir)/include/rpm was never right, and now with fts
  moved into misc/ this shows as rpm/rpmutil.h not getting found.

14 years agoFurther split the cli-tools to rpminstall, rpmquery and rpmverify
Panu Matilainen [Fri, 8 Oct 2010 08:59:51 +0000 (11:59 +0300)]
Further split the cli-tools to rpminstall, rpmquery and rpmverify
- Installing/erasing packages, querying and verifying require different
  amount of privileges on the system. Having separate binaries for
  these functionalities permits limiting the capabilities through
  SELinux and other similar security mechanisms: for example quering
  needs much less privileges than installing.
- For now, leaving /bin/rpm to be the Swiss Army knife it
  always was: capable of install/erase, query and verify. Eventually
  it should be turned into just a dumb wrapper which just execs
  the per-functionality binaries, but leaving that for later stage,
  as popt exec/aliasing doesn't quite seem to up to par with the task.
  Having the separate binaries available at least makes it possible
  for callers to specify the amount of privileges they need.

14 years agoRemove filesystem related leftover API definitions
Panu Matilainen [Wed, 6 Oct 2010 09:53:34 +0000 (12:53 +0300)]
Remove filesystem related leftover API definitions
- This should've been in all the way back in
  commit 51c96db0464f86901b328899106dd8d4159dd878

14 years agoUse the right variable for absolute path (ticket #137)
Aron Griffis [Wed, 6 Oct 2010 07:55:09 +0000 (10:55 +0300)]
Use the right variable for absolute path (ticket #137)
- Fix the problem where rpm attempts to use the tarball as the specfile

14 years agoFix generating platform config for arm
Michal Čihař [Wed, 6 Oct 2010 07:26:23 +0000 (10:26 +0300)]
Fix generating platform config for arm
- We need to generate platform/arm-linux as well, not only all substitutes.

14 years agoRequire file attribute config to have .attr suffix
Panu Matilainen [Tue, 5 Oct 2010 06:53:13 +0000 (09:53 +0300)]
Require file attribute config to have .attr suffix
- Allows for more precise globbing, avoiding potential issues from
  leftover / accidentally placed files in the fileattrs directory.

14 years agoReplace __foo_exeonly attribute with a more generic mechanism
Panu Matilainen [Tue, 5 Oct 2010 06:35:45 +0000 (09:35 +0300)]
Replace __foo_exeonly attribute with a more generic mechanism
- Use a list of text keyword tokens to allow for more flags without
  requiring adding special processing for every new flag we make

14 years agoTolerate NULL args in argvSplitString()
Panu Matilainen [Tue, 5 Oct 2010 06:11:13 +0000 (09:11 +0300)]
Tolerate NULL args in argvSplitString()

14 years agoAdd cli switches to override signing key and digest algorithm
Panu Matilainen [Mon, 4 Oct 2010 13:04:47 +0000 (16:04 +0300)]
Add cli switches to override signing key and digest algorithm

14 years agoAdjust rpm.pc private libraries
Panu Matilainen [Mon, 4 Oct 2010 11:35:08 +0000 (14:35 +0300)]
Adjust rpm.pc private libraries
- we no longer have sqlite3 lib ever, but we might have lzma/xz libs

14 years agoFurther streamline rpmcliArgIter() and friends
Panu Matilainen [Mon, 4 Oct 2010 11:02:53 +0000 (14:02 +0300)]
Further streamline rpmcliArgIter() and friends
- Turn applyFilters() into match iterator initializer which optionally
  applies filters if present
- Handle NULL iterator error codes centrally in rpmcliShowMatches()

14 years agoLift specfile query out of main rpm(query) into separate binary
Panu Matilainen [Mon, 4 Oct 2010 10:33:18 +0000 (13:33 +0300)]
Lift specfile query out of main rpm(query) into separate binary
- Avoids having to link /bin/rpm with librpmbuild and everything it
  might bring in (eg libmagic) which are not needed for core operation.
- Minimally preserve backwards compatibility with popt exec alias

14 years agoSimplify queryformat popt callback handling
Panu Matilainen [Mon, 4 Oct 2010 09:51:32 +0000 (12:51 +0300)]
Simplify queryformat popt callback handling
- No need to separate single vs multiple queryformats,
  rstrcat() works for both cases. Whether catenating multiply specified
  queryformats make sense is another question though...
- This can't get called with NULL arg (or then popt screwed up its
  argument checking), dont bother checking.

14 years agol10n: Updated Polish (pl) translation to 100%
Piotr Drąg [Mon, 4 Oct 2010 09:32:46 +0000 (09:32 +0000)]
l10n: Updated Polish (pl) translation to 100%

New status: 741 messages complete with 0 fuzzies and 0 untranslated.

Transmitted-via: Transifex (www.transifex.net).

14 years agol10n: Updated Italian (it) translation to 100%
Guido Grazioli [Sun, 3 Oct 2010 20:05:32 +0000 (20:05 +0000)]
l10n: Updated Italian (it) translation to 100%

New status: 732 messages complete with 0 fuzzies and 0 untranslated.

Transmitted-via: Transifex (www.transifex.net).

14 years agoAnd now python bindings are really free of librpmbuild internals
Panu Matilainen [Fri, 1 Oct 2010 12:30:31 +0000 (15:30 +0300)]
And now python bindings are really free of librpmbuild internals
- Just one leftover offender in the form of forgotten type rename
  from commit 675bfca5cc300105f7859f028cc00ea036e72966

14 years agoKill spec.buildRoot from python
Panu Matilainen [Fri, 1 Oct 2010 12:28:40 +0000 (15:28 +0300)]
Kill spec.buildRoot from python
- We /could/ of course add a getter for this but ... sorry folks, what
  rpm happens to use as buildroot internally isn't anybody elses
  business.

14 years agoUse the new spec section getter in python bindings
Panu Matilainen [Fri, 1 Oct 2010 12:23:27 +0000 (15:23 +0300)]
Use the new spec section getter in python bindings
- Whee, for a change more lines removed than added...

14 years agoAdd getter for spec script sections too, bah...
Panu Matilainen [Fri, 1 Oct 2010 12:14:34 +0000 (15:14 +0300)]
Add getter for spec script sections too, bah...
- Pretty dumb and all, but to avoid breaking some python users
  (some folks apparently have found /some/ use for these...)

14 years agoUse the new spec src/pkg API in python instead of direct access to spec
Panu Matilainen [Fri, 1 Oct 2010 12:05:35 +0000 (15:05 +0300)]
Use the new spec src/pkg API in python instead of direct access to spec

14 years agoAdd minimal API for spec packages and sources
Panu Matilainen [Fri, 1 Oct 2010 12:03:22 +0000 (15:03 +0300)]
Add minimal API for spec packages and sources
- Iterators for both (these could easily done as self-iteration over
  ->next but to keep the api similar to other rpm iterators...)
- Minimal getters to satisfy python bindings needs

14 years agoUse namespaced names for spec pkg and source opaque typedefs
Panu Matilainen [Fri, 1 Oct 2010 10:32:28 +0000 (13:32 +0300)]
Use namespaced names for spec pkg and source opaque typedefs
- Leaving the painful and somewhat pointless exercise of changing
  all the Package and Source references for another rainy day