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,  <ste...@agner.ch> wrote:
> From: Stefan Agner <ste...@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 <ste...@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__ = "ste...@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
-- 
_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto

Reply via email to