summaryrefslogtreecommitdiff
path: root/meta/classes/package_rpm.bbclass
AgeCommit message (Collapse)AuthorFiles
2012-06-12package_rpm: Verify that the package manifests are not emptyMark Hatle1
An empty manifest will cause a failure condition. We ensure that any install actions occur only with a manifest larger then size 0. Also ensure that padding is added to the end of the manifest, instead of the beginning to enable this size check. (Padding is required for very small manifest files..) Signed-off-by: Mark Hatle <mark.hatle@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-06-12rootfs_rpm.bbclass: Update database configuration fileMark Hatle1
Move the creation of the database configuration files to just before we perform the install actions. This ensures they will exist even in SDK or other non-target filesystem images. Signed-off-by: Mark Hatle <mark.hatle@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-06-12package_rpm: Add capability to directly query packageoriginMark Hatle1
Add functionality to RPM to directly query the packageorigin (path) from the resolver database, instead of having to do this via an indirect method. This results in a minor performance improvement. Signed-off-by: Mark Hatle <mark.hatle@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-05-30update-alternatives.bbclass: Refactor the implementationMark Hatle1
Refactor in order to: * Deprecate the old interfaces, but keep them for compatibility * Provide a new, interface -- capable of working with split packages * Each update-alternative will now set proper "per-file" provides Note: this adds a warning message when the older deprecated behavior is used. The older behavior has been fully tested using oe-core. Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
2012-05-24package_rpm.bbclass: Fix incremental rpm image generationRobert Yang1
Fix the incremental rpm image generation, it didn't work since the code has been changed. The btmanifest should have a ".manifest" suffix, so that it can be moved to ${T} by rootfs_rpm.bbclass: mv ${IMAGE_ROOTFS}/install/*.manifest ${T}/ Note: The locale pkgs would always be re-installed. [YOCTO #2440] Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
2012-05-11package.bbclass: Drop EXPORT_FUNCTIONS use against mapping_rename_hookRichard Purdie1
The usage of this function renaming and it being called using bb.build.exec_func() causes needless indirection loops, confusing log files and seems generally pointless. This simplification makes the process much simpler and faster. I can't come up with a good reason why the export_functions functionality is needed for this function. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-04-27package_rpm: Only rebuild the indexes if the packages have changedRichard Purdie1
This change farms the solvedb creation out to a separate script which handles creation of the index, only if mtime of any of the packages has changed. For a core-image-minimal set of rpm's this saves ~20s of a 45s rootfs build. For core-image-sato it saves 1 minute of a 5 minute rootfs build. The more packages in the system, the bigger the saving will be. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-04-26package_rpm.bbclass: Replace shell provides/requires script with python versionRichard Purdie1
The existing shell script is a fork bomb and forks off hundreds of grep/cur/wc calls as it reads from its input stream and iterates over the file data table for each line of input. This patch replaces the shell code with python code which doesn't exec anything and hence runs much faster without the exec() overhead. This speeds up rpm packaging considerably, as can be measured simply by timing it, or watching the processor utilisation. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-04-12package_rpm.bbclass: Set tmppath for rpm to somewhere which won't conflict ↵Richard Purdie1
with the rootfs If the rootfs has a specific layout in mind for /var/tmp, it should be free to create this. Preinst scripts trigger rpm to create its tmppath directory which could potentially conflict with this. We're seeing issues if the provider of the /var/tmp wants to use a symlink and a preinst script executes before it has been installed. This change places tmppath as used by rpm somewhere safe which is already automatically cleaned up too. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-04-12package_rpm.bbclass: Use the correct macros file to avoid empty solvedb path ↵Richard Purdie1
issues Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-04-12package_rpm: Fix useradd preinst ordering issuesRichard Purdie1
We were already having occasional ordering issues with package_rpm. Fixing the ldconfig postinstall issue pushed rpm over the cliff and totally broke rpm builds with the packages getting installed in effectively a random order and the useradd preinstalls getting executed out of order and breaking. The only explanation I can find for this is that rpm is special. It will happily run a preinst for a package without any of that package's dependencies being present regardless of whether there are any circular dependency issues or not. I attempted various ways of solving this such as ordering the total_solution.manifest in creative ways but the bottom line is RPM ignores this. It takes little account of any request to ignore /bin/sh dependencies for the purposes of constructing the final image. The end result is we're having to install the base-passwd, base-files and shadow packages first (if there is a request to install them), then install any other packages. It this wasn't in the middle of a release I'd be rewriting this bbclass file, its horrible. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-04-04package_{deb,ipk,rpm}: apply umask to files generated in ↵Andreas Oberritter1
do_package_write_{deb,ipk,rpm} * Explicitly set umask to 022. Otherwise the build system's umask may leak into the image. Signed-off-by: Andreas Oberritter <obi@opendreambox.org>
2012-03-26package_rpm: Add srpm function to this bbclassXiaofeng Yan1
Add a new function to archive source, patches and logs to a source rpm package. Every source rpm package will be deployed to ${DEPLOY_DIR}/sources/deploy-srpm [YOCTO #1977] Signed-off-by: Xiaofeng Yan <xiaofeng.yan@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-03-26Fix empty file case that caused build error at do_rootfsJessica Zhang1
Signed-off-by: Jessica Zhang <jessica.zhang@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-03-23package_rpm.bbclass: ensure base-passwd and shadow get installed firstScott Garman1
When generating images, we need to make sure that base-passwd and shadow get installed before other packages, which might need to create custom user accounts. Thanks to Richard Purdie for the initial version of this fix. This fixes [YOCTO #2127] Signed-off-by: Scott Garman <scott.a.garman@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-03-19package_rpm.bbclass: fix bashims at rpm_common_comand() methodOtavio Salvador1
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> Cc: Daiane Angolini <daiane.angolini@freescale.com>
2012-03-05meta: Replace bb.data.expand(xxx, d) -> d.expand(xxx)Richard Purdie1
sed \ -e 's:bb.data.\(expand([^,()]*\), *\([^) ]*\) *):\2.\1):g' \ -i `grep -ril bb.data.expand *` Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-03-05meta: Convert getVar/getVarFlag(xxx, 1) -> (xxx, True)Richard Purdie1
Using "1" with getVar is bad coding style and "True" is preferred. This patch is a sed over the meta directory of the form: sed \ -e 's:\(\.getVar([^,()]*, \)1 *):\1True):g' \ -e 's:\(\.getVarFlag([^,()]*, [^,()]*, \)1 *):\1True):g' \ -i `grep -ril getVar *` Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-03-05meta/classes: Convert to use appendVar and appendVarFlagsRichard Purdie1
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-02-01classes: replace 'Poky' with 'OE-core'Koen Kooi1
Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
2012-01-17package_rpm.bbclass: Add support for filenames with spacesMark Hatle1
Files with spaces must be fully quoted in an RPM spec file. It was easier to quote all file paths, then to do it selectively. Signed-off-by: Mark Hatle <mark.hatle@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2012-01-11Incremental rpm image generationRobert Yang1
Incremental rpm image generation, the rootfs would be totally removed and re-created in the second generation by default, but with INC_RPM_IMAGE_GEN = "1", the rpm based rootfs would be kept, and will do update(remove/add some pkgs) on it. NOTE: This is not suggested when you want to create a productive rootfs For example: 1) Add the follow config option to a conf file: INC_RPM_IMAGE_GEN = "1" 2) bitbake core-image-sato modify a package bitbake core-image-sato The rootfs would not be totally removed and re-created in the second generation, it would be simply updated based on the "package". Implatation: 1) Figure out the pkg which need to be removed or re-installed, then use 'rpm -e to remove the old one. Use the rpm's BUILDTIME to determine which pkg has been rebuilt. 2) Figure out the pkg which is newly added, and use 'rpm -U' to install it. This only for the rpm based rootfs, the deb and ipk based rootfs would be done later. [YOCTO #1651] Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
2011-12-23package_rpm.bbclass: Add RPMSPEC_PREAMBLEMark Hatle1
Add a way to add arbitrary text to the top of a spec file. This can be useful for adding specific tags to the produced binaries for tracking purposes. Signed-off-by: Mark Hatle <mark.hatle@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-12-23package.bbclass: Adjust RPM call to use dynamic location for magic filesMark Hatle1
The magic file could be installed somewhere else if the system native prefix settings are changed. Adjust the packaging files to compensate for this. Signed-off-by: Mark Hatle <mark.hatle@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-11-26getVar/setVar cleanupsRichard Purdie1
Complete the bb.data.getVar/setVar replacements with accesses directly to the data store object. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-11-18package_rpm: Set _tmppath to avoid races over tmp filesRichard Purdie1
Occasionally we keep seeing "unable to open temp file" messages during do_package_write_rpm tasks. This appears to happen when multiple processes are writing rpm files and is likely due to using the shared system temp directory. This patch changes the tmp path to the package work directory meaning conflicts should become a non-issue. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-11-11rootfs_rpm.bbclass: Enable pre and post install scriptsMark Hatle1
[YOCTO #1755] We change the want the RPM rootfs install works to install pre and post install scripts. The new method uses a script helper that is invoked by RPM outside of the normal chroot. The wrapper is dynamically generated prior to the install starting. It will check the return code of the script. If the script fails, it will store a copy to be executed on the first system boot. This is similar to the previous mechanism. In addition, a line of debug was added to the scripts as written by package_rpm to list which package and which script for later debugging, if necessary. Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
2011-11-10Convert to use direct access to the data store (instead of bb.data.*Var*())Richard Purdie1
This is the result of running the following over the metadata: sed \ -e 's:bb.data.\(setVar([^,()]*,[^,()]*\), *\([^ )]*\) *):\2.\1):g' \ -e 's:bb.data.\(setVarFlag([^,()]*,[^,()]*,[^,()]*\), *\([^) ]*\) *):\2.\1):g' \ -e 's:bb.data.\(getVar([^,()]*\), *\([^(), ]*\) *,\([^)]*\)):\2.\1,\3):g' \ -e 's:bb.data.\(getVarFlag([^,()]*,[^,()]*\), *\([^(), ]*\) *,\([^)]*\)):\2.\1,\3):g' \ -e 's:bb.data.\(getVarFlag([^,()]*,[^,()]*\), *\([^() ]*\) *):\2.\1):g' \ -e 's:bb.data.\(getVar([^,()]*\), *\([^) ]*\) *):\2.\1):g' \ -i `grep -ril bb.data *` Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-11-10classes: Remove various bashismsRichard Purdie1
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-11-09classes/package_rpm: disable uninstall scripts for upgradesPaul Eggleton1
Our current assumption (based on the behaviour of opkg) when writing recipes is that prerm and postrm do not get called during an upgrade. When using rpm however, these are mapped to the rpm "preun" and "postun" events which occur after postinst for upgrades, and when these contain removal type operations (such as update-alternatives --remove) this causes problems. This patch wraps each preun and postun script for rpm in a check that determines whether or not the script is being called during an upgrade, and skips the entire script if it is, which mimics the behaviour of opkg under the same conditions. Fixes [YOCTO #1760] Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
2011-11-08multilib: Drop MULTILIB_IMAGE_INSTALLDongxiao Xu1
There should just be a single IMAGE_INSTALL variable. If the package backends need this split into different multilib components they should be responsible for doing this, not the user. This commit removes the MULTILIB_IMAGE_INSTALL variable. [YOCTO #1564] Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-10-04package_rpm: Ensure multilib code is only called in the multilib caseRichard Purdie1
This fixes some error messages in the do_rootfs logs of non-multilib builds. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-09-28multilib: add MLPREFIX to deploy folderDongxiao Xu1
Add MLPREFIX to multilib deploy forlder to avoid the confliction between multilib and normal package deploy directory. Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-09-28package_rpm: combine normal and multilib solution manifest togetherDongxiao Xu1
When RPM does the real install, if the first manifest file is empty, the installation will stop without handling the second manifest file. Merge the two manifest files together to fix this issue. Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
2011-09-22rootfs_rpm: two step installationDongxiao Xu1
Firstly we install a base image. Then install those multilib packages listed in MULTILIB_IMAGE_INSTALL. Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com> Acked-by: Mark Hatle <mark.hatle@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-09-21Fix RPM dependenciesMark Hatle1
When packaging for RPM, dependencies were not being properly added to the packages. Only the "providing" dependencies were added due to a typo. Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
2011-09-21multilib: install MULTILIB_IMAGE_INSTALLDongxiao Xu1
If user set MULTILIB_IMAGE_INSTALL, we need to install those multitlib packages into the final image. Also fix the logic in handling multilib prefix. For certain case like a normal image contains several multilib libraries, the image recipe isn't extended with MLPREFIX, therefore we need to enumerate the possible multilib prefixes and compare them with package prefixes. Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
2011-08-16package_rpm: Fix package rename issue in multilib caseDongxiao Xu1
do_package task will write information into pkgdata and do_package_write_rpm will read them out. Take lib32-dates as an example, one of its RDEPENDS is li32-gtk+, and PKG_lib32-gtk+ = "libgtk-2.0", these info is stored at: tmp/pkgdata/x86_64-pokymllib32-linux/runtime/lib32-dates. Function "mapping_rename_hook" in do_package_write_rpm is to handle those renamed packages. However before it executes, translate_vers has stripped the multilib prefix out, making it failed to find PKG_gtk+ value in pkgdata. This commit moves the strip_multilib out of translate_vers and call it after "mapping_rename_hook". [YOCTO #1368] CC: Mark Hatle <mark.hatle@windriver.com> Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com> Signed-off-by: Lianhao Lu <lianhao.lu@intel.com>
2011-08-16package_rpm: enhance strip_multilib functionDongxiao Xu1
The previous logic could only strip MLPREFIX from the first element in an array, take an example, strip_multilib the [lib32-a lib32-b lib32-c] will result in [a lib32-b lib32-c]. We need to strip prefix one by one. This commit change the logic to strip all elements' multilib prefix. [YOCTO #1368] CC: Mark Hatle <mark.hatle@windriver.com> Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
2011-08-12package_rpm: Fix attemptonly and suggest packagesMark Hatle1
[YOCTO #1325] [YOCTO #1366] Packages that were in the PACKAGE_ATTEMPTONLY and SUGGESTS were not being properly found, which was causing image creation failures. In PACKAGE_ATTEMPTONLY, when an item was not found, it caused an error. This should have been a note, followed by skipping the package. The SUGGESTS processing was simply broken. It was using a non-existant function, due to an apparently typo. In addition to the above, the MLPREFIX processing was not being done properly, preventing multilib packages from working in this with PACKAGE_ATTEMPTONLY. (SUGGESTS doesn't need this as the names are munged when creating the packages.) Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
2011-08-12package_rpm.bbclass: Update the platform config and --targetMark Hatle1
When constructing the /etc/rpm/platform file, we need to ensure that the any, all, and noarch platforms will allow any "linux" variant to be installable, not just matching variants.. i.e. arm-oe-linux-gnueabi should be able to install noarch-oe-linux Also ensure that we pass the full canonical arch via the --target= parameter. This allows us to define the proper platform settings for all packages. Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
2011-08-11Magic file path should be given for rpmbuildjani.uusi-rantala@nokia.com1
From d54b975506c392cfb59dbb3caf313ac061b6fa01 Mon Sep 17 00:00:00 2001 From: Jani Uusi-Rantala <jani.uusi-rantala@nokia.com> Date: Thu, 11 Aug 2011 18:37:56 +0300 Subject: [PATCH] Magic file path should be given for rpmbuild in _rpmfc_magic_path define so that build system default file is not used by accident. Not doing this caused many packages to fail building in several systems. Fixes [YOCTO #1358] Signed-off-by: Jani Uusi-Rantala <jani.uusi-rantala@nokia.com>
2011-08-03package_rpm: Ensure alternatives links are reflected in rpm package dependenciesRichard Purdie1
Currently, if a file is provided as an alternative link within the package, rpm doesn't see the dependency. This works out badly for dependencies such as /bin/sh which scripts might require. Since rpm detects and adds these dependencies we do need to ensure the dependency information in the packages is correct. This patch does so for the rpm backend ensuring internal consistency whilst the approach for addressing this problem in the other package backends is considered. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-08-02bitbake.conf: Add SDK_PACKAGE_ARCHSMark Hatle1
Add SDK_PACKAGE_ARCHS to avoid the sed operations we were previously doing inside of the variouns populate_sdk functions and related items. Also add documentation to populate_sdk to explain when the various functions are expected to be doing. Finally fix a bug in populate_sdk_rpm where the wrong value was being set, noticed while working on this change. Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
2011-08-02rootfs_rpm: Cleanup and minor bug fixesMark Hatle1
in packages_rpm.bbclass: Cleanup the way package_update_index_rpm works. Break this out into two functions, one for common functionality and one for controlling target vs sdk package processing. Similar change to package_generate_rpm_conf. Usage of IMAGE_ROOTFS should actually be "target_rootfs", this fixes a problem with the SDK case. in rootfs_rpm.bbclass: Minor re-order of the values, and avoid multiple uses of IMAGE_ROOTFS in order to make the merge with the SDK behavior easier. Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
2011-08-01package_rpm.bbclass: fix one typoYu Ke1
fix the MLPREFIX referrence typo which cause multilib rpm do_rootfs failure CC: Mark Hatle <mark.hatle@windriver.com> Signed-off-by: Yu Ke <ke.yu@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-08-01package_{deb, rpm, ipk}.bbclass: fix 'lingusa' typoKoen Kooi1
Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
2011-07-27package_rpm.bbclass: Fix mistake reported by Mark HatleRichard Purdie1
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-07-27package/rootfs_rpm: Implement RPM multilib package handlingMark Hatle1
This is a first pass at adding multilib support to the RPM package and image handling code. Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
2011-06-23classes/package_rpm.bbclass: Change the way the PV is transformedMark Hatle1
There were some odd instances where the PKGV could not be loaded in the old way. Change to verify that PKGV exists before attempting to retrieve the value from the key. Signed-off-by: Mark Hatle <mark.hatle@windriver.com>