diff options
author | Joshua Watt <JPEWhacker@gmail.com> | 2020-07-20 12:56:32 -0500 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2020-07-22 12:45:56 +0100 |
commit | 5843460575b377a44dd40b9e42e3b1add65b1ef0 (patch) | |
tree | 61ec46af16805eaf945ce494f3c9ef0c956a9c22 /meta/lib | |
parent | ebb40b027cf76be3e76490cc5a53691e57480f57 (diff) | |
download | poky-5843460575b377a44dd40b9e42e3b1add65b1ef0.tar.gz |
lib/oe/reproducible: Fix error when no git HEAD
Fixes an error that occurs when attempting to get the timestamp of the
latest commit when there is no HEAD in the git repository. The easiest
way to trigger this condition is to use the 'subdir=' option when
specifying a 'git://' SRC_URI.
(From OE-Core rev: a64caca5b5dbe4a76acd0b5709b2c3e75b245863)
Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib')
-rw-r--r-- | meta/lib/oe/reproducible.py | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/meta/lib/oe/reproducible.py b/meta/lib/oe/reproducible.py index f80a85ddef..f4f58dd952 100644 --- a/meta/lib/oe/reproducible.py +++ b/meta/lib/oe/reproducible.py | |||
@@ -47,14 +47,23 @@ def find_git_folder(d, sourcedir): | |||
47 | return None | 47 | return None |
48 | 48 | ||
49 | def get_source_date_epoch_from_git(d, sourcedir): | 49 | def get_source_date_epoch_from_git(d, sourcedir): |
50 | source_date_epoch = None | 50 | if not "git://" in d.getVar('SRC_URI'): |
51 | if "git://" in d.getVar('SRC_URI'): | 51 | return None |
52 | gitpath = find_git_folder(d, sourcedir) | 52 | |
53 | if gitpath: | 53 | gitpath = find_git_folder(d, sourcedir) |
54 | import subprocess | 54 | if not gitpath: |
55 | source_date_epoch = int(subprocess.check_output(['git','log','-1','--pretty=%ct'], cwd=gitpath)) | 55 | return None |
56 | bb.debug(1, "git repository: %s" % gitpath) | 56 | |
57 | return source_date_epoch | 57 | # Check that the repository has a valid HEAD; it may not if subdir is used |
58 | # in SRC_URI | ||
59 | p = subprocess.run(['git', 'rev-parse', 'HEAD'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, cwd=gitpath) | ||
60 | if p.returncode != 0: | ||
61 | bb.debug(1, "%s does not have a valid HEAD: %s" % (gitpath, p.stdout.decode('utf-8'))) | ||
62 | return None | ||
63 | |||
64 | bb.debug(1, "git repository: %s" % gitpath) | ||
65 | p = subprocess.run(['git','log','-1','--pretty=%ct'], check=True, stdout=subprocess.PIPE, cwd=gitpath) | ||
66 | return int(p.stdout.decode('utf-8')) | ||
58 | 67 | ||
59 | def get_source_date_epoch_from_youngest_file(d, sourcedir): | 68 | def get_source_date_epoch_from_youngest_file(d, sourcedir): |
60 | if sourcedir == d.getVar('WORKDIR'): | 69 | if sourcedir == d.getVar('WORKDIR'): |