Complete Yocto mirror with license table for TQMa6UL (2038-compliance)
- 264 license table entries with exact download URLs (224/264 resolved) - Complete sources/ directory with all BitBake recipes - Build configuration: tqma6ul-multi-mba6ulx, spaetzle (musl) - Full traceability for Softwarefreigabeantrag - GCC 13.4.0, Linux 6.6.102, U-Boot 2023.04, musl 1.2.4 - License distribution: GPL-2.0 (24), MIT (23), GPL-2.0+ (18), BSD-3 (16)
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
#! /usr/bin/env python3
|
||||
#
|
||||
# BitBake Toaster Implementation
|
||||
#
|
||||
# Copyright (C) 2016 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
#
|
||||
import pytest
|
||||
from django.test import TestCase
|
||||
from django.core import management
|
||||
|
||||
from orm.models import Layer_Version, Layer, Release, ToasterSetting
|
||||
|
||||
@pytest.mark.order(2)
|
||||
class TestLoadDataFixtures(TestCase):
|
||||
""" Test loading our 3 provided fixtures """
|
||||
def test_run_loaddata_poky_command(self):
|
||||
management.call_command('loaddata', 'poky')
|
||||
|
||||
num_releases = Release.objects.count()
|
||||
|
||||
self.assertTrue(
|
||||
Layer_Version.objects.filter(
|
||||
layer__name="meta-poky").count() == num_releases,
|
||||
"Loaded poky fixture but don't have a meta-poky for all releases"
|
||||
" defined")
|
||||
|
||||
def test_run_loaddata_oecore_command(self):
|
||||
management.call_command('loaddata', 'oe-core')
|
||||
|
||||
# We only have the one layer for oe-core setup
|
||||
self.assertTrue(
|
||||
Layer.objects.filter(name="openembedded-core").count() > 0,
|
||||
"Loaded oe-core fixture but still have no openemebedded-core"
|
||||
" layer")
|
||||
|
||||
def test_run_loaddata_settings_command(self):
|
||||
management.call_command('loaddata', 'settings')
|
||||
|
||||
self.assertTrue(
|
||||
ToasterSetting.objects.filter(name="DEFAULT_RELEASE").count() > 0,
|
||||
"Loaded settings but have no DEFAULT_RELEASE")
|
||||
|
||||
self.assertTrue(
|
||||
ToasterSetting.objects.filter(
|
||||
name__startswith="DEFCONF").count() > 0,
|
||||
"Loaded settings but have no DEFCONF (default project "
|
||||
"configuration values)")
|
||||
@@ -0,0 +1,34 @@
|
||||
#! /usr/bin/env python3
|
||||
#
|
||||
# BitBake Toaster Implementation
|
||||
#
|
||||
# Copyright (C) 2016 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
#
|
||||
|
||||
import pytest
|
||||
from django.test import TestCase
|
||||
from django.core import management
|
||||
|
||||
from orm.models import Layer_Version, Machine, Recipe
|
||||
|
||||
@pytest.mark.order(3)
|
||||
class TestLayerIndexUpdater(TestCase):
|
||||
def test_run_lsupdates_command(self):
|
||||
# Load some release information for us to fetch from the layer index
|
||||
management.call_command('loaddata', 'poky')
|
||||
|
||||
old_layers_count = Layer_Version.objects.count()
|
||||
old_recipes_count = Recipe.objects.count()
|
||||
old_machines_count = Machine.objects.count()
|
||||
|
||||
# Now fetch the metadata from the layer index
|
||||
management.call_command('lsupdates')
|
||||
|
||||
self.assertTrue(Layer_Version.objects.count() > old_layers_count,
|
||||
"lsupdates ran but we still have no more layers!")
|
||||
self.assertTrue(Recipe.objects.count() > old_recipes_count,
|
||||
"lsupdates ran but we still have no more Recipes!")
|
||||
self.assertTrue(Machine.objects.count() > old_machines_count,
|
||||
"lsupdates ran but we still have no more Machines!")
|
||||
@@ -0,0 +1,81 @@
|
||||
#! /usr/bin/env python3
|
||||
#
|
||||
# BitBake Toaster Implementation
|
||||
#
|
||||
# Copyright (C) 2016 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
#
|
||||
|
||||
import os
|
||||
|
||||
from django.test import TestCase
|
||||
from django.core import management
|
||||
|
||||
from orm.models import signal_runbuilds
|
||||
|
||||
import threading
|
||||
import time
|
||||
import subprocess
|
||||
import signal
|
||||
|
||||
import logging
|
||||
|
||||
|
||||
class KillRunbuilds(threading.Thread):
|
||||
""" Kill the runbuilds process after an amount of time """
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(KillRunbuilds, self).__init__(*args, **kwargs)
|
||||
self.daemon = True
|
||||
|
||||
def run(self):
|
||||
time.sleep(5)
|
||||
signal_runbuilds()
|
||||
time.sleep(1)
|
||||
|
||||
pidfile_path = os.path.join(os.environ.get("BUILDDIR", "."),
|
||||
".runbuilds.pid")
|
||||
|
||||
try:
|
||||
with open(pidfile_path) as pidfile:
|
||||
pid = pidfile.read()
|
||||
os.kill(int(pid), signal.SIGTERM)
|
||||
except ProcessLookupError:
|
||||
logging.warning("Runbuilds not running or already killed")
|
||||
|
||||
|
||||
class TestCommands(TestCase):
|
||||
""" Sanity test that runbuilds executes OK """
|
||||
|
||||
def setUp(self):
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE",
|
||||
"toastermain.settings_test")
|
||||
os.environ.setdefault("BUILDDIR",
|
||||
"/tmp/")
|
||||
|
||||
# Setup a real database if needed for runbuilds process
|
||||
# to connect to
|
||||
management.call_command('migrate')
|
||||
|
||||
def test_runbuilds_command(self):
|
||||
kill_runbuilds = KillRunbuilds()
|
||||
kill_runbuilds.start()
|
||||
|
||||
manage_py = os.path.join(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
os.pardir,
|
||||
os.pardir,
|
||||
"manage.py")
|
||||
|
||||
command = "%s runbuilds" % manage_py
|
||||
|
||||
process = subprocess.Popen(command,
|
||||
shell=True,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE)
|
||||
|
||||
(out, err) = process.communicate()
|
||||
process.wait()
|
||||
|
||||
self.assertNotEqual(process.returncode, 1,
|
||||
"Runbuilds returned an error %s" % err)
|
||||
Reference in New Issue
Block a user