bitbake: toaster: use force_bytes to display non-ascii project names

When user enters a non-ascii character in the project
name of toaster, the build doesn't get triggered.
Use force_bytes to fix this.

Also deal with non-ascii project names when logging the
build request in runbuilds.

[YOCTO #9071]

(Bitbake rev: b6141c4d170885d3bdf63074afcb1e41fde0a8f0)

Signed-off-by: Sujith H <sujith.h@gmail.com>
Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Sujith H 2016-03-08 18:09:02 +00:00 committed by Richard Purdie
parent aebc22dbfa
commit cc74a8ae26
3 changed files with 8 additions and 3 deletions

View File

@ -47,7 +47,7 @@ class Command(NoArgsCommand):
logger.debug("runbuilds: No build env") logger.debug("runbuilds: No build env")
return return
logger.debug("runbuilds: starting build %s, environment %s" % (br, bec.be)) logger.debug("runbuilds: starting build %s, environment %s" % (str(br).decode('utf-8'), bec.be))
# write the build identification variable # write the build identification variable
BRVariable.objects.create(req = br, name="TOASTER_BRBE", value="%d:%d" % (br.pk, bec.be.pk)) BRVariable.objects.create(req = br, name="TOASTER_BRBE", value="%d:%d" % (br.pk, bec.be.pk))

View File

@ -1,5 +1,7 @@
from __future__ import unicode_literals
from django.db import models from django.db import models
from django.core.validators import MaxValueValidator, MinValueValidator from django.core.validators import MaxValueValidator, MinValueValidator
from django.utils.encoding import force_bytes
from orm.models import Project, ProjectLayer, ProjectVariable, ProjectTarget, Build, Layer_Version from orm.models import Project, ProjectLayer, ProjectVariable, ProjectTarget, Build, Layer_Version
# a BuildEnvironment is the equivalent of the "build/" directory on the localhost # a BuildEnvironment is the equivalent of the "build/" directory on the localhost
@ -94,7 +96,7 @@ class BuildRequest(models.Model):
return self.brvariable_set.get(name="MACHINE").value return self.brvariable_set.get(name="MACHINE").value
def __str__(self): def __str__(self):
return "%s %s" % (self.project, self.get_state_display()) return force_bytes('%s %s' % (self.project, self.get_state_display()))
# These tables specify the settings for running an actual build. # These tables specify the settings for running an actual build.
# They MUST be kept in sync with the tables in orm.models.Project* # They MUST be kept in sync with the tables in orm.models.Project*

View File

@ -19,9 +19,12 @@
# with this program; if not, write to the Free Software Foundation, Inc., # with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
from __future__ import unicode_literals
from django.db import models, IntegrityError from django.db import models, IntegrityError
from django.db.models import F, Q, Avg, Max, Sum from django.db.models import F, Q, Avg, Max, Sum
from django.utils import timezone from django.utils import timezone
from django.utils.encoding import force_bytes
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
@ -1614,7 +1617,7 @@ class LogMessage(models.Model):
lineno = models.IntegerField(null=True) lineno = models.IntegerField(null=True)
def __str__(self): def __str__(self):
return "%s %s %s" % (self.get_level_display(), self.message, self.build) return force_bytes('%s %s %s' % (self.get_level_display(), self.message, self.build))
def invalidate_cache(**kwargs): def invalidate_cache(**kwargs):
from django.core.cache import cache from django.core.cache import cache