platform/upstream/rpm.git
11 years agoRestore legacy behavior on %ghost %config erasure, mostly upstream/4.11.0.1
Panu Matilainen [Thu, 31 Jan 2013 14:03:30 +0000 (16:03 +0200)]
Restore legacy behavior on %ghost %config erasure, mostly

- Make rpmfiConfigConflict() consider any existing %ghost %config
  as "modified". This causes them to be left alone on erasure to match
  long-standing rpm behavior (whether the behavior is intended or not...)
  Ghost config testcase passes again, talk about flip-flop. Sigh.
- Legacy behavior had an extra twist which we are intentionally NOT
  restoring: if a non-empty %ghost exists at build-time, its digest
  is stored in the header despite the file not being present in
  the payload. With previous versions of rpm, the contents of an
  existing  %ghost %config would be compared to the one in header and
  resulting in different behavior on erasure: if the contents matched
  that of build-time, the file would be removed, otherwise it would
  be preserved. Ghosts remembering their identity from previous life
  goes a little bit too far into the land of paranormal for me...
(cherry picked from commit 233e4573d1d21a36d06874fea6c594428033802e)

11 years agoAdjust ghost config test case to match legacy behavior
Panu Matilainen [Thu, 31 Jan 2013 13:55:22 +0000 (15:55 +0200)]
Adjust ghost config test case to match legacy behavior

- Rpm has traditionally (at least for the last decade) preserved
  existing %ghost %config file on erasure. Whether this was intentional
  or not, changing the behavior now risks data loss in case people
  are relying on this long-standing behavior.
- This fails now: The behavior changed as (an unexpected) side-effect
  of commit 389b1ab706be8eddba9f00c7084759f670ce96ac.
(cherry picked from commit 4efec66338ef04d2f1ed20cfba84c47145269d0d)

11 years agoRefresh translations again, sigh
Panu Matilainen [Thu, 31 Jan 2013 06:28:54 +0000 (08:28 +0200)]
Refresh translations again, sigh

11 years agoBump version to dot-paperbag aka 4.11.0.1
Panu Matilainen [Wed, 30 Jan 2013 15:23:31 +0000 (17:23 +0200)]
Bump version to dot-paperbag aka 4.11.0.1

11 years agoDont skip shared file/dir create if the other one is a ghost
Panu Matilainen [Wed, 30 Jan 2013 12:07:33 +0000 (14:07 +0200)]
Dont skip shared file/dir create if the other one is a ghost

- Explicitly test for shared file/dir being ghost when deciding whether
  to skip create: we must never skip the creation of a real file/dir
  because of a ghost as the ghosts do not get created.
- This fixes the shared ghost testcase, ie the thing that commit
  a712252392eca75443ca45c10a72873cabec7963 was supposed to fix,
  without side-effects that I can see.
(cherry picked from commit 147a26c5f672ee3421fe057725f6be357031bbb5)

11 years agoRevert the severely broken FA_SKIP on %ghost "fix"
Panu Matilainen [Wed, 30 Jan 2013 12:01:59 +0000 (14:01 +0200)]
Revert the severely broken FA_SKIP on %ghost "fix"

- Reverts the bad half of commit a712252392eca75443ca45c10a72873cabec7963:
  treating files that wont be installed as skipped seems logical enough,
  but rpm disagrees... making %ghosts FA_SKIP on install causes
  upgrades on %ghost %config files to miss the necessary FA_SKIP getting
  set on the erase half via handleInstInstalledFile() and
  rpmfiDecideFate(), causing %ghost %config files to be nuked. Which isn't
  very nice when your /var/lib/rpm/ contents are packaged as
  %ghost %config...
- This fixes the %ghost %config testcase but breaks the shared %ghost
  case in turn.
(cherry picked from commit 471b74bf6e218abb06bb3131a259cdfaec3f08cf)

11 years agoAdd testcase for %ghost shared with a real file
Panu Matilainen [Wed, 30 Jan 2013 11:52:23 +0000 (13:52 +0200)]
Add testcase for %ghost shared with a real file

- Further parametrize conflicttest.spec to allow for different attributes
- Verify that the real file gets created without conflicts, that
  it doesn't get removed when ghost is removed and gets normally removed
  on erase.
- This is the case commit a712252392eca75443ca45c10a72873cabec7963 was
  supposed to fix (which it does but with, ahem, "slight" side-effects)
(cherry picked from commit 0485eab2c96173d1e34e4edb3570e58a693e255e)

11 years agoAdd testcase for %ghost %config behavior
Panu Matilainen [Wed, 30 Jan 2013 11:46:45 +0000 (13:46 +0200)]
Add testcase for %ghost %config behavior

- Further parametrize configtest.spec to allow for different attributes
- Verify pre-existing %ghost %config is preserved on install,
  that it survives upgrades and gets removed on erase.
  This fails now because it IS broken due to commit
  a712252392eca75443ca45c10a72873cabec7963.
(cherry picked from commit 5121ea2151f13e58740b7b4e7dc20cff5f2475fb)

11 years agoPreparing for 4.11.0 final rpm-4.11.0-release
Panu Matilainen [Tue, 29 Jan 2013 06:30:28 +0000 (08:30 +0200)]
Preparing for 4.11.0 final

11 years agoUpdate translations from Transifex
Panu Matilainen [Tue, 29 Jan 2013 06:22:37 +0000 (08:22 +0200)]
Update translations from Transifex

11 years agoDont mess with global user identity in __scm_setup_bzr
Panu Matilainen [Mon, 28 Jan 2013 20:34:11 +0000 (22:34 +0200)]
Dont mess with global user identity in __scm_setup_bzr

- Bzr defaults to global value on "bzr whoami", so we would mess
  up user identity on "%autosetup -S bzr". Oops. Move identity setting
  after repo initialization and set the identity per-branch, not global.
  The notion of "per-branch identity" seems odd, but then bzr is...
  I guess this would be bzr-speak for "per-directory identity"
(cherry picked from commit 58f41cb4e1721d410017732a55613056b6acb24c)

11 years agoSetup git identity in __scm_setup_git (RhBug:905002)
Panu Matilainen [Mon, 28 Jan 2013 20:31:30 +0000 (22:31 +0200)]
Setup git identity in __scm_setup_git (RhBug:905002)

- For some reason on my own account git keeps functioning even if
  I remove its configuration, but on a newly created account git commit
  bails out with "Please tell me who you are" unless we set the
  (per-repo) configuration here.
(cherry picked from commit 321a87d789bb090c88c541f7f158ae922ddee3ff)

11 years agoSplit __scm_author to separate name and email address macros
Panu Matilainen [Mon, 28 Jan 2013 20:28:35 +0000 (22:28 +0200)]
Split __scm_author to separate name and email address macros

- At least git wants name and email separately, change __scm_author
  to combine the two instead. Related to RhBug:905002.
(cherry picked from commit 1a21dc867dfbf48169782c6b8dbd0e0476e2bbbf)

11 years agoAcommodate to glibc 2.17 __secure_getenv() renaming
Panu Matilainen [Mon, 28 Jan 2013 16:49:01 +0000 (18:49 +0200)]
Acommodate to glibc 2.17 __secure_getenv() renaming

- glibc 2.17 renames __secure_getenv() to secure_getenv() so now we
  need to test for both. Meh.
(cherry picked from commit 49519f2564777fdcfb801088fb3025b3d6f5783a)

11 years agoBe more careful about skipping shared file/directory creation
Panu Matilainen [Mon, 28 Jan 2013 10:50:39 +0000 (12:50 +0200)]
Be more careful about skipping shared file/directory creation

- Only skip shared file/dir creation if its actually being created
  by another package. Previously we could've decided to skip an entry
  where the other file was also being skipped for some other reason.
- Ensure %ghost entries always have FA_SKIP on install, previously
  they often were FA_CREATE which makes no sense for %ghost. We dont
  encounter %ghosts at all during install in the FSM as they dont
  exist in the payload, but the file disposition calculations need
  to take them into account now that we're avoiding redundant creates.
- Fixes a regression from commit f7f5f88f9f3d6587e747b034ccb64a3f00ff4e1e
  which unearthed the %ghost FA_CREATE issue, reported here:
  http://lists.fedoraproject.org/pipermail/buildsys/2013-January/004047.html
(cherry picked from commit a712252392eca75443ca45c10a72873cabec7963)

11 years agoAdjust rpmspec -P to invoke non-build parse
Alexey Tourbin [Tue, 22 Jan 2013 00:47:15 +0000 (00:47 +0000)]
Adjust rpmspec -P to invoke non-build parse

In the query mode, rpmspecQuery puts the parser into non-build mode
by invoking rpmSpecParse with (RPMSPEC_ANYARCH|RPMSPEC_FORCE) flags.
The same flags should be applied in the parse mode, so that it is
possible to preprocess specfiles separately, i.e. without also
installing sources and patches.

Signed-off-by: Panu Matilainen <pmatilai@redhat.com>
(cherry picked from commit 4eb824937ce536aeecdfdcab2d88e28083bba85b)

11 years agoMake double-quoting work for special %doc (and %license) too
Panu Matilainen [Tue, 22 Jan 2013 05:55:11 +0000 (07:55 +0200)]
Make double-quoting work for special %doc (and %license) too

- Up to now, special %doc has been different from everything else in
  %files: double-quoting which is used to escape eg spaces in filenames
  has not worked, but single-quoting and backslash-escapes (which do
  not work elsewhere in %files) "worked" by happenstance due to getting
  passed verbatim to shell/cp. Those and various other %doc hacks people
  have come with stopped working (ticket #858) as starting from
  commit 29677605d44dc9cba3119135653ba0372ab58037 we perform the
  copies in slightly more controlled manner.
- Rather than re-enable old quirks, make %doc and %license behavior
  consistent with the rest of the %files section: double-quoting and
  globs work, other escaping methods do not.
- This does mean a minor (as docs with spaces are relatively rare)
  compatibility rift in specs, the "official workaround" is that
  if compatibility with older rpm versions is required globs can
  be used instead of quotation.
(cherry picked from commit a1d9364adb556813886d91b2799217a412ac5bb0)

11 years agoRevert "make "canonicalization(...)shrank by one character" error message more usefull"
Panu Matilainen [Wed, 9 Jan 2013 11:48:40 +0000 (13:48 +0200)]
Revert "make "canonicalization(...)shrank by one character" error message more usefull"

- The message is not about basedir and destdir, and printing them
  here only makes the message even more confusing than it was, eg:
      canonicalization unexpectedly shrank by one character \
          ('/home/pmatilai/rpmbuild/BUILD/' vs '/usr/src/debug/')
- This reverts commit 1eea433d9961d74dbc797cea7f9bfceab8c16a3e
(cherry picked from commit e83cc97792d66f8d31ef471455a9fa6ae136ae9a)

11 years agoAlternatively accept files from command line arguments in elfdeps
Panu Matilainen [Tue, 8 Jan 2013 10:51:36 +0000 (12:51 +0200)]
Alternatively accept files from command line arguments in elfdeps

- Nothing actually needs this, but for testing & debugging command line
  args are often nicer than having to pass stuff via stdin.
(cherry picked from commit 6941d51e7e5139014418d1056acb6dafccefbab7)

11 years agoFake ELF sonames by default (again)
Panu Matilainen [Mon, 7 Jan 2013 12:23:13 +0000 (14:23 +0200)]
Fake ELF sonames by default (again)

- (Private) libraries which might intentionally not have DT_SONAME
  are still recorded as requires from DT_NEEDED, and there's no
  way of knowing what's an internal library when generating requires.
  Not faking the soname in these cases will only result in broken
  requires in cases that always used to "just work".
- Change the switch to --no-fake-soname disabler instead to allow
  tweaking in special cases but by default we gotta match linker
  (and ELF specification) behavior, no matter how much we'd like to
  use this for our own heuristics :-/
(cherry picked from commit b6f159a34c946b75cb95a7862968ff4e8eb74fe6)

11 years agoCentralize elf soname provide addition, comment
Panu Matilainen [Thu, 3 Jan 2013 15:01:42 +0000 (17:01 +0200)]
Centralize elf soname provide addition, comment

- Remember DT_SONAME in the elfInfo struct if encountered and
  only add it after everything else has been processed. This doesn't
  change any actual functionality for now, but gives us a single
  place where to control the addition.
- Additionally document what the related DT_DEBUG test is for and
  clean up the processDynamic() loop and switch-case a bit.
(cherry picked from commit 8e3ce7417a20dd8bca4676c0a598fc4932d22eef)

11 years agoOnly fake ELF soname's if requested
Panu Matilainen [Thu, 3 Jan 2013 12:16:20 +0000 (14:16 +0200)]
Only fake ELF soname's if requested

- This helps cutting down the number of bogus provides from dlopen()'ed
  plugins and internal libraries which preferrably shouldn't have a
  soname at all. Unfortunately libtool always puts in a soname even if
  -module -avoid-version is used :-/
- OTOH there are broken libraries which dont have a soname even though
  they should, so (we need to) allow falling back to the former behavior
  of faking up a soname from the basename.
(cherry picked from commit 6c0bdc393dda3de8bacd3a1844d980802e45d195)

11 years agoMove elf class marker figuring to helper function, generalize a bit
Panu Matilainen [Thu, 3 Jan 2013 10:59:13 +0000 (12:59 +0200)]
Move elf class marker figuring to helper function, generalize a bit

- Determine arch-specific issues by looking at the elf header instead
  of compile-time #ifdefs, so we'll generate correct dependencies for
  non-native elf binaries too. Currently this is just alpha which despite
  being a 64bit system, never had the (64bit) markers in its dependencies.
  Of course alpha has pretty much already met its mark^H^H er maker by now,
  but doing the right thing is cheap... Also we'll need similar special
  cases sooner or later for other archs (such as x32).
(cherry picked from commit f84a71cdc786a012fc9cbe16c5236c622ea970a4)

11 years agoConsolidate elf dependency string generation to helper function
Panu Matilainen [Thu, 3 Jan 2013 10:11:26 +0000 (12:11 +0200)]
Consolidate elf dependency string generation to helper function

- Figure out the elf class marker early and handle the rest in helper
  to avoid copy-slop code. No functional changes.
(cherry picked from commit e7489abd6672e8c980d2d1b2ab32b963e1ea83b2)

11 years agoDisable useless empty translations, enable Ukrainian translation
Panu Matilainen [Wed, 19 Dec 2012 11:21:58 +0000 (13:21 +0200)]
Disable useless empty translations, enable Ukrainian translation
(cherry picked from commit 8774cb03cf78b02411cc26329a3c362d95e36fe4)

11 years agoInitial Breton (br) translation
Thierry Vignaud [Wed, 19 Dec 2012 10:52:51 +0000 (12:52 +0200)]
Initial Breton (br) translation

Signed-off-by: Panu Matilainen <pmatilai@redhat.com>
(cherry picked from commit d277537bcafa65f1cb09d12e259569d6ed35e2a2)

11 years agoHandle transaction global pool allocation centrally in rpmtsPool()
Panu Matilainen [Wed, 19 Dec 2012 10:32:52 +0000 (12:32 +0200)]
Handle transaction global pool allocation centrally in rpmtsPool()

- Previously the pool would only get allocated on successfull addition
  of install or erasure elements, causing assert() failures on
  operations on empty transaction set, which should be just a no-op,
  not an error.
- Make rpmtsPool() create the pool if it doesn't exist, update relevant
  users to call rpmtsPool() instead of directly accessing tsmem->pool,
  this avoids having to worry about pool existence in all the various cases.
- Also fix up the pool-related comment on rpmtsEmpty(): pools does not
  and can not support emptying as it could break references to its
  contents. Per-string refcount would be needed for emptying support.
(cherry picked from commit d73535e1a9dc5095e78475adc5b636d99f01efa9)

11 years agoClean up fix grabData() error handling in callers
Panu Matilainen [Tue, 18 Dec 2012 11:22:12 +0000 (13:22 +0200)]
Clean up fix grabData() error handling in callers

- grabData() only returns non-NULL on data length > 0, separately
  checking for length only makes it look like a possible case when
  its not. If it were, it'd be a memory leak.
(cherry picked from commit aa6af71d457be5d78252f23ea68322dcaf199e4e)

11 years agodisplay the actual unknown option instead of '?'
Thierry Vignaud [Mon, 17 Dec 2012 12:58:44 +0000 (13:58 +0100)]
display the actual unknown option instead of '?'

'?' is returned by getopt when option is unknown, making hard to
pinpoint the actual bogus option...

Signed-off-by: Panu Matilainen <pmatilai@redhat.com>
(cherry picked from commit 8192e580a0a962b8eb7f9d8fc07bd3f99ccf0ffe)

11 years agoDead code removal
Panu Matilainen [Fri, 14 Dec 2012 07:26:02 +0000 (09:26 +0200)]
Dead code removal

- Nothing is setting "arch" here anymore, this should've been removed in
  commit fddfee17c3c4e19269665800d557d3452cbde162 already
(cherry picked from commit 1c3f966903743ea571a23e1af08a618b4179c5cb)

11 years agoPreparing for 4.11.0-beta1 rpm-4.11.0-beta1 upstream/4.10.91
Panu Matilainen [Mon, 10 Dec 2012 13:20:51 +0000 (15:20 +0200)]
Preparing for 4.11.0-beta1

11 years agoEnsure correct return code on malformed signature in packages
Panu Matilainen [Fri, 7 Dec 2012 11:54:23 +0000 (13:54 +0200)]
Ensure correct return code on malformed signature in packages

- rpmpkgRead() starts with assumed failure, but there are a number
  of places assigning the return code, and by the time we get
  to the parsePGPSig() calls its likely to be RPMRC_OK, so the
  jumps to exit result in "all is well" return code on a signature
  we couldn't even parse. Oops.
- Set the failure status explicitly to fix this fairly nasty regression
  introduced in commit e8bc3ff5d780f4ee6656c24464402723e5fb04f4, ie
  rpm >= 4.10.
(cherry picked from commit 96a616c6aed4c516789a154af188f005caf23f14)

11 years agoHandle allocation failure in NSS DSA signature initialization
Panu Matilainen [Tue, 4 Dec 2012 12:06:42 +0000 (14:06 +0200)]
Handle allocation failure in NSS DSA signature initialization
(cherry picked from commit 2d39f13064f6e6ff1a1633b708e7ba5622a7e8eb)

11 years agoFix build with older NSS versions that dont support SHA224
Panu Matilainen [Fri, 30 Nov 2012 10:23:42 +0000 (12:23 +0200)]
Fix build with older NSS versions that dont support SHA224

- SHA224-support was added around NSS 3.13, dont break compilation
  with older versions just for this rarely used hash.
- HASH_AlgSHA224 is an enum so test for SHA224_LENGTH define instead
(cherry picked from commit e15e29823451663e27a5bec6c865b37901f1c315)

11 years agoCondence NSS getHashType() a bit, handle SHA224 too
Panu Matilainen [Fri, 30 Nov 2012 10:20:05 +0000 (12:20 +0200)]
Condence NSS getHashType() a bit, handle SHA224 too

- Not much point in enumurating unsupported cases, or with switch-breaks
  after returns.
- Recognize SHA224 too
(cherry picked from commit 466a6b554e7f7ded9f1c59646e6b64243ce16812)

11 years agoUnbreak --setperms (RhBug:881835)
Panu Matilainen [Fri, 30 Nov 2012 06:15:24 +0000 (08:15 +0200)]
Unbreak --setperms (RhBug:881835)

- Fixes a regression introduced in rpm >= 4.10 caused by query format
  simplification (loss of zero padding support), in commit
  1f1e5e88a1f6c60cf2d11014d809000e97a63aad.
- 'chmod' command doesn't need zero padding, just remove the formatting.
  In fact we shouldn't be passing the entire mode to it but just the
  permission bits, but fortunately chmod isn't too picky here.
(cherry picked from commit 4c90c79e3f3c178189ad3bd89dfd87cd3a2290ab)

11 years agoGet rid of long since deprecated VFY_VerifyDigest() uses
Panu Matilainen [Thu, 29 Nov 2012 10:35:13 +0000 (12:35 +0200)]
Get rid of long since deprecated VFY_VerifyDigest() uses

- VFY_VerifyDigest() has been deprecated since NSS >= 3.12 and for
  a good reason too: with VFY_VerifyDigest() caller needs to painfully
  enumerate every possible supported enc + hash combination, only for
  NSS to revert the process. Use the saner VFY_VerifyDigestDirect()
  interface instead and test for its presence in configure.
- This means we now require NSS >= 3.12 but as that's already 4.5 years
  old and included in ancient beasts like RHEL-4, this doesn't seem
  exactly unreasonable requirement. And then there's always beecrypt...
(cherry picked from commit 9b995a7674adba08248fac79ae8b23ecbecc13de)

11 years agoRemove extra ',' in NSS configure checks, whoops
Panu Matilainen [Thu, 29 Nov 2012 10:31:52 +0000 (12:31 +0200)]
Remove extra ',' in NSS configure checks, whoops
(cherry picked from commit e1c67173d38016a88989f5b09e0934f90094fe85)

11 years agoUse NSS-defined constants for DSA q-bits and signature length too
Panu Matilainen [Thu, 29 Nov 2012 09:05:04 +0000 (11:05 +0200)]
Use NSS-defined constants for DSA q-bits and signature length too

- No functional changes here (either), but using the proper constants
  simply makes things that little bit clearer.
(cherry picked from commit 604da18bc267f89568081c1ab163c7fc45207220)

11 years agoAvoid deprecation warnings from NSS >= 3.14
Panu Matilainen [Thu, 29 Nov 2012 08:43:24 +0000 (10:43 +0200)]
Avoid deprecation warnings from NSS >= 3.14

- NSS >= 3.14 introduces support for DSA2 and marks DSA_SUBPRIME_LEN
  as deprecated. Use explicit DSA1_SUBPRIME_LEN (we only support DSA1
  for now) instead where available, add compatibility define for
  older versions.
- Also directly include <blapit.h> where its defined - blabit.h gets
  included via cryptohi.h but being explicit about it avoids having
  to redefine it again "just in case".
(cherry picked from commit 73be0fc7d9faab9f1120e2979f2ca1feed522195)

11 years agoAdd missing <errno.h> include
Panu Matilainen [Mon, 26 Nov 2012 11:34:06 +0000 (13:34 +0200)]
Add missing <errno.h> include

- Should've been in commit cbd6ef58bbc122e6adf2138679915bd3845d6756,
  this breaks build when selinux-support is not compiled in
(cherry picked from commit ebba1c7b58ba089bb9e1ded147c789d9ca067b6c)

11 years agoAvoid locale issues in rpm2cpio.sh (RhBug:878363)
Panu Matilainen [Thu, 22 Nov 2012 10:22:06 +0000 (12:22 +0200)]
Avoid locale issues in rpm2cpio.sh (RhBug:878363)

- In gawk >= 4.0.x printf() "adjusts" things according to current locale,
  but we need the data as it is. Forcing C locale prevents gawk from
  getting funny ideas about character conversions...
(cherry picked from commit c0e95f1cedefd6d7522ef2cf7a2ada7c83821596)

11 years agoFix double-free on %caps in spec (RhBug:877512)
Panu Matilainen [Sat, 17 Nov 2012 15:57:59 +0000 (17:57 +0200)]
Fix double-free on %caps in spec (RhBug:877512)

- Fixes regression caused by dumb refactoring mistake in commit
  807ba93a6cf168410e3801347898949f356fcd6c
(cherry picked from commit 6bdd34c451dbf69792c59704e06f1ccb045ae743)

11 years agoAdd --undefine cli switch for undefining macros (related to RhBug:876308)
Panu Matilainen [Fri, 16 Nov 2012 11:21:15 +0000 (13:21 +0200)]
Add --undefine cli switch for undefining macros (related to RhBug:876308)
(cherry picked from commit 644f080a4868208bf61f28103b7b676c094129a0)

11 years agoAccount for temporary disk-space requirement on forced replace too
Panu Matilainen [Wed, 14 Nov 2012 10:19:49 +0000 (12:19 +0200)]
Account for temporary disk-space requirement on forced replace too

- Similar to commit 85df102165fdbe64978f2019d757d400e7448218, but
  for forced file replacements.
(cherry picked from commit b1d3f21a54eb1f23a08e9e2d943a6438502b0e47)

11 years agoRemove ancient, no longer relevant comment
Panu Matilainen [Wed, 14 Nov 2012 08:54:38 +0000 (10:54 +0200)]
Remove ancient, no longer relevant comment

- Since commit f7f5f88f9f3d6587e747b034ccb64a3f00ff4e1e, only the first
  instance of shared files is created, the rest are FA_SKIP which
  consume no disk space and are not counted either.
(cherry picked from commit f8da4f613680b4da4ee191f8b7451de9b36bfcbd)

11 years agoAccount for temporary disk-space requirements on updates (ticket #175)
Panu Matilainen [Wed, 14 Nov 2012 08:31:15 +0000 (10:31 +0200)]
Account for temporary disk-space requirements on updates (ticket #175)

- When updating packages, we first create them with a temporary names
  and only after all files from payload have been created this way,
  the files are renamed to the final target. This means that performing
  an update temporarily requires roughly twice the disk space (and inodes)
  compared to the final result on per-package level. Which matters
  when space is tight, such as presumably in RhBug:872314.
- Simulate what happens on upgrades by adding block and inode delta
  to the equation: installing a file always consumes an inode and
  the specified amount of disk space. But when replacing files,
  reduce the size-delta from disk consumption *after* checking for
  problems in a given DSI.
- Also fixes inode accounting which has been broken for forever (since
  commit a9a1fd866c573f41287e6ad256ce64b3970a1eaa more exactly)
(cherry picked from commit 85df102165fdbe64978f2019d757d400e7448218)

11 years agoAdd $RPM_CONFIGDIR/macros.d/ directory to default macro path (RhBug:846679)
Panu Matilainen [Fri, 9 Nov 2012 06:21:51 +0000 (08:21 +0200)]
Add $RPM_CONFIGDIR/macros.d/ directory to default macro path (RhBug:846679)

- There of course already is a drop-in directory for macro config bits
  in $(sysconfdir)/rpm/ but as /etc is supposed to be per-host admin
  territory, having another place for system package provided rpm config
  doesn't seem unreasonable.
- Whether this early in the path is the best possible or even reasonable
  position for this remains to be seen... but this way it could be used
  for "factory default" config bits by rpm itself as well, while still
  permitting vendor/host/user override.
(cherry picked from commit dcd261b9fe1e61e8ac3e99dbb443145bbf896886)

11 years agoAdd cli-switch to query for license files
Panu Matilainen [Thu, 8 Nov 2012 08:26:18 +0000 (10:26 +0200)]
Add cli-switch to query for license files
(cherry picked from commit 4b19c17f53f56c841903e5d6a09efdb10b2ca400)

11 years agoErm, actually mark the special %license files as RPMFILE_LICENSE
Panu Matilainen [Thu, 8 Nov 2012 08:20:24 +0000 (10:20 +0200)]
Erm, actually mark the special %license files as RPMFILE_LICENSE

- Somehow I thought this already got done somewhere... the new special
  %license files need to be marked as RPMFILE_LICENSE for easy querying.
(cherry picked from commit 5998b02665c30a5b560f8fe899c19235f9299bd0)

11 years agoDocument --define in rpmbuild manual as well (RhBug:665536) rpm-4.11.0-alpha upstream/4.10.90
Panu Matilainen [Tue, 6 Nov 2012 11:29:11 +0000 (13:29 +0200)]
Document --define in rpmbuild manual as well (RhBug:665536)

11 years agoDont complain about non-colored arch-specific packages
Panu Matilainen [Mon, 5 Nov 2012 15:15:23 +0000 (17:15 +0200)]
Dont complain about non-colored arch-specific packages

- Non-colored arch-specific packages are very common, for example
  -devel and -debuginfo packages among several other cases for which
  we cant do much about.  Dont whine without a good reason.

11 years agoWork around Fedora-specific patch to libselinux causing warnings
Panu Matilainen [Mon, 5 Nov 2012 14:00:39 +0000 (16:00 +0200)]
Work around Fedora-specific patch to libselinux causing warnings

- In recent Fedora, struct selinux_opt value member is changed to an
  anonymous union of char * and char **. Initialize the members by name
  to avoid warnings in both (patched and unpatched) cases.

11 years agoFix strncat() boundaries in Fdopen()
Dominique Leuenberger [Mon, 5 Nov 2012 13:45:29 +0000 (15:45 +0200)]
Fix strncat() boundaries in Fdopen()

Signed-off-by: Panu Matilainen <pmatilai@redhat.com>
11 years agoUpdate contact address in COPYING (RhBug:742362)
Panu Matilainen [Mon, 5 Nov 2012 13:08:28 +0000 (15:08 +0200)]
Update contact address in COPYING (RhBug:742362)

- marc and ewt haven't been valid email addresses in the last 10+
  years, cough...

11 years agoUpdate library current + age (ie libs are now 3.1.0)
Panu Matilainen [Mon, 5 Nov 2012 08:22:50 +0000 (10:22 +0200)]
Update library current + age (ie libs are now 3.1.0)

- We haven't removed or changed any interfaces in a way that would
  require full soname bump, only a handful of new interfaces have
  been added.
- There aren't actually any new interfaces in librpmbuild or librpmsign
  but for sanity and consistency's sake they're all updated...

11 years agoUpdate translations from Transifex
Panu Matilainen [Mon, 5 Nov 2012 08:09:18 +0000 (10:09 +0200)]
Update translations from Transifex

11 years agoEnable built-in %dirname macro
Panu Matilainen [Thu, 1 Nov 2012 10:09:30 +0000 (12:09 +0200)]
Enable built-in %dirname macro

- This might've clashed with %dir in spec %files at some point as
  indicated by the comments, but that should no longer be the case.

11 years agoRename -debug to -debuginfo to match what everybody uses anyway
Panu Matilainen [Thu, 1 Nov 2012 09:45:44 +0000 (11:45 +0200)]
Rename -debug to -debuginfo to match what everybody uses anyway

- Practically everybody renames the debug information sub-packages
  from -debug to -debuginfo, might as well do so upstream already.
  Intended to do this like five years ago but kept forgetting...

11 years agomake "canonicalization(...)shrank by one character" error message more usefull
thierry.vignaud@gmail.com [Fri, 19 Oct 2012 08:08:35 +0000 (10:08 +0200)]
make "canonicalization(...)shrank by one character" error message more usefull

Signed-off-by: Panu Matilainen <pmatilai@redhat.com>
11 years agoDon't call "rpm --addsign" if rpmbuild didn't create RPMs.
Tim Landscheidt [Wed, 24 Oct 2012 23:18:57 +0000 (23:18 +0000)]
Don't call "rpm --addsign" if rpmbuild didn't create RPMs.

Signed-off-by: Panu Matilainen <pmatilai@redhat.com>
11 years agoHide the strpool-related rpmts/rpmfi/rpmds interfaces out of sight for now
Panu Matilainen [Thu, 1 Nov 2012 07:45:15 +0000 (09:45 +0200)]
Hide the strpool-related rpmts/rpmfi/rpmds interfaces out of sight for now

- In the package/transaction related things the strpool is more of
  an internal implementation detail than an end-goal in itself, move
  string pool related interfaces of rpmts, rpmfi and rpmds to
  internal-only APIs for now. The kind interfaces we'll want to eventually
  export a) dont exist yet and b) are likely to be something very different.
- The string pool itself remains exported however, its a handy data
  structure for all sorts of things and both librpm and librpmbuild
  heavily use it already.

11 years agoUse private NSS context if NSS supports it (RhBug:871485)
Panu Matilainen [Wed, 31 Oct 2012 07:43:38 +0000 (09:43 +0200)]
Use private NSS context if NSS supports it (RhBug:871485)

- Older NSS versions operate on global context, which can cause
  all sorts of trouble when an API user tries to use NSS for their
  own purposes: eg they might want to use NSS databases which is not
  possible once we've initialized NSS with NSS_NoDB_Init(). Further
  background on the subject at https://wiki.mozilla.org/NSS_Library_Init
- Use private private NSS context when possible (NSS >= 3.12.5) to
  avoid such clashes, but keep support for older versions for now.

11 years agoHandle EINTR in Fread() and Fwrite()
Panu Matilainen [Tue, 30 Oct 2012 10:38:20 +0000 (12:38 +0200)]
Handle EINTR in Fread() and Fwrite()

- Not all systems automatically restart signal-interrupted operations,
  handle this centrally since its so easy to do. Also related to
  RhBug:580974.

11 years agoHandle partial reads and errors in package IO (RhBug:802839, RhBug:580974)
Panu Matilainen [Tue, 30 Oct 2012 09:36:56 +0000 (11:36 +0200)]
Handle partial reads and errors in package IO (RhBug:802839, RhBug:580974)

- There are no guarantees Fread() will return all of the requested size:
  it can return partial data eg on signals and pipe descriptors. Introduce
  a helper function to handle this centrally for all package read IO,
  effectively reintroducing timedRead() but without the caveats:
  timedRead() did not work on compressed streams, did not handle
  eg EINTR correctly and while really being an internal helper,
  was exported in the API.

11 years agoFix missing error on --import on bogus key file (RhBug:869667)
Panu Matilainen [Tue, 30 Oct 2012 07:29:46 +0000 (09:29 +0200)]
Fix missing error on --import on bogus key file (RhBug:869667)

- When the "BEGIN PGP" marker is not found at all, we would silently
  exit with success when trying to import utter garbage, such as
  rpmkeys --import /bin/bash (not that I consider bash as gargabe ;)

11 years agoRemove transition-time leftover pool unfreezing
Panu Matilainen [Fri, 26 Oct 2012 09:15:07 +0000 (12:15 +0300)]
Remove transition-time leftover pool unfreezing

- Nobody is freezing our pool so there's no need to unfreeze it either...

11 years agoEliminate static "misc stuff pool" from rpmfi
Panu Matilainen [Fri, 26 Oct 2012 08:47:31 +0000 (11:47 +0300)]
Eliminate static "misc stuff pool" from rpmfi

- Prior to string pool existence, the static "caches" were kinda
  necessary for sharing the relatively static content of user/group
  names and file languages, but this is nothing but an unfreeable
  block of memory at this point. Just use the same pool as everything
  else - whether private or shared.

11 years agoEliminate copy-paste nibble(), use rnibble() instead
Panu Matilainen [Fri, 19 Oct 2012 13:20:02 +0000 (16:20 +0300)]
Eliminate copy-paste nibble(), use rnibble() instead

11 years agoDefault to NSS crypto though...
Panu Matilainen [Fri, 19 Oct 2012 12:45:14 +0000 (15:45 +0300)]
Default to NSS crypto though...

- NSS is a big and quirky monster for our needs but that's what we've
  been defaulting to for the last years, and then there are those
  certifications...
- Also default to external beecrypt even if --with-beecrypt is used

11 years agoAdd support for beecrypt as an alternative crypto implementation
Michael Schroeder [Fri, 19 Oct 2012 12:43:09 +0000 (15:43 +0300)]
Add support for beecrypt as an alternative crypto implementation

Signed-off-by: Panu Matilainen <pmatilai@redhat.com>
11 years agoDont bother with digest and link comparisons if size differs, part II
Panu Matilainen [Fri, 19 Oct 2012 10:54:11 +0000 (13:54 +0300)]
Dont bother with digest and link comparisons if size differs, part II

- If link or regular file sizes differ, they cannot possibly be
  identical. Saves us from doing bunch of pointless string and
  memory comparisons on what's a very busy path - not exactly a huge
  with but measurable nevertheless.

11 years agoDont bother with %config digests on conflicts if size differs
Panu Matilainen [Fri, 19 Oct 2012 10:45:04 +0000 (13:45 +0300)]
Dont bother with %config digests on conflicts if size differs

- Files of different size cannot possibly be identical, dont bother
  with expensive digest calculation.

11 years agoFix noarch __isa_* macro filter in installplatform (RhBug:865436)
Panu Matilainen [Thu, 11 Oct 2012 14:57:10 +0000 (17:57 +0300)]
Fix noarch __isa_* macro filter in installplatform (RhBug:865436)

- The filter wasn't doing what it was supposed to due to extra single
  quotes getting inserted, causing "rpmbuild --target noarch foo.spec"
  to whine about empty macro bodies. This is a regression introduced
  in rpm 4.10, commit 07ec480c180e4005a629242b8f9f8ab640e3e950 to be
  precise.

11 years agoEliminate now unnecessary WITH_SELINUX conditionals in sepolicy plugin
Panu Matilainen [Thu, 11 Oct 2012 12:14:04 +0000 (15:14 +0300)]
Eliminate now unnecessary WITH_SELINUX conditionals in sepolicy plugin

11 years agoOnly try compiling sepolicy plugin if selinux is enabled
Panu Matilainen [Thu, 11 Oct 2012 12:09:15 +0000 (15:09 +0300)]
Only try compiling sepolicy plugin if selinux is enabled

11 years agoMissing include in string pool
Panu Matilainen [Thu, 11 Oct 2012 12:04:54 +0000 (15:04 +0300)]
Missing include in string pool

- When compiled without selinux support, stdlib.h doesn't get
  included here. Wtf?

11 years agoRevert "Update man page to reflect that rpm no longer uses MD5 as a default digest...
Florian Festi [Thu, 11 Oct 2012 10:20:06 +0000 (12:20 +0200)]
Revert "Update man page to reflect that rpm no longer uses MD5 as a default digest algorithm"

This reverts commit b040b323d6fac32f7f4fa77fd5cb60c7967fc53f.

The change does only affect file digests.

11 years agoAdd rpm --setperms and rpm --setugids to the man page
Florian Festi [Wed, 10 Oct 2012 12:59:32 +0000 (14:59 +0200)]
Add rpm --setperms and rpm --setugids to the man page

11 years agoUpdate man page to reflect that rpm no longer uses MD5 as a default digest algorithm
Florian Festi [Wed, 10 Oct 2012 11:17:09 +0000 (13:17 +0200)]
Update man page to reflect that rpm no longer uses MD5 as a default digest algorithm

11 years agoAdd lua 5.2 support.
Anders F Bjorklund [Wed, 12 Sep 2012 21:26:38 +0000 (23:26 +0200)]
Add lua 5.2 support.

Add compatibility support for both lua-5.1 and lua-5.2,
assuming that the LUA_COMPAT might have been disabled.

Signed-off-by: Panu Matilainen <pmatilai@redhat.com>
11 years agoDon't bother calculating digests of %ghost %config files
Panu Matilainen [Mon, 8 Oct 2012 06:27:18 +0000 (09:27 +0300)]
Don't bother calculating digests of %ghost %config files

- Calculating digest of %ghost config is useless as there's nothing
  to compare the result to. Also we never take backups of %ghost
  configuration anyway, so this is a total waste of time. One common
  case of %ghost %config is the rpmdb (environment and all) which
  can be rather large and calculating digests can take several seconds,
  only for the results to be thrown away unused.
- There are some cases where it might be reasonable to back up %ghost
  %config (eg if it gets replaced by non-config), but
  rpmfiConfigConflictIndex() doesn't have sufficient context to figure
  that out. For now, preserve the traditional simple rule: no backups
  for ghosts, ever.

11 years agoUse rpmal lookups for already added obsoletions too
Panu Matilainen [Fri, 5 Oct 2012 08:38:26 +0000 (11:38 +0300)]
Use rpmal lookups for already added obsoletions too

- Related to commit bee348b5d101a0ea6039b56c39e8ddc1cfc09a1a,
  use the newly added obsoletes hash to lookup already added
  obsoleters. Eliminates the dumb linear lookup and is unsurprisingly
  a whole lot faster on larger transactions.

11 years agoAdd a hash + lookup function on obsoletes to rpmal
Panu Matilainen [Fri, 5 Oct 2012 08:35:11 +0000 (11:35 +0300)]
Add a hash + lookup function on obsoletes to rpmal

- Similar lazily created hash as provides for fast obsoletes lookups.
  This is so similar the provides that creation etc functions should
  be unified, but leaving that exercise till later.

11 years agoRename rpmalProvidesHash to rpmalDepHash
Panu Matilainen [Fri, 5 Oct 2012 08:34:22 +0000 (11:34 +0300)]
Rename rpmalProvidesHash to rpmalDepHash

- The same hash type is valid for any ds and we'll be adding more...

11 years agoAvoid changing the file info sets when adding to rpmal file hash
Panu Matilainen [Fri, 5 Oct 2012 08:25:49 +0000 (11:25 +0300)]
Avoid changing the file info sets when adding to rpmal file hash

- Use indexed access to the file info sets so we're not mucking
  around with somebody elses rpmfi iterator index (currently not an
  issue but still...)

11 years agoAvoid changing the dependency sets when looking up from rpmal
Panu Matilainen [Fri, 5 Oct 2012 07:16:44 +0000 (10:16 +0300)]
Avoid changing the dependency sets when looking up from rpmal

- Use indexed access and comparison to avoid mucking around with
  eg transaction element dependency sets while the callers are walking
  over them.

11 years agoAvoid changing the dependency sets when adding to rpmal hash
Panu Matilainen [Fri, 5 Oct 2012 07:13:09 +0000 (10:13 +0300)]
Avoid changing the dependency sets when adding to rpmal hash

- Use indexed access to the dependencies so we're not mucking with
  the rpmds iterator index behind anybodys back, this could affect
  all sorts of things but miraculously nothing is hitting it atm...

11 years agoGuard against NULL ds in the rpmds indexed getters
Panu Matilainen [Fri, 5 Oct 2012 07:09:50 +0000 (10:09 +0300)]
Guard against NULL ds in the rpmds indexed getters

- NULL dependency sets are all over the place as NULL ds means
  "no dependencies of this kind", whereas for eg rpmfi NULL is an
  error.

11 years agoExport the indexed rpmds accessors internally
Panu Matilainen [Fri, 5 Oct 2012 07:07:52 +0000 (10:07 +0300)]
Export the indexed rpmds accessors internally

- Add an internal header for rpmds too to allow adding interfaces we
  dont necessarily want to export in the public API, make the indexed
  accessors available internally.

11 years agoAdd indexed access variants for rpmdsColor() and rpmdsCompare()
Panu Matilainen [Fri, 5 Oct 2012 07:04:04 +0000 (10:04 +0300)]
Add indexed access variants for rpmdsColor() and rpmdsCompare()

- Various places in rpm need random access to the dependency sets,
  save and restore on somebody elses "iterator index" just doesn't
  cut it. This is merely preliminaries for further changes.

11 years agoBe as lazy as possible wrt rpmal hash creation
Panu Matilainen [Thu, 4 Oct 2012 12:48:43 +0000 (15:48 +0300)]
Be as lazy as possible wrt rpmal hash creation

- Separate provides and files hash creation, delay both until the last
  moment before first valid lookup. In practise, this means the provides
  hash is created early due to lookups from rpmtsAddInstallElement(),
  but the big bad file hash creation is delayed until the entire
  transaction set has been more-or-less populated. Which means we have
  a better idea about the necessary hash table size, meaning fewer
  hash resizes, resulting in good deal faster execution with no
  downsides - if something happened to trigger an early file lookup
  it'll all still work, just slower.

11 years agoUse rpmal lookups for finding redundancies in the added set
Panu Matilainen [Tue, 2 Oct 2012 13:40:45 +0000 (16:40 +0300)]
Use rpmal lookups for finding redundancies in the added set

- Replace the dumb linear search across all elements on each
  addition with (filtered) rpmal lookups where possible. rpmal
  doesn't (yet) have obsoletes information so for already added
  obsoletions we have no choice but to walk the walk.
- As a result, findPos() is hugely faster for large transactions
  but rpmal hashes are now generated on the fly for everything
  instead of doing it all at once before the actual dependency
  checks / ordering, which will cost us something in terms of
  hash table resizes.

11 years agoDont bother with rpmRelocateFileList() if relocations have been specified
Panu Matilainen [Tue, 2 Oct 2012 13:17:05 +0000 (16:17 +0300)]
Dont bother with rpmRelocateFileList() if relocations have been specified

- rpmRelocateFileList() doesn't modify anything when no relocations
  are to be done, but what it does is not exactly free, unnecessarily
  calling it is dumb.

11 years agoOnly return non-NULL from rpmalAllSatisfiesDepends() on real matches
Panu Matilainen [Tue, 2 Oct 2012 09:12:20 +0000 (12:12 +0300)]
Only return non-NULL from rpmalAllSatisfiesDepends() on real matches

- The provides hash lookup can and does return hits that dont actually
  satisfy the dependency. Dont bother callers with apparent hits
  (ie non-NULL returns) when nothing actually matches the dependency.

11 years agoExport rpmalAllSatisfiesDepend() internally (again)
Panu Matilainen [Tue, 2 Oct 2012 07:50:10 +0000 (10:50 +0300)]
Export rpmalAllSatisfiesDepend() internally (again)

- For some uses, we need to be more selective about providers...

11 years agoPass the newly create ts element instead of header to findPos()
Panu Matilainen [Tue, 2 Oct 2012 07:37:36 +0000 (10:37 +0300)]
Pass the newly create ts element instead of header to findPos()

- Avoids a little bit of extra work, we already have the relevant
  bits of information in the rpmte and grabbing them from there is
  cheaper than looking up stuff from headers. Also avoids creating
  another copy of the new elements obsoletes dependency set unnecessarily.

11 years agoEliminate all the now unnecessary fsm->ix save-and-restores
Panu Matilainen [Mon, 1 Oct 2012 10:19:59 +0000 (13:19 +0300)]
Eliminate all the now unnecessary fsm->ix save-and-restores

- Now that the relevant places are accepting file index as argument,
  we no longer need to save and restore fsm->ix in all the places
  dealing with hard links.

11 years agoPass file index as argument to fsm fsmMapPath()
Panu Matilainen [Mon, 1 Oct 2012 10:15:30 +0000 (13:15 +0300)]
Pass file index as argument to fsm fsmMapPath()

- Normally this is just the current index, but when writing links
  its something else and makes sense as an argument (so we dont
  need to save and restore fsm->ix when doing something different)

11 years agoPass file index as argument to fsm fsmCommit()
Panu Matilainen [Mon, 1 Oct 2012 10:01:33 +0000 (13:01 +0300)]
Pass file index as argument to fsm fsmCommit()

- Normally this is just the current index, but when writing links
  its something else and makes sense as an argument (so we dont
  need to save and restore fsm->ix when doing something different)