* [yocto-autobuilder][PATCH v1 0/4] fixes for use with Angstrom
@ 2014-05-08 16:44 stefan
2014-05-08 16:44 ` [yocto-autobuilder][PATCH v1 1/4] GetDistroVersion.py support for Angstrom distro version stefan
` (5 more replies)
0 siblings, 6 replies; 11+ messages in thread
From: stefan @ 2014-05-08 16:44 UTC (permalink / raw)
To: yocto, elizabeth.flanagan; +Cc: stefan
From: Stefan Agner <stefan@agner.ch>
Hi folks,
We plan to make use of the Yocto Autobuilder at Toradex. I successfully
deployed an installation, however since we distribute an Anstrom based
BSP I had to adjust some files. With those patches and a custom layer
configuration (not included since quite ugly) I'm able to build our BSP.
Would be good to have those changes upstream. Especially the new way to
preserve the order of builders is more generic, however maybe not yet
perfect. I needed this especially since I build some other stuff using
POBBC (plain old build bot configuration :-)).
Just as a general question: What is planned with the autobuilder in
general? Is there an integration planned with Toaster? As far as I can
see, since the build directory is recreated each time, this is not
really possible right now. It would need adjustment to the autobuilder
to start the toaster web interface for each builder, and clean/restart
builds in a way that doesn't interfere with Toaster. Any thoughts on
this?
--
Stefan
Stefan Agner (4):
GetDistroVersion.py support for Angstrom distro version
README: add high level overview, fix build slave description
master.py/botmaster.py: use builders list for builders order
GetDeployDir.py/PublishArtifacts.py: get deploy dir from bitbake
README | 8 ++--
README-NEW-AUTOBUILDER | 11 +++++
.../site-packages/autobuilder/Autobuilder.py | 17 ++++----
.../autobuilder/buildsteps/GetDeployDir.py | 47 +++++++++++++++++++++
.../autobuilder/buildsteps/GetDistroVersion.py | 7 +++-
.../autobuilder/buildsteps/PublishArtifacts.py | 48 ++++++++++++----------
.../buildbot/process/botmaster.py | 3 +-
.../buildbot/status/master.py | 12 +-----
8 files changed, 106 insertions(+), 47 deletions(-)
create mode 100644 lib/python2.7/site-packages/autobuilder/buildsteps/GetDeployDir.py
--
1.9.0
^ permalink raw reply [flat|nested] 11+ messages in thread
* [yocto-autobuilder][PATCH v1 1/4] GetDistroVersion.py support for Angstrom distro version
2014-05-08 16:44 [yocto-autobuilder][PATCH v1 0/4] fixes for use with Angstrom stefan
@ 2014-05-08 16:44 ` stefan
2014-05-08 16:44 ` [yocto-autobuilder][PATCH v1 2/4] README: add high level overview, fix build slave description stefan
` (4 subsequent siblings)
5 siblings, 0 replies; 11+ messages in thread
From: stefan @ 2014-05-08 16:44 UTC (permalink / raw)
To: yocto, elizabeth.flanagan; +Cc: stefan
From: Stefan Agner <stefan@agner.ch>
Ångström distribution has a different location for distro version,
support "angstrom" as distro too.
Signed-off-by: Stefan Agner <stefan@agner.ch>
---
.../site-packages/autobuilder/buildsteps/GetDistroVersion.py | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/lib/python2.7/site-packages/autobuilder/buildsteps/GetDistroVersion.py b/lib/python2.7/site-packages/autobuilder/buildsteps/GetDistroVersion.py
index 3d4f314..2555e62 100644
--- a/lib/python2.7/site-packages/autobuilder/buildsteps/GetDistroVersion.py
+++ b/lib/python2.7/site-packages/autobuilder/buildsteps/GetDistroVersion.py
@@ -32,10 +32,13 @@ class GetDistroVersion(ShellCommand):
def start(self):
buildername=self.getProperty("buildername")
+ distroconf=self.slaveworkdir + "/" + buildername
if 'poky' in self.distro:
- distroconf=self.slaveworkdir + "/" + buildername + "/build/meta-yocto/conf/distro/poky.conf|grep 'DISTRO_VERSION = \"'"
+ distroconf+="/build/meta-yocto/conf/distro/poky.conf|grep 'DISTRO_VERSION = \"'"
elif 'oecore' in self.distro:
- distroconf=self.slaveworkdir + "/" + buildername + "/build/meta/conf/distro/include/default-distrovars.inc|grep 'DISTRO_VERSION '"
+ distroconf+="/build/meta/conf/distro/include/default-distrovars.inc|grep 'DISTRO_VERSION '"
+ elif 'angstrom' in self.distro:
+ distroconf+="/build/meta-angstrom/conf/distro/angstrom-*.conf|grep 'DISTRO_VERSION = \"'"
else:
self.finished(FAILURE)
cmd = 'cat ' + distroconf
--
1.9.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [yocto-autobuilder][PATCH v1 2/4] README: add high level overview, fix build slave description
2014-05-08 16:44 [yocto-autobuilder][PATCH v1 0/4] fixes for use with Angstrom stefan
2014-05-08 16:44 ` [yocto-autobuilder][PATCH v1 1/4] GetDistroVersion.py support for Angstrom distro version stefan
@ 2014-05-08 16:44 ` stefan
2014-05-08 16:44 ` [yocto-autobuilder][PATCH v1 3/4] master.py/botmaster.py: use builders list for builders order stefan
` (3 subsequent siblings)
5 siblings, 0 replies; 11+ messages in thread
From: stefan @ 2014-05-08 16:44 UTC (permalink / raw)
To: yocto, elizabeth.flanagan; +Cc: stefan
From: Stefan Agner <stefan@agner.ch>
Replace builders with build slaves, since this are different things
in BuildBot world. Also add a section with some high level view
what Autobuilder actually is.
Signed-off-by: Stefan Agner <stefan@agner.ch>
---
README | 8 ++++----
README-NEW-AUTOBUILDER | 11 +++++++++++
2 files changed, 15 insertions(+), 4 deletions(-)
diff --git a/README b/README
index c7c9acf..3b418fd 100644
--- a/README
+++ b/README
@@ -26,7 +26,7 @@ Setup
connection that I haven't figured out yet. Manually connecting seems to
set up the session correctly.)
-2. Adding additional builders
+2. Adding additional build slaves
The production yocto autobuilder uses a cluster of build slaves, all sharing
the same SSTATE_DIR and DL_DIR via an NFS4 mounted NAS. The main nightly
@@ -36,7 +36,7 @@ Setup
In theory you could also run your build slaves with NO_NETWORK to enforce a
single point of populating DL_DIR.
- Running multiple builders is fairly simple, but does require some setup.
+ Running multiple build slaves is fairly simple, but does require some setup.
1. Ensure the autobuilder.conf for each build slave is appropriate. As
certain variables are set within this file that are local to each builder
@@ -45,7 +45,7 @@ Setup
2. Within yocto-master/master.cfg make the following changes substituing
<PASS> for your debug password and max_builds for the number of builds
you wish to run on each builder. Your main builder that will run the
- nightly trigger buildset should have at least 2 builders running.
+ nightly trigger buildset should have at least 2 build slaves running.
c['slaves'] = [BuildSlave("builder1", "<PASS>", max_builds=3),
@@ -53,7 +53,7 @@ c['slaves'] = [BuildSlave("builder1", "<PASS>", max_builds=3),
BuildSlave("builder3", "<PASS>", max_builds=3),
BuildSlave("builder4", "<PASS>", max_builds=3)]
- 3. For each buildslave change yocto-slave/buildbot.tac to point to the
+ 3. For each build slave change yocto-slave/buildbot.tac to point to the
correct build master and port. The default setup points to local host.
buildmaster_host = 'builder1.myproject.org'
diff --git a/README-NEW-AUTOBUILDER b/README-NEW-AUTOBUILDER
index 1e46f5b..acb5387 100644
--- a/README-NEW-AUTOBUILDER
+++ b/README-NEW-AUTOBUILDER
@@ -23,6 +23,17 @@ TODO
- deploy stuff
- killing triggers. this has been a long standing issue. look into
+What is it
+------------
+Yocto Autobuilder is essentially some extension to the vanilla build bot.
+This extension mainly addresses configuration file handling and Yocto specific
+build steps.
+For better maintainability, the Autobuilder (see Autobuilder.py located at
+lib/python2.7/site-packages/autobuilder/), handles configuration from multiple
+files.
+Additional build steps such as CheckOutLayers.py or CreateBBLayersConf are
+Yocto specific and simplify the bulders configuration.
+
Setup
------------
Nothing here has changed much.
--
1.9.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [yocto-autobuilder][PATCH v1 3/4] master.py/botmaster.py: use builders list for builders order
2014-05-08 16:44 [yocto-autobuilder][PATCH v1 0/4] fixes for use with Angstrom stefan
2014-05-08 16:44 ` [yocto-autobuilder][PATCH v1 1/4] GetDistroVersion.py support for Angstrom distro version stefan
2014-05-08 16:44 ` [yocto-autobuilder][PATCH v1 2/4] README: add high level overview, fix build slave description stefan
@ 2014-05-08 16:44 ` stefan
2014-05-08 16:44 ` [yocto-autobuilder][PATCH v1 4/4] GetDeployDir.py/PublishArtifacts.py: get deploy dir from bitbake stefan
` (2 subsequent siblings)
5 siblings, 0 replies; 11+ messages in thread
From: stefan @ 2014-05-08 16:44 UTC (permalink / raw)
To: yocto, elizabeth.flanagan; +Cc: stefan
From: Stefan Agner <stefan@agner.ch>
This patch uses the order of the list builderNames when requesting
builder names. This order is relevant for the Waterfall order.
However, the order of builderNames is not meaningful by default,
hence the change in botmaster.py makes sure the builderNames is
taken form the configuration files list of builder.
Hence we can get rid of the environment work around (which also
did not honor non Autobuilder builders).
Signed-off-by: Stefan Agner <stefan@agner.ch>
---
lib/python2.7/site-packages/autobuilder/Autobuilder.py | 17 +++++++++--------
.../buildbot/process/botmaster.py | 3 ++-
.../buildbot-0.8.8-py2.7.egg/buildbot/status/master.py | 12 ++----------
3 files changed, 13 insertions(+), 19 deletions(-)
diff --git a/lib/python2.7/site-packages/autobuilder/Autobuilder.py b/lib/python2.7/site-packages/autobuilder/Autobuilder.py
index 4c33489..cf8672f 100644
--- a/lib/python2.7/site-packages/autobuilder/Autobuilder.py
+++ b/lib/python2.7/site-packages/autobuilder/Autobuilder.py
@@ -38,20 +38,21 @@ class Autobuilder:
self.cfile = "./buildset-config/yoctoAB.conf"
def createBuildsets(self):
- beenHere=[]
+ buildersSorted=[]
sort = True
if self.config.has_option('BuildSets', 'order'):
sort = False
for set in ast.literal_eval(self.config.get('BuildSets', 'order')):
- beenHere.append(set)
+ buildersSorted.append(set)
+
for key in self.configdict:
- if key not in beenHere and key != "BuildSets":
- beenHere.append(key)
+ if key not in buildersSorted and key != "BuildSets":
+ buildersSorted.append(key)
+
if sort:
- beenHere.sort()
- # REALLY crappy way to do this, but better than setting globals.
- os.environ["YOCTO_SORTED_BUILDERS"]= str(beenHere)
- for buildset in beenHere:
+ util.naturalSort(buildersSorted)
+
+ for buildset in buildersSorted:
self.schedprops = []
self.checkoutprops={}
self.set_props = {}
diff --git a/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/process/botmaster.py b/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/process/botmaster.py
index d5597f7..f2c3b9f 100644
--- a/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/process/botmaster.py
+++ b/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/process/botmaster.py
@@ -262,7 +262,8 @@ class BotMaster(config.ReconfigurableServiceMixin, service.MultiService):
builder.master = self.master
builder.setServiceParent(self)
- self.builderNames = self.builders.keys()
+ # Use order according to configuration files builders list
+ self.builderNames = list([ (bc.name) for bc in new_config.builders ])
metrics.MetricCountEvent.log("num_builders",
len(self.builders), absolute=True)
diff --git a/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/status/master.py b/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/status/master.py
index b5fe741..df122b4 100644
--- a/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/status/master.py
+++ b/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/status/master.py
@@ -221,16 +221,8 @@ class Status(config.ReconfigurableServiceMixin, service.MultiService):
def getBuilderNames(self, categories=None):
if categories == None:
- #YOCTO PROJECT ADDITION
- import os
- import ast
- sortbuilders=""
- sortbuilders=ast.literal_eval(os.environ.get('YOCTO_SORTED_BUILDERS'))
- #I hate the way this is sorted. This is the laziest way to get this
- #in the format I want.
- return sortbuilders
- #YOCTO PROJECT ADDITION
- #return util.naturalSort(self.botmaster.builderNames) # don't let them break it
+ # assume this is already sorted...
+ return self.botmaster.builderNames
l = []
# respect addition order
--
1.9.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [yocto-autobuilder][PATCH v1 4/4] GetDeployDir.py/PublishArtifacts.py: get deploy dir from bitbake
2014-05-08 16:44 [yocto-autobuilder][PATCH v1 0/4] fixes for use with Angstrom stefan
` (2 preceding siblings ...)
2014-05-08 16:44 ` [yocto-autobuilder][PATCH v1 3/4] master.py/botmaster.py: use builders list for builders order stefan
@ 2014-05-08 16:44 ` stefan
2014-05-16 17:11 ` Flanagan, Elizabeth
2014-05-15 13:03 ` [yocto-autobuilder][PATCH v1 0/4] fixes for use with Angstrom Stefan Agner
2014-05-15 15:37 ` Flanagan, Elizabeth
5 siblings, 1 reply; 11+ messages in thread
From: stefan @ 2014-05-08 16:44 UTC (permalink / raw)
To: yocto, elizabeth.flanagan; +Cc: stefan
From: Stefan Agner <stefan@agner.ch>
Since the deploy dir is configureable (also through TMPDIR), we
need to have a more generic variant to get that path. Also the
Ångstrom distribution adds "-eglibc" to the TMPDIR. Hence, the
safest way to get the deployment dir is to parse buildbots
environment.
Signed-off-by: Stefan Agner <stefan@agner.ch>
---
.../autobuilder/buildsteps/GetDeployDir.py | 47 +++++++++++++++++++++
.../autobuilder/buildsteps/PublishArtifacts.py | 48 ++++++++++++----------
2 files changed, 73 insertions(+), 22 deletions(-)
create mode 100644 lib/python2.7/site-packages/autobuilder/buildsteps/GetDeployDir.py
diff --git a/lib/python2.7/site-packages/autobuilder/buildsteps/GetDeployDir.py b/lib/python2.7/site-packages/autobuilder/buildsteps/GetDeployDir.py
new file mode 100644
index 0000000..944fcf0
--- /dev/null
+++ b/lib/python2.7/site-packages/autobuilder/buildsteps/GetDeployDir.py
@@ -0,0 +1,47 @@
+'''
+Created on Mai 8, 2014
+
+__author__ = "Stefan Agner"
+__copyright__ = "Copyright 2014, Toradex AG"
+__credits__ = ["Stefan Agner"]
+__license__ = "GPL"
+__version__ = "2.0"
+__maintainer__ = "Stefan Agner"
+__email__ = "stefan@agner.ch"
+'''
+from buildbot.steps.shell import ShellCommand
+from buildbot.status import progress
+from buildbot.status.results import SUCCESS, FAILURE, WARNINGS
+from buildbot.process.properties import WithProperties
+from twisted.python import log
+from autobuilder.config import *
+
+class GetDeployDir(ShellCommand):
+ haltOnFailure = False
+ flunkOnFailure = True
+ name = "GetDeployDir"
+ def __init__(self, factory, argdict=None, **kwargs):
+ for k, v in argdict.iteritems():
+ setattr(self, k, v)
+ self.description = "Get Deploy Directory"
+ self.deploydir = None
+ ShellCommand.__init__(self, **kwargs)
+
+ def start(self):
+ cmd = '. ./oe-init-build-env; bitbake -e | grep "^DEPLOY_DIR="'
+ self.command = cmd
+ ShellCommand.start(self)
+
+ def commandComplete(self, cmd):
+ if cmd.didFail():
+ return
+ result = cmd.logs['stdio'].getText()
+ if "=" not in result:
+ self.finished(FAILURE)
+ param, value = result.split("=")
+ deploydir = value.replace('"', '').strip()
+ self.setProperty('deploydir', deploydir, "Setting Deploy Directory")
+ self.finished(SUCCESS)
+
+ def getText(self, cmd, results):
+ return ShellCommand.getText(self, cmd, results)
diff --git a/lib/python2.7/site-packages/autobuilder/buildsteps/PublishArtifacts.py b/lib/python2.7/site-packages/autobuilder/buildsteps/PublishArtifacts.py
index ebc761f..303df36 100644
--- a/lib/python2.7/site-packages/autobuilder/buildsteps/PublishArtifacts.py
+++ b/lib/python2.7/site-packages/autobuilder/buildsteps/PublishArtifacts.py
@@ -19,10 +19,10 @@ class PublishArtifacts(ShellCommand):
haltOnFailure = False
flunkOnFailure = True
- name = "Publishing Artifacts"
+ name = "PublishArtifacts"
+ description = "Publishing Artifacts"
def __init__(self, factory, argdict=None, **kwargs):
self.factory = factory
- self.description = "Publishing Artifacts"
self.slavedir=os.path.join(os.path.join(YOCTO_ABBASE, "yocto-slave"))
for k, v in argdict.iteritems():
if type(v) is bool:
@@ -42,10 +42,14 @@ class PublishArtifacts(ShellCommand):
self.layerversion_yoctobsp = self.getProperty("layerversion_yoctobsp")
self.layerversion_yocto = self.getProperty("layerversion_yocto")
self.layerversion_core = self.getProperty("layerversion_core")
+ self.deploydir = self.getProperty("deploydir")
log.msg(layerversion_yoctobsp)
- self.basedir=os.path.join(os.path.join(
- self.slavedir, buildername),
- "build/build/")
+ self.basedir = os.path.join(self.slavedir, buildername, "build/build/")
+
+ # Deploydir might not be set in case the step did not run, fallback to default
+ if self.deploydir is None:
+ self.deploydir = os.path.join(self.basedir, "tmp/deploy/")
+
command=""
DATESTAMP=datetime.datetime.now().strftime("%Y%m%d")
if str(os.environ.get('PUBLISH_BUILDS')) == "True":
@@ -70,17 +74,17 @@ class PublishArtifacts(ShellCommand):
if artifact == "adt-installer":
command=command+"mkdir -p " + os.path.join(DEST, ADT_INST_PUBLISH_DIR) + ";"
command=command+"cp -R --no-dereference --preserve=links " + \
- os.path.join(self.basedir, "tmp/deploy/sdk/") + \
+ os.path.join(self.deploydir, "sdk/") + \
"*adt* " + os.path.join(DEST, ADT_INST_PUBLISH_DIR) + ";"
elif artifact == "adt-installer-QA":
command=command+"mkdir -p " + os.path.join(DEST, ADTQA_INST_PUBLISH_DIR) + ";"
command=command+"cp -R --no-dereference --preserve=links " + \
- os.path.join(self.basedir, "tmp/deploy/sdk/") + \
+ os.path.join(self.deploydir, "sdk/") + \
"*adt* " + os.path.join(DEST, ADTQA_INST_PUBLISH_DIR)+ ";"
elif artifact == "adtrepo-dev":
adt_dev_dest= os.environ.get("ADTREPO_DEV_PATH") + "/" + distroversion + "-" + got_revision_poky + '-' + self.getProperty("branch_poky")
command=command+"mkdir -p " + adt_dev_dest + "/adt-ipk;"
- command=command+"rsync -av " + os.path.join(self.basedir, "tmp/deploy/ipk/") + " " + adt_dev_dest + "/adt-ipk;"
+ command=command+"rsync -av " + os.path.join(self.deploydir, "ipk/") + " " + adt_dev_dest + "/adt-ipk;"
command=command+"rm -rf " + adt_dev_dest + "/rootfs; mkdir -p " + adt_dev_dest + "/rootfs;"
command=command+"for x in `ls " + DEST + "/machines/qemu/|grep -v tiny`; do ln -s " + DEST + "/machines/qemu/$x " + adt_dev_dest + "/rootfs/$x; done;"
if self.layerversion_yocto is not None and int(self.layerversion_yocto) < 2:
@@ -101,49 +105,49 @@ class PublishArtifacts(ShellCommand):
command=command+"mkdir -p " + DEST + "/" + BA_PUBLISH_DIR + ";"
if self.layerversion_core is not None and int(self.layerversion_core) > 2:
command=command+"cp -R --no-dereference --preserve=links " + \
- os.path.join(self.basedir, "tmp/deploy/images/qemux86-64/*.zip") + \
+ os.path.join(self.deploydir, "images/qemux86-64/*.zip") + \
" " + DEST + "/" + BA_PUBLISH_DIR + ";"
else:
command=command+"cp -R --no-dereference --preserve=links " + \
- os.path.join(self.basedir, "tmp/deploy/images/*.zip") + \
+ os.path.join(self.deploydir, "images/*.zip") + \
" " + DEST + "/" + BA_PUBLISH_DIR + ";"
elif artifact == "buildtools-tarball":
command=command+"mkdir -p " + DEST + "/buildtools;"
command=command+"cp -R --no-dereference --preserve=links " + \
- os.path.join(self.basedir, "tmp/deploy/sdk/*.sh") + \
+ os.path.join(self.deploydir, "sdk/*.sh") + \
" " + DEST + "/buildtools;"
elif artifact == "rpm":
command=command+"mkdir -p " + os.path.join(DEST, RPM_PUBLISH_DIR) + ";"
command=command+"cp -R --no-dereference --preserve=links " + \
- os.path.join(self.basedir, "tmp/deploy/rpm/* ") + \
+ os.path.join(self.deploydir, "rpm/* ") + \
os.path.join(DEST, RPM_PUBLISH_DIR) + ";"
elif artifact == "deb":
command=command+"mkdir -p " + os.path.join(DEST, DEB_PUBLISH_DIR) + ";"
command=command+"cp -R --no-dereference --preserve=links " + \
- os.path.join(self.basedir, "tmp/deploy/deb/* ") + \
+ os.path.join(self.deploydir, "deb/* ") + \
os.path.join(DEST, DEB_PUBLISH_DIR) + ";"
elif artifact == "ipk":
command=command+"mkdir -p " + os.path.join(DEST, IPK_PUBLISH_DIR) + ";"
command=command+"cp -R --no-dereference --preserve=links " + \
- os.path.join(self.basedir, "tmp/deploy/ipk/* ") + \
+ os.path.join(self.deploydir, "ipk/* ") + \
os.path.join(DEST, IPK_PUBLISH_DIR) + ";"
elif artifact == "toolchain":
command=command+"mkdir -p " + os.path.join(DEST, X86TC_PUBLISH_DIR) + ";"
command=command+"cp -R --no-dereference --preserve=links " + \
- os.path.join(self.basedir, "tmp/deploy/sdk/poky-eglibc-i686* ") + \
+ os.path.join(self.deploydir, "sdk/poky-eglibc-i686* ") + \
os.path.join(DEST, X86TC_PUBLISH_DIR) + ";"
command=command+"mkdir -p " + os.path.join(DEST, X8664TC_PUBLISH_DIR) + ";"
command=command+"cp -R --no-dereference --preserve=links " + \
- os.path.join(self.basedir, "tmp/deploy/sdk/poky-eglibc-x86_64* ") + \
+ os.path.join(self.deploydir, "sdk/poky-eglibc-x86_64* ") + \
os.path.join(DEST, X8664TC_PUBLISH_DIR) + ";"
elif artifact == "oe-toolchain":
command=command+"mkdir -p " + os.path.join(DEST, X86TC_PUBLISH_DIR) + ";"
command=command+"cp -R --no-dereference --preserve=links " + \
- os.path.join(self.basedir, "tmp/deploy/sdk/oecore-i686* ") + \
+ os.path.join(self.deploydir, "sdk/oecore-i686* ") + \
os.path.join(DEST, X86TC_PUBLISH_DIR) + ";"
command=command+"mkdir -p " + os.path.join(DEST, X8664TC_PUBLISH_DIR) + ";"
command=command+"cp -R --no-dereference --preserve=links " + \
- os.path.join(self.basedir, "tmp/deploy/sdk/oecore-x86_64* ") + \
+ os.path.join(self.deploydir, "sdk/oecore-x86_64* ") + \
os.path.join(DEST, X8664TC_PUBLISH_DIR) + ";"
elif "qemu" in artifact:
@@ -162,11 +166,11 @@ class PublishArtifacts(ShellCommand):
command=command+"mkdir -p " + DEST + "/" + QEMU_PUBLISH_DIR + "/qemu-tiny;"
if self.layerversion_core is not None and int(self.layerversion_core) > 2:
command=command+"cp -R --no-dereference --preserve=links " + \
- os.path.join(self.basedir, "tmp/deploy/images/qemux86/* ") + \
+ os.path.join(self.deploydir, "images/qemux86/* ") + \
" " + DEST + "/" + QEMU_PUBLISH_DIR + "/qemu-tiny;"
else:
command=command+"cp -R --no-dereference --preserve=links " + \
- os.path.join(self.basedir, "tmp/deploy/images/*") + \
+ os.path.join(self.deploydir, "images/*") + \
DEST + "/" + QEMU_PUBLISH_DIR + "/qemu-tiny;"
elif artifact == "conf":
artifact_name, deploy_image_dir = self.getDeployNames(artifact, buildername)
@@ -208,9 +212,9 @@ class PublishArtifacts(ShellCommand):
if "-lsb" in buildername:
artifact_name = artifact_name + "-lsb"
if self.layerversion_core is not None and int(self.layerversion_core) > 2:
- deploy_dir_image = os.path.join(os.path.join(self.basedir, "tmp/deploy/images/"), artifact)
+ deploy_dir_image = os.path.join(os.path.join(self.deploydir, "images/"), artifact)
else:
- deploy_dir_image = os.path.join(self.basedir, "tmp/deploy/images/")
+ deploy_dir_image = os.path.join(self.deploydir, "images/")
return artifact_name, deploy_dir_image
def describe(self, done=False):
--
1.9.0
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [yocto-autobuilder][PATCH v1 0/4] fixes for use with Angstrom
2014-05-08 16:44 [yocto-autobuilder][PATCH v1 0/4] fixes for use with Angstrom stefan
` (3 preceding siblings ...)
2014-05-08 16:44 ` [yocto-autobuilder][PATCH v1 4/4] GetDeployDir.py/PublishArtifacts.py: get deploy dir from bitbake stefan
@ 2014-05-15 13:03 ` Stefan Agner
2014-05-15 15:32 ` Flanagan, Elizabeth
2014-05-15 15:37 ` Flanagan, Elizabeth
5 siblings, 1 reply; 11+ messages in thread
From: Stefan Agner @ 2014-05-15 13:03 UTC (permalink / raw)
To: stefan; +Cc: yocto
Am 2014-05-08 18:44, schrieb stefan@agner.ch:
> From: Stefan Agner <stefan@agner.ch>
>
> Hi folks,
>
> We plan to make use of the Yocto Autobuilder at Toradex. I successfully
> deployed an installation, however since we distribute an Anstrom based
> BSP I had to adjust some files. With those patches and a custom layer
> configuration (not included since quite ugly) I'm able to build our BSP.
>
> Would be good to have those changes upstream. Especially the new way to
> preserve the order of builders is more generic, however maybe not yet
> perfect. I needed this especially since I build some other stuff using
> POBBC (plain old build bot configuration :-)).
>
> Just as a general question: What is planned with the autobuilder in
> general? Is there an integration planned with Toaster? As far as I can
> see, since the build directory is recreated each time, this is not
> really possible right now. It would need adjustment to the autobuilder
> to start the toaster web interface for each builder, and clean/restart
> builds in a way that doesn't interfere with Toaster. Any thoughts on
> this?
Any thoughts on this Patchset?
Today I had troubles with our builder. After removing the whole source
directory and restart the build, the autobuilder somehow checked out and
resetted the autobuilder git! (the dora branch was checked out, which I
tried to checkout from a source branch). So far I could not reconstruct
what exactly happend, but the builder must have been in the wrong
directory when issuing some commands... Ugly. Calls for sandboxes :-)
Anyway, I lost my custom master.cfg since git restored the version from
the dora branch (always remember to backup!)...
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [yocto-autobuilder][PATCH v1 0/4] fixes for use with Angstrom
2014-05-15 13:03 ` [yocto-autobuilder][PATCH v1 0/4] fixes for use with Angstrom Stefan Agner
@ 2014-05-15 15:32 ` Flanagan, Elizabeth
2014-05-17 13:31 ` Stefan Agner
0 siblings, 1 reply; 11+ messages in thread
From: Flanagan, Elizabeth @ 2014-05-15 15:32 UTC (permalink / raw)
To: Stefan Agner; +Cc: yocto@yoctoproject.org
Hey Stefan,
Sorry, this got caught somewhere in my email
On Thu, May 15, 2014 at 6:03 AM, Stefan Agner <stefan@agner.ch> wrote:
> Am 2014-05-08 18:44, schrieb stefan@agner.ch:
>> From: Stefan Agner <stefan@agner.ch>
>>
>> Hi folks,
>>
>> We plan to make use of the Yocto Autobuilder at Toradex. I successfully
>> deployed an installation, however since we distribute an Anstrom based
>> BSP I had to adjust some files. With those patches and a custom layer
>> configuration (not included since quite ugly) I'm able to build our BSP.
>>
if you want, we could include it in buildset-config.examples.
>> Would be good to have those changes upstream. Especially the new way to
>> preserve the order of builders is more generic, however maybe not yet
>> perfect. I needed this especially since I build some other stuff using
>> POBBC (plain old build bot configuration :-)).
>>
>> Just as a general question: What is planned with the autobuilder in
>> general? Is there an integration planned with Toaster?
At the time, no.
>> As far as I can
>> see, since the build directory is recreated each time, this is not
>> really possible right now. It would need adjustment to the autobuilder
>> to start the toaster web interface for each builder, and clean/restart
>> builds in a way that doesn't interfere with Toaster. Any thoughts on
>> this?
I've honestly not looked into it too much. What would be interesting
is utilizing buildbot slaves and the toaster front end.
>
> Any thoughts on this Patchset?
>
> Today I had troubles with our builder. After removing the whole source
> directory and restart the build, the autobuilder somehow checked out and
> resetted the autobuilder git! (the dora branch was checked out, which I
> tried to checkout from a source branch). So far I could not reconstruct
> what exactly happend, but the builder must have been in the wrong
> directory when issuing some commands... Ugly. Calls for sandboxes :-)
>
Ah. Please switch to master. There was a VERY VERY nasty bug that is
probably still in dora caused by the yoctogit fetcher. I'll look at
dora today and backport the patch.
> Anyway, I lost my custom master.cfg since git restored the version from
> the dora branch (always remember to backup!)...
Yeah, when I was debugging it, I ended up scripting my setup just to
figure out what was wrong.
--
Elizabeth Flanagan
Yocto Project
Build and Release
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [yocto-autobuilder][PATCH v1 0/4] fixes for use with Angstrom
2014-05-08 16:44 [yocto-autobuilder][PATCH v1 0/4] fixes for use with Angstrom stefan
` (4 preceding siblings ...)
2014-05-15 13:03 ` [yocto-autobuilder][PATCH v1 0/4] fixes for use with Angstrom Stefan Agner
@ 2014-05-15 15:37 ` Flanagan, Elizabeth
5 siblings, 0 replies; 11+ messages in thread
From: Flanagan, Elizabeth @ 2014-05-15 15:37 UTC (permalink / raw)
To: Stefan Agner; +Cc: yocto@yoctoproject.org
Ok, these look ok. I'll apply them and run them on dev. Expect
something tomorrow.
-b
On Thu, May 8, 2014 at 9:44 AM, <stefan@agner.ch> wrote:
> From: Stefan Agner <stefan@agner.ch>
>
> Hi folks,
>
> We plan to make use of the Yocto Autobuilder at Toradex. I successfully
> deployed an installation, however since we distribute an Anstrom based
> BSP I had to adjust some files. With those patches and a custom layer
> configuration (not included since quite ugly) I'm able to build our BSP.
>
> Would be good to have those changes upstream. Especially the new way to
> preserve the order of builders is more generic, however maybe not yet
> perfect. I needed this especially since I build some other stuff using
> POBBC (plain old build bot configuration :-)).
>
> Just as a general question: What is planned with the autobuilder in
> general? Is there an integration planned with Toaster? As far as I can
> see, since the build directory is recreated each time, this is not
> really possible right now. It would need adjustment to the autobuilder
> to start the toaster web interface for each builder, and clean/restart
> builds in a way that doesn't interfere with Toaster. Any thoughts on
> this?
>
> --
> Stefan
>
> Stefan Agner (4):
> GetDistroVersion.py support for Angstrom distro version
> README: add high level overview, fix build slave description
> master.py/botmaster.py: use builders list for builders order
> GetDeployDir.py/PublishArtifacts.py: get deploy dir from bitbake
>
> README | 8 ++--
> README-NEW-AUTOBUILDER | 11 +++++
> .../site-packages/autobuilder/Autobuilder.py | 17 ++++----
> .../autobuilder/buildsteps/GetDeployDir.py | 47 +++++++++++++++++++++
> .../autobuilder/buildsteps/GetDistroVersion.py | 7 +++-
> .../autobuilder/buildsteps/PublishArtifacts.py | 48 ++++++++++++----------
> .../buildbot/process/botmaster.py | 3 +-
> .../buildbot/status/master.py | 12 +-----
> 8 files changed, 106 insertions(+), 47 deletions(-)
> create mode 100644 lib/python2.7/site-packages/autobuilder/buildsteps/GetDeployDir.py
>
> --
> 1.9.0
>
--
Elizabeth Flanagan
Yocto Project
Build and Release
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [yocto-autobuilder][PATCH v1 4/4] GetDeployDir.py/PublishArtifacts.py: get deploy dir from bitbake
2014-05-08 16:44 ` [yocto-autobuilder][PATCH v1 4/4] GetDeployDir.py/PublishArtifacts.py: get deploy dir from bitbake stefan
@ 2014-05-16 17:11 ` Flanagan, Elizabeth
2014-05-17 13:16 ` Stefan Agner
0 siblings, 1 reply; 11+ messages in thread
From: Flanagan, Elizabeth @ 2014-05-16 17:11 UTC (permalink / raw)
To: Stefan Agner; +Cc: yocto@yoctoproject.org
Ok, so looking at this a bit more and I think we need to look at how
we set up the deploydir in PublishArtifacts a bit more.
I think what we can do here is pull the functionality that we have in
getDeployNames out, and put it into GetDeployDir (layerversion here
matters as the default deploy for oe-core changes at LAYERVERSION_core
=3) . So, yeah, if you could resubmit that I think we can pull the
last patch in. The other three are under test right now.
Thanks,
-b
On Thu, May 8, 2014 at 9:44 AM, <stefan@agner.ch> wrote:
> From: Stefan Agner <stefan@agner.ch>
>
> Since the deploy dir is configureable (also through TMPDIR), we
> need to have a more generic variant to get that path. Also the
> Ångstrom distribution adds "-eglibc" to the TMPDIR. Hence, the
> safest way to get the deployment dir is to parse buildbots
> environment.
>
> Signed-off-by: Stefan Agner <stefan@agner.ch>
> ---
> .../autobuilder/buildsteps/GetDeployDir.py | 47 +++++++++++++++++++++
> .../autobuilder/buildsteps/PublishArtifacts.py | 48 ++++++++++++----------
> 2 files changed, 73 insertions(+), 22 deletions(-)
> create mode 100644 lib/python2.7/site-packages/autobuilder/buildsteps/GetDeployDir.py
>
> diff --git a/lib/python2.7/site-packages/autobuilder/buildsteps/GetDeployDir.py b/lib/python2.7/site-packages/autobuilder/buildsteps/GetDeployDir.py
> new file mode 100644
> index 0000000..944fcf0
> --- /dev/null
> +++ b/lib/python2.7/site-packages/autobuilder/buildsteps/GetDeployDir.py
> @@ -0,0 +1,47 @@
> +'''
> +Created on Mai 8, 2014
> +
> +__author__ = "Stefan Agner"
> +__copyright__ = "Copyright 2014, Toradex AG"
> +__credits__ = ["Stefan Agner"]
> +__license__ = "GPL"
> +__version__ = "2.0"
> +__maintainer__ = "Stefan Agner"
> +__email__ = "stefan@agner.ch"
> +'''
> +from buildbot.steps.shell import ShellCommand
> +from buildbot.status import progress
> +from buildbot.status.results import SUCCESS, FAILURE, WARNINGS
> +from buildbot.process.properties import WithProperties
> +from twisted.python import log
> +from autobuilder.config import *
> +
> +class GetDeployDir(ShellCommand):
> + haltOnFailure = False
> + flunkOnFailure = True
> + name = "GetDeployDir"
> + def __init__(self, factory, argdict=None, **kwargs):
> + for k, v in argdict.iteritems():
> + setattr(self, k, v)
> + self.description = "Get Deploy Directory"
> + self.deploydir = None
> + ShellCommand.__init__(self, **kwargs)
> +
> + def start(self):
> + cmd = '. ./oe-init-build-env; bitbake -e | grep "^DEPLOY_DIR="'
> + self.command = cmd
> + ShellCommand.start(self)
> +
> + def commandComplete(self, cmd):
> + if cmd.didFail():
> + return
> + result = cmd.logs['stdio'].getText()
> + if "=" not in result:
> + self.finished(FAILURE)
> + param, value = result.split("=")
> + deploydir = value.replace('"', '').strip()
> + self.setProperty('deploydir', deploydir, "Setting Deploy Directory")
> + self.finished(SUCCESS)
> +
> + def getText(self, cmd, results):
> + return ShellCommand.getText(self, cmd, results)
> diff --git a/lib/python2.7/site-packages/autobuilder/buildsteps/PublishArtifacts.py b/lib/python2.7/site-packages/autobuilder/buildsteps/PublishArtifacts.py
> index ebc761f..303df36 100644
> --- a/lib/python2.7/site-packages/autobuilder/buildsteps/PublishArtifacts.py
> +++ b/lib/python2.7/site-packages/autobuilder/buildsteps/PublishArtifacts.py
> @@ -19,10 +19,10 @@ class PublishArtifacts(ShellCommand):
>
> haltOnFailure = False
> flunkOnFailure = True
> - name = "Publishing Artifacts"
> + name = "PublishArtifacts"
> + description = "Publishing Artifacts"
> def __init__(self, factory, argdict=None, **kwargs):
> self.factory = factory
> - self.description = "Publishing Artifacts"
> self.slavedir=os.path.join(os.path.join(YOCTO_ABBASE, "yocto-slave"))
> for k, v in argdict.iteritems():
> if type(v) is bool:
> @@ -42,10 +42,14 @@ class PublishArtifacts(ShellCommand):
> self.layerversion_yoctobsp = self.getProperty("layerversion_yoctobsp")
> self.layerversion_yocto = self.getProperty("layerversion_yocto")
> self.layerversion_core = self.getProperty("layerversion_core")
> + self.deploydir = self.getProperty("deploydir")
> log.msg(layerversion_yoctobsp)
> - self.basedir=os.path.join(os.path.join(
> - self.slavedir, buildername),
> - "build/build/")
> + self.basedir = os.path.join(self.slavedir, buildername, "build/build/")
> +
> + # Deploydir might not be set in case the step did not run, fallback to default
> + if self.deploydir is None:
> + self.deploydir = os.path.join(self.basedir, "tmp/deploy/")
> +
> command=""
> DATESTAMP=datetime.datetime.now().strftime("%Y%m%d")
> if str(os.environ.get('PUBLISH_BUILDS')) == "True":
> @@ -70,17 +74,17 @@ class PublishArtifacts(ShellCommand):
> if artifact == "adt-installer":
> command=command+"mkdir -p " + os.path.join(DEST, ADT_INST_PUBLISH_DIR) + ";"
> command=command+"cp -R --no-dereference --preserve=links " + \
> - os.path.join(self.basedir, "tmp/deploy/sdk/") + \
> + os.path.join(self.deploydir, "sdk/") + \
> "*adt* " + os.path.join(DEST, ADT_INST_PUBLISH_DIR) + ";"
> elif artifact == "adt-installer-QA":
> command=command+"mkdir -p " + os.path.join(DEST, ADTQA_INST_PUBLISH_DIR) + ";"
> command=command+"cp -R --no-dereference --preserve=links " + \
> - os.path.join(self.basedir, "tmp/deploy/sdk/") + \
> + os.path.join(self.deploydir, "sdk/") + \
> "*adt* " + os.path.join(DEST, ADTQA_INST_PUBLISH_DIR)+ ";"
> elif artifact == "adtrepo-dev":
> adt_dev_dest= os.environ.get("ADTREPO_DEV_PATH") + "/" + distroversion + "-" + got_revision_poky + '-' + self.getProperty("branch_poky")
> command=command+"mkdir -p " + adt_dev_dest + "/adt-ipk;"
> - command=command+"rsync -av " + os.path.join(self.basedir, "tmp/deploy/ipk/") + " " + adt_dev_dest + "/adt-ipk;"
> + command=command+"rsync -av " + os.path.join(self.deploydir, "ipk/") + " " + adt_dev_dest + "/adt-ipk;"
> command=command+"rm -rf " + adt_dev_dest + "/rootfs; mkdir -p " + adt_dev_dest + "/rootfs;"
> command=command+"for x in `ls " + DEST + "/machines/qemu/|grep -v tiny`; do ln -s " + DEST + "/machines/qemu/$x " + adt_dev_dest + "/rootfs/$x; done;"
> if self.layerversion_yocto is not None and int(self.layerversion_yocto) < 2:
> @@ -101,49 +105,49 @@ class PublishArtifacts(ShellCommand):
> command=command+"mkdir -p " + DEST + "/" + BA_PUBLISH_DIR + ";"
> if self.layerversion_core is not None and int(self.layerversion_core) > 2:
> command=command+"cp -R --no-dereference --preserve=links " + \
> - os.path.join(self.basedir, "tmp/deploy/images/qemux86-64/*.zip") + \
> + os.path.join(self.deploydir, "images/qemux86-64/*.zip") + \
> " " + DEST + "/" + BA_PUBLISH_DIR + ";"
> else:
> command=command+"cp -R --no-dereference --preserve=links " + \
> - os.path.join(self.basedir, "tmp/deploy/images/*.zip") + \
> + os.path.join(self.deploydir, "images/*.zip") + \
> " " + DEST + "/" + BA_PUBLISH_DIR + ";"
> elif artifact == "buildtools-tarball":
> command=command+"mkdir -p " + DEST + "/buildtools;"
> command=command+"cp -R --no-dereference --preserve=links " + \
> - os.path.join(self.basedir, "tmp/deploy/sdk/*.sh") + \
> + os.path.join(self.deploydir, "sdk/*.sh") + \
> " " + DEST + "/buildtools;"
> elif artifact == "rpm":
> command=command+"mkdir -p " + os.path.join(DEST, RPM_PUBLISH_DIR) + ";"
> command=command+"cp -R --no-dereference --preserve=links " + \
> - os.path.join(self.basedir, "tmp/deploy/rpm/* ") + \
> + os.path.join(self.deploydir, "rpm/* ") + \
> os.path.join(DEST, RPM_PUBLISH_DIR) + ";"
> elif artifact == "deb":
> command=command+"mkdir -p " + os.path.join(DEST, DEB_PUBLISH_DIR) + ";"
> command=command+"cp -R --no-dereference --preserve=links " + \
> - os.path.join(self.basedir, "tmp/deploy/deb/* ") + \
> + os.path.join(self.deploydir, "deb/* ") + \
> os.path.join(DEST, DEB_PUBLISH_DIR) + ";"
> elif artifact == "ipk":
> command=command+"mkdir -p " + os.path.join(DEST, IPK_PUBLISH_DIR) + ";"
> command=command+"cp -R --no-dereference --preserve=links " + \
> - os.path.join(self.basedir, "tmp/deploy/ipk/* ") + \
> + os.path.join(self.deploydir, "ipk/* ") + \
> os.path.join(DEST, IPK_PUBLISH_DIR) + ";"
> elif artifact == "toolchain":
> command=command+"mkdir -p " + os.path.join(DEST, X86TC_PUBLISH_DIR) + ";"
> command=command+"cp -R --no-dereference --preserve=links " + \
> - os.path.join(self.basedir, "tmp/deploy/sdk/poky-eglibc-i686* ") + \
> + os.path.join(self.deploydir, "sdk/poky-eglibc-i686* ") + \
> os.path.join(DEST, X86TC_PUBLISH_DIR) + ";"
> command=command+"mkdir -p " + os.path.join(DEST, X8664TC_PUBLISH_DIR) + ";"
> command=command+"cp -R --no-dereference --preserve=links " + \
> - os.path.join(self.basedir, "tmp/deploy/sdk/poky-eglibc-x86_64* ") + \
> + os.path.join(self.deploydir, "sdk/poky-eglibc-x86_64* ") + \
> os.path.join(DEST, X8664TC_PUBLISH_DIR) + ";"
> elif artifact == "oe-toolchain":
> command=command+"mkdir -p " + os.path.join(DEST, X86TC_PUBLISH_DIR) + ";"
> command=command+"cp -R --no-dereference --preserve=links " + \
> - os.path.join(self.basedir, "tmp/deploy/sdk/oecore-i686* ") + \
> + os.path.join(self.deploydir, "sdk/oecore-i686* ") + \
> os.path.join(DEST, X86TC_PUBLISH_DIR) + ";"
> command=command+"mkdir -p " + os.path.join(DEST, X8664TC_PUBLISH_DIR) + ";"
> command=command+"cp -R --no-dereference --preserve=links " + \
> - os.path.join(self.basedir, "tmp/deploy/sdk/oecore-x86_64* ") + \
> + os.path.join(self.deploydir, "sdk/oecore-x86_64* ") + \
> os.path.join(DEST, X8664TC_PUBLISH_DIR) + ";"
>
> elif "qemu" in artifact:
> @@ -162,11 +166,11 @@ class PublishArtifacts(ShellCommand):
> command=command+"mkdir -p " + DEST + "/" + QEMU_PUBLISH_DIR + "/qemu-tiny;"
> if self.layerversion_core is not None and int(self.layerversion_core) > 2:
> command=command+"cp -R --no-dereference --preserve=links " + \
> - os.path.join(self.basedir, "tmp/deploy/images/qemux86/* ") + \
> + os.path.join(self.deploydir, "images/qemux86/* ") + \
> " " + DEST + "/" + QEMU_PUBLISH_DIR + "/qemu-tiny;"
> else:
> command=command+"cp -R --no-dereference --preserve=links " + \
> - os.path.join(self.basedir, "tmp/deploy/images/*") + \
> + os.path.join(self.deploydir, "images/*") + \
> DEST + "/" + QEMU_PUBLISH_DIR + "/qemu-tiny;"
> elif artifact == "conf":
> artifact_name, deploy_image_dir = self.getDeployNames(artifact, buildername)
> @@ -208,9 +212,9 @@ class PublishArtifacts(ShellCommand):
> if "-lsb" in buildername:
> artifact_name = artifact_name + "-lsb"
> if self.layerversion_core is not None and int(self.layerversion_core) > 2:
> - deploy_dir_image = os.path.join(os.path.join(self.basedir, "tmp/deploy/images/"), artifact)
> + deploy_dir_image = os.path.join(os.path.join(self.deploydir, "images/"), artifact)
> else:
> - deploy_dir_image = os.path.join(self.basedir, "tmp/deploy/images/")
> + deploy_dir_image = os.path.join(self.deploydir, "images/")
> return artifact_name, deploy_dir_image
>
> def describe(self, done=False):
> --
> 1.9.0
>
--
Elizabeth Flanagan
Yocto Project
Build and Release
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [yocto-autobuilder][PATCH v1 4/4] GetDeployDir.py/PublishArtifacts.py: get deploy dir from bitbake
2014-05-16 17:11 ` Flanagan, Elizabeth
@ 2014-05-17 13:16 ` Stefan Agner
0 siblings, 0 replies; 11+ messages in thread
From: Stefan Agner @ 2014-05-17 13:16 UTC (permalink / raw)
To: Flanagan, Elizabeth; +Cc: yocto
Hi Beth,
Am 2014-05-16 19:11, schrieb Flanagan, Elizabeth:
> Ok, so looking at this a bit more and I think we need to look at how
> we set up the deploydir in PublishArtifacts a bit more.
>
> I think what we can do here is pull the functionality that we have in
> getDeployNames out, and put it into GetDeployDir (layerversion here
> matters as the default deploy for oe-core changes at LAYERVERSION_core
> =3) . So, yeah, if you could resubmit that I think we can pull the
> last patch in. The other three are under test right now.
Sounds reasonable, I agree. Note that, I will be in vacation for the
next three weeks, hence it will be June until I will be able to resubmit
that...
--
Stefan
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [yocto-autobuilder][PATCH v1 0/4] fixes for use with Angstrom
2014-05-15 15:32 ` Flanagan, Elizabeth
@ 2014-05-17 13:31 ` Stefan Agner
0 siblings, 0 replies; 11+ messages in thread
From: Stefan Agner @ 2014-05-17 13:31 UTC (permalink / raw)
To: Flanagan, Elizabeth; +Cc: yocto
Hi Beth,
Am 2014-05-15 17:32, schrieb Flanagan, Elizabeth:
>> Today I had troubles with our builder. After removing the whole source
>> directory and restart the build, the autobuilder somehow checked out and
>> resetted the autobuilder git! (the dora branch was checked out, which I
>> tried to checkout from a source branch). So far I could not reconstruct
>> what exactly happend, but the builder must have been in the wrong
>> directory when issuing some commands... Ugly. Calls for sandboxes :-)
>>
>
> Ah. Please switch to master. There was a VERY VERY nasty bug that is
> probably still in dora caused by the yoctogit fetcher. I'll look at
> dora today and backport the patch.
Actually I was running master of Autobuilder. However, somehow
Autobuilder checked the branch dora out (its the branch I tried to
build, hence all my layers had "dora" as branch name).
>
>> Anyway, I lost my custom master.cfg since git restored the version from
>> the dora branch (always remember to backup!)...
>
> Yeah, when I was debugging it, I ended up scripting my setup just to
> figure out what was wrong.
Inbetween I figured out what happened: A git repository (fsl-arm-extra)
was somehow broken in my download folder. Hence the clone from the
download folder to the source directory failed. However, the git fetch
was done anyway, but since the clone failed that folder was not a valid
git repository. But since the yocto-slave lives under the Yocto
Autobuilder repository, git checked out the dora branch of the Yocto
Autobuilder repository...
Its crucial to check the return status of the git clone command and
don't call further commands if clone fails. If those two commands would
be two BuildBot steps, wouldn't it do this automatically?
First command:
git clone -s -n
/tmp/yocto-autobuilder/git/mirror/git.yoctoproject.org/meta-fsl-arm/ .
in dir
/build/linuxdev/yocto-autobuilder/yocto-slave/toradex/source/git://git.yoctoproject.org/meta-fsl-arm
(timeout 100000 secs)
watching logfiles {}
argv: ['git', 'clone', '-s', '-n',
'/tmp/yocto-autobuilder/git/mirror/git.yoctoproject.org/meta-fsl-arm/',
'.']
Output:
Cloning into '.'...
error: refs/heads/master does not point to a valid object!
error: refs/remotes/origin/1.4_M3 does not point to a valid object!
error: refs/remotes/origin/1.4_M5 does not point to a valid object!
error: refs/remotes/origin/danny does not point to a valid object!
error: refs/remotes/origin/danny-next does not point to a valid object!
error: refs/remotes/origin/denzil does not point to a valid object!
error: refs/remotes/origin/dora does not point to a valid object!
error: refs/remotes/origin/dora-next does not point to a valid object!
error: refs/remotes/origin/dylan does not point to a valid object!
error: refs/remotes/origin/dylan-next does not point to a valid object!
error: refs/tags/1.2 does not point to a valid object!
error: refs/tags/1.2-rc1 does not point to a valid object!
error: refs/tags/1.3 does not point to a valid object!
error: refs/tags/1.4 does not point to a valid object!
error: refs/tags/1.5 does not point to a valid object!
done.
error: Trying to write ref HEAD with nonexistent object
c91ef2d2a12cd51af20011a4de8d9438e2d4890e
fatal: Cannot update the ref 'HEAD'.
fatal: The remote end hung up unexpectedly
Then, the second command:
git fetch -t --prune git://git.yoctoproject.org/meta-fsl-arm
+refs/heads/dora:refs/remotes/dora
in dir
/build/linuxdev/yocto-autobuilder/yocto-slave/toradex/source/git://git.yoctoproject.org/meta-fsl-arm
(timeout 100000 secs)
watching logfiles {}
argv: ['git', 'fetch', '-t', '--prune',
'git://git.yoctoproject.org/meta-fsl-arm',
'+refs/heads/dora:refs/remotes/dora']
...
This resetted my head of the Yocto Autobuilder to dora...
--
Stefan
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2014-05-17 13:32 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-05-08 16:44 [yocto-autobuilder][PATCH v1 0/4] fixes for use with Angstrom stefan
2014-05-08 16:44 ` [yocto-autobuilder][PATCH v1 1/4] GetDistroVersion.py support for Angstrom distro version stefan
2014-05-08 16:44 ` [yocto-autobuilder][PATCH v1 2/4] README: add high level overview, fix build slave description stefan
2014-05-08 16:44 ` [yocto-autobuilder][PATCH v1 3/4] master.py/botmaster.py: use builders list for builders order stefan
2014-05-08 16:44 ` [yocto-autobuilder][PATCH v1 4/4] GetDeployDir.py/PublishArtifacts.py: get deploy dir from bitbake stefan
2014-05-16 17:11 ` Flanagan, Elizabeth
2014-05-17 13:16 ` Stefan Agner
2014-05-15 13:03 ` [yocto-autobuilder][PATCH v1 0/4] fixes for use with Angstrom Stefan Agner
2014-05-15 15:32 ` Flanagan, Elizabeth
2014-05-17 13:31 ` Stefan Agner
2014-05-15 15:37 ` Flanagan, Elizabeth
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.