summaryrefslogtreecommitdiff
path: root/build
AgeCommit message (Collapse)AuthorFilesLines
2013-04-13Add VCS tag into .src.rpmAlexander Kanevskiy1-0/+1
2013-02-02Adding manifest support for rpmbuildElena Reshetova2-1/+14
2013-02-02Find supplementsAnas Nashif2-0/+48
2013-02-02Create a debuginfo package for each subpackage.Anas Nashif1-2/+234
Originally from opensuse rpm
2013-02-02short changelogAnas Nashif2-0/+63
2013-02-02Add support for weak dependencies:Anas Nashif4-0/+60
A) use RPMTAG_SUGGESTS and RPMTAG_ENHANCES to store them. This is different to upstream, which uses RPMSENSE_MISSINGOK and RPMTAG_REQUIRES/RPMTAG_PROVIDES instead. I chose different tags because I wanted to be compatible. The point is that applications that don't know about the new MISSINGOK semantics will mis-interpret the provides/requires otherwise, which I deemed to risky. B) use RPMSENSE_STRONG to support a "strong" version, "Recommends" instead of "Suggests" and "Supplements" instead of "Enhances".
2013-01-29Make double-quoting work for special %doc (and %license) tooPanu Matilainen1-1/+4
- 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)
2012-11-18Fix double-free on %caps in spec (RhBug:877512)Panu Matilainen1-1/+0
- Fixes regression caused by dumb refactoring mistake in commit 807ba93a6cf168410e3801347898949f356fcd6c (cherry picked from commit 6bdd34c451dbf69792c59704e06f1ccb045ae743)
2012-11-08Erm, actually mark the special %license files as RPMFILE_LICENSEPanu Matilainen1-1/+2
- 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)
2012-11-05Dont complain about non-colored arch-specific packagesPanu Matilainen1-1/+2
- 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.
2012-11-05Update library current + age (ie libs are now 3.1.0)Panu Matilainen1-1/+1
- 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...
2012-09-26Freeze the rpmfc string pools once all additions are donePanu Matilainen1-0/+4
- Memory use isn't typically that critical during build, but saving a little bit of it doesn't hurt anyway...
2012-09-26Dont waste time with argi for rpmfc file class indexesPanu Matilainen1-9/+6
- argiAdd() isn't as costly as argvAdd(), but it still involves unnecessary reallocation on every addition as the number of files is predetermined, and each file has an associated class index. - Additionally fixes a mostly harmless glitch introduced in commit 65e616cc9fdd00f523939088fab1070021b9f742: the pool id's are one larger than the indexes we store in headers, take this into account in the debug output.
2012-09-26Dont waste time with argi for rpmfc file colorsPanu Matilainen1-15/+11
- argiAdd() isn't as costly as argvAdd(), but it still involves unnecessary reallocation on every addition as the number of files is predetermined, and each file has an associated color (whether its zero or something else)
2012-09-26Dont waste time with argv for rpmfc file namesPanu Matilainen1-5/+8
- argvAdd() gets more and more costly as the number of files increase, use a plain old string array where one is called for: the size is predetermined (from another argv) and we're just copying the strings for internal storage here. We do need to pay a little bit more attention to details now though.
2012-09-26Use a string pool for the build-time file dependency string storagePanu Matilainen1-9/+9
- The pool is mostly just a dumb storage space for this case, but insertion to pool is far more efficient than argv search, add, sort operation. The order does not matter as the actual information is encoded in the string and then painfully parsed out again. This could really use a special-purpose data structure for sanity but...
2012-09-26Use a string pool to build file class dictionary and indexesPanu Matilainen1-25/+17
- The string pool is a natural fit for this and much more efficient when the number of files (and classes) is large. - This does have an effect on the generated classdict array: it's no longer sorted, and we no longer always (possibly unnecessarily) insert an empty string and "directory" in it, but only when they actually exist. Neither change makes any difference for usage, unless some 3rd party software is making assumptions about the classdict contents they shouldn't be making (very unlikely anyway)
2012-09-26Cosmetics: properly indent the rpmfc debug foobarPanu Matilainen1-6/+8
2012-08-08Fix bogus "unclosed %if" error when %include is used in conditionalsPanu Matilainen1-9/+6
- All rpm versions log a bogus "unclosed %if" error when %include is used inside %if-%endif (and rpm >= 4.10 actually aborts the parse): the check for unclosed if occurs before checking whether there's more to come. - Move the error check into readLine() EOF path along with the other similar check to fix, and to consolidate the error handling to a single spot.
2012-08-07Handle all dependency tags in spec via same switch-case fallthroughPanu Matilainen1-3/+1
- Requires and OrderWithRequires take extra qualifiers, but other than that they areall handled the same through parseRCPOT()
2012-08-07"prereq" is not a valid qualifier to regular RequiresPanu Matilainen1-1/+0
2012-08-07Extra qualifiers like (postun) are not valid with legacy PreReqPanu Matilainen1-1/+1
2012-08-01Fix memleak in changelog parsing on error pathsPanu Matilainen1-10/+13
- All the early returns would leak memory from the argvJoin(), assume failure and force all exits through a single path where we can clean up.
2012-08-01Turn the invalid date error to warning (related to RhBug:843525)Panu Matilainen1-1/+4
- The strict date validation introduced in commit a29e5f9894e4d97322d34b0636e5a37bff509323 is too much of a PITA for such a petty cause, mismatching weekday names as very very common in specs. Maybe we can change it to a hard error in a couple of years from now once folks have had time to get rid of the warnings first.
2012-08-01Refactor the struct stat hacking into a helper functionPanu Matilainen1-38/+46
- Shouldn't change actual functionality, just makes the code easier to read and fit on screen by reducing indentation level. - Add further commentary about what it does and why.
2012-08-01Permit non-existent %ghost directories to be packaged (RhBug:839656)Panu Matilainen1-7/+7
- Directories can be explicitly specified via either %dir or trailing slash in the %files manifest, take this into account for %ghosts that dont exist in the buildroot. Otherwise we still assume regular file. - Dont require explicit %attr() for missing %ghosts, let them fall back to %defattr() instead. If %defattr() doesn't specify a mode the file will be seen without any permissions at all, but that's not strictly an error (and same can happen with %dev() already)
2012-08-01Dont bother asking libmagic about directoriesPanu Matilainen1-1/+1
- There's no (relevant) additional information to be gained from passing directories to libmagic and we already have this info available in the file mode. This permits nice and easy handling of %ghost directories (related to RhBug:839656)
2012-07-31Report starting line for unclosed %if in specsPanu Matilainen2-1/+4
2012-07-31Dynamically grow spec line buffer on line continuationsPanu Matilainen1-5/+10
- Allows arbitrary length line continuation constructs in specs, but probably the more useful side-effect is cleanly handling unterminated macros and the like (instead of segfaulting) on large spec files, there was a bug on this somewhere but cant find it atm. - This also has a wee bit silly effect on the maximum macro expansion size: after very long constructs the max expansion gets is bigger than at the beginning of spec parse, but properly fixing the resizing wrt macros is a different issue. - Watch out for possible fallout from spec->line etc tracking, they *seem* to be ok even with the potentially moving buffer location but...
2012-07-31Minor cleanups: const pedantry and helper variable scopingPanu Matilainen1-8/+5
- Make the reading pointers const, push helpers to scope where needed
2012-07-31Allocate spec line buffer separately from spec structPanu Matilainen3-2/+6
- Further preliminaries for dynamic buffer resizing
2012-07-31Track spec parse buffer position by offset instead of pointerPanu Matilainen2-4/+4
- Preliminaries for dynamically reallocating the buffer
2012-07-30Stricter validation of changelog date (RhBug:843525)Panu Matilainen1-2/+14
- Compare the date parsed from changelog to date normalized by mktime() and complain if they differ. This catches cases like wrong weekday specified for an otherwise valid date, and a leap day on a non-leap year etc.
2012-07-12Always print out package dependencies on buildPanu Matilainen1-7/+7
- Previously packages which had no files or for which automatic dependency generation was partially or fully disabled didn't get any of their dependencies printed out at build-time. This doesn't affect the actual recorded dependencies, only the "debugging" output during package builds.
2012-07-10Accept "owner" as an alias to "user" %verify attribute (RhBug:838657)Panu Matilainen1-0/+1
- Both Maximum RPM and the newer RPM Guide incorrectly list "owner" as a valid %verify() attribute, whereas rpm has used "user" for as long as the code has been present (since 1996). Since adding the alias is so trivial, and certainly easier than changing published books... meh.
2012-07-02Also track large file presence for src.rpm's (RhBug:833427)Panu Matilainen1-0/+3
2012-07-02Push payload file size limit checking into cpio codePanu Matilainen1-13/+2
- At the time when the file list is being processed, we dont yet have the slightest clue what kind of payload will be used for for the archive or what limits it might have. Let the cpio code handle its own limits checking, the build-side only needs to worry about whether 32bit uints are sufficient for storing the sizes in headers.
2012-07-02Report the actual failure reason on archive create failure (again)Panu Matilainen1-2/+5
2012-05-31Export our own version of glob_pattern_p() as rpmIsGlob()Panu Matilainen1-1/+1
- Further preliminaries to hiding the glob() implementation
2012-05-29Parametrize default vs current %verify and %attr parsingPanu Matilainen1-25/+17
- Only try to parse one thing at a time so the caller knows what value its going to get if any and doesn't have to pass both current and default pointers. Just simplifies things a little.
2012-05-28Initial support for "special" %license, similar to %doc (ticket #116)Panu Matilainen2-23/+45
- Now that this is relatively sanely doable... make %license with non-absolute paths behave similarly to %doc, only installing to a different directory (%_licensedir) and with different flags: licenses are not generic documentation and should not be skipped on installation even if --nodocs is used. The common practise of stuffing licenses into %doc actually violates various licenses which require the license text to always accompany the software. - While ticket #116 suggests various schemes to reduce disk usage, adding some very special logic to installation code just to deal with these doesn't seem justifiable, given how small the licenses generally are. However with licenses now in their own directory structure (/usr/share/licenses by default), running hardlink on them is trivial for cases where disk space is tight (live images, embedded systems etc)
2012-05-28Generalize special doc attribute to "special dir"Panu Matilainen1-5/+5
2012-05-28Handle rpmfiNew() failure centrally in genCpioListAndHeader()Panu Matilainen1-6/+3
2012-05-28Fix spec parsing memleak from source header on buildarch recursionPanu Matilainen1-0/+3
2012-05-28Eliminate redundant helper variables from src.rpm generationPanu Matilainen1-9/+6
- Spec being the first is easily detected from the current index, no need for separate tracking variable - Use the file records used variable to track the progress, no need for separate index variable
2012-05-28Move file list freeing to helper functionPanu Matilainen1-9/+11
2012-05-28Hardlink detection doesn't need entire filelist, just the actual recordsPanu Matilainen1-11/+11
2012-05-28isDoc() only needs the doc dirs, not the entire filelistPanu Matilainen1-5/+4
2012-05-28Clean up file records freeing a bitPanu Matilainen1-12/+9
- All the necessary data is in FileRecords struct so we only need to pass that. Dont bother NULLing everything as these are not passed around in a way where it would matter.
2012-05-28Split the actual file records into a struct of their ownPanu Matilainen1-25/+30
- No functional changes, just straightforward dumb conversion. Various places look fairly dumb with this, leaving sanitizing to other commits.