Best Python code snippet using autotest_python
make_ramboot_initrd_test.py
Source:make_ramboot_initrd_test.py
1#!/usr/bin/python2#3# Copyright (C) 2011 Google Inc.4#5# This program is free software; you can redistribute it and/or modify6# it under the terms of the GNU General Public License as published by7# the Free Software Foundation; either version 2 of the License, or8# (at your option) any later version.9#10# This program is distributed in the hope that it will be useful, but11# WITHOUT ANY WARRANTY; without even the implied warranty of12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU13# General Public License for more details.14#15# You should have received a copy of the GNU General Public License16# along with this program; if not, write to the Free Software17# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA18# 02110-1301, USA.19"""Tests for make_ramboot_initrd."""20import os21import platform22import shutil23import tempfile24import unittest25import mox26import make_ramboot_initrd as mkinitrd27class MakeRambootInitrdTest(unittest.TestCase):28 SRCDIR = os.environ.get("SRCDIR", ".")29 MOVETORAM = os.path.join(SRCDIR, "test", "testdata", "movetoram")30 def setUp(self):31 self.mox = mox.Mox()32 self.conf_dir = tempfile.mkdtemp()33 self.install_dir = tempfile.mkdtemp()34 self.test_filename = "test"35 self.test_file_contents = "test"36 self.test_filepath = os.path.join(self.conf_dir, self.test_filename)37 self.dirs_to_remove = [self.conf_dir, self.install_dir]38 os.makedirs(os.path.join(self.conf_dir, "scripts", "local-bottom"))39 test_file = open(self.test_filepath, "w")40 test_file.write(self.test_file_contents)41 test_file.close()42 os.chmod(self.conf_dir, 0755)43 os.chmod(self.test_filepath, 0644)44 self.temp_dir, self.new_conf_dir = mkinitrd.CreateTempDir(self.conf_dir)45 self.dirs_to_remove.append(self.temp_dir)46 def tearDown(self):47 self.mox.UnsetStubs()48 self.mox.ResetAll()49 for d in self.dirs_to_remove:50 if d and os.path.isdir(d):51 shutil.rmtree(d)52 def testCreateTempDirCopiesFiles(self):53 self.assertTrue(os.path.isdir(self.temp_dir))54 self.assertTrue(os.path.isdir(self.new_conf_dir))55 filename = os.path.join(self.new_conf_dir, self.test_filename)56 self.assertTrue(os.path.isfile(filename))57 f = open(filename, "r")58 contents = f.read(5)59 self.assertEqual(self.test_file_contents, contents)60 f.close()61 def testCreateTempDirPermissions(self):62 # Ensure that only the user running the script can see into the directory63 # from which the initrd is being built64 # No one but the user should see into the temp dir65 tdmode = os.stat(self.temp_dir).st_mode & 077766 self.assertEqual(0700, tdmode)67 # The user must be able to access the subdirectory, but it doesn't matter68 # if others can as they can't get into the parent directory69 ncdmode = os.stat(self.new_conf_dir).st_mode & 070070 self.assertEqual(0700, ncdmode)71 filename = os.path.join(self.new_conf_dir, self.test_filename)72 filemode = os.stat(filename).st_mode & 077773 self.assertEqual(0644, filemode)74 def testCreateTempDirHandlesPermissionDenied(self):75 self.mox.StubOutWithMock(mkinitrd.tempfile, "mkdtemp")76 self.mox.StubOutWithMock(mkinitrd.shutil, "copytree")77 tempdirname = "/tmp/12345"78 confdirname = os.path.join(tempdirname, "initramfs-tools")79 mkinitrd.tempfile.mkdtemp().AndReturn(tempdirname)80 mkinitrd.shutil.copytree(self.conf_dir,81 confdirname).AndRaise(OSError("Permission denied"))82 self.mox.ReplayAll()83 # Make sure we fail if user can't read conf_dir84 self.assertRaises(mkinitrd.Error, mkinitrd.CreateTempDir, self.conf_dir)85 self.mox.VerifyAll()86 def testInstallInitrdHandlesPermissionDenied(self):87 self.mox.StubOutWithMock(mkinitrd.shutil, "copy")88 mkinitrd.shutil.copy(self.test_filepath,89 self.install_dir).AndRaise(OSError("Denied"))90 self.mox.ReplayAll()91 # Make sure we fail if user can't write boot_dir92 try:93 self.assertRaises(mkinitrd.Error, mkinitrd.InstallInitrd,94 self.test_filepath, # file to copy95 self.install_dir, # where to put it96 self.test_filename) # name of file97 except (OSError, IOError):98 self.fail()99 self.mox.VerifyAll()100 def testInstallInitrdHandlesExistingFile(self):101 # Make sure that we ask for confirmation if boot_dir/file_name exists102 dest_filename = os.path.join(self.install_dir, self.test_filename)103 open(dest_filename, "a").close() # Create file104 self.assertRaises(mkinitrd.Error, mkinitrd.InstallInitrd,105 self.test_filepath, # file to copy (would be the initrd)106 self.install_dir, # where to put it107 self.test_filename) # name of file108 def testInstallInitrdInstallsFile(self):109 mkinitrd.InstallInitrd(self.test_filepath, # file to copy110 self.install_dir, # where to put it111 self.test_filename) # name of file112 dest_filename = os.path.join(self.install_dir, self.test_filename)113 self.assertTrue(os.path.isfile(dest_filename))114 filemode = os.stat(dest_filename).st_mode & 0777115 self.assertEqual(0644, filemode)116 def testCleanUpRemovesFiles(self):117 mkinitrd.CleanUp(self.temp_dir)118 self.assertFalse(os.path.exists(self.temp_dir))119 def testCleanUpHandlesMissingDir(self):120 mkinitrd.CleanUp(self.temp_dir)121 try:122 mkinitrd.CleanUp(self.temp_dir) # should be no error even doing it twice123 except (OSError, IOError):124 self.fail()125 def testCleanUpQuitsCleanlyOnError(self):126 self.mox.StubOutWithMock(mkinitrd.shutil, "rmtree")127 mkinitrd.shutil.rmtree(self.temp_dir).AndRaise(OSError("Permission denied"))128 self.mox.ReplayAll()129 self.assertRaises(SystemExit, mkinitrd.CleanUp, self.temp_dir)130 self.mox.VerifyAll()131 def testAddScriptCreatesCorrectScript(self):132 dest_filename = os.path.join(self.new_conf_dir, "scripts",133 "local-bottom", "movetoram")134 try:135 mkinitrd.AddScript(self.new_conf_dir)136 except mkinitrd.Error:137 self.fail() # should not produce error on normal conf dir138 self.assertTrue(os.path.isfile(dest_filename))139 src_file = open(self.MOVETORAM, "r")140 dst_file = open(dest_filename, "r")141 src_contents = src_file.read(500)142 dst_contents = dst_file.read(500)143 self.assertEqual(src_contents, dst_contents)144 def testAddScriptDetectsImproperConfigDir(self):145 os.rmdir(os.path.join(self.new_conf_dir, "scripts", "local-bottom"))146 self.assertRaises(mkinitrd.Error, mkinitrd.AddScript, self.new_conf_dir)147 def testBuildInitrdRunsCommand(self):148 self.mox.StubOutWithMock(mkinitrd.subprocess, "call")149 self.mox.StubOutWithMock(os.path, "exists")150 test_name = "testinitrd"151 test_tmp = os.path.join("/tmp", "test_makeinitrd")152 test_out = os.path.join(test_tmp, test_name)153 test_conf = os.path.join(test_tmp, "conf")154 test_version = "2.6-test"155 mkinitrd.subprocess.call(["mkinitramfs", "-d", test_conf,156 "-o", test_out, test_version]).AndReturn(0)157 self.mox.ReplayAll()158 try:159 mkinitrd.BuildInitrd(test_tmp, test_conf, test_name, test_version, False)160 except mkinitrd.Error:161 self.fail()162 self.mox.VerifyAll()163 def testBuildInitrdRaisesErrorOnFailure(self):164 self.mox.StubOutWithMock(mkinitrd.subprocess, "call")165 self.mox.StubOutWithMock(os.path, "exists")166 test_name = "testinitrd"167 test_tmp = os.path.join("/tmp", "test_makeinitrd")168 test_out = os.path.join(test_tmp, test_name)169 test_conf = os.path.join(test_tmp, "conf")170 test_version = "2.6-test"171 mkinitrd.subprocess.call(["mkinitramfs", "-d", test_conf,172 "-o", test_out, test_version]).AndReturn(1)173 os.path.exists(os.path.join("/lib/modules", test_version)).AndReturn(False)174 self.mox.ReplayAll()175 self.assertRaises(mkinitrd.Error, mkinitrd.BuildInitrd, test_tmp,176 test_conf, test_name, test_version, False)177 self.mox.VerifyAll()178 def testParseArgsHandlesArgsCorrectly(self):179 old_conf_dir = "/etc/new-initramfs-tools"180 boot_dir = "/boot/subdir"181 file_name = "testinitrd.img"182 version = "2.6-test"183 argv = ["make_ramboot_initrd_test.py", "-d", old_conf_dir, "-v",184 "-n", file_name, "-b", boot_dir, "-V", version]185 options = mkinitrd.ParseOptions(argv)186 self.assertEqual(file_name, options.file_name)187 self.assertEqual(boot_dir, options.boot_dir)188 self.assertTrue(options.verbose)189 self.assertEqual(old_conf_dir, options.conf_dir)190 self.assertFalse(options.keep_temp)191 self.assertFalse(options.overwrite)192 self.assertEqual(version, options.version)193 def testParseArgsHandlesNoArgsCorrectly(self):194 argv = ["make_ramboot_initrd_test.py"]195 options = mkinitrd.ParseOptions(argv)196 expected_version = platform.release()197 self.assertEqual(expected_version, options.version)198 self.assertEqual("initrd.img-%s-ramboot" % expected_version,199 options.file_name)200 self.assertEqual("/boot", options.boot_dir)201 self.assertFalse(options.verbose)202 self.assertEqual("/etc/initramfs-tools", options.conf_dir)203 self.assertFalse(options.keep_temp)204 self.assertFalse(options.overwrite)205 def testParseArgsHandlesWeirdScriptName(self):206 # make sure it doesn't get thrown off by being called with a strange name207 argv = ["-v"] # called with -v as script name208 options = mkinitrd.ParseOptions(argv)209 self.assertFalse(options.verbose)210 def testMainHandlesOptions(self):211 old_conf_dir = "/etc/new-initramfs-tools"212 temp_dir = "/tmp/abcde"213 new_conf_dir = os.path.join(temp_dir, "confdir")214 temp_out = os.path.join(temp_dir, "initrd")215 boot_dir = self.install_dir216 file_name = "testinitrd.img"217 version = "2.6-test"218 self.mox.StubOutWithMock(mkinitrd, "CreateTempDir")219 self.mox.StubOutWithMock(mkinitrd, "AddScript")220 self.mox.StubOutWithMock(mkinitrd, "BuildInitrd")221 self.mox.StubOutWithMock(mkinitrd, "InstallInitrd")222 self.mox.StubOutWithMock(mkinitrd, "CleanUp")223 mkinitrd.CreateTempDir(old_conf_dir).AndReturn((temp_dir, new_conf_dir))224 mkinitrd.AddScript(new_conf_dir)225 mkinitrd.BuildInitrd(temp_dir, new_conf_dir, file_name,226 version, False).AndReturn(temp_out)227 mkinitrd.InstallInitrd(temp_out, boot_dir, file_name, False)228 mkinitrd.CleanUp(temp_dir)229 self.mox.ReplayAll()230 argv = ["make_ramboot_initrd_test.py", "-d", old_conf_dir, "-v",231 "-n", file_name, "-b", boot_dir, "-V", version]232 mkinitrd.main(argv)233 self.mox.VerifyAll()234 def testMainHandlesNoOptions(self):235 old_conf_dir = "/etc/initramfs-tools"236 temp_dir = "/tmp/abcde"237 new_conf_dir = os.path.join(temp_dir, "confdir")238 temp_out = os.path.join(temp_dir, "initrd")239 boot_dir = self.install_dir # specify this because it must be writable240 version = platform.release()241 file_name = "initrd.img-%s-ramboot" % version242 self.mox.StubOutWithMock(mkinitrd, "CreateTempDir")243 self.mox.StubOutWithMock(mkinitrd, "AddScript")244 self.mox.StubOutWithMock(mkinitrd, "BuildInitrd")245 self.mox.StubOutWithMock(mkinitrd, "InstallInitrd")246 self.mox.StubOutWithMock(mkinitrd, "CleanUp")247 mkinitrd.CreateTempDir(old_conf_dir).AndReturn((temp_dir, new_conf_dir))248 mkinitrd.AddScript(new_conf_dir)249 mkinitrd.BuildInitrd(temp_dir, new_conf_dir, file_name,250 version, False).AndReturn(temp_out)251 mkinitrd.InstallInitrd(temp_out, boot_dir, file_name, False)252 mkinitrd.CleanUp(temp_dir)253 self.mox.ReplayAll()254 argv = ["make_ramboot_initrd_test.py", "-b", boot_dir]255 mkinitrd.main(argv)256 self.mox.VerifyAll()257 def testMainHandlesError(self):258 old_conf_dir = "/etc/initramfs-tools"259 temp_dir = "/tmp/abcde"260 new_conf_dir = os.path.join(temp_dir, "confdir")261 boot_dir = self.install_dir262 version = platform.release()263 file_name = "initrd.img-%s-ramboot" % version264 self.mox.StubOutWithMock(mkinitrd, "CreateTempDir")265 self.mox.StubOutWithMock(mkinitrd, "AddScript")266 self.mox.StubOutWithMock(mkinitrd, "BuildInitrd")267 self.mox.StubOutWithMock(mkinitrd, "InstallInitrd")268 self.mox.StubOutWithMock(mkinitrd, "CleanUp")269 mkinitrd.CreateTempDir(old_conf_dir).AndReturn((temp_dir, new_conf_dir))270 mkinitrd.AddScript(new_conf_dir)271 mkinitrd.BuildInitrd(temp_dir, new_conf_dir, file_name,272 version, False).AndRaise(mkinitrd.Error("test!"))273 mkinitrd.CleanUp(temp_dir)274 self.mox.ReplayAll()275 argv = ["make_ramboot_initrd_test.py", "-b", boot_dir]276 self.assertRaises(SystemExit, mkinitrd.main, argv)277 self.mox.VerifyAll()278 def testMainExitsEarlyIfInstallDirUnwritable(self):279 # none of these should be called, because there's no point in doing280 # the work if you're going to discard it later281 self.mox.StubOutWithMock(mkinitrd, "CreateTempDir")282 self.mox.StubOutWithMock(mkinitrd, "AddScript")283 self.mox.StubOutWithMock(mkinitrd, "BuildInitrd")284 self.mox.StubOutWithMock(mkinitrd, "InstallInitrd")285 self.mox.StubOutWithMock(mkinitrd, "CleanUp")286 self.mox.StubOutWithMock(mkinitrd.os, "access")287 mkinitrd.os.access(self.install_dir, mkinitrd.os.W_OK).AndReturn(False)288 mkinitrd.CleanUp(None)289 self.mox.ReplayAll()290 argv = ["make_ramboot_initrd_test.py", "-b", self.install_dir]291 self.assertRaises(SystemExit, mkinitrd.main, argv)292 self.mox.VerifyAll()293 def testMainExitsEarlyIfFileExists(self):294 # none of these should be called, because there's no point in doing295 # the work if you're going to discard it later296 self.mox.StubOutWithMock(mkinitrd, "CreateTempDir")297 self.mox.StubOutWithMock(mkinitrd, "AddScript")298 self.mox.StubOutWithMock(mkinitrd, "BuildInitrd")299 self.mox.StubOutWithMock(mkinitrd, "InstallInitrd")300 self.mox.StubOutWithMock(mkinitrd, "CleanUp")301 mkinitrd.CleanUp(None)302 self.mox.ReplayAll()303 dest_filename = os.path.join(self.install_dir, self.test_filename)304 open(dest_filename, "a").close() # Create file305 argv = ["make_ramboot_initrd_test.py", "-b", self.install_dir,306 "-n", self.test_filename]307 self.assertRaises(SystemExit, mkinitrd.main, argv)308 self.mox.VerifyAll()309if __name__ == "__main__":...
SConstruct
Source:SConstruct
1import os2import sys3import datetime4SetOption('num_jobs', 4)5build = "debug"6# Use host machine compiler to build special tools7# like mkinitrd8build_host = True9# Travis CI does not support host c++11 compiler10if "CI" in os.environ:11 build_host = False12config = {13 "project_name": "runtimejs",14 "build_host": build_host,15 "binary_output_file": "disk/boot/runtime",16 "toolchain_bin_path": "",17 "fasm_pathname": "fasm",18 "link_script": "etc/kernel.ld",19 "name_gxx": "g++",20 "name_gcc": "gcc",21 "name_as": "as",22 "name_ld": "gcc",23 "name_ar": "ar",24 "name_ranlib": "ranlib",25 "name_objcopy": "objcopy",26 "flags_common": {27 "shared": set([28 '-m64',29 '-fpermissive',30 '-ffreestanding',31 '-nostdlib',32 '-mno-red-zone',33 '-mno-mmx',34 '-mno-sse3',35 '-mno-3dnow',36 '-nodefaultlibs',37 '-nostartfiles',38 '-Wall',39 '-Wextra',40 '-Wno-unused',41 '-fno-exceptions',42 '-Wno-unused-parameter',43 '-D__runtime_js__',44 '-DRUNTIMEJS_PLATFORM_X64',45 ]),46 "release": set([47 ]),48 "debug": set([49 '-g',50 '-ggdb',51 ]),52 },53 "flags_gxx": {54 "shared": set([55 '-nostdinc++',56 '-std=c++11',57 '-O3',58 '-fno-tree-vectorize', # misaligned movdqa %xmm1,(%rsp) generated without this option and O359 '-fno-rtti',60 '-U__STRICT_ANSI__',61 '-DENABLE_DEBUGGER_SUPPORT',62 '-DENABLE_DISASSEMBLER',63 '-DV8_HOST_ARCH_X64',64 '-DV8_TARGET_ARCH_X64',65 # '-DVERIFY_HEAP',66 # '-DDEBUG',67 # '-DOBJECT_PRINT',68 # '-DENABLE_EXTRA_CHECKS',69 # '-DENABLE_HANDLE_ZAPPING',70 ]),71 "release": set([72 ]),73 "debug": set([74 ]),75 },76 "flags_gcc": {77 "shared": set([78 '-O2',79 '-c',80 '-std=c99',81 '-D_XOPEN_SOURCE=700',82 ]),83 "release": set([84 ]),85 "debug": set([86 ]),87 },88 "flags_link": set([89 '-nostdlib',90 '-nodefaultlibs',91 # '-Map etc/map.txt',92 ]),93 "locations": {94 "cc": [95 'src',96 'src/arch',97 'src/kernel',98 'src/kernel/x64',99 'src/kernel/profiler',100 'src/common',101 'test/cc',102 ],103 "asm": [104 'src',105 'src/kernel/x64',106 ],107 "js": [108 'src/kernel/Js',109 ],110 },111 "includes": [112 'deps/musl/src/internal',113 'deps/musl/include',114 'deps/musl/arch/x86_64',115 'deps/musl/arch/x86_64/bits',116 'deps/libcxx/include',117 'deps/v8/include',118 'deps/v8',119 'deps/concurrentqueue',120 'deps/acpica/source/include',121 'deps/printf',122 'src',123 'test',124 ],125 "libs": [126 'v8',127 'cxx',128 'acpica',129 'printf',130 'musl',131 'gcc',132 'gcc_s',133 ],134}135def CreateToolchainPath(binpath, name):136 return os.path.join(binpath, name);137def CombineFlagsBuild(name, build):138 return config[name]["shared"] | config[name][build]139def EnvironmentCreate(build):140 gxx = CreateToolchainPath(config["toolchain_bin_path"], config["name_gxx"])141 gcc = CreateToolchainPath(config["toolchain_bin_path"], config["name_gcc"])142 ar = CreateToolchainPath(config["toolchain_bin_path"], config["name_ar"])143 ranlib = CreateToolchainPath(config["toolchain_bin_path"], config["name_ranlib"])144 _as = CreateToolchainPath(config["toolchain_bin_path"], config["name_as"])145 ld = CreateToolchainPath(config["toolchain_bin_path"], config["name_ld"])146 fasm = config["fasm_pathname"]147 flags_shared = CombineFlagsBuild("flags_common", build)148 flags_gxx = flags_shared | CombineFlagsBuild("flags_gxx", build)149 flags_gcc = flags_shared | CombineFlagsBuild("flags_gcc", build)150 proj_name = config["project_name"]151 asm_builder = Builder(152 action = fasm + ' $SOURCE $TARGET >/dev/null',153 single_source = 1,154 suffix = '.asm_o',155 src_suffix = '.asm'156 )157 js_builder = Builder(158 action = 'xxd -i < $SOURCE > $TARGET; echo ",0x00" >> $TARGET',159 single_source = 1,160 suffix = '.js.h',161 src_suffix = '.js'162 )163 env = Environment(164 CXX = gxx,165 CC = gcc,166 AR = ar,167 AS = _as,168 RANLIB = ranlib,169 CXXFLAGS = " ".join(flags_gxx),170 CFLAGS = " ".join(flags_gcc),171 LINK = ld,172 LINKFLAGS = '-T ' + config["link_script"] + ' ' + ' '.join(config["flags_link"]) + ' -o ' + proj_name,173 CXXCOMSTR = '[cross] Build $TARGET',174 LINKCOMSTR = '[cross] Link $TARGET',175 RANLIBCOMSTR = '[cross] Index $TARGET',176 ARCOMSTR = '[cross] Archive $TARGET',177 ENV = {'PATH': os.environ['PATH']},178 )179 env.Append(180 BUILDERS = {181 'asm': asm_builder,182 'js': js_builder,183 }184 )185 return env186def EnvironmentCreateHost():187 hostenv = Environment(188 CXXFLAGS = '-std=c++11 -O3',189 CPPPATH = ['src', 'deps/printf'],190 OBJSUFFIX = '.host',191 CXXCOMSTR = '[host] Build $TARGET',192 LINKCOMSTR = '[host] Link $TARGET',193 RANLIBCOMSTR = '[host] Index $TARGET',194 ARCOMSTR = '[host] Archive $TARGET',195 ENV = {'PATH': os.environ['PATH']},196 )197 return hostenv198def BuildMkinitrd(hostenv):199 return hostenv.Program('mkinitrd', ['src/mkinitrd/mkinitrd.cc', 'src/common/package.cc', 'src/common/crc64.cc'])200def BuildTestsHost(hostenv):201 hostenv.Program('test-host', ['test/hostcc/test-host.cc', 'deps/printf/printf.cc'])202 return203def BuildProject(env_base, mkinitrd):204 env = env_base.Clone();205 sources = {}206 for ext, dirs in config["locations"].items():207 if ext not in sources:208 sources[ext] = []209 for d in dirs:210 path = os.path.join(d, "*."+ext)211 sources[ext].append(Glob(path))212 obj_asm = [env.asm(i) for i in sources["asm"]]213 env.Depends(obj_asm, Glob('src/*.inc'))214 obj_js = [env.js(i) for i in sources["js"]]215 env.Replace(CPPPATH = config["includes"])216 env.Replace(LIBS = config["libs"])217 env.Replace(LIBPATH = ['deps'])218 proj_name = config["project_name"]219 env.Depends(proj_name, obj_js);220 env.Depends(proj_name, config["link_script"])221 output_elf = env.Program(proj_name, sources["cc"] + obj_asm)222 binary_output = config["binary_output_file"]223 objcopy = CreateToolchainPath(config["toolchain_bin_path"], config["name_objcopy"])224 output_bin = env.Command(binary_output, '',225 objcopy + ' -O binary --strip-all --set-section-flags \'.bss\'=alloc,load,contents,data ' +226 proj_name + ' ' + binary_output)227 env.Depends(output_bin, output_elf);228 if mkinitrd is not None:229 initrd = env.Command('disk/boot/initrd', '', './makeinitrd.sh')230 env.Depends(initrd, Glob('initrd/*.*'))231 env.Depends(initrd, Glob('initrd/*/*.*'))232 env.Depends(initrd, Glob('initrd/*/*/*.*'))233 env.Depends(initrd, Glob('initrd/*/*/*/*.*'))234 env.Depends(initrd, mkinitrd)235 env.Depends(output_bin, initrd);236 return237mkinitrd = None238# Build mkinitrd tool239if config["build_host"]:240 env_host = EnvironmentCreateHost()241 mkinitrd = BuildMkinitrd(env_host)242 BuildTestsHost(env_host)243# Build kernel244env_base = EnvironmentCreate(build)245SConscript('deps/SConscript', exports = 'env_base')...
initrd.py
Source:initrd.py
1import argparse2import os.path3import pbs4import shutil5import subprocess6description = 'build initial ramdisk'7usage = 'initrd [options]'8summary = ''9def exec(project, *args):10 parser = argparse.ArgumentParser()11 parser.add_argument('--output', '-o')12 args = parser.parse_args(args[1:])13 sysroot = os.path.join(pbs.objtree, 'sysroot')14 initrd = os.path.join(pbs.objtree, 'initrd')15 mkinitrd = os.path.join(sysroot, 'usr/bin/mkinitrd')16 if not os.path.exists(mkinitrd):17 pbs.log.error('%s not found' % mkinitrd)18 return19 if os.path.exists(initrd):20 pbs.log.begin('removing %s...' % initrd)21 shutil.rmtree(initrd)22 pbs.log.end('done')23 if args.output:24 output = args.output25 else:26 output = 'initrd.gz'27 command = [ mkinitrd, '--output', output, sysroot, initrd ]28 pbs.log.info('creating initial ramdisk:', ' '.join(command))29 with subprocess.Popen(command, stdout=subprocess.PIPE,30 stderr=subprocess.STDOUT) as proc:31 while True:32 line = proc.stdout.readline()33 if not line:34 break35 line = line.decode()...
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!