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_CLONE - Enable the cloning function
BUILDHISTORY_BRANCH - branch used for checkout and pushing
BUILDHISTORY_REPO_URI - git repo uri
example:
BUILDHISTORY_CLONE = "1"
BUILDHISTORY_BRANCH="${DISTRO}/gatesgarth/${MACHINE}"
BUILDHISTORY_REPO_URI = "[email protected]:akuster/oe-buildhistory"
BUILDHISTORY_PUSH_REPO = "origin ${BUILDHISTORY_BRANCH}"
Signed-off-by: Armin Kuster <[email protected]>
---
meta/classes/buildhistory.bbclass | 59 +++++++++++++++++++++++++++++++
1 file changed, 59 insertions(+)
diff --git a/meta/classes/buildhistory.bbclass
b/meta/classes/buildhistory.bbclass
index 117a44eaf38..8ed420174e9 100644
--- a/meta/classes/buildhistory.bbclass
+++ b/meta/classes/buildhistory.bbclass
@@ -44,6 +44,15 @@ BUILDHISTORY_COMMIT_AUTHOR ?= "buildhistory
<buildhistory@${DISTRO}>"
BUILDHISTORY_PUSH_REPO ?= ""
BUILDHISTORY_TAG ?= "build"
+# Branch for checkout
+BUILDHISTORY_BRANCH ?= ""
+
+# git uri to clone and push too
+BUILDHISTORY_REPO_URI ?= ""
+
+# 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 +867,51 @@ END
fi) || true
}
+python buildhistory_clone() {
+ import subprocess
+
+ histdir = d.getVar('BUILDHISTORY_DIR')
+ repo_uri = d.getVar("BUILDHISTORY_REPO_URI")
+ bh_branch = d.getVar("BUILDHISTORY_BRANCH")
+
+ if not repo_uri:
+ bb.note("BUILDHISTORY_REPO_URI not set")
+ return
+
+ if not bh_branch:
+ bb.note("BUILDHISTORY_BRANCH not set")
+ return
+
+ if not os.path.isdir(histdir):
+ cmd = ['git', 'clone', repo_uri, histdir]
+ ret = subprocess.call(cmd)
+ if ret != 0:
+ bb.error('Failed to clond %s!' % repo_uri)
+
+ cmd = ['git', '-C', histdir, 'checkout','-b', bh_branch]
+ ret = subprocess.call(cmd)
+ if ret != 0:
+ bb.error('Failed to checkout branch %s!' % bh_branch)
+
+ 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 +928,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") == "1":
+ 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
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#148027):
https://lists.openembedded.org/g/openembedded-core/message/148027
Mute This Topic: https://lists.openembedded.org/mt/80632805/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-