summaryrefslogtreecommitdiff
path: root/meta/lib
AgeCommit message (Collapse)AuthorFiles
2014-02-11lib/oe/package_manager.py: RpmPM fixesLaurentiu Palcu1
This commit: * fixes a crash when handling interecept hook failures which happened when MULTILIB_GLOBAL_VARIANTS was not set; * convert dashes to underscores and use sets (so that we make sure the items are unique) when creating RPM repos; * uses a regex pattern to search for packages in the feeds list. The old method could match also strings in the middle. For example: 'rpm' matched 'kernel-module-lttng-probe-rpm" in qemux86_64 feeds; * issue a bb.fatal if smart returns error while installing packages. Otherwise we might end up with an incomplete image... * fixes the /etc/rpm/platform file creation; Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
2014-02-11lib/oe/package_manager.py: moving global SCRIPTLET_FORMAT and ↵Hongxu Jia1
DB_CONFIG_CONTENT to RpmPM The tweak made the code looks better. Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
2014-02-11package_manger.py/rootfs.py: rename save_rpmpostinist with save_rpmpostinstHongxu Jia2
The tweak made the code looks better. Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
2014-02-11lib/oe/rootfs.py: fix invoking _run_intercepts failedHongxu Jia1
- The variable D is needed by intercepts scripts; Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
2014-02-11lib/oe/package_manager.py: fix invoking rpm save_rpmpostinist failedHongxu Jia1
- Use self.target_rootfs instead of self.image_rootfs as saved dir; - Remove redundant comment line; Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
2014-02-11lib/oe/rootfs.py: fix invoking rpm _handle_intercept_failure failedHongxu Jia1
Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
2014-02-11lib/oe/sdk.py: support RpmRootfsHongxu Jia1
- Implementation RpmSdk class Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
2014-02-11lib/oe/image.py: fix get rootfs_extra_space failedHongxu Jia1
The value of IMAGE_ROOTFS_EXTRA_SPACE is "0 + 51200", we should use eval rather than int in python. Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
2014-02-11rootfs.py: strip kernel-abiversion useless readlineHongxu Jia1
It failed to read Kernel version from kernel-abiversion file, the reason was it didn't strip the readline. ... Error: Kernel version 3.10.25-yocto-standard does not match kernel-abiversion (3.10.25-yocto-standard) ... Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
2014-02-11rootfs.py: fix uninstall uneeded pkgs failedHongxu Jia1
The refactor of shell function rootfs_uninstall_unneeded is incorrect, it should check and update the installed_pkgs.txt file for the existance of the packages that were removed. ... rootfs_uninstall_unneeded () { if ${@base_contains("IMAGE_FEATURES", "package-management", "false", "true", d)}; then if [ -z "$(delayed_postinsts)" ]; then # All packages were successfully configured. # update-rc.d, base-passwd, run-postinsts are no further # use, remove them now remove_run_postinsts=false if [ -e ${IMAGE_ROOTFS}${sysconfdir}/init.d/run-postinsts ]; then remove_run_postinsts=true fi # Remove package only if it's installed pkgs_to_remove="update-rc.d base-passwd ${ROOTFS_BOOTSTRAP_INSTALL}" for pkg in $pkgs_to_remove; do # regexp for pkg, to be used in grep and sed pkg_regexp="^`echo $pkg | sed 's/\./\\\./'` " if grep -q "$pkg_regexp" ${WORKDIR}/installed_pkgs.txt; then rootfs_uninstall_packages $pkg sed -i "/$pkg_regexp/d" ${WORKDIR}/installed_pkgs.txt fi done ... Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
2014-02-11lib/oe/rootfs.py: Tweak the rootfs removing operationHongxu Jia1
Move the bb.utils.remove(self.image_rootfs, True) from the base class constructor, to Opkg/Ipkg constructors after super's constructor is called. Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
2014-02-11lib/oe/rootfs.py: support RpmRootfsHongxu Jia1
- Implementation RpmRootfs class - Refactor list_installed_packages in python Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
2014-02-11lib/oe/package_manager.py: support RpmPMHongxu Jia1
- Implementation RpmPM class - Support rpm incremental image generation Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
2014-02-11lib/oe/manifest.py: add rpm image manifest creationHongxu Jia1
Implementation RpmManifest class. Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
2014-02-11lib/oe/sdk.py: add SDK classLaurentiu Palcu1
This new file contains the python 'populate sdk' implementation of the old bash populate_sdk_image() function for Opkg and Dpkg. Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
2014-02-11lib/oe/package_manager.py: fixes for dpkg backendLaurentiu Palcu1
This commit contains the following fixes: * pass the apt config directory to the DpkgPM constructor, so one can instantiate this class multiple times and give it different config files (like for creating SDK); * change constructor argument name from 'dpkg_archs' to 'base_archs'; * export APT_CONFIG environment variable before calling apt-get, not in constructor. If done in constructor, the last class instantiation, sets the environment, which is note desireable; Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
2014-02-11lib/oe/rootfs.py: use Manifest.INSTALL_ORDERLaurentiu Palcu1
Since the Manifest class has this property, use it. This contains the default package installation order. Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
2014-02-11lib/oe/manifest.py: create manifests for SDK tooLaurentiu Palcu1
This commit contains several changes: * it is possible to create manifests for following types of images: regular image, target SDK and host SDK. To distinguish between these types of manifests, one has to pass the manifest_type argument to the contructor or create_manifest() wrapper. The manifest type can have the following values: image, sdk_host, sdk_target; * move image_rootfs variable to _create_dummy_initial() since it's used only here. This function will probably be removed in the future; * fix a bug in the Dpkg class; * add INSTALL_ORDER property to Manifest class which contains the default install order for the packages and will be used Rootfs/Sdk classes; Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
2014-02-11image.bbclass, lib/oe/rootfs.py: remove intercept_scripts directoryLaurentiu Palcu1
Remove the directory, manually, in the Rootfs.create() function. Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
2014-02-11lib/oe/rootfs.py: add support for opkg backendLaurentiu Palcu1
Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
2014-02-11lib/oe/package_manager.py: add support for opkg backendLaurentiu Palcu1
Additionaly, the commit contains a couple of minor changes (comments, error printing, etc). Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
2014-02-11lib/oe/package_manager.py: use the bitbake APT_ARGS variableLaurentiu Palcu1
This commit will revert on using the bitbake APT_ARGS variable, so users can alter the way apt is called without needing to change it in code. Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
2014-02-11lib/oe/package_manager.py: add deploy dir locking mechanismLaurentiu Palcu1
This is needed in order to serialize the index file creation when multiple do_rootfs tasks are running in the same time. Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
2014-02-11lib/oe/manifest.py: create global variables for package typesLaurentiu Palcu1
Manifest class clients don't really need to know how package types are encoded. Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
2014-02-11oe/manifest.py: Add manifest creation for opkgLaurentiu Palcu1
In this commit: * add ability to create initial manifest for opkg; * make var_map available to all backends; Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
2014-02-11lib/oe/rootfs.py: add new library for rootfs creationLaurentiu Palcu1
This library will be used to generate the rootfs. Recommended usage: create_rootfs(d, manifest_file) this will determine the PM backend used, save the shell environment and will call the appropriate backend implementation (DpkgRootfs(d, manifest_file).create()). NOTE: this commit adds Dpkg support. Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
2014-02-11lib/oe/package_manager.py: add new package management libraryLaurentiu Palcu1
This new library is intended to be used by the new python rootfs creation code. It implements the rpm/dpkg/opkg package management backends: RpmPM, DpkgPM and OpkgPM. The base API is this: update() install() install_complementary() remove() write_index() remove_packaging_data() list_installed() All implementations have to provide these functions. Some backends may need to implement additional functions though. Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
2014-02-11lib/oe/manifest.py: add library for image manifest creationLaurentiu Palcu1
This new library allows for the creation of 2 types of manifests: * initial manifest - used by the new rootfs creation routines to generate the rootfs; * final_manifest - this will contain all the packages in the image, after all installations finished; Usage: Manifest(d, manifest_dir).create_initial() Manifest(d, manifest_dir).create_final() or using the provided wrapper function: create_manifest(d, False, manifest_dir) -> creates initial manifest create_manifest(d, True, manifest_dir) -> creates final manifest If manifest_dir argument is ommited, it defaults to ${WORKDIR}. NOTE: this commit creates fixed manifests for minimal/sato/sato-sdk images, for Rpm & Opkg backends, in order to help speed up development of rootfs refactoring. Dpkg initial manifest creation is implemented. Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
2014-02-11lib/oe/image.py: add new image creation libraryLaurentiu Palcu1
This will replace the old bash image creation code. This needs the rootfs to be already generated in order to work. Usage: Image(d).create() or using the provided wrapper function: create_image(d) Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
2014-02-11lib/oe/utils.py: add pre/post process helper functionLaurentiu Palcu1
This helper function will be used to execute pre/post process commands. Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
2014-02-08oeqa/utils: targetbuild: don't use bb.fetch anymoreStefan Stanacar1
When running tests outside of the build system we can't use bb.fetch anymore. It was nice but tests and their modules need to rely on the data storage only as that gets exported. This module is used by the oeqa/runtime/build* tests. Signed-off-by: Stefan Stanacar <stefanx.stanacar@intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com>
2014-02-08lib/oeqa: add module for running tests outside of the build systemStefan Stanacar1
This script will run the exported tests outside of the build system. Simplest way to test this is with a qemu image that you manually start. For an already build image use this in local.conf: TEST_EXPORT_ONLY = "1" TEST_TARGET = "simpleremote" TEST_TARGET_IP = "192.168.7.2" TEST_SERVER_IP = "192.168.7.1" Export the tests: bitbake core-image-sato -c testimage Then: runqemu core-image-sato And: cd build/tmp/testimage/core-image-sato ./runexported.py testdata.json The contents of build/tmp/testimage/core-image-sato can be moved on another machine as long as some paths are updated in the json. The exported data contains paths to the build dir. We only care about DEPLOY_DIR/rpm ( if the rpm and smart tests are enabled), so running the tests on other machine means that the user has to move the contents and call runexported with --deploy-dir PATH: ./runexported.py --deploy-dir /path/on/another/machine testdata.json runexported.py accepts other arguments as well, see --help. [YOCTO #5613] Signed-off-by: Stefan Stanacar <stefanx.stanacar@intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com>
2014-02-08testimage: add ability to export testsStefan Stanacar1
Add the ability to export the tests so that they can run independently of the build system, as is required if you want to be able to hand the test execution off to a scheduler. Booting/deployment of the target is still handled by the build system, as before, only the execution of the tests happens outside of the build system. Tests exported are the ones defined in TEST_SUITES. No tests have been changed as interesting parts of the data store have been exported and tests can continue to query them as before. Small adjustments were made for a couple of oeqa modules though. [YOCTO #5613] Signed-off-by: Stefan Stanacar <stefanx.stanacar@intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com>
2014-02-04oeqa/runtime/systemd: remove race in settle()Ross Burton1
The settle() function had a race where services could still be activating at two minutes but then when the final log is output, they've activated. Remove this race and generally clean up the code. Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-02-02lib/oeqa: allow multiple layers to provide their own TEST_TARGET classSipke Vriend3
Use a python module "folder" rather than a single module within layers to ensure multiple layers can define a TEST_TARGET class. Current implementation using controllers.py module will only allow a single layer to define test targets. Add a controllers folder as well as a TestTargetLoader class whose job is to load the given TEST_TARGET class from any number of python modules within the oeqa/controllers/ directory of any layer. The only condition will be that layers will need to ensure the TEST_TARGET class name they provide is unique otherwise there is no guarantee which class is instantiated. a bb.warn is used to alude to this if it happens. Signed-off-by: Sipke Vriend <sipke.vriend@xilinx.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-02-02oeqa/runtime: syslog: update --help testStefan Stanacar1
busybox 1.22 now returns exitcode 0 instead of 1 for --help options, so this test needs to be updated when busybox gets upgraded to 1.22. https://bugs.busybox.net/show_bug.cgi?id=5612 http://git.busybox.net/busybox/commit/?id=efd0698f74caab0a0c8a51228b923ee142e8e278 Signed-off-by: Stefan Stanacar <stefanx.stanacar@intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com>
2014-02-02oeqa/utils: sshcontrol: rewrite the SSHControl classStefan Stanacar1
Split the class in two, one to handle the process and the timeout based on output and one for the actual ssh/scp commands. The ssh/scp methods now use the same run method. It does the same thing as before but: - it looks cleaner. - adds support for using a different user than root - optionally, raises an exception when exit code != 0 (that's useful for code outside of tests, where you wouldn't want to check the return code every time as the tests do) Signed-off-by: Stefan Stanacar <stefanx.stanacar@intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com>
2014-01-29oeqa/runtime: smart: fix adding channelsStefan Stanacar1
Without this it won't add core2-64 and similar channels, as the directory name in deploy_dir/rpm uses _ not - as the package arch. Signed-off-by: Stefan Stanacar <stefanx.stanacar@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-01-29oeqa/runtime: drop restartTarget methodStefan Stanacar4
Restart is a property of a specific target, not of a test class, should a test really need to restart the target the direct method should be called. Also some tests used this to enforce more ram, which makes sense only for qemu targets only (and the inital reason this was needed isn't valid anymore, qemu machines had the default ram size bumped a while ago). Signed-off-by: Stefan Stanacar <stefanx.stanacar@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-01-28oeqa/runtime: rpm: fix finding the test rpm fileStefan Stanacar1
Translate TUNE_PKGARCH to find the right file (this used to work because tune for qemux86-64 used to be x86_64 now it's core2-64) Also, while using packagedata was nice, it's harder to make the test exportable and runnable outside of the build system. (where oe.packagedata isn't available) Signed-off-by: Stefan Stanacar <stefanx.stanacar@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-01-28lib/oeqa: sshcontrol: Allow alternate port for SSHControlSipke Vriend1
Add an optional parameter to SSHControl so the user can specify and alternate port to the default (22). Signed-off-by: Sipke Vriend <sipke.vriend@xilinx.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-01-28oe-selftest: New tests for sstate relocationCorneliu Stoicescu1
Added new tests: - sstate relocation stress testing - rebuild from sstate stress testing Signed-off-by: Corneliu Stoicescu <corneliux.stoicescu@intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com>
2014-01-28lib/oe/patch.py: Prefer "git am" over "git apply" when applying git patchesLaszlo Papp1
It is better to use "git am" when possible to preserve the commit messages and the mail format in general for patches when those are present. A typical use case is when developers would like to keep the changes on top of the latest upstream, and they may occasionally need to rebase. This is not possible with "git diff" and "diff" generated patches. Since this is not always the case, the fallback would be the "git apply" operation which is currently available. Signed-off-by: Laszlo Papp <lpapp@kde.org> Signed-off-by: Saul Wold <sgw@linux.intel.com>
2014-01-27utils: Add a cpu_count wrapper functionRichard Purdie1
Add a cpu_count wrapper function (useful from annonymous python where the import would be trickier). Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-01-22lib/oeqa: sshcontrol: fix false timeout failuresStefan Stanacar1
Ocasionally AB shows odd false fails like: http://autobuilder.yoctoproject.org/main/builders/nightly-arm/builds/1/steps/Running%20Sanity%20Tests/logs/stdio This should fix that by checking for eof instead of polling the return code of the ssh process, because the process might still be there. Signed-off-by: Stefan Stanacar <stefanx.stanacar@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-01-19sstatesig: include native/cross/nativesdk deps in target signaturesMartin Jansa1
* I don't have any real evidence or good statistics for this, but when comparing signature dumps from my big bitbake world builds I usually see a lot of rebuilds caused by changes in .bbclasses and only very rare would be the case where oe-core upgrade brings changes in -native recipes and no change in .bbclasses used from target recipes * changing the default to include them shouldn't cause significant increase in rebuilds and sstate reuse a bit safer * people working on toolchain (e.g. using gcc from AUTOREV) can easily extend sstate_rundepfilter to ignore them again (it's easier than removing existing filter), example how add own signature handler in your layer is here: https://github.com/openwebos/meta-webos/commit/9ac3a7c803e7793b3274e4998f167b6278db8042 Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-01-17oe-selftest: Patch sstate tests to work with new sstate-cache naming and contentCorneliu Stoicescu1
Made modifications to account for: - .siginfo files present in sstate-cache from non sstate-enabled tasks - new naming format for sstate files Signed-off-by: Corneliu Stoicescu <corneliux.stoicescu@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-01-16lib/oeqa: allow a layer to provide it's own TEST_TARGET classStefan Stanacar2
Allows a layer to define new classes in <layer>/lib/oeqa/utils/controllers.py and completely control or extend deployment of a target. (core currently has QemuTarget and SimpleRemoteTarget). The value of TEST_TARGET must be the name of the new class. Signed-off-by: Stefan Stanacar <stefanx.stanacar@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-01-16oe-selftest: separated the SStateBase and SStateTests in different modulesCorneliu Stoicescu2
- SStateBase now has its own module to be imported by itself by other modules like sstatetests.py Signed-off-by: Corneliu Stoicescu <corneliux.stoicescu@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2014-01-16oe-selftest: renamed sstate.py module to sstatetests.pyCorneliu Stoicescu1
Signed-off-by: Corneliu Stoicescu <corneliux.stoicescu@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>