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) |