mirror of
https://github.com/drasko/codezero.git
synced 2026-01-12 02:43:15 +01:00
Created a Linux builder that takes a container object as its parameter. Build of linux kernel will be coordinated by input from this container parameter
54 lines
1.6 KiB
Python
Executable File
54 lines
1.6 KiB
Python
Executable File
#! /usr/bin/env python2.6
|
|
# -*- mode: python; coding: utf-8; -*-
|
|
#
|
|
# Codezero -- a microkernel for embedded systems.
|
|
#
|
|
# Copyright © 2009 B Labs Ltd
|
|
#
|
|
import os, sys, shelve
|
|
from os.path import join
|
|
|
|
PROJRELROOT = '../../'
|
|
|
|
SCRIPTROOT = os.path.abspath(os.path.dirname("."))
|
|
sys.path.append(os.path.abspath(PROJRELROOT))
|
|
|
|
from config.projpaths import *
|
|
from config.configuration import *
|
|
|
|
LINUX_KERNEL_BUILDDIR = join(BUILDDIR, os.path.relpath(LINUX_KERNELDIR, PROJROOT))
|
|
|
|
class LinuxBuilder:
|
|
@staticmethod
|
|
def build_linux(container):
|
|
print '\nBuilding the linux kernel...'
|
|
|
|
# Create linux kernel build directory path
|
|
cont_builddir = join(BUILDDIR, "cont" + str(container.id))
|
|
LINUX_KERNEL_BUILDDIR = join(cont_builddir, \
|
|
os.path.relpath(LINUX_KERNELDIR, \
|
|
PROJROOT))
|
|
|
|
os.chdir(LINUX_KERNELDIR)
|
|
if not os.path.exists(LINUX_KERNEL_BUILDDIR):
|
|
os.makedirs(LINUX_KERNEL_BUILDDIR)
|
|
os.system("make defconfig ARCH=arm O=" + LINUX_KERNEL_BUILDDIR)
|
|
os.system("make ARCH=arm " + \
|
|
"CROSS_COMPILE=arm-none-linux-gnueabi- O=" + \
|
|
LINUX_KERNEL_BUILDDIR)
|
|
|
|
@staticmethod
|
|
def clean(self):
|
|
if os.path.exists(LINUX_KERNEL_BUILDDIR):
|
|
shutil.rmtree(LINUX_KERNEL_BUILDDIR)
|
|
|
|
if __name__ == "__main__":
|
|
container = Container()
|
|
container.id = 0
|
|
if len(sys.argv) == 1:
|
|
LinuxBuilder.build_linux(container)
|
|
elif "clean" == sys.argv[1]:
|
|
LinuxBuilder.clean()
|
|
else:
|
|
print " Usage: %s [clean]" % (sys.argv[0])
|