* [V2][PATCH] buildhistory.bbclass: add cloning
@ 2021-02-14 19:18 akuster
2021-02-15 14:39 ` [OE-core] " Richard Purdie
0 siblings, 1 reply; 2+ messages in thread
From: akuster @ 2021-02-14 19:18 UTC (permalink / raw)
To: openembedded-core
Provide a method to clone and push to a git repo
Provide a method to pre-populate buildhistory
Maybe remove the need for external scripts to do the same
Three new variables:
BUILDHISTORY_BRANCH - branch used for checkout and pushing
BUILDHISTORY_CLONE - git repo uri
example:
BUILDHISTORY_BRANCH="${DISTRO}/gatesgarth/${MACHINE}"
BUILDHISTORY_CLONE = "git@gitlab.com:akuster/oe-buildhistory"
BUILDHISTORY_PUSH_REPO = "origin ${BUILDHISTORY_BRANCH}"
Signed-off-by: Armin Kuster <akuster808@gmail.com>
----
[V2]
Use BUILDHISTORY_CLONE instead of BUILDHISTORY_REPO_URI
Simplified initial clone to one step
---
meta/classes/buildhistory.bbclass | 47 +++++++++++++++++++++++++++++++
1 file changed, 47 insertions(+)
diff --git a/meta/classes/buildhistory.bbclass b/meta/classes/buildhistory.bbclass
index 117a44eaf38..d0e918c3d8e 100644
--- a/meta/classes/buildhistory.bbclass
+++ b/meta/classes/buildhistory.bbclass
@@ -44,6 +44,12 @@ BUILDHISTORY_COMMIT_AUTHOR ?= "buildhistory <buildhistory@${DISTRO}>"
BUILDHISTORY_PUSH_REPO ?= ""
BUILDHISTORY_TAG ?= "build"
+# Branch for checkout
+BUILDHISTORY_BRANCH ?= ""
+
+# Clone previous buildhistory from repo
+BUILDHISTORY_CLONE ?= ""
+
SSTATEPOSTINSTFUNCS_append = " buildhistory_emit_pkghistory"
# We want to avoid influencing the signatures of sstate tasks - first the function itself:
sstate_install[vardepsexclude] += "buildhistory_emit_pkghistory"
@@ -858,6 +864,42 @@ END
fi) || true
}
+python buildhistory_clone() {
+ import subprocess
+
+ histdir = d.getVar('BUILDHISTORY_DIR')
+ repo_uri = d.getVar("BUILDHISTORY_CLONE")
+ bh_branch = d.getVar("BUILDHISTORY_BRANCH")
+
+ if not bh_branch:
+ bb.note("BUILDHISTORY_BRANCH not set")
+ return
+
+ if not os.path.isdir(histdir):
+ cmd = ['git', 'clone', repo_uri, '-b', bh_branch, histdir]
+ ret = subprocess.call(cmd)
+ if ret != 0:
+ bb.error('Failed to clond %s!' % repo_uri)
+
+ if not os.path.isdir(histdir):
+ rerturn
+
+ if os.path.isdir(os.path.join(histdir, '.git')):
+ cmd =['git', '-C', histdir, 'config', '--get', 'remote.origin.url']
+ hasurl = subprocess.call(cmd, shell=True)
+ if hasurl:
+ cmd = ['git', '-C', histdir, 'remote', 'add', '-f', '-t', bh_branch, '-m', bh_branch, 'origin', repo_uri]
+ subprocess.call(cmd)
+
+ cmd = ['git', '-C', histdir, 'checkout', bh_branch]
+ ret = subprocess.call(cmd)
+ if ret != 0:
+ bb.error('Failed to checkout branch %s' % bh_branch)
+
+ cmd = ['git', '-C', histdir, 'branch', '--set-upstream-to=origin/%s' % bh_branch]
+ subprocess.call(cmd)
+}
+
python buildhistory_eventhandler() {
if (e.data.getVar('BUILDHISTORY_FEATURES') or "").strip():
reset = e.data.getVar("BUILDHISTORY_RESET")
@@ -874,6 +916,11 @@ python buildhistory_eventhandler() {
for entry in entries:
os.rename(os.path.join(rootdir, entry),
os.path.join(olddir, entry))
+
+ if e.data.getVar("BUILDHISTORY_CLONE") != "":
+ localdata = bb.data.createCopy(e.data)
+ bb.build.exec_func("buildhistory_clone", d)
+
elif isinstance(e, bb.event.BuildCompleted):
if reset:
import shutil
--
2.25.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [OE-core] [V2][PATCH] buildhistory.bbclass: add cloning
2021-02-14 19:18 [V2][PATCH] buildhistory.bbclass: add cloning akuster
@ 2021-02-15 14:39 ` Richard Purdie
0 siblings, 0 replies; 2+ messages in thread
From: Richard Purdie @ 2021-02-15 14:39 UTC (permalink / raw)
To: akuster, openembedded-core
On Sun, 2021-02-14 at 19:18 +0000, akuster wrote:
> Provide a method to clone and push to a git repo
> Provide a method to pre-populate buildhistory
> Maybe remove the need for external scripts to do the same
>
> Three new variables:
> BUILDHISTORY_BRANCH - branch used for checkout and pushing
> BUILDHISTORY_CLONE - git repo uri
>
> example:
> BUILDHISTORY_BRANCH="${DISTRO}/gatesgarth/${MACHINE}"
> BUILDHISTORY_CLONE = "git@gitlab.com:akuster/oe-buildhistory"
> BUILDHISTORY_PUSH_REPO = "origin ${BUILDHISTORY_BRANCH}"
>
> Signed-off-by: Armin Kuster <akuster808@gmail.com>
>
> ----
> [V2]
> Use BUILDHISTORY_CLONE instead of BUILDHISTORY_REPO_URI
>
> Simplified initial clone to one step
> ---
> meta/classes/buildhistory.bbclass | 47 +++++++++++++++++++++++++++++++
> 1 file changed, 47 insertions(+)
>
> diff --git a/meta/classes/buildhistory.bbclass b/meta/classes/buildhistory.bbclass
> index 117a44eaf38..d0e918c3d8e 100644
> --- a/meta/classes/buildhistory.bbclass
> +++ b/meta/classes/buildhistory.bbclass
> @@ -44,6 +44,12 @@ BUILDHISTORY_COMMIT_AUTHOR ?= "buildhistory <buildhistory@${DISTRO}>"
> BUILDHISTORY_PUSH_REPO ?= ""
> BUILDHISTORY_TAG ?= "build"
>
>
>
>
> +# Branch for checkout
> +BUILDHISTORY_BRANCH ?= ""
> +
> +# Clone previous buildhistory from repo
> +BUILDHISTORY_CLONE ?= ""
> +
> SSTATEPOSTINSTFUNCS_append = " buildhistory_emit_pkghistory"
> # We want to avoid influencing the signatures of sstate tasks - first the function itself:
> sstate_install[vardepsexclude] += "buildhistory_emit_pkghistory"
> @@ -858,6 +864,42 @@ END
> fi) || true
> }
>
>
>
>
> +python buildhistory_clone() {
> + import subprocess
> +
> + histdir = d.getVar('BUILDHISTORY_DIR')
> + repo_uri = d.getVar("BUILDHISTORY_CLONE")
> + bh_branch = d.getVar("BUILDHISTORY_BRANCH")
> +
> + if not bh_branch:
> + bb.note("BUILDHISTORY_BRANCH not set")
> + return
> +
> + if not os.path.isdir(histdir):
> + cmd = ['git', 'clone', repo_uri, '-b', bh_branch, histdir]
> + ret = subprocess.call(cmd)
> + if ret != 0:
> + bb.error('Failed to clond %s!' % repo_uri)
> +
> + if not os.path.isdir(histdir):
> + rerturn
> +
> + if os.path.isdir(os.path.join(histdir, '.git')):
> + cmd =['git', '-C', histdir, 'config', '--get', 'remote.origin.url']
> + hasurl = subprocess.call(cmd, shell=True)
> + if hasurl:
> + cmd = ['git', '-C', histdir, 'remote', 'add', '-f', '-t', bh_branch, '-m', bh_branch, 'origin', repo_uri]
> + subprocess.call(cmd)
> +
> + cmd = ['git', '-C', histdir, 'checkout', bh_branch]
> + ret = subprocess.call(cmd)
> + if ret != 0:
> + bb.error('Failed to checkout branch %s' % bh_branch)
> +
> + cmd = ['git', '-C', histdir, 'branch', '--set-upstream-to=origin/%s' % bh_branch]
> + subprocess.call(cmd)
> +}
> +
> python buildhistory_eventhandler() {
> if (e.data.getVar('BUILDHISTORY_FEATURES') or "").strip():
> reset = e.data.getVar("BUILDHISTORY_RESET")
> @@ -874,6 +916,11 @@ python buildhistory_eventhandler() {
> for entry in entries:
> os.rename(os.path.join(rootdir, entry),
> os.path.join(olddir, entry))
> +
> + if e.data.getVar("BUILDHISTORY_CLONE") != "":
> + localdata = bb.data.createCopy(e.data)
This wasn't tested without it set? Should be just:
if e.data.getVar("BUILDHISTORY_CLONE"):
Cheers,
Richard
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-02-15 14:39 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-02-14 19:18 [V2][PATCH] buildhistory.bbclass: add cloning akuster
2021-02-15 14:39 ` [OE-core] " Richard Purdie
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox