diff options
| author | Gyorgy Sarvari <skandigraun@gmail.com> | 2025-08-18 07:18:22 +0200 |
|---|---|---|
| committer | Khem Raj <raj.khem@gmail.com> | 2025-08-18 07:50:01 -0700 |
| commit | 157d2fede274721e0b620bc3c4636ac1badb082c (patch) | |
| tree | 43740e52b254263d2632c087f5fbfd906faf6bd8 | |
| parent | 5ae3536204ba3764b03647ab75169ee65ca43531 (diff) | |
| download | meta-openembedded-157d2fede274721e0b620bc3c4636ac1badb082c.tar.gz | |
gitpkgv.bbclass: inspect repository in UNPACKDIR
When BB_GIT_SHALLOW = "1" is used, the unpacked gir repository doesn't
exist in the download folder, and the class isn't able to inspect the
details of the repository.
Instead inspect the repository it the UNPACKDIR.
Beside this, since BitBake fetcher performs an actual initial shallow
clone of the repository when this feature is enabled, it is not possible
to determine the exact number of commits. Add a warning about this.
Reported-by: WXbet <WXbet@proton.me>
Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
| -rw-r--r-- | meta-oe/classes/gitpkgv.bbclass | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/meta-oe/classes/gitpkgv.bbclass b/meta-oe/classes/gitpkgv.bbclass index eb4b1eae9a..c3d98cb2e1 100644 --- a/meta-oe/classes/gitpkgv.bbclass +++ b/meta-oe/classes/gitpkgv.bbclass | |||
| @@ -21,6 +21,11 @@ | |||
| 21 | # v1.2, xtest, v2.0" will force you to increment PE to get upgradeable | 21 | # v1.2, xtest, v2.0" will force you to increment PE to get upgradeable |
| 22 | # path to v2.0 revisions | 22 | # path to v2.0 revisions |
| 23 | # | 23 | # |
| 24 | # Another WARNING: Since Walnascar release BB_SHALLOW_GIT will actually | ||
| 25 | # perform a shallow initial checkout, which makes it impossible to determine | ||
| 26 | # the correct number of commits in the repository - thus using this class | ||
| 27 | # is not recommended when shallow cloning is enabled. | ||
| 28 | # | ||
| 24 | # use example: | 29 | # use example: |
| 25 | # | 30 | # |
| 26 | # inherit gitpkgv | 31 | # inherit gitpkgv |
| @@ -59,6 +64,9 @@ def get_git_pkgv(d, use_tags): | |||
| 59 | from shlex import quote | 64 | from shlex import quote |
| 60 | 65 | ||
| 61 | src_uri = d.getVar('SRC_URI').split() | 66 | src_uri = d.getVar('SRC_URI').split() |
| 67 | unpackdir = d.getVar('UNPACKDIR') | ||
| 68 | def_destsuffix = (d.getVar("BB_GIT_DEFAULT_DESTSUFFIX") or "git") + "/" | ||
| 69 | |||
| 62 | fetcher = bb.fetch2.Fetch(src_uri, d) | 70 | fetcher = bb.fetch2.Fetch(src_uri, d) |
| 63 | ud = fetcher.ud | 71 | ud = fetcher.ud |
| 64 | 72 | ||
| @@ -78,20 +86,27 @@ def get_git_pkgv(d, use_tags): | |||
| 78 | found = False | 86 | found = False |
| 79 | for url in ud.values(): | 87 | for url in ud.values(): |
| 80 | if url.type == 'git' or url.type == 'gitsm': | 88 | if url.type == 'git' or url.type == 'gitsm': |
| 81 | if not os.path.exists(url.localpath): | 89 | destsuffix = url.parm.get("destsuffix", def_destsuffix) |
| 90 | subdir = url.parm.get('subdir', '') | ||
| 91 | destdir = os.path.join(unpackdir, destsuffix, subdir) | ||
| 92 | |||
| 93 | if not os.path.exists(destdir): | ||
| 82 | return None | 94 | return None |
| 83 | 95 | ||
| 96 | if d.getVar('BB_GIT_SHALLOW') == '1': | ||
| 97 | bb.warnonce('%s: Shallow cloning enabled - gitpkgv.bbclass will not generate sortable versions' % d.getVar('PN')) | ||
| 98 | |||
| 84 | found = True | 99 | found = True |
| 85 | 100 | ||
| 86 | vars = { 'repodir' : quote(url.localpath), | 101 | vars = { 'repodir' : quote(destdir), |
| 87 | 'rev' : quote(url.revision) } | 102 | 'rev' : quote(url.revision) } |
| 88 | 103 | ||
| 89 | rev = bb.fetch2.get_srcrev(d).split('+')[1] | 104 | rev = bb.fetch2.get_srcrev(d).split('+')[1] |
| 90 | rev_file = os.path.join(url.localpath, "oe-gitpkgv_" + url.revision) | 105 | rev_file = os.path.join(destdir, "oe-gitpkgv_" + url.revision) |
| 91 | 106 | ||
| 92 | if not os.path.exists(rev_file) or os.path.getsize(rev_file)==0: | 107 | if not os.path.exists(rev_file) or os.path.getsize(rev_file)==0: |
| 93 | commits = bb.fetch2.runfetchcmd( | 108 | commits = bb.fetch2.runfetchcmd( |
| 94 | "git --git-dir=%(repodir)s rev-list %(rev)s -- 2>/dev/null | wc -l" | 109 | "git -C %(repodir)s rev-list %(rev)s -- 2>/dev/null | wc -l" |
| 95 | % vars, d, quiet=True).strip().lstrip('0') | 110 | % vars, d, quiet=True).strip().lstrip('0') |
| 96 | 111 | ||
| 97 | if commits != "": | 112 | if commits != "": |
| @@ -107,7 +122,7 @@ def get_git_pkgv(d, use_tags): | |||
| 107 | if use_tags: | 122 | if use_tags: |
| 108 | try: | 123 | try: |
| 109 | output = bb.fetch2.runfetchcmd( | 124 | output = bb.fetch2.runfetchcmd( |
| 110 | "git --git-dir=%(repodir)s describe %(rev)s --tags --exact-match 2>/dev/null" | 125 | "git -C %(repodir)s describe %(rev)s --tags --exact-match 2>/dev/null" |
| 111 | % vars, d, quiet=True).strip() | 126 | % vars, d, quiet=True).strip() |
| 112 | ver = gitpkgv_drop_tag_prefix(d, output) | 127 | ver = gitpkgv_drop_tag_prefix(d, output) |
| 113 | except Exception: | 128 | except Exception: |
