diff options
| -rw-r--r-- | meta/classes/sstate.bbclass | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass index 930d87424f..50d44398f9 100644 --- a/meta/classes/sstate.bbclass +++ b/meta/classes/sstate.bbclass | |||
| @@ -640,10 +640,21 @@ python sstate_hardcode_path () { | |||
| 640 | 640 | ||
| 641 | def sstate_package(ss, d): | 641 | def sstate_package(ss, d): |
| 642 | import oe.path | 642 | import oe.path |
| 643 | import time | ||
| 643 | 644 | ||
| 644 | tmpdir = d.getVar('TMPDIR') | 645 | tmpdir = d.getVar('TMPDIR') |
| 645 | 646 | ||
| 647 | fixtime = False | ||
| 648 | if ss['task'] == "package": | ||
| 649 | fixtime = True | ||
| 650 | |||
| 651 | def fixtimestamp(root, path): | ||
| 652 | f = os.path.join(root, path) | ||
| 653 | if os.lstat(f).st_mtime > sde: | ||
| 654 | os.utime(f, (sde, sde), follow_symlinks=False) | ||
| 655 | |||
| 646 | sstatebuild = d.expand("${WORKDIR}/sstate-build-%s/" % ss['task']) | 656 | sstatebuild = d.expand("${WORKDIR}/sstate-build-%s/" % ss['task']) |
| 657 | sde = int(d.getVar("SOURCE_DATE_EPOCH") or time.time()) | ||
| 647 | d.setVar("SSTATE_CURRTASK", ss['task']) | 658 | d.setVar("SSTATE_CURRTASK", ss['task']) |
| 648 | bb.utils.remove(sstatebuild, recurse=True) | 659 | bb.utils.remove(sstatebuild, recurse=True) |
| 649 | bb.utils.mkdirhier(sstatebuild) | 660 | bb.utils.mkdirhier(sstatebuild) |
| @@ -656,6 +667,8 @@ def sstate_package(ss, d): | |||
| 656 | # to sstate tasks but there aren't many of these so better just avoid them entirely. | 667 | # to sstate tasks but there aren't many of these so better just avoid them entirely. |
| 657 | for walkroot, dirs, files in os.walk(state[1]): | 668 | for walkroot, dirs, files in os.walk(state[1]): |
| 658 | for file in files + dirs: | 669 | for file in files + dirs: |
| 670 | if fixtime: | ||
| 671 | fixtimestamp(walkroot, file) | ||
| 659 | srcpath = os.path.join(walkroot, file) | 672 | srcpath = os.path.join(walkroot, file) |
| 660 | if not os.path.islink(srcpath): | 673 | if not os.path.islink(srcpath): |
| 661 | continue | 674 | continue |
| @@ -677,6 +690,11 @@ def sstate_package(ss, d): | |||
| 677 | bb.utils.mkdirhier(plain) | 690 | bb.utils.mkdirhier(plain) |
| 678 | bb.utils.mkdirhier(pdir) | 691 | bb.utils.mkdirhier(pdir) |
| 679 | os.rename(plain, pdir) | 692 | os.rename(plain, pdir) |
| 693 | if fixtime: | ||
| 694 | fixtimestamp(pdir, "") | ||
| 695 | for walkroot, dirs, files in os.walk(pdir): | ||
| 696 | for file in files + dirs: | ||
| 697 | fixtimestamp(walkroot, file) | ||
| 680 | 698 | ||
| 681 | d.setVar('SSTATE_BUILDDIR', sstatebuild) | 699 | d.setVar('SSTATE_BUILDDIR', sstatebuild) |
| 682 | d.setVar('SSTATE_INSTDIR', sstatebuild) | 700 | d.setVar('SSTATE_INSTDIR', sstatebuild) |
