summaryrefslogtreecommitdiffstats
path: root/meta/classes/sstate.bbclass
Commit message (Collapse)AuthorAgeFilesLines
* sstate.bbclass: Fix up white space lost in last commit.Peter Urbanec2014-10-181-20/+20
| | | | | | | | | | | Commit e9672387 split one long line into a multi-line string, but in the process white space between words was lost. This results in badly formatted output when this message is printed. (From OE-Core rev: b145374c0a498de0160a9b81f50ce0066ab14862) Signed-off-by: Peter Urbanec <openembedded-devel@urbanec.net> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate.bbclass: specify func dirs for sstate_hardcode_pathWenzong Fan2014-10-181-0/+5
| | | | | | | | | | | | | | | | | | | | | For some recipes that inhrient cmake, the ${B} may be removed by cmake_do_configure() while sstate_hardcode_path() running, this causes build errors: Exception: OSError: [Errno 2] No such file or directory: \ '/path/to/build' The function sstate_hardcode_path() called command: $SSTATE_SCAN_CMD which extended as "find ${SSTATE_BUILDDIR} ..." So the proper function dirs could be ${SSTATE_BUILDDIR}. (From OE-Core rev: a949943e622b08485fc7632a0a743bc009079c67) Signed-off-by: Wenzong Fan <wenzong.fan@windriver.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate.bbclass: split the too long lineRobert Yang2014-10-101-1/+22
| | | | | | | | | | | | The too long line would cause "git send-email" report errors: patch contains a line longer than 998 characters Though we can use "--no-validate" to force the send. (From OE-Core rev: e96723879eb3352a5bdea7b3e1a576edf9550e5a) Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate.bbclass: the second bb.fatal not workRobert Yang2014-10-101-1/+1
| | | | | | | | | | | | | | The code: bb.fatal("foo1") bb.fatal("foo2") Would make the second one not work, use bb.error for first one to fix the problem. (From OE-Core rev: 33a87187a8520e190bcade76cc965aa58faaa85a) Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate: Add rpm allarch to overwrite whitelistRichard Purdie2014-09-301-1/+2
| | | | | | | | | | | The packagegroup allarch rpm files for multilib can overwrite each other since they are in theory indentical (in contrast to the other backends). We therefore need to whitelist this to avoid build failures now this overwrite failure is fatal. (From OE-Core rev: d59ade0ca2cf629937434fa423dfbf35ce1209fc) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate.bbclass: update the timestamps after installRobert Yang2014-09-291-0/+2
| | | | | | | | | | | | | | | | | | | | | | | Update the sstate file's timestamps after it is installed, it will be very useful for removing the old sstate file, especially, it's not easy to remove when use the shared SSTATE_DIR, we can easily remove them with this change, for example: $ find state-cache -type f -ctime +10 -exec rm -f {} \; Will remove the sstate file which isn't used by recent 10 days. We can use the -atime, but it is not always available, for example, when mounted with "-o noatime". The touch is a very light weight action, and the scripts/sstate-cache-management.sh also requires this. (From OE-Core rev: bbee747466a6947319cff2ffd676abf9432c16ae) Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate: Change overlapping files warning to a fatal errorRichard Purdie2014-09-291-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | When files overlap in the sysroot, something bad usually happened. We've had two independent cases recently where a couple of months after one of these warnings was shown, builds failed due to corruption. This change moves the warning to become a fatal error. The complaint I've had about this is that we need to tell the user what happened and more importantly how to recover from it. If we could recover from it, great but the trouble is we simply don't know what happened. As a compromise, we can document several of the possible scenarios in the error message. We don't normally go to this level of detail however in this case, I'm lacking other viable alternatives. I do believe it is important to stop as corruption occurs rather than letting the build contunue into territory that is not deterministic amongst other things. The complex message is followed by a simpler one in case the long message is too much for the user. (From OE-Core rev: 179ac7de03977b6e440409eddb2166819e07286a) (From OE-Core rev: 4b503f25f1ef8f554d3c76d88399db379dc818cc) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate: set SIGGEN_LOCKEDSIGS_CHECK_LEVEL default to errorHongxu Jia2014-09-171-0/+2
| | | | | | | (From OE-Core rev: 65020364bd089afbb83cd216e7ae2f837077bfc5) Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstatesig/sstate: Add support for locked down sstate cache usageRichard Purdie2014-09-171-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I've been giving things some thought, specifically why sstate doesn't get used more and why we have people requesting external toolchains. I'm guessing the issue is that people don't like how often sstate can change and the lack of an easy way to lock it down. Locking it down is actually quite easy so patch implements some basics of how you can do this (for example to a specific toolchain). With an addition like this to local.conf (or wherever): SIGGEN_LOCKEDSIGS = "\ gcc-cross:do_populate_sysroot:a8d91b35b98e1494957a2ddaf4598956 \ eglibc:do_populate_sysroot:13e8c68553dc61f9d67564f13b9b2d67 \ eglibc:do_packagedata:bfca0db1782c719d373f8636282596ee \ gcc-cross:do_packagedata:4b601ff4f67601395ee49c46701122f6 \ " the code at the end of the email will force the hashes to those values for the recipes mentioned. The system would then find and use those specific objects from the sstate cache instead of trying to build anything. Obviously this is a little simplistic, you might need to put an override against this to only apply those revisions for a specific architecture for example. You'd also probably want to put code in the sstate hash validation code to ensure it really did install these from sstate since if it didn't you'd want to abort the build. This patch also implements support to add to bitbake -S which dumps the locked sstate checksums for each task into a ready prepared include file locked-sigs.inc (currently placed into cwd). There is a function, bb.parse.siggen.dump_lockedsigs() which can be called to trigger the same functionality from task space. A warning is added to sstate.bbclass through a call back into the siggen class to warn if objects are not used from the locked cache. The SIGGEN_ENFORCE_LOCKEDSIGS variable controls whether this is just a warning or a fatal error. A script is provided to generate sstate directory from a locked-sigs file. (From OE-Core rev: 7e14784f2493a19c6bfe3ec3f05a5cf9797a2f22) (From OE-Core rev: 884d4fa3e77cf32836f14a113c11489076f4a84d) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate.bbclass: fix sstate_hardcode_path()Robert Yang2014-09-161-1/+1
| | | | | | | | | | | | | | | The "grep -e (x|y)" doesn't work, for example: $ echo xy | grep -e '(x|y)' No output We can use "grep -E" (extended regexp) or "grep -e x -e y" to fix it. It only affected the cross recipes. (From OE-Core rev: 62722de6d0ec00608eacc2cb0396362aced00047) Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate: Fix incorrect return value handlingRichard Purdie2014-09-161-1/+2
| | | | | | | | | | | | | | The use of [ and && here means $? is reset and the exit 1 error interception wasn't working, leading to "file changed as we read it" errors from sstate_create_package when heavily using hardlinks. Fix this by placing $? into a variable. (From OE-Core rev: 6e51f900b76b06c09a3d6927f8db7398e2c035ed) (From OE-Core rev: 75040a098e11927e6872e3a2a6286fe3ed0c7f47) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate: Add extra intercept functions SSTATEPOSTCREATEFUNCSHongxu Jia2014-09-101-1/+3
| | | | | | | | | | | | | In some cases we do either need to add extra sstate manipulation functions, or change the existing modification functions. This patch parametrizes it to SSTATEPOSTCREATEFUNCS after sstate_create_package (From OE-Core rev: ed5fb9c69fcf0f6e8e98f72ac753c66119468ea5) Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate: Add extra intercept functionsRichard Purdie2014-08-281-24/+30
| | | | | | | | | | | | | | | | In some cases we do either need to add extra sstate manipulation functions, or change the existing modification functions. This patch parametrises them to SSTATECREATEFUNCS and SSTATEPOSTUNPACKFUNCS and abstracts the "hardcoded path" functions into separate functions using these new variables. We may use this new functionality to improve binary relocating using patchelf for example, this at least lets us have the hooks to be able to experiment. (From OE-Core rev: 9d659c6f20fa4a141b491c62a3ef0dfb1f896d9c) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes/sstate: ensure do_package_qa_setscene doesn't pull in ↵Paul Eggleton2014-08-181-3/+3
| | | | | | | | | | | | | do_package_setscene If we have done do_package_qa_setscene we do not also need do_package_setscene. This means we can again for example rebuild an image without needing do_package sstate packages to be present. (From OE-Core rev: a0f584ac3d5a94dec121b684206ecd40c968f7fc) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate: Allow switching between linux and non-linux SDK builds within the ↵Richard Purdie2014-08-031-2/+2
| | | | | | | | | | | | | | | same tmpdir Currently if you try and switch between linux/darwin/mingw SDK builds in the same TMPDIR, things break. This is due to sstate not reflecting the SDK_OS in the manifest names. Since they are different, reflect this in the manifest naming and allow this to work. (From OE-Core rev: 7a0e1233ba196797f5f9bf862685dfae5511e751) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate: Fix shared work preconfigure task handlingRichard Purdie2014-06-191-2/+2
| | | | | | | | | | | | | | When the preconfigure task was added to gcc, it wasn't added to sstate's list of possible shared work tasks. This meant that diffsigs wasn't able to find the preconfigure sigdata/info file since it has inconsistent naming. This adds the task name to the list. Ideally this list would be autogenerated or not even required, right now its a sanity test that the shared work code works as intended so is best left as is. (From OE-Core rev: 72032f6dd6724663a3417b1d1b666d9a63fcbfdb) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes/lib/oe: Fix cross/crosssdk referencesRichard Purdie2014-05-111-2/+2
| | | | | | | | | | | | | | | | With the renaming of the cross packages, its no longer possible to use endswith("-cross") and similar to detect cross packages. Replace these references with other techniques. This resolves certain build from sstate failures which were due to the system believing cross packages were target packages and therefore dependency handling was altered. (From OE-Core rev: 91edf4cac223298e50a4b8e59dd19f1b272e3418) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* binutils/gcc/gdb: Add TARGET_ARCH to PN for all cross recipesRichard Purdie2014-04-301-6/+1
| | | | | | | | | This allows them to co-exist together in the native sysroot, with one set of cross tools per target architecture. (From OE-Core rev: a2c5509520d5c3e082f55844e6545d0309565f8f) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate: Silence warnings when switching machinesRichard Purdie2014-04-101-0/+1
| | | | | | | | | | | | We recently added multiple provider warnings. These could get issued from -cross recipes due to the way these currently overlap in the native sysroot. Filter out these warnings for now, until such times as we improve the cross recipes so they don't have an overlapping namespace. (From OE-Core rev: d62f8d428831cc62b395f4c764c1e876353ddede) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate: Remove name sstate parameterRichard Purdie2014-04-051-16/+13
| | | | | | | | | | A while ago we stopped supporting sstate names which were different from the taskname. This patch finishes cleaning up some code remnants from that which were causing data duplication and confusion. (From OE-Core rev: 5a19863e389d28d8db4a86e409c1daa3c6b46eff) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate: Fix an error handling the tasknameRichard Purdie2014-04-051-0/+1
| | | | | | | | | | | | | Looking at the code, its clear 'task' is meant not to have the do_ prefix, however its also clear it can be left in through some code paths. One result of this can be files not being cleaned from the sysroot correctly. Fix this. (From OE-Core rev: 3c912102fd9ea6b360f1af209da21e8f27b845c0) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate.bbclass: update missed sstate eventAlexandru DAMIAN2014-03-311-2/+10
| | | | | | | | | | | | | | This is a patch to update the missed sstate event with info about the sstate files locations that were found. It's needed as to display the found file in the toaster ui. Also fixes a bug where a setscene task may have appeared in the missed list even if it was found in a sstate mirror. (From OE-Core rev: ad66cd521d3e661dd57c5aa02c204585101984f3) Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate: list missing files for toasterAlexandru DAMIAN2014-03-211-0/+11
| | | | | | | | | | | | | | Toaster needs to record the attempts to restore setscene tasks that don't have a sstate file. We build a list of tasks for which we can't find an sstate file, and if we're running under Toaster data collection, we send it off with a MetadataEvent. (From OE-Core rev: 109ae6c5c981610ab0d63d2c83dcd50b2e93276b) Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes/sstate: don't overwrite buildhistory vardepsexcludePaul Eggleton2014-03-111-1/+1
| | | | | | | | | | | | | | This was stomping over the value added in buildhistory.bbclass, leading to task signatures *still* changing when buildhistory was added to INHERIT. Fixes [YOCTO #5897]. (From OE-Core rev: f7a0aa412a921a41d301be072cedcda2662ffbd7) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate: Ensure SSTATEPOSTINSTFUNCS is accounted for in signaturesRichard Purdie2014-03-051-0/+1
| | | | | | | | | | | Bitbake can't interpret the python execution of these functions so include the dependency manually. [YOCTO #4507] (From OE-Core rev: 39c53d26a1ea0859ca30456b6af0a28b2ea16769) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate: Drop 'SafeDep' code from setscene validation functionRichard Purdie2014-02-251-8/+1
| | | | | | | | | | | | | | | | | | | | | | | | | I have a feeling this code exists from the time before we had proper coverage of one sstate task by another task. At that time it was a "poor" persons version of that idea, we now have much better code internal to bitbake which handles this. Worse, this code actually breaks certain rebuild scenarios, e.g.: bitbake libtool-cross bitbake libtool-cross -c cleansstate rm tmp -rf bitbake libtool-cross would fail as binutils-cross wasn't installed from sstate. The easiest fix is to remove the obsolete/broken code. [YOCTO #5773] (From OE-Core rev: ccad07f35fb7f959e24fd50d04c7d10dd5cf20d0) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes/sstate: fix taints being undone on execution of sstate tasksPaul Eggleton2014-02-251-0/+3
| | | | | | | | | | | | | | | The code here that deletes stamps was also deleting the taint files; so forcing an sstate task with -f would force it to execute and then because the taint file was deleted in the process, the next execution would simply restore the output from sstate again. We need to exclude the taint files just like we did in bb.build.make_stamp(). Fixes [YOCTO #5805]. (From OE-Core rev: 4708859e5627488251dc4250d45cb5f4e9736b8a) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate: Exclude SSTATE_EXTRAPATH from checksumsRichard Purdie2014-02-111-0/+4
| | | | | | | | | | | | | | | After the change to allow target recipes to depend on native recipes, the native checksums becomes all the more critical. Add to this that we're now accounting for pre/postfuncs and we have a cache reuse issue since the distro LSB string is getting coded in when it shouldn't be. This excludes that string and allows one set of native sstate to share checksums with another set from a different host distro. They're separated into different directories so this is fine for our use cases. (From OE-Core rev: 1fa7d4331d994b9eeb6f973d1a1f04cb4df92c13) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate: Improve funciton checksumsRichard Purdie2014-02-041-0/+4
| | | | | | | | | | | Now that bitbake is recursing into pre/postfuncs, we need to ensure the dependencies of these functions is correct. We don't want dependencies on MACHINE or other related variables. This patch adds in appropriate variable exclusions to achieve this. (From OE-Core rev: 8461283a648d7c5affd51971ebd9b35a8a4c625f) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate.bbclass: remove previous version's stampRobert Yang2014-01-211-9/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There is a potential problem if we don't remove the previous version's stamp, for example: The depend chain is: libtool-native -> autoconf-native -> m4-native We have two m4-native: 1.4.9 and 1.4.7 1) Clean all of them to make a fresh build so that we can reproduce the problem $ bitbake m4-native autoconf-native libtool-native -ccleansstate 2) Build libtool-native so that the m4-native_1.4.17 will be built $ bitbake libtool-native 3) Set PREFERRED_VERSION_m4-native = "1.4.9" and build again $ bitbake libtool-native 4) Set PREFERRED_VERSION_m4-native = "1.4.17" and build again $ bitbake libtool-native -ccleansstate && bitbake libtool-native Then the build will fail: [snip] | m4: unrecognized option '--gnu' | Try `m4 --help' for more information. | autom4te: m4 failed with exit status: 1 [snip] The is because when we change m4-native to 1.4.17 and build libtool-native again: 5) libtool-native depends on autoconf-native, and autoconf-native's version isn't change, so it can remove the current stamp and mirror the sstate (the one depends on m4-native_1.4.9) from the SSTATE_DIR correctly. 6) The mirrored autoconf-native depends on m4-native_1.4.17's do_populate_sysroot, and the stamp is already there (which is made by step 2), so it would do nothing, but this is incorrect, since the one that really in the sysroot is m4-native_1.4.9, then the error happens. Remove previous version's stamp in sstate_clean() will fix the problem. [YOCTO #5422] (From OE-Core rev: 4659d29b1040349116549644e45035a5b37d9311) Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate: add do_package to the noexec list in setscene_depvalidMing Liu2014-01-071-1/+1
| | | | | | | | | | do_package doesn't exist and are noexec anyway for native/cross/crosssdk packages. (From OE-Core rev: 1028ac813fa9803ebfff6bcfa7f8b67012609b27) Signed-off-by: Ming Liu <ming.liu@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate: Add optimizing logic for crosssdk setscene dependenciesMing Liu2014-01-061-4/+2
| | | | | | | | | | | | | This patch mainly aims to add optimisation for crosssdk setscene dependency validating which we haven't handled in current logic, and which I think we could have as we've already implemented to native/cross, although there are albeit not many crossdk tasks, we could still get some performance enhancement. (From OE-Core rev: 1094983ff87a8b745a5bc7bfe9514433ee3c4ad2) Signed-off-by: Ming Liu <ming.liu@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate: Use datastore copies due to data changes persistingRichard Purdie2013-12-211-4/+6
| | | | | | | | | | | | The way the "all arch" PKGSPEC is enabled, it causes corruption of the datastore of sstate operations against other tasks. Data store copies are cheap and allow us to use that trick, resetting to a clean copy of the data afterwards. (From OE-Core rev: afaf16100efa79a275a2f4b9f2caa80decfdeb81) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate/sstatesig: Add populate_lic to list of arch invariant sstate tasksRichard Purdie2013-12-201-2/+6
| | | | | | | | | | | | | Like fetch, unpack and patch, populate_lic doesn't vary between different archs so we should mark it as such. This means better sstate cache reuse with fewer duplicate files as well as less confusing sstate debugging. sstatesig also needs to account for the fact BPN is used for sstate files in these cases. (From OE-Core rev: 3d59d0bed756f64d0092caa3892239c779c4a341) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate: Convert to use ':' as a filename sperator and use SSTATE_SWSPEC globallyRichard Purdie2013-12-201-2/+2
| | | | | | | | | | | | | | | | | | | Currently the code has problems differentiating between "gcc-cross" and "gcc-cross-initial" sstate files. We could add in a ton of special casing but tests show this isn't scaling well. Using a more unique separator resolves the issue. The choice of which separator to use is a hard one. We need something which isn't commonly used in PN, PV, PR, *_OS and *_ARCH which rules out '-', '_' and it needs to work ok with webservers/http which makes ';' and '%' harder. The change also sets SSTATE_SWSPEC globally since writing out differently named siginfo files for the fetch/unpack/patch tasks is a waste of diskspace, the hashes match for all PN in the majority of cases and if they don't, its not a big issue as the hash is different. This makes the results from sstate debugging more understandable. (From OE-Core rev: 6f823a23c5f1d0ffa0a27db1c1bc1907de788505) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate: Get rid of crazy name mappingRichard Purdie2013-12-181-20/+6
| | | | | | | | | | | | | | | When originally developed, it was thought a task may have more than one associated sstate archive. The way the code has grown that idea is now not possible or needed. We can therefore assume one sstate archive per task and drop the crazy name mapping code. Simpler is better in this case. The downside is that various sstate archives will change name so this forces a cache rebuild. Given the other sstate changes going in at this time, this isn't really a bad thing as things would rebuild anyway. (From OE-Core rev: 5afe86a6854b21692fd97c5fc7fab50dbc068acb) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate/gcc: Fix shared workdir handling for siginfo filesRichard Purdie2013-12-181-8/+32
| | | | | | | | | | | | | | | | | | | | | For a shared workdir, any one of the fetch/unpack/patch tasks may run yet the PN and architecture fields in SSTATE_PKGSPEC may differ. This makes looking up the appropriate siginfo file near impossible. I've tried several different ways of resolving this and this is the neatest solution I could find, its still rather ugly. I believe the usefulness of better sstate debugging outweighs the ugliness of the code. This patch also changes the sstate_checkhashes() code to look for siginfo files rather than the actual sstate packages themselves. This means the function can be used in other contexts to find info files for tasks that may not have sstate data. It is assumed that sstate mirrors will have both files available. This is done to allow bitbake to query whether tasks have matching signatures in sstate directories or not. (From OE-Core rev: 068e4289b597699cbff2dfde44ba833af4535281) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate: Write out siginfo files for non-sstate tasksRichard Purdie2013-12-181-0/+11
| | | | | | | | | | | | Currently siginfo files are only written for sstate tasks. In order to be truly debuggable, its helpful to have the siginfo for intermediate tasks. This adds that functionality so the extra siginfo files are written out too. This will be used to add better sstate debugging in future changes. (From OE-Core rev: 04d108cd16f5ad8f92a62ea537d1330fee712470) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate.bbclass: ignore the tar failure.Roy Li2013-09-241-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | sstate_package creates hardlink from sysroot to SSTATE_BUILDDIR, and sstate_create_package stores SSTATE_BUILDDIR into a archive file by tar, these two task can be run simultaneously for different packages, and make a hardlink for a file will lead to the change of the links number of file, and if tar is reading this file, it will fail with exit code 1, and report "file changed as we read it": DEBUG: Executing shell function sstate_create_package tar: x86_64-linux/usr/share/aclocal/xorg-macros.m4: file changed as we read it 4b3e353a5[sstate.bbclass: fix parallel building issue] tries to use the tar parameter --ignore-failed-read to fix, but it does not work, and tar parameter --warning=no-file-changed can close the warning, but can not change the exit code. so close shell immediate exit, only fail if tar returns not 1 and 0. Exit codes of tar: http://www.gnu.org/software/tar/manual/html_section/Synopsis.html (From OE-Core rev: fad604b719e00b03e09da5fdb485e72332275b4a) Signed-off-by: Roy Li <rongqing.li@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate.bbclass: fix parallel building issueRoy.Li2013-09-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | sstate_package creates hardlink from sysroot to SSTATE_BUILDDIR, then sstate_create_package will store SSTATE_BUILDDIR into a archive file by tar, but once other packages install the same file into sysroot, the creating the archive file will fail with below error: DEBUG: Executing shell function sstate_create_package tar: x86_64-linux/usr/share/aclocal/xorg-macros.m4: file changed as we read it This kind of error is harmless, use --ignore-failed-read to ignore it. The error in tar occurs when the timestamp of the file changes and this can happen when the number of symlinks change. The file will be included in the archive. [YOCTO #5122] (From OE-Core rev: 4b3e353a532c7b68b0bb86df4a2fcc44f8bb3ef2) Signed-off-by: Roy.Li <rongqing.li@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* meta: Don't use deprecated bitbake APIRichard Purdie2013-09-011-8/+8
| | | | | | | | | | These have been deprecated for a long time, convert the remaining references to the correct modules and prepare for removal of the compatibility support from bitbake. (From OE-Core rev: 6a39835af2b2b3c7797fe05479341d71a3f3aaf6) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate: Fix the relative symlink replacement codeRichard Purdie2013-08-231-5/+6
| | | | | | | | | | | | | | | | | | | | | | | | | ant reported on irc that the sstate absolute to relative symlink creation code wasn't working in klibc. He was correct although the level of breakage is rather surprising since it only worked for one level of symlink (usr/include) with everything else being broken. The reason is probably that nothing really uses absolute paths, we use relative paths where at all possible already. Nothing in the target sysroot should use absolute paths for a start. In this regard, the klibc-dev package is broken and needs fixing. It will currently break when building for one machine, then switching to another of the same TUNE_PKGARCH and installing from sstate but that is a separate issue. This patch fixes the symlink creation code by firstly passing in the correct value we need (where the symlink will end up) and seccondly, actually using it. I've also tweaked the debug message to contain appropriate information and got right of the double "//" value the existing code created in favour of the form './..' which looks neater. (From OE-Core rev: 9b05c65450526522d7358d0c0901b594de546748) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate.bbclass: Add an extra check for sstate_mirrorsJoe MacDonald2013-07-051-0/+10
| | | | | | | | | | | | | | BB_NO_NETWORK disables any fetching, however if we're using an external sstate cache, we may want to be able to fetch those objects even if we are not fetching the upstream sources. Denote this situation by setting SSTATE_MIRROR_ALLOW_NETWORK in local.conf. When it is found, for sstate cache fetches, mask off BB_NO_NETWORK for the local function. (From OE-Core rev: ed585cad2e1fdc323c05fa82055a071bcf98d1bc) Signed-off-by: Joe MacDonald <joe.macdonald@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate.bbclass: fetch archive+siginfo in a single pstaging_fetchChristopher Larson2013-06-111-17/+15
| | | | | | | | | | | | | This avoids unnecessary duplication of setup. The only visible change in behavior will be the case if siginfo exists and the archive does not, in which case it'll redownload both, but this doesn't seem unresasonable to me, particularly since the archive is downloaded first, making this case particularly unlikely. (From OE-Core rev: aa4991c307d4bbdd06c3cbf8448240b74c5e01c4) Signed-off-by: Christopher Larson <chris_larson@mentor.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate.bbclass: kill MIRRORS and FILESPATH to speed up fetchingChristopher Larson2013-06-111-0/+2
| | | | | | | | | | | The default FILESPATH isn't really of use, as we don't expect to find sstate archives buried in layer recipe directories, and the default MIRRORS is intended for use for fetching SRC_URI, not sstate. (From OE-Core rev: 46402b2f5b69004751f6663d435bedae0ad9dab1) Signed-off-by: Christopher Larson <chris_larson@mentor.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* base/useradd/sstate: Ensure do_package setscene has correct fakeroot ↵Richard Purdie2013-06-071-1/+1
| | | | | | | | | | | | | | | | | dependencies The do_package_setscene task needs to depend on fakeroot in order to correctly install its files. We can whitelist the dependency in the sstate handling code for some performance improvements since we only need this if we're installing the package from sstate. Also use an append operator in base.bbclass for clarity. (From OE-Core rev: 0810ea2a72bdea67a3d8002c4e12fb20f45cf1d5) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate.bbclass: fixup extra hardcoded pathsJackie Huang2013-06-041-0/+11
| | | | | | | | | | | | | | | sstate has a logic to fixup hardcoded paths in scripts, but it misses in some specific cases, so add EXTRA_STAGING_FIXMES to the fixup hardcoded paths mechanism, so that we can specify what hardcoded paths need to be fixed in a recipe, e.g. EXTRA_STAGING_FIXMES = "STAGING_BINDIR_TOOLCHAIN" (From OE-Core rev: 2e840db56c45b4c63fded55f4ed763b7099284b9) Signed-off-by: Jackie Huang <jackie.huang@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* classes/lib: Update to use print as a function callRichard Purdie2013-05-091-3/+3
| | | | | | | | | In python 3 print is a function call. In some cases bb.note is a more appropriate call to make. (From OE-Core rev: 754874e68d1037c76fc4cc7d35d3fa12946d00f8) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate.bbclass: make hard links for staging filesRobert Yang2013-05-021-1/+1
| | | | | | | | | | | | | | | | | | | Make hard links for staging files instead of copy to save the disk space (3G will be saved for a core-image-sato build), and it doesn't affect much on the build time. The following directories are affected: 1) The sysroot 2) The DEPLOY_DIR 3) The pkgdata [YOCTO #4372] (From OE-Core rev: 5853e0f482b22258c909268fe71673a29e31989b) Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* sstate: Set umask to 002 before packaging runsPhil Blundell2013-04-291-0/+4
| | | | | | | | | | | | | | Otherwise we might end up creating directories under sstate-cache with whatever random umask has been selected for the task that we're trying to package. This would be a bad thing since it might result in losing group write access for newly created dirs, and/or losing group read access for the sstate files themselves. (From OE-Core rev: d8c4f442c41bf3ac5e064630657cd3fa1b5c43b1) Signed-off-by: Phil Blundell <philb@gnu.org> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>